Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merging Conflicts again - trying to wrap up this week. #12

Merged
merged 564 commits into from
May 2, 2022

Conversation

a-chancey
Copy link
Owner

Summary

Category "Brief description"

Purpose of change

Describe the solution

Describe alternatives you've considered

Testing

Additional context

Ilysen and others added 30 commits April 23, 2022 08:25
* creates proper rope uncraft recipes

* linting

* linting (better)

* linting (best)

probably copy and pasted the linted text wrong. not sure what's happening
…of-setting stuff. (#56964)

* Create zombie_heads.json

* Weakpoints to ensure zombies can only get hurt by headshots

* Update modinfo.json

* deadly bites

* Update modinfo.json

* Update effect.json

* fine tune some weakpoint settings

* lint

* hitting the zombie's chest can stagger it too, particularly in melee

* block portal storms and limit scenarios

* playtest fixes

* Adjustments from play testing

Went back to zombies being vulnerable but tough, with headshots the *main* way to kill them.

* adjust what is considered a classic zombie

* allow bleed_rate updates

* Update weakpoints.json

* Update weakpoints.json

* Update weakpoints.json

* mangled legs back in

* lint

* Coup de grace attacks on downed zombies

* Update weakpoints.json

Reduce the 'gaps in armour' thing and make arm and leg hits less harmful to the zombie except the status effect part.

* Update weakpoints.json

You can stagger and down a zombie without doing any damage

* Update effect.json

* fix messages not applying

* forgot a tag
* Chloromorph is now an explicit upgrade to Roots

* Parentheses are hard...

Co-authored-by: I-am-Erk <[email protected]>
featuring Termineitor244 Faalagorn Ilysen Aerin-of-the-Toast anoobindisguise
PatrikLundell TheShadowFerret

I didn't add Jan-Blasiak cuz they didn't show up when I tried to
reference their username

NOTE squash this commit
* Not fully json convert

* second

* fix

* Updates

* Update effect_on_condition.json

* Update npctalk.cpp

* Update doc/NPCs.md

Co-authored-by: haveric <[email protected]>

* Update doc/NPCs.md

Co-authored-by: haveric <[email protected]>

* Update doc/NPCs.md

Co-authored-by: haveric <[email protected]>

* Update doc/NPCs.md

Co-authored-by: haveric <[email protected]>

* Update doc/NPCs.md

Co-authored-by: haveric <[email protected]>

* Update doc/NPCs.md

Co-authored-by: haveric <[email protected]>

* Update doc/NPCs.md

Co-authored-by: haveric <[email protected]>

* Update effect_on_condition.json

Co-authored-by: I-am-Erk <[email protected]>
Co-authored-by: haveric <[email protected]>
* Item insert: don't consider nested pocket that already contains item

* Item insert: unit test
* UI fixes

* remove extra space

* fixes for clang

* first kick

* More Robust Limb Consolidate

* clang appeasement

* broken still but progress

* Just needs cleanup and organization

* cleaned up UI a bit

* clang fixes

* time to check the tests online

* more clang cleanup

* more clang cleanup

* this change too

* more test fixes

* comment unused function inputs

* test should all work now
* Add hunger/thirst crafting distractions

* Update src/player_activity.cpp

Co-authored-by: Anton Burmistrov <[email protected]>

* Update src/player_activity.cpp

Co-authored-by: Anton Burmistrov <[email protected]>

* Update src/player_activity.cpp

Co-authored-by: Anton Burmistrov <[email protected]>

* Update src/player_activity.cpp

* Update src/player_activity.cpp

Co-authored-by: Anton Burmistrov <[email protected]>
Co-authored-by: David Seguin <[email protected]>
* Update recipe_food.json

* Update recipe_others.json

* Add files via upload
* Require prereq profs for speed knapping and adv. bandaging practice

* Linty boi

* Swimming gloves are soft

* Revert "Merge branch 'ShowPrereqProfs'"

This reverts commit d3b925e.
@a-chancey a-chancey merged commit d8f061a into a-chancey:TailoringRecipeOverhaul-Cotton May 2, 2022
a-chancey pushed a commit that referenced this pull request Nov 29, 2023
* Prevents game occasionally seemingly hanging when moving to new submaps

The reason for the previous problem was an infinite loop caused by:
1. `map::spawn_monsters_submap` for-loops the list of `current_submap->spawns`
2. for every spawned monster, it calls `monster::on_load`
3. `monster::on_load` calls `monster::try_reproduce`, which in turn calls
   `map::add_spawn`
4. So a new spawn is added, thus invalidating the iterator used in step 1
5. Undefined behavior caused by using invaliated iterators.

On my compiler (gcc 13.2.0), the above problem had the following effect:
* The reference `spawn_point &i` pointed to something totally different, so
  that in particular, `i.count` had garbage values
* Instead of `i.count` being reasonable values such as `3` or `1`, the above
  undefined behavior made it have values such as `925969776` or `-632214304`
* `i.count` is the upper bound for the inner for-loop in
  `map::spawn_monsters_submap`, so depending on the garbage value, it might
  seem like an infinite loop.

Stacktrace of app when frozen and problem happened:
```
 #0  0x000055a1eaf36dcb in creature_tracker::find(coords::coord_point<tripoint, (coords::origin)1, (coords::scale)0> const&) const ()
 #1  0x000055a1eaf39253 in Creature* creature_tracker::creature_at<Creature>(coords::coord_point<tripoint, (coords::origin)1, (coords::scale)0> const&, bool) ()
 #2  0x000055a1eaf393b5 in Creature* creature_tracker::creature_at<Creature>(tripoint const&, bool) ()
 #3  0x000055a1eb357a53 in map::spawn_monsters_submap(tripoint const&, bool, bool)::{lambda(tripoint const&)#1}::operator()(tripoint const&) const ()
 #4  0x000055a1eb3a976e in random_point(tripoint_range<tripoint> const&, std::function<bool (tripoint const&)> const&) ()
 #5  0x000055a1eb37dd2d in map::spawn_monsters_submap(tripoint const&, bool, bool) ()
 #6  0x000055a1eb37de77 in map::spawn_monsters(bool, bool) ()
 #7  0x000055a1eb093981 in game::update_map(int&, int&, bool) ()
 #8  0x000055a1eb094451 in game::update_map(Character&, bool) ()
 #9  0x000055a1eb09530f in game::place_player(tripoint const&, bool) ()
 #10 0x000055a1eb0b3a0e in game::walk_move(tripoint const&, bool, bool) ()
 #11 0x000055a1ead27490 in avatar_action::move(avatar&, map&, tripoint const&) ()
 #12 0x000055a1eb0f338c in game::do_regular_action(action_id&, avatar&, std::optional<tripoint> const&) ()
 #13 0x000055a1eb0f6e63 in game::handle_action() ()
 CleverRaven#14 0x000055a1eafbd9ea in do_turn() ()
 CleverRaven#15 0x000055a1eaa5ec13 in main ()
```

This commit instead changes the loop in step 1 above so that it explicitly
*not* uses iterators, but instead old-fashioned indexed loop. The intention
with the change is to allow other parts of the code to add items to the vector
`current_submap->spawns` while we are iterating it here. If new items are
added, they will be handled in later steps of the loop.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment