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

Allow crafting splints at start #11

Merged
merged 2 commits into from
Sep 27, 2017

Conversation

Muffindrake
Copy link
Contributor

Rationale: The fuck? (Translation: Oh my, what strange happenings.)

Actual Rationale: The only items that can mend broken limbs are locked behind frustrating grind walls.

Imagine a situation where a new character gets either limb broken - a player would assume that he'd need to stay safe and avoid combat. No, fat chance - he has to get out there and kill and pulp those zombies, or get mooserized out in the woods with little chance to fight back.

Fighting with mending broken limbs still incurs severe penalties and healing is hampered by possibly getting the limb hit, but a player shouldn't be required to kill himself further to get to that state.

@kevingranade
Copy link
Contributor

The player wanting to do something isn't a rationale for giving it to them. It's perfectly fine for a broken limb to be a death sentence for an unprepared player.

@Muffindrake
Copy link
Contributor Author

I seem to have pushed a partial change, this last commit actually does what the PR title suggests.

@Coolthulhu
Copy link
Member

One thing I'm mildly worried about: splints were a method to booklessly grind first aid from 1 to 2. Is there such an option now?

@Muffindrake
Copy link
Contributor Author

@Coolthulhu Since the skill for both splints is currently set to first aid for both arm and leg splints while the difficulty is 0, you are able to grind first aid from 0 to 1, however you gain no experience beyond level 1 with this recipe. I just tested this now.

@Coolthulhu Coolthulhu merged commit 93dd9e7 into cataclysmbnteam:experimental Sep 27, 2017
Coolthulhu pushed a commit to Coolthulhu/Cataclysm that referenced this pull request Mar 5, 2019
@Trokinos Trokinos mentioned this pull request Oct 30, 2020
Coolthulhu pushed a commit that referenced this pull request Oct 31, 2020
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.
@Trokinos Trokinos mentioned this pull request Nov 3, 2020
@flesh420 flesh420 mentioned this pull request Oct 4, 2024
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.

3 participants