About The Pull Request
This PR adds medical wounds, new forms of injuries that people can suffer that cause debilitation and complications, and often require more than what can be found in a medkit to treat. But let's be honest, big complicated walls of text about medical changes make people's eyes glaze over easily- so I created a handy infograph to explain the basics!
Also there's a full guide here!
dreamseeker_2020-04-18_20-42-19.png
The infograph may not be fully up to date with the specifics of the PR's status, but it'll be updated along with major changes so people have something to use as a crash course for familiarizing themselves with how wounds function. I also have another infograph with all 9 of the possible initial wounds coming, and will be up soon. You can also find the longform design doc here with more info on the broad details, including descriptions of treatments: hackmd whee
What this does
There's a lot to cover, but here's the bullet points of the main features and changes:
Getting lots of damage on a limb can result in wounds, with more damage causing worse wounds. These can range from dislocated joints and minor cuts to compound fractures and fourth degree burns, and can affect you in different ways depending on what bodypart they're applied to (namely with broken bones).
You can damage individual bodyparts on clothing (only jumpsuits for now) through the use of lasers and sharp weapons. Bodyparts that reach max damage are considered "shredded" and will not apply any protection for that zone until it is repaired with cloth. If all zones are disabled, the entire piece of clothing is shredded and unwearable until repaired with 3 cloth. Jumpsuits give a small amount of wound protection, and since sharp weapons and lasers generally get extra wound bonuses against bare flesh, even a plain jumpsuit provides decent protection from a few laser shots or scalpel stabs.
Lasers gain a powerful niche versus unarmored/lightly armored carbons! As noted above, lasers can shred clothing and burn away zones of jumpsuits in 2 shots each, after which the target's bare flesh is exposed (barring other clothing), and lasers excel at dealing burn wounds against uncovered skin. Think big, nasty charring!
Bleeding is now totally limb based, and gauze is as well. Bleeding is also 95% cut wound based, meaning sharp weapons make you bleed rather than just having 40+ brute on a limb.
The more wounds and damage you get on a bodypart, the easier it'll be to gain more severe wounds. Wounds are arranged from Moderate, to Severe, to Critical in increasing severity, and you'll generally have to suffer the lesser ones before getting the worse ones.
dreamseeker_2020-05-15_03-15-59.png
Above: Someone having an incredibly bad day from bloodloss
dreamseeker_2020-05-04_22-29-29.png
Above: Scars from healed wounds
ShareX_2020-05-15_06-55-20.png
Above: Actual combat involving someone's head getting cracked
Here's a quick, if non-exhaustive, list of things I have left to do before I consider it feature complete
Finish adding treatments for each wound type/severity (mostly surgeries/triage for critical wounds)
Add second winds for bad injuries to give the victim a chance to get away
Flesh out severe & critical injuries in general
Find sprites for the bonesetter, bone gel, and anything else that might be needed
Add the medical items for treating the less severe wounds to the station
Polish code and remove any redundancies I left behind
Quick balance pass to make sure nothing is horribly abuseable
Why It's Good For The Game
Adds a flexible new system for representing damage on carbons with injuries that can be treated in different ways. Moderate wounds from getting toolboxed or sliced with a scalpel can usually be treated by a buddy or even by yourself with the right tools, but getting flayed with a fireaxe or a laser gun emptied into your bare skin may require extra attention or even surgery in bad cases! Also makes laser guns cooler and more like 40k lasguns that can flash fry people (cool!)
This should also make spessmen more resilient and harder to kill outright, while still adding consequences and complications to getting hurt. Wounds aren't immediately fatal, but they can do things like slow down interactions, deal damage over time through infections, and generally make you more fragile until fixed. They can also give you a "second wind" on being applied that gives you a small adrenaline boost (or whatever) to help disengage and escape immediate danger.
Changelog
🆑 Ryll/Shaps
add: Introduces medical wounds, new injuries that can happen to fleshy carbons when they sustain lots of damage on a bodypart. There's quite a lot of change here, but you can read the guide at: https://tgstation13.org/wiki/Guide_to_wounds and an extended changelog is available here: https://hackmd.io/l_FI9b3tSqa_woDadewJXA
add: Introduces scars and temporal scarring! Healing a wound leaves a scar behind that can be seen by examining someone twice rapidly, and if Temporal Scarring is enabled in character prefs, surviving a round with scars will save them to be granted at roundstart another round! Let your body tell stories!
tweak: Bleeding is now fully bodypart-focused, and 95% of bleeding comes from cut wounds from sharp weapons. Gauze is applied on a limb-by-limb basis, and helps staunch bloodflow rather than totally stop it. Notably, you no longer bleed just from having 40+ brute damage on a limb.
del: Organic bodyparts are no longer disabled at maximum damage, but are easier to cause wounds to
add: O2 medkits in emergency lockers have been replaced with new emergency medkits with basic tools for diagnosing and treating wounds and basic damage
tweak: Herapin now rapidly increases bleeding on all open cuts, rather than causing bleeding by itself. The more cuts on the target, the more it will affect them.
tweak: Neckgrab table slams now hit the targeted limb rather than just the head, with a large chance to dislocate or break a bone
tweak: Sharp weapons and burning weapons can now shred zones on jumpsuits, disabling protection on that limb. Damaged clothes can be repaired with cloth.
tweak: Slaughter demons now deal less raw damage, but gain the ability to cause cut wounds, which becomes more powerful with each attack on a humanoid but resets when bloodcrawling.
/🆑
About The Pull Request
Fixes resting so you're now not dense - can fit inside containters etc. Projectiles also once again hit resting players, but will pass through corpses. If you're not able to move, use items, or stand, or you're just dead, bullets go over you.
Why It's Good For The Game
Fixes#50332Fixes#50322Fixes#50236Fixes#50076Fixes#50370
Changelog
cl
fix: Fixes resting and projectiles.
/cl
About The Pull Request
It annoyed me that we have a perfectly good frag grenade item, and a perfectly good shrapnel component, but no crossover episode between the two. This remedies that, and does a lot, lot more.
dreamseeker_2020-03-30_05-01-13.png
dreamseeker_2020-03-30_05-01-26.png
Big points:
Adds new component: pellet_cloud, which can be used by ammo casings, guns, and landmines to spray shrapnel and display aggregate hit messages ("You're hit by 6 buckshot pellets!" vs "You're hit by the buckshot pellet in the X" x6). All gun ammo that shoot multiple pellets now use this component on firing.
Adds stingbangs, premium less-lethal grenades that shoot off lots of stinger pellets, to cargo. Frag grenades are also reworked to have smaller booms, but shoot off lots of shrapnel shards. You can jump on top of these grenades to absorb a portion of the shrapnel to save those around you! There's an achievement for dying this way, called "Look Out, Sir!"
Projectiles can now embed items/shrapnel. Adds .38 DumDum ammo to cargo that does less damage and has negative armor pen, but can embed in people. This is the only ammo that currently embeds.
Bullets can now ricochet off walls, structures, and machinery (harder surfaces are more likely to ricochet). Only standard .38 and Match Grade .38/.357/L6 ammo can ricochet, with Match Grade being much better at ricocheting. You can buy Match Grade .38 from cargo and Match Grade L6 ammo from the nuke uplink, while Match .357 is admin only.
Armor now protects you from harmful embeds, taking the better of the bullet/bomb armor on the affected limb. Armor penetration can modify this of course, and many blunt embeds like stingbangs and DumDum bullets are significantly worse if you have even 1 armor.
Other misc fixes/changes
Refactored the embed element a bunch and fixed it creating new elements for every instance rather than expected bespoke behavior. There are new /obj/item helpers for modifying and adding embedding.
Fixes#49989: Spears can no longer embed in turfs cause their sprite is annoying to me, it's generally harder for most things to embed in turfs
Fixes#49741: New carbon helpers for removing embedded objects
Fixes#46416: Handles embedded objects getting qdel'd or moved while embedded
Renamed the old shrapnel component for RPG loot to MIRV to avoid confusion
Repathed frag grenades from under minibombs to under base grenades, and added explosion vars to base grenades
Why It's Good For The Game
Fixes a bunch of janky design with embeds, adds lots of new avenues for projectile and grenade variety, ricochets and collateral damage are fun!
Changelog
🆑 Ryll/Shaps
add: Adds stingbangs to cargo (and one in the sec vendor premium), premium less-lethal grenades that shoot off a giant swarm of stingball pellets to help incapacitate swarms of people in tight quarters. You can jump on top of a live one to be a hero and absorb a bunch of shrapnel, same with frag grenades. There's even an achievement for dying to a grenade you jumped on!
add: Projectiles can now embed in people! Or at least grenade shrapnel and the new .38 DumDum ammo, now available in cargo, can. DumDum rounds excel against unarmored targets, but are pricey and do poorly against armored targets.
add: Bullets can now ricochet! Or at least, standard .38 and the new .38/L6 Match Grade ammo can. Match Grade ammo is finely tuned to ricochet easier and seek targets off bounces better, and can be purchased from cargo (for the .38) or nuke ops uplink (for the L6), but standard .38 ammo has a chance to ricochet as well.
tweak: Frag grenades now have smaller explosions but shoot off a bunch of devastating shrapnel, excellent for soft targets!
tweak: Shotguns and other multi-pellet guns now print aggregate messages, so you'll get one "You've been hit by 6 buckshot pellets!" rather than 6 "You've been hit by the buckshot pellet in the X!" messages. Bye bye lag!
balance: Armor can now protect against embedding weapons, taking the best of either the bullet or bomb armor for the limb in question away from the embed chance. Some weapons are better at piercing armor than others!
/🆑
* Adds a new element, Self-Knockback.
* Squashes a potential edgecase runtime in projectile_selfknockback before it can even happen.
* Allows item_selfknockback to interact with dense turfs now.
* Made self-knockback utilize the Element Bespoke flag to allow custom force and speed values on attachment.
* fixes newline issue, adds a usage comment.
* fixes the newline issue in self-knockback for real this time, thanks TortoiseGit.
* i swear on god almighty if this doesn't fix the newline issue, i'll eat a shoe.
* Testing newline lint
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
* adds "you" to some combat visible_messages.
* more you-messages and attack verbs to present tense.
* small fixes
* more additions and small fixes
* few message tweaks
* Fixes a typo and few other wordings.
* Woo shields
* reshuffle, adding a sound
* Re-organizing
* better defines for the signals I had
* new stuff
* fixes
* Replaced all instances of "defence" with defense"
and other small changes.
* oof
* spelling, and a forgotten check
* you, upgraded, improved, yes
* knockback component can now be reversed, has projectile and gun handling, and hostile simplemob handling
adds signals for hostile mobs attacking, altering projectiles before firing, and for when projectiles successfully hit their target
moves knockback handling to a general proc
adds ishelpers for guns and projectiles
* no more weird projectile handling it can just not apply the effect if the component somehow goes away
lifesteal actually works now instead of being a blank file, applies a flat healing effect when you hit something
* fixes up comsig stuff
adds new components to the fantasy prefix and suffix
knockback now handles throwing anchored objects
lifesteal now properly heals the target with projectiel weapons
adds summoning component to handle mob summoning with item attacking and such
adds fired_from variable to handle what a projectile was fired_from, firer would be the mob that fired and fired_from would be the gun, in the case of an autoturret, fired_from and firer would be the same
adds shrapnel component, fires projectiles around a fired projectile when it hits
adds igniter component to set attacked mobs on fire
* no more shrapnel on items that can't use it
summoning items now summon at least one mob maximum
adds specific weighted projectile types for shrapnel to prevent broken options being picked
removes the reverse var from knockback component and instead just handles negative thrown turf
cl Naksu
code: reagent IDs have been removed in favor using reagent typepaths where applicable
fix: mechas, borg hyposprays etc no longer display internal reagent ids to the player
/cl
* (deriuqer) yrammuS
* Also this
* Guess I'll do it this way, then
* You can hit the arms now, too
* Update code/game/mecha/mecha.dm
requested by ShizCalev, committed by Zxaber
Co-Authored-By: zxaber <37497534+zxaber@users.noreply.github.com>
* Update mecha.dm
* commited a comment
* Bandaid fixes for bugs with reflectors projectiles and plasma cutters
* * Fixed bouncing piercing projectiles on qdel
* Fixed projectiles reflection not working
* Fixed heavy beam pulses not penetrating
* Changed numerous projectiles procs to use the new BULLET_ACT_* format
* Final conversions to new BULLET_ACT_* format
* Fixes projectiles not hitting mobs, some refactoring too
* some stuff for projectile can hit target to work with not being ontop of an object
* Yeah let's just refactor bullet_act while we're at it.
* Yeah let's just refactor bullet_act while we're at it.
* Yeah let's just refactor bullet_act while we're at it.
* CanPass returns true to projectiles regardless of hit
* snakecase?
cl coiax
fix: Dead monkeys now produce miasma.
/cl
Previously any time there was a dead monkey, it would constantly runtime with incompatible component warnings.
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.
* Refactor several log lines to use datum_info_line and atom_loc_line
* Add default return strings from datum_info_line and atom_loc_line
* Add parentheses around atom_loc_line data
* Change more logs to use atom_loc_line
* Add check in atom_loc_line for turfs to avoid calling get_turf on them
* Re-add removed 'at'
* Replace datum_info_line with key_name and atom_loc_line with loc_name
* Refactor logging functions
* Avoid double-logging self-interactions
* Fallback to simple stringification if all else fails in key_name()
* Rewrite muscle spasm logging to use log_message
* Standardize logging of martial arts
* Tweak individual logging panel look
* Fix individual logging panel source
* When I typed || I really meant &&
* Fix Telecomms logging always showing client logs in the panel
* Reverts addition of buggy ownership log to panel
* Remove colon
* Fix missing log_directed_talk tag
* Add warning for missing type in log_direted_talk
* Change warnings to stack_traces
* Add square brackets around fallthrough key_name() case to help parsing
* Allow atom arguments/src in log_*() functions
* Change log_combat call with null argument to log_message
* Change mecha types' log_message() arguments to match atom and mob version
* Add key_name() case for atoms
* Fix resist_grab() unsetting pulledby before log_combat gets a chance to use it
* Fix log_globally logic
* Add logging for hitting objects with items
* Move log_combat() to atoms.dm
* Use utility functions for object stringification in log_combat()
* Use utility functions for object stringification in log_combat()
* Add missing logs for interacting with display cases
* Rewrite log_combat() comment
* Add missing space in log_combat()
* Add logging for hitting grilles barehanded
* Add missing ..()
cl
experimental: Hitscanning tracers now have lighting effects
experimental: Projectile pathing has been changed - instead of moving to a turf 32 pixels forward using byond's built in step_towards() proc, it now increments 2 pixel 16 times (subject to change). While this will increase the processing overhead, this will more or less eliminate cases of "projectiles clipping past corners in some angles but not others".
This is in preparation for step_x support as the default behavior for these procs is necessary for proper functionality.
turf/Enter and atom/movable/Move default code got rewritten to replicate default byond functionality with minor changes.
Adds spell cards. They're a wizard spell that shoots a burst of 5 semi-accurate homing cards.
Projectiles now have a homing framework, complete with some variant of simulated inaccuracy.
The said wizard spell will make use of a new mob component, that allows that mob to select targets by moving their cursor near them. It will give a visual and lock onto the nearest mob to the cursor, allowing the homing projectiles to target on the locked on mob/object.
Removes colliding variable from projectiles - We never used it after Bump was refactored to Collide.
Images soon when I get the lockon datum-components to work.
* Cross Z support
* Fixes projectile cross-Z
* removes unnecessary code
* don't draw impacts if you're not impacting
* fix
* unneeded var
* No mapcheck()ing anymore, space does it for us 2.0
Moves beam rifle snowflake code up to projectile level for a proper hitscan system.
🆑
rscadd: Chameleon laser guns now have a special firing mode, activated by using them in hand! Only certain gun disguises will allow this to work!
/🆑