From fd8d61aa8b1e2e271e44069c8ecd668587c773ed Mon Sep 17 00:00:00 2001 From: MisterBook Date: Tue, 4 Jun 2013 22:41:23 -0500 Subject: [PATCH 01/13] New taser fix is now in place. Rather than full deflection, armor mitigates the damage. Updates along all sorts of Clothing for minor mitigations to major mitigations. New define - AGONY. Used as an effect (Like STUN, WEAKN, etc) to cause HALLOSS. Allows use of HALLOSS projectiles without having to worry about them shattering windows/grilles. Future use? Torture tools, pain inducers for interrogation, 'Be Good' modules, Meme, etc. HALLOSS now regens while standing up (2 per tick), and laying down (Resting, unconscious, paralyzed - 6 per tick). This fixes the 'real damage + HALLOSS = forever crit'. Sticking a gun in your mouth (Non-stun, damage inducing) and pulling the trigger kills you. Icon adjustments. --- code/modules/clothing/clothing.dm | 5 ++++- code/modules/clothing/gloves/miscellaneous.dm | 5 +++-- code/modules/clothing/gloves/stungloves.dm | 2 +- code/modules/clothing/head/hardhat.dm | 1 + code/modules/clothing/head/helmet.dm | 4 +++- code/modules/clothing/head/jobs.dm | 6 ++++++ code/modules/clothing/head/misc.dm | 11 +++++++++++ code/modules/clothing/head/misc_special.dm | 2 ++ code/modules/clothing/head/soft_caps.dm | 1 + code/modules/clothing/masks/boxing.dm | 1 + code/modules/clothing/masks/gasmask.dm | 5 +++++ code/modules/clothing/masks/miscellaneous.dm | 2 ++ code/modules/clothing/shoes/miscellaneous.dm | 12 ++++++------ code/modules/clothing/spacesuits/captain.dm | 2 +- code/modules/clothing/spacesuits/ert.dm | 4 ++-- .../clothing/spacesuits/miscellaneous.dm | 7 +++++-- code/modules/clothing/spacesuits/ninja.dm | 4 ++-- code/modules/clothing/spacesuits/rig.dm | 12 ++++++------ code/modules/clothing/spacesuits/syndi.dm | 4 ++-- code/modules/clothing/suits/armor.dm | 10 +++++++--- code/modules/clothing/suits/bio.dm | 2 ++ code/modules/clothing/suits/miscellaneous.dm | 16 +++++++++++++++- code/modules/clothing/suits/wiz_robe.dm | 9 ++++++++- code/modules/clothing/under/chameleon.dm | 2 +- code/modules/clothing/under/jobs/security.dm | 17 ++++++++++++----- code/modules/clothing/under/syndicate.dm | 2 +- .../mob/living/carbon/human/human_defense.dm | 15 ++++++++++++--- code/modules/mob/living/carbon/human/life.dm | 15 +++++++++++---- code/modules/mob/living/damage_procs.dm | 5 ++++- code/modules/projectiles/gun.dm | 2 +- code/modules/projectiles/projectile.dm | 5 +++-- code/modules/projectiles/projectile/energy.dm | 7 ++++--- code/setup.dm | 1 + icons/mob/mask.dmi | Bin 24524 -> 24554 bytes 34 files changed, 146 insertions(+), 52 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 7d8f1289ce6..f476e60c255 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -88,7 +88,7 @@ BLIND // can't see anything desc = "Comfortable-looking shoes." gender = PLURAL //Carn: for grammarically correct text-parsing var/chained = 0 - + siemens_coefficient = 0.9 body_parts_covered = FEET slot_flags = SLOT_FEET @@ -105,6 +105,7 @@ BLIND // can't see anything armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) slot_flags = SLOT_OCLOTHING var/blood_overlay_type = "suit" + siemens_coefficient = 0.9 //Spacesuit //Note: Everything in modules/clothing/spacesuits should have the entire suit grouped together. @@ -120,6 +121,7 @@ BLIND // can't see anything flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE cold_protection = HEAD min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECITON_TEMPERATURE + siemens_coefficient = 0.9 /obj/item/clothing/suit/space name = "Space suit" @@ -137,6 +139,7 @@ BLIND // can't see anything flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE + siemens_coefficient = 0.9 //Under clothing diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 05c4bf03e3d..a5e99111006 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -3,7 +3,7 @@ name = "ninja gloves" icon_state = "s-ninja" item_state = "s-ninja" - siemens_coefficient = 0 + siemens_coefficient = 0.2 var/draining = 0 var/candrain = 0 var/mindrain = 200 @@ -32,7 +32,7 @@ name = "\improper SWAT Gloves" icon_state = "black" item_state = "swat_gl" - siemens_coefficient = 0 + siemens_coefficient = 0.6 permeability_coefficient = 0.05 cold_protection = HANDS @@ -70,3 +70,4 @@ icon_state = "leather" item_state = "ggloves" permeability_coefficient = 0.9 + siemens_coefficient = 0.9 diff --git a/code/modules/clothing/gloves/stungloves.dm b/code/modules/clothing/gloves/stungloves.dm index b892f001d35..dd531389681 100644 --- a/code/modules/clothing/gloves/stungloves.dm +++ b/code/modules/clothing/gloves/stungloves.dm @@ -9,7 +9,7 @@ if(C.amount >= 2) C.use(2) wired = 1 - siemens_coefficient = 1 + siemens_coefficient = 3.0 user << "You wrap some wires around [src]." update_icon() else diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index dfca62aa013..defc0a49ed6 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -10,6 +10,7 @@ armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20) flags_inv = 0 icon_action_button = "action_hardhat" + siemens_coefficient = 0.9 attack_self(mob/user) if(!isturf(user.loc)) diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 23debe8aab1..ec2ef1b3fae 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -10,7 +10,7 @@ min_cold_protection_temperature = HELMET_MIN_COLD_PROTECITON_TEMPERATURE heat_protection = HEAD max_heat_protection_temperature = HELMET_MAX_HEAT_PROTECITON_TEMPERATURE - siemens_coefficient = 0 + siemens_coefficient = 0.7 /obj/item/clothing/head/helmet/warden name = "warden's hat" @@ -26,6 +26,7 @@ flags = FPRINT|TABLEPASS|HEADCOVERSEYES armor = list(melee = 82, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0) flags_inv = HIDEEARS + siemens_coefficient = 0.7 /obj/item/clothing/head/helmet/swat name = "\improper SWAT helmet" @@ -37,6 +38,7 @@ flags_inv = HIDEEARS|HIDEEYES cold_protection = HEAD min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECITON_TEMPERATURE + siemens_coefficient = 0.5 /obj/item/clothing/head/helmet/thunderdome name = "\improper Thunderdome helmet" diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index fc279dd382f..2ccebe9ddc9 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -7,6 +7,7 @@ item_state = "chef" desc = "The commander in chef's head wear." flags = FPRINT | TABLEPASS + siemens_coefficient = 0.9 //Captain: This probably shouldn't be space-worthy /obj/item/clothing/head/caphat @@ -15,6 +16,7 @@ desc = "It's good being the king." flags = FPRINT|TABLEPASS item_state = "caphat" + siemens_coefficient = 0.9 //Captain: This probably shouldn't be space-worthy /obj/item/clothing/head/helmet/cap @@ -25,6 +27,7 @@ flags_inv = 0 cold_protection = HEAD min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECITON_TEMPERATURE + siemens_coefficient = 0.9 //Chaplain /obj/item/clothing/head/chaplain_hood @@ -32,6 +35,7 @@ desc = "It's hood that covers the head. It keeps you warm during the space winters." icon_state = "chaplain_hood" flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR + siemens_coefficient = 0.9 //Chaplain /obj/item/clothing/head/nun_hood @@ -39,6 +43,7 @@ desc = "Maximum piety in this star system." icon_state = "nun_hood" flags = FPRINT|TABLEPASS|HEADCOVERSEYES|BLOCKHAIR + siemens_coefficient = 0.9 //Mime /obj/item/clothing/head/beret @@ -46,6 +51,7 @@ desc = "A beret, an artists favorite headwear." icon_state = "beret" flags = FPRINT | TABLEPASS + siemens_coefficient = 0.9 //Security /obj/item/clothing/head/beret/sec diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 19bb098b4f0..32f01a10c8e 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -6,6 +6,7 @@ desc = "It's good to be emperor." flags = FPRINT|TABLEPASS item_state = "centhat" + siemens_coefficient = 0.9 /obj/item/clothing/head/hairflower name = "hair flower pin" @@ -26,6 +27,7 @@ icon_state = "tophat" item_state = "that" flags = FPRINT|TABLEPASS + siemens_coefficient = 0.9 /obj/item/clothing/head/redcoat name = "redcoat's hat" @@ -45,6 +47,7 @@ icon_state = "plaguedoctor" flags = FPRINT | TABLEPASS permeability_coefficient = 0.01 + siemens_coefficient = 0.9 /obj/item/clothing/head/hasturhood name = "hastur's hood" @@ -57,6 +60,7 @@ desc = "It allows quick identification of trained medical personnel." icon_state = "nursehat" flags = FPRINT|TABLEPASS + siemens_coefficient = 0.9 /obj/item/clothing/head/syndicatefake name = "red space-helmet replica" @@ -65,6 +69,7 @@ desc = "A plastic replica of a syndicate agent's space helmet, you'll look just like a real murderous syndicate agent in this! This is a toy, it is not made for use in space!" flags = FPRINT | TABLEPASS | BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE + siemens_coefficient = 2.0 /obj/item/clothing/head/cueball name = "cueball helmet" @@ -82,6 +87,7 @@ flags = FPRINT|TABLEPASS flags_inv = 0 + /obj/item/clothing/head/greenbandana name = "green bandana" desc = "It's a green bandana with some fine nanotech lining." @@ -132,6 +138,7 @@ desc = "A working man's cap." icon_state = "flat_cap" item_state = "detective" + siemens_coefficient = 0.9 /obj/item/clothing/head/pirate name = "pirate hat" @@ -210,6 +217,7 @@ icon_state = "witch" item_state = "witch" flags = FPRINT | TABLEPASS | BLOCKHAIR + siemens_coefficient = 2.0 /obj/item/clothing/head/chicken name = "chicken suit head" @@ -217,6 +225,7 @@ icon_state = "chickenhead" item_state = "chickensuit" flags = FPRINT | TABLEPASS | BLOCKHAIR + siemens_coefficient = 2.0 /obj/item/clothing/head/bearpelt name = "bear pelt hat" @@ -224,6 +233,7 @@ icon_state = "bearpelt" item_state = "bearpelt" flags = FPRINT | TABLEPASS | BLOCKHAIR + siemens_coefficient = 2.0 /obj/item/clothing/head/xenos name = "xenos helmet" @@ -232,3 +242,4 @@ desc = "A helmet made out of chitinous alien hide." flags = FPRINT | TABLEPASS | BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE + siemens_coefficient = 2.0 diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index b3c1eb5b9b4..1e9f6d4f89a 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -23,6 +23,7 @@ armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags_inv = (HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE) icon_action_button = "action_welding" + siemens_coefficient = 0.9 /obj/item/clothing/head/welding/attack_self() toggle() @@ -158,6 +159,7 @@ flags = FPRINT | TABLEPASS var/icon/mob var/icon/mob2 + siemens_coefficient = 1.5 update_icon(var/mob/living/carbon/human/user) if(!istype(user)) return diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index 3d4bfc8dcf9..af286a0e9b1 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -6,6 +6,7 @@ item_state = "helmet" color = "cargo" var/flipped = 0 + siemens_coefficient = 0.9 dropped() src.icon_state = "[color]soft" diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 129c69e90ff..49d9505bce4 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -15,6 +15,7 @@ flags = FPRINT|TABLEPASS|BLOCKHAIR flags_inv = HIDEFACE w_class = 2 + siemens_coefficient = 3.0 /obj/item/clothing/mask/luchador/tecnicos name = "Tecnicos Mask" diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 6031221882b..f8d643d5e32 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -8,6 +8,7 @@ item_state = "gas_alt" gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 + siemens_coefficient = 0.9 //Plague Dr suit can be found in clothing/suits/bio.dm /obj/item/clothing/mask/gas/plaguedoctor @@ -21,11 +22,13 @@ name = "\improper SWAT mask" desc = "A close-fitting tactical mask that can be connected to an air supply." icon_state = "swat" + siemens_coefficient = 0.7 /obj/item/clothing/mask/gas/syndicate name = "syndicate mask" desc = "A close-fitting tactical mask that can be connected to an air supply." icon_state = "swat" + siemens_coefficient = 0.7 /obj/item/clothing/mask/gas/voice name = "gas mask" @@ -41,6 +44,7 @@ icon_state = "s-ninja" item_state = "s-ninja_mask" vchange = 1 + siemens_coefficient = 0.2 /obj/item/clothing/mask/gas/clown_hat name = "clown wig and mask" @@ -76,6 +80,7 @@ name = "Death Commando Mask" icon_state = "death_commando_mask" item_state = "death_commando_mask" + siemens_coefficient = 0.2 /obj/item/clothing/mask/gas/cyborg name = "cyborg visor" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 52b28bd8f1e..8df98f42dd3 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -81,6 +81,7 @@ flags = FPRINT|TABLEPASS|BLOCKHAIR flags_inv = HIDEFACE w_class = 2 + siemens_coefficient = 0.9 /obj/item/clothing/mask/horsehead name = "horse head mask" @@ -91,3 +92,4 @@ flags_inv = HIDEFACE w_class = 2 var/voicechange = 0 + siemens_coefficient = 0.9 diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index ef3ab188c0c..d7c6177893f 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -7,7 +7,7 @@ flags = NOSLIP origin_tech = "syndicate=3" var/list/clothing_choices = list() - siemens_coefficient = 0 + siemens_coefficient = 0.8 /obj/item/clothing/shoes/mime name = "mime shoes" @@ -20,7 +20,7 @@ icon_state = "swat" armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) flags = NOSLIP - siemens_coefficient = 0 + siemens_coefficient = 0.6 /obj/item/clothing/shoes/combat //Basically SWAT shoes combined with galoshes. name = "combat boots" @@ -28,7 +28,7 @@ icon_state = "swat" armor = list(melee = 80, bullet = 60, laser = 50,energy = 25, bomb = 50, bio = 10, rad = 0) flags = NOSLIP - siemens_coefficient = 0 + siemens_coefficient = 0.6 cold_protection = FEET min_cold_protection_temperature = SHOE_MIN_COLD_PROTECITON_TEMPERATURE @@ -42,7 +42,7 @@ permeability_coefficient = 0.01 flags = NOSLIP armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) - siemens_coefficient = 0 + siemens_coefficient = 0.2 cold_protection = FEET min_cold_protection_temperature = SHOE_MIN_COLD_PROTECITON_TEMPERATURE @@ -82,7 +82,7 @@ icon_state = "jackboots" item_state = "jackboots" color = "hosred" - siemens_coefficient = 0 + siemens_coefficient = 0.7 /obj/item/clothing/shoes/cult name = "boots" @@ -90,7 +90,7 @@ icon_state = "cult" item_state = "cult" color = "cult" - siemens_coefficient = 0 + siemens_coefficient = 0.7 cold_protection = FEET min_cold_protection_temperature = SHOE_MIN_COLD_PROTECITON_TEMPERATURE diff --git a/code/modules/clothing/spacesuits/captain.dm b/code/modules/clothing/spacesuits/captain.dm index 56537aec50e..7757b1a2096 100644 --- a/code/modules/clothing/spacesuits/captain.dm +++ b/code/modules/clothing/spacesuits/captain.dm @@ -26,4 +26,4 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE - siemens_coefficient = 0 + siemens_coefficient = 0.7 diff --git a/code/modules/clothing/spacesuits/ert.dm b/code/modules/clothing/spacesuits/ert.dm index 7b01ae1cf98..4695e884caf 100644 --- a/code/modules/clothing/spacesuits/ert.dm +++ b/code/modules/clothing/spacesuits/ert.dm @@ -4,7 +4,7 @@ icon_state = "ert_commander" item_state = "helm-command" armor = list(melee = 50, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 60) - siemens_coefficient = 0 + siemens_coefficient = 0.6 /obj/item/clothing/suit/space/ert name = "emergency response team suit" @@ -19,7 +19,7 @@ /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/device/multitool, \ /obj/item/device/radio, /obj/item/device/analyzer, /obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/pulse_rifle, \ /obj/item/weapon/gun/energy/taser, /obj/item/weapon/melee/baton, /obj/item/weapon/gun/energy/gun) - siemens_coefficient = 0 + siemens_coefficient = 0.6 //Commander /obj/item/clothing/head/helmet/space/ert/commander diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index bf62ddfef31..c4d8327a0af 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -25,7 +25,7 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE - siemens_coefficient = 0 + siemens_coefficient = 0.7 //Deathsquad suit /obj/item/clothing/head/helmet/space/deathsquad @@ -34,7 +34,7 @@ icon_state = "deathsquad" item_state = "deathsquad" armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) - siemens_coefficient = 0 + siemens_coefficient = 0.2 /obj/item/clothing/head/helmet/space/deathsquad/beret name = "officer's beret" @@ -42,6 +42,7 @@ icon_state = "beret_badge" armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30) flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE + siemens_coefficient = 0.9 //Space santa outfit suit /obj/item/clothing/head/helmet/space/santahat @@ -68,6 +69,7 @@ item_state = "pirate" armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE + siemens_coefficient = 0.9 /obj/item/clothing/suit/space/pirate name = "pirate coat" @@ -78,5 +80,6 @@ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 0 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + siemens_coefficient = 0.9 diff --git a/code/modules/clothing/spacesuits/ninja.dm b/code/modules/clothing/spacesuits/ninja.dm index 086ac7a2c98..8f49738fbfe 100644 --- a/code/modules/clothing/spacesuits/ninja.dm +++ b/code/modules/clothing/spacesuits/ninja.dm @@ -5,7 +5,7 @@ item_state = "s-ninja_mask" allowed = list(/obj/item/weapon/cell) armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25) - siemens_coefficient = 0 + siemens_coefficient = 0.2 /obj/item/clothing/suit/space/space_ninja @@ -16,7 +16,7 @@ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/cell) slowdown = 0 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) - siemens_coefficient = 0 + siemens_coefficient = 0.2 //Important parts of the suit. var/mob/living/carbon/affecting = null//The wearer. diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index d63b11b001a..c735156ef85 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -86,7 +86,7 @@ item_state = "syndie_helm" color = "syndi" armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 60) - siemens_coefficient = 0 + siemens_coefficient = 0.6 /obj/item/clothing/suit/space/rig/syndi @@ -98,7 +98,7 @@ w_class = 3 armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 60) allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs) - siemens_coefficient = 0 + siemens_coefficient = 0.6 //Wizard Rig @@ -110,7 +110,7 @@ color = "wiz" unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles! armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) - siemens_coefficient = 0 + siemens_coefficient = 0.7 /obj/item/clothing/suit/space/rig/wizard icon_state = "rig-wiz" @@ -121,7 +121,7 @@ w_class = 3 unacidable = 1 armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) - siemens_coefficient = 0 + siemens_coefficient = 0.7 //Medical Rig @@ -148,7 +148,7 @@ item_state = "sec_helm" color = "sec" armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10) - siemens_coefficient = 0 + siemens_coefficient = 0.7 /obj/item/clothing/suit/space/rig/security icon_state = "rig-sec" @@ -157,7 +157,7 @@ item_state = "sec_hardsuit" armor = list(melee = 60, bullet = 10, laser = 30, energy = 5, bomb = 45, bio = 100, rad = 10) allowed = list(/obj/item/weapon/gun,/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/melee/baton) - siemens_coefficient = 0 + siemens_coefficient = 0.7 //Atmospherics Rig (BS12) diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index e2fc9e6d649..f2829fbdf87 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -6,7 +6,7 @@ item_state = "syndicate" desc = "Has a tag: Totally not property of an enemy corporation, honest." armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) - siemens_coefficient = 0 + siemens_coefficient = 0.8 /obj/item/clothing/suit/space/syndicate name = "red space suit" @@ -17,7 +17,7 @@ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) - siemens_coefficient = 0 + siemens_coefficient = 0.8 //Green syndicate space suit diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 4e10a8ce630..fdd54d63507 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -8,7 +8,7 @@ min_cold_protection_temperature = ARMOR_MIN_COLD_PROTECITON_TEMPERATURE heat_protection = UPPER_TORSO|LOWER_TORSO max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECITON_TEMPERATURE - siemens_coefficient = 0 + siemens_coefficient = 0.6 /obj/item/clothing/suit/armor/vest @@ -42,6 +42,7 @@ slowdown = 1 armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) flags_inv = HIDEJUMPSUIT + siemens_coefficient = 0.5 /obj/item/clothing/suit/armor/bulletproof @@ -51,7 +52,7 @@ item_state = "armor" blood_overlay_type = "armor" armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0) - + siemens_coefficient = 0.7 /obj/item/clothing/suit/armor/laserproof name = "Ablative Armor Vest" @@ -60,7 +61,7 @@ item_state = "armor_reflec" blood_overlay_type = "armor" armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0) - + siemens_coefficient = 0 /obj/item/clothing/suit/armor/swat name = "swat suit" @@ -77,6 +78,7 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE + siemens_coefficient = 0.5 /obj/item/clothing/suit/armor/swat/officer @@ -151,6 +153,7 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE + siemens_coefficient = 0 /obj/item/clothing/suit/armor/heavy name = "heavy armor" @@ -162,6 +165,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS slowdown = 3 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + siemens_coefficient = 0 /obj/item/clothing/suit/armor/tdome body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 978df443d1e..2dbe3d01fcb 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -7,6 +7,7 @@ flags = FPRINT|TABLEPASS|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES + siemens_coefficient = 0.9 /obj/item/clothing/suit/bio_suit name = "bio suit" @@ -22,6 +23,7 @@ allowed = list(/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/pen,/obj/item/device/flashlight/pen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + siemens_coefficient = 0.9 //Standard biosuit, orange stripe diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 0029cca6949..039905dd0c5 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -16,6 +16,7 @@ blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO|LOWER_TORSO allowed = list (/obj/item/weapon/gun/energy/laser/bluetag) + siemens_coefficient = 3.0 /obj/item/clothing/suit/redtag name = "red laser tag armour" @@ -25,6 +26,7 @@ blood_overlay_type = "armor" body_parts_covered = UPPER_TORSO|LOWER_TORSO allowed = list (/obj/item/weapon/gun/energy/laser/redtag) + siemens_coefficient = 3.0 /* * Costume @@ -145,6 +147,7 @@ item_state = "chickensuit" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET flags_inv = HIDESHOES|HIDEJUMPSUIT + siemens_coefficient = 2.0 /obj/item/clothing/suit/monkeysuit @@ -154,6 +157,7 @@ item_state = "monkeysuit" body_parts_covered = UPPER_TORSO|ARMS|LOWER_TORSO|LEGS|FEET|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT + siemens_coefficient = 2.0 /obj/item/clothing/suit/holidaypriest @@ -269,30 +273,35 @@ desc = "A rather skimpy pink swimsuit." icon_state = "stripper_p_under" color = "stripper_p" + siemens_coefficient = 1 /obj/item/clothing/under/stripper/stripper_green name = "green swimsuit" desc = "A rather skimpy green swimsuit." icon_state = "stripper_g_under" color = "stripper_g" + siemens_coefficient = 1 /obj/item/clothing/suit/stripper/stripper_pink name = "pink skimpy dress" desc = "A rather skimpy pink dress." icon_state = "stripper_p_over" item_state = "stripper_p" + siemens_coefficient = 1 /obj/item/clothing/suit/stripper/stripper_green name = "green skimpy dress" desc = "A rather skimpy green dress." icon_state = "stripper_g_over" item_state = "stripper_g" + siemens_coefficient = 1 /obj/item/clothing/under/stripper/mankini name = "the mankini" desc = "No honest man would wear this abomination" icon_state = "mankini" color = "mankini" + siemens_coefficient = 1 /obj/item/clothing/suit/xenos name = "xenos suit" @@ -301,7 +310,7 @@ item_state = "xenos_helm" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - + siemens_coefficient = 2.0 //swimsuit /obj/item/clothing/under/swimsuit/black @@ -309,27 +318,32 @@ desc = "An oldfashioned black swimsuit." icon_state = "swim_black" color = "swim_black" + siemens_coefficient = 1 /obj/item/clothing/under/swimsuit/blue name = "blue swimsuit" desc = "An oldfashioned blue swimsuit." icon_state = "swim_blue" color = "swim_blue" + siemens_coefficient = 1 /obj/item/clothing/under/swimsuit/purple name = "purple swimsuit" desc = "An oldfashioned purple swimsuit." icon_state = "swim_purp" color = "swim_purp" + siemens_coefficient = 1 /obj/item/clothing/under/swimsuit/green name = "green swimsuit" desc = "An oldfashioned green swimsuit." icon_state = "swim_green" color = "swim_green" + siemens_coefficient = 1 /obj/item/clothing/under/swimsuit/red name = "red swimsuit" desc = "An oldfashioned red swimsuit." icon_state = "swim_red" color = "swim_red" + siemens_coefficient = 1 diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index e67d84fda63..8fa3b506c7b 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -3,11 +3,13 @@ desc = "Strange-looking hat-wear that most certainly belongs to a real magic user." icon_state = "wizard" //Not given any special protective value since the magic robes are full-body protection --NEO + siemens_coefficient = 0.8 /obj/item/clothing/head/wizard/red name = "red wizard hat" desc = "Strange-looking, red, hat-wear that most certainly belongs to a real magic user." icon_state = "redwizard" + siemens_coefficient = 0.8 /obj/item/clothing/head/wizard/fake name = "wizard hat" @@ -18,12 +20,14 @@ name = "Witch Hat" desc = "Strange-looking hat-wear, makes you want to cast fireballs." icon_state = "marisa" + siemens_coefficient = 0.8 /obj/item/clothing/head/wizard/magus name = "Magus Helm" desc = "A mysterious helmet that hums with an unearthly power" icon_state = "magus" item_state = "magus" + siemens_coefficient = 0.8 /obj/item/clothing/suit/wizrobe @@ -37,7 +41,7 @@ armor = list(melee = 30, bullet = 20, laser = 20,energy = 20, bomb = 20, bio = 20, rad = 20) allowed = list(/obj/item/weapon/teleportation_scroll) flags_inv = HIDEJUMPSUIT - + siemens_coefficient = 0.8 /obj/item/clothing/suit/wizrobe/red name = "red wizard robe" @@ -72,12 +76,14 @@ item_state = "wizrobe" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + siemens_coefficient = 1.0 /obj/item/clothing/head/wizard/marisa/fake name = "Witch Hat" desc = "Strange-looking hat-wear, makes you want to cast fireballs." icon_state = "marisa" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + siemens_coefficient = 1.0 /obj/item/clothing/suit/wizrobe/marisa/fake name = "Witch Robe" @@ -86,4 +92,5 @@ item_state = "marisarobe" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + siemens_coefficient = 1.0 diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm index 84b5fc213be..5a3f34f5524 100644 --- a/code/modules/clothing/under/chameleon.dm +++ b/code/modules/clothing/under/chameleon.dm @@ -6,7 +6,7 @@ color = "black" desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist." origin_tech = "syndicate=3" - siemens_coefficient = 0 + siemens_coefficient = 0.8 var/list/clothing_choices = list() New() diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index bbc6e492af9..ecec4174ecf 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -16,6 +16,7 @@ color = "warden" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = FPRINT | TABLEPASS + siemens_coefficient = 0.9 /obj/item/clothing/under/rank/security name = "security officer's jumpsuit" @@ -25,6 +26,7 @@ color = "secred" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = FPRINT | TABLEPASS + siemens_coefficient = 0.9 /obj/item/clothing/under/rank/dispatch name = "dispatcher's uniform" @@ -34,6 +36,7 @@ color = "dispatch" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = FPRINT | TABLEPASS + siemens_coefficient = 0.9 /obj/item/clothing/under/rank/security2 name = "security officer's uniform" @@ -43,6 +46,7 @@ color = "redshirt2" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = FPRINT | TABLEPASS + siemens_coefficient = 0.9 /* * Detective @@ -55,6 +59,7 @@ color = "detective" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = FPRINT | TABLEPASS + siemens_coefficient = 0.9 /obj/item/clothing/head/det_hat @@ -63,6 +68,7 @@ icon_state = "detective" allowed = list(/obj/item/weapon/reagent_containers/food/snacks/candy_corn, /obj/item/weapon/pen) armor = list(melee = 50, bullet = 5, laser = 25,energy = 10, bomb = 0, bio = 0, rad = 0) + siemens_coefficient = 0.9 /* * Head of Security @@ -75,7 +81,7 @@ color = "hosred" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = FPRINT | TABLEPASS - siemens_coefficient = 0 + siemens_coefficient = 0.8 /obj/item/clothing/head/helmet/HoS @@ -86,7 +92,7 @@ armor = list(melee = 80, bullet = 60, laser = 50,energy = 10, bomb = 25, bio = 10, rad = 0) flags_inv = 0 flags_inv = HIDEEARS - siemens_coefficient = 0 + siemens_coefficient = 0.8 /obj/item/clothing/suit/armor/hos @@ -97,7 +103,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS armor = list(melee = 65, bullet = 30, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0) flags_inv = HIDEJUMPSUIT - siemens_coefficient = 0 + siemens_coefficient = 0.6 /obj/item/clothing/head/helmet/HoS/dermal @@ -105,6 +111,7 @@ desc = "You're not quite sure how you manage to take it on and off, but it implants nicely in your head." icon_state = "dermal" item_state = "dermal" + siemens_coefficient = 0.6 //Jensen cosplay gear /obj/item/clothing/under/rank/head_of_security/jensen @@ -113,7 +120,7 @@ icon_state = "jensen" item_state = "jensen" color = "jensen" - siemens_coefficient = 0 + siemens_coefficient = 0.6 /obj/item/clothing/suit/armor/hos/jensen name = "armored trenchcoat" @@ -121,4 +128,4 @@ icon_state = "jensencoat" item_state = "jensencoat" flags_inv = 0 - siemens_coefficient = 0 \ No newline at end of file + siemens_coefficient = 0.6 \ No newline at end of file diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index facfc396466..413d90e6743 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -6,7 +6,7 @@ color = "syndicate" has_sensor = 0 armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) - siemens_coefficient = 0 + siemens_coefficient = 0.9 /obj/item/clothing/under/syndicate/combat name = "combat turtleneck" diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 3dd6a74b437..33fe77de033 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -14,16 +14,24 @@ emp_act if(istype(P, /obj/item/projectile/energy/electrode)) var/datum/organ/external/select_area = get_organ(def_zone) // We're checking the outside, buddy! var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, gloves, shoes) // What all are we checking? + // var/deflectchance=90 //Is it a CRITICAL HIT with that taser? for(var/bp in body_parts) //Make an unregulated var to pass around. if(!bp) continue //Does this thing we're shooting even exist? if(bp && istype(bp ,/obj/item/clothing)) // If it exists, and it's clothed var/obj/item/clothing/C = bp // Then call an argument C to be that clothing! if(C.body_parts_covered & select_area.body_part) // Is that body part being targeted covered? + P.agony=P.agony*C.siemens_coefficient + visible_message("\red [src]'s [C.name] absorbs some of the shock from the [P.name]!") + apply_effect(P.agony,AGONY,0) + del P + /* Commenting out new-old taser nerf. if(C.siemens_coefficient == 0) //If so, is that clothing shock proof? - visible_message("\red The [P.name] gets deflected by [src]'s [C.name]!") //DEFLECT! - del P - + if(prob(deflectchance)) + visible_message("\red The [P.name] gets deflected by [src]'s [C.name]!") //DEFLECT! + visible_message("\red Taser hit for [P.damage] damage!") + del P +*/ /* Commenting out old Taser nerf if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor)) if(istype(P, /obj/item/projectile/energy/electrode)) @@ -32,6 +40,7 @@ emp_act return -1 */ // END TASER NERF + if(wear_suit && istype(wear_suit, /obj/item/clothing/suit/armor/laserproof)) if(istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) var/reflectchance = 40 - round(P.damage/3) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index f38066d49a6..9ce3332540b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -944,19 +944,21 @@ del a if(halloss > 100) - src << "You're too tired to keep going..." + src << "You're in too much pain to keep going..." for(var/mob/O in oviewers(src, null)) - O.show_message("[src] slumps to the ground panting, too weak to continue fighting.", 1) - Paralyse(3) + O.show_message("[src] slumps to the ground, too weak to continue fighting.", 1) + Paralyse(10) setHalLoss(99) if(paralysis) AdjustParalysis(-1) blinded = 1 stat = UNCONSCIOUS + if(halloss > 0) + adjustHalLoss(-6) else if(sleeping) handle_dreams() - adjustHalLoss(-5) + adjustHalLoss(-6) if (mind) if((mind.active && client != null) || immune_to_ssd) //This also checks whether a client is connected, if not, sleep is not reduced. sleeping = max(sleeping-1, 0) @@ -965,9 +967,14 @@ if( prob(10) && health && !hal_crit ) spawn(0) emote("snore") + else if(resting) + if(halloss > 0) + adjustHalLoss(-6) //CONSCIOUS else stat = CONSCIOUS + if(halloss > 0) + adjustHalLoss(-2) //Eyes if(sdisabilities & BLIND) //disabled-blind, doesn't get better on its own diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 2d98dd45d3a..cdc62e6602c 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -49,6 +49,8 @@ Weaken(effect/(blocked+1)) if(PARALYZE) Paralyse(effect/(blocked+1)) + if(AGONY) + halloss += effect // Useful for objects that cause "subdual" damage. PAIN! if(IRRADIATE) radiation += max((((effect - (effect*(getarmor(null, "rad")/100))))/(blocked+1)),0)//Rads auto check armor if(STUTTER) @@ -62,7 +64,7 @@ return 1 -/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0) +/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/agony = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0) if(blocked >= 2) return 0 if(stun) apply_effect(stun, STUN, blocked) if(weaken) apply_effect(weaken, WEAKEN, blocked) @@ -71,4 +73,5 @@ if(stutter) apply_effect(stutter, STUTTER, blocked) if(eyeblur) apply_effect(eyeblur, EYE_BLUR, blocked) if(drowsy) apply_effect(drowsy, DROWSY, blocked) + if(agony) apply_effect(agony, AGONY, blocked) return 1 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 3377baf8f2d..985c27a1de5 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -168,7 +168,7 @@ playsound(user, fire_sound, 50, 1) in_chamber.on_hit(M) if (!in_chamber.nodamage) - user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]") + user.apply_damage(in_chamber.damage*100, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]") else user << "You feel dumb for trying this..." del(in_chamber) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 9fa70809b58..b48338fe352 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -48,6 +48,7 @@ var/stutter = 0 var/eyeblur = 0 var/drowsy = 0 + var/agony = 0 proc/on_hit(var/atom/target, var/blocked = 0) @@ -55,7 +56,7 @@ if(!isliving(target)) return 0 if(isanimal(target)) return 0 var/mob/living/L = target - L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, blocked) + L.apply_effects(stun, weaken, paralyze, agony, irradiate, stutter, eyeblur, drowsy, blocked) // add in AGONY! return 1 proc/check_fire(var/mob/living/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. @@ -114,6 +115,7 @@ msg_admin_attack("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src]") //BS12 EDIT ALG spawn(0) + if(A) if (!forcedodge) forcedodge = A.bullet_act(src, def_zone) // searches for return value @@ -125,7 +127,6 @@ loc = A.loc permutated.Add(A) return 0 - if(istype(A,/turf)) for(var/obj/O in A) O.bullet_act(src) diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 02456cc1ea2..b8789eca59a 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -9,14 +9,15 @@ /obj/item/projectile/energy/electrode name = "electrode" icon_state = "spark" - /* - Old taser bit - nodamage = 0 + nodamage = 1 + /* stun = 10 weaken = 10 stutter = 10 */ - damage = 40 + agony = 40 damage_type = HALLOSS + //Damage will be handled on the MOB side, to prevent window shattering. diff --git a/code/setup.dm b/code/setup.dm index fcfb61e9195..6a668580615 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -427,6 +427,7 @@ var/list/global_mutations = list() // list of hidden mutation things #define WEAKEN "weaken" #define PARALYZE "paralize" #define IRRADIATE "irradiate" +#define AGONY "agony" // Added in PAIN! #define STUTTER "stutter" #define EYE_BLUR "eye_blur" #define DROWSY "drowsy" diff --git a/icons/mob/mask.dmi b/icons/mob/mask.dmi index 4d681afb9f9fc8593a4534c7507f41fbd915a6d9..4b002767f334a37764981bf10ac08221d2f9eec6 100644 GIT binary patch delta 5067 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 From 3eb7cf731536887d7434c50554c7591596e5f2f0 Mon Sep 17 00:00:00 2001 From: MisterBook Date: Wed, 5 Jun 2013 12:40:12 -0500 Subject: [PATCH 02/13] Pull from BEF --- baystation12.dme | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index 090daa54fab..bd0d1a256d3 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -53,9 +53,6 @@ #define FILE_DIR "sound/voice" #define FILE_DIR "sound/voice/Serithi" #define FILE_DIR "sound/weapons" -#define FILE_DIR "tools" -#define FILE_DIR "tools/AddToChangelog" -#define FILE_DIR "tools/AddToChangelog/AddToChangelog" // END_FILE_DIR // BEGIN_PREFERENCES #define DEBUG @@ -258,6 +255,8 @@ #include "code\game\gamemodes\nuclear\pinpointer.dm" #include "code\game\gamemodes\revolution\revolution.dm" #include "code\game\gamemodes\revolution\rp_revolution.dm" +#include "code\game\gamemodes\sandbox\h_sandbox.dm" +#include "code\game\gamemodes\sandbox\sandbox.dm" #include "code\game\gamemodes\traitor\traitor.dm" #include "code\game\gamemodes\wizard\rightandwrong.dm" #include "code\game\gamemodes\wizard\soulstone.dm" @@ -493,7 +492,6 @@ #include "code\game\objects\items\devices\transfer_valve.dm" #include "code\game\objects\items\devices\uplinks.dm" #include "code\game\objects\items\devices\violin.dm" -#include "code\game\objects\items\devices\whistle.dm" #include "code\game\objects\items\devices\PDA\cart.dm" #include "code\game\objects\items\devices\PDA\chatroom.dm" #include "code\game\objects\items\devices\PDA\PDA.dm" From eab6f4fc44c7c909a614c991f7085499829376c5 Mon Sep 17 00:00:00 2001 From: MisterBook Date: Wed, 5 Jun 2013 19:37:29 -0500 Subject: [PATCH 03/13] Taser fix v.3.2 Now accounts for multiple layers of armor. I've also commented out Vox stuff, while Zuhayr fixes it. Because, no compile. I also fixed whistle.dm --- baystation12.dme | 1 + code/datums/datacore.dm | 2 ++ .../structures/crates_lockers/closets/secure/security.dm | 2 +- code/modules/mob/living/carbon/human/human_defense.dm | 4 ++-- code/modules/mob/living/carbon/human/update_icons.dm | 2 ++ code/modules/mob/new_player/preferences_setup.dm | 2 ++ code/modules/organs/organ_external.dm | 2 ++ 7 files changed, 12 insertions(+), 3 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index bd0d1a256d3..0ea75da44d9 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -492,6 +492,7 @@ #include "code\game\objects\items\devices\transfer_valve.dm" #include "code\game\objects\items\devices\uplinks.dm" #include "code\game\objects\items\devices\violin.dm" +#include "code\game\objects\items\devices\whistle.dm" #include "code\game\objects\items\devices\PDA\cart.dm" #include "code\game\objects\items\devices\PDA\chatroom.dm" #include "code\game\objects\items\devices\PDA\PDA.dm" diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index e2a9e1e1bfe..37797884f17 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -122,8 +122,10 @@ proc/get_id_photo(var/mob/living/carbon/human/H) icobase = 'icons/mob/human_races/r_lizard.dmi' if("Skrell") icobase = 'icons/mob/human_races/r_skrell.dmi' + /* if("Vox") icobase = 'icons/mob/human_races/r_vox.dmi' + */ else icobase = 'icons/mob/human_races/r_human.dmi' diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 413333f397c..b19a4cdf724 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -186,7 +186,7 @@ new /obj/item/weapon/gun/energy/taser(src) new /obj/item/clothing/glasses/sunglasses/sechud(src) new /obj/item/taperoll/police(src) - new /obj/item/device/hailer + new /obj/item/device/hailer(src) return diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index ee346ebd8fb..79be30e4c40 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -23,8 +23,8 @@ emp_act if(C.body_parts_covered & select_area.body_part) // Is that body part being targeted covered? P.agony=P.agony*C.siemens_coefficient visible_message("\red [src]'s [C.name] absorbs some of the shock from the [P.name]!") - apply_effect(P.agony,AGONY,0) - del P + apply_effect(P.agony,AGONY,0) + del P /* Commenting out new-old taser nerf. if(C.siemens_coefficient == 0) //If so, is that clothing shock proof? if(prob(deflectchance)) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index c506b35250d..6264e381ac2 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -444,9 +444,11 @@ proc/get_damage_icon_part(damage_state, body_part) if("skrell") race_icon = 'icons/mob/human_races/r_skrell.dmi' deform_icon = 'icons/mob/human_races/r_def_skrell.dmi' + /* if("vox") race_icon = 'icons/mob/human_races/r_vox.dmi' deform_icon = 'icons/mob/human_races/r_def_vox.dmi' + */ else race_icon = 'icons/mob/human_races/r_human.dmi' deform_icon = 'icons/mob/human_races/r_def_human.dmi' diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index f1cf54af153..0bc7879292a 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -144,8 +144,10 @@ datum/preferences icobase = 'icons/mob/human_races/r_lizard.dmi' if("Skrell") icobase = 'icons/mob/human_races/r_skrell.dmi' + /* if("Vox") icobase = 'icons/mob/human_races/r_vox.dmi' + */ else icobase = 'icons/mob/human_races/r_human.dmi' preview_icon = new /icon(icobase, "torso_[g]") diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 4d0e8bfac35..2c3778d79f0 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -740,8 +740,10 @@ obj/item/weapon/organ/New(loc, mob/living/carbon/human/H) base = new('icons/mob/human_races/r_lizard.dmi') if("skrell") base = new('icons/mob/human_races/r_skrell.dmi') + /* if("vox") base = new('icons/mob/human_races/r_vox.dmi') + */ else base = new('icons/mob/human_races/r_human.dmi') if(base) From 83aa5c3eefbbd3e1f14d57b7b5c62c22912981d3 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 6 Jun 2013 10:42:23 +0930 Subject: [PATCH 04/13] Vox icons. --- icons/mob/human_races/r_def_vox.dmi | Bin 0 -> 2013 bytes icons/mob/human_races/r_vox.dmi | Bin 0 -> 2013 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 icons/mob/human_races/r_def_vox.dmi create mode 100644 icons/mob/human_races/r_vox.dmi diff --git a/icons/mob/human_races/r_def_vox.dmi b/icons/mob/human_races/r_def_vox.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4dad2129d5081210cc8b17f09b135559b390776b GIT binary patch literal 2013 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 Date: Thu, 6 Jun 2013 17:04:49 -0400 Subject: [PATCH 05/13] Adds emergency response team verb * Adds a verb for (b)admins in "Special Verbs" that lets you spawn in an emergency response team a la deathsquid-button * Spawned-in ERTs can choose their own ridiculous name * Command alerts, because everyone loves those --- baystation12.dme | 1 + code/WorkInProgress/kilakk/responseteam.dm | 186 +++++++++++++++++++++ code/modules/admin/admin_verbs.dm | 3 +- 3 files changed, 189 insertions(+), 1 deletion(-) create mode 100644 code/WorkInProgress/kilakk/responseteam.dm diff --git a/baystation12.dme b/baystation12.dme index 0ea75da44d9..c11959342ae 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1297,6 +1297,7 @@ #include "code\WorkInProgress\Cael_Aislinn\Supermatter\ZeroPointLaser.dm" #include "code\WorkInProgress\Chinsky\ashtray.dm" #include "code\WorkInProgress\Cib\MedicalSideEffects.dm" +#include "code\WorkInProgress\kilakk\responseteam.dm" #include "code\WorkInProgress\Mini\ATM.dm" #include "code\WorkInProgress\Mini\atmos_control.dm" #include "code\WorkInProgress\Ported\policetape.dm" diff --git a/code/WorkInProgress/kilakk/responseteam.dm b/code/WorkInProgress/kilakk/responseteam.dm new file mode 100644 index 00000000000..dd77afb54ee --- /dev/null +++ b/code/WorkInProgress/kilakk/responseteam.dm @@ -0,0 +1,186 @@ +// emergency response teams +// work in progress + +var/const/members_possible = 5 +var/sent_emergency_team = 0 + +/client/proc/response_team() + set name = "Dispatch Emergency Response Team" + set category = "Special Verbs" + set desc = "Send an emergency response team to the station" + + if(!holder) + usr << "\red Only administrators may use this command." + return + if(!ticker) + usr << "\red The game hasn't started yet!" + return + if(ticker.current_state == GAME_STATE_PREGAME) + usr << "\red The round hasn't started yet!" + return + if(sent_emergency_team == 1) + usr << "\red Central Command has already dispatched an emergency response team!" + return + if(alert("Do you want to dispatch an Emergency Response Team?",,"Yes","No") != "Yes") + return + if(get_security_level() != "red") // Allow admins to reconsider if the alert level isn't Red + switch(alert("The station has not entered code red recently. Do you still want to dispatch a response team?",,"Yes","No")) + if("No") + return + + var/situation = null + while(!situation) + situation = copytext(sanitize(input(src, "Please specify the mission the emergency response team will undertake.", "Specify Mission", "")),1,MAX_MESSAGE_LEN) + if(!situation) + if(alert("You haven't specified a mission. Exit the setup process?",,"No","Yes")=="Yes") + return + + if(sent_emergency_team) + usr << "\red Looks like somebody beat you to it!" + return + + sent_emergency_team = 1 + message_admins("[key_name_admin(usr)] has dispatched an Emergency Response Team.", 1) + log_admin("[key_name(usr)] used Dispatch Response Team.") + + var/member_number = members_possible + var/leader_selected = 0 + + // Shamelessly stolen nuke code + var/nuke_code + var/temp_code + for(var/obj/machinery/nuclearbomb/N in world) + temp_code = text2num(N.r_code) + if(temp_code) + nuke_code = N.r_code + break + + // Time to pick people! + var/list/candidates = list() // ghosts who can be picked + var/list/members = list() // ghosts who have been picked + for(var/mob/dead/observer/G in player_list) + if(!G.client.holder && !G.client.is_afk()) + if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) + candidates += G.key + for(var/i=members_possible,(i>0&&candidates.len), i--) + var/candidate = input("Choose characters to spawn as response team members. This will go on until there are no more ghosts to pick from or until all slots are full.", "Active Players") as null|anything in candidates + candidates -= candidate + members += candidate + + command_alert("Sensors indicate that [station_name()] has entered Code Red and is in need of assistance. We will prepare and dispatch an emergency response team to deal with the situation.", "NMV Icarus Command") + + for(var/obj/effect/landmark/L in world) + if(L.name == "Response Team") + leader_selected = member_number == 1?1:0 // The last person selected will be the leader + + var/mob/living/carbon/human/new_member = create_response_team(L, leader_selected) + + new_member.age = !leader_selected ? rand(23,35) : rand(35,45) + + if(members.len) + new_member.key = pick(members) + members -= new_member.key + + if(!new_member.key) // It works ok? sort of + del(new_member) + break + + switch(alert(new_member, "You are an Emergency Response Team member! Are you a boy or a girl?",,"Male","Female")) + if("Male") + new_member.gender = MALE + if("Female") + new_member.gender = FEMALE + + var/new_name = input(new_member, "...Erm, what was your name again?", "Choose your name") as text + + if(!new_name) + new_member.real_name = "Agent [pick("Red","Yellow","Orange","Silver","Gold", "Pink", "Purple", "Rainbow")]" // Choose a "random" agent name + new_member.name = usr.real_name + else + new_member.real_name = new_name + new_member.name = new_name + + new_member.dna.ready_dna(new_member) + updateappearance(new_member, new_member.dna.uni_identity) // This is supposed to make you look like a girl if you happened to choose "female". Dunno if there's a better way to do it? + + new_member.mind_initialize() + new_member.mind.assigned_role = "Emergency Response Team" + new_member.mind.special_role = "Emergency Response Team" + ticker.mode.traitors += new_member.mind // ERTs will show up at the end of the round on the "traitor" list + + new_member.mind.store_memory("Mission Parameters: \red [situation].") + + if(leader_selected) + new_member.mind.store_memory("Nuclear Authentication Code: \red [nuke_code]") + + new_member << "\blue You are the Emergency Response Team[!leader_selected?"!":" Leader!"] \nAs a response team [!leader_selected?"member":"leader"] you answer directly to [!leader_selected?"your team leader.":"Central Command."] \nYou have been deployed by NanoTrasen Central Command in Tau Ceti to resolve a Code Red alert aboard [station_name()], and have been provided with the following instructions and information regarding your mission: \red [situation]" + + if(leader_selected) + new_member << "\red The Nuclear Authentication Code is: [nuke_code]. You are instructed not to detonate the nuclear device aboard [station_name()] unless absolutely necessary." + + new_member.equip_response_team(leader_selected) // Start equipping them + + member_number-- + return 1 + +// Mob creation +/client/proc/create_response_team(obj/spawn_location, leader_selected = 0) + var/mob/living/carbon/human/new_member = new(spawn_location.loc) + + return new_member +/* // Couldn't how to figure out how to make fancy do-it-yourself input boxes with all this stuff down + new_member.age = !leader_selected ? rand(23,35) : rand(35,45) + new_member.dna.ready_dna(new_member) + + // Minds + new_member.mind_initialize() + new_member.mind.assigned_role = "Emergency Response Team" + new_member.mind.special_role = "Emergency Response Team" +// ticker.mode.traitors += new_member.mind + + return new_member*/ + +// Equip mob +/mob/living/carbon/human/proc/equip_response_team(leader_selected = 0) + + // Headset + equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(src), slot_ears) + + // Uniform + equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(src), slot_w_uniform) + equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(src), slot_shoes) + equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves) + equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(src), slot_belt) + + // Glasses + equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(src), slot_glasses) + + // Backpack + equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(src), slot_back) + + // Put stuff into their backpacks + equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(src), slot_in_backpack) + equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid(src), slot_in_backpack) // Not sure about this + + // Loyalty implants + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(src) + L.imp_in = src + L.implanted = 1 + + // ID cards + var/obj/item/weapon/card/id/E = new(src) + E.name = "[real_name]'s ID Card (Emergency Response Team)" + E.icon_state = "centcom" + E.access = get_all_accesses() // ERTs can go everywhere on the station + if(leader_selected) + E.name = "[real_name]'s ID Card (Emergency Response Team Leader)" + E.access += get_all_centcom_access() + E.assignment = "Emergency Response Team Leader" + else + E.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage) + E.assignment = "Emergency Response Team" + E.registered_name = real_name + equip_to_slot_or_del(E, slot_wear_id) + + return 1 + diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 62b8b84324e..c8ff992b155 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -66,7 +66,8 @@ var/list/admin_verbs_admin = list( /client/proc/toggleattacklogs, /client/proc/toggledebuglogs, /datum/admins/proc/show_skills, - /client/proc/check_customitem_activity + /client/proc/check_customitem_activity, + /client/proc/response_team ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, From 386694376917059c08f66c9badb792195cf253ec Mon Sep 17 00:00:00 2001 From: Kilakk Date: Thu, 6 Jun 2013 17:05:07 -0400 Subject: [PATCH 06/13] Adds the "Response Team" landmark to the ERT room --- maps/tgstation.2.1.0.0.1.dmm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/maps/tgstation.2.1.0.0.1.dmm b/maps/tgstation.2.1.0.0.1.dmm index a9fcddce2ee..30d69bf1239 100644 --- a/maps/tgstation.2.1.0.0.1.dmm +++ b/maps/tgstation.2.1.0.0.1.dmm @@ -7217,7 +7217,7 @@ "cIO" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "cIP" = (/obj/machinery/computer/pod{id = "NTrasen"; name = "Hull Door Control"},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed) "cIQ" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/secure/briefcase,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) -"cIR" = (/turf/unsimulated/floor{tag = "icon-yellow (NORTHWEST)"; icon_state = "yellow"; dir = 9},/area/centcom/control) +"cIR" = (/obj/effect/landmark{name = "Response Team"; tag = "Response Team"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control) "cIS" = (/turf/unsimulated/floor{tag = "icon-yellow (NORTHEAST)"; icon_state = "yellow"; dir = 5},/area/centcom/control) "cIT" = (/turf/unsimulated/floor{tag = "icon-whitehall (NORTHWEST)"; icon_state = "whitehall"; dir = 9},/area/centcom/control) "cIU" = (/turf/unsimulated/floor{tag = "icon-whitehall (NORTHEAST)"; icon_state = "whitehall"; dir = 5},/area/centcom/control) @@ -10011,6 +10011,7 @@ "dKA" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/mine/eva) "dKB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_outer"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor/plating,/area/mine/living_quarters) "dKC" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/production) +"dKD" = (/obj/effect/landmark{name = "Response Team"; tag = "Response Team"},/turf/unsimulated/floor{tag = "icon-yellow (NORTHWEST)"; icon_state = "yellow"; dir = 9},/area/centcom/control) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10416,10 +10417,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactjctjctjctjctjctjctjctjctjctjctjctjctjcFycFycFycFycFycFycFycFycFycFycFycFycFycIhcIicIicIhaaaaaaaaacHzcIjcHZcHZcHZcHZcHzcHFcEOcHGcEicEJcEJcGAcEAcEAcEAcEAcEAcEAcEAcEAcEAcGJcEJcEJcEiaaaaaaaaaaaaaaacEicIkcHMcEicIccIlcIccFccHOcHOcHOcHOcHOcHOcEicEOcIecFecFecIfcEOcIgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacImcIncIncIncIncIocIocIncIncIpaaacHzcHZcHZcHZcHZcIqcHzcIrcEOcIscEicEicItcEicEicEicEicEicIucEicEicEicEicEicEicEicEiaaaaaaaaaaaaaaacEicIvcHMcEicFCcFccFccFccHOaaaaaaaaaaaaaaacEicEOcIecFecFecIfcEOcIgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIzcIAcIzcIzcIBcICcIncIpcHzcHZcIDcIEcIFcIGcHzcIHcEOcEOcEOcEOcEOcEOcIIcEicEicIJcIJcIJcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicEicEicEicEicEicEicEicHOaaaaaaaaaaaaaaacIKcEOcIecFecFecIfcEOcIgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIzcIzcIzcIzcIzcIzcILcIMcHzcHZcINcIOcIPcIOcHzcIQcEOcIRcIScITcIUcEOcIVcEicEicEicIWcEicEicEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcEOcEOcIYcIYcEOcEOcIXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIZcIZcIZcIZcIZcIZcIncJacHzcHZcHZcHZcHZcHZcHzcJbcEOcJccJdcJecJfcEOcJgcEicEzcGJcEJcGAcJhcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJicEOcEOcEOcEOcJjcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJkcIncIncIncIncIncIncIncIncJaaaacHzcHzcHzcHzcHzcHzcHzcJlcEOcJmcJncJocJpcEOcJqcEicJrcJscJtcJscJucEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicEicEicEicEicEicEicEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJvcEOcJwcJxcJycJzcEOcJAcJBcEIcJCcEJcJDcFScHOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJEcJFcJGcJGcJGcJHcJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIzcIzcIzcIzcIzcIzcILcIMcHzcHZcINcIOcIPcIOcHzcIQcIRdKDcIScITcIUcEOcIVcEicEicEicIWcEicEicEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcEOcEOcIYcIYcEOcEOcIXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIwcIxcIycIZcIZcIZcIZcIZcIZcIncJacHzcHZcHZcHZcHZcHZcHzcJbcIRcJccJdcJecJfcEOcJgcEicEzcGJcEJcGAcJhcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJicEOcEOcEOcEOcJjcEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJkcIncIncIncIncIncIncIncIncJaaaacHzcHzcHzcHzcHzcHzcHzcJlcIRcJmcJncJocJpcEOcJqcEicJrcJscJtcJscJucEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicEicEicEicEicEicEicEiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJvcIRcJwcJxcJycJzcEOcJAcJBcEIcJCcEJcJDcFScHOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJEcJFcJGcJGcJGcJHcJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicEOcEOcEOcEOcEOcEOcEOcJJcJBcETcHecGUcHecJKcHOaaaaaaaaaaaaaaaaaaaaaaaaaaacJEcJLcJMcJNcJOcJNcJPcJQcJIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEicJRcJScJTcJUcEOcJVcJWcJXcJBcJYcJZcKacJZcKbcHOaaaaaaaaaaaaaaaaaaaaaaaaaaacKccKdcKecKfcKfcKfcKgcKhcKcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcJBcKicJBcJBcJBcJBcEIcEJcKjcEJcKkcHOcHOcHOaaaaaaaaaaaaaaaaaaaaacKccKlcKecKfcKfcKmcKgcKncKcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From f4441b501901d9aaaaba644f16604fa94f3ec06b Mon Sep 17 00:00:00 2001 From: jack-fractal Date: Thu, 6 Jun 2013 20:46:39 -0400 Subject: [PATCH 07/13] refactoring the Stat function for silicon lifeforms adding messenger functions to cyborgs and refactoring the AI's IM system --- code/game/objects/items/devices/PDA/PDA.dm | 127 +++++++++--------- code/modules/mob/living/silicon/ai/ai.dm | 39 ++---- code/modules/mob/living/silicon/pai/pai.dm | 23 ++-- .../modules/mob/living/silicon/robot/robot.dm | 87 ++++++++---- code/modules/mob/living/silicon/silicon.dm | 49 ++++++- 5 files changed, 198 insertions(+), 127 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 196160a30c1..6c5fcf0a7cb 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -23,7 +23,7 @@ var/global/list/obj/item/device/pda/PDAs = list() //Secondary variables var/scanmode = 0 //1 is medical scanner, 2 is forensics, 3 is reagent scanner. var/fon = 0 //Is the flashlight function on? - var/f_lum = 2 //Luminosity for the flashlight function + var/f_lum = 4 //Luminosity for the flashlight function var/silent = 0 //To beep or not to beep, that is the question var/toff = 0 //If 1, messenger disabled var/tnote = null //Current Texts @@ -183,24 +183,85 @@ var/global/list/obj/item/device/pda/PDAs = list() default_cartridge = /obj/item/weapon/cartridge/medical icon_state = "pda-gene" + // Special AI/pAI PDAs that cannot explode. /obj/item/device/pda/ai icon_state = "NONE" ttone = "data" detonate = 0 + +/obj/item/device/pda/ai/proc/set_name_and_job(newname as text, newjob as text) + owner = newname + ownjob = newjob + name = newname + " (" + ownjob + ")" + + +//AI verb and proc for sending PDA messages. +/obj/item/device/pda/ai/verb/cmd_send_pdamesg() + set category = "AI IM" + set name = "Send Message" + set src in usr + if(usr.stat == 2) + usr << "You can't send PDA messages because you are dead!" + return + var/list/plist = available_pdas() + if (plist) + var/c = input(usr, "Please select a PDA") as null|anything in sortList(plist) + if (!c) // if the user hasn't selected a PDA file we can't send a message + return + var/selected = plist[c] + create_message(usr, selected) + + +/obj/item/device/pda/ai/verb/cmd_toggle_pda_receiver() + set category = "AI IM" + set name = "Toggle Sender/Receiver" + set src in usr + if(usr.stat == 2) + usr << "You can't do that because you are dead!" + return + toff = !toff + usr << "PDA sender/receiver toggled [(toff ? "Off" : "On")]!" + + +/obj/item/device/pda/ai/verb/cmd_toggle_pda_silent() + set category = "AI IM" + set name = "Toggle Ringer" + set src in usr + if(usr.stat == 2) + usr << "You can't do that because you are dead!" + return + silent=!silent + usr << "PDA ringer toggled [(silent ? "Off" : "On")]!" + + +/obj/item/device/pda/ai/verb/cmd_show_message_log() + set category = "AI IM" + set name = "Show Message Log" + set src in usr + if(usr.stat == 2) + usr << "You can't do that because you are dead!" + return + var/HTML = "AI PDA Message Log[tnote]" + usr << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0") + + /obj/item/device/pda/ai/can_use() return 1 + /obj/item/device/pda/ai/attack_self(mob/user as mob) if ((honkamt > 0) && (prob(60)))//For clown virus. honkamt-- playsound(loc, 'sound/items/bikehorn.ogg', 30, 1) return + /obj/item/device/pda/ai/pai ttone = "assist" + /* * The Actual PDA */ @@ -832,6 +893,7 @@ var/global/list/obj/item/device/pda/PDAs = list() else usr << "You cannot do this while restrained." + /obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use. if(choice == 1) if (id) @@ -1071,21 +1133,12 @@ var/global/list/obj/item/device/pda/PDAs = list() M.Stun(8) M.Weaken(5) - -//AI verb and proc for sending PDA messages. - -/mob/living/silicon/ai/verb/cmd_send_pdamesg() - set category = "AI Commands" - set name = "PDA - Send Message" +/obj/item/device/pda/proc/available_pdas() var/list/names = list() var/list/plist = list() var/list/namecounts = list() - if(usr.stat == 2) - usr << "You can't send PDA messages because you are dead!" - return - - if(src.aiPDA.toff) + if (toff) usr << "Turn on your receiver in order to send messages." return @@ -1098,8 +1151,6 @@ var/global/list/obj/item/device/pda/PDAs = list() continue else if (P.toff) continue - else if (P == src.aiPDA) - continue var/name = P.owner if (name in names) @@ -1110,52 +1161,8 @@ var/global/list/obj/item/device/pda/PDAs = list() namecounts[name] = 1 plist[text("[name]")] = P - - var/c = input(usr, "Please select a PDA") as null|anything in sortList(plist) - - if (!c) - return - - var/selected = plist[c] - src.aiPDA.create_message(src, selected) - - -/mob/living/silicon/ai/verb/cmd_toggle_pda_receiver() - set category = "AI Commands" - set name = "PDA - Toggle Sender/Receiver" - if(usr.stat == 2) - usr << "You can't do that because you are dead!" - return - if(!isnull(aiPDA)) - aiPDA.toff = !aiPDA.toff - usr << "PDA sender/receiver toggled [(aiPDA.toff ? "Off" : "On")]!" - else - usr << "You do not have a PDA. You should make an issue report about this." - -/mob/living/silicon/ai/verb/cmd_toggle_pda_silent() - set category = "AI Commands" - set name = "PDA - Toggle Ringer" - if(usr.stat == 2) - usr << "You can't do that because you are dead!" - return - if(!isnull(aiPDA)) - //0 - aiPDA.silent = !aiPDA.silent - usr << "PDA ringer toggled [(aiPDA.silent ? "Off" : "On")]!" - else - usr << "You do not have a PDA. You should make an issue report about this." - -/mob/living/silicon/ai/verb/cmd_show_message_log() - set category = "AI Commands" - set name = "PDA - Show Message Log" - if(usr.stat == 2) - usr << "You can't do that because you are dead!" - return - if(!isnull(aiPDA)) - var/HTML = "AI PDA Message Log[aiPDA.tnote]" - usr << browse(HTML, "window=log;size=400x444;border=1;can_resize=1;can_close=1;can_minimize=0") - else - usr << "You do not have a PDA. You should make an issue report about this." + return plist + //Some spare PDAs in a box /obj/item/weapon/storage/box/PDAs diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 402e2b84d0d..7f113647f10 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -174,28 +174,17 @@ var/list/ai_list = list() //usr <<"You can only change your display once!" //return -/mob/living/silicon/ai/Stat() - ..() - statpanel("Status") - if (client.statpanel == "Status") - stat(null, "Station Time: [worldtime2text()]") - if(emergency_shuttle.online && emergency_shuttle.location < 2) - var/timeleft = emergency_shuttle.timeleft() - if (timeleft) - stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") - if(ticker.mode.name == "AI malfunction") - var/datum/game_mode/malfunction/malf = ticker.mode - for (var/datum/mind/malfai in malf.malf_ai) - if (mind == malfai) - if (malf.apcs >= 3) - stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malf.apcs/3), 0)] seconds") - - if(!stat) - stat(null, text("System integrity: [(health+100)/2]%")) - else - stat(null, text("Systems nonfunctional")) +// displays the malf_ai information if the AI is the malf +/mob/living/silicon/ai/show_malf_ai() + if(ticker.mode.name == "AI malfunction") + var/datum/game_mode/malfunction/malf = ticker.mode + for (var/datum/mind/malfai in malf.malf_ai) + if (mind == malfai) // are we the evil one? + if (malf.apcs >= 3) + stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malf.apcs/3), 0)] seconds") + /mob/living/silicon/ai/proc/ai_alerts() set category = "AI Commands" set name = "Show Alerts" @@ -232,17 +221,11 @@ var/list/ai_list = list() viewalerts = 1 src << browse(dat, "window=aialerts&can_close=0") +// this verb lets the ai see the stations manifest /mob/living/silicon/ai/proc/ai_roster() set category = "AI Commands" set name = "Show Crew Manifest" - var/dat - - dat += "

Crew Manifest

" - if(data_core) - dat += data_core.get_manifest(0) // make it monochrome - dat += "
" - src << browse(dat, "window=airoster") - onclose(src, "airoster") + show_station_manifest() /mob/living/silicon/ai/proc/ai_call_shuttle() set category = "AI Commands" diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index f1fb58b01a2..863708d18c3 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -75,23 +75,20 @@ ..() usr << browse_rsc('html/paigrid.png') // Go ahead and cache the interface resources as early as possible - + +// this function shows the information about being silenced as a pAI in the Status panel +/mob/living/silicon/pai/proc/show_silenced() + if(src.silence_time) + var/timeleft = round((silence_time - world.timeofday)/10 ,1) + stat(null, "Communications system reboot in -[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") + + /mob/living/silicon/pai/Stat() ..() statpanel("Status") if (src.client.statpanel == "Status") - if(emergency_shuttle.online && emergency_shuttle.location < 2) - var/timeleft = emergency_shuttle.timeleft() - if (timeleft) - stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") - if(src.silence_time) - var/timeleft = round((silence_time - world.timeofday)/10 ,1) - stat(null, "Communications system reboot in -[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") - if(!src.stat) - stat(null, text("System integrity: [(src.health+100)/2]%")) - else - stat(null, text("Systems nonfunctional")) - + show_silenced() + if (proc_holder_list.len)//Generic list for proc_holder objects. for(var/obj/effect/proc_holder/P in proc_holder_list) statpanel("[P.panel]","",P) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 0f68161d442..3d5cb409f12 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -29,6 +29,8 @@ var/obj/item/device/mmi/mmi = null + var/obj/item/device/pda/ai/rbPDA = null + var/opened = 0 var/emagged = 0 var/wiresexposed = 0 @@ -101,6 +103,12 @@ playsound(loc, 'sound/voice/liveagain.ogg', 75, 1) +// setup the PDA and its name +/mob/living/silicon/robot/proc/setup_PDA() + if (!rbPDA) + rbPDA = new/obj/item/device/pda/ai(src) + rbPDA.set_name_and_job(custom_name,braintype) + //If there's an MMI in the robot, have it ejected when the mob goes away. --NEO //Improved /N /mob/living/silicon/robot/Del() @@ -217,6 +225,8 @@ radio.config(channels) updateicon() +/ + /mob/living/silicon/robot/proc/updatename(var/prefix as text) if(istype(mmi, /obj/item/device/mmi/posibrain)) @@ -231,6 +241,9 @@ changed_name = "[(prefix ? "[prefix] " : "")][braintype]-[num2text(ident)]" real_name = changed_name name = real_name + + // if we've changed our name, we also need to update the display name for our PDA + setup_PDA() /mob/living/silicon/robot/verb/Namepick() if(custom_name) @@ -250,6 +263,13 @@ set name = "Show Alerts" robot_alerts() +// this verb lets cyborgs see the stations manifest +/mob/living/silicon/robot/verb/cmd_station_manifest() + set category = "Robot Commands" + set name = "Show Station Manifest" + show_station_manifest() + + /mob/living/silicon/robot/proc/robot_alerts() var/dat = "Current Station Alerts\n" dat += "Close

" @@ -280,35 +300,52 @@ return 1 return 0 +// this function shows information about the malf_ai gameplay type in the status screen +/mob/living/silicon/robot/show_malf_ai() + ..() + if(ticker.mode.name == "AI malfunction") + var/datum/game_mode/malfunction/malf = ticker.mode + for (var/datum/mind/malfai in malf.malf_ai) + if(connected_ai) + if(connected_ai.mind == malfai) + if(malf.apcs >= 3) + stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malf.apcs/3), 0)] seconds") + else if(ticker.mode:malf_mode_declared) + stat(null, "Time left: [max(ticker.mode:AI_win_timeleft/(ticker.mode:apcs/3), 0)]") + return 0 + + +// this function displays jetpack pressure in the stat panel +/mob/living/silicon/robot/proc/show_jetpack_pressure() + // if you have a jetpack, show the internal tank pressure + var/obj/item/weapon/tank/jetpack/current_jetpack = installed_jetpack() + if (current_jetpack) + stat("Internal Atmosphere Info", current_jetpack.name) + stat("Tank Pressure", current_jetpack.air_contents.return_pressure()) + + +// this function returns the robots jetpack, if one is installed +/mob/living/silicon/robot/proc/installed_jetpack() + if(module) + return (locate(/obj/item/weapon/tank/jetpack) in module.modules) + return 0 + + +// this function displays the cyborgs current cell charge in the stat panel +/mob/living/silicon/robot/proc/show_cell_power() + if(cell) + stat(null, text("Charge Left: [cell.charge]/[cell.maxcharge]")) + else + stat(null, text("No Cell Inserted!")) + + +// update the status screen display /mob/living/silicon/robot/Stat() ..() statpanel("Status") if (client.statpanel == "Status") - if(emergency_shuttle.online && emergency_shuttle.location < 2) - var/timeleft = emergency_shuttle.timeleft() - if (timeleft) - stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") - - if(ticker.mode.name == "AI malfunction") - var/datum/game_mode/malfunction/malf = ticker.mode - for (var/datum/mind/malfai in malf.malf_ai) - if(connected_ai) - if(connected_ai.mind == malfai) - if(malf.apcs >= 3) - stat(null, "Time until station control secured: [max(malf.AI_win_timeleft/(malf.apcs/3), 0)] seconds") - else if(ticker.mode:malf_mode_declared) - stat(null, "Time left: [max(ticker.mode:AI_win_timeleft/(ticker.mode:apcs/3), 0)]") - - if(cell) - stat(null, text("Charge Left: [cell.charge]/[cell.maxcharge]")) - else - stat(null, text("No Cell Inserted!")) - - if(module) - internal = locate(/obj/item/weapon/tank/jetpack) in module.modules - if(internal) - stat("Internal Atmosphere Info", internal.name) - stat("Tank Pressure", internal.air_contents.return_pressure()) + show_cell_power() + show_jetpack_pressure() /mob/living/silicon/robot/restrained() return 0 diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 8ef637cd5f6..1f4b0ec4fe0 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -144,4 +144,51 @@ return 0 if (bot.connected_ai == ai) return 1 - return 0 \ No newline at end of file + return 0 + + +// this function shows the health of the pAI in the Status panel +/mob/living/silicon/proc/show_system_integrity() + if(!src.stat) + stat(null, text("System integrity: [(src.health+100)/2]%")) + else + stat(null, text("Systems nonfunctional")) + + +// This is a pure virtual function, it should be overwritten by all subclasses +/mob/living/silicon/proc/show_malf_ai() + return 0 + + +// this function displays the station time in the status panel +/mob/living/silicon/proc/show_station_time() + stat(null, "Station Time: [worldtime2text()]") + + +// this function displays the shuttles ETA in the status panel if the shuttle has been called +/mob/living/silicon/proc/show_emergency_shuttle_eta() + if(emergency_shuttle.online && emergency_shuttle.location < 2) + var/timeleft = emergency_shuttle.timeleft() + if (timeleft) + stat(null, "ETA-[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]") + + +// This adds the basic clock, shuttle recall timer, and malf_ai info to all silicon lifeforms +/mob/living/silicon/Stat() + ..() + statpanel("Status") + if (src.client.statpanel == "Status") + show_station_time() + show_emergency_shuttle_eta() + show_system_integrity() + show_malf_ai() + +// this function displays the stations manifest in a separate window +/mob/living/silicon/proc/show_station_manifest() + var/dat + dat += "

Crew Manifest

" + if(data_core) + dat += data_core.get_manifest(0) // make it monochrome + dat += "
" + src << browse(dat, "window=airoster") + onclose(src, "airoster") \ No newline at end of file From 17b8a2dc8a6a94bff1e08829b9f01d4c679ce7ba Mon Sep 17 00:00:00 2001 From: jack-fractal Date: Thu, 6 Jun 2013 20:50:22 -0400 Subject: [PATCH 08/13] - reverting a change I hadn't accounted for to the luminosity of the PDA's flashlight --- code/game/objects/items/devices/PDA/PDA.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 6c5fcf0a7cb..07f7443fc85 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -23,7 +23,7 @@ var/global/list/obj/item/device/pda/PDAs = list() //Secondary variables var/scanmode = 0 //1 is medical scanner, 2 is forensics, 3 is reagent scanner. var/fon = 0 //Is the flashlight function on? - var/f_lum = 4 //Luminosity for the flashlight function + var/f_lum = 2 //Luminosity for the flashlight function var/silent = 0 //To beep or not to beep, that is the question var/toff = 0 //If 1, messenger disabled var/tnote = null //Current Texts From 8e401489e7dbbc14d6c1c1e781465f6f3196c703 Mon Sep 17 00:00:00 2001 From: MisterBook Date: Thu, 6 Jun 2013 19:50:32 -0500 Subject: [PATCH 09/13] Making sure I don't break anyone else calling apply_effects. --- code/modules/mob/living/damage_procs.dm | 2 +- code/modules/projectiles/projectile.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index cdc62e6602c..78b04c9245d 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -64,7 +64,7 @@ return 1 -/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/agony = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0) +/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0, var/agony = 0) if(blocked >= 2) return 0 if(stun) apply_effect(stun, STUN, blocked) if(weaken) apply_effect(weaken, WEAKEN, blocked) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index b48338fe352..8f2ea173cf8 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -56,7 +56,7 @@ if(!isliving(target)) return 0 if(isanimal(target)) return 0 var/mob/living/L = target - L.apply_effects(stun, weaken, paralyze, agony, irradiate, stutter, eyeblur, drowsy, blocked) // add in AGONY! + L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, agony, blocked) // add in AGONY! return 1 proc/check_fire(var/mob/living/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. From 05083f4f4861c24d7b13e06f2fcdc2803e595767 Mon Sep 17 00:00:00 2001 From: MisterBook Date: Thu, 6 Jun 2013 20:24:25 -0500 Subject: [PATCH 10/13] Creating parent class for swimsuits. --- code/modules/clothing/suits/miscellaneous.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 039905dd0c5..c3f1ce7aa4c 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -312,6 +312,8 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT siemens_coefficient = 2.0 //swimsuit +/obj/item/clothing/under/swimsuit/ + siemens_coefficient = 1 /obj/item/clothing/under/swimsuit/black name = "black swimsuit" From faf5b86e49487180e52913e8fb816139bdd6f601 Mon Sep 17 00:00:00 2001 From: Kilakk Date: Thu, 6 Jun 2013 23:29:15 -0400 Subject: [PATCH 11/13] Changed the way ERTs are selected * Ghosts get a pop-up thingy that asks them if they want to be considered * Ghosts that're antag-banned and/or jobbanned from security officer are exempt * 30 second timer because timers are !!FUN!! --- code/WorkInProgress/kilakk/responseteam.dm | 55 +++++++++++++--------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/code/WorkInProgress/kilakk/responseteam.dm b/code/WorkInProgress/kilakk/responseteam.dm index dd77afb54ee..c5b49537c45 100644 --- a/code/WorkInProgress/kilakk/responseteam.dm +++ b/code/WorkInProgress/kilakk/responseteam.dm @@ -55,17 +55,42 @@ var/sent_emergency_team = 0 nuke_code = N.r_code break - // Time to pick people! - var/list/candidates = list() // ghosts who can be picked +/* var/list/candidates = list() // ghosts who can be picked var/list/members = list() // ghosts who have been picked for(var/mob/dead/observer/G in player_list) if(!G.client.holder && !G.client.is_afk()) if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD)) candidates += G.key for(var/i=members_possible,(i>0&&candidates.len), i--) - var/candidate = input("Choose characters to spawn as response team members. This will go on until there are no more ghosts to pick from or until all slots are full.", "Active Players") as null|anything in candidates - candidates -= candidate - members += candidate + var/candidate = input("Choose characters to spawn as response team members. This will go on until there are no more ghosts to pick from or until all slots are full.", "Active Players") as null|anything in candidates */ + + // I tried doing this differently. Ghosts get a pop-up box similar to pAIs and one-click-antag + // Biggest diff here is in how the candidates list is updated + alert(usr, "Active ghosts are currently being given a chance to be considered to join the emergency response team. Please wait about 30 seconds.") // There's probably a better way to do this, with a fancy count-down timer or something + + var/list/candidates = list() + var/list/members = list() + var/time_passed = world.time + + for(var/mob/dead/observer/G in player_list) + if(!jobban_isbanned(G, "Syndicate") || !jobban_isbanned(G, "Emergency Response Team") || !jobban_isbanned(G, "Security Officer")) + spawn(0) + switch(alert(G, "Do you want to be considered for the Emergency Response Team? Please answer in 30 seconds!",,"Yes","No")) + if("Yes") + if((world.time-time_passed)>300) + return + candidates += G.key + if("No") + return + else + return + + sleep(300) + + for(var/i=members_possible,(i>0&&candidates.len), i--) // The rest of the choosing process is just an input with a list of candidates on it + var/chosen = input("Time's up! Choose characters to spawn as reponse team members. This will go on until there are no more ghosts to pick from or until all slots are full.", "Considered Players") as null|anything in candidates + candidates -= chosen + members += chosen command_alert("Sensors indicate that [station_name()] has entered Code Red and is in need of assistance. We will prepare and dispatch an emergency response team to deal with the situation.", "NMV Icarus Command") @@ -101,22 +126,19 @@ var/sent_emergency_team = 0 new_member.name = new_name new_member.dna.ready_dna(new_member) - updateappearance(new_member, new_member.dna.uni_identity) // This is supposed to make you look like a girl if you happened to choose "female". Dunno if there's a better way to do it? + new_member.update_body(1) new_member.mind_initialize() new_member.mind.assigned_role = "Emergency Response Team" new_member.mind.special_role = "Emergency Response Team" ticker.mode.traitors += new_member.mind // ERTs will show up at the end of the round on the "traitor" list + new_member << "\blue You are the Emergency Response Team[!leader_selected?"!":" Leader!"] \nAs a response team [!leader_selected?"member":"leader"] you answer directly to [!leader_selected?"your team leader.":"Central Command."] \nYou have been deployed by NanoTrasen Central Command in Tau Ceti to resolve a Code Red alert aboard [station_name()], and have been provided with the following instructions and information regarding your mission: \red [situation]" new_member.mind.store_memory("Mission Parameters: \red [situation].") - if(leader_selected) - new_member.mind.store_memory("Nuclear Authentication Code: \red [nuke_code]") - - new_member << "\blue You are the Emergency Response Team[!leader_selected?"!":" Leader!"] \nAs a response team [!leader_selected?"member":"leader"] you answer directly to [!leader_selected?"your team leader.":"Central Command."] \nYou have been deployed by NanoTrasen Central Command in Tau Ceti to resolve a Code Red alert aboard [station_name()], and have been provided with the following instructions and information regarding your mission: \red [situation]" - if(leader_selected) new_member << "\red The Nuclear Authentication Code is: [nuke_code]. You are instructed not to detonate the nuclear device aboard [station_name()] unless absolutely necessary." + new_member.mind.store_memory("Nuclear Authentication Code: \red [nuke_code]") new_member.equip_response_team(leader_selected) // Start equipping them @@ -128,17 +150,6 @@ var/sent_emergency_team = 0 var/mob/living/carbon/human/new_member = new(spawn_location.loc) return new_member -/* // Couldn't how to figure out how to make fancy do-it-yourself input boxes with all this stuff down - new_member.age = !leader_selected ? rand(23,35) : rand(35,45) - new_member.dna.ready_dna(new_member) - - // Minds - new_member.mind_initialize() - new_member.mind.assigned_role = "Emergency Response Team" - new_member.mind.special_role = "Emergency Response Team" -// ticker.mode.traitors += new_member.mind - - return new_member*/ // Equip mob /mob/living/carbon/human/proc/equip_response_team(leader_selected = 0) From e05a20ad6fe2cc8d53b8b893910759f65075e7e8 Mon Sep 17 00:00:00 2001 From: MisterBook Date: Fri, 7 Jun 2013 12:31:38 -0500 Subject: [PATCH 12/13] Putting VOX back in. --- code/datums/datacore.dm | 4 ++-- code/modules/mob/living/carbon/human/update_icons.dm | 4 ++-- code/modules/mob/new_player/preferences_setup.dm | 4 ++-- code/modules/organs/organ_external.dm | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 37797884f17..e3f69881daa 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -122,10 +122,10 @@ proc/get_id_photo(var/mob/living/carbon/human/H) icobase = 'icons/mob/human_races/r_lizard.dmi' if("Skrell") icobase = 'icons/mob/human_races/r_skrell.dmi' - /* + if("Vox") icobase = 'icons/mob/human_races/r_vox.dmi' - */ + else icobase = 'icons/mob/human_races/r_human.dmi' diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 6264e381ac2..9d29d317c80 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -444,11 +444,11 @@ proc/get_damage_icon_part(damage_state, body_part) if("skrell") race_icon = 'icons/mob/human_races/r_skrell.dmi' deform_icon = 'icons/mob/human_races/r_def_skrell.dmi' - /* + if("vox") race_icon = 'icons/mob/human_races/r_vox.dmi' deform_icon = 'icons/mob/human_races/r_def_vox.dmi' - */ + else race_icon = 'icons/mob/human_races/r_human.dmi' deform_icon = 'icons/mob/human_races/r_def_human.dmi' diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 0bc7879292a..f7c965d2fdf 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -144,10 +144,10 @@ datum/preferences icobase = 'icons/mob/human_races/r_lizard.dmi' if("Skrell") icobase = 'icons/mob/human_races/r_skrell.dmi' - /* + if("Vox") icobase = 'icons/mob/human_races/r_vox.dmi' - */ + else icobase = 'icons/mob/human_races/r_human.dmi' preview_icon = new /icon(icobase, "torso_[g]") diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 2c3778d79f0..d166dccd38c 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -740,10 +740,10 @@ obj/item/weapon/organ/New(loc, mob/living/carbon/human/H) base = new('icons/mob/human_races/r_lizard.dmi') if("skrell") base = new('icons/mob/human_races/r_skrell.dmi') - /* + if("vox") base = new('icons/mob/human_races/r_vox.dmi') - */ + else base = new('icons/mob/human_races/r_human.dmi') if(base) From 99e2afb6bcf52391b5b6242bce1d3583c8375b23 Mon Sep 17 00:00:00 2001 From: MisterBook Date: Fri, 7 Jun 2013 12:45:02 -0500 Subject: [PATCH 13/13] Response team is unticked? Dunno if it's ready or not, but will not commit while that verb is live. --- baystation12.dme | 1 - code/modules/admin/admin_verbs.dm | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/baystation12.dme b/baystation12.dme index c11959342ae..0ea75da44d9 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1297,7 +1297,6 @@ #include "code\WorkInProgress\Cael_Aislinn\Supermatter\ZeroPointLaser.dm" #include "code\WorkInProgress\Chinsky\ashtray.dm" #include "code\WorkInProgress\Cib\MedicalSideEffects.dm" -#include "code\WorkInProgress\kilakk\responseteam.dm" #include "code\WorkInProgress\Mini\ATM.dm" #include "code\WorkInProgress\Mini\atmos_control.dm" #include "code\WorkInProgress\Ported\policetape.dm" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index c8ff992b155..a9ad1c223b0 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -67,7 +67,9 @@ var/list/admin_verbs_admin = list( /client/proc/toggledebuglogs, /datum/admins/proc/show_skills, /client/proc/check_customitem_activity, + /* Currently unticked. /client/proc/response_team + */ ) var/list/admin_verbs_ban = list( /client/proc/unban_panel,