IPC battery rework, ion rifle nerf, surge damage. (#10245)

- EMPs no longer deal permanent damage. Instead, they deal a temporary kind of damage called surge damage, that lasts for 10 seconds at maximum.
  - Surge damage makes mechanical or assisted limbs count as broken and nonfunctional.
  - Surge damage has special interactions with the mechanical heart and eyes.
  - EMP damage is no longer randomized. It is now much more consistent.
  - IPC battery is no longer represented as nutrition. Instead, the microbattery organ contains a super-capacity cell that is used for all their actions. This is represented with a new HUD icon.
  - Hardsuits can now be charged in robot chargers if you are wearing them.
  - Ion bolts now have a hit sound.
  - Removed the ion rifle lethal mode.
  - The ion rifle now has four shots.
This commit is contained in:
Matt Atlas
2020-12-19 01:34:40 +01:00
committed by GitHub
parent a61e0e7047
commit 8007ccd2ea
44 changed files with 396 additions and 284 deletions
@@ -121,6 +121,7 @@
if(istype(owner) && (toxin_type in owner.chem_effects))
take_damage(owner.chem_effects[toxin_type] * 0.1 * PROCESS_ACCURACY, prob(1))
handle_regeneration()
tick_surge_damage() //Yes, this is intentional.
/obj/item/organ/internal/proc/handle_regeneration()
if(!damage || BP_IS_ROBOTIC(src) || !owner || owner.chem_effects[CE_TOXIN] || owner.is_asystole())
+6
View File
@@ -54,6 +54,12 @@
if(is_broken())
owner.eye_blind = 20
/obj/item/organ/internal/eyes/do_surge_effects()
owner.overlay_fullscreen("noise", /obj/screen/fullscreen/flash/noise)
/obj/item/organ/internal/eyes/clear_surge_effects()
owner.clear_fullscreen("noise")
/obj/item/organ/internal/eyes/robotize()
..()
verbs |= /obj/item/organ/internal/eyes/proc/change_eye_color
+6
View File
@@ -194,6 +194,12 @@
return pulse > PULSE_NONE || BP_IS_ROBOTIC(src) || (owner.status_flags & FAKEDEATH)
/obj/item/organ/internal/heart/do_surge_effects()
var/obj/item/organ/external/E = owner.organs_by_name[parent_organ]
if(prob(surge_damage))
owner.custom_pain(SPAN_DANGER("Your [E.name] stings horribly!"), 15, FALSE, E)
sound_to(owner, sound('sound/effects/singlebeat.ogg', 0, 0, 0, 100))
/obj/item/organ/internal/heart/listen()
if(BP_IS_ROBOTIC(src) && is_working())
if(is_bruised())
+1 -1
View File
@@ -46,7 +46,7 @@
/obj/item/organ/internal/lungs/process()
..()
if(!owner)
if(!owner || owner.stat == DEAD)
return
if(germ_level > INFECTION_LEVEL_ONE)