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

m #1

Merged
merged 10,000 commits into from
May 14, 2020
Merged

m #1

merged 10,000 commits into from
May 14, 2020

Conversation

Bejofo
Copy link
Owner

@Bejofo Bejofo commented May 14, 2020

Merge a bunch

KorGgenT and others added 30 commits May 6, 2020 22:16
add medicine cabinet item_group to house palette
Update dig_channel_activity_actor::finish to match dig_activity_actor::finish
Masochist mutation tree rework
This doesn't actually catch any more real cases in the current code, but
it future-proofs while I'm thinking about such things.
The results were already being sorted, it makes sense to be consistent
and sort the components too.
* Make flu shot last 6 months instead of forever

The add_effect method's fourth argument "permanent" was set to true,
making the flu shot last forever, despite the 30_days duration. This
commit removes the permanent flag, and changes duration to 6 months (24 weeks).
adjust better pocket formula to prefer non watertight containers
allow consume menu to look in containers
* Reformat MAGIC.md tables and JSON examples

* Fix typo in effect_str example

Co-authored-by: Matthew S. Klosak <[email protected]>
We don't want people to accidentally get achievements when they are
merely doing dev work or debugging issues.

Make it so that most debug menu functions disable achievements.  Also,
add a new debug menu option to re-enable them (for cases where people
were just working around bugs, or when people want to debug achievements
themselves).

When achievements are disabled, the tracker still tracks them but
doesn't print any log messages when they are attained.

Longer-term, this will matter more.  Once there is global tracking of
achievements across games the achievements attained while they were
disabled won't count towards that.
The function `are_requirements_nearby` accesses `player::backlog::front()`, which causes UB when the `backlog` list is empty.

This is usually checked by the caller, but there is at least one way to reach this function without that check:

```
#2  0x000000000083dfaa in string_id<activity_type>::operator== (rhs=..., this=0xdf1b460) at src/player_activity.h:93
#3  are_requirements_nearby (loot_spots=std::vector of length 21, capacity 32 = {...}, needed_things=..., p=..., activity_to_restore=..., in_loot_zones=true, src_loc=...)
    at src/activity_item_handling.cpp:1113
#4  0x0000000000843a46 in generic_multi_activity_check_requirement (p=..., act_id=..., act_info=..., src=..., src_loc=...,
    src_set=std::unordered_set with 1 element = {...}, check_only=false) at src/activity_item_handling.cpp:2676
#5  0x0000000000852813 in generic_multi_activity_handler (act=..., p=..., check_only=check_only@entry=false) at src/activity_item_handling.cpp:2885
#6  0x0000000000800896 in activity_handlers::multiple_butcher_do_turn (act=<optimized out>, p=<optimized out>) at src/activity_handlers.cpp:3822
#7  0x000000000082b248 in std::_Function_handler<void (player_activity*, player*), void (*)(player_activity*, player*)>::_M_invoke(std::_Any_data const&, player_activity*&&, player*&&) (__functor=..., __args#0=<optimized out>, __args#1=<optimized out>) at /usr/include/c++/8/bits/std_function.h:88
#8  0x00000000008630e3 in std::function<void (player_activity*, player*)>::operator()(player_activity*, player*) const (this=<optimized out>, __args#0=<optimized out>,
    __args#0@entry=0xdf1b330, __args#1=<optimized out>, __args#1@entry=0xdf1ae50) at /usr/include/c++/8/bits/std_function.h:260
#9  0x0000000000860306 in activity_type::call_do_turn (this=0x2c3c930, act=act@entry=0xdf1b330, p=p@entry=0xdf1ae50) at src/activity_type.cpp:118
#10 0x00000000014a968b in player_activity::do_turn (this=this@entry=0xdf1b330, p=...) at src/player_activity.cpp:237
#11 0x00000000013092a4 in npc::do_player_activity (this=this@entry=0xdf1ae50) at src/npcmove.cpp:3299
#12 0x0000000001322a07 in npc::execute_action (this=this@entry=0xdf1ae50, action=<optimized out>, action@entry=npc_player_activity) at src/npcmove.cpp:1237
#13 0x000000000132690a in npc::move (this=this@entry=0xdf1ae50) at src/npcmove.cpp:907
```

This adds a simple check within the function.
`map_cursor` is used in `item_location`, which in turn is used by the `player_activity`, which in turn is used by NPCs. So if you ask an NPC to butcher something, it will move to the corpse and "wait" there (won't move until the butchering is done). This stores are references to the corpse via an `item_location` (and the contained `map_cursor`), which means it stores the **local** coordinates of the corpse. If you move far enough away, so the map shifts, those coordinates are now pointing to a different location.

Consequently, when the butchering finishes, it will try to remove the corpse from the wrong place.

I fixed this with the smallest amount of code changes possible. But it's not a good fix. Better would be to access the `tripoint` via dedicated getters.

This may also fix some other bugs that display a "Tried to remove item from object which did not contain it" message.
Fix typo causing thief mode bug
* fix typo in containers documentation

* Update doc/JSON_INFO.md

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

Co-authored-by: Curtis Merrill <[email protected]>
Co-authored-by: ZhilkinSerg <[email protected]>
Remove old skill boost migration code
Using the debug menu disables achievements
KorGgenT and others added 28 commits May 12, 2020 19:13
* Audit AN-94

* Audit AK-74M

* Audit MP7A2

* Obsolete AN-94
#40242)

* bugfix_line_spell: prevent narrow line spells from being stopped early

Line attack spells with narrow AOE (0 or 1) were being prevented from
actually working as intended. The exception added to the condition
prevents exiting early if the spell is a line attack.

* bugfix_line_spell: Split `spell_effect_area` for testability

Splits spell effect area calculation out of `spell_effect_area` to
allow independent testing without calling the drawing function
`explosion_handler::draw_custom_explosion`

* bugfix_line_spell: Generate test to ensure narrow beam spell consistency
* Implement installation requirment for CBMs
* Remove obsolete manual install mod
* Add roller_blades and roller_skates recipes
* Troubleshoot and customize

Made bearings "ammo" instead of components since they were throwing errors. Customized rollerskates to be more about metal and leather, and a little easier, and roller blades to be about cloth and plastic and a little harder.

* Smith/swage convert, no aluminum

Standardized skate recipes to use smithing and swaging instead of welding, take longer, and only use pipe and scrap instead of aluminum.
* Make flu shot expire

Nobody is developing new vaccines; you can't just stock up on
flu shots and take one every 6 months.

* Skip flu shot mission

It doesn't make sense anymore unless this mission is given with
24 weeks of the start of the cataclysm, which is when flu shots
expire.

If you already started this mission chain, you will still get
the mission.

* Add negative feedback to expired flu shot

This is for the benefit of experienced players who are used to
unlimited flu vaccines.  More realistic would be to have no
feedback, positive or negative.

Also, update the description, to hint to the player that it will
not work forever.
* In target UI, allow shifting view with keyboard
* Keep view / input mode (view vs cursor) consistent between turns
* Center view by pressing '0'; fix view movement with LMB when viewing different Z level
Migrate inventory item menu, scores UI, and armor sorting menu to ui_adaptor
Spawn soldier zombies at mx_military, rearrange weapon spawns
also gives message for other special forms of seeing
cranberry_juice appears to represent unsweetened, full strength
cranberry juice.  That will not be pleasant to drink by the cup.
At the very least you would want to dilute it, but more likely
you would want to add sweetener or mix with a juice that is sweet.
Update to survivor harness "pocket" weight capacity
* prevent divide by zero
* Better handle consume time misc cases
* Set c++ syntax for JSON code snippet with comments

* Enclose a code snippet in the Field types section
This stopped it from being stored in a sheath.
@Bejofo Bejofo merged commit ebe3817 into Bejofo:master May 14, 2020
Bejofo pushed a commit that referenced this pull request Nov 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.