* Implements timed_action_flags for do_after-like procs (#54409)
Originally I wanted to fix an issue where the `get_up()` `do_after()` would ignore the callback checks, because it was `uninterruptible`, so that made me refactor these procs to allow for higher granularity on checks and standardize behavior a bit more.
There's more work to be done for them, but one thing at a time.
* Removes the `uninterruptible` check in favor of the more granular `timed_action_flags`
* Cleans code on the `do_atom`, `do_after_mob`, `do_mob` and `do_after` procs to standardize them a little better.
* Implements timed_action_flags for do_after-like procs
* Update horror_form.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
Co-authored-by: Azarak <azarak10@gmail.com>
* Adds better feedback related to husks (#53599)
Husks currently have basically zero ingame feedback other than the grey sprite. It should be abundantly obvious when somebody is a husk, given that it's such a huge physical change that it changes the sprite. This PR adds examine text to husks, and adds a message to the health scanner. The regular scanner will only tell you that they are a husk, the advanced scanner will tell you if they were husked by burns or by "extreme fluid loss" AKA lings (but burnt takes precedence so you can still burn your ling corpses to a crisp to help hide your tracks). The defib now also gives a message specifically for husks instead of a generic "tissue damage" message which normally means brute/burn damage.
I also updated the description of sythflesh and rezadone to mention that they can restore burnt husks, and replaced some hardcoded "burn" with the BURN constant.
* Adds better feedback related to husks
Co-authored-by: msgerbs <msgerbs@users.noreply.github.com>
* Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking (#52761)
Adds SIGNAL_HANDLER, a macro that sets SHOULD_NOT_SLEEP(TRUE). This should ideally be required on all new signal callbacks.
Adds BLOCKING_SIGNAL_HANDLER, a macro that does nothing except symbolize "this is an older signal that didn't necessitate a code rewrite". It should not be allowed for new work.
This comes from discussion around #52735, which yields by calling input, and (though it sets the return type beforehand) will not properly return the flag to prevent attack from slapping.
To fix 60% of the yielding cases, WrapAdminProcCall no longer waits for another admin's proc call to finish. I'm not an admin, so I don't know how many behinds this has saved, but if this is problematic for admins I can just make it so that it lets you do it anyway. I'm not sure what the point of this babysitting was anyway.
Requested by @optimumtact.
Changelog
cl
admin: Calling a proc while another admin is calling one will no longer wait for the first to finish. You will simply just have to call it again.
/cl
* Adds SIGNAL_HANDLER and SIGNAL_HANDLER_DOES_SLEEP to prevent signal callbacks from blocking
Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>
* Cleanup up all instances of using var/ definitions in proc parameters. (#52728)
* var/list cleanup
* The rest of the owl
* plushvar bad
* Can't follow my own advice.
* Cleanup up all instances of using var/ definitions in proc parameters.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Fixers for telekinesis and the defibrillator interactions (#52571)
* tk and the defib
* fixed range check
* extra check that is not needed
* only show ear damage on threshold pass
* wrong branch am bad
* is living check
* Fixers for telekinesis and the defibrillator interactions
Co-authored-by: NightRed <nightred@gmail.com>
* Renames a few variables. Also reorders fallback order again.
Renames item_state to inhand_icon_state
Renames mob_overlay_icon to worn_icon
Renames mob_overlay_state to worn_icon_state
worn_icon_state/mob_overlay_state now never gets used for inhands.
* Fixes some comments
* Fixes map issue
* Restart lints
* Properly resolves conflicts
About The Pull Request
For an item to be two handed just add this handy component.
All existing two handed items have been converted to use this component.
Why It's Good For The Game
It has components and signals, and now you can make items two handed so simply.
/obj/item/shockpaddles/ComponentInitialize()
. = ..()
AddComponent(/datum/component/two_handed)
* update_icon() improvements
Fixes some update_icon() calls to properly call parent and use update_overlays() and update_icon_state().
The rest of obj/item fuck it
* Suggested fixes, also passes the linter
* I always forget . = ..() is faster than return ..() FOR SOME FUCKING REASON
* Actually this is better
* Signilzes datum/action to update its icon when its connected item does.
* hardstuns? nostuns*
* WELCOME TO THE HAPPY HOTEL
* YOU'RE GOING TO LOVE IT HERE
* whoops i accidentally a status effect and a new item
* skog alert
* Update code/game/objects/items/defib.dm
Co-Authored-By: skoglol <33292112+kriskog@users.noreply.github.com>
* Update code/game/objects/items/defib.dm
Co-Authored-By: skoglol <33292112+kriskog@users.noreply.github.com>
About The Pull Request
Fixes the awful code here, and a sprite fix as well.
Changelog
cl
fix: syndicate defib has proper paddle sprites based on twohanded or not
/cl
Combat defibrillator has halved recharge time. This allows it to both
stun people more quickly, and actually be able to cause a heart attack
with harm intent during the stun.
It also has unique, mediocre sprites by Me. Syndicate duffel bag
sprites altered slightly so the little med/ammo icon is tilted.
I randomly found out combat defibs could actually be used offensively
while testing things, but they were both a tad slow to recharge and had
what was practically an undocumented feature that I've never seen
anyone use. This PR points out that they can be used in combat, and
buffs them appropriately so a nuclear operative could reasonably use
it, at the cost of sacrificing their belt slot and their offhand.
About The Pull Request
Converts every single usage of playsound's vary parameter to use the boolean define instead of 1 or 0. I'm tired of people copypasting the incorrect usage.
Also changes a couple of places where a list was picked from instead of using get_sfx internal calls
This was done via regex:
(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\)) to match 1
(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\)) to match 0
full sed commands:
/(playsound\(.+,.+,.+, ?)1( ?\)| ?,.+\))/\1TRUE\2/ 1 to TRUE
/(playsound\(.+,.+,.+, ?)0( ?\)| ?,.+\))/\1FALSE\2/ 0 to FALSE
I'm not very good with regex and these could probably be optimized, but they worked.
Why It's Good For The Game
Code usability
* Brain damage works on organ damage procs, some defib reworks
* Heart and Lung damaging effects and failure, liver damage and failure moved to its organ again
* Cleans up reused global
* Organ damage procs on living and living/carbon
* Changes brain damage procs again
* SR heals all organs on revive, no decay for cybernetic implants, stomach damage and fail effects.
* Damage and failure effects for the appendix, ears, and some touchups on the stomach
* Committing changes so I don't lose them
* Organs now cease decaying in the proper containers
* Organ Fridges
* Reverts map changes
* Adds coronary bypass, lobectomy, trying to deal with organ_stat runtime
* Actually fixes merge conflict
* Smartfridge tweaks
* Think I figured out map merger
* Evidently not
* Still runtiming with glass shards even after I remove the map changes?
* Fixes runtime error with brain_item
* Runtime fix on living/carbon/life
* Cleaning up old PR code
* Brain damage fix, moves defines to actually be in _DEFINES, under DNA since that's where organ slots were
* Wrong math operation used
* Brains in MMIs no longer decay
* Removes redundant variable, and defibs no longer work on heart attacks caused by failing hearts
* Removes misleading comment
* init freezes organs in case organ crates are added, morgue corpses are frozen, removes adjustLiverLoss
* Removes random spaces, scanners check brain damage severity now
* Swaps numbers for defines, fixes brain surgery, rebalances coronary bypass bleed since that was insane last I tested it
* List change
* Runs off of an index instead of using cut
* Brains can be put into organ fridges
* Fixes minor type, hotfix for cloning problem
* Removes pointless check
* Demon hearts no longer decay
* Nightmare hearts no longer decay
* Removes istype() check on process, sets can_decompose instead
* Condenses organ damage report
* Removes organ failure messages
* Less organ damage spam, implements organ threshold messages instead
* Brain damage messages go to owner, not source
* Self-examine shows damaged organs
* Minor code cleanup, adds autodoc comments to the new procs
* Inverts standard organ vars to prevent random organs decaying, adds a few more autodoc comments.
* Merged the booleans into a set of flags
* Healthy living improves organ healing rates
* dunno why this didn't update
* my actions have consequences
* Sets ORGAN_SYNTHETIC for overlooked robotics organs
* Doubles heart decay time
* 3 minute heart decay
* Lobectomy/Coronary_Bypass heal more
* removes hivemind spells from the changes
About The Pull Request
Stamina damage no longer stacks with regular damage.
Stamina regen is paused for 10 seconds every time you take stamina damage
Stamina damage is purged if stamina regen resumes after you enter stamcrit
changes to make this work:
disablers knocked down to 30
punch damage changed to full raw, 1.5x stamina.
flesh-eating symptom deals 2x stamina damage
CQC unchanged
Bostaff manually stacks
Energised jelly blob deals full stamina damage
Pressurised slime blob deals full stamina damage
Blood boil deals 1.5x stamina damage to servants of ratvar (why do I bother?)
Revenant blight now deals 20 stamina damage
Space carp no longer deal stamina damage, but deal 20 brute.
Enchanted bullets deal 20 brute damage
Beanbags reduced to 55 stamina damage
Rubbershot damage untouched
Ebow stamina damage increased to 60
bone hurting juice deals 7.5 stamina damage per tick, down from 15
Why It's Good For The Game
Stamina damage not stacking with regular damage is meant to make disablers less good as a weapon for all-out firefights, but remain good for arresting criminals as a sec squad.
The stamina regen pause allows for chemicals that deal stamina damage to be effective even if they don't only target one body part (as in #43924), and gets rid of the counterintuitive speedy regeneration if multiple bodyparts are damaged. It also makes stamina damage calculations more straightforward - currently 4 damage/tick to the chest is really 1, and adding 25% more damage to the chem deals 100% more damage per tick.
The stamina purge is to make stamcrit less of a confirmed win - several times as sec officer I've succumbed to poison, run out of charge, etc only for the rest of sec to arrive before the perp awakes from his 3 hour sleep. Stamina damage is fully purged to make keeping someone down require more attention, since under the current system even if they somehow get up they'll be so slow it'll be trivial to put them down again. Basically, makes handcuffs more useful again.
Changelog
cl
add: stamina damage now pauses natural stamina regen for 10 seconds
add: stamina regenerates fully when it can.
balance: disabler damage reduced
tweak: stamina damage no longer stacks with normal damage for the purposes of damage slowdown and crit
balance: many sources of stamina damage have been adjusted, check PR for details
/cl