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.
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 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
* 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
* 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
* Shocks propagate to pulled humans.
* shocks pulledby as well, prevents defib loop and extra shocks.
* This is better.
* whitespace
* more whitespace
* Now only casts to human.
* More fixes
cl XDTM
balance: DNA-damaging methods (changeling draining, mainly) no longer prevent alternative revival methods, but can no longer be circumvented by upgrading DNA scanners.
balance: Any source of husking now prevents cloning on unupgraded cloning scanners, instead of only husking caused by changelings.
balance: Husking now fully prevents revival from several non-cloning methods, including defibrillation, surgery, and strange reagent.
/cl
Why? Consistency! Also, the removal of prescanning/autocloning really simplifies this.
Changeling draining effectively prevents cloning until you transfer the brain to an intact body.
Aiming to implement the framework oranges has detailed in https://tgstation13.org/phpBB/viewtopic.php?f=10&t=19102
Moves canmove to a bitflag in a new variable called mobility_flags, that will allow finer grain control of what someone can do codewise, for example, letting them move but not stand up, or stand up but not move.
Adds Immobilize()d status effect that freezes movement but does not prevent anything else.
Adds Paralyze()d which is oldstun "You can't do anything at all and knock down).
Stun() will now prevent any item/UI usage and movement (which is similar to before).
Knockdown() will now only knockdown without preventing item usage/movement.
People knocked down will be able to crawl at softcrit-speeds
Refactors some /mob variables and procs to /mob/living.
update_canmove() refactored to update_mobility() and will handle mobility_flags instead of the removed canmove
cl
rscadd: Crawling is now possible if you are down but not stunned. Obviously, you will be slower.
/cl
Refactors are done. I'd rather get this merged faster than try to fine tune stuff like slips. The most obvious gameplay effect this pr has will be crawling, and I believe I made tiny tweaks but I can't find it Anything I missed or weird behavior should be reported.
* Adds programmable nanites to robotics
* Oh yeah i might want to actually PR the files
* nanite injectors, nanite printer, nanite analyzer
* We're back
* remove some reagent stuff
* more removal
* those too
* cool icons!
* might pass travis now
* lotsa code
* tgui fixes/misc fixes
* WE'RE FUNCTIONAL BOYS
* some ui stuff
* Misc fixes, cloud update, access nanites
* activation check
* stuff
* preparing for new chamber sprite
* Physical backups, sensor nanite programs
* techweb sensor nanites
* fix
* include
* fix again
* revert
* blinding nanites
* minor change
* minor tweaks
* makes minor shocks interfere with nanites
* fix
* split trigger file into the others, for consistency
* cleanup, added mindshield nanites to techwebs
* include n all
* how'd that even happen
* Fixed HUD, readded missing remote icon, added nanite scanner, health analyzers can now detect nanites, added stealth program
* cost tweaks
* better term
* new icon! by MrDoomBringer
* icons/tweaks
* tgui build
* boards
* fix
* fixes implants not updating mindshield status
* move implant hud to living
* new remote sprite
* scanner sprite
* biotype checks
* some nerfs
* new open chamber sprite
* Fixes mindshield implants not updating the HUD, fixes uninstalling always removing the first program, adds 25% and 75% health sensors
* correction
* nerfs antistun nanites
* fixes scanners and minor tweaks
* fixes revs with mindshield
* oh yeah haha
* Fixes wonky techweb
* Moves pyro program to weapon node
* Adds defib program and some investigate logging
* mistype
* fix
* fix2
* save your files before committing
* emps can desync from cloud
* pretty outdated
* Cloud backups are now tied to the cloud consoles; you can no longer build a new console to access existing backups.
* UI fix
* more fix
* okay fix for real
* tested and working
* Extra Settings rework, sensor nanites vastly better
* non-unique glitches
* Public chamber, extra settings rework, new sensors, speech program
* Mute and mind control nanites
* mind control into hazard
* better description
* fixes
* fixes relay nanites
* fixes TK access
* mind control costs less
* UI update
* removed pointless code bit
* tgui build
* compiles
* dammit
* paralysis keeps victim upright
* Adds sounds to consoles
* some feedback for some subtle effects
* new chem lore
* Viral nanite customization
* fix
* tgui build
* Added mitosis nanites
* removes glitched nanites from techwebs
* Added flesh eating nanites, poison nanites, hallucination nanites
* ,
* #traviscoding
* Adds memory leak, renames nanite roam node to nanite smart
* Voice sensor + some techweb desc tweaks
* hallucination and Hear() fix
* changes signal registering to the new method
* 75% done, i think
* should be all
* more fix
* more changes
* okay should be fine now
* ninja
* inheritance
* i don't care about originality!
* line endings
* line endings 2
* maybe
* fixes program installation
* new review
* line endings?
* line endings??
* line endings???
* wait do i even use this
* fixes public nanite chamber cloud id
* maint overlay for chambers
* args doesn't work well here
* antiabuse checks
* compile tho
* fixes locked remotes
* disk renaming
* skull echo nanites
* self scan program
* Condenses a lot of sensors into a few generic but customizable versions
* fixes machinery runtimes. Hacky, but a proper fix would likely require a refactor of machinery typing.
* forgot to save
* empty
* metastation nanite lab
* Removes duplicate APC
* fix for nanite chamber
* Raise max programs
* UI Tweaks, aggr. replication rebalance, minor fixes
* let's not do that again
* Fixes nanites meta merge conflict
* Merge conflict v2
* fuck this HDD is slow
* What the fuck did you just fucking say about me, you little leaf? I'll have you know I graduated top of my class in the Lawyer School, and I've been involved in numerous secret DMCA raids. I am trained in law violations warfare and you are nothing to me but just another target. I will wipe you the fuck out with precision the likes of which has never been seen before on BYOND, mark my fucking words. You think you can get away with changing the code? Think again, fucker. As we speak I am contacting my secret network of attorneys in the Fox and your IP is being traced right now so you better prepare for an outstanding warrant, maggot. The storm that wipes out the pathetic little thing you call your leaked code. You're fucking done, kid. I can file for an injunction anywhere, anytime, and I can take legal actions in over seven hundred ways, and that's just with my bare hands. Not only am I extensively trained in unarmed combat, but I have access to the entire arsenal of the Florida Statute and I will use it to its full extent to wipe your miserable ass off the face of Canada, you little shit. If only you could have known what unholy retribution your little "clever" action was about to bring down upon you, maybe you would have held your fucking tongue. But you couldn't, you didn't, and now you're paying the price, you goddamn idiot. I will send you to spend time in a Florida State Penitentiary if you ever decide to travel from Canada to the U.S. You're fucking done, kiddo.
* Adds virus symptoms that interact with nanites
* Fixes spreading nanites being more infective the more protection the victims have
* Review plus public chamber tweak
* . = ..()
* ball
* cloud
* . = ..()
* always press save all before committing
* missed a couple