From 328b7fa8d86f32ef50e5e691db63c6e2b7aaa86b Mon Sep 17 00:00:00 2001
From: TDSSS <32099540+TDSSS@users.noreply.github.com>
Date: Wed, 16 Sep 2020 22:38:25 +0200
Subject: [PATCH] ERT idiotproofing and minor tweaks (#13834)
* makes ert more robust
* renamed and tweaked
* idiot proofing of ert
* I cannot into git, oops
* removed the anti-stun from code red erts again
* removed implied src
---
.../objects/items/weapons/storage/boxes.dm | 2 +-
.../objects/items/weapons/tanks/tank_types.dm | 5 ++
code/modules/clothing/spacesuits/ert.dm | 21 +++++++--
code/modules/clothing/under/color.dm | 4 ++
code/modules/clothing/under/jobs/civilian.dm | 4 ++
.../clothing/under/jobs/engineering.dm | 4 ++
code/modules/clothing/under/jobs/medsci.dm | 4 ++
code/modules/clothing/under/jobs/security.dm | 4 ++
code/modules/clothing/under/miscellaneous.dm | 4 ++
code/modules/response_team/ert_outfits.dm | 46 +++++++++----------
.../surgery/organs/augments_internal.dm | 17 ++++---
11 files changed, 80 insertions(+), 35 deletions(-)
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 481dd2cd8c9..0e2844579e7 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -1053,7 +1053,7 @@
/obj/item/storage/box/responseteam/New()
..()
new /obj/item/clothing/mask/breath(src)
- new /obj/item/tank/emergency_oxygen/engi(src)
+ new /obj/item/tank/emergency_oxygen/engi/full(src)
new /obj/item/flashlight/flare(src)
new /obj/item/kitchen/knife/combat(src)
new /obj/item/radio/centcom(src)
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index 3b05f0a72f9..4feb3296fe6 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -167,6 +167,11 @@
icon_state = "emergency_engi"
volume = 6
+/obj/item/tank/emergency_oxygen/engi/full/New()
+ ..()
+ air_contents.oxygen = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)
+
+
/obj/item/tank/emergency_oxygen/engi/empty/New()
..()
air_contents.oxygen = null
diff --git a/code/modules/clothing/spacesuits/ert.dm b/code/modules/clothing/spacesuits/ert.dm
index c412bb40f7d..8e68fe7461b 100644
--- a/code/modules/clothing/spacesuits/ert.dm
+++ b/code/modules/clothing/spacesuits/ert.dm
@@ -16,15 +16,26 @@
"Vox" = 'icons/mob/species/vox/helmet.dmi'
)
+/obj/item/clothing/head/helmet/space/hardsuit/ert/Initialize()
+ var/mob/living/carbon/human/wearer = loc.loc //loc is the hardsuit, so its loc is the wearer
+ if(ishuman(wearer))
+ register_camera(wearer)
+ ..()
+
/obj/item/clothing/head/helmet/space/hardsuit/ert/attack_self(mob/user)
if(camera || !has_camera)
..(user)
else
- camera = new /obj/machinery/camera(src)
- camera.network = list("ERT")
- GLOB.cameranet.removeCamera(camera)
- camera.c_tag = user.name
- to_chat(user, "User scanned as [camera.c_tag]. Camera activated.")
+ register_camera(user)
+
+/obj/item/clothing/head/helmet/space/hardsuit/ert/proc/register_camera(mob/wearer)
+ if(camera || !has_camera)
+ return
+ camera = new /obj/machinery/camera(src)
+ camera.network = list("ERT")
+ GLOB.cameranet.removeCamera(camera)
+ camera.c_tag = wearer.name
+ to_chat(wearer, "User scanned as [camera.c_tag]. Camera activated.")
/obj/item/clothing/head/helmet/space/hardsuit/ert/examine(mob/user)
. = ..()
diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm
index b57166d4909..8d0e68eddb0 100644
--- a/code/modules/clothing/under/color.dm
+++ b/code/modules/clothing/under/color.dm
@@ -128,6 +128,10 @@
item_state = "p_suit"
item_color = "purple"
+/obj/item/clothing/under/color/purple/sensor //for jani ert
+ sensor_mode = SENSOR_COORDS
+ random_sensor = FALSE
+
/obj/item/clothing/under/color/lightpurple
name = "light purple jumpsuit"
icon_state = "lightpurple"
diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm
index faa9039c8c4..6384efb2021 100644
--- a/code/modules/clothing/under/jobs/civilian.dm
+++ b/code/modules/clothing/under/jobs/civilian.dm
@@ -48,6 +48,10 @@
item_state = "bl_suit"
item_color = "chapblack"
+/obj/item/clothing/under/rank/chaplain/sensor
+ sensor_mode = SENSOR_COORDS
+ random_sensor = FALSE
+
/obj/item/clothing/under/rank/chef
desc = "It's an apron which is given only to the most hardcore chefs in space."
name = "chef's uniform"
diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm
index aa70fc85db6..3a717a5907f 100644
--- a/code/modules/clothing/under/jobs/engineering.dm
+++ b/code/modules/clothing/under/jobs/engineering.dm
@@ -39,6 +39,10 @@
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 60, "acid" = 20)
resistance_flags = NONE
+/obj/item/clothing/under/rank/engineer/sensor
+ sensor_mode = SENSOR_COORDS
+ random_sensor = FALSE
+
/obj/item/clothing/under/rank/engineer/skirt
desc = "It's an orange high visibility jumpskirt worn by engineers. It has minor radiation shielding."
diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm
index d8847741db3..ffd730d7a6d 100644
--- a/code/modules/clothing/under/jobs/medsci.dm
+++ b/code/modules/clothing/under/jobs/medsci.dm
@@ -124,6 +124,10 @@
permeability_coefficient = 0.50
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
+/obj/item/clothing/under/rank/medical/sensor
+ sensor_mode = SENSOR_COORDS
+ random_sensor = FALSE
+
/obj/item/clothing/under/rank/medical/skirt
name = "medical doctor's jumpskirt"
icon_state = "medicalf"
diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm
index 0086ba96ef8..afeca2fb3bd 100644
--- a/code/modules/clothing/under/jobs/security.dm
+++ b/code/modules/clothing/under/jobs/security.dm
@@ -34,6 +34,10 @@
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30)
strip_delay = 50
+/obj/item/clothing/under/rank/security/sensor
+ sensor_mode = SENSOR_COORDS
+ random_sensor = FALSE
+
/obj/item/clothing/under/rank/security/skirt
name = "security officer's jumpskirt"
desc = "Standard feminine fashion for Security Officers. It's made of sturdier material than the standard jumpskirts."
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index 9a2afbc8a60..beedf85c8c7 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -88,6 +88,10 @@
item_state = "g_suit"
item_color = "officer"
+/obj/item/clothing/under/rank/centcom_officer/sensor
+ sensor_mode = SENSOR_COORDS
+ random_sensor = FALSE
+
/obj/item/clothing/under/rank/centcom_commander
desc = "It's a jumpsuit worn by CentComm's highest-tier Commanders."
name = "\improper CentComm officer's jumpsuit"
diff --git a/code/modules/response_team/ert_outfits.dm b/code/modules/response_team/ert_outfits.dm
index f4ab9561bd5..96825ebdab7 100644
--- a/code/modules/response_team/ert_outfits.dm
+++ b/code/modules/response_team/ert_outfits.dm
@@ -36,7 +36,7 @@
rt_job = "Emergency Response Team Leader"
rt_mob_job = "ERT Commander"
- uniform = /obj/item/clothing/under/rank/centcom_officer
+ uniform = /obj/item/clothing/under/rank/centcom_officer/sensor
back = /obj/item/storage/backpack/ert/commander
id = /obj/item/card/id/ert/commander
@@ -56,12 +56,12 @@
gloves = /obj/item/clothing/gloves/color/black
suit = /obj/item/clothing/suit/armor/vest/ert/command
glasses = /obj/item/clothing/glasses/sunglasses
+ mask = /obj/item/clothing/mask/gas/sechailer
belt = /obj/item/gun/energy/gun
backpack_contents = list(
/obj/item/clothing/head/helmet/ert/command = 1,
- /obj/item/clothing/mask/gas/sechailer = 1,
/obj/item/restraints/handcuffs = 1,
/obj/item/storage/lockbox/mindshield = 1,
/obj/item/flashlight = 1
@@ -73,6 +73,7 @@
gloves = /obj/item/clothing/gloves/combat
suit = /obj/item/clothing/suit/space/hardsuit/ert/commander
glasses = /obj/item/clothing/glasses/sunglasses
+ mask = /obj/item/clothing/mask/gas/sechailer/swat
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/eyes/hud/security,
/obj/item/organ/internal/cyberimp/chest/nutriment
@@ -80,7 +81,6 @@
belt = /obj/item/gun/energy/gun/blueshield/pdw9
backpack_contents = list(
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/gun/energy/ionrifle/carbine = 1,
/obj/item/restraints/handcuffs = 1,
/obj/item/clothing/shoes/magboots = 1,
@@ -93,11 +93,11 @@
gloves = /obj/item/clothing/gloves/combat
suit = /obj/item/clothing/suit/space/hardsuit/ert/commander/gamma
glasses = /obj/item/clothing/glasses/night
+ mask = /obj/item/clothing/mask/gas/sechailer/swat
suit_store = /obj/item/gun/energy/gun/blueshield/pdw9
belt = /obj/item/gun/projectile/automatic/pistol/enforcer/lethal
backpack_contents = list(
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/restraints/handcuffs = 1,
/obj/item/storage/lockbox/mindshield = 1,
/obj/item/gun/energy/ionrifle/carbine = 1,
@@ -107,7 +107,7 @@
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/chest/nutriment/plus,
/obj/item/organ/internal/cyberimp/eyes/hud/security,
- /obj/item/organ/internal/cyberimp/brain/anti_stun,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun/hardened,
/obj/item/organ/internal/cyberimp/arm/flash
)
@@ -117,7 +117,7 @@
name = "RT Security"
rt_job = "Emergency Response Team Officer"
rt_mob_job = "ERT Security"
- uniform = /obj/item/clothing/under/rank/security
+ uniform = /obj/item/clothing/under/rank/security/sensor
back = /obj/item/storage/backpack/ert/security
belt = /obj/item/storage/belt/security/response_team
pda = /obj/item/pda/heads/ert/security
@@ -130,12 +130,12 @@
suit = /obj/item/clothing/suit/armor/vest/ert/security
suit_store = /obj/item/gun/energy/gun/advtaser
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
+ mask = /obj/item/clothing/mask/gas/sechailer
r_hand = /obj/item/gun/energy/laser
backpack_contents = list(
/obj/item/clothing/head/helmet/ert/security = 1,
- /obj/item/clothing/mask/gas/sechailer = 1,
/obj/item/storage/box/zipties = 1,
/obj/item/storage/box/teargas = 1,
/obj/item/flashlight/seclite = 1
@@ -149,6 +149,7 @@
suit = /obj/item/clothing/suit/space/hardsuit/ert/security
suit_store = /obj/item/gun/energy/gun/blueshield/pdw9
glasses = /obj/item/clothing/glasses/sunglasses
+ mask = /obj/item/clothing/mask/gas/sechailer
r_hand = /obj/item/gun/projectile/automatic/lasercarbine
@@ -159,11 +160,9 @@
)
backpack_contents = list(
- /obj/item/clothing/mask/gas/sechailer = 1,
/obj/item/clothing/shoes/magboots = 1,
/obj/item/storage/box/handcuffs = 1,
- /obj/item/storage/box/teargas = 1,
- /obj/item/grenade/flashbang = 1,
+ /obj/item/grenade/flashbang = 2,
/obj/item/ammo_box/magazine/laser = 2
)
@@ -175,13 +174,13 @@
belt = /obj/item/storage/belt/security/response_team_gamma
suit_store = /obj/item/gun/energy/gun/nuclear
glasses = /obj/item/clothing/glasses/night
+ mask = /obj/item/clothing/mask/gas/sechailer/swat
l_pocket = /obj/item/restraints/legcuffs/bola/energy
r_pocket = /obj/item/extinguisher/mini
r_hand = /obj/item/gun/energy/immolator/multi
backpack_contents = list(
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/storage/box/handcuffs = 1,
/obj/item/storage/box/flashbangs = 1,
/obj/item/whetstone = 1,
@@ -191,9 +190,9 @@
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/chest/nutriment/plus,
/obj/item/organ/internal/cyberimp/eyes/hud/security,
- /obj/item/organ/internal/cyberimp/brain/anti_stun,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun/hardened,
/obj/item/organ/internal/cyberimp/arm/telebaton,
- /obj/item/organ/internal/cyberimp/chest/reviver
+ /obj/item/organ/internal/cyberimp/chest/reviver/hardened
)
@@ -217,12 +216,12 @@
suit = /obj/item/clothing/suit/space/hardsuit/ert/engineer
suit_store = /obj/item/tank/emergency_oxygen/engi
glasses = /obj/item/clothing/glasses/meson
+ mask = /obj/item/clothing/mask/gas
l_pocket = /obj/item/gun/energy/gun/mini
r_pocket = /obj/item/melee/classic_baton/telescopic
backpack_contents = list(
- /obj/item/clothing/mask/gas = 1,
/obj/item/t_scanner = 1,
/obj/item/stack/sheet/glass/fifty = 1,
/obj/item/stack/sheet/metal/fifty = 1,
@@ -237,6 +236,7 @@
suit = /obj/item/clothing/suit/space/hardsuit/ert/engineer/gamma
suit_store = /obj/item/tank/emergency_oxygen/engi
glasses = /obj/item/clothing/glasses/meson
+ mask = /obj/item/clothing/mask/gas
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/eyes/shield,
/obj/item/organ/internal/cyberimp/chest/nutriment
@@ -245,7 +245,6 @@
r_pocket = /obj/item/melee/classic_baton/telescopic
backpack_contents = list(
- /obj/item/clothing/mask/gas = 1,
/obj/item/rcd/preloaded = 1,
/obj/item/rcd_ammo = 3,
/obj/item/gun/energy/gun = 1
@@ -259,12 +258,12 @@
suit = /obj/item/clothing/suit/space/hardsuit/ert/engineer/gamma
suit_store = /obj/item/gun/energy/gun/blueshield/pdw9
glasses = /obj/item/clothing/glasses/meson/night
+ mask = /obj/item/clothing/mask/gas/sechailer/swat
l_pocket = /obj/item/t_scanner/extended_range
r_pocket = /obj/item/melee/classic_baton/telescopic
backpack_contents = list(
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/rcd/combat = 1,
/obj/item/rcd_ammo/large = 3
)
@@ -272,7 +271,7 @@
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/chest/nutriment/plus,
/obj/item/organ/internal/cyberimp/eyes/hud/security,
- /obj/item/organ/internal/cyberimp/brain/anti_stun,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun/hardened,
/obj/item/organ/internal/cyberimp/eyes/shield,
/obj/item/organ/internal/cyberimp/arm/toolset
)
@@ -353,6 +352,7 @@
gloves = /obj/item/clothing/gloves/combat
suit = /obj/item/clothing/suit/space/hardsuit/ert/medical/gamma
glasses = /obj/item/clothing/glasses/night
+ mask = /obj/item/clothing/mask/gas/sechailer/swat
suit_store = /obj/item/gun/energy/gun/blueshield/pdw9
belt = /obj/item/defibrillator/compact/loaded
@@ -361,7 +361,6 @@
r_pocket = /obj/item/reagent_containers/hypospray/autoinjector
backpack_contents = list(
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/bodyanalyzer/advanced = 1,
/obj/item/extinguisher/mini = 1,
/obj/item/roller = 1,
@@ -375,7 +374,7 @@
/obj/item/organ/internal/cyberimp/arm/medibeam,
/obj/item/organ/internal/cyberimp/chest/nutriment/plus,
/obj/item/organ/internal/cyberimp/eyes/hud/medical,
- /obj/item/organ/internal/cyberimp/brain/anti_stun
+ /obj/item/organ/internal/cyberimp/brain/anti_stun/hardened
)
//////////////////// PARANORMAL ///////////////////
@@ -390,11 +389,11 @@
shoes = /obj/item/clothing/shoes/combat
l_ear = /obj/item/radio/headset/ert/alt
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
+ mask = /obj/item/clothing/mask/gas/sechailer/swat
belt = /obj/item/storage/belt/security/response_team
id = /obj/item/card/id/centcom
pda = /obj/item/pda/centcom
backpack_contents = list(
- /obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/storage/box/zipties = 1,
/obj/item/flashlight/seclite = 1
)
@@ -435,7 +434,7 @@
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/chest/nutriment/plus,
/obj/item/organ/internal/cyberimp/eyes/hud/security,
- /obj/item/organ/internal/cyberimp/brain/anti_stun
+ /obj/item/organ/internal/cyberimp/brain/anti_stun/hardened
)
//////////////////// JANITORIAL ///////////////////
@@ -444,7 +443,7 @@
name = "RT Janitor"
rt_job = "Emergency Response Team Janitor"
rt_mob_job = "ERT Janitor"
- uniform = /obj/item/clothing/under/color/purple
+ uniform = /obj/item/clothing/under/color/purple/sensor
back = /obj/item/storage/backpack/ert/janitor
belt = /obj/item/storage/belt/janitor/full
gloves = /obj/item/clothing/gloves/color/yellow
@@ -500,5 +499,6 @@
)
cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/arm/advmop
+ /obj/item/organ/internal/cyberimp/arm/advmop,
+ /obj/item/organ/internal/cyberimp/brain/anti_stun/hardened
)
diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index 19ff7fa37d8..b211d903e8a 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -1,5 +1,3 @@
-#define STUN_SET_AMOUNT 2
-
/obj/item/organ/internal/cyberimp
name = "cybernetic implant"
desc = "a state-of-the-art implant that improves a baseline's functionality"
@@ -128,15 +126,16 @@
implant_color = "#FFFF00"
slot = "brain_antistun"
origin_tech = "materials=5;programming=4;biotech=5"
+ var/stun_max_amount = 2
/obj/item/organ/internal/cyberimp/brain/anti_stun/on_life()
..()
if(crit_fail)
return
- if(owner.stunned > STUN_SET_AMOUNT)
- owner.SetStunned(STUN_SET_AMOUNT)
- if(owner.weakened > STUN_SET_AMOUNT)
- owner.SetWeakened(STUN_SET_AMOUNT)
+ if(owner.stunned > stun_max_amount)
+ owner.SetStunned(stun_max_amount)
+ if(owner.weakened > stun_max_amount)
+ owner.SetWeakened(stun_max_amount)
/obj/item/organ/internal/cyberimp/brain/anti_stun/emp_act(severity)
if(crit_fail || emp_proof)
@@ -147,6 +146,12 @@
/obj/item/organ/internal/cyberimp/brain/anti_stun/proc/reboot()
crit_fail = FALSE
+/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened
+ name = "Hardened CNS Rebooter implant"
+ desc = "A military-grade version of the standard implant, for NT's more elite forces."
+ origin_tech = "materials=6;programming=5;biotech=5"
+ emp_proof = TRUE
+
/obj/item/organ/internal/cyberimp/brain/clown_voice
name = "Comical implant"
desc = "Uh oh."