diff --git a/code/datums/helper_datums/construction_datum.dm b/code/datums/helper_datums/construction_datum.dm index 95d2b612d0..d457c60ade 100644 --- a/code/datums/helper_datums/construction_datum.dm +++ b/code/datums/helper_datums/construction_datum.dm @@ -1,44 +1,50 @@ -#define FORWARD -1 -#define BACKWARD 1 +#define FORWARD 1 +#define BACKWARD -1 + +#define ITEM_DELETE "delete" +#define ITEM_MOVE_INSIDE "move_inside" + /datum/construction var/list/steps var/atom/holder var/result - var/list/steps_desc + var/index = 1 /datum/construction/New(atom) ..() holder = atom if(!holder) //don't want this without a holder qdel(src) - set_desc(steps.len) - return + update_holder(index) -/datum/construction/proc/next_step() - steps.len-- - if(!steps.len) +/datum/construction/proc/on_step() + if(index > steps.len) spawn_result() else - set_desc(steps.len) - return + update_holder(index) -/datum/construction/proc/action(obj/item/I, mob/user) - return +/datum/construction/proc/action(obj/item/I, mob/living/user) + return check_step(I, user) -/datum/construction/proc/check_step(obj/item/I, mob/user) //check last step only - var/valid_step = is_right_key(I) - if(valid_step) - if(custom_action(valid_step, I, user)) - next_step() - return 1 - return 0 +/datum/construction/proc/update_index(diff) + index += diff + on_step() -/datum/construction/proc/is_right_key(obj/item/I) // returns current step num if I is of the right type. - var/list/L = steps[steps.len] +/datum/construction/proc/check_step(obj/item/I, mob/living/user) + var/diff = is_right_key(I) + if(diff && custom_action(I, user, diff)) + update_index(diff) + return TRUE + return FALSE + +/datum/construction/proc/is_right_key(obj/item/I) // returns index step + var/list/L = steps[index] if(check_used_item(I, L["key"])) - return steps.len - return 0 + return FORWARD //to the first step -> forward + else if(check_used_item(I, L["back_key"])) + return BACKWARD //to the last step -> backwards + return FALSE /datum/construction/proc/check_used_item(obj/item/I, key) if(!key) @@ -52,77 +58,47 @@ return FALSE - -/datum/construction/proc/custom_action(step, obj/item/I, user) - return 1 - -/datum/construction/proc/check_all_steps(obj/item/I, mob/user) //check all steps, remove matching one. - for(var/i=1;i<=steps.len;i++) - var/list/L = steps[i] - if(check_used_item(I, L["key"])) - if(custom_action(i, I, user)) - steps[i] = null//stupid byond list from list removal... - listclearnulls(steps) - if(!steps.len) - spawn_result() - return 1 - return 0 - +/datum/construction/proc/custom_action(obj/item/I, mob/living/user, diff) + return TRUE /datum/construction/proc/spawn_result() if(result) - new result(get_turf(holder)) + new result(drop_location()) qdel(holder) - return -/datum/construction/proc/spawn_mecha_result() - if(result) - var/obj/mecha/m = new result(get_turf(holder)) - var/obj/item/oldcell = locate (/obj/item/stock_parts/cell) in m - QDEL_NULL(oldcell) - m.CheckParts(holder.contents) - SSblackbox.record_feedback("tally", "mechas_created", 1, m.name) - QDEL_NULL(holder) +/datum/construction/proc/update_holder(step_index) + var/list/step = steps[step_index] -/datum/construction/proc/set_desc(index as num) - var/list/step = steps[index] - holder.desc = step["desc"] - return + if(step["desc"]) + holder.desc = step["desc"] + + if(step["icon_state"]) + holder.icon_state = step["icon_state"] /datum/construction/proc/drop_location() return holder.drop_location() -/datum/construction/reversible - var/index -/datum/construction/reversible/New(atom) - ..() - index = steps.len - return -/datum/construction/reversible/proc/update_index(diff as num) - index+=diff - if(index==0) - spawn_result() - else - set_desc(index) - return - -/datum/construction/reversible/is_right_key(obj/item/I) // returns index step - var/list/L = steps[index] - if(check_used_item(I, L["key"])) - return FORWARD //to the first step -> forward - else if(check_used_item(I, L["backkey"])) - return BACKWARD //to the last step -> backwards +// Unordered construction. +// Takes a list of part types, to be added in any order, as steps. +// Calls spawn_result() when every type has been added. +/datum/construction/unordered/check_step(obj/item/I, mob/living/user) + for(var/typepath in steps) + if(istype(I, typepath) && custom_action(I, user, typepath)) + steps -= typepath + on_step() + return TRUE return FALSE -/datum/construction/reversible/check_step(obj/item/I, mob/user) - var/diff = is_right_key(I) - if(diff) - if(custom_action(index, diff, I, user)) - update_index(diff) - return 1 - return 0 +/datum/construction/unordered/on_step() + if(!steps.len) + spawn_result() + else + update_holder(steps.len) -/datum/construction/reversible/custom_action(index, diff, obj/item/I, user) - return 1 +/datum/construction/unordered/update_holder(steps_left) + return + +/datum/construction/unordered/custom_action(obj/item/I, mob/living/user, typepath) + return TRUE diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 15504ebab0..d65d28507c 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -95,16 +95,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station . = ..() set_dynamic_lighting() -/area/planet/clown - name = "Clown Planet" - icon_state = "honk" - requires_power = FALSE - -/area/telesciareas - name = "Cosmic Anomaly" - icon_state = "telesci" - requires_power = FALSE - //STATION13 @@ -258,105 +248,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "disposal" /area/maintenance/disposal/incinerator -// /area/maintenance/incinerator name = "Incinerator" icon_state = "disposal" -//Cere / Asteroid Specific - -/area/maintenance/asteroid/aft/science - name = "Aft Maintenance" - icon_state = "amaint" - -/area/maintenance/asteroid/aft/arrivals - name = "Aft Maintenance" - icon_state = "amaint" - -/area/maintenance/asteroid/central - name = "Central Asteroid Maintenance" - icon_state = "maintcentral" - -/area/maintenance/asteroid/disposal - icon_state = "disposal" - -/area/maintenance/asteroid/disposal/north - name = "Northern Disposal" - -/area/maintenance/asteroid/disposal/north/east - name = "North-Eastern Disposal" - -/area/maintenance/asteroid/disposal/north/west - name = "North-Western Disposal" - -/area/maintenance/asteroid/disposal/east - name = "Eastern Disposal" - -/area/maintenance/asteroid/disposal/west - name = "Western Disposal" - -/area/maintenance/asteroid/disposal/west/secondary - name = "Secondary Western Disposal" - -/area/maintenance/asteroid/disposal/south - name = "Southern Disposal" - -/area/maintenance/asteroid/disposal/south/west - name = "South-Western Disposal" - -/area/maintenance/asteroid/disposal/external/east - name = "Eastern External Waste Belt" - -/area/maintenance/asteroid/disposal/external/north - name = "Northern External Waste Belt" - -/area/maintenance/asteroid/disposal/external/southeast - name = "South-Eastern External Waste Belt" - -/area/maintenance/asteroid/disposal/external/southwest - name = "South-Western External Waste Belt" - -/area/maintenance/asteroid/fore/cargo_west - name = "Fore Asteroid Maintenance" - icon_state = "fmaint" - -/area/maintenance/asteroid/fore/cargo_south - name = "Fore Asteroid Maintenance" - icon_state = "fmaint" - -/area/maintenance/asteroid/fore/com_west - name = "Fore Asteroid Maintenance" - icon_state = "fmaint" - -/area/maintenance/asteroid/fore/com_north - name = "Fore Asteroid Maintenance" - icon_state = "fmaint" - -/area/maintenance/asteroid/fore/com_east - name = "Fore Asteroid Maintenance" - icon_state = "fmaint" - -/area/maintenance/asteroid/fore/com_south - name = "Fore Asteroid Maintenance" - icon_state = "fmaint" - -/area/maintenance/asteroid/port/neast - name = "Port Asteroid Maintenance" - icon_state = "pmaint" - -/area/maintenance/asteroid/port/east - name = "Port Asteroid Maintenance" - icon_state = "pmaint" - -/area/maintenance/asteroid/port/west - name = "Port Asteroid Maintenance" - icon_state = "pmaint" - -/area/maintenance/asteroid/starboard - name = "Starboard Asteroid Maintenance" - icon_state = "smaint" - - //Hallway /area/hallway/primary/aft @@ -419,42 +314,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Service Hallway" icon_state = "hall_service" -/area/hallway/secondary/bridges/cargo_ai - name = "Cargo-AI-Command Bridge" - icon_state = "yellow" - -/area/hallway/secondary/bridges/com_engi - name = "Command-Engineering Bridge" - icon_state = "yellow" - -/area/hallway/secondary/bridges/com_serv - name = "Command-Service Bridge" - icon_state = "yellow" - -/area/hallway/secondary/bridges/dock_med - name = "Docking-Medical Bridge" - icon_state = "yellow" - -/area/hallway/secondary/bridges/engi_med - name = "Engineering-Medical Bridge" - icon_state = "yellow" - -/area/hallway/secondary/bridges/med_cargo - name = "Medical-Cargo Bridge" - icon_state = "yellow" - -/area/hallway/secondary/bridges/sci_dock - name = "Science-Docking Bridge" - icon_state = "yellow" - -/area/hallway/secondary/bridges/serv_engi - name = "Service-Engineering Bridge" - icon_state = "yellow" - -/area/hallway/secondary/bridges/serv_sci - name = "Service-Science Bridge" - icon_state = "yellow" - //Command /area/bridge @@ -745,18 +604,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station flags_1 = NONE ambientsounds = ENGINEERING -/area/solar/asteroid/aft - name = "Aft Asteroid Solar" - icon_state = "panelsA" - -/area/solar/asteroid/command - name = "Command Asteroid Solar" - icon_state = "panelsA" - -/area/solar/asteroid/fore - name = "Fore Asteroid Solar" - icon_state = "panelsA" - /area/solar/fore name = "Fore Solar Array" icon_state = "yellow" @@ -804,18 +651,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Solar Maintenance" icon_state = "yellow" -/area/maintenance/solars/asteroid/aft - name = "Aft Asteroid Solar Maintenance" - icon_state = "SolarcontrolA" - -/area/maintenance/solars/asteroid/command - name = "Command Asteroid Solar Maintenance" - icon_state = "SolarcontrolP" - -/area/maintenance/solars/asteroid/fore - name = "Fore Asteroid Solar Maintenance" - icon_state = "SolarcontrolP" - /area/maintenance/solars/port name = "Port Solar Maintenance" icon_state = "SolarcontrolP" @@ -872,22 +707,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station music = "signal" ambientsounds = ENGINEERING -/area/teleporter/quantum/cargo - name = "Cargo Quantum Pad" - icon_state = "teleporter" - -/area/teleporter/quantum/docking - name = "Docking Quantum Pad" - icon_state = "teleporter" - -/area/teleporter/quantum/research - name = "Research Quantum Pad" - icon_state = "teleporter" - -/area/teleporter/quantum/security - name = "Security Quantum Pad" - icon_state = "teleporter" - /area/gateway name = "Gateway" icon_state = "gateway" @@ -1458,11 +1277,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "AI Sat Ext" icon_state = "storage" -/area/ai_monitored/turret_protected/NewAIMain - name = "AI Main New" - icon_state = "storage" - - // Telecommunications Satellite diff --git a/code/game/area/areas/mining.dm b/code/game/area/areas/mining.dm index bf5642b7af..493f36dd8d 100644 --- a/code/game/area/areas/mining.dm +++ b/code/game/area/areas/mining.dm @@ -65,12 +65,6 @@ /area/mine/sleeper name = "Mining Station Emergency Sleeper" -/area/mine/north_outpost - name = "North Mining Outpost" - -/area/mine/west_outpost - name = "West Mining Outpost" - /area/mine/laborcamp name = "Labor Camp" diff --git a/code/game/area/areas/misc.dm b/code/game/area/areas/misc.dm deleted file mode 100644 index 7faeb6b51a..0000000000 --- a/code/game/area/areas/misc.dm +++ /dev/null @@ -1,122 +0,0 @@ - -// Hell -/area/hell - name = "Hell Lobby" - //icon = "ICON FILENAME" - //icon_state = "NAME OF ICON" - requires_power = FALSE - ambientsounds = SPOOKY - -/area/hell/trial1 - name = "Hell Trial1" - //icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) - -/area/hell/trial1 - name = "Hell Trial2" - //icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) - -/area/hell/trial1 - name = "Hell Trial3" - //icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) - - - -//Misc - -/area/generic - name = "Unknown" - icon_state = "storage" - - - -//PRISON -/area/prison - name = "Prison Station" - icon_state = "brig" - ambientsounds = HIGHSEC - -/area/prison/arrival_airlock - name = "Prison Station Airlock" - icon_state = "green" - requires_power = FALSE - -/area/prison/control - name = "Prison Security Checkpoint" - icon_state = "security" - -/area/prison/crew_quarters - name = "Prison Security Quarters" - icon_state = "security" - -/area/prison/rec_room - name = "Prison Rec Room" - icon_state = "green" - -/area/prison/closet - name = "Prison Supply Closet" - icon_state = "dk_yellow" - -/area/prison/hallway/fore - name = "Prison Fore Hallway" - icon_state = "yellow" - -/area/prison/hallway/aft - name = "Prison Aft Hallway" - icon_state = "yellow" - -/area/prison/hallway/port - name = "Prison Port Hallway" - icon_state = "yellow" - -/area/prison/hallway/starboard - name = "Prison Starboard Hallway" - icon_state = "yellow" - -/area/prison/morgue - name = "Prison Morgue" - icon_state = "morgue" - ambientsounds = SPOOKY - -/area/prison/medical_research - name = "Prison Genetic Research" - icon_state = "medresearch" - -/area/prison/medical - name = "Prison Medbay" - icon_state = "medbay" - -/area/prison/solar - name = "Prison Solar Array" - icon_state = "storage" - requires_power = FALSE - -/area/prison/podbay - name = "Prison Podbay" - icon_state = "dk_yellow" - -/area/prison/solar_control - name = "Prison Solar Array Control" - icon_state = "dk_yellow" - -/area/prison/solitary - name = "Solitary Confinement" - icon_state = "brig" - -/area/prison/execution_room - name = "Prisoner Education Chamber" - icon_state = "execution_room" - -/area/prison/cell_block/a -// /area/prison/cell_block/A - name = "Prison Cell Block A" - icon_state = "brig" - -/area/prison/cell_block/b -// /area/prison/cell_block/B - name = "Prison Cell Block B" - icon_state = "brig" - -/area/prison/cell_block/c -// /area/prison/cell_block/C - name = "Prison Cell Block C" - icon_state = "brig" diff --git a/code/game/area/areas/space_content.dm b/code/game/area/areas/space_content.dm deleted file mode 100644 index e605faa6e5..0000000000 --- a/code/game/area/areas/space_content.dm +++ /dev/null @@ -1,98 +0,0 @@ - - -/area/spacecontent - name = "space" - ambientsounds = AWAY_MISSION - -/area/spacecontent/a1 - icon_state = "spacecontent1" - -/area/spacecontent/a2 - icon_state = "spacecontent2" - -/area/spacecontent/a3 - icon_state = "spacecontent3" - -/area/spacecontent/a4 - icon_state = "spacecontent4" - -/area/spacecontent/a5 - icon_state = "spacecontent5" - -/area/spacecontent/a6 - icon_state = "spacecontent6" - -/area/spacecontent/a7 - icon_state = "spacecontent7" - -/area/spacecontent/a8 - icon_state = "spacecontent8" - -/area/spacecontent/a9 - icon_state = "spacecontent9" - -/area/spacecontent/a10 - icon_state = "spacecontent10" - -/area/spacecontent/a11 - icon_state = "spacecontent11" - -/area/spacecontent/a11 - icon_state = "spacecontent12" - -/area/spacecontent/a12 - icon_state = "spacecontent13" - -/area/spacecontent/a13 - icon_state = "spacecontent14" - -/area/spacecontent/a14 - icon_state = "spacecontent14" - -/area/spacecontent/a15 - icon_state = "spacecontent15" - -/area/spacecontent/a16 - icon_state = "spacecontent16" - -/area/spacecontent/a17 - icon_state = "spacecontent17" - -/area/spacecontent/a18 - icon_state = "spacecontent18" - -/area/spacecontent/a19 - icon_state = "spacecontent19" - -/area/spacecontent/a20 - icon_state = "spacecontent20" - -/area/spacecontent/a21 - icon_state = "spacecontent21" - -/area/spacecontent/a22 - icon_state = "spacecontent22" - -/area/spacecontent/a23 - icon_state = "spacecontent23" - -/area/spacecontent/a24 - icon_state = "spacecontent24" - -/area/spacecontent/a25 - icon_state = "spacecontent25" - -/area/spacecontent/a26 - icon_state = "spacecontent26" - -/area/spacecontent/a27 - icon_state = "spacecontent27" - -/area/spacecontent/a28 - icon_state = "spacecontent28" - -/area/spacecontent/a29 - icon_state = "spacecontent29" - -/area/spacecontent/a30 - icon_state = "spacecontent30" diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 3fd5d2277e..15ddee2669 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -221,8 +221,9 @@ GLOBAL_LIST_EMPTY(objectives) explanation_text = "Free Objective" /datum/objective/protect//The opposite of killing a dude. - var/target_role_type=0 martyr_compatible = 1 + var/target_role_type = 0 + var/human_check = TRUE /datum/objective/protect/find_target_by_role(role, role_type=0, invert=0) if(!invert) @@ -231,7 +232,7 @@ GLOBAL_LIST_EMPTY(objectives) return target /datum/objective/protect/check_completion() - return !target || considered_alive(target) + return !target || considered_alive(target, enforce_human = human_check) /datum/objective/protect/update_explanation_text() ..() @@ -240,6 +241,9 @@ GLOBAL_LIST_EMPTY(objectives) else explanation_text = "Free Objective" +/datum/objective/protect/nonhuman + human_check = FALSE + /datum/objective/hijack explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive and out of custody." team_explanation_text = "Hijack the shuttle to ensure no loyalist Nanotrasen crew escape alive and out of custody. Leave no team member behind." diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index d901fa007b..871ad7e4d9 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -114,7 +114,7 @@ Class Procs: /obj/machinery/Initialize() if(!armor) - armor = list(melee = 25, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70) + armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70) . = ..() GLOB.machines += src diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 8a4c854d76..c9d0eb0292 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -6,7 +6,7 @@ layer = PROJECTILE_HIT_THRESHHOLD_LAYER anchored = TRUE max_integrity = 200 - armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) + armor = list("melee" = 50, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) var/uses = 20 var/cooldown = 0 diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 7379185505..35d1e040f5 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -10,7 +10,7 @@ var/device_type = null var/id = null var/initialized_button = 0 - armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 10, bio = 100, rad = 100, fire = 90, acid = 70) + armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 70) anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 2 diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 2127eb095b..0a98927802 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -14,7 +14,7 @@ resistance_flags = FIRE_PROOF - armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0, fire = 90, acid = 50) + armor = list("melee" = 50, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 50) max_integrity = 100 integrity_failure = 50 var/list/network = list("SS13") diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index 2bae3b30bd..68f279cc29 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -9,7 +9,7 @@ active_power_usage = 300 max_integrity = 200 integrity_failure = 100 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 40, acid = 20) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 20) var/processing = FALSE var/brightness_on = 2 var/icon_keyboard = "generic_key" diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 130d276184..1a3ff23c56 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -104,7 +104,7 @@ anchored = FALSE max_integrity = 180 proj_pass_rate = 20 - armor = list(melee = 10, bullet = 50, laser = 50, energy = 50, bomb = 10, bio = 100, rad = 100, fire = 10, acid = 0) + armor = list("melee" = 10, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 10, "acid" = 0) var/deploy_time = 40 var/deploy_message = TRUE diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index dc734b387d..f6d80bca49 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -489,7 +489,7 @@ desc = "An airlock hastily corrupted by blood magic, it is unusually brittle in this state." normal_integrity = 180 damage_deflection = 5 - armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) //Pinion airlocks: Clockwork doors that only let servants of Ratvar through. /obj/machinery/door/airlock/clockwork diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 7c14f48e2d..0a808ef3e6 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -9,7 +9,7 @@ layer = OPEN_DOOR_LAYER power_channel = ENVIRON max_integrity = 350 - armor = list(melee = 30, bullet = 30, laser = 20, energy = 20, bomb = 10, bio = 100, rad = 100, fire = 80, acid = 70) + armor = list("melee" = 30, "bullet" = 30, "laser" = 20, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 70) CanAtmosPass = ATMOS_PASS_DENSITY flags_1 = PREVENT_CLICK_UNDER_1 @@ -33,6 +33,7 @@ var/damage_deflection = 10 var/real_explosion_block //ignore this, just use explosion_block var/red_alert_access = FALSE //if TRUE, this door will always open on red alert + var/poddoor = FALSE /obj/machinery/door/examine(mob/user) ..() @@ -41,7 +42,8 @@ to_chat(user, "Due to a security threat, its access requirements have been lifted!") else to_chat(user, "In the event of a red alert, its access requirements will automatically lift.") - to_chat(user, "Its maintenance panel is screwed in place.") + if(!poddoor) + to_chat(user, "Its maintenance panel is screwed in place.") /obj/machinery/door/check_access(access) if(red_alert_access && GLOB.security_level >= SEC_LEVEL_RED) diff --git a/code/game/machinery/doors/passworddoor.dm b/code/game/machinery/doors/passworddoor.dm index 7f4137d165..6a6c145079 100644 --- a/code/game/machinery/doors/passworddoor.dm +++ b/code/game/machinery/doors/passworddoor.dm @@ -6,7 +6,7 @@ explosion_block = 3 heat_proof = TRUE max_integrity = 600 - armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100) + armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF damage_deflection = 70 var/password = "Swordfish" diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index f42352d79d..9e467e8926 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -11,9 +11,10 @@ heat_proof = TRUE safe = FALSE max_integrity = 600 - armor = list(melee = 50, bullet = 100, laser = 100, energy = 100, bomb = 50, bio = 100, rad = 100, fire = 100, acid = 70) + armor = list("melee" = 50, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 70) resistance_flags = FIRE_PROOF damage_deflection = 70 + poddoor = TRUE /obj/machinery/door/poddoor/preopen icon_state = "open" diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 3c646265f7..24c45fd1be 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -9,7 +9,7 @@ var/base_state = "left" max_integrity = 150 //If you change this, consider changing ../door/window/brigdoor/ max_integrity at the bottom of this .dm file integrity_failure = 0 - armor = list(melee = 20, bullet = 50, laser = 50, energy = 50, bomb = 10, bio = 100, rad = 100, fire = 70, acid = 100) + armor = list("melee" = 20, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 70, "acid" = 100) visible = FALSE flags_1 = ON_BORDER_1 opacity = 0 diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index bf3255385c..efc8682313 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -19,7 +19,7 @@ anchored = TRUE max_integrity = 250 integrity_failure = 100 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100, fire = 90, acid = 30) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30) use_power = IDLE_POWER_USE idle_power_usage = 2 active_power_usage = 6 diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index d1f1774c8b..211391a56b 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -39,7 +39,7 @@ Possible to do for anyone motivated enough: idle_power_usage = 5 active_power_usage = 100 max_integrity = 300 - armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0) + armor = list("melee" = 50, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0) circuit = /obj/item/circuitboard/machine/holopad var/list/masters //List of living mobs that use the holopad var/list/holorays //Holoray-mob link. diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 6c3e3d9cdc..05de03aae1 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -10,7 +10,7 @@ idle_power_usage = 2 active_power_usage = 4 max_integrity = 300 - armor = list(melee = 50, bullet = 30, laser = 70, energy = 50, bomb = 20, bio = 0, rad = 0, fire = 100, acid = 70) + armor = list("melee" = 50, "bullet" = 30, "laser" = 70, "energy" = 50, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) resistance_flags = FIRE_PROOF /obj/machinery/igniter/attack_ai(mob/user) diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index fe2926f150..a4a7419b34 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -11,7 +11,7 @@ layer = LOW_OBJ_LAYER anchored = TRUE max_integrity = 500 - armor = list(melee = 70, bullet = 70, laser = 70, energy = 70, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80) + armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 70, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) var/open = FALSE // true if cover is open var/locked = TRUE // true if controls are locked diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 91eedfd904..aa724c087f 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -186,7 +186,7 @@ GLOBAL_LIST_EMPTY(allCasters) verb_say = "beeps" verb_ask = "beeps" verb_exclaim = "beeps" - armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) + armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) max_integrity = 200 integrity_failure = 50 var/screen = 0 diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index bc192a05de..5a1a759d07 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -83,6 +83,8 @@ Buildable meters var/obj/machinery/atmospherics/fakeA = pipe_type name = "[initial(fakeA.name)] fitting" icon_state = initial(fakeA.pipe_state) + if(ispath(pipe_type,/obj/machinery/atmospherics/pipe/heat_exchanging)) + resistance_flags |= FIRE_PROOF | LAVA_PROOF /obj/item/pipe/verb/flip() set category = "Object" diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 9a88febdc2..2b442401e2 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -31,7 +31,7 @@ max_integrity = 160 //the turret's health integrity_failure = 80 - armor = list(melee = 50, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 0, rad = 0, fire = 90, acid = 90) + armor = list("melee" = 50, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90) var/locked = TRUE //if the turret's behaviour control access is locked var/controllock = 0 //if the turret responds to control panels diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index b24c3c1406..2ca5d83365 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -55,7 +55,7 @@ GLOBAL_LIST_EMPTY(allConsoles) var/emergency //If an emergency has been called by this device. Acts as both a cooldown and lets the responder know where it the emergency was triggered from var/receive_ore_updates = FALSE //If ore redemption machines will send an update when it receives new ores. max_integrity = 300 - armor = list(melee = 70, bullet = 30, laser = 30, energy = 30, bomb = 0, bio = 0, rad = 0, fire = 90, acid = 90) + armor = list("melee" = 70, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90) /obj/machinery/requests_console/power_change() ..() diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index f59925bc54..3946d03495 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -11,7 +11,7 @@ name = "space heater" desc = "Made by Space Amish using traditional space techniques, this heater/cooler is guaranteed not to set the station on fire. Warranty void if used in engines." max_integrity = 250 - armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100, fire = 80, acid = 10) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 10) circuit = /obj/item/circuitboard/machine/space_heater var/obj/item/stock_parts/cell/cell var/on = FALSE diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 8f0e22b7d9..239bbd5c60 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -1,181 +1,180 @@ -/* - The equivalent of the server, for PDA and request console messages. - Without it, PDA and request console messages cannot be transmitted. - PDAs require the rest of the telecomms setup, but request consoles only - require the message server. -*/ - -// A decorational representation of SSblackbox, usually placed alongside the message server. -/obj/machinery/blackbox_recorder - icon = 'icons/obj/stationobjs.dmi' - icon_state = "blackbox" - name = "Blackbox Recorder" - density = TRUE - anchored = TRUE - use_power = IDLE_POWER_USE - idle_power_usage = 10 - active_power_usage = 100 - armor = list(melee = 25, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70) - - -// The message server itself. -/obj/machinery/telecomms/message_server - icon = 'icons/obj/machines/research.dmi' - icon_state = "server" - name = "Messaging Server" - desc = "A machine that attempts to gather the secret knowledge of the universe." - density = TRUE - anchored = TRUE - use_power = IDLE_POWER_USE - idle_power_usage = 10 - active_power_usage = 100 - - id = "Messaging Server" - network = "tcommsat" - autolinkers = list("common") - - var/list/datum/data_pda_msg/pda_msgs = list() - var/list/datum/data_rc_msg/rc_msgs = list() - var/decryptkey - -/obj/machinery/telecomms/message_server/Initialize() - . = ..() - if (!decryptkey) - decryptkey = GenerateKey() - pda_msgs += new /datum/data_pda_msg("System Administrator", "system", "This is an automated message. The messaging system is functioning correctly.") - -/obj/machinery/telecomms/message_server/Destroy() - for(var/obj/machinery/computer/message_monitor/monitor in GLOB.telecomms_list) - if(monitor.linkedServer && monitor.linkedServer == src) - monitor.linkedServer = null - . = ..() - -/obj/machinery/telecomms/message_server/proc/GenerateKey() - var/newKey - newKey += pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le") - newKey += pick("diamond", "beer", "mushroom", "assistant", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai") - newKey += pick("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") - return newKey - -/obj/machinery/telecomms/message_server/process() - if(toggled && (stat & (BROKEN|NOPOWER))) - toggled = FALSE - update_icon() - -/obj/machinery/telecomms/message_server/receive_information(datum/signal/subspace/pda/signal, obj/machinery/telecomms/machine_from) - // can't log non-PDA signals - if(!istype(signal) || !signal.data["message"] || !toggled) - return - - // log the signal - var/datum/data_pda_msg/M = new(signal.format_target(), "[signal.data["name"]] ([signal.data["job"]])", signal.data["message"], signal.data["photo"]) - pda_msgs += M - signal.logged = M - - // pass it along to either the hub or the broadcaster - if(!relay_information(signal, /obj/machinery/telecomms/hub)) - relay_information(signal, /obj/machinery/telecomms/broadcaster) - -/obj/machinery/telecomms/message_server/update_icon() - if((stat & (BROKEN|NOPOWER))) - icon_state = "server-nopower" - else if (!toggled) - icon_state = "server-off" - else - icon_state = "server-on" - - -// PDA signal datum -/datum/signal/subspace/pda - frequency = FREQ_COMMON - server_type = /obj/machinery/telecomms/message_server - var/datum/data_pda_msg/logged - -/datum/signal/subspace/pda/New(source, data) - src.source = source - src.data = data - var/turf/T = get_turf(source) - levels = list(T.z) - -/datum/signal/subspace/pda/copy() - var/datum/signal/subspace/pda/copy = new(source, data.Copy()) - copy.original = src - copy.levels = levels - return copy - -/datum/signal/subspace/pda/proc/format_target() - if (length(data["targets"]) > 1) - return "Everyone" - return data["targets"][1] - -/datum/signal/subspace/pda/proc/format_message() - if (logged && data["photo"]) - return "\"[data["message"]]\" (Photo)" - return "\"[data["message"]]\"" - -/datum/signal/subspace/pda/broadcast() - if (!logged) // Can only go through if a message server logs it - return - for (var/obj/item/device/pda/P in GLOB.PDAs) - if ("[P.owner] ([P.ownjob])" in data["targets"]) - P.receive_message(src) - - -// Log datums stored by the message server. -/datum/data_pda_msg - var/sender = "Unspecified" - var/recipient = "Unspecified" - var/message = "Blank" // transferred message - var/icon/photo // attached photo - -/datum/data_pda_msg/New(param_rec, param_sender, param_message, param_photo) - if(param_rec) - recipient = param_rec - if(param_sender) - sender = param_sender - if(param_message) - message = param_message - if(param_photo) - photo = param_photo - -/datum/data_pda_msg/Topic(href,href_list) - ..() - if(href_list["photo"]) - var/mob/M = usr - M << browse_rsc(photo, "pda_photo.png") - M << browse("
" \
- + "", "window=pdaphoto;size=192x192")
- onclose(M, "pdaphoto")
-
-/datum/data_rc_msg
- var/rec_dpt = "Unspecified" // receiving department
- var/send_dpt = "Unspecified" // sending department
- var/message = "Blank"
- var/stamp = "Unstamped"
- var/id_auth = "Unauthenticated"
- var/priority = "Normal"
-
-/datum/data_rc_msg/New(param_rec, param_sender, param_message, param_stamp, param_id_auth, param_priority)
- if(param_rec)
- rec_dpt = param_rec
- if(param_sender)
- send_dpt = param_sender
- if(param_message)
- message = param_message
- if(param_stamp)
- stamp = param_stamp
- if(param_id_auth)
- id_auth = param_id_auth
- if(param_priority)
- switch(param_priority)
- if(1)
- priority = "Normal"
- if(2)
- priority = "High"
- if(3)
- priority = "Extreme"
- else
- priority = "Undetermined"
-
+/*
+ The equivalent of the server, for PDA and request console messages.
+ Without it, PDA and request console messages cannot be transmitted.
+ PDAs require the rest of the telecomms setup, but request consoles only
+ require the message server.
+*/
+
+// A decorational representation of SSblackbox, usually placed alongside the message server.
+/obj/machinery/blackbox_recorder
+ icon = 'icons/obj/stationobjs.dmi'
+ icon_state = "blackbox"
+ name = "Blackbox Recorder"
+ density = TRUE
+ anchored = TRUE
+ use_power = IDLE_POWER_USE
+ idle_power_usage = 10
+ active_power_usage = 100
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70)
+
+
+// The message server itself.
+/obj/machinery/telecomms/message_server
+ icon = 'icons/obj/machines/research.dmi'
+ icon_state = "server"
+ name = "Messaging Server"
+ desc = "A machine that attempts to gather the secret knowledge of the universe."
+ density = TRUE
+ anchored = TRUE
+ use_power = IDLE_POWER_USE
+ idle_power_usage = 10
+ active_power_usage = 100
+
+ id = "Messaging Server"
+ network = "tcommsat"
+ autolinkers = list("common")
+
+ var/list/datum/data_pda_msg/pda_msgs = list()
+ var/list/datum/data_rc_msg/rc_msgs = list()
+ var/decryptkey
+
+/obj/machinery/telecomms/message_server/Initialize()
+ . = ..()
+ if (!decryptkey)
+ decryptkey = GenerateKey()
+ pda_msgs += new /datum/data_pda_msg("System Administrator", "system", "This is an automated message. The messaging system is functioning correctly.")
+
+/obj/machinery/telecomms/message_server/Destroy()
+ for(var/obj/machinery/computer/message_monitor/monitor in GLOB.telecomms_list)
+ if(monitor.linkedServer && monitor.linkedServer == src)
+ monitor.linkedServer = null
+ . = ..()
+
+/obj/machinery/telecomms/message_server/proc/GenerateKey()
+ var/newKey
+ newKey += pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le")
+ newKey += pick("diamond", "beer", "mushroom", "assistant", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai")
+ newKey += pick("1", "2", "3", "4", "5", "6", "7", "8", "9", "0")
+ return newKey
+
+/obj/machinery/telecomms/message_server/process()
+ if(toggled && (stat & (BROKEN|NOPOWER)))
+ toggled = FALSE
+ update_icon()
+
+/obj/machinery/telecomms/message_server/receive_information(datum/signal/subspace/pda/signal, obj/machinery/telecomms/machine_from)
+ // can't log non-PDA signals
+ if(!istype(signal) || !signal.data["message"] || !toggled)
+ return
+
+ // log the signal
+ var/datum/data_pda_msg/M = new(signal.format_target(), "[signal.data["name"]] ([signal.data["job"]])", signal.data["message"], signal.data["photo"])
+ pda_msgs += M
+ signal.logged = M
+
+ // pass it along to either the hub or the broadcaster
+ if(!relay_information(signal, /obj/machinery/telecomms/hub))
+ relay_information(signal, /obj/machinery/telecomms/broadcaster)
+
+/obj/machinery/telecomms/message_server/update_icon()
+ if((stat & (BROKEN|NOPOWER)))
+ icon_state = "server-nopower"
+ else if (!toggled)
+ icon_state = "server-off"
+ else
+ icon_state = "server-on"
+
+
+// PDA signal datum
+/datum/signal/subspace/pda
+ frequency = FREQ_COMMON
+ server_type = /obj/machinery/telecomms/message_server
+ var/datum/data_pda_msg/logged
+
+/datum/signal/subspace/pda/New(source, data)
+ src.source = source
+ src.data = data
+ var/turf/T = get_turf(source)
+ levels = list(T.z)
+
+/datum/signal/subspace/pda/copy()
+ var/datum/signal/subspace/pda/copy = new(source, data.Copy())
+ copy.original = src
+ copy.levels = levels
+ return copy
+
+/datum/signal/subspace/pda/proc/format_target()
+ if (length(data["targets"]) > 1)
+ return "Everyone"
+ return data["targets"][1]
+
+/datum/signal/subspace/pda/proc/format_message()
+ if (logged && data["photo"])
+ return "\"[data["message"]]\" (Photo)"
+ return "\"[data["message"]]\""
+
+/datum/signal/subspace/pda/broadcast()
+ if (!logged) // Can only go through if a message server logs it
+ return
+ for (var/obj/item/device/pda/P in GLOB.PDAs)
+ if ("[P.owner] ([P.ownjob])" in data["targets"])
+ P.receive_message(src)
+
+
+// Log datums stored by the message server.
+/datum/data_pda_msg
+ var/sender = "Unspecified"
+ var/recipient = "Unspecified"
+ var/message = "Blank" // transferred message
+ var/icon/photo // attached photo
+
+/datum/data_pda_msg/New(param_rec, param_sender, param_message, param_photo)
+ if(param_rec)
+ recipient = param_rec
+ if(param_sender)
+ sender = param_sender
+ if(param_message)
+ message = param_message
+ if(param_photo)
+ photo = param_photo
+
+/datum/data_pda_msg/Topic(href,href_list)
+ ..()
+ if(href_list["photo"])
+ var/mob/M = usr
+ M << browse_rsc(photo, "pda_photo.png")
+ M << browse("
" \
+ + "", "window=pdaphoto;size=192x192")
+ onclose(M, "pdaphoto")
+
+/datum/data_rc_msg
+ var/rec_dpt = "Unspecified" // receiving department
+ var/send_dpt = "Unspecified" // sending department
+ var/message = "Blank"
+ var/stamp = "Unstamped"
+ var/id_auth = "Unauthenticated"
+ var/priority = "Normal"
+
+/datum/data_rc_msg/New(param_rec, param_sender, param_message, param_stamp, param_id_auth, param_priority)
+ if(param_rec)
+ rec_dpt = param_rec
+ if(param_sender)
+ send_dpt = param_sender
+ if(param_message)
+ message = param_message
+ if(param_stamp)
+ stamp = param_stamp
+ if(param_id_auth)
+ id_auth = param_id_auth
+ if(param_priority)
+ switch(param_priority)
+ if(1)
+ priority = "Normal"
+ if(2)
+ priority = "High"
+ if(3)
+ priority = "Extreme"
+ else
+ priority = "Undetermined"
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 3fa3836143..69bac9b906 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -23,7 +23,7 @@
verb_exclaim = "beeps"
max_integrity = 300
integrity_failure = 100
- armor = list(melee = 20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70)
+ armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70)
circuit = /obj/item/circuitboard/machine/vendor
var/active = 1 //No sales pitches if off!
var/vend_ready = 1 //Are we ready to vend?? Is it time??
@@ -652,7 +652,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/wirecutters = 1, /obj/item/cartridge/signal = 4)
contraband = list(/obj/item/device/assembly/timer = 2, /obj/item/device/assembly/voice = 2, /obj/item/device/assembly/health = 2)
product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/coffee
@@ -714,7 +714,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/reagent_containers/food/drinks/coffee = 12,
/obj/item/tank/internals/emergency_oxygen = 6,
/obj/item/clothing/mask/breath = 6)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/cola
@@ -797,7 +797,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
products = list(/obj/item/cartridge/medical = 10, /obj/item/cartridge/engineering = 10, /obj/item/cartridge/security = 10,
/obj/item/cartridge/janitor = 10, /obj/item/cartridge/signal/toxins = 10, /obj/item/device/pda/heads = 10,
/obj/item/cartridge/captain = 3, /obj/item/cartridge/quartermaster = 10)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/liberationstation
@@ -814,7 +814,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/gun/ballistic/shotgun = 2, /obj/item/gun/ballistic/automatic/ar = 2)
premium = list(/obj/item/ammo_box/magazine/smgm9mm = 2, /obj/item/ammo_box/magazine/m50 = 4, /obj/item/ammo_box/magazine/m45 = 2, /obj/item/ammo_box/magazine/m75 = 2)
contraband = list(/obj/item/clothing/under/patriotsuit = 1, /obj/item/bedsheet/patriot = 3)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/cigarette
@@ -854,7 +854,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/reagent_containers/glass/bottle/toxin = 3, /obj/item/reagent_containers/syringe/antiviral = 6, /obj/item/reagent_containers/pill/salbutamol = 2, /obj/item/device/healthanalyzer = 4, /obj/item/device/sensor_device = 2, /obj/item/pinpointer/crew = 2)
contraband = list(/obj/item/reagent_containers/pill/tox = 3, /obj/item/reagent_containers/pill/morphine = 4, /obj/item/reagent_containers/pill/charcoal = 6)
premium = list(/obj/item/storage/box/hug/medical = 1, /obj/item/reagent_containers/hypospray/medipen = 3, /obj/item/storage/belt/medical = 3, /obj/item/wrench/medical = 1)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/medical
@@ -877,7 +877,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/reagent_containers/pill/patch/silver_sulf = 5, /obj/item/reagent_containers/pill/charcoal = 2,
/obj/item/reagent_containers/spray/medical/sterilizer = 1)
contraband = list(/obj/item/reagent_containers/pill/tox = 2, /obj/item/reagent_containers/pill/morphine = 2)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/medical
refill_count = 1
@@ -893,7 +893,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/reagent_containers/food/snacks/donut = 12, /obj/item/storage/box/evidence = 6, /obj/item/device/flashlight/seclite = 4, /obj/item/restraints/legcuffs/bola/energy = 7)
contraband = list(/obj/item/clothing/glasses/sunglasses = 2, /obj/item/storage/fancy/donut_box = 2)
premium = list(/obj/item/coin/antagtoken = 1)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/security/pre_throw(obj/item/I)
@@ -915,7 +915,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
products = list(/obj/item/reagent_containers/glass/bottle/nutrient/ez = 30, /obj/item/reagent_containers/glass/bottle/nutrient/l4z = 20, /obj/item/reagent_containers/glass/bottle/nutrient/rh = 10, /obj/item/reagent_containers/spray/pestspray = 20,
/obj/item/reagent_containers/syringe = 5, /obj/item/storage/bag/plants = 5, /obj/item/cultivator = 3, /obj/item/shovel/spade = 3, /obj/item/device/plant_analyzer = 4)
contraband = list(/obj/item/reagent_containers/glass/bottle/ammonia = 10, /obj/item/reagent_containers/glass/bottle/diethylamine = 5)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/hydroseeds
@@ -936,7 +936,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/seeds/plump = 2, /obj/item/seeds/reishi = 2, /obj/item/seeds/cannabis = 3, /obj/item/seeds/starthistle = 2,
/obj/item/seeds/random = 2)
premium = list(/obj/item/reagent_containers/spray/waterflower = 1)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/magivend
@@ -948,7 +948,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
product_ads = "FJKLFJSD;AJKFLBJAKL;1234 LOONIES LOL!;>MFW;Kill them fuckers!;GET DAT FUKKEN DISK;HONK!;EI NATH;Destroy the station!;Admin conspiracies since forever!;Space-time bending hardware!"
products = list(/obj/item/clothing/head/wizard = 1, /obj/item/clothing/suit/wizrobe = 1, /obj/item/clothing/head/wizard/red = 1, /obj/item/clothing/suit/wizrobe/red = 1, /obj/item/clothing/head/wizard/yellow = 1, /obj/item/clothing/suit/wizrobe/yellow = 1, /obj/item/clothing/shoes/sandal/magic = 1, /obj/item/staff = 2)
contraband = list(/obj/item/reagent_containers/glass/bottle/wizarditis = 1) //No one can get to the machine to hack it anyways; for the lulz - Microwave
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/autodrobe
@@ -1005,7 +1005,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
icon_state = "dinnerware"
products = list(/obj/item/storage/bag/tray = 8, /obj/item/kitchen/fork = 6, /obj/item/kitchen/knife = 6, /obj/item/kitchen/rollingpin = 2, /obj/item/reagent_containers/food/drinks/drinkingglass = 8, /obj/item/clothing/suit/apron/chef = 2, /obj/item/reagent_containers/food/condiment/pack/ketchup = 5, /obj/item/reagent_containers/food/condiment/pack/hotsauce = 5, /obj/item/reagent_containers/food/condiment/saltshaker = 5, /obj/item/reagent_containers/food/condiment/peppermill = 5, /obj/item/reagent_containers/glass/bowl = 20)
contraband = list(/obj/item/kitchen/rollingpin = 2, /obj/item/kitchen/knife/butcher = 2)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/sovietsoda
@@ -1015,7 +1015,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem."
products = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/soda = 30)
contraband = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola = 20)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/tool
@@ -1041,7 +1041,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/clothing/gloves/color/fyellow = 2)
premium = list(
/obj/item/clothing/gloves/color/yellow = 1)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
resistance_flags = FIRE_PROOF
/obj/machinery/vending/engivend
@@ -1053,7 +1053,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
products = list(/obj/item/clothing/glasses/meson/engine = 2, /obj/item/device/multitool = 4, /obj/item/electronics/airlock = 10, /obj/item/electronics/apc = 10, /obj/item/electronics/airalarm = 10, /obj/item/stock_parts/cell/high = 10, /obj/item/construction/rcd/loaded = 3, /obj/item/device/geiger_counter = 5, /obj/item/grenade/chem_grenade/smart_metal_foam = 10)
contraband = list(/obj/item/stock_parts/cell/potato = 3)
premium = list(/obj/item/storage/belt/utility = 3, /obj/item/storage/box/smart_metal_foam = 1)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
//This one's from bay12
@@ -1069,7 +1069,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/stock_parts/cell = 8, /obj/item/weldingtool = 8, /obj/item/clothing/head/welding = 8,
/obj/item/light/tube = 10, /obj/item/clothing/suit/fire = 4, /obj/item/stock_parts/scanning_module = 5, /obj/item/stock_parts/micro_laser = 5,
/obj/item/stock_parts/matter_bin = 5, /obj/item/stock_parts/manipulator = 5)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
//This one's from bay12
@@ -1083,7 +1083,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/stock_parts/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3, /obj/item/device/assembly/signaler = 3, /obj/item/device/healthanalyzer = 3,
/obj/item/scalpel = 2, /obj/item/circular_saw = 2, /obj/item/tank/internals/anesthetic = 2, /obj/item/clothing/mask/breath/medical = 5,
/obj/item/screwdriver = 5, /obj/item/crowbar = 5)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
//DON'T FORGET TO CHANGE THE REFILL SIZE IF YOU CHANGE THE MACHINE'S CONTENTS!
@@ -1147,7 +1147,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/toy/katana = 10,
/obj/item/twohanded/dualsaber/toy = 5,
/obj/item/toy/cards/deck/syndicate = 10) //Gambling and it hurts, making it a +18 item
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/donksoft
@@ -1172,7 +1172,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted = 10,
/obj/item/toy/katana = 10,
/obj/item/twohanded/dualsaber/toy = 5)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
refill_canister = /obj/item/vending_refill/donksoft
diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm
index 5e7ddb6497..99837d2beb 100644
--- a/code/game/mecha/combat/combat.dm
+++ b/code/game/mecha/combat/combat.dm
@@ -1,7 +1,7 @@
/obj/mecha/combat
force = 30
internal_damage_threshold = 50
- armor = list(melee = 30, bullet = 30, laser = 15, energy = 20, bomb = 20, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 15, "energy" = 20, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
/obj/mecha/combat/moved_inside(mob/living/carbon/human/H)
if(..())
diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm
index e726853b8a..caaa3e3a00 100644
--- a/code/game/mecha/combat/durand.dm
+++ b/code/game/mecha/combat/durand.dm
@@ -1,22 +1,21 @@
-/obj/mecha/combat/durand
- desc = "An aging combat exosuit utilized by the Nanotrasen corporation. Originally developed to combat hostile alien lifeforms."
- name = "\improper Durand"
- icon_state = "durand"
- step_in = 4
- dir_in = 1 //Facing North.
- max_integrity = 400
- deflect_chance = 20
- armor = list(melee = 40, bullet = 35, laser = 15, energy = 10, bomb = 20, bio = 0, rad = 0, fire = 100, acid = 100)
- max_temperature = 30000
- infra_luminosity = 8
- force = 40
- wreckage = /obj/structure/mecha_wreckage/durand
-
-/obj/mecha/combat/durand/GrantActions(mob/living/user, human_occupant = 0)
- ..()
- defense_action.Grant(user, src)
-
-/obj/mecha/combat/durand/RemoveActions(mob/living/user, human_occupant = 0)
- ..()
- defense_action.Remove(user)
-
+/obj/mecha/combat/durand
+ desc = "An aging combat exosuit utilized by the Nanotrasen corporation. Originally developed to combat hostile alien lifeforms."
+ name = "\improper Durand"
+ icon_state = "durand"
+ step_in = 4
+ dir_in = 1 //Facing North.
+ max_integrity = 400
+ deflect_chance = 20
+ armor = list("melee" = 40, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
+ max_temperature = 30000
+ infra_luminosity = 8
+ force = 40
+ wreckage = /obj/structure/mecha_wreckage/durand
+
+/obj/mecha/combat/durand/GrantActions(mob/living/user, human_occupant = 0)
+ ..()
+ defense_action.Grant(user, src)
+
+/obj/mecha/combat/durand/RemoveActions(mob/living/user, human_occupant = 0)
+ ..()
+ defense_action.Remove(user)
diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm
index b46bc2abf2..95137938d0 100644
--- a/code/game/mecha/combat/gygax.dm
+++ b/code/game/mecha/combat/gygax.dm
@@ -6,7 +6,7 @@
dir_in = 1 //Facing North.
max_integrity = 250
deflect_chance = 5
- armor = list(melee = 25, bullet = 20, laser = 30, energy = 15, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 25, "bullet" = 20, "laser" = 30, "energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
max_temperature = 25000
infra_luminosity = 6
wreckage = /obj/structure/mecha_wreckage/gygax
@@ -20,7 +20,7 @@
icon_state = "darkgygax"
max_integrity = 300
deflect_chance = 15
- armor = list(melee = 40, bullet = 40, laser = 50, energy = 35, bomb = 20, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 50, "energy" = 35, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
max_temperature = 35000
leg_overload_coeff = 100
operation_req_access = list(ACCESS_SYNDICATE)
diff --git a/code/game/mecha/combat/honker.dm b/code/game/mecha/combat/honker.dm
index 7424a30fcc..0298e56089 100644
--- a/code/game/mecha/combat/honker.dm
+++ b/code/game/mecha/combat/honker.dm
@@ -6,7 +6,7 @@
max_integrity = 140
deflect_chance = 60
internal_damage_threshold = 60
- armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
max_temperature = 25000
infra_luminosity = 5
operation_req_access = list(ACCESS_THEATRE)
diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm
index b82af2632e..21f8259e69 100644
--- a/code/game/mecha/combat/marauder.dm
+++ b/code/game/mecha/combat/marauder.dm
@@ -5,7 +5,7 @@
step_in = 5
max_integrity = 500
deflect_chance = 25
- armor = list(melee = 50, bullet = 55, laser = 40, energy = 30, bomb = 30, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 50, "bullet" = 55, "laser" = 40, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
max_temperature = 60000
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
infra_luminosity = 3
diff --git a/code/game/mecha/combat/phazon.dm b/code/game/mecha/combat/phazon.dm
index 8909c635a9..15b865c1e9 100644
--- a/code/game/mecha/combat/phazon.dm
+++ b/code/game/mecha/combat/phazon.dm
@@ -1,30 +1,29 @@
-/obj/mecha/combat/phazon
- desc = "This is a Phazon exosuit. The pinnacle of scientific research and pride of Nanotrasen, it uses cutting edge bluespace technology and expensive materials."
- name = "\improper Phazon"
- icon_state = "phazon"
- step_in = 2
- dir_in = 2 //Facing South.
- step_energy_drain = 3
- max_integrity = 200
- deflect_chance = 30
- armor = list(melee = 30, bullet = 30, laser = 30, energy = 30, bomb = 30, bio = 0, rad = 0, fire = 100, acid = 100)
- max_temperature = 25000
- infra_luminosity = 3
- wreckage = /obj/structure/mecha_wreckage/phazon
- add_req_access = 1
- internal_damage_threshold = 25
- force = 15
- max_equip = 3
- phase_state = "phazon-phase"
-
-/obj/mecha/combat/phazon/GrantActions(mob/living/user, human_occupant = 0)
- ..()
- switch_damtype_action.Grant(user, src)
- phasing_action.Grant(user, src)
-
-
-/obj/mecha/combat/phazon/RemoveActions(mob/living/user, human_occupant = 0)
- ..()
- switch_damtype_action.Remove(user)
- phasing_action.Remove(user)
-
+/obj/mecha/combat/phazon
+ desc = "This is a Phazon exosuit. The pinnacle of scientific research and pride of Nanotrasen, it uses cutting edge bluespace technology and expensive materials."
+ name = "\improper Phazon"
+ icon_state = "phazon"
+ step_in = 2
+ dir_in = 2 //Facing South.
+ step_energy_drain = 3
+ max_integrity = 200
+ deflect_chance = 30
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
+ max_temperature = 25000
+ infra_luminosity = 3
+ wreckage = /obj/structure/mecha_wreckage/phazon
+ add_req_access = 1
+ internal_damage_threshold = 25
+ force = 15
+ max_equip = 3
+ phase_state = "phazon-phase"
+
+/obj/mecha/combat/phazon/GrantActions(mob/living/user, human_occupant = 0)
+ ..()
+ switch_damtype_action.Grant(user, src)
+ phasing_action.Grant(user, src)
+
+
+/obj/mecha/combat/phazon/RemoveActions(mob/living/user, human_occupant = 0)
+ ..()
+ switch_damtype_action.Remove(user)
+ phasing_action.Remove(user)
diff --git a/code/game/mecha/combat/reticence.dm b/code/game/mecha/combat/reticence.dm
index 18b50d3077..4cd8c01517 100644
--- a/code/game/mecha/combat/reticence.dm
+++ b/code/game/mecha/combat/reticence.dm
@@ -6,7 +6,7 @@
dir_in = 1 //Facing North.
max_integrity = 100
deflect_chance = 3
- armor = list(melee = 25, bullet = 20, laser = 30, energy = 15, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 25, "bullet" = 20, "laser" = 30, "energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
max_temperature = 15000
wreckage = /obj/structure/mecha_wreckage/reticence
operation_req_access = list(ACCESS_THEATRE)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index db6ef6b6b9..8bda5d5e78 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -34,7 +34,7 @@
var/overload_step_energy_drain_min = 100
max_integrity = 300 //max_integrity is base health
var/deflect_chance = 10 //chance to deflect the incoming projectiles, hits, or lesser the effect of ex_act.
- armor = list(melee = 20, bullet = 10, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 20, "bullet" = 10, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
var/list/facing_modifiers = list(FRONT_ARMOUR = 1.5, SIDE_ARMOUR = 1, BACK_ARMOUR = 0.5)
var/obj/item/stock_parts/cell/cell
var/state = 0
@@ -206,8 +206,7 @@
/obj/mecha/CheckParts(list/parts_list)
..()
- var/obj/item/C = locate(/obj/item/stock_parts/cell) in contents
- cell = C
+ cell = locate(/obj/item/stock_parts/cell) in contents
var/obj/item/stock_parts/scanning_module/SM = locate() in contents
var/obj/item/stock_parts/capacitor/CP = locate() in contents
if(SM)
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index f691586a1b..b8a5cca70e 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -1,1788 +1,1816 @@
////////////////////////////////
///// Construction datums //////
////////////////////////////////
+/datum/construction/mecha
+ var/base_icon
-/datum/construction/mecha/custom_action(step, obj/item/I, mob/user)
- if(I.tool_behaviour == TOOL_WELDER)
- if(I.use_tool(holder, user, 0))
- playsound(holder, 'sound/items/welder2.ogg', 50, 1)
- else
- return FALSE
+/datum/construction/mecha/custom_action(obj/item/I, mob/living/user, diff)
+ var/target_index = index + diff
+ var/list/current_step = steps[index]
+ var/list/target_step
- else if(I.tool_behaviour)
- return I.use_tool(holder, user, 0, volume=50)
+ if(target_index > 0 && target_index <= steps.len)
+ target_step = steps[target_index]
- else if(istype(I, /obj/item/stack))
- return I.use_tool(holder, user, 0, volume=50, amount=5)
+ . = TRUE
- return TRUE
+ if(I.tool_behaviour)
+ . = I.use_tool(holder, user, 0, volume=50)
-/datum/construction/reversible/mecha/custom_action(index as num, diff as num, obj/item/I, mob/user)
- if(I.tool_behaviour == TOOL_WELDER)
- if(I.use_tool(holder, user, 0))
- playsound(holder, 'sound/items/welder2.ogg', 50, 1)
- else
- return FALSE
+ else if(diff == FORWARD)
+ switch(current_step["action"])
+ if(ITEM_DELETE)
+ . = user.transferItemToLoc(I, holder)
+ if(.)
+ qdel(I)
- else if(I.tool_behaviour)
- return I.use_tool(holder, user, 0, volume=50)
+ if(ITEM_MOVE_INSIDE)
+ . = user.transferItemToLoc(I, holder)
- else if(istype(I, /obj/item/stack))
- return I.use_tool(holder, user, 0, volume=50, amount=5)
-
- return TRUE
+ else if(istype(I, /obj/item/stack))
+ . = I.use_tool(holder, user, 0, volume=50, amount=current_step["amount"])
-/datum/construction/mecha/ripley_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso), //1
- list("key"=/obj/item/mecha_parts/part/ripley_left_arm), //2
- list("key"=/obj/item/mecha_parts/part/ripley_right_arm), //3
- list("key"=/obj/item/mecha_parts/part/ripley_left_leg), //4
- list("key"=/obj/item/mecha_parts/part/ripley_right_leg)//5
- )
+ // Going backwards? Undo the last action. Drop/respawn the items used in last action, if any.
+ if(. && diff == BACKWARD && target_step && !target_step["no_refund"])
+ var/target_step_key = target_step["key"]
-/datum/construction/mecha/ripley_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
- holder.add_overlay(used_atom.icon_state+"+o")
- qdel(used_atom)
- return TRUE
+ switch(target_step["action"])
+ if(ITEM_DELETE)
+ new target_step_key(drop_location())
-/datum/construction/mecha/ripley_chassis/action(atom/used_atom,mob/user)
- return check_all_steps(used_atom,user)
+ if(ITEM_MOVE_INSIDE)
+ var/obj/item/located_item = locate(target_step_key) in holder
+ if(located_item)
+ located_item.forceMove(drop_location())
-/datum/construction/mecha/ripley_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/ripley(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "ripley0"
- const_holder.density = TRUE
- const_holder.cut_overlays(TRUE)
+ else if(ispath(target_step_key, /obj/item/stack))
+ new target_step_key(drop_location(), target_step["amount"])
+
+
+/datum/construction/mecha/spawn_result()
+ if(!result)
+ return
+
+ // Remove default mech power cell, as we replace it with a new one.
+ var/obj/mecha/M = new result(drop_location())
+ QDEL_NULL(M.cell)
+
+ M.CheckParts(holder.contents)
+
+ SSblackbox.record_feedback("tally", "mechas_created", 1, M.name)
+ QDEL_NULL(holder)
+
+/datum/construction/mecha/update_holder(step_index)
+ ..()
+ // By default, each step in mech construction has a single icon_state:
+ // "[base_icon][index - 1]"
+ // For example, Ripley's step 1 icon_state is "ripley0".
+ if(!steps[index]["icon_state"] && base_icon)
+ holder.icon_state = "[base_icon][index - 1]"
+
+/datum/construction/unordered/mecha_chassis/custom_action(obj/item/I, mob/living/user, typepath)
+ . = user.transferItemToLoc(I, holder)
+ if(.)
+ user.visible_message("[user] has connected [I] to [holder].", "You connect [I] to [holder].")
+ holder.add_overlay(I.icon_state+"+o")
+ qdel(I)
+
+/datum/construction/unordered/mecha_chassis/spawn_result()
+ holder.icon = 'icons/mecha/mech_construction.dmi'
+ holder.density = TRUE
+ holder.cut_overlays()
+
+ var/obj/item/mecha_parts/chassis/chassis = holder
+ chassis.construct = new result(holder)
qdel(src)
-/datum/construction/reversible/mecha/ripley
- result = /obj/mecha/working/ripley
+
+
+/datum/construction/unordered/mecha_chassis/ripley
+ result = /datum/construction/mecha/ripley
steps = list(
- //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
- list("desc"="You shouldn't be able to see this."),
+ /obj/item/mecha_parts/part/ripley_torso,
+ /obj/item/mecha_parts/part/ripley_left_arm,
+ /obj/item/mecha_parts/part/ripley_right_arm,
+ /obj/item/mecha_parts/part/ripley_left_leg,
+ /obj/item/mecha_parts/part/ripley_right_leg
+ )
- //1
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="External armor is wrenched."),
- //2
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="External armor is installed."),
- //3
- list("key"=/obj/item/stack/sheet/plasteel,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="Internal armor is wrenched."),
- //5
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="Internal armor is installed."),
- //6
- list("key"=/obj/item/stack/sheet/metal,
- "backkey"=/obj/item/screwdriver,
- "desc"="The power cell is secured."),
- //7
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="The power cell is installed."),
- //8
- list("key"=/obj/item/stock_parts/cell,
- "backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
- //9
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed."),
- //10
- list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
- "backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
- //11
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
- //12
- list("key"=/obj/item/circuitboard/mecha/ripley/main,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is adjusted."),
- //13
- list("key"=/obj/item/wirecutters,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is added."),
- //14
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/screwdriver,
- "desc"="The hydraulic systems are active."),
- //15
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/wrench,
- "desc"="The hydraulic systems are connected."),
- //16
- list("key"=/obj/item/wrench,
- "desc"="The hydraulic systems are disconnected.")
+/datum/construction/mecha/ripley
+ result = /obj/mecha/working/ripley
+ base_icon = "ripley"
+ steps = list(
+ //1
+ list(
+ "key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are disconnected."
+ ),
- )
+ //2
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are connected."
+ ),
-/datum/construction/reversible/mecha/ripley/action(atom/used_atom,mob/user)
- return check_step(used_atom,user)
+ //3
+ list(
+ "key" = /obj/item/stack/cable_coil,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The hydraulic systems are active."
+ ),
-/datum/construction/reversible/mecha/ripley/custom_action(index, diff, atom/used_atom, mob/user)
+ //4
+ list(
+ "key" = TOOL_WIRECUTTER,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is added."
+ ),
+
+ //5
+ list(
+ "key" = /obj/item/circuitboard/mecha/ripley/main,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is adjusted."
+ ),
+
+ //6
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Central control module is installed."
+ ),
+
+ //7
+ list(
+ "key" = /obj/item/circuitboard/mecha/ripley/peripherals,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Central control module is secured."
+ ),
+
+ //8
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Peripherals control module is installed."
+ ),
+
+ //9
+ list(
+ "key" = /obj/item/stock_parts/cell,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Peripherals control module is secured."
+ ),
+
+ //10
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "The power cell is installed."
+ ),
+
+ //11
+ list(
+ "key" = /obj/item/stack/sheet/metal,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The power cell is secured."
+ ),
+
+ //12
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Internal armor is installed."
+ ),
+
+ //13
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "Internal armor is wrenched."
+ ),
+
+ //14
+ list(
+ "key" = /obj/item/stack/sheet/plasteel,
+ "amount" = 5,
+ "back_key" = TOOL_WELDER,
+ "desc" = "Internal armor is welded."
+ ),
+
+ //15
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "External armor is installed."
+ ),
+
+ //16
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "External armor is wrenched."
+ ),
+ )
+
+/datum/construction/mecha/ripley/custom_action(obj/item/I, mob/living/user, diff)
if(!..())
return FALSE
- //TODO: better messages.
switch(index)
- if(17)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
- holder.icon_state = "ripley1"
- if(16)
- if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
- holder.icon_state = "ripley2"
- else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
- holder.icon_state = "ripley0"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
- holder.icon_state = "ripley3"
- else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
- holder.icon_state = "ripley1"
- if(14)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
- holder.icon_state = "ripley4"
- else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
- var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
- coil.amount = 4
- holder.icon_state = "ripley2"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
- qdel(used_atom)
- holder.icon_state = "ripley5"
- else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
- holder.icon_state = "ripley3"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "ripley6"
- else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
- new /obj/item/circuitboard/mecha/ripley/main(get_turf(holder))
- holder.icon_state = "ripley4"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
- qdel(used_atom)
- holder.icon_state = "ripley7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "ripley5"
- if(10)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "ripley8"
- else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
- new /obj/item/circuitboard/mecha/ripley/peripherals(get_turf(holder))
- holder.icon_state = "ripley6"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "ripley9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "ripley7"
- if(8)
- if(diff==FORWARD)
- user.visible_message("[user] secures the power cell.", "You secure the power cell.")
- holder.icon_state = "ripley10"
- else
- user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "ripley8"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
- holder.icon_state = "ripley11"
- else
- user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
- holder.icon_state = "ripley9"
- if(6)
- if(diff==FORWARD)
- user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "ripley12"
- else
- user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
- var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "ripley10"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
- holder.icon_state = "ripley13"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "ripley11"
- if(4)
- if(diff==FORWARD)
- user.visible_message("[user] installs the external reinforced armor layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
- holder.icon_state = "ripley14"
- else
- user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
- holder.icon_state = "ripley12"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
- holder.icon_state = "ripley15"
- else
- user.visible_message("[user] pries external armor layer from the [holder].", "You pry external armor layer from the [holder].")
- var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "ripley13"
+ if(1)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
if(2)
if(diff==FORWARD)
- user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
- spawn_mecha_result()
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ else
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ if(6)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the power cell into [holder].", "You install the power cell into [holder].")
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ else
+ user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the internal armor layer to [holder].", "You install the internal armor layer to [holder].")
+ else
+ user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry internal armor layer from [holder].")
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds the internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ if(14)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the external reinforced armor layer to [holder].", "You install the external reinforced armor layer to [holder].")
+ else
+ user.visible_message("[user] cuts the internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
+ else
+ user.visible_message("[user] pries external armor layer from [holder].", "You pry external armor layer from [holder].")
+ if(16)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds the external armor layer to [holder].", "You weld the external armor layer to [holder].")
else
user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "ripley14"
return TRUE
-/datum/construction/mecha/gygax_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/gygax_torso), //1
- list("key"=/obj/item/mecha_parts/part/gygax_left_arm), //2
- list("key"=/obj/item/mecha_parts/part/gygax_right_arm), //3
- list("key"=/obj/item/mecha_parts/part/gygax_left_leg), //4
- list("key"=/obj/item/mecha_parts/part/gygax_right_leg), //5
- list("key"=/obj/item/mecha_parts/part/gygax_head)
- )
-
-/datum/construction/mecha/gygax_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
- holder.add_overlay(used_atom.icon_state+"+o")
- qdel(used_atom)
- return TRUE
-
-/datum/construction/mecha/gygax_chassis/action(atom/used_atom,mob/user)
- return check_all_steps(used_atom,user)
-
-/datum/construction/mecha/gygax_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/gygax(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "gygax0"
- const_holder.density = TRUE
- qdel(src)
-
-/datum/construction/reversible/mecha/gygax
- result = /obj/mecha/combat/gygax
+/datum/construction/unordered/mecha_chassis/gygax
+ result = /datum/construction/mecha/gygax
steps = list(
- //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
- list("desc"="You shouldn't be able to see this."),
+ /obj/item/mecha_parts/part/gygax_torso,
+ /obj/item/mecha_parts/part/gygax_left_arm,
+ /obj/item/mecha_parts/part/gygax_right_arm,
+ /obj/item/mecha_parts/part/gygax_left_leg,
+ /obj/item/mecha_parts/part/gygax_right_leg,
+ /obj/item/mecha_parts/part/gygax_head
+ )
- //1
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="External armor is wrenched."),
- //2
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="External armor is installed."),
- //3
- list("key"=/obj/item/mecha_parts/part/gygax_armor,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="Internal armor is wrenched."),
- //5
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="Internal armor is installed."),
- //6
- list("key"=/obj/item/stack/sheet/metal,
- "backkey"=/obj/item/screwdriver,
- "desc"="The power cell is secured."),
- //7
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="The power cell is installed."),
- //8
- list("key"=/obj/item/stock_parts/cell,
- "backkey"=/obj/item/screwdriver,
- "desc"="Advanced capacitor is secured."),
- //9
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Advanced capacitor is installed."),
- //10
- list("key"=/obj/item/stock_parts/capacitor,
- "backkey"=/obj/item/screwdriver,
- "desc"="Advanced scanner module is secured."),
- //11
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Advanced scanner module is installed."),
- //12
- list("key"=/obj/item/stock_parts/scanning_module,
- "backkey"=/obj/item/screwdriver,
- "desc"="Weapon control module is secured."),
- //13
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Weapon control module is installed."),
- //14
- list("key"=/obj/item/circuitboard/mecha/gygax/targeting,
- "backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
- //15
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed."),
- //16
- list("key"=/obj/item/circuitboard/mecha/gygax/peripherals,
- "backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
- //17
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
- //18
- list("key"=/obj/item/circuitboard/mecha/gygax/main,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is adjusted."),
- //19
- list("key"=/obj/item/wirecutters,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is added."),
- //20
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/screwdriver,
- "desc"="The hydraulic systems are active."),
- //21
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/wrench,
- "desc"="The hydraulic systems are connected."),
- //22
- list("key"=/obj/item/wrench,
- "desc"="The hydraulic systems are disconnected.")
- )
+/datum/construction/mecha/gygax
+ result = /obj/mecha/combat/gygax
+ base_icon = "gygax"
+ steps = list(
+ //1
+ list(
+ "key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are disconnected."
+ ),
-/datum/construction/reversible/mecha/gygax/action(atom/used_atom,mob/user)
+ //2
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are connected."
+ ),
+
+ //3
+ list(
+ "key" = /obj/item/stack/cable_coil,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The hydraulic systems are active."
+ ),
+
+ //4
+ list(
+ "key" = TOOL_WIRECUTTER,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is added."
+ ),
+
+ //5
+ list(
+ "key" = /obj/item/circuitboard/mecha/gygax/main,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is adjusted."
+ ),
+
+ //6
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Central control module is installed."
+ ),
+
+ //7
+ list(
+ "key" = /obj/item/circuitboard/mecha/gygax/peripherals,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Central control module is secured."
+ ),
+
+ //8
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Peripherals control module is installed."
+ ),
+
+ //9
+ list(
+ "key" = /obj/item/circuitboard/mecha/gygax/targeting,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Peripherals control module is secured."
+ ),
+
+ //10
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Weapon control module is installed."
+ ),
+
+ //11
+ list(
+ "key" = /obj/item/stock_parts/scanning_module,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Weapon control module is secured."
+ ),
+
+ //12
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Advanced scanner module is installed."
+ ),
+
+ //13
+ list(
+ "key" = /obj/item/stock_parts/capacitor,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Advanced scanner module is secured."
+ ),
+
+ //14
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Advanced capacitor is installed."
+ ),
+
+ //15
+ list(
+ "key" = /obj/item/stock_parts/cell,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Advanced capacitor is secured."
+ ),
+
+ //16
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "The power cell is installed."
+ ),
+
+ //17
+ list(
+ "key" = /obj/item/stack/sheet/metal,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The power cell is secured."
+ ),
+
+ //18
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Internal armor is installed."
+ ),
+
+ //19
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "Internal armor is wrenched."
+ ),
+
+ //20
+ list(
+ "key" = /obj/item/mecha_parts/part/gygax_armor,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_WELDER,
+ "desc" = "Internal armor is welded."
+ ),
+
+ //21
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "External armor is installed."
+ ),
+
+ //22
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "External armor is wrenched."
+ ),
+
+ )
+
+/datum/construction/mecha/gygax/action(atom/used_atom,mob/user)
return check_step(used_atom,user)
-/datum/construction/reversible/mecha/gygax/custom_action(index, diff, atom/used_atom, mob/user)
+/datum/construction/mecha/gygax/custom_action(obj/item/I, mob/living/user, diff)
if(!..())
return FALSE
- //TODO: better messages.
switch(index)
- if(23)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
- holder.icon_state = "gygax1"
- if(22)
+ if(1)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ if(2)
if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
- holder.icon_state = "gygax2"
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
- holder.icon_state = "gygax0"
- if(21)
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ if(3)
if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
- holder.icon_state = "gygax3"
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
- holder.icon_state = "gygax1"
- if(20)
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ if(4)
if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
- holder.icon_state = "gygax4"
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
- var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
- coil.amount = 4
- holder.icon_state = "gygax2"
- if(19)
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
+ if(5)
if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
- qdel(used_atom)
- holder.icon_state = "gygax5"
+ user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
- holder.icon_state = "gygax3"
- if(18)
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ if(6)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "gygax6"
else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
- new /obj/item/circuitboard/mecha/gygax/main(get_turf(holder))
- holder.icon_state = "gygax4"
- if(17)
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ if(7)
if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
- qdel(used_atom)
- holder.icon_state = "gygax7"
+ user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "gygax5"
- if(16)
+ if(8)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "gygax8"
else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
- new /obj/item/circuitboard/mecha/gygax/peripherals(get_turf(holder))
- holder.icon_state = "gygax6"
- if(15)
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ if(9)
if(diff==FORWARD)
- user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
- qdel(used_atom)
- holder.icon_state = "gygax9"
+ user.visible_message("[user] installs the weapon control module into [holder].", "You install the weapon control module into [holder].")
else
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "gygax7"
- if(14)
+ if(10)
if(diff==FORWARD)
user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "gygax10"
else
- user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
- new /obj/item/circuitboard/mecha/gygax/targeting(get_turf(holder))
- holder.icon_state = "gygax8"
- if(13)
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ if(11)
if(diff==FORWARD)
- user.visible_message("[user] installs scanner module to the [holder].", "You install scanner module to the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "gygax11"
+ user.visible_message("[user] installs scanner module to [holder].", "You install scanner module to [holder].")
else
user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
- holder.icon_state = "gygax9"
if(12)
if(diff==FORWARD)
user.visible_message("[user] secures the advanced scanner module.", "You secure the scanner module.")
- holder.icon_state = "gygax12"
else
- user.visible_message("[user] removes the advanced scanner module from the [holder].", "You remove the scanner module from the [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder
- I.forceMove(get_turf(holder))
- holder.icon_state = "gygax10"
- if(11)
+ user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the scanner module from [holder].")
+ if(13)
if(diff==FORWARD)
- user.visible_message("[user] installs capacitor to the [holder].", "You install capacitor to the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "gygax13"
+ user.visible_message("[user] installs capacitor to [holder].", "You install capacitor to [holder].")
else
user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.")
- holder.icon_state = "gygax11"
- if(10)
+ if(14)
if(diff==FORWARD)
- user.visible_message("[user] secures the capacitor.", "You secure the capacitor.")
- holder.icon_state = "gygax14"
+ user.visible_message("[user] secures the capacitor.", "You secure the capacitor.")
else
- user.visible_message("[user] removes the capacitor from the [holder].", "You remove the capacitor from the [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "gygax12"
- if(9)
+ user.visible_message("[user] removes the capacitor from [holder].", "You remove the capacitor from [holder].")
+ if(15)
if(diff==FORWARD)
- user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "gygax15"
+ user.visible_message("[user] installs the power cell into [holder].", "You install the power cell into [holder].")
else
user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.")
- holder.icon_state = "gygax13"
- if(8)
+ if(16)
if(diff==FORWARD)
user.visible_message("[user] secures the power cell.", "You secure the power cell.")
- holder.icon_state = "gygax16"
else
user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "gygax14"
- if(7)
+ if(17)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
- holder.icon_state = "gygax17"
+ user.visible_message("[user] installs the internal armor layer to [holder].", "You install the internal armor layer to [holder].")
else
user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
- holder.icon_state = "gygax15"
- if(6)
+ if(18)
if(diff==FORWARD)
user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "gygax18"
else
- user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
- var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "gygax16"
- if(5)
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry internal armor layer from [holder].")
+ if(19)
if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
- holder.icon_state = "gygax19"
+ user.visible_message("[user] welds the internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
else
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "gygax17"
- if(4)
+ if(20)
if(diff==FORWARD)
- user.visible_message("[user] installs Gygax Armor Plates to the [holder].", "You install Gygax Armor Plates to the [holder].")
- qdel(used_atom)
- holder.icon_state = "gygax20"
+ user.visible_message("[user] installs Gygax Armor Plates to [holder].", "You install Gygax Armor Plates to [holder].")
else
- user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
- holder.icon_state = "gygax18"
- if(3)
+ user.visible_message("[user] cuts the internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ if(21)
if(diff==FORWARD)
user.visible_message("[user] secures Gygax Armor Plates.", "You secure Gygax Armor Plates.")
- holder.icon_state = "gygax21"
else
- user.visible_message("[user] pries Gygax Armor Plates from the [holder].", "You pry Gygax Armor Plates from the [holder].")
- new /obj/item/mecha_parts/part/gygax_armor(get_turf(holder))
- holder.icon_state = "gygax19"
- if(2)
+ user.visible_message("[user] pries Gygax Armor Plates from [holder].", "You pry Gygax Armor Plates from [holder].")
+ if(22)
if(diff==FORWARD)
- user.visible_message("[user] welds Gygax Armor Plates to the [holder].", "You weld Gygax Armor Plates to the [holder].")
- spawn_mecha_result()
+ user.visible_message("[user] welds Gygax Armor Plates to [holder].", "You weld Gygax Armor Plates to [holder].")
else
user.visible_message("[user] unfastens Gygax Armor Plates.", "You unfasten Gygax Armor Plates.")
- holder.icon_state = "gygax20"
return TRUE
-/datum/construction/mecha/firefighter_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso), //1
- list("key"=/obj/item/mecha_parts/part/ripley_left_arm), //2
- list("key"=/obj/item/mecha_parts/part/ripley_right_arm), //3
- list("key"=/obj/item/mecha_parts/part/ripley_left_leg), //4
- list("key"=/obj/item/mecha_parts/part/ripley_right_leg), //5
- list("key"=/obj/item/clothing/suit/fire)//6
- )
-
-/datum/construction/mecha/firefighter_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
- holder.add_overlay(used_atom.icon_state+"+o")
- qdel(used_atom)
- return TRUE
-
-/datum/construction/mecha/firefighter_chassis/action(atom/used_atom,mob/user)
- return check_all_steps(used_atom,user)
-
-/datum/construction/mecha/firefighter_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/firefighter(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "fireripley0"
- const_holder.density = TRUE
- qdel(src)
-
-
-/datum/construction/reversible/mecha/firefighter
- result = /obj/mecha/working/ripley/firefighter
+/datum/construction/unordered/mecha_chassis/firefighter
+ result = /datum/construction/mecha/firefighter
steps = list(
- //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
- list("desc"="You shouldn't be able to see this."),
+ /obj/item/mecha_parts/part/ripley_torso,
+ /obj/item/mecha_parts/part/ripley_left_arm,
+ /obj/item/mecha_parts/part/ripley_right_arm,
+ /obj/item/mecha_parts/part/ripley_left_leg,
+ /obj/item/mecha_parts/part/ripley_right_leg,
+ /obj/item/clothing/suit/fire
+ )
- //1
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="External armor is wrenched."),
- //2
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="External armor is installed."),
- //3
- list("key"=/obj/item/stack/sheet/plasteel,
- "backkey"=/obj/item/crowbar,
- "desc"="External armor is being installed."),
- //4
- list("key"=/obj/item/stack/sheet/plasteel,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //5
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="Internal armor is wrenched."),
- //6
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="Internal armor is installed."),
- //7
- list("key"=/obj/item/stack/sheet/plasteel,
- "backkey"=/obj/item/screwdriver,
- "desc"="The power cell is secured."),
- //8
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="The power cell is installed."),
- //9
- list("key"=/obj/item/stock_parts/cell,
- "backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
- //10
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed."),
- //11
- list("key"=/obj/item/circuitboard/mecha/ripley/peripherals,
- "backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
- //12
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
- //13
- list("key"=/obj/item/circuitboard/mecha/ripley/main,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is adjusted."),
- //14
- list("key"=/obj/item/wirecutters,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is added."),
- //15
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/screwdriver,
- "desc"="The hydraulic systems are active."),
- //16
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/wrench,
- "desc"="The hydraulic systems are connected."),
- //17
- list("key"=/obj/item/wrench,
- "desc"="The hydraulic systems are disconnected.")
- )
+/datum/construction/mecha/firefighter
+ result = /obj/mecha/working/ripley/firefighter
+ base_icon = "fireripley"
+ steps = list(
+ //1
+ list(
+ "key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are disconnected."
+ ),
-/datum/construction/reversible/mecha/firefighter/action(atom/used_atom,mob/user)
- return check_step(used_atom,user)
+ //2
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are connected."
+ ),
-/datum/construction/reversible/mecha/firefighter/custom_action(index, diff, atom/used_atom, mob/user)
+ //3
+ list(
+ "key" = /obj/item/stack/cable_coil,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The hydraulic systems are active."
+ ),
+
+ //4
+ list(
+ "key" = TOOL_WIRECUTTER,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is added."
+ ),
+
+ //5
+ list(
+ "key" = /obj/item/circuitboard/mecha/ripley/main,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is adjusted."
+ ),
+
+ //6
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Central control module is installed."
+ ),
+
+ //7
+ list(
+ "key" = /obj/item/circuitboard/mecha/ripley/peripherals,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Central control module is secured."
+ ),
+
+ //8
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Peripherals control module is installed."
+ ),
+
+ //9
+ list(
+ "key" = /obj/item/stock_parts/cell,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Peripherals control module is secured."
+ ),
+
+ //10
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "The power cell is installed."
+ ),
+
+ //11
+ list(
+ "key" = /obj/item/stack/sheet/plasteel,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The power cell is secured."
+ ),
+
+ //12
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Internal armor is installed."
+ ),
+
+ //13
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "Internal armor is wrenched."
+ ),
+
+ //14
+ list(
+ "key" = /obj/item/stack/sheet/plasteel,
+ "amount" = 5,
+ "back_key" = TOOL_WELDER,
+ "desc" = "Internal armor is welded."
+ ),
+
+ //15
+ list(
+ "key" = /obj/item/stack/sheet/plasteel,
+ "amount" = 5,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "External armor is being installed."
+ ),
+
+ //16
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "External armor is installed."
+ ),
+
+ //17
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "External armor is wrenched."
+ ),
+ )
+
+/datum/construction/mecha/firefighter/custom_action(obj/item/I, mob/living/user, diff)
if(!..())
return FALSE
//TODO: better messages.
switch(index)
- if(18)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
- holder.icon_state = "fireripley1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
- holder.icon_state = "fireripley2"
- else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
- holder.icon_state = "fireripley0"
- if(16)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
- holder.icon_state = "fireripley3"
- else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
- holder.icon_state = "fireripley1"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
- holder.icon_state = "fireripley4"
- else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
- var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
- coil.amount = 4
- holder.icon_state = "fireripley2"
- if(14)
- if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
- qdel(used_atom)
- holder.icon_state = "fireripley5"
- else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
- holder.icon_state = "fireripley3"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "fireripley6"
- else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
- new /obj/item/circuitboard/mecha/ripley/main(get_turf(holder))
- holder.icon_state = "fireripley4"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
- qdel(used_atom)
- holder.icon_state = "fireripley7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "fireripley5"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "fireripley8"
- else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
- new /obj/item/circuitboard/mecha/ripley/peripherals(get_turf(holder))
- holder.icon_state = "fireripley6"
- if(10)
- if(diff==FORWARD)
- user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "fireripley9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "fireripley7"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] secures the power cell.", "You secure the power cell.")
- holder.icon_state = "fireripley10"
- else
- user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "fireripley8"
- if(8)
- if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
- holder.icon_state = "fireripley11"
- else
- user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
- holder.icon_state = "fireripley9"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "fireripley12"
- else
- user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
- var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "fireripley10"
- if(6)
- if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
- holder.icon_state = "fireripley13"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "fireripley11"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] starts to install the external armor layer to the [holder].", "You install the external armor layer to the [holder].")
- holder.icon_state = "fireripley14"
- else
- user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
- holder.icon_state = "fireripley12"
- if(4)
- if(diff==FORWARD)
- user.visible_message("[user] installs the external reinforced armor layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
- holder.icon_state = "fireripley15"
- else
- user.visible_message("[user] removes the external armor from the [holder].", "You remove the external armor from the [holder].")
- var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "fireripley13"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
- holder.icon_state = "fireripley16"
- else
- user.visible_message("[user] pries external armor layer from the [holder].", "You pry external armor layer from the [holder].")
- var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "fireripley14"
+ if(1)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
if(2)
if(diff==FORWARD)
- user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
- spawn_mecha_result()
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ else
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ if(6)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the power cell into [holder].", "You install the power cell into [holder].")
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ else
+ user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the internal armor layer to [holder].", "You install the internal armor layer to [holder].")
+ else
+ user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry internal armor layer from [holder].")
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds the internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ if(14)
+ if(diff==FORWARD)
+ user.visible_message("[user] starts to install the external armor layer to [holder].", "You install the external armor layer to [holder].")
+ else
+ user.visible_message("[user] cuts the internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the external reinforced armor layer to [holder].", "You install the external reinforced armor layer to [holder].")
+ else
+ user.visible_message("[user] removes the external armor from [holder].", "You remove the external armor from [holder].")
+ if(16)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
+ else
+ user.visible_message("[user] pries external armor layer from [holder].", "You pry external armor layer from [holder].")
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds the external armor layer to [holder].", "You weld the external armor layer to [holder].")
else
user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "fireripley15"
return TRUE
-/datum/construction/mecha/honker_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/honker_torso), //1
- list("key"=/obj/item/mecha_parts/part/honker_left_arm), //2
- list("key"=/obj/item/mecha_parts/part/honker_right_arm), //3
- list("key"=/obj/item/mecha_parts/part/honker_left_leg), //4
- list("key"=/obj/item/mecha_parts/part/honker_right_leg), //5
- list("key"=/obj/item/mecha_parts/part/honker_head)
- )
-
-/datum/construction/mecha/honker_chassis/action(atom/used_atom,mob/user)
- return check_all_steps(used_atom,user)
-
-/datum/construction/mecha/honker_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
- holder.add_overlay(used_atom.icon_state+"+o")
- qdel(used_atom)
- return TRUE
-
-/datum/construction/mecha/honker_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/mecha/honker(const_holder)
- const_holder.density = TRUE
- qdel(src)
+/datum/construction/unordered/mecha_chassis/honker
+ result = /datum/construction/mecha/honker
+ steps = list(
+ /obj/item/mecha_parts/part/honker_torso,
+ /obj/item/mecha_parts/part/honker_left_arm,
+ /obj/item/mecha_parts/part/honker_right_arm,
+ /obj/item/mecha_parts/part/honker_left_leg,
+ /obj/item/mecha_parts/part/honker_right_leg,
+ /obj/item/mecha_parts/part/honker_head
+ )
/datum/construction/mecha/honker
result = /obj/mecha/combat/honker
steps = list(
- list("desc"="You shouldn't be able to see this."), //0, note steps in the construction path are +1 to the ones here
- list("key"=/obj/item/bikehorn), //1
- list("key"=/obj/item/clothing/shoes/clown_shoes), //2
- list("key"=/obj/item/bikehorn), //3
- list("key"=/obj/item/clothing/mask/gas/clown_hat), //4
- list("key"=/obj/item/bikehorn), //5
- list("key"=/obj/item/stock_parts/cell), //6
- list("key"=/obj/item/bikehorn), //7
- list("key"=/obj/item/circuitboard/mecha/honker/targeting), //8
- list("key"=/obj/item/bikehorn), //9
- list("key"=/obj/item/circuitboard/mecha/honker/peripherals), //10
- list("key"=/obj/item/bikehorn), //11
- list("key"=/obj/item/circuitboard/mecha/honker/main), //12
- list("key"=/obj/item/bikehorn), //13
- )
+ //1
+ list(
+ "key" = /obj/item/bikehorn
+ ),
-/datum/construction/mecha/honker/action(atom/used_atom,mob/user)
- return check_step(used_atom,user)
+ //2
+ list(
+ "key" = /obj/item/circuitboard/mecha/honker/main,
+ "action" = ITEM_DELETE
+ ),
-/datum/construction/mecha/honker/custom_action(step, atom/used_atom, mob/user)
+ //3
+ list(
+ "key" = /obj/item/bikehorn
+ ),
+
+ //4
+ list(
+ "key" = /obj/item/circuitboard/mecha/honker/peripherals,
+ "action" = ITEM_DELETE
+ ),
+
+ //5
+ list(
+ "key" = /obj/item/bikehorn
+ ),
+
+ //6
+ list(
+ "key" = /obj/item/circuitboard/mecha/honker/targeting,
+ "action" = ITEM_DELETE
+ ),
+
+ //7
+ list(
+ "key" = /obj/item/bikehorn
+ ),
+
+ //8
+ list(
+ "key" = /obj/item/stock_parts/cell,
+ "action" = ITEM_MOVE_INSIDE
+ ),
+
+ //9
+ list(
+ "key" = /obj/item/bikehorn
+ ),
+
+ //10
+ list(
+ "key" = /obj/item/clothing/mask/gas/clown_hat,
+ "action" = ITEM_DELETE
+ ),
+
+ //11
+ list(
+ "key" = /obj/item/bikehorn
+ ),
+
+ //12
+ list(
+ "key" = /obj/item/clothing/shoes/clown_shoes,
+ "action" = ITEM_DELETE
+ ),
+
+ //13
+ list(
+ "key" = /obj/item/bikehorn
+ ),
+ )
+
+// HONK doesn't have any construction step icons, so we just set an icon once.
+/datum/construction/mecha/honker/update_holder(step_index)
+ if(step_index == 1)
+ holder.icon = 'icons/mecha/mech_construct.dmi'
+ holder.icon_state = "honker_chassis"
+ ..()
+
+/datum/construction/mecha/honker/custom_action(obj/item/I, mob/living/user, diff)
if(!..())
return FALSE
- if(istype(used_atom, /obj/item/bikehorn))
+ if(istype(I, /obj/item/bikehorn))
playsound(holder, 'sound/items/bikehorn.ogg', 50, 1)
user.visible_message("HONK!")
- if(step==2)
- spawn_mecha_result()
-
//TODO: better messages.
- switch(step)
- if(13)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central control module into the [holder].")
- qdel(used_atom)
- if(11)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
- qdel(used_atom)
- if(9)
- user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
- qdel(used_atom)
- if(7)
- user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- if(5)
- user.visible_message("[user] puts clown wig and mask on the [holder].", "You put clown wig and mask on the [holder].")
- qdel(used_atom)
- if(3)
- user.visible_message("[user] puts clown boots on the [holder].", "You put clown boots on the [holder].")
- qdel(used_atom)
+ switch(index)
+ if(2)
+ user.visible_message("[user] installs the central control module into [holder].", "You install the central control module into [holder].")
+ if(4)
+ user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
+ if(6)
+ user.visible_message("[user] installs the weapon control module into [holder].", "You install the weapon control module into [holder].")
+ if(8)
+ user.visible_message("[user] installs the power cell into [holder].", "You install the power cell into [holder].")
+ if(10)
+ user.visible_message("[user] puts clown wig and mask on [holder].", "You put clown wig and mask on [holder].")
+ if(12)
+ user.visible_message("[user] puts clown boots on [holder].", "You put clown boots on [holder].")
return TRUE
-/datum/construction/mecha/durand_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/durand_torso), //1
- list("key"=/obj/item/mecha_parts/part/durand_left_arm), //2
- list("key"=/obj/item/mecha_parts/part/durand_right_arm), //3
- list("key"=/obj/item/mecha_parts/part/durand_left_leg), //4
- list("key"=/obj/item/mecha_parts/part/durand_right_leg), //5
- list("key"=/obj/item/mecha_parts/part/durand_head)
- )
-
-/datum/construction/mecha/durand_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder]")
- holder.add_overlay(used_atom.icon_state+"+o")
- qdel(used_atom)
- return TRUE
-
-/datum/construction/mecha/durand_chassis/action(atom/used_atom,mob/user)
- return check_all_steps(used_atom,user)
-
-/datum/construction/mecha/durand_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/durand(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "durand0"
- const_holder.density = TRUE
- qdel(src)
-
-/datum/construction/reversible/mecha/durand
- result = /obj/mecha/combat/durand
+/datum/construction/unordered/mecha_chassis/durand
+ result = /datum/construction/mecha/durand
steps = list(
- //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
- list("desc"="You shouldn't be able to see this."),
+ /obj/item/mecha_parts/part/durand_torso,
+ /obj/item/mecha_parts/part/durand_left_arm,
+ /obj/item/mecha_parts/part/durand_right_arm,
+ /obj/item/mecha_parts/part/durand_left_leg,
+ /obj/item/mecha_parts/part/durand_right_leg,
+ /obj/item/mecha_parts/part/durand_head
+ )
- //1
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="External armor is wrenched."),
- //2
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="External armor is installed."),
- //3
- list("key"=/obj/item/mecha_parts/part/durand_armor,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="Internal armor is wrenched."),
- //5
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="Internal armor is installed."),
- //6
- list("key"=/obj/item/stack/sheet/metal,
- "backkey"=/obj/item/screwdriver,
- "desc"="The power cell is secured."),
- //7
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="The power cell is installed."),
- //8
- list("key"=/obj/item/stock_parts/cell,
- "backkey"=/obj/item/screwdriver,
- "desc"="Super capacitor is secured."),
- //9
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Super capacitor is installed."),
- //10
- list("key"=/obj/item/stock_parts/capacitor,
- "backkey"=/obj/item/screwdriver,
- "desc"="Phasic scanner module is secured."),
- //11
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Phasic scanner module is installed."),
- //12
- list("key"=/obj/item/stock_parts/scanning_module,
- "backkey"=/obj/item/screwdriver,
- "desc"="Weapon control module is secured."),
- //13
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Weapon control module is installed."),
- //14
- list("key"=/obj/item/circuitboard/mecha/durand/targeting,
- "backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
- //15
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed."),
- //16
- list("key"=/obj/item/circuitboard/mecha/durand/peripherals,
- "backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
- //17
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
- //18
- list("key"=/obj/item/circuitboard/mecha/durand/main,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is adjusted."),
- //19
- list("key"=/obj/item/wirecutters,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is added."),
- //20
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/screwdriver,
- "desc"="The hydraulic systems are active."),
- //21
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/wrench,
- "desc"="The hydraulic systems are connected."),
- //22
- list("key"=/obj/item/wrench,
- "desc"="The hydraulic systems are disconnected.")
- )
+/datum/construction/mecha/durand
+ result = /obj/mecha/combat/durand
+ base_icon = "durand"
+ steps = list(
+ //1
+ list(
+ "key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are disconnected."
+ ),
+
+ //2
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are connected."
+ ),
+
+ //3
+ list(
+ "key" = /obj/item/stack/cable_coil,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The hydraulic systems are active."
+ ),
+
+ //4
+ list(
+ "key" = TOOL_WIRECUTTER,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is added."
+ ),
+
+ //5
+ list(
+ "key" = /obj/item/circuitboard/mecha/durand/main,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is adjusted."
+ ),
+
+ //6
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Central control module is installed."
+ ),
+
+ //7
+ list(
+ "key" = /obj/item/circuitboard/mecha/durand/peripherals,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Central control module is secured."
+ ),
+
+ //8
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Peripherals control module is installed."
+ ),
+
+ //9
+ list(
+ "key" = /obj/item/circuitboard/mecha/durand/targeting,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Peripherals control module is secured."
+ ),
+
+ //10
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Weapon control module is installed."
+ ),
+
+ //11
+ list(
+ "key" = /obj/item/stock_parts/scanning_module,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Weapon control module is secured."
+ ),
+
+ //12
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Phasic scanner module is installed."
+ ),
+
+ //13
+ list(
+ "key" = /obj/item/stock_parts/capacitor,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Phasic scanner module is secured."
+ ),
+
+ //14
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Super capacitor is installed."
+ ),
+
+ //15
+ list(
+ "key" = /obj/item/stock_parts/cell,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Super capacitor is secured."
+ ),
+
+ //16
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "The power cell is installed."
+ ),
+
+ //17
+ list(
+ "key" = /obj/item/stack/sheet/metal,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The power cell is secured."
+ ),
+
+ //18
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Internal armor is installed."
+ ),
+
+ //19
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "Internal armor is wrenched."
+ ),
+
+ //20
+ list(
+ "key" = /obj/item/mecha_parts/part/durand_armor,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_WELDER,
+ "desc" = "Internal armor is welded."
+ ),
+
+ //21
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "External armor is installed."
+ ),
+
+ //22
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "External armor is wrenched."
+ ),
+ )
-/datum/construction/reversible/mecha/durand/action(atom/used_atom,mob/user)
- return check_step(used_atom,user)
-
-/datum/construction/reversible/mecha/durand/custom_action(index, diff, atom/used_atom, mob/user)
+/datum/construction/mecha/durand/custom_action(obj/item/I, mob/living/user, diff)
if(!..())
return FALSE
//TODO: better messages.
switch(index)
- if(23)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
- holder.icon_state = "durand1"
- if(22)
+ if(1)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ if(2)
if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
- holder.icon_state = "durand2"
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
- holder.icon_state = "durand0"
- if(21)
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ if(3)
if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
- holder.icon_state = "durand3"
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
- holder.icon_state = "durand1"
- if(20)
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ if(4)
if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
- holder.icon_state = "durand4"
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
- var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
- coil.amount = 4
- holder.icon_state = "durand2"
- if(19)
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
+ if(5)
if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
- qdel(used_atom)
- holder.icon_state = "durand5"
+ user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
- holder.icon_state = "durand3"
- if(18)
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ if(6)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "durand6"
else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
- new /obj/item/circuitboard/mecha/durand/main(get_turf(holder))
- holder.icon_state = "durand4"
- if(17)
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ if(7)
if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
- qdel(used_atom)
- holder.icon_state = "durand7"
+ user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "durand5"
- if(16)
+ if(8)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "durand8"
else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
- new /obj/item/circuitboard/mecha/durand/peripherals(get_turf(holder))
- holder.icon_state = "durand6"
- if(15)
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ if(9)
if(diff==FORWARD)
- user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
- qdel(used_atom)
- holder.icon_state = "durand9"
+ user.visible_message("[user] installs the weapon control module into [holder].", "You install the weapon control module into [holder].")
else
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "durand7"
- if(14)
+ if(10)
if(diff==FORWARD)
user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "durand10"
else
- user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
- new /obj/item/circuitboard/mecha/durand/targeting(get_turf(holder))
- holder.icon_state = "durand8"
- if(13)
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ if(11)
if(diff==FORWARD)
- user.visible_message("[user] installs scanner module to the [holder].", "You install phasic scanner module to the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "durand11"
+ user.visible_message("[user] installs scanner module to [holder].", "You install phasic scanner module to [holder].")
else
user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
- holder.icon_state = "durand9"
if(12)
if(diff==FORWARD)
user.visible_message("[user] secures the scanner module.", "You secure the scanner module.")
- holder.icon_state = "durand12"
else
- user.visible_message("[user] removes the scanner module from the [holder].", "You remove the scanner module from the [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "durand10"
- if(11)
+ user.visible_message("[user] removes the scanner module from [holder].", "You remove the scanner module from [holder].")
+ if(13)
if(diff==FORWARD)
- user.visible_message("[user] installs capacitor to the [holder].", "You install capacitor to the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "durand13"
+ user.visible_message("[user] installs capacitor to [holder].", "You install capacitor to [holder].")
else
user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.")
- holder.icon_state = "durand11"
- if(10)
+ if(14)
if(diff==FORWARD)
user.visible_message("[user] secures the capacitor.", "You secure the capacitor.")
- holder.icon_state = "durand14"
else
- user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the capacitor from the [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "durand12"
- if(9)
+ user.visible_message("[user] removes the super capacitor from [holder].", "You remove the capacitor from [holder].")
+ if(15)
if(diff==FORWARD)
- user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "durand15"
+ user.visible_message("[user] installs the power cell into [holder].", "You install the power cell into [holder].")
else
user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.")
- holder.icon_state = "durand13"
- if(8)
+ if(16)
if(diff==FORWARD)
user.visible_message("[user] secures the power cell.", "You secure the power cell.")
- holder.icon_state = "durand16"
else
user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "durand14"
- if(7)
+ if(17)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
- holder.icon_state = "durand17"
+ user.visible_message("[user] installs the internal armor layer to [holder].", "You install the internal armor layer to [holder].")
else
user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
- holder.icon_state = "durand15"
- if(6)
+ if(18)
if(diff==FORWARD)
user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "durand18"
else
- user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
- var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "durand16"
- if(5)
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry internal armor layer from [holder].")
+ if(19)
if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
- holder.icon_state = "durand19"
+ user.visible_message("[user] welds the internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
else
user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "durand17"
- if(4)
+ if(20)
if(diff==FORWARD)
- user.visible_message("[user] installs Durand Armor Plates to the [holder].", "You install Durand Armor Plates to the [holder].")
- qdel(used_atom)
- holder.icon_state = "durand20"
+ user.visible_message("[user] installs Durand Armor Plates to [holder].", "You install Durand Armor Plates to [holder].")
else
- user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
- holder.icon_state = "durand18"
- if(3)
+ user.visible_message("[user] cuts the internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ if(21)
if(diff==FORWARD)
user.visible_message("[user] secures Durand Armor Plates.", "You secure Durand Armor Plates.")
- holder.icon_state = "durand21"
else
- user.visible_message("[user] pries Durand Armor Plates from the [holder].", "You pry Durand Armor Plates from the [holder].")
- new /obj/item/mecha_parts/part/durand_armor(get_turf(holder))
- holder.icon_state = "durand19"
- if(2)
+ user.visible_message("[user] pries Durand Armor Plates from [holder].", "You pry Durand Armor Plates from [holder].")
+ if(22)
if(diff==FORWARD)
- user.visible_message("[user] welds Durand Armor Plates to the [holder].", "You weld Durand Armor Plates to the [holder].")
- spawn_mecha_result()
+ user.visible_message("[user] welds Durand Armor Plates to [holder].", "You weld Durand Armor Plates to [holder].")
else
user.visible_message("[user] unfastens Durand Armor Plates.", "You unfasten Durand Armor Plates.")
- holder.icon_state = "durand20"
return TRUE
//PHAZON
-/datum/construction/mecha/phazon_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/phazon_torso), //1
- list("key"=/obj/item/mecha_parts/part/phazon_left_arm), //2
- list("key"=/obj/item/mecha_parts/part/phazon_right_arm), //3
- list("key"=/obj/item/mecha_parts/part/phazon_left_leg), //4
- list("key"=/obj/item/mecha_parts/part/phazon_right_leg), //5
- list("key"=/obj/item/mecha_parts/part/phazon_head)
- )
-
-/datum/construction/mecha/phazon_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
- holder.add_overlay(used_atom.icon_state+"+o")
- qdel(used_atom)
- return TRUE
-
-/datum/construction/mecha/phazon_chassis/action(atom/used_atom,mob/user)
- return check_all_steps(used_atom,user)
-
-/datum/construction/mecha/phazon_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/phazon(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "phazon0"
- const_holder.density = TRUE
- qdel(src)
-
-/datum/construction/reversible/mecha/phazon
- result = /obj/mecha/combat/phazon
+/datum/construction/unordered/mecha_chassis/phazon
+ result = /datum/construction/mecha/phazon
steps = list(
- //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
- list("desc"="You shouldn't be able to see this."),
+ /obj/item/mecha_parts/part/phazon_torso,
+ /obj/item/mecha_parts/part/phazon_left_arm,
+ /obj/item/mecha_parts/part/phazon_right_arm,
+ /obj/item/mecha_parts/part/phazon_left_leg,
+ /obj/item/mecha_parts/part/phazon_right_leg,
+ /obj/item/mecha_parts/part/phazon_head
+ )
- //1
- list("key"=/obj/item/device/assembly/signaler/anomaly,
- "backkey"=null, //Cannot remove the anomaly core once it's in
- "desc"="Anomaly core socket is open and awaiting connection."),
- //2
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="External armor is wrenched."),
- //3
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="External armor is installed."),
- //4
- list("key"=/obj/item/mecha_parts/part/phazon_armor,
- "backkey"=/obj/item/weldingtool,
- "desc"="Phase armor is welded."),
- //5
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="Phase armor is wrenched."),
- //6
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="Phase armor is installed."),
- //7
- list("key"=/obj/item/stack/sheet/plasteel,
- "backkey"=/obj/item/screwdriver,
- "desc"="The power cell is secured."),
- //8
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="The power cell is installed."),
- //9
- list("key"=/obj/item/stock_parts/cell,
- "backkey"=/obj/item/screwdriver,
- "desc"="The bluespace crystal is engaged."),
- //10
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/wirecutters,
- "desc"="The bluespace crystal is connected."),
- //11
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/crowbar,
- "desc"="The bluespace crystal is installed."),
- //12
- list("key"=/obj/item/stack/ore/bluespace_crystal,
- "backkey"=/obj/item/screwdriver,
- "desc"="Super capacitor is secured."),
- //13
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Super capacitor is installed."),
- //14
- list("key"=/obj/item/stock_parts/capacitor,
- "backkey"=/obj/item/screwdriver,
- "desc"="Phasic scanner module is secured."),
- //15
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Phasic scanner module is installed."),
- //16
- list("key"=/obj/item/stock_parts/scanning_module,
- "backkey"=/obj/item/screwdriver,
- "desc"="Weapon control module is secured."),
- //17
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Weapon control is installed."),
- //18
- list("key"=/obj/item/circuitboard/mecha/phazon/targeting,
- "backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
- //19
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed"),
- //20
- list("key"=/obj/item/circuitboard/mecha/phazon/peripherals,
- "backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
- //21
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
- //22
- list("key"=/obj/item/circuitboard/mecha/phazon/main,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is adjusted."),
- //23
- list("key"=/obj/item/wirecutters,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is added."),
- //24
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/screwdriver,
- "desc"="The hydraulic systems are active."),
- //25
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/wrench,
- "desc"="The hydraulic systems are connected."),
- //26
- list("key"=/obj/item/wrench,
- "desc"="The hydraulic systems are disconnected.")
- )
+/datum/construction/mecha/phazon
+ result = /obj/mecha/combat/phazon
+ base_icon = "phazon"
+ steps = list(
+ //1
+ list(
+ "key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are disconnected."
+ ),
+
+ //2
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are connected."
+ ),
+
+ //3
+ list(
+ "key" = /obj/item/stack/cable_coil,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The hydraulic systems are active."
+ ),
+
+ //4
+ list(
+ "key" = TOOL_WIRECUTTER,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is added."
+ ),
+
+ //5
+ list(
+ "key" = /obj/item/circuitboard/mecha/phazon/main,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is adjusted."
+ ),
+
+ //6
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Central control module is installed."
+ ),
+
+ //7
+ list(
+ "key" = /obj/item/circuitboard/mecha/phazon/peripherals,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Central control module is secured."
+ ),
+
+ //8
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Peripherals control module is installed"
+ ),
+
+ //9
+ list(
+ "key" = /obj/item/circuitboard/mecha/phazon/targeting,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Peripherals control module is secured."
+ ),
+
+ //10
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Weapon control is installed."
+ ),
+
+ //11
+ list(
+ "key" = /obj/item/stock_parts/scanning_module,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Weapon control module is secured."
+ ),
+
+ //12
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Phasic scanner module is installed."
+ ),
+
+ //13
+ list(
+ "key" = /obj/item/stock_parts/capacitor,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Phasic scanner module is secured."
+ ),
+
+ //14
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Super capacitor is installed."
+ ),
+
+ //15
+ list(
+ "key" = /obj/item/stack/ore/bluespace_crystal,
+ "amount" = 1,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Super capacitor is secured."
+ ),
+
+ //16
+ list(
+ "key" = /obj/item/stack/cable_coil,
+ "amount" = 5,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "The bluespace crystal is installed."
+ ),
+
+ //17
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_WIRECUTTER,
+ "desc" = "The bluespace crystal is connected."
+ ),
+
+ //18
+ list(
+ "key" = /obj/item/stock_parts/cell,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The bluespace crystal is engaged."
+ ),
+
+ //19
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "The power cell is installed.",
+ "icon_state" = "phazon17"
+ // This is the point where a step icon is skipped, so "icon_state" had to be set manually starting from here.
+ ),
+
+ //20
+ list(
+ "key" = /obj/item/stack/sheet/plasteel,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The power cell is secured.",
+ "icon_state" = "phazon18"
+ ),
+
+ //21
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Phase armor is installed.",
+ "icon_state" = "phazon19"
+ ),
+
+ //22
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "Phase armor is wrenched.",
+ "icon_state" = "phazon20"
+ ),
+
+ //23
+ list(
+ "key" = /obj/item/mecha_parts/part/phazon_armor,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_WELDER,
+ "desc" = "Phase armor is welded.",
+ "icon_state" = "phazon21"
+ ),
+
+ //24
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "External armor is installed.",
+ "icon_state" = "phazon22"
+ ),
+
+ //25
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "External armor is wrenched.",
+ "icon_state" = "phazon23"
+ ),
+
+ //26
+ list(
+ "key" = /obj/item/device/assembly/signaler/anomaly,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_WELDER,
+ "desc" = "Anomaly core socket is open.",
+ "icon_state" = "phazon24"
+ ),
+ )
-/datum/construction/reversible/mecha/phazon/action(atom/used_atom,mob/user)
- return check_step(used_atom,user)
-
-/datum/construction/reversible/mecha/phazon/custom_action(index, diff, atom/used_atom, mob/user)
+/datum/construction/mecha/phazon/custom_action(obj/item/I, mob/living/user, diff)
if(!..())
return FALSE
//TODO: better messages.
switch(index)
- if(27)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
- holder.icon_state = "phazon1"
- if(26)
+ if(1)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ if(2)
if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
- holder.icon_state = "phazon2"
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
- holder.icon_state = "phazon0"
- if(25)
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ if(3)
if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
- holder.icon_state = "phazon3"
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
- holder.icon_state = "phazon1"
- if(24)
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ if(4)
if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
- holder.icon_state = "phazon4"
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
- var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
- coil.amount = 4
- holder.icon_state = "phazon2"
- if(23)
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
+ if(5)
if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
- qdel(used_atom)
- holder.icon_state = "phazon5"
+ user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
- holder.icon_state = "phazon3"
- if(22)
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ if(6)
if(diff==FORWARD)
user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "phazon6"
else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
- new /obj/item/circuitboard/mecha/phazon/main(get_turf(holder))
- holder.icon_state = "phazon4"
- if(21)
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ if(7)
if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
- qdel(used_atom)
- holder.icon_state = "phazon7"
+ user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
else
user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "phazon5"
- if(20)
+ if(8)
if(diff==FORWARD)
user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "phazon8"
else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
- new /obj/item/circuitboard/mecha/phazon/peripherals(get_turf(holder))
- holder.icon_state = "phazon6"
- if(19)
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ if(9)
if(diff==FORWARD)
- user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
- qdel(used_atom)
- holder.icon_state = "phazon9"
+ user.visible_message("[user] installs the weapon control module into [holder].", "You install the weapon control module into [holder].")
else
user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "phazon7"
- if(18)
+ if(10)
if(diff==FORWARD)
user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.")
- holder.icon_state = "phazon10"
else
- user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
- new /obj/item/circuitboard/mecha/phazon/targeting(get_turf(holder))
- holder.icon_state = "phazon8"
- if(17)
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [holder].")
+ if(11)
if(diff==FORWARD)
- user.visible_message("[user] installs phasic scanner module to the [holder].", "You install scanner module to the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "phazon11"
+ user.visible_message("[user] installs phasic scanner module to [holder].", "You install scanner module to [holder].")
else
user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.")
- holder.icon_state = "phazon9"
- if(16)
+ if(12)
if(diff==FORWARD)
user.visible_message("[user] secures the phasic scanner module.", "You secure the scanner module.")
- holder.icon_state = "phazon12"
else
- user.visible_message("[user] removes the phasic scanner module from the [holder].", "You remove the scanner module from the [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/scanning_module) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "phazon10"
- if(15)
+ user.visible_message("[user] removes the phasic scanner module from [holder].", "You remove the scanner module from [holder].")
+ if(13)
if(diff==FORWARD)
- user.visible_message("[user] installs super capacitor to the [holder].", "You install capacitor to the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "phazon13"
+ user.visible_message("[user] installs super capacitor to [holder].", "You install capacitor to [holder].")
else
user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the scanner module.")
- holder.icon_state = "phazon11"
if(14)
if(diff==FORWARD)
user.visible_message("[user] secures the super capacitor.", "You secure the capacitor.")
- holder.icon_state = "phazon14"
else
- user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the capacitor from the [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/capacitor) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "phazon12"
- if(13)
+ user.visible_message("[user] removes the super capacitor from [holder].", "You remove the capacitor from [holder].")
+ if(15)
if(diff==FORWARD)
user.visible_message("[user] installs the bluespace crystal.", "You install the bluespace crystal.")
- qdel(used_atom)
- holder.icon_state = "phazon15"
else
- user.visible_message("[user] unsecures the super capacitor from the [holder].", "You unsecure the capacitor from the [holder].")
- holder.icon_state = "phazon13"
- if(12)
+ user.visible_message("[user] unsecures the super capacitor from [holder].", "You unsecure the capacitor from [holder].")
+ if(16)
if(diff==FORWARD)
user.visible_message("[user] connects the bluespace crystal.", "You connect the bluespace crystal.")
- holder.icon_state = "phazon16"
else
- user.visible_message("[user] removes the bluespace crystal from the [holder].", "You remove the bluespace crystal from the [holder].")
- new /obj/item/stack/ore/bluespace_crystal(get_turf(holder))
- holder.icon_state = "phazon14"
- if(11)
+ user.visible_message("[user] removes the bluespace crystal from [holder].", "You remove the bluespace crystal from [holder].")
+ if(17)
if(diff==FORWARD)
user.visible_message("[user] engages the bluespace crystal.", "You engage the bluespace crystal.")
- holder.icon_state = "phazon17"
else
- user.visible_message("[user] disconnects the bluespace crystal from the [holder].", "You disconnect the bluespace crystal from the [holder].")
- holder.icon_state = "phazon15"
- if(10)
+ user.visible_message("[user] disconnects the bluespace crystal from [holder].", "You disconnect the bluespace crystal from [holder].")
+ if(18)
if(diff==FORWARD)
- user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "phazon18"
+ user.visible_message("[user] installs the power cell into [holder].", "You install the power cell into [holder].")
else
user.visible_message("[user] disengages the bluespace crystal.", "You disengage the bluespace crystal.")
- holder.icon_state = "phazon16"
- if(9)
+ if(19)
if(diff==FORWARD)
user.visible_message("[user] secures the power cell.", "You secure the power cell.")
- holder.icon_state = "phazon19"
else
user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "phazon17"
- if(8)
+ if(20)
if(diff==FORWARD)
- user.visible_message("[user] installs the phase armor layer to the [holder].", "You install the phase armor layer to the [holder].")
- holder.icon_state = "phazon20"
+ user.visible_message("[user] installs the phase armor layer to [holder].", "You install the phase armor layer to [holder].")
else
user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
- holder.icon_state = "durand18"
- if(7)
+ if(21)
if(diff==FORWARD)
user.visible_message("[user] secures the phase armor layer.", "You secure the phase armor layer.")
- holder.icon_state = "phazon21"
else
- user.visible_message("[user] pries the phase armor layer from the [holder].", "You pry the phase armor layer from the [holder].")
- var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "phazon19"
- if(6)
+ user.visible_message("[user] pries the phase armor layer from [holder].", "You pry the phase armor layer from [holder].")
+ if(22)
if(diff==FORWARD)
- user.visible_message("[user] welds the phase armor layer to the [holder].", "You weld the phase armor layer to the [holder].")
- holder.icon_state = "phazon22"
+ user.visible_message("[user] welds the phase armor layer to [holder].", "You weld the phase armor layer to [holder].")
else
user.visible_message("[user] unfastens the phase armor layer.", "You unfasten the phase armor layer.")
- holder.icon_state = "phazon20"
- if(5)
+ if(23)
if(diff==FORWARD)
- user.visible_message("[user] installs Phazon Armor Plates to the [holder].", "You install Phazon Armor Plates to the [holder].")
- qdel(used_atom)
- holder.icon_state = "phazon23"
+ user.visible_message("[user] installs Phazon Armor Plates to [holder].", "You install Phazon Armor Plates to [holder].")
else
- user.visible_message("[user] cuts phase armor layer from the [holder].", "You cut the phase armor layer from the [holder].")
- holder.icon_state = "phazon21"
- if(4)
+ user.visible_message("[user] cuts phase armor layer from [holder].", "You cut the phase armor layer from [holder].")
+ if(24)
if(diff==FORWARD)
user.visible_message("[user] secures Phazon Armor Plates.", "You secure Phazon Armor Plates.")
- holder.icon_state = "phazon24"
else
- user.visible_message("[user] pries Phazon Armor Plates from the [holder].", "You pry Phazon Armor Plates from the [holder].")
- new /obj/item/mecha_parts/part/phazon_armor(get_turf(holder))
- holder.icon_state = "phazon22"
- if(3)
+ user.visible_message("[user] pries Phazon Armor Plates from [holder].", "You pry Phazon Armor Plates from [holder].")
+ if(25)
if(diff==FORWARD)
- user.visible_message("[user] welds Phazon Armor Plates to the [holder].", "You weld Phazon Armor Plates to the [holder].")
+ user.visible_message("[user] welds Phazon Armor Plates to [holder].", "You weld Phazon Armor Plates to [holder].")
else
user.visible_message("[user] unfastens Phazon Armor Plates.", "You unfasten Phazon Armor Plates.")
- holder.icon_state = "phazon23"
- if(2)
+ if(26)
if(diff==FORWARD)
- user.visible_message("[user] carefully inserts the anomaly core into \the [holder] and secures it.", "You slowly place the anomaly core into its socket and close its chamber.")
- qdel(used_atom)
- spawn_mecha_result()
+ user.visible_message("[user] carefully inserts the anomaly core into [holder] and secures it.",
+ "You slowly place the anomaly core into its socket and close its chamber.")
return TRUE
//ODYSSEUS
-/datum/construction/mecha/odysseus_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/odysseus_torso), //1
- list("key"=/obj/item/mecha_parts/part/odysseus_head), //2
- list("key"=/obj/item/mecha_parts/part/odysseus_left_arm), //3
- list("key"=/obj/item/mecha_parts/part/odysseus_right_arm), //4
- list("key"=/obj/item/mecha_parts/part/odysseus_left_leg), //5
- list("key"=/obj/item/mecha_parts/part/odysseus_right_leg)//6
- )
-
-/datum/construction/mecha/odysseus_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
- holder.add_overlay(used_atom.icon_state+"+o")
- qdel(used_atom)
- return TRUE
-
-/datum/construction/mecha/odysseus_chassis/action(atom/used_atom,mob/user)
- return check_all_steps(used_atom,user)
-
-/datum/construction/mecha/odysseus_chassis/spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/odysseus(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "odysseus0"
- const_holder.density = TRUE
- qdel(src)
-
-
-/datum/construction/reversible/mecha/odysseus
- result = /obj/mecha/medical/odysseus
+/datum/construction/unordered/mecha_chassis/odysseus
+ result = /datum/construction/mecha/odysseus
steps = list(
- //0, dummy step used to stop the steps from finishing and spawn_result() being called automatically.
- list("desc"="You shouldn't be able to see this."),
+ /obj/item/mecha_parts/part/odysseus_torso,
+ /obj/item/mecha_parts/part/odysseus_head,
+ /obj/item/mecha_parts/part/odysseus_left_arm,
+ /obj/item/mecha_parts/part/odysseus_right_arm,
+ /obj/item/mecha_parts/part/odysseus_left_leg,
+ /obj/item/mecha_parts/part/odysseus_right_leg
+ )
- //1
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="External armor is wrenched."),
- //2
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="External armor is installed."),
- //3
- list("key"=/obj/item/stack/sheet/plasteel,
- "backkey"=/obj/item/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/weldingtool,
- "backkey"=/obj/item/wrench,
- "desc"="Internal armor is wrenched."),
- //5
- list("key"=/obj/item/wrench,
- "backkey"=/obj/item/crowbar,
- "desc"="Internal armor is installed."),
- //6
- list("key"=/obj/item/stack/sheet/metal,
- "backkey"=/obj/item/screwdriver,
- "desc"="The power cell is secured."),
- //7
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="The power cell is installed."),
- //8
- list("key"=/obj/item/stock_parts/cell,
- "backkey"=/obj/item/screwdriver,
- "desc"="Peripherals control module is secured."),
- //9
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Peripherals control module is installed."),
- //10
- list("key"=/obj/item/circuitboard/mecha/odysseus/peripherals,
- "backkey"=/obj/item/screwdriver,
- "desc"="Central control module is secured."),
- //11
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/crowbar,
- "desc"="Central control module is installed."),
- //12
- list("key"=/obj/item/circuitboard/mecha/odysseus/main,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is adjusted."),
- //13
- list("key"=/obj/item/wirecutters,
- "backkey"=/obj/item/screwdriver,
- "desc"="The wiring is added."),
- //14
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/screwdriver,
- "desc"="The hydraulic systems are active."),
- //15
- list("key"=/obj/item/screwdriver,
- "backkey"=/obj/item/wrench,
- "desc"="The hydraulic systems are connected."),
- //16
- list("key"=/obj/item/wrench,
- "desc"="The hydraulic systems are disconnected.")
- )
+/datum/construction/mecha/odysseus
+ result = /obj/mecha/medical/odysseus
+ base_icon = "odysseus"
+ steps = list(
+ //1
+ list(
+ "key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are disconnected."
+ ),
-/datum/construction/reversible/mecha/odysseus/action(atom/used_atom,mob/user)
- return check_step(used_atom,user)
+ //2
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "The hydraulic systems are connected."
+ ),
-/datum/construction/reversible/mecha/odysseus/custom_action(index, diff, atom/used_atom, mob/user)
+ //3
+ list(
+ "key" = /obj/item/stack/cable_coil,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The hydraulic systems are active."
+ ),
+
+ //4
+ list(
+ "key" = TOOL_WIRECUTTER,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is added."
+ ),
+
+ //5
+ list(
+ "key" = /obj/item/circuitboard/mecha/odysseus/main,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The wiring is adjusted."
+ ),
+
+ //6
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Central control module is installed."
+ ),
+
+ //7
+ list(
+ "key" = /obj/item/circuitboard/mecha/odysseus/peripherals,
+ "action" = ITEM_DELETE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Central control module is secured."
+ ),
+
+ //8
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Peripherals control module is installed."
+ ),
+
+ //9
+ list(
+ "key" = /obj/item/stock_parts/cell,
+ "action" = ITEM_MOVE_INSIDE,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "Peripherals control module is secured."
+ ),
+
+ //10
+ list(
+ "key" = TOOL_SCREWDRIVER,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "The power cell is installed."
+ ),
+
+ //11
+ list(
+ "key" = /obj/item/stack/sheet/metal,
+ "amount" = 5,
+ "back_key" = TOOL_SCREWDRIVER,
+ "desc" = "The power cell is secured."
+ ),
+
+ //12
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "Internal armor is installed."
+ ),
+
+ //13
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "Internal armor is wrenched."
+ ),
+
+ //14
+ list(
+ "key" = /obj/item/stack/sheet/plasteel,
+ "amount" = 5,
+ "back_key" = TOOL_WELDER,
+ "desc" = "Internal armor is welded."
+ ),
+
+ //15
+ list(
+ "key" = TOOL_WRENCH,
+ "back_key" = TOOL_CROWBAR,
+ "desc" = "External armor is installed."
+ ),
+
+ //16
+ list(
+ "key" = TOOL_WELDER,
+ "back_key" = TOOL_WRENCH,
+ "desc" = "External armor is wrenched."
+ ),
+ )
+
+/datum/construction/mecha/odysseus/custom_action(obj/item/I, mob/living/user, diff)
if(!..())
return FALSE
//TODO: better messages.
switch(index)
- if(17)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
- holder.icon_state = "odysseus1"
- if(16)
- if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
- holder.icon_state = "odysseus2"
- else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
- holder.icon_state = "odysseus0"
- if(15)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
- holder.icon_state = "odysseus3"
- else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
- holder.icon_state = "odysseus1"
- if(14)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
- holder.icon_state = "odysseus4"
- else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
- var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
- coil.amount = 4
- holder.icon_state = "odysseus2"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
- qdel(used_atom)
- holder.icon_state = "odysseus5"
- else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
- holder.icon_state = "odysseus3"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
- holder.icon_state = "odysseus6"
- else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
- new /obj/item/circuitboard/mecha/odysseus/main(get_turf(holder))
- holder.icon_state = "odysseus4"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
- qdel(used_atom)
- holder.icon_state = "odysseus7"
- else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
- holder.icon_state = "odysseus5"
- if(10)
- if(diff==FORWARD)
- user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
- holder.icon_state = "odysseus8"
- else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
- new /obj/item/circuitboard/mecha/odysseus/peripherals(get_turf(holder))
- holder.icon_state = "odysseus6"
- if(9)
- if(diff==FORWARD)
- user.visible_message("[user] installs the power cell into the [holder].", "You install the power cell into the [holder].")
- var/obj/item/I = used_atom
- user.transferItemToLoc(I, holder, TRUE)
- holder.icon_state = "odysseus9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "odysseus7"
- if(8)
- if(diff==FORWARD)
- user.visible_message("[user] secures the power cell.", "You secure the power cell.")
- holder.icon_state = "odysseus10"
- else
- user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
- var/obj/item/I = locate(/obj/item/stock_parts/cell) in holder
- I.forceMove(holder.drop_location())
- holder.icon_state = "odysseus8"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
- holder.icon_state = "odysseus11"
- else
- user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
- holder.icon_state = "odysseus9"
- if(6)
- if(diff==FORWARD)
- user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
- holder.icon_state = "odysseus12"
- else
- user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
- var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "odysseus10"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
- holder.icon_state = "odysseus13"
- else
- user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
- holder.icon_state = "odysseus11"
- if(4)
- if(diff==FORWARD)
- user.visible_message("[user] installs [used_atom] layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
-
- holder.icon_state = "odysseus14"
- else
- user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
- holder.icon_state = "odysseus12"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
- holder.icon_state = "odysseus15"
- else
- var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
- MS.amount = 5
- user.visible_message("[user] pries [MS] from the [holder].", "You pry [MS] from the [holder].")
- holder.icon_state = "odysseus13"
+ if(1)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
if(2)
if(diff==FORWARD)
- user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
- spawn_mecha_result()
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ else
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the central control module into [holder].", "You install the central computer mainboard into [holder].")
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ if(6)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ else
+ user.visible_message("[user] removes the central control module from [holder].", "You remove the central computer mainboard from [holder].")
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the peripherals control module into [holder].", "You install the peripherals control module into [holder].")
+ else
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.")
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [holder].")
+ if(9)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the power cell into [holder].", "You install the power cell into [holder].")
+ else
+ user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
+ if(10)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the power cell.", "You secure the power cell.")
+ else
+ user.visible_message("[user] prys the power cell from [holder].", "You pry the power cell from [holder].")
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the internal armor layer to [holder].", "You install the internal armor layer to [holder].")
+ else
+ user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.")
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.")
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You pry internal armor layer from [holder].")
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds the internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ else
+ user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.")
+ if(14)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs the external armor layer to [holder].", "You install the external reinforced armor layer to [holder].")
+ else
+ user.visible_message("[user] cuts the internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ if(15)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.")
+ else
+ user.visible_message("[user] pries the external armor layer from [holder].", "You pry the external armor layer from [holder].")
+ if(16)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds the external armor layer to [holder].", "You weld the external armor layer to [holder].")
else
user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "odysseus14"
return TRUE
diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm
index d62926e3d0..566be391cc 100644
--- a/code/game/mecha/mecha_parts.dm
+++ b/code/game/mecha/mecha_parts.dm
@@ -10,9 +10,15 @@
flags_1 = CONDUCT_1
/obj/item/mecha_parts/chassis
- name="Mecha Chassis"
+ name = "Mecha Chassis"
icon_state = "backbone"
var/datum/construction/construct
+ var/construct_type
+
+/obj/item/mecha_parts/chassis/Initialize()
+ . = ..()
+ if(construct_type)
+ construct = new construct_type(src)
/obj/item/mecha_parts/chassis/attackby(obj/item/W, mob/user, params)
if(!construct || !construct.action(W, user))
@@ -25,10 +31,7 @@
/obj/item/mecha_parts/chassis/ripley
name = "\improper Ripley chassis"
-
-/obj/item/mecha_parts/chassis/ripley/Initialize()
- . = ..()
- construct = new /datum/construction/mecha/ripley_chassis(src)
+ construct_type = /datum/construction/unordered/mecha_chassis/ripley
/obj/item/mecha_parts/part/ripley_torso
name = "\improper Ripley torso"
@@ -59,10 +62,7 @@
/obj/item/mecha_parts/chassis/odysseus
name = "\improper Odysseus chassis"
-
-/obj/item/mecha_parts/chassis/odysseus/Initialize()
- . = ..()
- construct = new /datum/construction/mecha/odysseus_chassis(src)
+ construct_type = /datum/construction/unordered/mecha_chassis/odysseus
/obj/item/mecha_parts/part/odysseus_head
name = "\improper Odysseus head"
@@ -98,10 +98,7 @@
/obj/item/mecha_parts/chassis/gygax
name = "\improper Gygax chassis"
-
-/obj/item/mecha_parts/chassis/gygax/Initialize()
- . = ..()
- construct = new /datum/construction/mecha/gygax_chassis(src)
+ construct_type = /datum/construction/unordered/mecha_chassis/gygax
/obj/item/mecha_parts/part/gygax_torso
name = "\improper Gygax torso"
@@ -144,10 +141,7 @@
/obj/item/mecha_parts/chassis/durand
name = "\improper Durand chassis"
-
-/obj/item/mecha_parts/chassis/durand/Initialize()
- . = ..()
- construct = new /datum/construction/mecha/durand_chassis(src)
+ construct_type = /datum/construction/unordered/mecha_chassis/durand
/obj/item/mecha_parts/part/durand_torso
name = "\improper Durand torso"
@@ -188,21 +182,15 @@
////////// Firefighter
/obj/item/mecha_parts/chassis/firefighter
- name = "Firefighter chassis"
-
-/obj/item/mecha_parts/chassis/firefighter/Initialize()
- . = ..()
- construct = new /datum/construction/mecha/firefighter_chassis(src)
+ name = "\improper Firefighter chassis"
+ construct_type = /datum/construction/unordered/mecha_chassis/firefighter
////////// HONK
/obj/item/mecha_parts/chassis/honker
name = "\improper H.O.N.K chassis"
-
-/obj/item/mecha_parts/chassis/honker/Initialize()
- . = ..()
- construct = new /datum/construction/mecha/honker_chassis(src)
+ construct_type = /datum/construction/unordered/mecha_chassis/honker
/obj/item/mecha_parts/part/honker_torso
name = "\improper H.O.N.K torso"
@@ -239,10 +227,7 @@
/obj/item/mecha_parts/chassis/phazon
name = "\improper Phazon chassis"
-
-/obj/item/mecha_parts/chassis/phazon/Initialize()
- . = ..()
- construct = new /datum/construction/mecha/phazon_chassis(src)
+ construct_type = /datum/construction/unordered/mecha_chassis/phazon
/obj/item/mecha_parts/part/phazon_torso
name="\improper Phazon torso"
diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm
index eaa09ff9b7..429d954451 100644
--- a/code/game/mecha/working/ripley.dm
+++ b/code/game/mecha/working/ripley.dm
@@ -9,7 +9,7 @@
max_integrity = 200
lights_power = 7
deflect_chance = 15
- armor = list(melee = 40, bullet = 20, laser = 10, energy = 20, bomb = 40, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 40, "bullet" = 20, "laser" = 10, "energy" = 20, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
max_equip = 6
wreckage = /obj/structure/mecha_wreckage/ripley
var/list/cargo = new
@@ -65,7 +65,7 @@
max_integrity = 250
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
lights_power = 7
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 30, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
max_equip = 5 // More armor, less tools
wreckage = /obj/structure/mecha_wreckage/ripley/firefighter
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 9ac53cc85b..697c84ee0c 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -245,18 +245,23 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
if(resistance_flags & ON_FIRE)
var/mob/living/carbon/C = user
- if(istype(C))
- if(C.gloves && (C.gloves.max_heat_protection_temperature > 360))
- extinguish()
- to_chat(user, "You put out the fire on [src].")
- else
- to_chat(user, "You burn your hand on [src]!")
- var/obj/item/bodypart/affecting = C.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm")
- if(affecting && affecting.receive_damage( 0, 5 )) // 5 burn damage
- C.update_damage_overlays()
- return
- else
+ var/can_handle_hot = FALSE
+ if(!istype(C))
+ can_handle_hot = TRUE
+ else if(C.gloves && (C.gloves.max_heat_protection_temperature > 360))
+ can_handle_hot = TRUE
+ else if(RESISTHOT in C.dna.species.species_traits)
+ can_handle_hot = TRUE
+
+ if(can_handle_hot)
extinguish()
+ to_chat(user, "You put out the fire on [src].")
+ else
+ to_chat(user, "You burn your hand on [src]!")
+ var/obj/item/bodypart/affecting = C.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm")
+ if(affecting && affecting.receive_damage( 0, 5 )) // 5 burn damage
+ C.update_damage_overlays()
+ return
if(acid_level > 20 && !ismob(loc))// so we can still remove the clothes on us that have acid.
var/mob/living/carbon/C = user
diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm
index 9f146b8ff3..4a911f9002 100644
--- a/code/game/objects/items/RCD.dm
+++ b/code/game/objects/items/RCD.dm
@@ -22,7 +22,7 @@ ARCD
w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL=100000)
req_access_txt = "11"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
var/datum/effect_system/spark_spread/spark_system
var/matter = 0
diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm
index abf4b7bd6f..4169e70dc9 100644
--- a/code/game/objects/items/RPD.dm
+++ b/code/game/objects/items/RPD.dm
@@ -181,7 +181,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
throw_range = 5
w_class = WEIGHT_CLASS_NORMAL
materials = list(MAT_METAL=75000, MAT_GLASS=37500)
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
var/datum/effect_system/spark_spread/spark_system
var/working = 0
diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm
index a01c0e7487..42d2b3dc45 100644
--- a/code/game/objects/items/RSF.dm
+++ b/code/game/objects/items/RSF.dm
@@ -14,7 +14,7 @@ RSF
density = FALSE
anchored = FALSE
flags_1 = NOBLUDGEON_1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
var/matter = 0
var/mode = 1
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index 958b9ff8b0..e3c74a4ddf 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -146,8 +146,7 @@
/area/centcom,
/area/asteroid,
/area/tdome,
- /area/wizard_station,
- /area/prison
+ /area/wizard_station
)
for (var/type in SPECIALS)
if ( istype(A,type) )
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index 2f506fb419..a7bd41999e 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -98,7 +98,7 @@
lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
slot_flags = SLOT_ID
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
var/mining_points = 0 //For redeeming at mining equipment vendors
var/list/access = list()
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 23840ac217..d4e59c8542 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -14,7 +14,7 @@
throwforce = 6
w_class = WEIGHT_CLASS_BULKY
actions_types = list(/datum/action/item_action/toggle_paddles)
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/on = FALSE //if the paddles are equipped (1) or on the defib (0)
var/safety = TRUE //if you can zap people with the defibs on harm mode
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 5899b7c211..db7e2993ae 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -21,7 +21,7 @@ GLOBAL_LIST_EMPTY(PDAs)
flags_1 = NOBLUDGEON_1
w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_ID | SLOT_BELT
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm
index e10c34a139..c0b32883e8 100644
--- a/code/game/objects/items/devices/forcefieldprojector.dm
+++ b/code/game/objects/items/devices/forcefieldprojector.dm
@@ -79,7 +79,7 @@
mouse_opacity = MOUSE_OPACITY_OPAQUE
resistance_flags = INDESTRUCTIBLE
CanAtmosPass = ATMOS_PASS_DENSITY
- armor = list(melee = 0, bullet = 25, laser = 50, energy = 50, bomb = 25, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 0, "bullet" = 25, "laser" = 50, "energy" = 50, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
var/obj/item/device/forcefield/generator
/obj/structure/projected_forcefield/Initialize(mapload, obj/item/device/forcefield/origin)
diff --git a/code/game/objects/items/grenades/clusterbuster.dm b/code/game/objects/items/grenades/clusterbuster.dm
index 167c3114ec..7064bf6015 100644
--- a/code/game/objects/items/grenades/clusterbuster.dm
+++ b/code/game/objects/items/grenades/clusterbuster.dm
@@ -6,28 +6,31 @@
name = "clusterbang"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang"
+ var/base_state = "clusterbang"
var/payload = /obj/item/grenade/flashbang/cluster
+ var/payload_spawner = /obj/effect/payload_spawner
+ var/prime_sound = 'sound/weapons/armbomb.ogg'
+ var/min_spawned = 4
+ var/max_spawned = 8
+ var/segment_chance = 35
/obj/item/grenade/clusterbuster/prime()
update_mob()
- var/numspawned = rand(4,8)
+ var/numspawned = rand(min_spawned,max_spawned)
var/again = 0
for(var/more = numspawned,more > 0,more--)
- if(prob(35))
+ if(prob(segment_chance))
again++
numspawned--
- for(var/loop = again ,loop > 0, loop--)
- new /obj/item/grenade/clusterbuster/segment(loc, payload)//Creates 'segments' that launches a few more payloads
-
- new /obj/effect/payload_spawner(loc, payload, numspawned)//Launches payload
-
- playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
+ for(var/loop in 1 to again)
+ new /obj/item/grenade/clusterbuster/segment(drop_location(), src)//Creates 'segments' that launches a few more payloads
+ new payload_spawner(drop_location(), payload, numspawned)//Launches payload
+ playsound(src, prime_sound, 75, 1, -3)
qdel(src)
-
//////////////////////
//Clusterbang segment
//////////////////////
@@ -36,38 +39,64 @@
name = "clusterbang segment"
icon = 'icons/obj/grenade.dmi'
icon_state = "clusterbang_segment"
+ base_state = "clusterbang_segment"
-/obj/item/grenade/clusterbuster/segment/New(var/loc, var/payload_type = /obj/item/grenade/flashbang/cluster)
- ..()
- icon_state = "clusterbang_segment_active"
- payload = payload_type
- active = 1
+/obj/item/grenade/clusterbuster/segment/Initialize(mapload, obj/item/grenade/clusterbuster/base)
+ . = ..()
+ if(base)
+ name = "[base.name] segment"
+ base_state = "[base.base_state]_segment"
+ icon_state = base_state
+ payload_spawner = base.payload_spawner
+ payload = base.payload
+ prime_sound = base.prime_sound
+ min_spawned = base.min_spawned
+ max_spawned = base.max_spawned
+ icon_state = "[base_state]_active"
+ active = TRUE
walk_away(src,loc,rand(1,4))
addtimer(CALLBACK(src, .proc/prime), rand(15,60))
/obj/item/grenade/clusterbuster/segment/prime()
-
- new /obj/effect/payload_spawner(loc, payload, rand(4,8))
-
- playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
-
+ new payload_spawner(drop_location(), payload, rand(min_spawned,max_spawned))
+ playsound(src, prime_sound, 75, 1, -3)
qdel(src)
//////////////////////////////////
//The payload spawner effect
/////////////////////////////////
-/obj/effect/payload_spawner/New(var/turf/newloc,var/type, var/numspawned as num)
+/obj/effect/payload_spawner/Initialize(mapload, type, numspawned)
+ ..()
+ spawn_payload(type, numspawned)
+ return INITIALIZE_HINT_QDEL
- for(var/loop = numspawned ,loop > 0, loop--)
+/obj/effect/payload_spawner/proc/spawn_payload(type, numspawned)
+ for(var/loop in 1 to numspawned)
var/obj/item/grenade/P = new type(loc)
- P.active = 1
+ if(istype(P))
+ P.active = TRUE
+ addtimer(CALLBACK(P, /obj/item/grenade/proc/prime), rand(15,60))
walk_away(P,loc,rand(1,4))
- spawn(rand(15,60))
- if(P && !QDELETED(P))
- P.prime()
- qdel(src)
+/obj/effect/payload_spawner/random_slime
+ var/volatile = FALSE
+/obj/effect/payload_spawner/random_slime/volatile
+ volatile = TRUE
+
+/obj/item/slime_extract/proc/activate_slime()
+ var/list/slime_chems = list("plasma","water","blood")
+ for(var/i in 1 to slime_chems.len)
+ if(!QDELETED(src))
+ reagents.add_reagent(pick_n_take(slime_chems),5) //Add them in random order so we get all effects
+
+/obj/effect/payload_spawner/random_slime/spawn_payload(type, numspawned)
+ for(var/loop = numspawned ,loop > 0, loop--)
+ var/chosen = pick(subtypesof(/obj/item/slime_extract))
+ var/obj/item/slime_extract/P = new chosen(loc)
+ if(volatile)
+ addtimer(CALLBACK(P, /obj/item/slime_extract/proc/activate_slime), rand(15,60))
+ walk_away(P,loc,rand(1,4))
//////////////////////////////////
//Custom payload clusterbusters
@@ -127,7 +156,6 @@
name = "WELCOME TO HELL"
payload = /obj/item/grenade/chem_grenade/clf3
-
//random clusterbuster spawner
/obj/item/grenade/clusterbuster/random
icon_state = "random_clusterbang"
@@ -136,3 +164,14 @@
var/real_type = pick(subtypesof(/obj/item/grenade/clusterbuster))
new real_type(loc)
qdel(src)
+
+//rainbow slime effect
+/obj/item/grenade/clusterbuster/slime
+ name = "Blorble Blorble"
+ icon_state = "slimebang"
+ base_state = "slimebang"
+ payload_spawner = /obj/effect/payload_spawner/random_slime
+ prime_sound = 'sound/effects/bubbles.ogg'
+
+/obj/item/grenade/clusterbuster/slime/volatile
+ payload_spawner = /obj/effect/payload_spawner/random_slime/volatile
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index 839082c55e..3a66268bd3 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -36,7 +36,7 @@
throw_range = 5
materials = list(MAT_METAL=500)
breakouttime = 600 //Deciseconds = 60s = 1 minute
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/cuffsound = 'sound/weapons/handcuffs.ogg'
var/trashtype = null //for disposable cuffs
diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm
index d67a3c8333..c626ba44cc 100644
--- a/code/game/objects/items/kitchen.dm
+++ b/code/game/objects/items/kitchen.dm
@@ -26,7 +26,7 @@
flags_1 = CONDUCT_1
attack_verb = list("attacked", "stabbed", "poked")
hitsound = 'sound/weapons/bladeslice.ogg'
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
var/datum/reagent/forkload //used to eat omelette
/obj/item/kitchen/fork/suicide_act(mob/living/carbon/user)
@@ -70,7 +70,7 @@
materials = list(MAT_METAL=12000)
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
sharpness = IS_SHARP_ACCURATE
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/bayonet = FALSE //Can this be attached to a gun?
/obj/item/kitchen/knife/attack(mob/living/carbon/M, mob/living/carbon/user)
@@ -155,7 +155,7 @@
throwforce = 12//fuck git
materials = list()
attack_verb = list("shanked", "shivved")
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/kitchen/rollingpin
name = "rolling pin"
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index 2f9e4231df..74ac616646 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -2,7 +2,7 @@
hitsound_on = 'sound/weapons/blade1.ogg'
heat = 3500
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
resistance_flags = FIRE_PROOF
var/brightness_on = 3
diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm
index 4b6557fde1..10f3cbf810 100644
--- a/code/game/objects/items/pneumaticCannon.dm
+++ b/code/game/objects/items/pneumaticCannon.dm
@@ -13,7 +13,7 @@
item_state = "bulldog"
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 60, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 50)
var/maxWeightClass = 20 //The max weight of items that can fit into the cannon
var/loadedWeightClass = 0 //The weight of items currently in the cannon
var/obj/item/tank/internals/tank = null //The gas tank that is drawn from to fire things
diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/powerfist.dm
index e5bc6ea715..210a6d6a33 100644
--- a/code/game/objects/items/powerfist.dm
+++ b/code/game/objects/items/powerfist.dm
@@ -11,7 +11,7 @@
throwforce = 10
throw_range = 7
w_class = WEIGHT_CLASS_NORMAL
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 40)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 40)
resistance_flags = FIRE_PROOF
var/click_delay = 1.5
var/fisto_setting = 1
diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm
index b25184c4b1..1a4c2f5674 100644
--- a/code/game/objects/items/religion.dm
+++ b/code/game/objects/items/religion.dm
@@ -233,7 +233,7 @@
w_class = WEIGHT_CLASS_BULKY
slowdown = 2.0 //gotta pretend we're balanced.
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 40, bomb = 60, bio = 0, rad = 0, fire = 60, acid = 60)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60)
/obj/item/clothing/suit/armor/plate/crusader/red
icon_state = "crusader-red"
@@ -247,7 +247,7 @@
icon_state = "crusader"
w_class = WEIGHT_CLASS_NORMAL
flags_inv = HIDEHAIR|HIDEEARS|HIDEFACE
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 40, bomb = 60, bio = 0, rad = 0, fire = 60, acid = 60)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60)
/obj/item/clothing/head/helmet/plate/crusader/blue
icon_state = "crusader-blue"
@@ -261,7 +261,7 @@
desc = "A religious-looking hat."
alternate_worn_icon = 'icons/mob/large-worn-icons/64x64/head.dmi'
flags_1 = 0
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 50, bomb = 70, bio = 50, rad = 50, fire = 60, acid = 60) //religion protects you from disease and radiation, honk.
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 50, "bomb" = 70, "bio" = 50, "rad" = 50, "fire" = 60, "acid" = 60) //religion protects you from disease and radiation, honk.
worn_x_dimension = 64
worn_y_dimension = 64
@@ -320,7 +320,7 @@
desc = "Metal boots, they look heavy."
icon_state = "crusader"
w_class = WEIGHT_CLASS_NORMAL
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 40, bomb = 60, bio = 0, rad = 0, fire = 60, acid = 60) //does this even do anything on boots?
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //does this even do anything on boots?
flags_1 = NOSLIP_1
cold_protection = FEET
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 808063d0e2..82fbab128c 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -397,7 +397,7 @@
if(..())
return
- if(locate(/obj/item/borg/upgrade/expand, R))
+ if(R.hasExpanded)
to_chat(usr, "This unit already has an expand module installed!")
return
@@ -417,5 +417,6 @@
R.anchored = FALSE
R.notransform = FALSE
R.resize = 2
+ R.hasExpanded = TRUE
R.update_transform()
return TRUE
diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm
index 8baa73368e..628ffe4de0 100644
--- a/code/game/objects/items/shields.dm
+++ b/code/game/objects/items/shields.dm
@@ -1,7 +1,7 @@
/obj/item/shield
name = "shield"
block_chance = 50
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 0, bomb = 30, bio = 0, rad = 0, fire = 80, acid = 70)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
/obj/item/shield/riot
name = "riot shield"
diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm
index 38a5ba4cec..365395f1ee 100644
--- a/code/game/objects/items/singularityhammer.dm
+++ b/code/game/objects/items/singularityhammer.dm
@@ -1,112 +1,112 @@
-/obj/item/twohanded/singularityhammer
- name = "singularity hammer"
- desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows."
- icon_state = "mjollnir0"
- lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
- flags_1 = CONDUCT_1
- slot_flags = SLOT_BACK
- force = 5
- force_unwielded = 5
- force_wielded = 20
- throwforce = 15
- throw_range = 1
- w_class = WEIGHT_CLASS_HUGE
- var/charged = 5
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 0, bomb = 50, bio = 0, rad = 0, fire = 100, acid = 100)
- resistance_flags = FIRE_PROOF | ACID_PROOF
- force_string = "LORD SINGULOTH HIMSELF"
-
-/obj/item/twohanded/singularityhammer/New()
- ..()
- START_PROCESSING(SSobj, src)
-
-/obj/item/twohanded/singularityhammer/Destroy()
- STOP_PROCESSING(SSobj, src)
- return ..()
-
-/obj/item/twohanded/singularityhammer/process()
- if(charged < 5)
- charged++
- return
-
-/obj/item/twohanded/singularityhammer/update_icon() //Currently only here to fuck with the on-mob icons.
- icon_state = "mjollnir[wielded]"
- return
-
-/obj/item/twohanded/singularityhammer/proc/vortex(turf/pull, mob/wielder)
- for(var/atom/X in orange(5,pull))
- if(ismovableatom(X))
- var/atom/movable/A = X
- if(A == wielder)
- continue
- if(A && !A.anchored && !ishuman(X))
- step_towards(A,pull)
- step_towards(A,pull)
- step_towards(A,pull)
- else if(ishuman(X))
- var/mob/living/carbon/human/H = X
- if(istype(H.shoes, /obj/item/clothing/shoes/magboots))
- var/obj/item/clothing/shoes/magboots/M = H.shoes
- if(M.magpulse)
- continue
- H.apply_effect(20, KNOCKDOWN, 0)
- step_towards(H,pull)
- step_towards(H,pull)
- step_towards(H,pull)
- return
-
-/obj/item/twohanded/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
- if(!proximity)
- return
- if(wielded)
- if(charged == 5)
- charged = 0
- if(istype(A, /mob/living/))
- var/mob/living/Z = A
- Z.take_bodypart_damage(20,0)
- playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
- var/turf/target = get_turf(A)
- vortex(target,user)
-
-/obj/item/twohanded/mjollnir
- name = "Mjolnir"
- desc = "A weapon worthy of a god, able to strike with the force of a lightning bolt. It crackles with barely contained energy."
- icon_state = "mjollnir0"
- lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
- flags_1 = CONDUCT_1
- slot_flags = SLOT_BACK
- force = 5
- force_unwielded = 5
- force_wielded = 25
- throwforce = 30
- throw_range = 7
- w_class = WEIGHT_CLASS_HUGE
-
-/obj/item/twohanded/mjollnir/proc/shock(mob/living/target)
- target.Stun(60)
- var/datum/effect_system/lightning_spread/s = new /datum/effect_system/lightning_spread
- s.set_up(5, 1, target.loc)
- s.start()
- target.visible_message("[target.name] was shocked by [src]!", \
- "You feel a powerful shock course through your body sending you flying!", \
- "You hear a heavy electrical crack!")
- var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src)))
- target.throw_at(throw_target, 200, 4)
- return
-
-/obj/item/twohanded/mjollnir/attack(mob/living/M, mob/user)
- ..()
- if(wielded)
- playsound(src.loc, "sparks", 50, 1)
- shock(M)
-
-/obj/item/twohanded/mjollnir/throw_impact(atom/target)
- . = ..()
- if(isliving(target))
- shock(target)
-
-/obj/item/twohanded/mjollnir/update_icon() //Currently only here to fuck with the on-mob icons.
- icon_state = "mjollnir[wielded]"
- return
+/obj/item/twohanded/singularityhammer
+ name = "singularity hammer"
+ desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows."
+ icon_state = "mjollnir0"
+ lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
+ flags_1 = CONDUCT_1
+ slot_flags = SLOT_BACK
+ force = 5
+ force_unwielded = 5
+ force_wielded = 20
+ throwforce = 15
+ throw_range = 1
+ w_class = WEIGHT_CLASS_HUGE
+ var/charged = 5
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+ force_string = "LORD SINGULOTH HIMSELF"
+
+/obj/item/twohanded/singularityhammer/New()
+ ..()
+ START_PROCESSING(SSobj, src)
+
+/obj/item/twohanded/singularityhammer/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/twohanded/singularityhammer/process()
+ if(charged < 5)
+ charged++
+ return
+
+/obj/item/twohanded/singularityhammer/update_icon() //Currently only here to fuck with the on-mob icons.
+ icon_state = "mjollnir[wielded]"
+ return
+
+/obj/item/twohanded/singularityhammer/proc/vortex(turf/pull, mob/wielder)
+ for(var/atom/X in orange(5,pull))
+ if(ismovableatom(X))
+ var/atom/movable/A = X
+ if(A == wielder)
+ continue
+ if(A && !A.anchored && !ishuman(X))
+ step_towards(A,pull)
+ step_towards(A,pull)
+ step_towards(A,pull)
+ else if(ishuman(X))
+ var/mob/living/carbon/human/H = X
+ if(istype(H.shoes, /obj/item/clothing/shoes/magboots))
+ var/obj/item/clothing/shoes/magboots/M = H.shoes
+ if(M.magpulse)
+ continue
+ H.apply_effect(20, KNOCKDOWN, 0)
+ step_towards(H,pull)
+ step_towards(H,pull)
+ step_towards(H,pull)
+ return
+
+/obj/item/twohanded/singularityhammer/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
+ if(!proximity)
+ return
+ if(wielded)
+ if(charged == 5)
+ charged = 0
+ if(istype(A, /mob/living/))
+ var/mob/living/Z = A
+ Z.take_bodypart_damage(20,0)
+ playsound(user, 'sound/weapons/marauder.ogg', 50, 1)
+ var/turf/target = get_turf(A)
+ vortex(target,user)
+
+/obj/item/twohanded/mjollnir
+ name = "Mjolnir"
+ desc = "A weapon worthy of a god, able to strike with the force of a lightning bolt. It crackles with barely contained energy."
+ icon_state = "mjollnir0"
+ lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
+ flags_1 = CONDUCT_1
+ slot_flags = SLOT_BACK
+ force = 5
+ force_unwielded = 5
+ force_wielded = 25
+ throwforce = 30
+ throw_range = 7
+ w_class = WEIGHT_CLASS_HUGE
+
+/obj/item/twohanded/mjollnir/proc/shock(mob/living/target)
+ target.Stun(60)
+ var/datum/effect_system/lightning_spread/s = new /datum/effect_system/lightning_spread
+ s.set_up(5, 1, target.loc)
+ s.start()
+ target.visible_message("[target.name] was shocked by [src]!", \
+ "You feel a powerful shock course through your body sending you flying!", \
+ "You hear a heavy electrical crack!")
+ var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src)))
+ target.throw_at(throw_target, 200, 4)
+ return
+
+/obj/item/twohanded/mjollnir/attack(mob/living/M, mob/user)
+ ..()
+ if(wielded)
+ playsound(src.loc, "sparks", 50, 1)
+ shock(M)
+
+/obj/item/twohanded/mjollnir/throw_impact(atom/target)
+ . = ..()
+ if(isliving(target))
+ shock(target)
+
+/obj/item/twohanded/mjollnir/update_icon() //Currently only here to fuck with the on-mob icons.
+ icon_state = "mjollnir[wielded]"
+ return
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index c0045c721b..d344f5eeda 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -19,7 +19,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
singular_name = "glass sheet"
icon_state = "sheet-glass"
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100)
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/glass
grind_results = list("silicon" = 20)
@@ -131,7 +131,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
singular_name = "reinforced glass sheet"
icon_state = "sheet-rglass"
materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT/2, MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 70, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100)
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/rglass
grind_results = list("silicon" = 20, "iron" = 10)
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 0c0b942083..91b3ebeb55 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -157,7 +157,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \
materials = list(MAT_METAL=2000, MAT_PLASMA=2000)
throwforce = 10
flags_1 = CONDUCT_1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 80)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80)
resistance_flags = FIRE_PROOF
merge_type = /obj/item/stack/sheet/plasteel
grind_results = list("iron" = 20, "plasma" = 20)
@@ -208,7 +208,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
icon_state = "sheet-wood"
icon = 'icons/obj/stack_objects.dmi'
sheettype = "wood"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
resistance_flags = FLAMMABLE
merge_type = /obj/item/stack/sheet/mineral/wood
novariants = TRUE
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index 4e15cea273..2231207556 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -206,7 +206,7 @@
flags_1 = CONDUCT_1
turf_type = /turf/open/floor/plasteel
mineralType = "metal"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
resistance_flags = FIRE_PROOF
/obj/item/stack/tile/plasteel/cyborg
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index 6691462888..26c2c0b9db 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -42,7 +42,7 @@
flags_2 = NO_MAT_REDEMPTION_2
var/pshoom = 'sound/items/pshoom.ogg'
var/alt_sound = 'sound/items/pshoom_2.ogg'
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 60, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 50)
/obj/item/storage/backpack/holding/suicide_act(mob/living/user)
diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm
index 05599597af..9f42a7c370 100644
--- a/code/game/objects/items/stunbaton.dm
+++ b/code/game/objects/items/stunbaton.dm
@@ -10,7 +10,7 @@
throwforce = 7
w_class = WEIGHT_CLASS_NORMAL
attack_verb = list("beaten")
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 50, bio = 0, rad = 0, fire = 80, acid = 80)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
var/stunforce = 140
var/status = 0
diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm
index 4b20b9695f..2e512c3ec4 100644
--- a/code/game/objects/items/tanks/tanks.dm
+++ b/code/game/objects/items/tanks/tanks.dm
@@ -13,7 +13,7 @@
throw_range = 4
materials = list(MAT_METAL = 500)
actions_types = list(/datum/action/item_action/set_internals)
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 0, rad = 0, fire = 80, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 30)
var/datum/gas_mixture/air_contents = null
var/distribute_pressure = ONE_ATMOSPHERE
var/integrity = 3
diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm
index dc0540307e..2d54eec334 100644
--- a/code/game/objects/items/tanks/watertank.dm
+++ b/code/game/objects/items/tanks/watertank.dm
@@ -10,7 +10,7 @@
slowdown = 1
actions_types = list(/datum/action/item_action/toggle_mister)
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
resistance_flags = FIRE_PROOF
var/obj/item/noz
diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm
index 44c44281c6..2ef3e52ff1 100644
--- a/code/game/objects/items/teleportation.dm
+++ b/code/game/objects/items/teleportation.dm
@@ -140,7 +140,7 @@ Frequency:
throw_speed = 3
throw_range = 5
materials = list(MAT_METAL=10000)
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 30, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/list/active_portal_pairs
var/max_portal_pairs = 3
diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm
index cf2baba081..ed6233a0b6 100644
--- a/code/game/objects/items/tools/crowbar.dm
+++ b/code/game/objects/items/tools/crowbar.dm
@@ -11,11 +11,12 @@
force = 5
throwforce = 7
w_class = WEIGHT_CLASS_SMALL
- materials = list(MAT_METAL=50)
+ materials = list(MAT_METAL=50)
+
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
tool_behaviour = TOOL_CROWBAR
toolspeed = 1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
/obj/item/crowbar/suicide_act(mob/user)
user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -39,7 +40,8 @@
icon = 'icons/obj/abductor.dmi'
usesound = 'sound/weapons/sonic_jackhammer.ogg'
icon_state = "crowbar"
- toolspeed = 0.1
+ toolspeed = 0.1
+
/obj/item/crowbar/large
name = "crowbar"
@@ -67,7 +69,8 @@
item_state = "jawsoflife"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
- materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
+ materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
+
usesound = 'sound/items/jaws_pry.ogg'
force = 15
toolspeed = 0.25
diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm
index ea7a762b1e..530580fab5 100644
--- a/code/game/objects/items/tools/screwdriver.dm
+++ b/code/game/objects/items/tools/screwdriver.dm
@@ -19,7 +19,7 @@
usesound = list('sound/items/screwdriver.ogg', 'sound/items/screwdriver2.ogg')
tool_behaviour = TOOL_SCREWDRIVER
toolspeed = 1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
var/random_color = TRUE //if the screwdriver uses random coloring
var/static/list/screwdriver_colors = list(
"blue" = rgb(24, 97, 213),
diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm
index 7425835764..61b44d658e 100644
--- a/code/game/objects/items/tools/weldingtool.dm
+++ b/code/game/objects/items/tools/weldingtool.dm
@@ -18,7 +18,7 @@
throw_speed = 3
throw_range = 5
w_class = WEIGHT_CLASS_SMALL
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
resistance_flags = FIRE_PROOF
materials = list(MAT_METAL=70, MAT_GLASS=30)
@@ -357,5 +357,5 @@
if(get_fuel() < max_fuel && nextrefueltick < world.time)
nextrefueltick = world.time + 10
reagents.add_reagent("welding_fuel", 1)
-
-#undef WELDER_FUEL_BURN_INTERVAL
\ No newline at end of file
+
+#undef WELDER_FUEL_BURN_INTERVAL
diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm
index de5eb557dc..d2981fc839 100644
--- a/code/game/objects/items/tools/wirecutters.dm
+++ b/code/game/objects/items/tools/wirecutters.dm
@@ -19,7 +19,7 @@
tool_behaviour = TOOL_WIRECUTTER
toolspeed = 1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
var/random_color = TRUE
var/static/list/wirecutter_colors = list(
"blue" = "#1861d5",
diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm
index 2b3c6e7bbe..6e399c0909 100644
--- a/code/game/objects/items/tools/wrench.dm
+++ b/code/game/objects/items/tools/wrench.dm
@@ -11,11 +11,12 @@
throwforce = 7
w_class = WEIGHT_CLASS_SMALL
usesound = 'sound/items/ratchet.ogg'
- materials = list(MAT_METAL=150)
+ materials = list(MAT_METAL=150)
+
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
tool_behaviour = TOOL_WRENCH
toolspeed = 1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
/obj/item/wrench/suicide_act(mob/user)
user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!")
@@ -40,7 +41,8 @@
icon = 'icons/obj/abductor.dmi'
icon_state = "wrench"
usesound = 'sound/effects/empulse.ogg'
- toolspeed = 0.1
+ toolspeed = 0.1
+
/obj/item/wrench/power
name = "hand drill"
@@ -50,7 +52,8 @@
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
usesound = 'sound/items/drill_use.ogg'
- materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
//done for balance reasons, making them high value for research, but harder to get
+ materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
+ //done for balance reasons, making them high value for research, but harder to get
force = 8 //might or might not be too high, subject to change
w_class = WEIGHT_CLASS_SMALL
throwforce = 8
@@ -73,7 +76,8 @@
desc = "A medical wrench with common(medical?) uses. Can be found in your hand."
icon_state = "wrench_medical"
force = 2 //MEDICAL
- throwforce = 4
+ throwforce = 4
+
attack_verb = list("wrenched", "medicaled", "tapped", "jabbed", "whacked")
/obj/item/wrench/medical/suicide_act(mob/living/user)
diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm
index a6f4a52f69..8962e7248d 100644
--- a/code/game/objects/items/twohanded.dm
+++ b/code/game/objects/items/twohanded.dm
@@ -231,7 +231,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
sharpness = IS_SHARP
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
resistance_flags = FIRE_PROOF
/obj/item/twohanded/fireaxe/update_icon() //Currently only here to fuck with the on-mob icons.
@@ -280,7 +280,7 @@
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
block_chance = 75
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
resistance_flags = FIRE_PROOF
var/hacked = FALSE
var/brightness_on = 6 //TWICE AS BRIGHT AS A REGULAR ESWORD
@@ -466,7 +466,7 @@
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
sharpness = IS_SHARP
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
var/obj/item/grenade/explosive = null
var/war_cry = "AAAAARGH!!!"
@@ -650,7 +650,7 @@
hitsound = 'sound/weapons/bladeslice.ogg'
sharpness = IS_SHARP
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
resistance_flags = FIRE_PROOF
/obj/item/twohanded/pitchfork/demonic
diff --git a/code/game/objects/items/vending_items.dm b/code/game/objects/items/vending_items.dm
index 9321cfc3f0..42b8757b7e 100644
--- a/code/game/objects/items/vending_items.dm
+++ b/code/game/objects/items/vending_items.dm
@@ -14,7 +14,7 @@
throw_speed = 1
throw_range = 7
w_class = WEIGHT_CLASS_BULKY
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 70, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 30)
var/charges = list(0, 0, 0) //how many restocking "charges" the refill has for standard/contraband/coin products
var/init_charges = list(0, 0, 0)
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 34260eafe0..c476611ff9 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -11,7 +11,7 @@
throw_range = 7
attack_verb = list("banned")
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 70)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
resistance_flags = FIRE_PROOF
/obj/item/banhammer/suicide_act(mob/user)
@@ -63,7 +63,7 @@
block_chance = 50
sharpness = IS_SHARP
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/item/claymore/suicide_act(mob/user)
@@ -210,7 +210,7 @@
block_chance = 50
sharpness = IS_SHARP
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/item/katana/cursed
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 56b5469c86..39ad436b05 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -10,7 +10,7 @@
/obj/structure/Initialize()
if (!armor)
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
. = ..()
if(smooth)
queue_smooth(src)
diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm
index c9c9e8c931..41ab647897 100644
--- a/code/game/objects/structures/barsigns.dm
+++ b/code/game/objects/structures/barsigns.dm
@@ -6,7 +6,7 @@
req_access = list(ACCESS_BAR)
max_integrity = 500
integrity_failure = 250
- armor = list(melee = 20, bullet = 20, laser = 20, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
buildable_sign = 0
var/list/barsigns=list()
var/list/hiddensigns
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 3ebac6f65f..52fe7b9bf9 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -15,7 +15,7 @@
var/wall_mounted = 0 //never solid (You can always pass over it)
max_integrity = 200
integrity_failure = 50
- armor = list(melee = 20, bullet = 10, laser = 10, energy = 0, bomb = 10, bio = 0, rad = 0, fire = 70, acid = 60)
+ armor = list("melee" = 20, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60)
var/breakout_time = 1200
var/message_cooldown
var/can_weld_shut = TRUE
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index 215384054b..dd503d76f7 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -4,7 +4,7 @@
locked = TRUE
icon_state = "secure"
max_integrity = 250
- armor = list(melee = 30, bullet = 50, laser = 50, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80)
+ armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
secure = TRUE
/obj/structure/closet/secure_closet/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm
index 57cc82662e..d52bd183ac 100644
--- a/code/game/objects/structures/crates_lockers/crates/secure.dm
+++ b/code/game/objects/structures/crates_lockers/crates/secure.dm
@@ -5,7 +5,7 @@
secure = TRUE
locked = TRUE
max_integrity = 500
- armor = list(melee = 30, bullet = 50, laser = 50, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80)
+ armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
var/tamperproof = 0
/obj/structure/closet/crate/secure/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index a4efc89701..94e6d62747 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -6,7 +6,7 @@
density = TRUE
anchored = TRUE
resistance_flags = ACID_PROOF
- armor = list(melee = 30, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 0, rad = 0, fire = 70, acid = 100)
+ armor = list("melee" = 30, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100)
max_integrity = 200
integrity_failure = 50
var/obj/item/showpiece = null
diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm
index a75056c31a..b9f0da2b1b 100644
--- a/code/game/objects/structures/fireaxe.dm
+++ b/code/game/objects/structures/fireaxe.dm
@@ -6,7 +6,7 @@
icon_state = "fireaxe"
anchored = TRUE
density = FALSE
- armor = list(melee = 50, bullet = 20, laser = 0, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 90, acid = 50)
+ armor = list("melee" = 50, "bullet" = 20, "laser" = 0, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50)
var/locked = TRUE
var/open = FALSE
max_integrity = 150
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 733ec9952b..f9828ea52a 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -8,7 +8,7 @@
flags_1 = CONDUCT_1
pressure_resistance = 5*ONE_ATMOSPHERE
layer = BELOW_OBJ_LAYER
- armor = list(melee = 50, bullet = 70, laser = 70, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 0, acid = 0)
+ armor = list("melee" = 50, "bullet" = 70, "laser" = 70, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
max_integrity = 50
integrity_failure = 20
var/rods_type = /obj/item/stack/rods
diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm
index 38981d1d99..b9a750d2df 100644
--- a/code/game/objects/structures/holosign.dm
+++ b/code/game/objects/structures/holosign.dm
@@ -6,7 +6,7 @@
icon = 'icons/effects/effects.dmi'
anchored = TRUE
max_integrity = 1
- armor = list(melee = 0, bullet = 50, laser = 50, energy = 50, bomb = 0, bio = 0, rad = 0, fire = 20, acid = 20)
+ armor = list("melee" = 0, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 20)
var/obj/item/holosign_creator/projector
/obj/structure/holosign/New(loc, source_projector)
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 83549a56d2..c6273f3049 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -5,7 +5,7 @@
icon_state = "lattice"
density = FALSE
anchored = TRUE
- armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 50)
+ armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
max_integrity = 50
layer = LATTICE_LAYER //under pipes
var/number_of_rods = 1
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index 35d1008474..7ae10816a6 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -15,7 +15,7 @@
var/isSwitchingStates = 0
var/close_delay = -1 //-1 if does not auto close.
max_integrity = 200
- armor = list(melee = 10, bullet = 0, laser = 0, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 50, acid = 50)
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 50, "acid" = 50)
var/sheetType = /obj/item/stack/sheet/metal
var/sheetAmount = 7
var/openSound = 'sound/effects/stonedoor_openclose.ogg'
diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm
index 99903901bd..bd2c888b3c 100644
--- a/code/game/objects/structures/plasticflaps.dm
+++ b/code/game/objects/structures/plasticflaps.dm
@@ -3,7 +3,7 @@
desc = "Definitely can't get past those. No way."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "plasticflaps"
- armor = list(melee = 100, bullet = 80, laser = 80, energy = 100, bomb = 50, bio = 100, rad = 100, fire = 50, acid = 50)
+ armor = list("melee" = 100, "bullet" = 80, "laser" = 80, "energy" = 100, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 50, "acid" = 50)
density = FALSE
anchored = TRUE
layer = ABOVE_MOB_LAYER
diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm
index a6e8135dc5..35cb82c697 100644
--- a/code/game/objects/structures/reflector.dm
+++ b/code/game/objects/structures/reflector.dm
@@ -72,6 +72,8 @@
/obj/structure/reflector/proc/auto_reflect(obj/item/projectile/P, pdir, turf/ploc, pangle)
P.ignore_source_check = TRUE
+ P.range = P.decayedRange
+ P.decayedRange = max(P.decayedRange--, 0)
return -1
/obj/structure/reflector/attackby(obj/item/W, mob/user, params)
diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm
index c3547116fd..5a3488225e 100644
--- a/code/game/objects/structures/signs/_signs.dm
+++ b/code/game/objects/structures/signs/_signs.dm
@@ -5,7 +5,7 @@
density = FALSE
layer = SIGN_LAYER
max_integrity = 100
- armor = list(melee = 50, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/buildable_sign = 1 //unwrenchable and modifiable
/obj/structure/sign/ComponentInitialize()
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 7cb73ba52b..09ad92e396 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -159,7 +159,7 @@
canSmoothWith = null
max_integrity = 70
resistance_flags = ACID_PROOF
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
var/list/debris = list()
/obj/structure/table/glass/New()
@@ -292,7 +292,7 @@
canSmoothWith = list(/obj/structure/table/reinforced, /obj/structure/table)
max_integrity = 200
integrity_failure = 50
- armor = list(melee = 10, bullet = 30, laser = 30, energy = 100, bomb = 20, bio = 0, rad = 0, fire = 80, acid = 70)
+ armor = list("melee" = 10, "bullet" = 30, "laser" = 30, "energy" = 100, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
/obj/structure/table/reinforced/deconstruction_hints(mob/user)
if(deconstruction_ready)
diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm
index 257ae07a55..b169fc0b2c 100644
--- a/code/game/shuttle_engines.dm
+++ b/code/game/shuttle_engines.dm
@@ -8,7 +8,7 @@
icon = 'icons/turf/shuttle.dmi'
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
max_integrity = 500
- armor = list(melee = 100, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70) //default + ignores melee
+ armor = list("melee" = 100, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70) //default + ignores melee
/obj/structure/shuttle/engine
name = "engine"
diff --git a/code/game/turfs/simulated/dirtystation.dm b/code/game/turfs/simulated/dirtystation.dm
index c411d4b6b1..e29d75a248 100644
--- a/code/game/turfs/simulated/dirtystation.dm
+++ b/code/game/turfs/simulated/dirtystation.dm
@@ -28,8 +28,6 @@
var/static/list/high_dirt_areas = typecacheof(list(/area/science/test_area,
/area/mine/production,
/area/mine/living_quarters,
- /area/mine/north_outpost,
- /area/mine/west_outpost,
/area/ruin/space))
if(is_type_in_typecache(A, high_dirt_areas))
new /obj/effect/decal/cleanable/dirt(src) //vanilla, but it works
@@ -84,7 +82,6 @@
//Areas where gibs will be present. Robusting probably happened some time ago.
var/static/list/gib_covered_areas = typecacheof(list(/area/ai_monitored/turret_protected,
- /area/prison,
/area/security,
/area/crew_quarters/heads/hos))
if(is_type_in_typecache(A, gib_covered_areas))
diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm
index e446eb3b2c..ba93f18a8d 100644
--- a/code/game/turfs/space/space.dm
+++ b/code/game/turfs/space/space.dm
@@ -149,6 +149,10 @@
stoplag()//Let a diagonal move finish, if necessary
A.newtonian_move(A.inertia_dir)
+
+/turf/open/space/MakeSlippery(wet_setting = TURF_WET_WATER, min_wet_time = 0, wet_time_to_add = 0)
+ return
+
/turf/open/space/handle_slip()
return
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 26452e0945..dcc8be412f 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -13,7 +13,7 @@
icon_state = "vest_stealth"
item_state = "armor"
blood_overlay_type = "armor"
- armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15, fire = 70, acid = 70)
+ armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 15, "bomb" = 15, "bio" = 15, "rad" = 15, "fire" = 70, "acid" = 70)
actions_types = list(/datum/action/item_action/hands_free/activate)
allowed = list(
/obj/item/device/abductor,
@@ -26,8 +26,8 @@
var/stealth_active = 0
var/combat_cooldown = 10
var/datum/icon_snapshot/disguise
- var/stealth_armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15, fire = 70, acid = 70)
- var/combat_armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 50, rad = 50, fire = 90, acid = 90)
+ var/stealth_armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 15, "bomb" = 15, "bio" = 15, "rad" = 15, "fire" = 70, "acid" = 70)
+ var/combat_armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 50, "bio" = 50, "rad" = 50, "fire" = 90, "acid" = 90)
/obj/item/clothing/suit/armor/abductor/vest/proc/toggle_nodrop()
flags_1 ^= NODROP_1
diff --git a/code/modules/antagonists/blob/blob/blobs/core.dm b/code/modules/antagonists/blob/blob/blobs/core.dm
index 9412e8582f..1140f540c4 100644
--- a/code/modules/antagonists/blob/blob/blobs/core.dm
+++ b/code/modules/antagonists/blob/blob/blobs/core.dm
@@ -4,7 +4,7 @@
icon_state = "blank_blob"
desc = "A huge, pulsating yellow mass."
max_integrity = 400
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 75, acid = 90)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 90)
explosion_block = 6
point_return = -1
health_regen = 0 //we regen in Life() instead of when pulsed
diff --git a/code/modules/antagonists/blob/blob/blobs/node.dm b/code/modules/antagonists/blob/blob/blobs/node.dm
index a6bcd359a8..7d38ccd17f 100644
--- a/code/modules/antagonists/blob/blob/blobs/node.dm
+++ b/code/modules/antagonists/blob/blob/blobs/node.dm
@@ -4,7 +4,7 @@
icon_state = "blank_blob"
desc = "A large, pulsating yellow mass."
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 65, acid = 90)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 65, "acid" = 90)
health_regen = 3
point_return = 25
diff --git a/code/modules/antagonists/blob/blob/blobs/shield.dm b/code/modules/antagonists/blob/blob/blobs/shield.dm
index 551ec5d418..a83f4294b2 100644
--- a/code/modules/antagonists/blob/blob/blobs/shield.dm
+++ b/code/modules/antagonists/blob/blob/blobs/shield.dm
@@ -1,33 +1,33 @@
-/obj/structure/blob/shield
- name = "strong blob"
- icon = 'icons/mob/blob.dmi'
- icon_state = "blob_shield"
- desc = "A solid wall of slightly twitching tendrils."
- max_integrity = 150
- brute_resist = 0.25
- explosion_block = 3
- point_return = 4
- atmosblock = TRUE
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 90, acid = 90)
-
-/obj/structure/blob/shield/scannerreport()
- if(atmosblock)
- return "Will prevent the spread of atmospheric changes."
- return "N/A"
-
-/obj/structure/blob/shield/core
- point_return = 0
-
-/obj/structure/blob/shield/update_icon()
- ..()
- if(obj_integrity <= 75)
- icon_state = "blob_shield_damaged"
- name = "weakened strong blob"
- desc = "A wall of twitching tendrils."
- atmosblock = FALSE
- else
- icon_state = initial(icon_state)
- name = initial(name)
- desc = initial(desc)
- atmosblock = TRUE
- air_update_turf(1)
+/obj/structure/blob/shield
+ name = "strong blob"
+ icon = 'icons/mob/blob.dmi'
+ icon_state = "blob_shield"
+ desc = "A solid wall of slightly twitching tendrils."
+ max_integrity = 150
+ brute_resist = 0.25
+ explosion_block = 3
+ point_return = 4
+ atmosblock = TRUE
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
+
+/obj/structure/blob/shield/scannerreport()
+ if(atmosblock)
+ return "Will prevent the spread of atmospheric changes."
+ return "N/A"
+
+/obj/structure/blob/shield/core
+ point_return = 0
+
+/obj/structure/blob/shield/update_icon()
+ ..()
+ if(obj_integrity <= 75)
+ icon_state = "blob_shield_damaged"
+ name = "weakened strong blob"
+ desc = "A wall of twitching tendrils."
+ atmosblock = FALSE
+ else
+ icon_state = initial(icon_state)
+ name = initial(name)
+ desc = initial(desc)
+ atmosblock = TRUE
+ air_update_turf(1)
diff --git a/code/modules/antagonists/blob/blob/theblob.dm b/code/modules/antagonists/blob/blob/theblob.dm
index c110ef272c..80d24bb080 100644
--- a/code/modules/antagonists/blob/blob/theblob.dm
+++ b/code/modules/antagonists/blob/blob/theblob.dm
@@ -11,7 +11,7 @@
CanAtmosPass = ATMOS_PASS_PROC
var/point_return = 0 //How many points the blob gets back when it removes a blob of that type. If less than 0, blob cannot be removed.
max_integrity = 30
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 70)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
var/health_regen = 2 //how much health this blob regens when pulsed
var/pulse_timestamp = 0 //we got pulsed when?
var/heal_timestamp = 0 //we got healed when?
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 118c692bc0..dce13f0aaa 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -446,7 +446,7 @@
desc = "A huge, bulky mass of pressure and temperature-resistant organic tissue, evolved to facilitate space travel."
flags_1 = STOPSPRESSUREDMAGE_1 | NODROP_1 | DROPDEL_1 //Not THICKMATERIAL_1 because it's organic tissue, so if somebody tries to inject something into it, it still ends up in your blood. (also balance but muh fluff)
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 90, acid = 90) //No armor at all.
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90) //No armor at all.
/obj/item/clothing/suit/space/changeling/Initialize()
. = ..()
@@ -464,7 +464,7 @@
icon_state = "lingspacehelmet"
desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front."
flags_1 = STOPSPRESSUREDMAGE_1 | NODROP_1 | DROPDEL_1 //Again, no THICKMATERIAL_1.
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 90, acid = 90)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90)
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
/***************************************\
@@ -490,7 +490,7 @@
icon_state = "lingarmor"
flags_1 = NODROP_1 | DROPDEL_1
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 10, bio = 4, rad = 0, fire = 90, acid = 90)
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 20, "bomb" = 10, "bio" = 4, "rad" = 0, "fire" = 90, "acid" = 90)
flags_inv = HIDEJUMPSUIT
cold_protection = 0
heat_protection = 0
@@ -505,5 +505,5 @@
desc = "A tough, hard covering of black chitin with transparent chitin in front."
icon_state = "lingarmorhelmet"
flags_1 = NODROP_1 | DROPDEL_1
- armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 10, bio = 4, rad = 0, fire = 90, acid = 90)
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 20, "bomb" = 10, "bio" = 4, "rad" = 0, "fire" = 90, "acid" = 90)
flags_inv = HIDEEARS|HIDEHAIR|HIDEEYES|HIDEFACIALHAIR|HIDEFACE
diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm
index df83ff4890..95ae8ff65f 100644
--- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm
+++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm
@@ -7,7 +7,7 @@
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = FIRE_PROOF | ACID_PROOF
flags_inv = HIDEEARS|HIDEHAIR|HIDEFACE
- armor = list(melee = 50, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 50, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
/obj/item/clothing/head/helmet/clockwork/Initialize()
. = ..()
@@ -20,17 +20,17 @@
/obj/item/clothing/head/helmet/clockwork/ratvar_act()
if(GLOB.ratvar_awakens)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
flags_1 |= STOPSPRESSUREDMAGE_1
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
else if(GLOB.ratvar_approaches)
- armor = list(melee = 70, bullet = 80, laser = -15, energy = 25, bomb = 70, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 70, "bullet" = 80, "laser" = -15, "energy" = 25, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
flags_1 |= STOPSPRESSUREDMAGE_1
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
else
- armor = list(melee = 60, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 60, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
flags_1 &= ~STOPSPRESSUREDMAGE_1
max_heat_protection_temperature = initial(max_heat_protection_temperature)
min_cold_protection_temperature = initial(min_cold_protection_temperature)
@@ -67,7 +67,7 @@
cold_protection = CHEST|GROIN|LEGS
heat_protection = CHEST|GROIN|LEGS
resistance_flags = FIRE_PROOF | ACID_PROOF
- armor = list(melee = 60, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 60, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
allowed = list(/obj/item/clockwork, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor, /obj/item/device/mmi/posibrain/soul_vessel)
/obj/item/clothing/suit/armor/clockwork/Initialize()
@@ -81,17 +81,17 @@
/obj/item/clothing/suit/armor/clockwork/ratvar_act()
if(GLOB.ratvar_awakens)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
flags_1 |= STOPSPRESSUREDMAGE_1
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
else if(GLOB.ratvar_approaches)
- armor = list(melee = 70, bullet = 80, laser = -15, energy = 25, bomb = 70, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 70, "bullet" = 80, "laser" = -15, "energy" = 25, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
flags_1 |= STOPSPRESSUREDMAGE_1
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
else
- armor = list(melee = 60, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 60, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
flags_1 &= ~STOPSPRESSUREDMAGE_1
max_heat_protection_temperature = initial(max_heat_protection_temperature)
min_cold_protection_temperature = initial(min_cold_protection_temperature)
@@ -134,7 +134,7 @@
siemens_coefficient = 0
permeability_coefficient = 0.05
resistance_flags = FIRE_PROOF | ACID_PROOF
- armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 80, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
/obj/item/clothing/gloves/clockwork/Initialize()
. = ..()
@@ -147,12 +147,12 @@
/obj/item/clothing/gloves/clockwork/ratvar_act()
if(GLOB.ratvar_awakens)
- armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
flags_1 |= STOPSPRESSUREDMAGE_1
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
else
- armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 80, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
flags_1 &= ~STOPSPRESSUREDMAGE_1
max_heat_protection_temperature = initial(max_heat_protection_temperature)
min_cold_protection_temperature = initial(min_cold_protection_temperature)
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 6d4a5fce18..459aaa9f2d 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -275,7 +275,7 @@
desc = "A torn, dust-caked hood. Strange letters line the inside."
flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS
flags_cover = HEADCOVERSEYES
- armor = list(melee = 40, bullet = 30, laser = 40,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 20, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10)
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
heat_protection = HEAD
@@ -288,7 +288,7 @@
item_state = "cultrobes"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
- armor = list(melee = 40, bullet = 30, laser = 40,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 20, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10)
flags_inv = HIDEJUMPSUIT
cold_protection = CHEST|GROIN|LEGS|ARMS
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
@@ -321,7 +321,7 @@
item_state = "magus"
desc = "A helm worn by the followers of Nar-Sie."
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES
- armor = list(melee = 30, bullet = 30, laser = 30,energy = 20, bomb = 0, bio = 0, rad = 0, fire = 10, acid = 10)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30,"energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 10)
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
/obj/item/clothing/suit/magusred
@@ -331,7 +331,7 @@
item_state = "magusred"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
- armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0, fire = 10, acid = 10)
+ armor = list("melee" = 50, "bullet" = 30, "laser" = 50,"energy" = 20, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
/obj/item/clothing/head/helmet/space/hardsuit/cult
@@ -339,7 +339,7 @@
desc = "A heavily-armored helmet worn by warriors of the Nar-Sien cult. It can withstand hard vacuum."
icon_state = "cult_helmet"
item_state = "cult_helmet"
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 40, acid = 75)
+ armor = list("melee" = 60, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75)
brightness_on = 0
actions_types = list()
@@ -350,7 +350,7 @@
desc = "A heavily-armored exosuit worn by warriors of the Nar-Sien cult. It can withstand hard vacuum."
w_class = WEIGHT_CLASS_BULKY
allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/tank/internals/)
- armor = list(melee = 70, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 40, acid = 75)
+ armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult
/obj/item/sharpener/cult
@@ -374,7 +374,7 @@
icon_state = "cult_armor"
item_state = "cult_armor"
w_class = WEIGHT_CLASS_BULKY
- armor = list(melee = 50, bullet = 40, laser = 50,energy = 30, bomb = 50, bio = 30, rad = 30, fire = 50, acid = 60)
+ armor = list("melee" = 50, "bullet" = 40, "laser" = 50,"energy" = 30, "bomb" = 50, "bio" = 30, "rad" = 30, "fire" = 50, "acid" = 60)
body_parts_covered = CHEST|GROIN|LEGS|ARMS
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
var/current_charges = 3
@@ -384,7 +384,7 @@
name = "empowered cultist armor"
desc = "Empowered garb which creates a powerful shield around the user."
icon_state = "cult_hoodalt"
- armor = list(melee = 50, bullet = 40, laser = 50,energy = 30, bomb = 50, bio = 30, rad = 30, fire = 50, acid = 50)
+ armor = list("melee" = 50, "bullet" = 40, "laser" = 50,"energy" = 30, "bomb" = 50, "bio" = 30, "rad" = 30, "fire" = 50, "acid" = 50)
body_parts_covered = HEAD
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
@@ -428,7 +428,7 @@
flags_inv = HIDEJUMPSUIT
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
body_parts_covered = CHEST|GROIN|LEGS|ARMS
- armor = list(melee = -50, bullet = -50, laser = -50,energy = -50, bomb = -50, bio = -50, rad = -50, fire = 0, acid = 0)
+ armor = list("melee" = -50, "bullet" = -50, "laser" = -50,"energy" = -50, "bomb" = -50, "bio" = -50, "rad" = -50, "fire" = 0, "acid" = 0)
slowdown = -1
hoodtype = /obj/item/clothing/head/hooded/berserkerhood
@@ -438,7 +438,7 @@
icon_state = "culthood"
body_parts_covered = HEAD
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
- armor = list(melee = -50, bullet = -50, laser = -50, energy = -50, bomb = -50, bio = -50, rad = -50, fire = 0, acid = 0)
+ armor = list("melee" = -50, "bullet" = -50, "laser" = -50, "energy" = -50, "bomb" = -50, "bio" = -50, "rad" = -50, "fire" = 0, "acid" = 0)
/obj/item/clothing/suit/hooded/cultrobes/berserker/equipped(mob/living/user, slot)
..()
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 910caa7fca..e540525405 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -513,7 +513,7 @@ This is here to make the tiles around the station mininuke change when it's arme
icon_state = "nucleardisk"
persistence_replacement = /obj/item/disk/nuclear/fake
max_integrity = 250
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 30, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/fake = FALSE
diff --git a/code/modules/antagonists/valentines/valentine.dm b/code/modules/antagonists/valentines/valentine.dm
index 1ca8e39318..b29c4d6bf3 100644
--- a/code/modules/antagonists/valentines/valentine.dm
+++ b/code/modules/antagonists/valentines/valentine.dm
@@ -8,6 +8,8 @@
var/datum/objective/protect/protect_objective = new /datum/objective/protect
protect_objective.owner = owner
protect_objective.target = date
+ if(!ishuman(date.current))
+ protect_objective.human_check = FALSE
protect_objective.explanation_text = "Protect [date.name], your date."
objectives += protect_objective
owner.objectives += objectives
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index b20a395e6d..9f5b21962a 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -245,7 +245,7 @@
materials = list(MAT_GLASS=7500, MAT_METAL=1000)
attack_verb = list("shoved", "bashed")
block_chance = 50
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 0, bomb = 30, bio = 0, rad = 0, fire = 80, acid = 70)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
/obj/item/device/assembly/flash/shield/flash_recharge(interval=10)
if(times_used >= 4)
diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index bb8f89812a..f757dbb7b3 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -69,7 +69,7 @@
req_access = list(ACCESS_ATMOSPHERICS)
max_integrity = 250
integrity_failure = 80
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 90, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30)
resistance_flags = FIRE_PROOF
var/danger_level = 0
diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm
index 0f57bd85e9..03f487a2f7 100644
--- a/code/modules/atmospherics/machinery/atmosmachinery.dm
+++ b/code/modules/atmospherics/machinery/atmosmachinery.dm
@@ -53,7 +53,7 @@ Pipelines + Other Objects -> Pipe network
normalize_cardinal_directions()
nodes = new(device_type)
if (!armor)
- armor = list(melee = 25, bullet = 10, laser = 10, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 100, acid = 70)
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 70)
..()
if(process)
SSair.atmos_machinery += src
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index df76a47b82..e0f89a374e 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -7,7 +7,7 @@
density = TRUE
anchored = TRUE
max_integrity = 350
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 30, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 30, "acid" = 30)
layer = ABOVE_WINDOW_LAYER
state_open = FALSE
circuit = /obj/item/circuitboard/machine/cryo_tube
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
index f52483f1ae..ce532f9ed8 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
@@ -8,7 +8,7 @@
density = TRUE
anchored = TRUE
max_integrity = 300
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 80, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 30)
layer = OBJ_LAYER
circuit = /obj/item/circuitboard/machine/thermomachine
pipe_flags = PIPING_ONE_PER_TURF | PIPING_DEFAULT_LAYER_ONLY
diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm
index 6582dad6df..fd3b82dfa5 100644
--- a/code/modules/atmospherics/machinery/other/meter.dm
+++ b/code/modules/atmospherics/machinery/other/meter.dm
@@ -12,7 +12,7 @@
idle_power_usage = 2
active_power_usage = 4
max_integrity = 150
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 40, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 40, "acid" = 0)
var/target_layer = PIPING_LAYER_DEFAULT
/obj/machinery/meter/Destroy()
diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm
index 13649a742a..56fe498603 100644
--- a/code/modules/atmospherics/machinery/portable/canister.dm
+++ b/code/modules/atmospherics/machinery/portable/canister.dm
@@ -17,7 +17,7 @@
var/can_max_release_pressure = (ONE_ATMOSPHERE * 10)
var/can_min_release_pressure = (ONE_ATMOSPHERE / 10)
- armor = list(melee = 50, bullet = 50, laser = 50, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 80, acid = 50)
+ armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 50)
max_integrity = 250
integrity_failure = 100
pressure_resistance = 7 * ONE_ATMOSPHERE
diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
index f21e005b9a..a584c2ceef 100644
--- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
+++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm
@@ -3,7 +3,7 @@
icon = 'icons/obj/atmos.dmi'
use_power = NO_POWER_USE
max_integrity = 250
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 60, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 60, "acid" = 30)
var/datum/gas_mixture/air_contents
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 57cce8a656..e59c17cafc 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -106,6 +106,7 @@
var/mob_species = null //Set to make them a mutant race such as lizard or skeleton. Uses the datum typepath instead of the ID.
var/datum/outfit/outfit = /datum/outfit //If this is a path, it will be instanced in Initialize()
var/disable_pda = TRUE
+ var/disable_sensors = TRUE
//All of these only affect the ID that the outfit has placed in the ID slot
var/id_job = null //Such as "Clown" or "Chef." This just determines what the ID reads as, not their access
var/id_access = null //This is for access. See access.dm for which jobs give what access. Use "Captain" if you want it to be all access.
@@ -181,6 +182,12 @@
var/obj/item/device/pda/PDA = locate(/obj/item/device/pda) in H
if(PDA)
PDA.toff = TRUE
+ if(disable_sensors)
+ // Using crew monitors to find corpses while creative makes finding certain ruins too easy.
+ var/obj/item/clothing/under/C = H.wear_suit
+ if(C)
+ C.sensor_mode = NO_SENSORS
+
var/obj/item/card/id/W = H.wear_id
if(W)
if(id_access)
diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm
index 707f004eb1..21c19fab5e 100644
--- a/code/modules/awaymissions/mission_code/snowdin.dm
+++ b/code/modules/awaymissions/mission_code/snowdin.dm
@@ -559,7 +559,7 @@
/obj/item/clothing/under/syndicate/coldres
name = "insulated tactical turtleneck"
desc = "A non-descript and slightly suspicious-looking turtleneck with digital camouflage cargo pants. The interior has been padded with special insulation for both warmth and protection."
- armor = list(melee = 20, bullet = 10, laser = 0,energy = 5, bomb = 0, bio = 0, rad = 0, fire = 25, acid = 25)
+ armor = list("melee" = 20, "bullet" = 10, "laser" = 0,"energy" = 5, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 25, "acid" = 25)
cold_protection = CHEST|GROIN|ARMS|LEGS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
/obj/item/clothing/shoes/combat/coldres
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 1fd046babb..609d341243 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -180,7 +180,7 @@
random_sensor = FALSE
resistance_flags = NONE
can_adjust = FALSE
- armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/datum/action/item_action/chameleon/change/chameleon_action
@@ -213,7 +213,7 @@
item_state = "armor"
blood_overlay_type = "armor"
resistance_flags = NONE
- armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/datum/action/item_action/chameleon/change/chameleon_action
@@ -238,7 +238,7 @@
icon_state = "meson"
item_state = "meson"
resistance_flags = NONE
- armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/datum/action/item_action/chameleon/change/chameleon_action
@@ -264,7 +264,7 @@
item_state = "ygloves"
resistance_flags = NONE
- armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/datum/action/item_action/chameleon/change/chameleon_action
@@ -290,7 +290,7 @@
item_color = "grey"
resistance_flags = NONE
- armor = list(melee = 5, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/datum/action/item_action/chameleon/change/chameleon_action
@@ -313,7 +313,7 @@
// The camohat, I mean, holographic hat projection, is part of the
// drone itself.
flags_1 = NODROP_1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
// which means it offers no protection, it's just air and light
/obj/item/clothing/head/chameleon/drone/Initialize()
@@ -330,7 +330,7 @@
icon_state = "gas_alt"
item_state = "gas_alt"
resistance_flags = NONE
- armor = list(melee = 5, bullet = 5, laser = 5, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
flags_1 = BLOCK_GAS_SMOKE_EFFECT_1 | MASKINTERNALS_1
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR
@@ -365,7 +365,7 @@
/obj/item/clothing/mask/chameleon/drone
//Same as the drone chameleon hat, undroppable and no protection
flags_1 = NODROP_1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
// Can drones use the voice changer part? Let's not find out.
vchange = 0
@@ -388,7 +388,7 @@
permeability_coefficient = 0.05
resistance_flags = NONE
pockets = /obj/item/storage/internal/pocket/shoes
- armor = list(melee = 10, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 10, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
var/datum/action/item_action/chameleon/change/chameleon_action
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index a439511fe2..0cf375c8dd 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -97,7 +97,7 @@
actions_types = list(/datum/action/item_action/toggle_research_scanner)
glass_colour_type = /datum/client_colour/glass_colour/purple
resistance_flags = ACID_PROOF
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
/obj/item/clothing/glasses/science/item_action_slot_check(slot)
if(slot == slot_glasses)
diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm
index 171310add9..1a0404430e 100644
--- a/code/modules/clothing/gloves/color.dm
+++ b/code/modules/clothing/gloves/color.dm
@@ -154,7 +154,7 @@
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
strip_delay = 60
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 70, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 50)
/obj/item/clothing/gloves/color/latex
name = "latex gloves"
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 97afd78c38..70274c45d7 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -22,7 +22,7 @@
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
resistance_flags = NONE
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 70, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 30)
/obj/item/clothing/gloves/combat
name = "combat gloves"
@@ -37,7 +37,7 @@
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
resistance_flags = NONE
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
/obj/item/clothing/gloves/bracer
@@ -54,4 +54,4 @@
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
resistance_flags = NONE
- armor = list(melee = 15, bullet = 35, laser = 35, energy = 20, bomb = 35, bio = 35, rad = 35, fire = 0, acid = 0)
+ armor = list("melee" = 15, "bullet" = 35, "laser" = 35, "energy" = 20, "bomb" = 35, "bio" = 35, "rad" = 35, "fire" = 0, "acid" = 0)
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index 51a1131f1c..db3dda1dd2 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -6,7 +6,7 @@
var/brightness_on = 4 //luminosity when on
var/on = FALSE
item_color = "yellow" //Determines used sprites: hardhat[on]_[item_color] and hardhat[on]_[item_color]2 (lying down sprite)
- armor = list(melee = 15, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20, fire = 100, acid = 50)
+ armor = list("melee" = 15, "bullet" = 5, "laser" = 20,"energy" = 10, "bomb" = 20, "bio" = 10, "rad" = 20, "fire" = 100, "acid" = 50)
flags_inv = 0
actions_types = list(/datum/action/item_action/toggle_helmet_light)
resistance_flags = FIRE_PROOF
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index f6482063ea..b231ac9df6 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -3,7 +3,7 @@
desc = "Standard Security gear. Protects the head from impacts."
icon_state = "helmet"
item_state = "helmet"
- armor = list(melee = 35, bullet = 30, laser = 30,energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 35, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
flags_inv = HIDEEARS
cold_protection = HEAD
min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT
@@ -41,7 +41,7 @@
desc = "A bulletproof combat helmet that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent."
icon_state = "helmetalt"
item_state = "helmetalt"
- armor = list(melee = 15, bullet = 60, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 15, "bullet" = 60, "laser" = 10, "energy" = 10, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
can_flashlight = 1
dog_fashion = null
@@ -62,7 +62,7 @@
toggle_message = "You pull the visor down on"
alt_toggle_message = "You push the visor up on"
can_toggle = 1
- armor = list(melee = 45, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 45, "bullet" = 15, "laser" = 5,"energy" = 5, "bomb" = 5, "bio" = 2, "rad" = 0, "fire" = 50, "acid" = 50)
flags_inv = HIDEEARS|HIDEFACE
strip_delay = 80
actions_types = list(/datum/action/item_action/toggle)
@@ -117,7 +117,7 @@
desc = "An extremely robust, space-worthy helmet in a nefarious red and black stripe pattern."
icon_state = "swatsyndie"
item_state = "swatsyndie"
- armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 50, acid = 50)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 30, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 50, "acid" = 50)
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
heat_protection = HEAD
@@ -138,7 +138,7 @@
flags_inv = HIDEEARS|HIDEHAIR
icon_state = "thunderdome"
item_state = "thunderdome"
- armor = list(melee = 40, bullet = 30, laser = 25,energy = 10, bomb = 25, bio = 10, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 25,"energy" = 10, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 50)
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
heat_protection = HEAD
@@ -151,7 +151,7 @@
desc = "An ancient helmet made of bronze and leather."
flags_inv = HIDEEARS|HIDEHAIR
flags_cover = HEADCOVERSEYES
- armor = list(melee = 25, bullet = 0, laser = 25, energy = 10, bomb = 10, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 25, "bullet" = 0, "laser" = 25, "energy" = 10, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
icon_state = "roman"
item_state = "roman"
@@ -179,7 +179,7 @@
icon_state = "redtaghelm"
flags_cover = HEADCOVERSEYES
item_state = "redtaghelm"
- armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0, fire = 0, acid = 50)
+ armor = list("melee" = 15, "bullet" = 10, "laser" = 20,"energy" = 10, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
// Offer about the same protection as a hardhat.
dog_fashion = null
@@ -189,7 +189,7 @@
icon_state = "bluetaghelm"
flags_cover = HEADCOVERSEYES
item_state = "bluetaghelm"
- armor = list(melee = 15, bullet = 10, laser = 20,energy = 10, bomb = 20, bio = 0, rad = 0, fire = 0, acid = 50)
+ armor = list("melee" = 15, "bullet" = 10, "laser" = 20,"energy" = 10, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
// Offer about the same protection as a hardhat.
dog_fashion = null
@@ -198,7 +198,7 @@
desc = "A classic metal helmet."
icon_state = "knight_green"
item_state = "knight_green"
- armor = list(melee = 41, bullet = 15, laser = 5,energy = 5, bomb = 5, bio = 2, rad = 0, fire = 0, acid = 50)
+ armor = list("melee" = 41, "bullet" = 15, "laser" = 5,"energy" = 5, "bomb" = 5, "bio" = 2, "rad" = 0, "fire" = 0, "acid" = 50)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
strip_delay = 80
@@ -232,7 +232,7 @@
desc = "An intimidating tribal helmet, it doesn't look very comfortable."
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = HEADCOVERSEYES
- armor = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 10, bio = 5, rad = 20, fire = 40, acid = 20)
+ armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 10, "bio" = 5, "rad" = 20, "fire" = 40, "acid" = 20)
icon_state = "skull"
item_state = "skull"
strip_delay = 100
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index 0a1adb1dca..37e392b7d8 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -26,7 +26,7 @@
icon_state = "captain"
item_state = "that"
flags_inv = 0
- armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
strip_delay = 60
dog_fashion = /datum/dog_fashion/head/captain
@@ -44,7 +44,7 @@
name = "head of personnel's cap"
icon_state = "hopcap"
desc = "The symbol of true bureaucratic micromanagement."
- armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
dog_fashion = /datum/dog_fashion/head/hop
//Chaplain
@@ -123,7 +123,7 @@
name = "head of security cap"
desc = "The robust standard-issue cap of the Head of Security. For showing the officers who's in charge."
icon_state = "hoscap"
- armor = list(melee = 40, bullet = 30, laser = 25, energy = 10, bomb = 25, bio = 10, rad = 0, fire = 50, acid = 60)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 60)
strip_delay = 80
dynamic_hair_suffix = ""
@@ -144,7 +144,7 @@
name = "warden's police hat"
desc = "It's a special armored hat issued to the Warden of a security force. Protects the head from impacts."
icon_state = "policehelm"
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 30, acid = 60)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 60)
strip_delay = 60
dog_fashion = /datum/dog_fashion/head/warden
@@ -152,7 +152,7 @@
name = "security beret"
desc = "A robust beret with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficent protection."
icon_state = "beret_badge"
- armor = list(melee = 40, bullet = 30, laser = 30,energy = 10, bomb = 25, bio = 0, rad = 0, fire = 20, acid = 50)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
strip_delay = 60
dog_fashion = null
@@ -165,7 +165,7 @@
name = "warden's beret"
desc = "A special beret with the Warden's insignia emblazoned on it. For wardens with class."
icon_state = "wardenberet"
- armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 30, acid = 50)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 50)
strip_delay = 60
/obj/item/clothing/head/beret/sec/navyofficer
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 544d9e7b12..0e4acfe983 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -6,7 +6,7 @@
desc = "It's good to be emperor."
item_state = "that"
flags_inv = 0
- armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
strip_delay = 80
/obj/item/clothing/head/powdered_wig
@@ -185,7 +185,7 @@
name = "fedora"
icon_state = "fedora"
item_state = "fedora"
- armor = list(melee = 25, bullet = 5, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 30, acid = 50)
+ armor = list("melee" = 25, "bullet" = 5, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 50)
desc = "A really cool hat if you're a mobster. A really lame hat if you're not."
pockets = /obj/item/storage/internal/pocket/small
@@ -279,7 +279,7 @@
name = "crown"
desc = "A crown fit for a king, a petty king maybe."
icon_state = "crown"
- armor = list(melee = 15, bullet = 0, laser = 0,energy = 15, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 50)
+ armor = list("melee" = 15, "bullet" = 0, "laser" = 0,"energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
resistance_flags = FIRE_PROOF
dynamic_hair_suffix = ""
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 43ea1928fc..fe238f3ab7 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -20,7 +20,7 @@
materials = list(MAT_METAL=1750, MAT_GLASS=400)
flash_protect = 2
tint = 2
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 60)
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 60)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
actions_types = list(/datum/action/item_action/toggle)
visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
@@ -42,7 +42,7 @@
item_color = "cakehat"
hitsound = 'sound/weapons/tap.ogg'
flags_inv = HIDEEARS|HIDEHAIR
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
brightness_on = 2 //luminosity when on
flags_cover = HEADCOVERSEYES
heat = 1000
@@ -112,7 +112,7 @@
item_state = "hardhat0_pumpkin"
item_color = "pumpkin"
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
brightness_on = 2 //luminosity when on
flags_cover = HEADCOVERSEYES
@@ -149,7 +149,7 @@
item_state = "hardhat0_reindeer"
item_color = "reindeer"
flags_inv = 0
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
brightness_on = 1 //luminosity when on
dynamic_hair_suffix = ""
diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm
index 6c5f0cb529..5c7514541d 100644
--- a/code/modules/clothing/head/soft_caps.dm
+++ b/code/modules/clothing/head/soft_caps.dm
@@ -119,7 +119,7 @@
desc = "It's a robust baseball hat in tasteful red colour."
icon_state = "secsoft"
item_color = "sec"
- armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 20, acid = 50)
+ armor = list("melee" = 30, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 50)
strip_delay = 60
dog_fashion = null
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index e7894a586c..694c290f4b 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -20,7 +20,7 @@
materials = list(MAT_METAL=4000, MAT_GLASS=2000)
flash_protect = 2
tint = 2
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 55)
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 55)
actions_types = list(/datum/action/item_action/toggle)
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE
flags_cover = MASKCOVERSEYES
@@ -40,7 +40,7 @@
desc = "A modernised version of the classic design, this mask will not only filter out toxins but it can also be connected to an air supply."
icon_state = "plaguedoctor"
item_state = "gas_mask"
- armor = list(melee = 0, bullet = 0, laser = 2,energy = 2, bomb = 0, bio = 75, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 2,"energy" = 2, "bomb" = 0, "bio" = 75, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/mask/gas/syndicate
name = "syndicate mask"
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index 446a15c547..c0200d889c 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -28,7 +28,7 @@
visor_flags_cover = MASKCOVERSMOUTH
gas_transfer_coefficient = 0.9
permeability_coefficient = 0.01
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 25, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 25, "rad" = 0, "fire" = 0, "acid" = 0)
actions_types = list(/datum/action/item_action/adjust)
/obj/item/clothing/mask/surgical/attack_self(mob/user)
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index b33ac3e688..f4c37b281d 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -13,7 +13,7 @@
item_state = "jackboots"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
- armor = list(melee = 25, bullet = 25, laser = 25, energy = 25, bomb = 50, bio = 10, rad = 0, fire = 70, acid = 50)
+ armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 10, "rad" = 0, "fire" = 70, "acid" = 50)
strip_delay = 70
resistance_flags = NONE
permeability_coefficient = 0.05 //Thick soles, and covers the ankle
@@ -24,7 +24,7 @@
desc = "High speed, no drag combat boots."
permeability_coefficient = 0.01
flags_1 = NOSLIP_1
- armor = list(melee = 40, bullet = 30, laser = 25, energy = 25, bomb = 50, bio = 30, rad = 30, fire = 90, acid = 50)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 30, "rad" = 30, "fire" = 90, "acid" = 50)
/obj/item/clothing/shoes/sandal
desc = "A pair of rather plain, wooden sandals."
@@ -55,7 +55,7 @@
strip_delay = 50
equip_delay_other = 50
resistance_flags = NONE
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 40, acid = 75)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 75)
/obj/item/clothing/shoes/galoshes/dry
name = "absorbent galoshes"
diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm
index f9a53a1551..a2cd5bce75 100644
--- a/code/modules/clothing/spacesuits/_spacesuits.dm
+++ b/code/modules/clothing/spacesuits/_spacesuits.dm
@@ -7,7 +7,7 @@
flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1
item_state = "spaceold"
permeability_coefficient = 0.01
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
dynamic_hair_suffix = ""
dynamic_fhair_suffix = ""
@@ -34,7 +34,7 @@
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals)
slowdown = 1
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 50, fire = 80, acid = 70)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index 1d126d43b2..94553b3964 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -4,7 +4,7 @@
icon_state = "chronohelmet"
item_state = "chronohelmet"
slowdown = 1
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90, fire = 100, acid = 100)
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 60, "bomb" = 30, "bio" = 90, "rad" = 90, "fire" = 100, "acid" = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
var/obj/item/clothing/suit/space/chronos/suit = null
@@ -24,7 +24,7 @@
icon_state = "chronosuit"
item_state = "chronosuit"
actions_types = list(/datum/action/item_action/toggle)
- armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 30, bio = 90, rad = 90, fire = 100, acid = 1000)
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 60, "bomb" = 30, "bio" = 90, "rad" = 90, "fire" = 100, "acid" = 1000)
resistance_flags = FIRE_PROOF | ACID_PROOF
var/list/chronosafe_items = list(/obj/item/chrono_eraser, /obj/item/gun/energy/chrono_gun)
var/list/hands_nodrop = list()
diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm
index 06772fc314..a393ab71e0 100644
--- a/code/modules/clothing/spacesuits/flightsuit.dm
+++ b/code/modules/clothing/spacesuits/flightsuit.dm
@@ -19,7 +19,7 @@
icon_state = FLIGHTPACK_SPRITE_BASE
item_state = FLIGHTPACK_SPRITE_BASE
actions_types = list(/datum/action/item_action/flightpack/toggle_flight, /datum/action/item_action/flightpack/engage_boosters, /datum/action/item_action/flightpack/toggle_stabilizers, /datum/action/item_action/flightpack/change_power, /datum/action/item_action/flightpack/toggle_airbrake)
- armor = list(melee = 20, bullet = 20, laser = 20, energy = 10, bomb = 30, bio = 100, rad = 75, fire = 100, acid = 75)
+ armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 30, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75)
w_class = WEIGHT_CLASS_BULKY
slot_flags = SLOT_BACK
resistance_flags = FIRE_PROOF
@@ -756,7 +756,7 @@
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/flightsuit
jetpack = null
actions_types = list(/datum/action/item_action/flightsuit/toggle_helmet, /datum/action/item_action/flightsuit/toggle_boots, /datum/action/item_action/flightsuit/toggle_flightpack, /datum/action/item_action/flightsuit/lock_suit)
- armor = list(melee = 20, bullet = 20, laser = 20, energy = 10, bomb = 30, bio = 100, rad = 75, fire = 100, acid = 100)
+ armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 30, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 100)
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
var/locked_strip_delay = 80
var/obj/item/device/flightpack/pack = null
@@ -1076,7 +1076,7 @@
resistance_flags = FIRE_PROOF | ACID_PROOF
brightness_on = 7
light_color = "#30ffff"
- armor = list(melee = 20, bullet = 20, laser = 20, energy = 10, bomb = 30, bio = 100, rad = 75, fire = 100, acid = 100)
+ armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 30, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 100)
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
var/list/datahuds = list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_BASIC)
var/zoom_range = 12
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 98eed7649b..828fe940b7 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -5,7 +5,7 @@
icon_state = "hardsuit0-engineering"
item_state = "eng_helm"
max_integrity = 300
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 50, acid = 75)
+ armor = list("melee" = 10, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 50, "acid" = 75)
var/basestate = "hardsuit"
var/brightness_on = 4 //luminosity when on
var/on = FALSE
@@ -96,7 +96,7 @@
icon_state = "hardsuit-engineering"
item_state = "eng_hardsuit"
max_integrity = 300
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 50, acid = 75)
+ armor = list("melee" = 10, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 50, "acid" = 75)
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/device/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser)
siemens_coefficient = 0
var/obj/item/clothing/head/helmet/space/hardsuit/helmet
@@ -166,7 +166,7 @@
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
icon_state = "hardsuit0-engineering"
item_state = "eng_helm"
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 100, acid = 75)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75)
item_color = "engineering"
resistance_flags = FIRE_PROOF
@@ -175,7 +175,7 @@
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
icon_state = "hardsuit-engineering"
item_state = "eng_hardsuit"
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 100, acid = 75)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine
resistance_flags = FIRE_PROOF
@@ -186,7 +186,7 @@
icon_state = "hardsuit0-atmospherics"
item_state = "atmo_helm"
item_color = "atmospherics"
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 25, fire = 100, acid = 75)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 25, "fire" = 100, "acid" = 75)
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
@@ -195,7 +195,7 @@
desc = "A special suit that protects against hazardous, low pressure environments. Has thermal shielding."
icon_state = "hardsuit-atmospherics"
item_state = "atmo_hardsuit"
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 25, fire = 100, acid = 75)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 25, "fire" = 100, "acid" = 75)
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos
@@ -208,7 +208,7 @@
icon_state = "hardsuit0-white"
item_state = "ce_helm"
item_color = "white"
- armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90, fire = 100, acid = 90)
+ armor = list("melee" = 40, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 50, "bio" = 100, "rad" = 90, "fire" = 100, "acid" = 90)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
@@ -217,7 +217,7 @@
name = "advanced hardsuit"
desc = "An advanced suit that protects against hazardous, low pressure environments. Shines with a high polish."
item_state = "ce_hardsuit"
- armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90, fire = 100, acid = 90)
+ armor = list("melee" = 40, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 50, "bio" = 100, "rad" = 90, "fire" = 100, "acid" = 90)
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite
@@ -233,7 +233,7 @@
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF
heat_protection = HEAD
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 75)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 75)
brightness_on = 7
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator)
@@ -245,7 +245,7 @@
item_state = "mining_hardsuit"
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 75)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 75)
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
@@ -258,7 +258,7 @@
icon_state = "hardsuit1-syndi"
item_state = "syndie_helm"
item_color = "syndi"
- armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 50, acid = 90)
+ armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90)
on = TRUE
var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null
actions_types = list(/datum/action/item_action/toggle_helmet_mode)
@@ -336,7 +336,7 @@
item_state = "syndie_hardsuit"
item_color = "syndi"
w_class = WEIGHT_CLASS_NORMAL
- armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 50, acid = 90)
+ armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90)
allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi
jetpack = /obj/item/tank/jetpack/suit
@@ -348,7 +348,7 @@
alt_desc = "An elite version of the syndicate helmet, with improved armour and fireproofing. It is in combat mode. Property of Gorlex Marauders."
icon_state = "hardsuit0-syndielite"
item_color = "syndielite"
- armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70, fire = 100, acid = 100)
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 50, "energy" = 25, "bomb" = 55, "bio" = 100, "rad" = 70, "fire" = 100, "acid" = 100)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
visor_flags_inv = 0
@@ -364,7 +364,7 @@
icon_state = "hardsuit0-syndielite"
item_color = "syndielite"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
- armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70, fire = 100, acid = 100)
+ armor = list("melee" = 60, "bullet" = 60, "laser" = 50, "energy" = 25, "bomb" = 55, "bio" = 100, "rad" = 70, "fire" = 100, "acid" = 100)
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -399,7 +399,7 @@
item_state = "wiz_helm"
item_color = "wiz"
resistance_flags = FIRE_PROOF | ACID_PROOF //No longer shall our kind be foiled by lone chemists with spray bottles!
- armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100)
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 20, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
@@ -410,7 +410,7 @@
item_state = "wiz_hardsuit"
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = FIRE_PROOF | ACID_PROOF
- armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100)
+ armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 20, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
allowed = list(/obj/item/teleportation_scroll, /obj/item/tank/internals)
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
@@ -425,7 +425,7 @@
item_state = "medical_helm"
item_color = "medical"
flash_protect = 0
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 60, fire = 60, acid = 75)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75)
scan_reagents = 1
/obj/item/clothing/suit/space/hardsuit/medical
@@ -434,7 +434,7 @@
desc = "A special suit that protects against hazardous, low pressure environments. Built with lightweight materials for easier movement."
item_state = "medical_hardsuit"
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/device/healthanalyzer, /obj/item/stack/medical)
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 60, fire = 60, acid = 75)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical
//Research Director hardsuit
@@ -445,7 +445,7 @@
item_color = "rd"
resistance_flags = ACID_PROOF | FIRE_PROOF
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 100, bio = 100, rad = 60, fire = 60, acid = 80)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
var/obj/machinery/doppler_array/integrated/bomb_radar
scan_reagents = 1
actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/toggle_research_scanner)
@@ -475,7 +475,7 @@
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT //Same as an emergency firesuit. Not ideal for extended exposure.
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/gun/energy/wormhole_projector,
/obj/item/hand_tele, /obj/item/device/aicard)
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 100, bio = 100, rad = 60, fire = 60, acid = 80)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd
@@ -487,7 +487,7 @@
icon_state = "hardsuit0-sec"
item_state = "sec_helm"
item_color = "sec"
- armor = list(melee = 35, bullet = 15, laser = 30,energy = 10, bomb = 10, bio = 100, rad = 50, fire = 75, acid = 75)
+ armor = list("melee" = 35, "bullet" = 15, "laser" = 30,"energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
/obj/item/clothing/suit/space/hardsuit/security
@@ -495,7 +495,7 @@
name = "security hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
item_state = "sec_hardsuit"
- armor = list(melee = 35, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 75, acid = 75)
+ armor = list("melee" = 35, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security
/obj/item/clothing/suit/space/hardsuit/security/Initialize()
@@ -508,14 +508,14 @@
desc = "A special bulky helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "hardsuit0-hos"
item_color = "hos"
- armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50, fire = 95, acid = 95)
+ armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95)
/obj/item/clothing/suit/space/hardsuit/security/hos
icon_state = "hardsuit-hos"
name = "head of security's hardsuit"
desc = "A special bulky suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
- armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50, fire = 95, acid = 95)
+ armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos
jetpack = /obj/item/tank/jetpack/suit
@@ -525,7 +525,7 @@
icon_state = "capspace"
item_state = "capspacehelmet"
desc = "A tactical SWAT helmet MK.II boasting better protection and a horrible fashion sense."
- armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
+ armor = list("melee" = 40, "bullet" = 50, "laser" = 50, "energy" = 25, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR //we want to see the mask
heat_protection = HEAD
@@ -540,7 +540,7 @@
desc = "A MK.II SWAT suit with streamlined joints and armor made out of superior materials, insulated against intense heat. The most advanced tactical armor available Usually reserved for heavy hitter corporate security, this one has a regal finish in Nanotrasen company colors. Better not let the assistants get a hold of it."
icon_state = "caparmor"
item_state = "capspacesuit"
- armor = list(melee = 40, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50, fire = 100, acid = 100)
+ armor = list("melee" = 40, "bullet" = 50, "laser" = 50, "energy" = 25, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT //this needed to be added a long fucking time ago
@@ -556,7 +556,7 @@
desc = "A special helmet designed for work in a hazardous, low-humor environment. Has radiation shielding."
icon_state = "hardsuit0-clown"
item_state = "hardsuit0-clown"
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 60, acid = 30)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 30)
item_color = "clown"
/obj/item/clothing/suit/space/hardsuit/clown
@@ -564,7 +564,7 @@
desc = "A special suit that protects against hazardous, low humor environments. Has radiation shielding. Only a true clown can wear it."
icon_state = "hardsuit-clown"
item_state = "clown_hardsuit"
- armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75, fire = 60, acid = 30)
+ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 30)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clown
/obj/item/clothing/suit/space/hardsuit/clown/mob_can_equip(mob/M, slot)
@@ -635,7 +635,7 @@
icon_state = "hardsuit-hos"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos
allowed = null
- armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50, fire = 100, acid = 100)
+ armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
var/current_charges = 3
var/max_charges = 3 //How many charges total the shielding has
@@ -702,7 +702,7 @@
item_color = "ert_medical"
flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 | NODROP_1 //Dont want people changing into the other teams gear
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf
- armor = list(melee = 0, bullet = 30, laser = 30, energy = 30, bomb = 50, bio = 100, rad = 100, fire = 95, acid = 95)
+ armor = list("melee" = 0, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 95)
slowdown = 0
max_charges = 5
@@ -730,7 +730,7 @@
icon_state = "hardsuit0-ert_medical"
item_state = "hardsuit0-ert_medical"
item_color = "ert_medical"
- armor = list(melee = 0, bullet = 30, laser = 30, energy = 30, bomb = 50, bio = 100, rad = 100, fire = 95, acid = 95)
+ armor = list("melee" = 0, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 95)
/obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf/red
@@ -757,7 +757,7 @@
icon_state = "hardsuit1-syndi"
item_state = "syndie_hardsuit"
item_color = "syndi"
- armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100)
+ armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
slowdown = 0
@@ -773,7 +773,7 @@
icon_state = "hardsuit1-syndi"
item_state = "syndie_helm"
item_color = "syndi"
- armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50, fire = 100, acid = 100)
+ armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
///SWAT version
/obj/item/clothing/suit/space/hardsuit/shielded/swat
@@ -785,7 +785,7 @@
max_charges = 4
current_charges = 4
recharge_delay = 15
- armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat
@@ -797,7 +797,7 @@
icon_state = "deathsquad"
item_state = "deathsquad"
item_color = "syndi"
- armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
actions_types = list()
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index e88b33e993..79c208f8c2 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -20,7 +20,7 @@ Contains:
desc = "An advanced tactical space helmet."
icon_state = "deathsquad"
item_state = "deathsquad"
- armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -35,7 +35,7 @@ Contains:
icon_state = "deathsquad"
item_state = "swat_suit"
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat)
- armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -49,7 +49,7 @@ Contains:
icon_state = "heavy"
item_state = "swat_suit"
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/kitchen/knife/combat)
- armor = list(melee = 40, bullet = 30, laser = 30,energy = 30, bomb = 50, bio = 90, rad = 20, fire = 100, acid = 100)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 30, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100)
strip_delay = 120
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -61,7 +61,7 @@ Contains:
dynamic_fhair_suffix = "+generic"
flags_1 = STOPSPRESSUREDMAGE_1
flags_inv = 0
- armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -76,7 +76,7 @@ Contains:
flags_inv = 0
w_class = WEIGHT_CLASS_NORMAL
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
- armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -135,7 +135,7 @@ Contains:
desc = "Yarr."
icon_state = "pirate"
item_state = "pirate"
- armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 60, acid = 75)
+ armor = list("melee" = 30, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 60, "acid" = 75)
flags_1 = STOPSPRESSUREDMAGE_1
flags_inv = HIDEHAIR
strip_delay = 40
@@ -156,7 +156,7 @@ Contains:
flags_inv = 0
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/transforming/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/food/drinks/bottle/rum)
slowdown = 0
- armor = list(melee = 30, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 60, acid = 75)
+ armor = list("melee" = 30, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 60, "acid" = 75)
strip_delay = 40
equip_delay_other = 20
@@ -167,7 +167,7 @@ Contains:
icon_state = "hardsuit0-ert_commander"
item_state = "hardsuit0-ert_commander"
item_color = "ert_commander"
- armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100, fire = 80, acid = 80)
+ armor = list("melee" = 65, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80)
strip_delay = 130
flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 | NODROP_1
brightness_on = 7
@@ -179,7 +179,7 @@ Contains:
item_state = "ert_command"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
- armor = list(melee = 65, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 100, rad = 100, fire = 80, acid = 80)
+ armor = list("melee" = 65, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80)
slowdown = 0
strip_delay = 130
@@ -228,7 +228,7 @@ Contains:
icon_state = "space"
item_state = "s_suit"
desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies."
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20, fire = 50, acid = 65)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 65)
/obj/item/clothing/head/helmet/space/eva
name = "EVA helmet"
@@ -236,14 +236,14 @@ Contains:
item_state = "space"
desc = "A lightweight space helmet with the basic ability to protect the wearer from the vacuum of space during emergencies."
flash_protect = 0
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 20, fire = 50, acid = 65)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 65)
/obj/item/clothing/head/helmet/space/freedom
name = "eagle helmet"
desc = "An advanced, space-proof helmet. It appears to be modeled after an old-world eagle."
icon_state = "griffinhat"
item_state = "griffinhat"
- armor = list(melee = 20, bullet = 40, laser = 30, energy = 25, bomb = 100, bio = 100, rad = 100, fire = 80, acid = 80)
+ armor = list("melee" = 20, "bullet" = 40, "laser" = 30, "energy" = 25, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
resistance_flags = ACID_PROOF | FIRE_PROOF
@@ -254,7 +254,7 @@ Contains:
icon_state = "freedom"
item_state = "freedom"
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
- armor = list(melee = 20, bullet = 40, laser = 30,energy = 25, bomb = 100, bio = 100, rad = 100, fire = 80, acid = 80)
+ armor = list("melee" = 20, "bullet" = 40, "laser" = 30,"energy" = 25, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
resistance_flags = ACID_PROOF | FIRE_PROOF
@@ -266,7 +266,7 @@ Contains:
desc = "Spaceworthy and it looks like a space carp's head, smells like one too."
icon_state = "carp_helm"
item_state = "syndicate"
- armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 75, fire = 60, acid = 75) //As whimpy as a space carp
+ armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy as a space carp
brightness_on = 0 //luminosity when on
actions_types = list()
flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 | NODROP_1
@@ -278,7 +278,7 @@ Contains:
icon_state = "carp_suit"
item_state = "space_suit_syndicate"
slowdown = 0 //Space carp magic, never stop believing
- armor = list(melee = -20, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 75, fire = 60, acid = 75) //As whimpy whimpy whoo
+ armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy whimpy whoo
allowed = list(/obj/item/tank/internals, /obj/item/gun/ballistic/automatic/speargun) //I'm giving you a hint here
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/carp
@@ -335,7 +335,7 @@ Contains:
desc = "A bulky, air-tight helmet meant to protect the user during emergency situations. It doesn't look very durable."
icon_state = "syndicate-helm-orange"
item_state = "syndicate-helm-orange"
- armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10, fire = 0, acid = 0)
+ armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 0, "acid" = 0)
strip_delay = 65
/obj/item/clothing/suit/space/fragile
@@ -345,7 +345,7 @@ Contains:
icon_state = "syndicate-orange"
item_state = "syndicate-orange"
slowdown = 2
- armor = list(melee = 5, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 10, fire = 0, acid = 0)
+ armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 0, "acid" = 0)
strip_delay = 65
/obj/item/clothing/suit/space/fragile/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK)
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index a56afb94ae..d8c3b55048 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -5,7 +5,7 @@
name = "EVA plasma envirosuit"
desc = "A special plasma containment suit designed to be space-worthy, as well as worn over other clothing. Like its smaller counterpart, it can automatically extinguish the wearer in a crisis, and holds twice as many charges."
allowed = list(/obj/item/gun, /obj/item/ammo_casing, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword, /obj/item/restraints/handcuffs, /obj/item/tank)
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 100, acid = 75)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 100, "acid" = 75)
resistance_flags = FIRE_PROOF
icon_state = "plasmaman_suit"
item_state = "plasmaman_suit"
@@ -41,7 +41,7 @@
icon_state = "plasmaman-helm"
item_state = "plasmaman-helm"
strip_delay = 80
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 100, acid = 75)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 100, "acid" = 75)
resistance_flags = FIRE_PROOF
var/brightness_on = 4 //luminosity when the light is on
var/on = FALSE
diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index 41d40eddf8..6d42b2d78f 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -4,7 +4,7 @@
icon_state = "syndicate"
item_state = "syndicate"
desc = "Has a tag on it: Totally not property of an enemy corporation, honest!"
- armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 80, acid = 85)
+ armor = list("melee" = 40, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 80, "acid" = 85)
/obj/item/clothing/suit/space/syndicate
name = "red space suit"
@@ -13,7 +13,7 @@
desc = "Has a tag on it: Totally not property of an enemy corporation, honest!"
w_class = WEIGHT_CLASS_NORMAL
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
- armor = list(melee = 40, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 80, acid = 85)
+ armor = list("melee" = 40, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 80, "acid" = 85)
//Green syndicate space suit
diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm
index 43b30b383e..1cf1d4640d 100644
--- a/code/modules/clothing/suits/_suits.dm
+++ b/code/modules/clothing/suits/_suits.dm
@@ -3,7 +3,7 @@
name = "suit"
var/fire_resist = T0C+100
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
slot_flags = SLOT_OCLOTHING
var/blood_overlay_type = "suit"
var/togglename = null
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 3e044108fb..f3ce410933 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -9,7 +9,7 @@
equip_delay_other = 40
max_integrity = 250
resistance_flags = NONE
- armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
/obj/item/clothing/suit/armor/Initialize()
. = ..()
@@ -46,7 +46,7 @@
icon_state = "hos"
item_state = "greatcoat"
body_parts_covered = CHEST|GROIN|ARMS|LEGS
- armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 70, acid = 90)
+ armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 90)
cold_protection = CHEST|GROIN|LEGS|ARMS
heat_protection = CHEST|GROIN|LEGS|ARMS
strip_delay = 80
@@ -92,7 +92,7 @@
icon_state = "capcarapace"
item_state = "armor"
body_parts_covered = CHEST|GROIN
- armor = list(melee = 50, bullet = 40, laser = 50, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 100, acid = 90)
+ armor = list("melee" = 50, "bullet" = 40, "laser" = 50, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 90)
dog_fashion = null
resistance_flags = FIRE_PROOF
@@ -115,7 +115,7 @@
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- armor = list(melee = 50, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 80)
+ armor = list("melee" = 50, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
strip_delay = 80
equip_delay_other = 60
@@ -125,7 +125,7 @@
icon_state = "bonearmor"
item_state = "bonearmor"
blood_overlay_type = "armor"
- armor = list(melee = 35, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 35, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
/obj/item/clothing/suit/armor/bulletproof
@@ -134,7 +134,7 @@
icon_state = "bulletproof"
item_state = "armor"
blood_overlay_type = "armor"
- armor = list(melee = 15, bullet = 60, laser = 10, energy = 10, bomb = 40, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 15, "bullet" = 60, "laser" = 10, "energy" = 10, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
strip_delay = 70
equip_delay_other = 50
@@ -144,7 +144,7 @@
icon_state = "armor_reflec"
item_state = "armor_reflec"
blood_overlay_type = "armor"
- armor = list(melee = 10, bullet = 10, laser = 60, energy = 50, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 10, "bullet" = 10, "laser" = 60, "energy" = 50, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/hit_reflect_chance = 40
@@ -175,7 +175,7 @@
icon_state = "reactiveoff"
item_state = "reactiveoff"
blood_overlay_type = "armor"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 100, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
actions_types = list(/datum/action/item_action/toggle)
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
hit_reaction_chance = 50
@@ -361,7 +361,7 @@
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT
- armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 90, acid = 90)
+ armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 90)
/obj/item/clothing/suit/armor/heavy
name = "heavy armor"
@@ -374,7 +374,7 @@
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
slowdown = 3
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
- armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 90, acid = 90)
+ armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 90)
/obj/item/clothing/suit/armor/tdome
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
@@ -382,7 +382,7 @@
flags_1 = THICKMATERIAL_1
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100, fire = 90, acid = 90)
+ armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 90)
/obj/item/clothing/suit/armor/tdome/red
name = "thunderdome suit"
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index bfd4415b3a..bb6a6ca070 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -5,7 +5,7 @@
desc = "A hood that protects the head and face from biological comtaminants."
permeability_coefficient = 0.01
flags_1 = THICKMATERIAL_1
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 80, fire = 30, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 80, "fire" = 30, "acid" = 100)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE
resistance_flags = ACID_PROOF
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -22,7 +22,7 @@
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
slowdown = 1
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/pen, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 80, fire = 30, acid = 100)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 80, "fire" = 30, "acid" = 100)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
strip_delay = 70
equip_delay_other = 70
@@ -46,11 +46,11 @@
//Security biosuit, grey with red stripe across the chest
/obj/item/clothing/head/bio_hood/security
- armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 100, rad = 80, fire = 30, acid = 100)
+ armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 100, "rad" = 80, "fire" = 30, "acid" = 100)
icon_state = "bio_security"
/obj/item/clothing/suit/bio_suit/security
- armor = list(melee = 25, bullet = 15, laser = 25, energy = 10, bomb = 25, bio = 100, rad = 80, fire = 30, acid = 100)
+ armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 100, "rad" = 80, "fire" = 30, "acid" = 100)
icon_state = "bio_security"
diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm
index 537dd86639..03f549fbe8 100644
--- a/code/modules/clothing/suits/cloaks.dm
+++ b/code/modules/clothing/suits/cloaks.dm
@@ -61,7 +61,7 @@
icon_state = "goliath_cloak"
desc = "A staunch, practical cape made out of numerous monster materials, it is coveted amongst exiles & hermits."
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/twohanded/spear, /obj/item/twohanded/bonespear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat/bone, /obj/item/kitchen/knife/combat/survival)
- armor = list(melee = 35, bullet = 10, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 60, acid = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot
+ armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot
hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath
body_parts_covered = CHEST|GROIN|ARMS
@@ -69,7 +69,7 @@
name = "goliath cloak hood"
icon_state = "golhood"
desc = "A protective & concealing hood."
- armor = list(melee = 35, bullet = 10, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 60, acid = 60)
+ armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60)
flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
/obj/item/clothing/suit/hooded/cloak/drake
@@ -77,7 +77,7 @@
icon_state = "dragon"
desc = "A suit of armour fashioned from the remains of an ash drake."
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/twohanded/spear)
- armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50, fire = 100, acid = 100)
+ armor = list("melee" = 70, "bullet" = 30, "laser" = 50, "energy" = 40, "bomb" = 70, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100)
hoodtype = /obj/item/clothing/head/hooded/cloakhood/drake
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
@@ -88,7 +88,7 @@
name = "drake helm"
icon_state = "dragon"
desc = "The skull of a dragon."
- armor = list(melee = 70, bullet = 30, laser = 50, energy = 40, bomb = 70, bio = 60, rad = 50, fire = 100, acid = 100)
+ armor = list("melee" = 70, "bullet" = 30, "laser" = 50, "energy" = 40, "bomb" = 70, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT
resistance_flags = FIRE_PROOF | ACID_PROOF
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index e6331eb8b8..08338d1e7c 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -94,7 +94,7 @@
item_state = "det_suit"
blood_overlay_type = "coat"
body_parts_covered = CHEST|GROIN|LEGS|ARMS
- armor = list(melee = 25, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 45)
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45)
cold_protection = CHEST|GROIN|LEGS|ARMS
heat_protection = CHEST|GROIN|LEGS|ARMS
@@ -187,6 +187,6 @@
blood_overlay_type = "coat"
body_parts_covered = CHEST|ARMS
allowed = list(/obj/item/tank/internals, /obj/item/melee/curator_whip)
- armor = list(melee = 25, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 45)
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45)
cold_protection = CHEST|ARMS
heat_protection = CHEST|ARMS
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index 7c7599af3d..b89d0c464b 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -6,7 +6,7 @@
blood_overlay_type = "coat"
body_parts_covered = CHEST|ARMS
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/device/sensor_device, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 50, "acid" = 50)
togglename = "buttons"
species_exception = list(/datum/species/golem)
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 5a2e5ade3c..154f1bffdd 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -381,7 +381,7 @@
desc = "A thick jacket with a rubbery, water-resistant shell."
icon_state = "pufferjacket"
item_state = "hostrench"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/suit/jacket/puffer/vest
name = "puffer vest"
@@ -390,7 +390,7 @@
item_state = "armor"
body_parts_covered = CHEST|GROIN
cold_protection = CHEST|GROIN
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 30, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 30, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/suit/jacket/miljacket
name = "military jacket"
@@ -469,7 +469,7 @@
body_parts_covered = CHEST|GROIN|ARMS
cold_protection = CHEST|GROIN|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
/obj/item/clothing/head/hooded/winterhood
@@ -485,7 +485,7 @@
name = "captain's winter coat"
icon_state = "coatcaptain"
item_state = "coatcaptain"
- armor = list(melee = 25, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 50)
+ armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
hoodtype = /obj/item/clothing/head/hooded/winterhood/captain
/obj/item/clothing/suit/hooded/wintercoat/captain/Initialize()
@@ -499,7 +499,7 @@
name = "security winter coat"
icon_state = "coatsecurity"
item_state = "coatsecurity"
- armor = list(melee = 25, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 0, acid = 45)
+ armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45)
hoodtype = /obj/item/clothing/head/hooded/winterhood/security
/obj/item/clothing/suit/hooded/wintercoat/security/Initialize()
@@ -514,7 +514,7 @@
icon_state = "coatmedical"
item_state = "coatmedical"
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0, fire = 0, acid = 45)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 45)
hoodtype = /obj/item/clothing/head/hooded/winterhood/medical
/obj/item/clothing/head/hooded/winterhood/medical
@@ -525,7 +525,7 @@
icon_state = "coatscience"
item_state = "coatscience"
allowed = list(/obj/item/device/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/device/healthanalyzer, /obj/item/device/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
hoodtype = /obj/item/clothing/head/hooded/winterhood/science
/obj/item/clothing/head/hooded/winterhood/science
@@ -535,7 +535,7 @@
name = "engineering winter coat"
icon_state = "coatengineer"
item_state = "coatengineer"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 20, fire = 30, acid = 45)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45)
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/device/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering
@@ -575,7 +575,7 @@
icon_state = "coatminer"
item_state = "coatminer"
allowed = list(/obj/item/pickaxe, /obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
- armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
hoodtype = /obj/item/clothing/head/hooded/winterhood/miner
/obj/item/clothing/head/hooded/winterhood/miner
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 22b5ee421b..9fce4145b7 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -57,7 +57,7 @@
desc = "Use in case of bomb."
icon_state = "bombsuit"
flags_1 = THICKMATERIAL_1
- armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0, fire = 80, acid = 50)
+ armor = list("melee" = 20, "bullet" = 0, "laser" = 20,"energy" = 10, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
dynamic_hair_suffix = ""
dynamic_fhair_suffix = ""
@@ -82,7 +82,7 @@
flags_1 = THICKMATERIAL_1
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
slowdown = 2
- armor = list(melee = 20, bullet = 0, laser = 20,energy = 10, bomb = 100, bio = 0, rad = 0, fire = 80, acid = 50)
+ armor = list("melee" = 20, "bullet" = 0, "laser" = 20,"energy" = 10, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
flags_inv = HIDEJUMPSUIT
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
@@ -121,7 +121,7 @@
desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'"
flags_1 = THICKMATERIAL_1
flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100, fire = 30, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 60, "rad" = 100, "fire" = 30, "acid" = 30)
strip_delay = 60
equip_delay_other = 60
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -143,7 +143,7 @@
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/device/geiger_counter)
slowdown = 1.5
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100, fire = 30, acid = 30)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 60, "rad" = 100, "fire" = 30, "acid" = 30)
strip_delay = 60
equip_delay_other = 60
flags_inv = HIDEJUMPSUIT
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index 008ced69ea..0ac6dba14e 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -4,7 +4,7 @@
icon_state = "wizard"
gas_transfer_coefficient = 0.01 // IT'S MAGICAL OKAY JEEZ +1 TO NOT DIE
permeability_coefficient = 0.01
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20, fire = 100, acid = 100)
+ armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 100, "acid" = 100)
strip_delay = 50
equip_delay_other = 50
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -34,7 +34,7 @@
icon_state = "wizard-fake"
gas_transfer_coefficient = 1
permeability_coefficient = 1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = FLAMMABLE
dog_fashion = /datum/dog_fashion/head/blue_wizard
@@ -66,7 +66,7 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
body_parts_covered = CHEST|GROIN|ARMS|LEGS
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20, fire = 100, acid = 100)
+ armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 100, "acid" = 100)
allowed = list(/obj/item/teleportation_scroll)
flags_inv = HIDEJUMPSUIT
strip_delay = 50
@@ -123,7 +123,7 @@
item_state = "wizrobe"
gas_transfer_coefficient = 1
permeability_coefficient = 1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = FLAMMABLE
/obj/item/clothing/head/wizard/marisa/fake
@@ -132,7 +132,7 @@
icon_state = "marisa"
gas_transfer_coefficient = 1
permeability_coefficient = 1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = FLAMMABLE
/obj/item/clothing/suit/wizrobe/marisa/fake
@@ -142,7 +142,7 @@
item_state = "marisarobe"
gas_transfer_coefficient = 1
permeability_coefficient = 1
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = FLAMMABLE
/obj/item/clothing/suit/wizrobe/paper
@@ -194,7 +194,7 @@
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20, fire = 100, acid = 100)
+ armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 100, "acid" = 100)
slowdown = 0
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -205,7 +205,7 @@
item_state = "battlemage"
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 20, bio = 20, rad = 20, fire = 100, acid = 100)
+ armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 100, "acid" = 100)
actions_types = null //No inbuilt light
resistance_flags = FIRE_PROOF | ACID_PROOF
diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm
index 62fd5b5f5a..dd290fdaa2 100644
--- a/code/modules/clothing/under/_under.dm
+++ b/code/modules/clothing/under/_under.dm
@@ -4,7 +4,7 @@
body_parts_covered = CHEST|GROIN|LEGS|ARMS
permeability_coefficient = 0.9
slot_flags = SLOT_ICLOTHING
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women
var/has_sensor = HAS_SENSORS // For the crew computer
var/random_sensor = TRUE
diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm
index df0783e4e7..946769ba41 100644
--- a/code/modules/clothing/under/accessories.dm
+++ b/code/modules/clothing/under/accessories.dm
@@ -207,7 +207,7 @@
icon_state = "plasma"
item_color = "plasma"
medaltype = "medal-plasma"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = -10, acid = 0) //It's made of plasma. Of course it's flammable.
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = -10, "acid" = 0) //It's made of plasma. Of course it's flammable.
materials = list(MAT_PLASMA=1000)
/obj/item/clothing/accessory/medal/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
@@ -318,7 +318,7 @@
desc = "A hunter's talisman, some say the old gods smile on those who wear it."
icon_state = "talisman"
item_color = "talisman"
- armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25)
+ armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25)
/obj/item/clothing/accessory/skullcodpiece
@@ -327,4 +327,4 @@
icon_state = "skull"
item_color = "skull"
above_suit = TRUE
- armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25)
+ armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 20, "bio" = 20, "rad" = 5, "fire" = 0, "acid" = 25)
diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm
index 6d522a3706..1115d822ed 100644
--- a/code/modules/clothing/under/jobs/civilian.dm
+++ b/code/modules/clothing/under/jobs/civilian.dm
@@ -92,7 +92,7 @@
name = "janitor's jumpsuit"
icon_state = "janitor"
item_color = "janitor"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/lawyer
desc = "Slick threads."
diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm
index cd69aec17e..4ee0963a64 100644
--- a/code/modules/clothing/under/jobs/engineering.dm
+++ b/code/modules/clothing/under/jobs/engineering.dm
@@ -5,7 +5,7 @@
icon_state = "chiefengineer"
item_state = "gy_suit"
item_color = "chief"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10, fire = 80, acid = 40)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 80, "acid" = 40)
resistance_flags = NONE
/obj/item/clothing/under/rank/atmospheric_technician
@@ -22,7 +22,7 @@
icon_state = "engine"
item_state = "engi_suit"
item_color = "engine"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10, fire = 60, acid = 20)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 60, "acid" = 20)
resistance_flags = NONE
/obj/item/clothing/under/rank/roboticist
diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm
index 553424de71..e506f726df 100644
--- a/code/modules/clothing/under/jobs/medsci.dm
+++ b/code/modules/clothing/under/jobs/medsci.dm
@@ -7,7 +7,7 @@
icon_state = "director"
item_state = "lb_suit"
item_color = "director"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 10, rad = 0, fire = 0, acid = 35)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 35)
can_adjust = FALSE
/obj/item/clothing/under/rank/research_director/alt
@@ -16,7 +16,7 @@
icon_state = "rdwhimsy"
item_state = "rdwhimsy"
item_color = "rdwhimsy"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 10, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -26,7 +26,7 @@
icon_state = "rdturtle"
item_state = "p_suit"
item_color = "rdturtle"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 10, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -37,7 +37,7 @@
item_state = "w_suit"
item_color = "toxinswhite"
permeability_coefficient = 0.5
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/rank/chemist
@@ -47,7 +47,7 @@
item_state = "w_suit"
item_color = "chemistrywhite"
permeability_coefficient = 0.5
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 50, acid = 65)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 65)
/*
* Medical
@@ -59,7 +59,7 @@
item_state = "w_suit"
item_color = "cmo"
permeability_coefficient = 0.5
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/rank/geneticist
desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it."
@@ -68,7 +68,7 @@
item_state = "w_suit"
item_color = "geneticswhite"
permeability_coefficient = 0.5
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/rank/virologist
desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it."
@@ -77,7 +77,7 @@
item_state = "w_suit"
item_color = "virologywhite"
permeability_coefficient = 0.5
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/rank/nursesuit
desc = "It's a jumpsuit commonly worn by nursing staff in the medical department."
@@ -86,7 +86,7 @@
item_state = "w_suit"
item_color = "nursesuit"
permeability_coefficient = 0.5
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
fitted = NO_FEMALE_UNIFORM
can_adjust = FALSE
@@ -97,7 +97,7 @@
item_state = "w_suit"
item_color = "medical"
permeability_coefficient = 0.5
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/under/rank/medical/blue
name = "medical scrubs"
diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm
index 0fdb155526..be8a113f22 100644
--- a/code/modules/clothing/under/jobs/security.dm
+++ b/code/modules/clothing/under/jobs/security.dm
@@ -15,7 +15,7 @@
icon_state = "rsecurity"
item_state = "r_suit"
item_color = "rsecurity"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 30, acid = 30)
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30)
strip_delay = 50
alt_covers_chest = TRUE
sensor_mode = SENSOR_COORDS
@@ -35,7 +35,7 @@
icon_state = "rwarden"
item_state = "r_suit"
item_color = "rwarden"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 30, acid = 30)
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30)
strip_delay = 50
alt_covers_chest = TRUE
sensor_mode = 3
@@ -57,7 +57,7 @@
icon_state = "detective"
item_state = "det"
item_color = "detective"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 30, acid = 30)
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30)
strip_delay = 50
alt_covers_chest = TRUE
sensor_mode = 3
@@ -80,7 +80,7 @@
icon_state = "rhos"
item_state = "r_suit"
item_color = "rhos"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 50)
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
strip_delay = 60
alt_covers_chest = TRUE
sensor_mode = 3
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index 1fccac5c43..18ec26a9a5 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -144,7 +144,7 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
- armor = list(melee = 100, bullet = 100, laser = 100,energy = 100, bomb = 100, bio = 100, rad = 100, fire = 100, acid = 100)
+ armor = list("melee" = 100, "bullet" = 100, "laser" = 100,"energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
@@ -617,7 +617,7 @@
icon_state = "plasmaman"
item_state = "plasmaman"
item_color = "plasmaman"
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 0, fire = 95, acid = 95)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95)
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
can_adjust = FALSE
strip_delay = 80
diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm
index 0db0ea11e9..34ba1b8bb1 100644
--- a/code/modules/clothing/under/syndicate.dm
+++ b/code/modules/clothing/under/syndicate.dm
@@ -5,7 +5,7 @@
item_state = "bl_suit"
item_color = "syndicate"
has_sensor = NO_SENSORS
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 40)
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
alt_covers_chest = TRUE
/obj/item/clothing/under/syndicate/tacticool
@@ -14,7 +14,7 @@
icon_state = "tactifool"
item_state = "bl_suit"
item_color = "tactifool"
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 40)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
/obj/item/clothing/under/syndicate/sniper
name = "Tactical turtleneck suit"
@@ -36,7 +36,7 @@
icon_state = "trackpants"
item_color = "trackpants"
can_adjust = FALSE
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
resistance_flags = NONE
/obj/item/clothing/under/syndicate/combat
diff --git a/code/modules/clothing/under/trek.dm b/code/modules/clothing/under/trek.dm
index e4069a7fad..9564d03909 100644
--- a/code/modules/clothing/under/trek.dm
+++ b/code/modules/clothing/under/trek.dm
@@ -19,7 +19,7 @@
icon_state = "trek_engsec"
item_color = "trek_engsec"
item_state = "r_suit"
- armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) //more sec than eng, but w/e.
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) //more sec than eng, but w/e.
strip_delay = 50
/obj/item/clothing/under/trek/medsci
diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm
index 7a68181f0c..fdc1aeffe7 100644
--- a/code/modules/events/holiday/xmas.dm
+++ b/code/modules/events/holiday/xmas.dm
@@ -37,7 +37,7 @@
icon_state = "xmashat"
desc = "A crappy paper hat that you are REQUIRED to wear."
flags_inv = 0
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/effect/landmark/xmastree
name = "christmas tree spawner"
diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm
index 362342942b..510d7da94e 100644
--- a/code/modules/integrated_electronics/core/assemblies.dm
+++ b/code/modules/integrated_electronics/core/assemblies.dm
@@ -21,7 +21,7 @@
var/charge_delay = 4
var/use_cyborg_cell = TRUE
max_integrity = 50
- armor = list(melee = 50, bullet = 70, laser = 70, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 0, acid = 0)
+ armor = list("melee" = 50, "bullet" = 70, "laser" = 70, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
/obj/item/device/electronic_assembly/proc/check_interactivity(mob/user)
return user.canUseTopic(src, BE_CLOSE)
diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm
index 047df39e70..f150e9cfcd 100644
--- a/code/modules/integrated_electronics/subtypes/manipulation.dm
+++ b/code/modules/integrated_electronics/subtypes/manipulation.dm
@@ -356,7 +356,7 @@
name = "pulling claw"
desc = "Circuit which can pull things.."
icon_state = "pull_claw"
- extended_desc = "The circuit accepts a reference to thing to be pulled. Modes: 0 for release.1 for pull. 2 for gressive grab."
+ extended_desc = "The circuit accepts a reference to thing to be pulled. Modes: 0 for release. 1 for pull."
w_class = WEIGHT_CLASS_SMALL
size = 3
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 7ecb0529ba..92122411e4 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -20,7 +20,7 @@
opacity = 0
resistance_flags = FLAMMABLE
max_integrity = 200
- armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0)
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
var/state = 0
var/list/allowed_books = list(/obj/item/book, /obj/item/spellbook, /obj/item/storage/book) //Things allowed in the bookcase
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index 57754cfb45..fc26fac0bc 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -10,7 +10,7 @@
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
heat_protection = CHEST|GROIN|LEGS|ARMS
hoodtype = /obj/item/clothing/head/hooded/explorer
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50)
+ armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
resistance_flags = FIRE_PROOF
@@ -22,7 +22,7 @@
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 50, fire = 50, acid = 50)
+ armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
resistance_flags = FIRE_PROOF
/obj/item/clothing/mask/gas/explorer
@@ -33,7 +33,7 @@
visor_flags_inv = HIDEFACIALHAIR
visor_flags_cover = MASKCOVERSMOUTH
actions_types = list(/datum/action/item_action/adjust)
- armor = list(melee = 10, bullet = 5, laser = 5, energy = 5, bomb = 0, bio = 50, rad = 0, fire = 20, acid = 40)
+ armor = list("melee" = 10, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 20, "acid" = 40)
resistance_flags = FIRE_PROOF
/obj/item/clothing/mask/gas/explorer/attack_self(mob/user)
diff --git a/code/modules/mining/equipment/marker_beacons.dm b/code/modules/mining/equipment/marker_beacons.dm
index e93e3713c3..b1a4d522de 100644
--- a/code/modules/mining/equipment/marker_beacons.dm
+++ b/code/modules/mining/equipment/marker_beacons.dm
@@ -72,7 +72,7 @@ GLOBAL_LIST_INIT(marker_beacon_colors, list(
icon = 'icons/obj/lighting.dmi'
icon_state = "marker"
layer = BELOW_OPEN_DOOR_LAYER
- armor = list(melee = 50, bullet = 75, laser = 75, energy = 75, bomb = 25, bio = 100, rad = 100, fire = 25, acid = 0)
+ armor = list("melee" = 50, "bullet" = 75, "laser" = 75, "energy" = 75, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 25, "acid" = 0)
max_integrity = 50
anchored = TRUE
light_range = 2
diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
index 0e00975a5a..7e30abd49c 100644
--- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm
@@ -240,3 +240,113 @@
attack_verb = "claw"
attack_sound = 'sound/weapons/slash.ogg'
miss_sound = 'sound/weapons/slashmiss.ogg'
+
+//##########SLIMEPEOPLE##########
+
+/datum/species/jelly/roundstartslime
+ name = "Slimeperson"
+ id = "slimeperson"
+ default_color = "00FFFF"
+ species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,TOXINLOVER)
+ mutant_bodyparts = list("mam_tail", "mam_ears", "taur")
+ default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None")
+ say_mod = "says"
+ hair_color = "mutcolor"
+ hair_alpha = 180
+ liked_food = MEAT
+ coldmod = 6
+ heatmod = 1
+ burnmod = 1
+
+/datum/action/innate/slime_change
+ name = "Alter Form"
+ check_flags = AB_CHECK_CONSCIOUS
+ button_icon_state = "alter_form" //placeholder
+ icon_icon = 'icons/mob/actions/actions_slime.dmi'
+ background_icon_state = "bg_alien"
+
+/datum/action/innate/slime_change/Activate()
+ var/mob/living/carbon/human/H = owner
+ if(!isjellyperson(H))
+ return
+ else
+ H.visible_message("[owner] gains a look of \
+ concentration while standing perfectly still.\
+ Their body seems to shift and starts getting more goo-like.",
+ "You focus intently on altering your body while \
+ standing perfectly still...")
+ change_form()
+
+/datum/action/innate/slime_change/proc/change_form()
+ var/mob/living/carbon/human/H = owner
+ var/select_alteration = input(owner, "Select what part of your form to alter", "Form Alteration", "cancel") in list("Hair Style", "Genitals", "Tail", "Ears", "Taur body", "Cancel")
+ if(select_alteration == "Hair Style")
+ if(H.gender == MALE)
+ var/new_style = input(owner, "Select a facial hair style", "Hair Alterations") as null|anything in GLOB.facial_hair_styles_list
+ if(new_style)
+ H.facial_hair_style = new_style
+ else
+ H.facial_hair_style = "Shaved"
+ //handle normal hair
+ var/new_style = input(owner, "Select a hair style", "Hair Alterations") as null|anything in GLOB.hair_styles_list
+ if(new_style)
+ H.hair_style = new_style
+ H.update_hair()
+ else if (select_alteration == "Genitals")
+ var/list/organs = list()
+ var/operation = input("Select organ operation.", "Organ Manipulation", "cancel") in list("add sexual organ", "remove sexual organ", "cancel")
+ switch(operation)
+ if("add sexual organ")
+ var/new_organ = input("Select sexual organ:", "Organ Manipulation") in list("Penis", "Testicles", "Breasts", "Vagina", "Womb", "Cancel")
+ if(new_organ == "Penis")
+ H.give_penis()
+ else if(new_organ == "Testicles")
+ H.give_balls()
+ else if(new_organ == "Breasts")
+ H.give_breasts()
+ else if(new_organ == "Vagina")
+ H.give_vagina()
+ else if(new_organ == "Womb")
+ H.give_womb()
+ else
+ return
+ if("remove sexual organ")
+ for(var/obj/item/organ/genital/X in H.internal_organs)
+ var/obj/item/organ/I = X
+ organs["[I.name] ([I.type])"] = I
+ var/obj/item/organ = input("Select sexual organ:", "Organ Manipulation", null) in organs
+ organ = organs[organ]
+ if(!organ)
+ return
+ var/obj/item/organ/genital/O
+ if(isorgan(organ))
+ O = organ
+ O.Remove(H)
+ organ.forceMove(get_turf(H))
+ qdel(organ)
+ H.update_body()
+ else if (select_alteration == "Ears")
+ var/new_ears
+ new_ears = input(owner, "Choose your character's ears:", "Ear Alteration") as null|anything in GLOB.mam_ears_list
+ if(new_ears)
+ H.dna.features["mam_ears"] = new_ears
+ H.update_body()
+ else if (select_alteration == "Tail")
+ var/new_tail
+ new_tail = input(owner, "Choose your character's tail:", "Tail Alteration") as null|anything in GLOB.mam_tails_list
+ if(new_tail)
+ H.dna.features["mam_tail"] = new_tail
+ if(new_tail != "None")
+ H.dna.features["taur"] = "None"
+ H.update_body()
+ else if (select_alteration == "Taur body")
+ var/new_taur
+ new_taur = input(owner, "Choose your character's tauric body:", "Taur Body Alteration") as null|anything in GLOB.taur_list
+ if(new_taur)
+ H.dna.features["taur"] = new_taur
+ if(new_taur != "None")
+ H.dna.features["mam_tail"] = "None"
+ H.dna.features["xenotail"] = "None"
+ H.update_body()
+ else
+ return
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index 2fd9812340..621eeb609a 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -696,7 +696,7 @@
name = "pile of bandages"
desc = "It emits a strange aura, as if there was still life within it..."
max_integrity = 50
- armor = list(melee = 90, bullet = 90, laser = 25, energy = 80, bomb = 50, bio = 100, fire = -50, acid = -50)
+ armor = list("melee" = 90, "bullet" = 90, "laser" = 25, "energy" = 80, "bomb" = 50, "bio" = 100, "fire" = -50, "acid" = -50)
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "pile_bandages"
resistance_flags = FLAMMABLE
diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
index 0299d64621..6c03ded69d 100644
--- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -4,11 +4,14 @@
id = "jelly"
default_color = "00FF90"
say_mod = "chirps"
- species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,TOXINLOVER)
+ species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,HAIR,FACEHAIR,TOXINLOVER) //CIT CHANGE - adds HAIR and FACEHAIR to species traits
+ mutant_bodyparts = list("mam_tail", "mam_ears", "taur") //CIT CHANGE
+ default_features = list("mcolor" = "FFF", "mam_tail" = "None", "mam_ears" = "None") //CIT CHANGE
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime
exotic_blood = "slimejelly"
damage_overlay_type = ""
var/datum/action/innate/regenerate_limbs/regenerate_limbs
+ var/datum/action/innate/slime_change/slime_change //CIT CHANGE
liked_food = MEAT
coldmod = 6 // = 3x cold damage
heatmod = 0.5 // = 1/4x heat damage
@@ -17,17 +20,19 @@
/datum/species/jelly/on_species_loss(mob/living/carbon/C)
if(regenerate_limbs)
regenerate_limbs.Remove(C)
- C.remove_language(/datum/language/slime, TRUE)
+ C.remove_language(/datum/language/slime)
C.faction -= "slime"
..()
C.faction -= "slime"
/datum/species/jelly/on_species_gain(mob/living/carbon/C, datum/species/old_species)
..()
- C.grant_language(/datum/language/slime, TRUE)
+ C.grant_language(/datum/language/slime)
if(ishuman(C))
regenerate_limbs = new
regenerate_limbs.Grant(C)
+ slime_change = new //CIT CHANGE
+ slime_change.Grant(C) //CIT CHANGE
C.faction |= "slime"
/datum/species/jelly/spec_life(mob/living/carbon/human/H)
@@ -111,7 +116,6 @@
name = "Slimeperson"
id = "slime"
default_color = "00FFFF"
- species_traits = list(SPECIES_ORGANIC,MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,TOXINLOVER)
say_mod = "says"
hair_color = "mutcolor"
hair_alpha = 150
@@ -121,23 +125,23 @@
var/datum/action/innate/swap_body/swap_body
/datum/species/jelly/slime/on_species_loss(mob/living/carbon/C)
-/* if(slime_split)
+ if(slime_split)
slime_split.Remove(C)
if(swap_body)
swap_body.Remove(C)
bodies -= C // This means that the other bodies maintain a link
// so if someone mindswapped into them, they'd still be shared.
- bodies = null */
+ bodies = null
C.blood_volume = min(C.blood_volume, BLOOD_VOLUME_NORMAL)
..()
/datum/species/jelly/slime/on_species_gain(mob/living/carbon/C, datum/species/old_species)
..()
if(ishuman(C))
- /* slime_split = new
+ slime_split = new
slime_split.Grant(C)
swap_body = new
- swap_body.Grant(C)*/
+ swap_body.Grant(C)
if(!bodies || !bodies.len)
bodies = list(C)
@@ -718,3 +722,4 @@
else
to_chat(H, "You can't seem to link [target]'s mind...")
to_chat(target, "The foreign presence leaves your mind.")
+
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 3b8f35de5a..2e57fb929b 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -77,6 +77,7 @@
var/list/upgrades = list()
+ var/hasExpanded = FALSE
var/obj/item/hat
var/hat_offset = -3
var/list/equippable_hats = list(/obj/item/clothing/head/caphat,
@@ -976,6 +977,11 @@
shown_robot_modules = FALSE
if(hud_used)
hud_used.update_robot_modules_display()
+
+ if (hasExpanded)
+ resize = 0.5
+ hasExpanded = FALSE
+ update_transform()
module.transform_to(/obj/item/robot_module)
// Remove upgrades.
diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm
index e1cc2f3cb6..2d50d4a186 100644
--- a/code/modules/modular_computers/computers/item/computer.dm
+++ b/code/modules/modular_computers/computers/item/computer.dm
@@ -31,7 +31,7 @@
integrity_failure = 50
max_integrity = 100
- armor = list(melee = 0, bullet = 20, laser = 20, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 0, acid = 0)
+ armor = list("melee" = 0, "bullet" = 20, "laser" = 20, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
// Important hardware (must be installed for computer to work)
diff --git a/code/modules/ninja/suit/head.dm b/code/modules/ninja/suit/head.dm
index 7ada5de3ea..a62f871f56 100644
--- a/code/modules/ninja/suit/head.dm
+++ b/code/modules/ninja/suit/head.dm
@@ -5,7 +5,7 @@
name = "ninja hood"
icon_state = "s-ninja"
item_state = "s-ninja_mask"
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 25, fire = 100, acid = 100)
+ armor = list("melee" = 60, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 25, "fire" = 100, "acid" = 100)
strip_delay = 12
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
blockTracking = 1//Roughly the only unique thing about this helmet.
diff --git a/code/modules/ninja/suit/shoes.dm b/code/modules/ninja/suit/shoes.dm
index 4cc0bc86c9..df8caf0291 100644
--- a/code/modules/ninja/suit/shoes.dm
+++ b/code/modules/ninja/suit/shoes.dm
@@ -7,7 +7,7 @@
permeability_coefficient = 0.01
flags_1 = NOSLIP_1
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 100, acid = 100)
+ armor = list("melee" = 60, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 100, "acid" = 100)
strip_delay = 120
cold_protection = FEET
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm
index 377020e33a..8b0b4cd256 100644
--- a/code/modules/ninja/suit/suit.dm
+++ b/code/modules/ninja/suit/suit.dm
@@ -19,7 +19,7 @@ Contents:
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/stock_parts/cell)
slowdown = 1
resistance_flags = LAVA_PROOF | ACID_PROOF
- armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30, fire = 100, acid = 100)
+ armor = list("melee" = 60, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 100, "acid" = 100)
strip_delay = 12
actions_types = list(/datum/action/item_action/initialize_ninja_suit, /datum/action/item_action/ninjasmoke, /datum/action/item_action/ninjaboost, /datum/action/item_action/ninjapulse, /datum/action/item_action/ninjastar, /datum/action/item_action/ninjanet, /datum/action/item_action/ninja_sword_recall, /datum/action/item_action/ninja_stealth, /datum/action/item_action/toggle_glove)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index c68b2bedb0..fcc0d3a7b3 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -116,7 +116,7 @@
if (!req_access)
req_access = list(ACCESS_ENGINE_EQUIP)
if (!armor)
- armor = list(melee = 20, bullet = 20, laser = 10, energy = 100, bomb = 30, bio = 100, rad = 100, fire = 90, acid = 50)
+ armor = list("melee" = 20, "bullet" = 20, "laser" = 10, "energy" = 100, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50)
..()
GLOB.apcs_list += src
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 022b1f7d5b..719aa082ca 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -43,7 +43,7 @@
anchored = TRUE
layer = WALL_OBJ_LAYER
max_integrity = 200
- armor = list(melee = 50, bullet = 10, laser = 10, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 80, acid = 50)
+ armor = list("melee" = 50, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
var/stage = 1
var/fixture_type = "tube"
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 4f39d34954..4315cf70b5 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -28,7 +28,7 @@ field_generator power level display
use_power = NO_POWER_USE
max_integrity = 500
//100% immune to lasers and energy projectiles since it absorbs their energy.
- armor = list(melee = 25, bullet = 10, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 70)
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70)
var/const/num_power_levels = 6 // Total number of power level icon has
var/power_level = 0
var/active = FG_OFFLINE
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index b7808abc1f..9f7c3ba05a 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -27,7 +27,7 @@
anchored = FALSE
density = TRUE
max_integrity = 500
- armor = list(melee = 30, bullet = 20, laser = 20, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 90, acid = 80)
+ armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 80)
var/obj/machinery/particle_accelerator/control_box/master = null
var/construction_state = PA_CONSTRUCTION_UNSECURED
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 3c8092307a..6da6f8629f 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -65,6 +65,7 @@
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb
var/projectile_type = /obj/item/projectile
var/range = 50 //This will de-increment every step. When 0, it will deletze the projectile.
+ var/decayedRange
var/is_reflectable = FALSE // Can it be reflected or not?
//Effects
var/stun = 0
@@ -85,6 +86,7 @@
/obj/item/projectile/Initialize()
. = ..()
permutated = list()
+ decayedRange = range
/obj/item/projectile/proc/Range()
range--
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 789b92a9b9..ee25eed30d 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -1207,3 +1207,71 @@
/datum/reagent/medicine/muscle_stimulant/on_mob_delete(mob/living/M)
. = ..()
M.remove_trait(TRAIT_IGNORESLOWDOWN, id)
+
+/datum/reagent/medicine/modafinil
+ name = "Modafinil"
+ id = "modafinil"
+ description = "Long-lasting sleep suppressant that very slightly reduces stun and knockdown times. Overdosing has horrendous side effects and deals lethal oxygen damage, will knock you unconscious if not dealt with."
+ reagent_state = LIQUID
+ color = "#BEF7D8" // palish blue white
+ metabolization_rate = 0.1 * REAGENTS_METABOLISM
+ overdose_threshold = 20 // with the random effects this might be awesome or might kill you at less than 10u (extensively tested)
+ taste_description = "salt" // it actually does taste salty
+ var/overdose_progress = 0 // to track overdose progress
+
+/datum/reagent/medicine/modafinil/on_mob_add(mob/living/M)
+ M.add_trait(TRAIT_SLEEPIMMUNE, id)
+ ..()
+
+/datum/reagent/medicine/modafinil/on_mob_delete(mob/living/M)
+ M.remove_trait(TRAIT_SLEEPIMMUNE, id)
+ ..()
+
+/datum/reagent/medicine/modafinil/on_mob_life(mob/living/M)
+ if(!overdosed) // We do not want any effects on OD
+ overdose_threshold = overdose_threshold + rand(-10,10)/10 // for extra fun
+ M.AdjustStun(-5, 0)
+ M.AdjustKnockdown(-5, 0)
+ M.AdjustUnconscious(-5, 0)
+ M.adjustStaminaLoss(-0.5*REM, 0)
+ M.Jitter(1)
+ metabolization_rate = 0.01 * REAGENTS_METABOLISM * rand(5,20) // randomizes metabolism between 0.02 and 0.08 per tick
+ . = 1
+ ..()
+
+/datum/reagent/medicine/modafinil/overdose_start(mob/living/M)
+ to_chat(M, "You feel awfully out of breath and jittery!")
+ metabolization_rate = 0.025 * REAGENTS_METABOLISM // sets metabolism to 0.01 per tick on overdose
+
+/datum/reagent/medicine/modafinil/overdose_process(mob/living/M)
+ overdose_progress++
+ switch(overdose_progress)
+ if(1 to 40)
+ M.jitteriness = min(M.jitteriness+1, 10)
+ M.stuttering = min(M.stuttering+1, 10)
+ M.Dizzy(5)
+ if(prob(50))
+ M.losebreath++
+ if(41 to 80)
+ M.adjustOxyLoss(0.1*REM, 0)
+ M.adjustStaminaLoss(0.1*REM, 0)
+ M.jitteriness = min(M.jitteriness+1, 20)
+ M.stuttering = min(M.stuttering+1, 20)
+ M.Dizzy(10)
+ if(prob(50))
+ M.losebreath++
+ if(prob(20))
+ to_chat(M, "You have a sudden fit!")
+ M.emote("moan")
+ M.Knockdown(20, 1, 0) // you should be in a bad spot at this point unless epipen has been used
+ if(81)
+ to_chat(M, "You feel too exhausted to continue!") // at this point you will eventually die unless you get charcoal
+ M.adjustOxyLoss(0.1*REM, 0)
+ M.adjustStaminaLoss(0.1*REM, 0)
+ if(82 to INFINITY)
+ M.Sleeping(100, 0, TRUE)
+ M.adjustOxyLoss(1.5*REM, 0)
+ M.adjustStaminaLoss(1.5*REM, 0)
+ ..()
+ . = 1
+
diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm
index f80f4114b5..dc7c32d925 100644
--- a/code/modules/reagents/chemistry/recipes/medicine.dm
+++ b/code/modules/reagents/chemistry/recipes/medicine.dm
@@ -245,3 +245,10 @@
results = list("morphine" = 2)
required_reagents = list("carbon" = 2, "hydrogen" = 2, "ethanol" = 1, "oxygen" = 1)
required_temp = 480
+
+/datum/chemical_reaction/modafinil
+ name = "Modafinil"
+ id = "modafinil"
+ results = list("modafinil" = 5)
+ required_reagents = list("diethylamine" = 1, "ammonia" = 1, "phenol" = 1, "acetone" = 1, "sacid" = 1)
+ required_catalysts = list("bromine" = 1) // as close to the real world synthesis as possible
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index 52d12e8eb1..bf698300e8 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -609,9 +609,33 @@
required_other = 1
required_container = /obj/item/slime_extract/rainbow
-/datum/chemical_reaction/slime/slimeRNG/on_reaction(datum/reagents/holder)
- var/mob/living/simple_animal/slime/random/S = new (get_turf(holder.my_atom))
- S.visible_message("Infused with plasma, the core begins to quiver and grow, and a new baby slime emerges from it!")
+/datum/chemical_reaction/slime/slimeRNG/on_reaction(datum/reagents/holder, created_volume)
+ if(created_volume >= 5)
+ var/obj/item/grenade/clusterbuster/slime/S = new (holder.my_atom.loc)
+ S.visible_message("Infused with plasma, the core begins to expand uncontrollably!")
+ S.icon_state = "[S.base_state]_active"
+ S.active = TRUE
+ addtimer(CALLBACK(S, /obj/item/grenade.proc/prime), rand(15,60))
+ qdel(holder.my_atom) //deleto
+ else
+ var/mob/living/simple_animal/slime/random/S = new (holder.my_atom.loc)
+ S.visible_message("Infused with plasma, the core begins to quiver and grow, and a new baby slime emerges from it!")
+ ..()
+
+/datum/chemical_reaction/slime/slimebomb
+ name = "Clusterblorble"
+ id = "slimebomb"
+ required_reagents = list("slimejelly" = 1)
+ required_other = 1
+ required_container = /obj/item/slime_extract/rainbow
+
+/datum/chemical_reaction/slime/slimebomb/on_reaction(datum/reagents/holder, created_volume)
+ var/obj/item/grenade/clusterbuster/slime/volatile/S = new (holder.my_atom.loc)
+ S.visible_message("Infused with slime jelly, the core begins to expand uncontrollably!")
+ S.icon_state = "[S.base_state]_active"
+ S.active = TRUE
+ addtimer(CALLBACK(S, /obj/item/grenade.proc/prime), rand(15,60))
+ qdel(holder.my_atom) //deleto
..()
/datum/chemical_reaction/slime/slime_transfer
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 9d26b65151..f8a01b16f0 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -230,7 +230,7 @@
flags_inv = HIDEHAIR
slot_flags = SLOT_HEAD
resistance_flags = NONE
- armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 75, acid = 50) //Weak melee protection, because you can wear it on your head
+ armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 50) //Weak melee protection, because you can wear it on your head
slot_equipment_priority = list( \
slot_back, slot_wear_id,\
slot_w_uniform, slot_wear_suit,\
diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm
index 71235045f3..5b9212339a 100644
--- a/code/modules/recycling/disposal/bin.dm
+++ b/code/modules/recycling/disposal/bin.dm
@@ -6,7 +6,7 @@
icon = 'icons/obj/atmospherics/pipes/disposal.dmi'
anchored = TRUE
density = TRUE
- armor = list(melee = 25, bullet = 10, laser = 10, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 90, acid = 30)
+ armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30)
max_integrity = 200
resistance_flags = FIRE_PROOF
interact_open = TRUE
diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm
index 2d5ac40c8b..c69b9b1e86 100644
--- a/code/modules/spells/spell_types/rightandwrong.dm
+++ b/code/modules/spells/spell_types/rightandwrong.dm
@@ -25,7 +25,6 @@ GLOBAL_LIST_INIT(summoned_guns, list(
/obj/item/gun/energy/kinetic_accelerator/crossbow/large,
/obj/item/gun/energy/e_gun/nuclear,
/obj/item/gun/ballistic/automatic/proto,
- /obj/item/gun/ballistic/automatic/shotgun/bulldog,
/obj/item/gun/ballistic/automatic/c20r,
/obj/item/gun/ballistic/automatic/l6_saw,
/obj/item/gun/ballistic/automatic/m90,
@@ -39,7 +38,7 @@ GLOBAL_LIST_INIT(summoned_guns, list(
/obj/item/gun/energy/plasmacutter/adv,
/obj/item/gun/energy/wormhole_projector,
/obj/item/gun/ballistic/automatic/wt550,
- /obj/item/gun/ballistic/automatic/shotgun,
+ /obj/item/gun/ballistic/automatic/shotgun/bulldog,
/obj/item/gun/ballistic/revolver/grenadelauncher,
/obj/item/gun/ballistic/revolver/golden,
/obj/item/gun/ballistic/automatic/sniper_rifle,
diff --git a/config/game_options.txt b/config/game_options.txt
index a3c6399013..bd39305cf7 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -405,7 +405,7 @@ ROUNDSTART_RACES plasmaman
## Races that are straight upgrades. If these are on expect powergamers to always pick them
#ROUNDSTART_RACES skeleton
#ROUNDSTART_RACES zombie
-#ROUNDSTART_RACES slime
+ROUNDSTART_RACES slimeperson
#ROUNDSTART_RACES pod
#ROUNDSTART_RACES military_synth
#ROUNDSTART_RACES agent
diff --git a/html/changelogs/AutoChangeLog-pr-5525.yml b/html/changelogs/AutoChangeLog-pr-5525.yml
new file mode 100644
index 0000000000..8fffeb931d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5525.yml
@@ -0,0 +1,7 @@
+author: "RealDonaldTrump"
+delete-after: True
+changes:
+ - rscadd: "Slimepeople (And all types, including Jelly, Xenobio Slimeperson, Stargazer and Luminescent) now have the ability to utilise the 'Alter Form' ability, allowing them to change most things about their body's form."
+ - rscadd: "Re-added the slime split and bodyswap ability to Xenobiological Slimepeople, only obtainable through xenobio."
+ - rscadd: "Slimepeople can now select tails, taur bodies and ears at roundstart. YOU WILL NEED TO SET YOUR COLOURS; otherwise you'll be rainbow coloured and not exactly slime-like. And nobody wants that."
+ - config: "Changed the ID for the roundstart slimepeople (Without the body swap and slime split abilities) to slimeperson. This will need set in the config on Jay's end."
diff --git a/html/changelogs/AutoChangeLog-pr-5535.yml b/html/changelogs/AutoChangeLog-pr-5535.yml
new file mode 100644
index 0000000000..c74dec1e9d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5535.yml
@@ -0,0 +1,6 @@
+author: "CitadelStationBot"
+delete-after: True
+changes:
+ - rscadd: "added a subreaction for rainbow slime cores, injecting 5u of plasma now makes them explode into random slimecores."
+ - rscadd: "added a slimejelly reaction to rainbow slime cores that does the above but all the cores that spawn get 5u each of plasma, water and blood injected. (aka chaos)"
+ - code_imp: "improved clusterbuster code with Initialize, addtimer, vars for sounds and payload spawners, etc"
diff --git a/html/changelogs/AutoChangeLog-pr-5539.yml b/html/changelogs/AutoChangeLog-pr-5539.yml
new file mode 100644
index 0000000000..f0d826d2dc
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5539.yml
@@ -0,0 +1,4 @@
+author: "TankNut"
+delete-after: True
+changes:
+ - tweak: "Corpses spawned in ruins have their suit sensors disabled"
diff --git a/html/changelogs/AutoChangeLog-pr-5540.yml b/html/changelogs/AutoChangeLog-pr-5540.yml
new file mode 100644
index 0000000000..858331ade5
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5540.yml
@@ -0,0 +1,4 @@
+author: "Modafinil"
+delete-after: True
+changes:
+ - rscadd: "Adds new medicine chem that suppresses sleep and very lightly reduces stunrates, has a very low metabolic rate which is randomized and a low overdose treshold. Overdosing is a lethal oxyloss unless treated. (With epipen urgently and with charcoal/calomel before it puts you to sleep)"
diff --git a/html/changelogs/AutoChangeLog-pr-5542.yml b/html/changelogs/AutoChangeLog-pr-5542.yml
new file mode 100644
index 0000000000..941c3c2a57
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5542.yml
@@ -0,0 +1,5 @@
+author: "coiax"
+delete-after: True
+changes:
+ - bugfix: "Species with RESISTHOT (golems, skeletons) can extinguish burning
+items as if they were wearing fireproof gloves."
diff --git a/html/changelogs/AutoChangeLog-pr-5546.yml b/html/changelogs/AutoChangeLog-pr-5546.yml
new file mode 100644
index 0000000000..0c26141b42
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5546.yml
@@ -0,0 +1,4 @@
+author: "jakeramsay007"
+delete-after: True
+changes:
+ - bugfix: "Jellypeople/Slimepeople now are able to speak their Slime language, as intended when it was added."
diff --git a/html/changelogs/AutoChangeLog-pr-5547.yml b/html/changelogs/AutoChangeLog-pr-5547.yml
new file mode 100644
index 0000000000..b9174386ca
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5547.yml
@@ -0,0 +1,4 @@
+author: "Dax Dupont"
+delete-after: True
+changes:
+ - bugfix: "After an incident where a very eager roboticist kept expanding a borg's size leading to a structural collapse of the entire station proper safety limitations have been implemented."
diff --git a/html/changelogs/AutoChangeLog-pr-5548.yml b/html/changelogs/AutoChangeLog-pr-5548.yml
new file mode 100644
index 0000000000..f3695c5649
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5548.yml
@@ -0,0 +1,4 @@
+author: "CitadelStationBot"
+delete-after: True
+changes:
+ - bugfix: "fixes lava and fire burning HE-pipes"
diff --git a/html/changelogs/AutoChangeLog-pr-5549.yml b/html/changelogs/AutoChangeLog-pr-5549.yml
new file mode 100644
index 0000000000..fddb207ee1
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5549.yml
@@ -0,0 +1,4 @@
+author: "CitadelStationBot"
+delete-after: True
+changes:
+ - bugfix: "removes the maintenance panel examination message on poddoors (blast doors)"
diff --git a/html/changelogs/AutoChangeLog-pr-5550.yml b/html/changelogs/AutoChangeLog-pr-5550.yml
new file mode 100644
index 0000000000..9e3ae64528
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-5550.yml
@@ -0,0 +1,4 @@
+author: "Dax Dupont"
+delete-after: True
+changes:
+ - rscadd: "Nanotrasen has invested in better reflective materials for it's reflectors. You can now make complex laser shows again."
diff --git a/icons/mob/actions/actions_slime.dmi b/icons/mob/actions/actions_slime.dmi
index acf7a31c6e..23fd6e3e8a 100644
Binary files a/icons/mob/actions/actions_slime.dmi and b/icons/mob/actions/actions_slime.dmi differ
diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi
index 5e33807ec7..c275e66752 100644
Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ
diff --git a/icons/mob/human_parts_greyscale.dmi b/icons/mob/human_parts_greyscale.dmi
index c65a214932..63596ad094 100644
Binary files a/icons/mob/human_parts_greyscale.dmi and b/icons/mob/human_parts_greyscale.dmi differ
diff --git a/icons/mob/inhands/antag/balloons_lefthand.dmi b/icons/mob/inhands/antag/balloons_lefthand.dmi
index 06f68a1cb1..1e1171822c 100644
Binary files a/icons/mob/inhands/antag/balloons_lefthand.dmi and b/icons/mob/inhands/antag/balloons_lefthand.dmi differ
diff --git a/icons/mob/inhands/antag/balloons_righthand.dmi b/icons/mob/inhands/antag/balloons_righthand.dmi
index e417c1cfed..3d026d516d 100644
Binary files a/icons/mob/inhands/antag/balloons_righthand.dmi and b/icons/mob/inhands/antag/balloons_righthand.dmi differ
diff --git a/icons/obj/grenade.dmi b/icons/obj/grenade.dmi
index 7f4d65e081..9be47e5ef2 100644
Binary files a/icons/obj/grenade.dmi and b/icons/obj/grenade.dmi differ
diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi
index 43a6a127ce..2787cfd8e0 100644
Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ
diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
new file mode 100644
index 0000000000..5e3f58e26c
--- /dev/null
+++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm
@@ -0,0 +1,2 @@
+/datum/species/jelly/slime
+ name = "Xenobiological Slimeperson"
diff --git a/tgstation.dme b/tgstation.dme
index 2534f97c3e..8b76193141 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -482,9 +482,7 @@
#include "code\game\area\areas\centcom.dm"
#include "code\game\area\areas\holodeck.dm"
#include "code\game\area\areas\mining.dm"
-#include "code\game\area\areas\misc.dm"
#include "code\game\area\areas\shuttles.dm"
-#include "code\game\area\areas\space_content.dm"
#include "code\game\area\areas\ruins\_ruins.dm"
#include "code\game\area\areas\ruins\lavaland.dm"
#include "code\game\area\areas\ruins\space.dm"
@@ -2580,6 +2578,7 @@
#include "modular_citadel\code\modules\mining\mine_items.dm"
#include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm"
#include "modular_citadel\code\modules\mob\living\carbon\human\life.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\human\species_types\jellypeople.dm"
#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm"
#include "modular_citadel\code\modules\mob\living\simple_animal\banana_spider.dm"
#include "modular_citadel\code\modules\mob\living\simple_animal\kiwi.dm"