-
Notifications
You must be signed in to change notification settings - Fork 4.2k
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
Add conditionals to martial art techniques and audit techs to use them #66034
Add conditionals to martial art techniques and audit techs to use them #66034
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
JSON & C++ formatters
data/json/techniques.json|484|
data/json/techniques.json|531|
data/json/techniques.json|535|
data/json/techniques.json|566|
data/json/techniques.json|571|
data/json/techniques.json|670|
data/json/techniques.json|673|
data/json/techniques.json|715|
data/json/techniques.json|719|
data/json/techniques.json|728|
data/json/techniques.json|807|
data/json/techniques.json|810|
data/json/techniques.json|829|
data/json/techniques.json|838|
data/json/techniques.json|897|
data/json/techniques.json|906|
data/json/techniques.json|933|
data/json/techniques.json|968|
data/json/techniques.json|971|
data/json/techniques.json|1016|
data/json/techniques.json|1019|
data/json/techniques.json|1065|
data/json/techniques.json|1074|
data/json/techniques.json|1163|
data/json/techniques.json|1166|
data/json/techniques.json|1199|
data/json/techniques.json|1203|
data/json/techniques.json|1285|
data/json/techniques.json|1288|
data/json/techniques.json|1328|
data/json/techniques.json|1332|
data/json/techniques.json|1401|
data/json/techniques.json|1405|
data/json/techniques.json|1454|
data/json/techniques.json|1459|
data/json/techniques.json|1482|
data/json/techniques.json|1487|
data/json/techniques.json|1511|
data/json/techniques.json|1516|
data/json/techniques.json|1552|
data/json/techniques.json|1555|
data/json/techniques.json|1633|
data/json/techniques.json|1637|
data/json/techniques.json|1683|
data/json/techniques.json|1687|
data/json/techniques.json|1696|
data/json/techniques.json|1713|
data/json/techniques.json|1759|
data/json/techniques.json|1762|
data/json/techniques.json|1794|
data/json/techniques.json|1797|
data/json/techniques.json|1847|
data/json/techniques.json|1850|
data/json/techniques.json|1884|
data/json/techniques.json|1887|
data/json/techniques.json|1914|
data/json/techniques.json|1965|
data/json/techniques.json|1968|
data/json/techniques.json|2025|
data/json/techniques.json|2028|
data/json/techniques.json|2060|
data/json/techniques.json|2063|
data/json/techniques.json|2144|
data/json/techniques.json|2147|
data/json/techniques.json|2218|
data/json/techniques.json|2221|
data/json/techniques.json|2258|
data/json/techniques.json|2261|
data/json/techniques.json|2272|
data/json/techniques.json|2319|
data/json/techniques.json|2322|
data/json/techniques.json|2347|
data/json/techniques.json|2350|
data/json/techniques.json|2388|
data/json/techniques.json|2391|
data/json/techniques.json|2452|
data/json/techniques.json|2455|
data/json/techniques.json|2531|
data/json/techniques.json|2534|
data/json/techniques.json|2545|
data/json/techniques.json|2577|
data/json/techniques.json|2580|
data/json/techniques.json|2623|
data/json/techniques.json|2626|
data/json/techniques.json|2712|
data/json/techniques.json|2715|
data/json/techniques.json|2752|
data/json/techniques.json|2754|
data/json/techniques.json|2783|
data/json/techniques.json|2786|
data/json/techniques.json|2843|
data/json/techniques.json|2846|
data/json/techniques.json|2882|
data/json/techniques.json|2884|
data/json/techniques.json|2911|
data/json/techniques.json|2914|
data/json/techniques.json|2973|
data/json/techniques.json|2975|
data/json/techniques.json|3007|
data/json/techniques.json|3010|
data/json/techniques.json|3042|
data/json/techniques.json|3045|
data/json/techniques.json|3069|
data/json/techniques.json|3104|
data/json/techniques.json|3107|
data/json/techniques.json|3153|
data/json/techniques.json|3156|
data/json/techniques.json|3223|
data/json/techniques.json|3225|
data/json/techniques.json|3257|
data/json/techniques.json|3260|
data/json/techniques.json|3292|
data/json/techniques.json|3305|
data/mods/MMA/techniques.json|139|
data/mods/MMA/techniques.json|142|
data/mods/MMA/techniques.json|179|
data/mods/MMA/techniques.json|182|
data/mods/MMA/techniques.json|265|
data/mods/MMA/techniques.json|268|
data/mods/MMA/techniques.json|369|
data/mods/MMA/techniques.json|372|
data/mods/MMA/techniques.json|398|
data/mods/MMA/techniques.json|401|
data/mods/MMA/techniques.json|434|
data/mods/MMA/techniques.json|437|
data/mods/MMA/techniques.json|443|
data/mods/MMA/techniques.json|470|
data/mods/MMA/techniques.json|473|
data/mods/MMA/techniques.json|479|
data/mods/MMA/techniques.json|547|
data/mods/MMA/techniques.json|550|
src/item.cpp|5224|
Turns out martial arts designed to fight humans weren't actually that good for fighting bears, who knew? Nice work! |
1097f7a
to
cb054c6
Compare
Unreal ammount of work lol |
Summary
Features "Rework MA tech requirements"
Purpose of change
Martial art techniques are using a lot of hardcoded booly logic that could be done better, and techs trigger on a lot of enemies they shouldn't affect.
Describe the solution
u/npc_val: size
), monster grab strength (npc_val: grab_strength
), bodytype (u/npc_bodytype
), species (u/npc_has_species
) and allowedmonster::has_flag
to automatically convert strings to monster flagsDF_MELEE
) and the new talker functions (DF_TALKER
)human_target
,requires_stun
andrequires_downed
TODO:
Describe alternatives you've considered
Completely deprecate
ma_reqs
, but this is already pretty big and there are some weird special cases where I didn't have the time to dig into and ensure parity.Testing
Beat a poor fat zombie a lot, noticed them not getting stunned by techs but do getting stunned by weakpoint hits, tech conditionals triggered as expected.
Added a unit test for the most common condition setups, passed all.
Additional context
The technique conditionals are as follows:
d20 + STR vs grab strength
roll (knockback grab removal will be handled by Grab fixes and drag overhaul #65774human
orangel
bodytype at most 1 size category above you, provided they can't flyUppercut
and similar techs are restricted to +- 1 size category and a bodytype with an elevated head