From 687860e3a20924369abfcced3ee23cb0fcac663b Mon Sep 17 00:00:00 2001 From: Robertha89 Date: Sun, 4 Oct 2015 03:33:31 +0200 Subject: [PATCH 01/22] Sudoku via pen --- code/modules/paperwork/pen.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 4f61c78c761..5269f51bf19 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -24,6 +24,9 @@ var/colour = "black" //what colour the ink is! pressure_resistance = 2 +/obj/item/weapon/pen/suicide_act(mob/user) + viewers(user) << "[user] starts scribbling over \himself with the [src.name]! It looks like \he's trying to commit sudoku." + return (BRUTELOSS) /obj/item/weapon/pen/blue name = "blue-ink pen" @@ -143,4 +146,4 @@ item_state = "edagger" else icon_state = initial(icon_state) //looks like a normal pen when off. - item_state = initial(item_state) \ No newline at end of file + item_state = initial(item_state) From ad1d3ab9c6277b722d2b3ef93fb741a07d1f951f Mon Sep 17 00:00:00 2001 From: Robertha89 Date: Sun, 4 Oct 2015 04:01:03 +0200 Subject: [PATCH 02/22] Removes a tab --- code/modules/paperwork/pen.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 5269f51bf19..5de31bd5f0b 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -25,7 +25,7 @@ pressure_resistance = 2 /obj/item/weapon/pen/suicide_act(mob/user) - viewers(user) << "[user] starts scribbling over \himself with the [src.name]! It looks like \he's trying to commit sudoku." + viewers(user) << "[user] starts scribbling over \himself with the [src.name]! It looks like \he's trying to commit sudoku." return (BRUTELOSS) /obj/item/weapon/pen/blue From 93b2daf1c2985c8fe9d1563471c99b83fbd65a11 Mon Sep 17 00:00:00 2001 From: Robertha89 Date: Sun, 4 Oct 2015 04:12:53 +0200 Subject: [PATCH 03/22] Fixes the reason it wont compile --- code/modules/paperwork/pen.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 5de31bd5f0b..5269f51bf19 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -25,7 +25,7 @@ pressure_resistance = 2 /obj/item/weapon/pen/suicide_act(mob/user) - viewers(user) << "[user] starts scribbling over \himself with the [src.name]! It looks like \he's trying to commit sudoku." + viewers(user) << "[user] starts scribbling over \himself with the [src.name]! It looks like \he's trying to commit sudoku." return (BRUTELOSS) /obj/item/weapon/pen/blue From 2dabee69142266d3e380ccb9a4001b501980bd6b Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 4 Oct 2015 06:04:53 -0400 Subject: [PATCH 04/22] Ports TG's Datum Pooling --- code/modules/pooling/atom_pool.dm | 101 -------------------------- code/modules/pooling/pool.dm | 115 ++++++++++++++++++++++++++++++ paradise.dme | 2 +- 3 files changed, 116 insertions(+), 102 deletions(-) delete mode 100644 code/modules/pooling/atom_pool.dm create mode 100644 code/modules/pooling/pool.dm diff --git a/code/modules/pooling/atom_pool.dm b/code/modules/pooling/atom_pool.dm deleted file mode 100644 index c5d11f6b599..00000000000 --- a/code/modules/pooling/atom_pool.dm +++ /dev/null @@ -1,101 +0,0 @@ -/* -/tg/station13 /atom/movable Pool: ---------------------------------- -By RemieRichards -Creation/Deletion is laggy, so let's reduce reuse and recycle! -Locked to /atom/movable and it's subtypes due to Loc being a const var on /atom -but being read&write on /movable due to how they... move. -Usage: -To get a object, just called PoolOrNew(type, list of args to pass to New) -To put a object back in the pool, call place in pool. -This will call destroy on the object, set its loc to null, -and reset all of its vars to their default -You can override your object's destroy to return QDEL_HINT_PLACEINPOOL -to ensure its always placed in this pool (this will only be acted on if qdel calls destroy, and destroy will not get called twice) -*/ - -var/global/list/GlobalPool = list() - -//You'll be using this proc 90% of the time. -//It grabs a type from the pool if it can -//And if it can't, it creates one -//The pool is flexible and will expand to fit -//The new created atom when it eventually -//Goes into the pool - -//Second argument can be a new location -//Or a list of arguments -//Either way it gets passed to new - -/proc/PoolOrNew(var/get_type,var/second_arg) - if(!get_type) - return - - var/atom/movable/AM - AM = GetFromPool(get_type,second_arg) - - if(!AM) - if(ispath(get_type)) - if(islist(second_arg)) - AM = new get_type (arglist(second_arg)) - else - AM = new get_type (second_arg) - - if(AM) - return AM - - - -/proc/GetFromPool(var/get_type,var/second_arg) - if(!get_type) - return 0 - - if(isnull(GlobalPool[get_type])) - return 0 - - if(length(GlobalPool[get_type]) == 0) - return 0 - - var/atom/movable/AM = pick_n_take(GlobalPool[get_type]) - if(AM) - AM.ResetVars() - if(islist(second_arg)) - AM.loc = second_arg[1] - AM.New(arglist(second_arg)) - else - AM.loc = second_arg - AM.New(second_arg) - return AM - return 0 - - - -/proc/PlaceInPool(var/atom/movable/AM, destroy = 1) - if(!istype(AM)) - return - - if(AM in GlobalPool[AM.type]) - return - - if(!GlobalPool[AM.type]) - GlobalPool[AM.type] = list() - - GlobalPool[AM.type] |= AM - - if (destroy) - AM.Destroy() - - AM.ResetVars() - - - -/atom/movable/proc/ResetVars() - var/list/excluded = list("animate_movement", "loc", "locs", "parent_type", "vars", "verbs", "type") - - for(var/V in vars) - if(V in excluded) - continue - - vars[V] = initial(vars[V]) - - vars["loc"] = null diff --git a/code/modules/pooling/pool.dm b/code/modules/pooling/pool.dm new file mode 100644 index 00000000000..d86be49a5a1 --- /dev/null +++ b/code/modules/pooling/pool.dm @@ -0,0 +1,115 @@ + +/* +/tg/station13 /datum Pool: +--------------------------------- +By RemieRichards + +Creation/Deletion is laggy, so let's reduce reuse and recycle! + +Usage: + +To get a object, just call + - PoolOrNew(type, arg) if you only want to pass one argument to New(), usually loc + - PoolOrNew(type, list) if you want to pass multiple arguments to New() + +To put a object back in the pool, call PlaceInPool(object) +This will call destroy on the object, set its loc to null, +and reset all of its vars to their default + +You can override your object's destroy to return QDEL_HINT_PLACEINPOOL +to ensure its always placed in this pool (this will only be acted on if qdel calls destroy, and destroy will not get called twice) + +*/ + +var/global/list/GlobalPool = list() + +//You'll be using this proc 90% of the time. +//It grabs a type from the pool if it can +//And if it can't, it creates one +//The pool is flexible and will expand to fit +//The new created atom when it eventually +//Goes into the pool + +//Second argument can be a single arg +//Or a list of arguments +//Either way it gets passed to new + +/proc/PoolOrNew(get_type,second_arg) + if(!get_type) + return + + . = GetFromPool(get_type,second_arg) + + if(!.) + if(ispath(get_type)) + if(islist(second_arg)) + . = new get_type (arglist(second_arg)) + else + . = new get_type (second_arg) + + +/proc/GetFromPool(get_type,second_arg) + if(!get_type) + return + + if(isnull(GlobalPool[get_type])) + return + + if(length(GlobalPool[get_type]) == 0) + return + + var/datum/pooled = pop(GlobalPool[get_type]) + if(pooled) + pooled.ResetVars() + var/atom/movable/AM + if(istype(pooled, /atom/movable)) + AM = pooled + + if(islist(second_arg)) + if(AM) + AM.loc = second_arg[1] //we need to do loc setting explicetly before even calling New() to replicate new()'s behavior + pooled.New(arglist(second_arg)) + + else + if(AM) + AM.loc = second_arg + pooled.New(second_arg) + + return pooled + + +/proc/PlaceInPool(datum/diver, destroy = 1) + if(!istype(diver)) + return + + if(diver in GlobalPool[diver.type]) + return + + if(!GlobalPool[diver.type]) + GlobalPool[diver.type] = list() + + GlobalPool[diver.type] |= diver + + if (destroy) + diver.Destroy() + + diver.ResetVars() + + +/datum/proc/ResetVars() + var/list/excluded = list("animate_movement", "contents", "loc", "locs", "parent_type", "vars", "verbs", "type") + + for(var/V in vars) + if(V in excluded) + continue + + vars[V] = initial(vars[V]) + +/atom/movable/ResetVars() + ..() + loc = null + contents = initial(contents) //something is really wrong if this object still has stuff in it by this point + +/image/ResetVars() + ..() + loc = null \ No newline at end of file diff --git a/paradise.dme b/paradise.dme index 641a34617f1..d261cca207f 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1554,7 +1554,7 @@ #include "code\modules\paperwork\photography.dm" #include "code\modules\paperwork\silicon_photography.dm" #include "code\modules\paperwork\stamps.dm" -#include "code\modules\pooling\atom_pool.dm" +#include "code\modules\pooling\pool.dm" #include "code\modules\power\apc.dm" #include "code\modules\power\cable.dm" #include "code\modules\power\cable_heavyduty.dm" From f68a7eada1b2ed058e9346a6359b2feee4cd7037 Mon Sep 17 00:00:00 2001 From: Robertha89 Date: Sun, 4 Oct 2015 15:13:56 +0200 Subject: [PATCH 05/22] Removes 2 tabs --- code/modules/paperwork/pen.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 5269f51bf19..0ed423f950b 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -25,8 +25,8 @@ pressure_resistance = 2 /obj/item/weapon/pen/suicide_act(mob/user) - viewers(user) << "[user] starts scribbling over \himself with the [src.name]! It looks like \he's trying to commit sudoku." - return (BRUTELOSS) + viewers(user) << "[user] starts scribbling over \himself with the [src.name]! It looks like \he's trying to commit sudoku." + return (BRUTELOSS) /obj/item/weapon/pen/blue name = "blue-ink pen" From b649608765da0b8f40b54af0a111fa0f0353fef0 Mon Sep 17 00:00:00 2001 From: Robertha89 Date: Sun, 4 Oct 2015 16:01:26 +0200 Subject: [PATCH 06/22] numbers --- code/modules/paperwork/pen.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 0ed423f950b..f463cc71447 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -25,7 +25,7 @@ pressure_resistance = 2 /obj/item/weapon/pen/suicide_act(mob/user) - viewers(user) << "[user] starts scribbling over \himself with the [src.name]! It looks like \he's trying to commit sudoku." + viewers(user) << "[user] starts scribbling numbers over \himself with the [src.name]! It looks like \he's trying to commit sudoku." return (BRUTELOSS) /obj/item/weapon/pen/blue From ed33c1e8114fff7f95fd2a37629ae30d965817d6 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sun, 4 Oct 2015 13:00:36 -0400 Subject: [PATCH 07/22] removes duplicate reset-vars --- code/modules/pooling/pool.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/pooling/pool.dm b/code/modules/pooling/pool.dm index d86be49a5a1..048940cfb51 100644 --- a/code/modules/pooling/pool.dm +++ b/code/modules/pooling/pool.dm @@ -60,7 +60,6 @@ var/global/list/GlobalPool = list() var/datum/pooled = pop(GlobalPool[get_type]) if(pooled) - pooled.ResetVars() var/atom/movable/AM if(istype(pooled, /atom/movable)) AM = pooled From b24f5ff97931b3a606b35b56781cee04467d677d Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 5 Oct 2015 00:26:43 +0200 Subject: [PATCH 08/22] Fixes and pinpointer update --- _maps/map_files/cyberiad/cyberiad.dmm | 6 +- code/ATMOSPHERICS/pipes/pipe.dm | 1 - code/_globalvars/lists/misc.dm | 2 +- code/_globalvars/lists/reagents.dm | 12 + code/datums/uplink_item.dm | 10 +- code/game/gamemodes/mutiny/key_pinpointer.dm | 2 +- .../game/gamemodes/nations/flag_pinpointer.dm | 2 +- code/game/gamemodes/nuclear/pinpointer.dm | 628 +++++++----------- code/game/machinery/machinery.dm | 16 +- code/game/machinery/rechargestation.dm | 32 +- code/game/objects/items/random_items.dm | 35 +- .../stool_bed_chair_nest/wheelchair.dm | 5 + .../mob/living/carbon/brain/posibrain.dm | 9 +- .../mob/living/silicon/robot/robot_modules.dm | 1 + code/modules/mob/mob.dm | 2 - code/modules/mob/transform_procs.dm | 79 +-- .../reagent_containers/food/drinks.dm | 24 +- .../reagent_containers/glass/bottle/robot.dm | 17 +- icons/obj/device.dmi | Bin 30044 -> 32027 bytes paradise.dme | 1 + 20 files changed, 340 insertions(+), 544 deletions(-) create mode 100644 code/_globalvars/lists/reagents.dm diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 71f59dd570f..cbe85bf2755 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -2853,7 +2853,7 @@ "bcS" = (/turf/simulated/floor/wood,/area/crew_quarters/bar) "bcT" = (/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bcU" = (/obj/machinery/camera{c_tag = "Bar East"; network = list("SS13")},/obj/structure/flora/kirbyplants,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"bcV" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id_tag = "kitchenbar"; name = "Kitchen Shutters"; opacity = 0},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen) +"bcV" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id_tag = "kitchenbar"; name = "Kitchen Shutters"; opacity = 0},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bcW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bcX" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bcY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) @@ -2947,7 +2947,7 @@ "beI" = (/obj/structure/piano,/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) "beJ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/crew_quarters/bar) "beK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/crew_quarters/bar) -"beL" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id_tag = "kitchenbar"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen) +"beL" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id_tag = "kitchenbar"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "beM" = (/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "beN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "beO" = (/obj/machinery/camera{c_tag = "Kitchen"; network = list("SS13")},/obj/item/device/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/obj/machinery/kitchen_machine/candy_maker,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) @@ -3414,7 +3414,7 @@ "bnH" = (/obj/machinery/camera{c_tag = "Bar South"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bnI" = (/obj/item/device/radio/intercom{pixel_y = -30},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/light/small,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bnJ" = (/obj/machinery/atm{pixel_x = 32; pixel_y = 0},/obj/structure/flora/kirbyplants,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar) -"bnK" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/vending/dinnerware,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen) +"bnK" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/vending/dinnerware,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bnL" = (/obj/machinery/icemachine,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bnM" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "kitchenhall"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bnN" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "kitchenhall"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) diff --git a/code/ATMOSPHERICS/pipes/pipe.dm b/code/ATMOSPHERICS/pipes/pipe.dm index 7041d13993d..b02d990b432 100644 --- a/code/ATMOSPHERICS/pipes/pipe.dm +++ b/code/ATMOSPHERICS/pipes/pipe.dm @@ -13,7 +13,6 @@ buckle_requires_restraints = 1 buckle_lying = -1 - /obj/machinery/atmospherics/pipe/New() ..() //so pipes under walls are hidden diff --git a/code/_globalvars/lists/misc.dm b/code/_globalvars/lists/misc.dm index f6e02c32602..d6fc14b4f3f 100644 --- a/code/_globalvars/lists/misc.dm +++ b/code/_globalvars/lists/misc.dm @@ -21,4 +21,4 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse "UO45", "UO45R", "Xeno" - ) \ No newline at end of file + ) diff --git a/code/_globalvars/lists/reagents.dm b/code/_globalvars/lists/reagents.dm new file mode 100644 index 00000000000..8088219e149 --- /dev/null +++ b/code/_globalvars/lists/reagents.dm @@ -0,0 +1,12 @@ +// Base chemicals +var/list/base_chemicals = list("water","oxygen","nitrogen","hydrogen","potassium","mercury","carbon","chlorine","fluorine","phosphorus","lithium","sulfur","sacid","radium","iron","aluminum","silicon","sugar","ethanol") +// Standard chemicals +var/list/standard_chemicals = list("slimejelly","blood","water","lube","charcoal","toxin","cyanide","morphine","epinephrine","space_drugs","serotrotium","oxygen","copper","nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine","fluorine","sodium","phosphorus","lithium","sugar","sacid","facid","glycerol","radium","mutadone","thermite","mutagen","virusfood","iron","gold","silver","uranium","aluminum","silicon","fuel","cleaner","atrazine","plasma","teporone","lexorin","silver_sulfadiazine","salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol","potass_iodide","pen_acid","mannitol","oculine","styptic_powder","methamphetamine","cryoxadone","spaceacillin","carpotoxin","lsd","fluorosurfactant","fluorosurfactant","ethanol","ammonia","diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin","enzyme","nothing","salglu_solution","antifreeze","neurotoxin") +// Rare chemicals +var/list/rare_chemicals = list("minttoxin","nanites","xenomicrobes","adminordrazine") +// Standard medicines +var/list/standard_medicines = list("charcoal","toxin","cyanide","morphine","epinephrine","space_drugs","serotrotium","mutadone","mutagen","teporone","lexorin","silver_sulfadiazine","salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol","potass_iodide","pen_acid","mannitol","oculine","styptic_powder","methamphetamine","spaceacillin","carpotoxin","lsd","ethanol","ammonia","diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin","nothing","salglu_solution","neurotoxin") +// Rare medicines +var/list/rare_medicines = list("nanites","xenomicrobes","minttoxin","adminordrazine","blood") +// Drinks +var/list/drinks = list("beer2","hot_coco","orangejuice","tomatojuice","limejuice","carrotjuice","berryjuice","poisonberryjuice","watermelonjuice","lemonjuice","banana","nothing","potato","milk","soymilk","cream","coffee","tea","icecoffee","icetea","cola","nuka_cola","spacemountainwind","thirteenloko","dr_gibb","space_up","lemon_lime","beer","whiskey","gin","rum","vodka","holywater","tequilla","vermouth","wine","tonic","kahlua","cognac","ale","sodawater","ice","bilk","atomicbomb","threemileisland","goldschlager","patron","gintonic","cubalibre","whiskeycola","martini","vodkamartini","whiterussian","screwdrivercocktail","booger","bloodymary","gargleblaster","bravebull","tequillasunrise","toxinsspecial","beepskysmash","salglu_solution","irishcream","manlydorf","longislandicedtea","moonshine","b52","irishcoffee","margarita","blackrussian","manhattan","manhattan_proj","whiskeysoda","antifreeze","barefoot","snowwhite","demonsblood","vodkatonic","ginfizz","bahama_mama","singulo","sbiten","devilskiss","red_mead","mead","iced_beer","grog","aloe","andalusia","alliescocktail","soy_latte","cafe_latte","acidspit","amasec","neurotoxin","hippiesdelight","bananahonk","silencer","changelingsting","irishcarbomb","syndicatebomb","erikasurprise","driestmartini") \ No newline at end of file diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 05a8971bc50..f01e712e2c8 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -767,11 +767,11 @@ var/list/uplink_items = list() cost = 3 gamemodes = list("nuclear emergency") -/datum/uplink_item/device_tools/pdapinpointer - name = "PDA Pinpointer" - desc = "A pinpointer that tracks any PDA on the station. Useful for locating assassination targets or other high-value targets that you can't find. WARNING: Can only set once." - reference = "PDAP" - item = /obj/item/weapon/pinpointer/pdapinpointer +/datum/uplink_item/device_tools/advpinpointer + name = "Advanced Pinpointer" + desc = "A pinpointer that tracks any specified coordinates, DNA string, high value item or the nuclear authentication disk." + reference = "ADVP" + item = /obj/item/weapon/pinpointer/advpinpointer cost = 4 /datum/uplink_item/device_tools/ai_detector diff --git a/code/game/gamemodes/mutiny/key_pinpointer.dm b/code/game/gamemodes/mutiny/key_pinpointer.dm index 7e8d628d85b..9bee2b92c92 100644 --- a/code/game/gamemodes/mutiny/key_pinpointer.dm +++ b/code/game/gamemodes/mutiny/key_pinpointer.dm @@ -13,7 +13,7 @@ mode = 1 active = 1 target = mutiny.captains_key - workobj() + point_at(target) usr << "\blue You calibrate \the [src] to locate the Captain's Authentication Key." if (1) mode = 2 diff --git a/code/game/gamemodes/nations/flag_pinpointer.dm b/code/game/gamemodes/nations/flag_pinpointer.dm index 028f3cbb357..776932bbb7b 100644 --- a/code/game/gamemodes/nations/flag_pinpointer.dm +++ b/code/game/gamemodes/nations/flag_pinpointer.dm @@ -8,7 +8,7 @@ mode = 1 active = 1 target = locate(/obj/item/flag/nation/atmos) - workobj() + point_at(target) usr << "\blue You calibrate \the [src] to locate the [target.name]" if (1) mode = 2 diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm index 572d87e149e..29a0a3cc61c 100644 --- a/code/game/gamemodes/nuclear/pinpointer.dm +++ b/code/game/gamemodes/nuclear/pinpointer.dm @@ -12,396 +12,26 @@ var/obj/item/weapon/disk/nuclear/the_disk = null var/active = 0 - Destroy() - active = 0 - the_disk = null - return ..() - - attack_self() - if(!active) - active = 1 - workdisk() - usr << "\blue You activate the pinpointer" - else - active = 0 - icon_state = "pinoff" - usr << "\blue You deactivate the pinpointer" - - proc/workdisk() - if(!active) return - if(!the_disk) - the_disk = locate() - if(!the_disk) - icon_state = "pinonnull" - return - dir = get_dir(src,the_disk) - switch(get_dist(src,the_disk)) - if(0) - icon_state = "pinondirect" - if(1 to 8) - icon_state = "pinonclose" - if(9 to 16) - icon_state = "pinonmedium" - if(16 to INFINITY) - icon_state = "pinonfar" - spawn(5) .() - - examine(mob/user) - ..(user) - for(var/obj/machinery/nuclearbomb/bomb in world) - if(bomb.timing) - user << "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]" - - -/obj/item/weapon/pinpointer/advpinpointer - name = "Advanced Pinpointer" - icon = 'icons/obj/device.dmi' - desc = "A larger version of the normal pinpointer, this unit features a helpful quantum entanglement detection system to locate various objects that do not broadcast a locator signal." - var/mode = 0 // Mode 0 locates disk, mode 1 locates coordinates. - var/turf/location = null - var/obj/target = null - - attack_self() - if(!active) - active = 1 - if(mode == 0) - workdisk() - if(mode == 1) - worklocation() - if(mode == 2) - workobj() - usr << "\blue You activate the pinpointer" - else - active = 0 - icon_state = "pinoff" - usr << "\blue You deactivate the pinpointer" - - - proc/worklocation() - if(!active) - return - if(!location) - icon_state = "pinonnull" - return - dir = get_dir(src,location) - switch(get_dist(src,location)) - if(0) - icon_state = "pinondirect" - if(1 to 8) - icon_state = "pinonclose" - if(9 to 16) - icon_state = "pinonmedium" - if(16 to INFINITY) - icon_state = "pinonfar" - spawn(5) .() - - - proc/workobj() - if(!active) - return - if(!target) - icon_state = "pinonnull" - return - dir = get_dir(src,target) - switch(get_dist(src,target)) - if(0) - icon_state = "pinondirect" - if(1 to 8) - icon_state = "pinonclose" - if(9 to 16) - icon_state = "pinonmedium" - if(16 to INFINITY) - icon_state = "pinonfar" - spawn(5) .() - -/obj/item/weapon/pinpointer/advpinpointer/verb/toggle_mode() - set category = "Object" - set name = "Toggle Pinpointer Mode" - set src in view(1) - +/obj/item/weapon/pinpointer/Destroy() active = 0 - icon_state = "pinoff" - target=null - location = null + the_disk = null + return ..() - switch(alert("Please select the mode you want to put the pinpointer in.", "Pinpointer Mode Select", "Location", "Disk Recovery", "Other Signature")) - if("Location") - mode = 1 - - var/locationx = input(usr, "Please input the x coordinate to search for.", "Location?" , "") as num - if(!locationx || !(usr in view(1,src))) - return - var/locationy = input(usr, "Please input the y coordinate to search for.", "Location?" , "") as num - if(!locationy || !(usr in view(1,src))) - return - - var/turf/Z = get_turf(src) - - location = locate(locationx,locationy,Z.z) - - usr << "You set the pinpointer to locate [locationx],[locationy]" - - - return attack_self() - - if("Disk Recovery") - mode = 0 - return attack_self() - - if("Other Signature") - mode = 2 - switch(alert("Search for item signature or DNA fragment?" , "Signature Mode Select" , "" , "Item" , "DNA")) - if("Item") - var/list/item_names[0] - var/list/item_paths[0] - for(var/typepath in potential_theft_objectives) - var/obj/item/tmp_object=new typepath - var/n="[tmp_object]" - item_names+=n - item_paths[n]=typepath - qdel(tmp_object) - var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in potential_theft_objectives - if(!targetitem) - return - target=locate(item_paths[targetitem]) - if(!target) - usr << "Failed to locate [targetitem]!" - return - usr << "You set the pinpointer to locate [targetitem]" - if("DNA") - var/DNAstring = input("Input DNA string to search for." , "Please Enter String." , "") - if(!DNAstring) - return - for(var/mob/living/carbon/M in mob_list) - if(!M.dna) - continue - if(M.dna.unique_enzymes == DNAstring) - target = M - break - - return attack_self() - - -/////////////////////// -//nuke op pinpointers// -/////////////////////// - - -/obj/item/weapon/pinpointer/nukeop - var/mode = 0 //Mode 0 locates disk, mode 1 locates the shuttle - var/obj/machinery/computer/shuttle_control/multi/syndicate/home = null - slot_flags = SLOT_PDA | SLOT_BELT - -/obj/item/weapon/pinpointer/nukeop/attack_self(mob/user as mob) +/obj/item/weapon/pinpointer/attack_self() if(!active) active = 1 - if(!mode) - workdisk() - user << "Authentication Disk Locator active." - else - worklocation() - user << "Shuttle Locator active." - else - active = 0 - icon_state = "pinoff" - user << "You deactivate the pinpointer." - - -/obj/item/weapon/pinpointer/nukeop/workdisk() - if(!active) return - if(mode) //Check in case the mode changes while operating - worklocation() - return - if(bomb_set) //If the bomb is set, lead to the shuttle - mode = 1 //Ensures worklocation() continues to work - worklocation() - playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) //Plays a beep - visible_message("Shuttle Locator active.") //Lets the mob holding it know that the mode has changed - return //Get outta here - if(!the_disk) - the_disk = locate() - if(!the_disk) - icon_state = "pinonnull" - return -// if(loc.z != the_disk.z) //If you are on a different z-level from the disk -// icon_state = "pinonnull" -// else - dir = get_dir(src, the_disk) - switch(get_dist(src, the_disk)) - if(0) - icon_state = "pinondirect" - if(1 to 8) - icon_state = "pinonclose" - if(9 to 16) - icon_state = "pinonmedium" - if(16 to INFINITY) - icon_state = "pinonfar" - - spawn(5) .() - - -/obj/item/weapon/pinpointer/nukeop/proc/worklocation() - if(!active) return - if(!mode) workdisk() - return - if(!bomb_set) - mode = 0 - workdisk() - playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) - visible_message("Authentication Disk Locator active.") - return - if(!home) - home = locate() - if(!home) - icon_state = "pinonnull" - return - if(loc.z != home.z) //If you are on a different z-level from the shuttle - icon_state = "pinonnull" - else - dir = get_dir(src, home) - switch(get_dist(src, home)) - if(0) - icon_state = "pinondirect" - if(1 to 8) - icon_state = "pinonclose" - if(9 to 16) - icon_state = "pinonmedium" - if(16 to INFINITY) - icon_state = "pinonfar" - - spawn(5) .() - -/obj/item/weapon/pinpointer/pdapinpointer - name = "pda pinpointer" - desc = "A pinpointer that has been illegally modified to track the PDA of a crewmember for malicious reasons." - var/obj/target = null - var/used = 0 - - attack_self() - if(!active) - active = 1 - point_at(target) - usr << "\blue You activate the pinpointer" - else - active = 0 - icon_state = "pinoff" - usr << "\blue You deactivate the pinpointer" - - verb/select_pda() - set category = "Object" - set name = "Select pinpointer target" - set src in view(1) - - if(used) - usr << "Target has already been set!" - return - - var/list/L = list() - L["Cancel"] = "Cancel" - var/length = 1 - for (var/obj/item/device/pda/P in world) - if(P.name != "\improper PDA") - L[text("([length]) [P.name]")] = P - length++ - - var/t = input("Select pinpointer target. WARNING: Can only set once.") as null|anything in L - if(t == "Cancel") - return - target = L[t] - if(!target) - usr << "Failed to locate [target]!" - return - active = 1 - point_at(target) - usr << "You set the pinpointer to locate [target]" - used = 1 - - - examine(mob/user) - ..(user) - if (target) - user << "\blue Tracking [target]" - - proc/point_at(atom/target) - if(!active) - return - if(!target) - icon_state = "pinonnull" - return - - var/turf/T = get_turf(target) - var/turf/L = get_turf(src) - - if((!T) || (!L)) // Someone is no longer in the world... - icon_state = "pinonnull" - return - - if(T.z != L.z) - icon_state = "pinonnull" - else - dir = get_dir(L, T) - switch(get_dist(L, T)) - if(-1) - icon_state = "pinondirect" - if(1 to 8) - icon_state = "pinonclose" - if(9 to 16) - icon_state = "pinonmedium" - if(16 to INFINITY) - icon_state = "pinonfar" - spawn(5) - .() - -/obj/item/weapon/pinpointer/operative - name = "operative pinpointer" - icon = 'icons/obj/device.dmi' - desc = "A pinpointer that leads to the first Syndicate operative detected." - var/mob/living/carbon/nearest_op = null - -/obj/item/weapon/pinpointer/operative/attack_self() - if(!usr.mind || !(usr.mind in ticker.mode.syndicates)) - usr << "AUTHENTICATION FAILURE. ACCESS DENIED." - return 0 - if(!active) - active = 1 - workop() usr << "You activate the pinpointer." else active = 0 icon_state = "pinoff" usr << "You deactivate the pinpointer." + +/obj/item/weapon/pinpointer/proc/scandisk() + if(!the_disk) + the_disk = locate() -/obj/item/weapon/pinpointer/operative/proc/scan_for_ops() - if(active) - nearest_op = null //Resets nearest_op every time it scans - var/closest_distance = 1000 - for(var/mob/living/carbon/M in mob_list) - if(M.mind && (M.mind in ticker.mode.syndicates)) - if(get_dist(M, get_turf(src)) < closest_distance) //Actually points toward the nearest op, instead of a random one like it used to - nearest_op = M - if(!nearest_op) // There are simply no operatives left to point to - active = 0 - icon_state = "pinoff" - -/obj/item/weapon/pinpointer/operative/proc/workop() - if(active) - scan_for_ops() - point_at(nearest_op, 0) - spawn(5) - .() - else - return 0 - -/obj/item/weapon/pinpointer/operative/examine(mob/user) - ..() - if(active) - if(nearest_op) - user << "Nearest operative detected is [nearest_op.real_name]." - else - user << "No operatives detected within scanning range." - -/obj/item/weapon/pinpointer/operative/proc/point_at(atom/target, spawnself = 1) +/obj/item/weapon/pinpointer/proc/point_at(atom/target, spawnself = 1) if(!active) return if(!target) @@ -426,4 +56,242 @@ icon_state = "pinonfar" if(spawnself) spawn(5) - .() \ No newline at end of file + .() + +/obj/item/weapon/pinpointer/proc/workdisk() + scandisk() + point_at(the_disk, 0) + spawn(5) + .() + +/obj/item/weapon/pinpointer/examine(mob/user) + ..(user) + for(var/obj/machinery/nuclearbomb/bomb in machines) + if(bomb.timing) + user << "Extreme danger. Arming signal detected. Time remaining: [bomb.timeleft]" + +/obj/item/weapon/pinpointer/advpinpointer + name = "advanced pinpointer" + desc = "A larger version of the normal pinpointer, this unit features a helpful quantum entanglement detection system to locate various objects that do not broadcast a locator signal." + var/mode = 0 // Mode 0 locates disk, mode 1 locates coordinates. + var/turf/location = null + var/obj/target = null + +/obj/item/weapon/pinpointer/advpinpointer/attack_self() + if(!active) + active = 1 + if(mode == 0) + workdisk() + if(mode == 1) + point_at(location) + if(mode == 2) + point_at(target) + usr << "You activate the pinpointer." + else + active = 0 + icon_state = "pinoff" + usr << "You deactivate the pinpointer." + +/obj/item/weapon/pinpointer/advpinpointer/workdisk() + if(mode == 0) + scandisk() + point_at(the_disk, 0) + spawn(5) + .() + +/obj/item/weapon/pinpointer/advpinpointer/verb/toggle_mode() + set category = "Object" + set name = "Toggle Pinpointer Mode" + set src in usr + + if(usr.stat || usr.restrained()) + return + + active = 0 + icon_state = "pinoff" + target = null + location = null + + switch(alert("Please select the mode you want to put the pinpointer in.", "Pinpointer Mode Select", "Location", "Disk Recovery", "Other Signature")) + if("Location") + mode = 1 + + var/locationx = input(usr, "Please input the x coordinate to search for.", "Location?" , "") as num + if(!locationx || !(usr in view(1,src))) + return + var/locationy = input(usr, "Please input the y coordinate to search for.", "Location?" , "") as num + if(!locationy || !(usr in view(1,src))) + return + + var/turf/Z = get_turf(src) + + location = locate(locationx,locationy,Z.z) + + usr << "You set the pinpointer to locate [locationx],[locationy]" + + + return attack_self() + + if("Disk Recovery") + mode = 0 + return attack_self() + + if("Other Signature") + mode = 2 + switch(alert("Search for item signature or DNA fragment?" , "Signature Mode Select" , "Item" , "DNA")) + if("Item") + var/list/item_names[0] + var/list/item_paths[0] + for(var/objective in potential_theft_objectives) + var/datum/theft_objective/T = objective + var/name = initial(T.name) + item_names += name + item_paths[name] = initial(T.typepath) + var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in item_names + if(!targetitem) + return + target = locate(item_paths[targetitem]) + if(!target) + usr << "Failed to locate [targetitem]!" + return + usr << "You set the pinpointer to locate [targetitem]." + if("DNA") + var/DNAstring = input("Input DNA string to search for." , "Please Enter String." , "") + if(!DNAstring) + return + for(var/mob/living/carbon/C in mob_list) + if(!C.dna) + continue + if(C.dna.unique_enzymes == DNAstring) + target = C + break + + return attack_self() + +/////////////////////// +//nuke op pinpointers// +/////////////////////// +/obj/item/weapon/pinpointer/nukeop + var/mode = 0 //Mode 0 locates disk, mode 1 locates the shuttle + var/obj/machinery/computer/shuttle_control/multi/syndicate/home = null + slot_flags = SLOT_PDA | SLOT_BELT + +/obj/item/weapon/pinpointer/nukeop/attack_self(mob/user as mob) + if(!active) + active = 1 + if(!mode) + workdisk() + user << "Authentication Disk Locator active." + else + worklocation() + user << "Shuttle Locator active." + else + active = 0 + icon_state = "pinoff" + user << "You deactivate the pinpointer." + +/obj/item/weapon/pinpointer/nukeop/workdisk() + if(!active) return + if(mode) //Check in case the mode changes while operating + worklocation() + return + if(bomb_set) //If the bomb is set, lead to the shuttle + mode = 1 //Ensures worklocation() continues to work + worklocation() + playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) //Plays a beep + visible_message("Shuttle Locator mode actived.") //Lets the mob holding it know that the mode has changed + return //Get outta here + scandisk() + if(!the_disk) + icon_state = "pinonnull" + return + dir = get_dir(src, the_disk) + switch(get_dist(src, the_disk)) + if(0) + icon_state = "pinondirect" + if(1 to 8) + icon_state = "pinonclose" + if(9 to 16) + icon_state = "pinonmedium" + if(16 to INFINITY) + icon_state = "pinonfar" + + spawn(5) .() + +/obj/item/weapon/pinpointer/nukeop/proc/worklocation() + if(!active) + return + if(!mode) + workdisk() + return + if(!bomb_set) + mode = 0 + workdisk() + playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) + visible_message("Authentication Disk Locator mode actived.") + return + if(!home) + home = locate() + if(!home) + icon_state = "pinonnull" + return + if(loc.z != home.z) //If you are on a different z-level from the shuttle + icon_state = "pinonnull" + else + dir = get_dir(src, home) + switch(get_dist(src, home)) + if(0) + icon_state = "pinondirect" + if(1 to 8) + icon_state = "pinonclose" + if(9 to 16) + icon_state = "pinonmedium" + if(16 to INFINITY) + icon_state = "pinonfar" + + spawn(5) + .() + +/obj/item/weapon/pinpointer/operative + name = "operative pinpointer" + desc = "A pinpointer that leads to the first Syndicate operative detected." + var/mob/living/carbon/nearest_op = null + +/obj/item/weapon/pinpointer/operative/attack_self() + if(!usr.mind || !(usr.mind in ticker.mode.syndicates)) + usr << "AUTHENTICATION FAILURE. ACCESS DENIED." + return 0 + if(!active) + active = 1 + workop() + usr << "You activate the pinpointer." + else + active = 0 + icon_state = "pinoff" + usr << "You deactivate the pinpointer." + +/obj/item/weapon/pinpointer/operative/proc/scan_for_ops() + if(active) + nearest_op = null //Resets nearest_op every time it scans + var/closest_distance = 1000 + for(var/mob/living/carbon/M in mob_list) + if(M.mind && (M.mind in ticker.mode.syndicates)) + if(get_dist(M, get_turf(src)) < closest_distance) //Actually points toward the nearest op, instead of a random one like it used to + nearest_op = M + +/obj/item/weapon/pinpointer/operative/proc/workop() + if(active) + scan_for_ops() + point_at(nearest_op, 0) + spawn(5) + .() + else + return 0 + +/obj/item/weapon/pinpointer/operative/examine(mob/user) + ..() + if(active) + if(nearest_op) + user << "Nearest operative detected is [nearest_op.real_name]." + else + user << "No operatives detected within scanning range." diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index ab437a4a1e9..bed10ccf131 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -337,8 +337,6 @@ Class Procs: return src.attack_hand(user) /obj/machinery/attack_hand(mob/user as mob) - if(!interact_offline && stat & (NOPOWER|BROKEN|MAINT)) - return 1 if(user.lying || user.stat) return 1 @@ -346,11 +344,6 @@ Class Procs: user << "You don't have the dexterity to do this!" return 1 -/* - //distance checks are made by atom/proc/DblClick - if ((get_dist(src, user) > 1 || !istype(src.loc, /turf)) && !istype(user, /mob/living/silicon)) - return 1 -*/ if (ishuman(user)) var/mob/living/carbon/human/H = user if(H.getBrainLoss() >= 60) @@ -359,10 +352,17 @@ Class Procs: else if(prob(H.getBrainLoss())) user << "You momentarily forget how to use [src]." return 1 + + if(panel_open) + src.add_fingerprint(user) + return 0 + + if(!interact_offline && stat & (NOPOWER|BROKEN|MAINT)) + return 1 src.add_fingerprint(user) - return 0 + return ..() /obj/machinery/CheckParts() RefreshParts() diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 7ff7cc466d8..2d568cf1f30 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -145,20 +145,23 @@ for(var/obj/O in um) // Engineering if(istype(O,/obj/item/stack/sheet/metal) || istype(O,/obj/item/stack/sheet/rglass) || istype(O,/obj/item/stack/cable_coil)) - if(O:amount < 50) - O:amount += 1 * coeff + var/obj/item/stack/sheet/S = O + if(S.amount < 50) + S.amount += 1 * coeff // Security if(istype(O,/obj/item/device/flash)) - if(O:broken) - O:broken = 0 - O:times_used = 0 - O:icon_state = "flash" + var/obj/item/device/flash/F = O + if(F.broken) + F.broken = 0 + F.times_used = 0 + F.icon_state = "flash" if(istype(O,/obj/item/weapon/gun/energy/disabler/cyborg)) - if(O:power_supply.charge < O:power_supply.maxcharge) - O:power_supply.give(O:charge_cost) - O:update_icon() + var/obj/item/weapon/gun/energy/disabler/cyborg/D = O + if(D.power_supply.charge < D.power_supply.maxcharge) + D.power_supply.give(D.charge_cost) + D.update_icon() else - O:charge_tick = 0 + D.charge_tick = 0 if(istype(O,/obj/item/weapon/melee/baton)) var/obj/item/weapon/melee/baton/B = O if(B.bcell) @@ -178,15 +181,6 @@ var/i = 1 for(1, i <= coeff, i++) LR.Charge(occupant) - //Alien - if(istype(O,/obj/item/weapon/reagent_containers/spray/alien/smoke)) - if(O.reagents.get_reagent_amount("water") < 50) - O.reagents.add_reagent("water", 2 * coeff) - if(istype(O,/obj/item/weapon/reagent_containers/spray/alien/stun)) - if(O.reagents.get_reagent_amount("ether") < 250) - O.reagents.add_reagent("ether", 2 * coeff) - - if(R) if(R.module) R.module.respawn_consumable(R) diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index 81d9a7769e5..b08245b010f 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -47,8 +47,7 @@ New() ..() var/datum/reagent/R = pick(chemical_reagents_list) - var/global/list/rare_chems = list("minttoxin","nanites","xenomicrobes","adminordrazine") - if(rare_chems.Find(R)) + if(rare_chemicals.Find(R)) reagents.add_reagent(R,10) else reagents.add_reagent(R,rand(2,3)*10) @@ -61,11 +60,9 @@ // identify_probability = 0 New() ..() - var/global/list/chems_only = list("slimejelly","blood","water","lube","charcoal","toxin","cyanide","morphine","epinephrine","space_drugs","serotrotium","oxygen","copper","nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine","fluorine","sodium","phosphorus","lithium","sugar","sacid","facid","glycerol","radium","mutadone","thermite","mutagen","virusfood","iron","gold","silver","uranium","aluminum","silicon","fuel","cleaner","atrazine","plasma","teporone","lexorin","silver_sulfadiazine","salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol","potass_iodide","pen_acid","mannitol","oculine","styptic_powder","methamphetamine","cryoxadone","spaceacillin","carpotoxin","lsd","fluorosurfactant","fluorosurfactant","ethanol","ammonia","diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin","enzyme","nothing","salglu_solution","antifreeze","neurotoxin") - var/global/list/rare_chems = list("minttoxin","nanites","xenomicrobes","adminordrazine") - var/datum/reagent/R = pick(chems_only + rare_chems) - if(rare_chems.Find(R)) + var/datum/reagent/R = pick(standard_chemicals + rare_chemicals) + if(rare_chemicals.Find(R)) reagents.add_reagent(R,10) else reagents.add_reagent(R,rand(2,3)*10) @@ -78,35 +75,35 @@ // identify_probability = 0 New() ..() - var/global/list/base_chems = list("water","oxygen","nitrogen","hydrogen","potassium","mercury","carbon","chlorine","fluorine","phosphorus","lithium","sulfur","sacid","radium","iron","aluminum","silicon","sugar","ethanol") - var/datum/reagent/R = pick(base_chems) + var/datum/reagent/R = pick(base_chemicals) reagents.add_reagent(R,rand(2,6)*5) name = "unlabelled bottle" pixel_x = rand(-10,10) pixel_y = rand(-10,10) + /obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink name = "unlabelled drink" icon = 'icons/obj/drinks.dmi' New() ..() - var/list/drinks_only = list("beer2","hot_coco","orangejuice","tomatojuice","limejuice","carrotjuice","berryjuice","poisonberryjuice","watermelonjuice","lemonjuice","banana","nothing","potato","milk","soymilk","cream","coffee","tea","icecoffee","icetea","cola","nuka_cola","spacemountainwind","thirteenloko","dr_gibb","space_up","lemon_lime","beer","whiskey","gin","rum","vodka","holywater","tequilla","vermouth","wine","tonic","kahlua","cognac","ale","sodawater","ice","bilk","atomicbomb","threemileisland","goldschlager","patron","gintonic","cubalibre","whiskeycola","martini","vodkamartini","whiterussian","screwdrivercocktail","booger","bloodymary","gargleblaster","bravebull","tequillasunrise","toxinsspecial","beepskysmash","salglu_solution","irishcream","manlydorf","longislandicedtea","moonshine","b52","irishcoffee","margarita","blackrussian","manhattan","manhattan_proj","whiskeysoda","antifreeze","barefoot","snowwhite","demonsblood","vodkatonic","ginfizz","bahama_mama","singulo","sbiten","devilskiss","red_mead","mead","iced_beer","grog","aloe","andalusia","alliescocktail","soy_latte","cafe_latte","acidspit","amasec","neurotoxin","hippiesdelight","bananahonk","silencer","changelingsting","irishcarbomb","syndicatebomb","erikasurprise","driestmartini") + var/list/additional_drinks = list() if(prob(50)) - drinks_only += list("pancuronium","adminordrazine","lsd","omnizine","blood") + additional_drinks += list("pancuronium","adminordrazine","lsd","omnizine","blood") - var/datum/reagent/R = pick(drinks_only) + var/datum/reagent/R = pick(drinks + additional_drinks) reagents.add_reagent(R,volume) name = "unlabelled bottle" icon_state = pick("alco-white","alco-green","alco-blue","alco-clear","alco-red") pixel_x = rand(-5,5) pixel_y = rand(-5,5) + /obj/item/weapon/reagent_containers/food/drinks/bottle/random_reagent // Same as the chembottle code except the container name = "unlabelled drink?" icon = 'icons/obj/drinks.dmi' New() ..() var/datum/reagent/R = pick(chemical_reagents_list) - var/global/list/rare_chems = list("minttoxin","nanites","xenomicrobes","adminordrazine") - if(rare_chems.Find(R)) + if(rare_chemicals.Find(R)) reagents.add_reagent(R,10) else reagents.add_reagent(R,rand(3,10)*10) @@ -123,20 +120,17 @@ New() ..() - var/global/list/meds_only = list("charcoal","toxin","cyanide","morphine","epinephrine","space_drugs","serotrotium","mutadone","mutagen","teporone","lexorin","silver_sulfadiazine","salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol","potass_iodide","pen_acid","mannitol","oculine","styptic_powder","methamphetamine","spaceacillin","carpotoxin","lsd","ethanol","ammonia","diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin","nothing","salglu_solution","neurotoxin") - var/global/list/rare_meds = list("nanites","xenomicrobes","minttoxin","adminordrazine","blood") - var/i = 1 while(i < storage_slots) var/datum/reagent/R if(prob(50)) - R = pick(meds_only + rare_meds) + R = pick(standard_medicines + rare_medicines) else - R = pick(meds_only) + R = pick(standard_medicines) var/obj/item/weapon/reagent_containers/pill/P = new(src) - if(rare_meds.Find(R)) + if(rare_medicines.Find(R)) P.reagents.add_reagent(R,10) else P.reagents.add_reagent(R,rand(2,5)*10) @@ -185,8 +179,7 @@ New() ..() sleep(2) - var/global/list/base_chems = list("water","oxygen","nitrogen","hydrogen","potassium","mercury","carbon","chlorine","fluorine","phosphorus","lithium","sulfur","sacid","radium","iron","aluminum","silicon","sugar","ethanol") - for(var/chem in base_chems) + for(var/chem in standard_chemicals) var/obj/item/weapon/reagent_containers/glass/bottle/B = new(src) B.reagents.add_reagent(chem,B.volume) if(prob(85)) diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 51424aeb26e..167e3cd0fa8 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -30,6 +30,11 @@ if(buckled_mob) if(buckled_mob.incapacitated()) return 0 + + var/mob/living/thedriver = user + var/mob_delay = thedriver.movement_delay() + if(mob_delay > 0) + move_delay += mob_delay if(ishuman(buckled_mob)) var/mob/living/carbon/human/driver = user diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 7157ff6f7ba..1f584b97c35 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -25,16 +25,15 @@ spawn(600) if(ghost_volunteers.len) var/mob/dead/observer/O = pick(ghost_volunteers) - if(istype(O) && O.client && O.key) + if(check_observer(O)) transfer_personality(O) reset_search() /obj/item/device/mmi/posibrain/proc/request_player() for(var/mob/dead/observer/O in player_list) - if(O.client && O.client.prefs.be_special & BE_PAI && !jobban_isbanned(O, "Cyborg") && !jobban_isbanned(O,"nonhumandept")) - if(check_observer(O)) - O << "\blue \A [src] has been activated. (Teleport | Sign Up)" - //question(O.client) + if(check_observer(O)) + O << "\blue \A [src] has been activated. (Teleport | Sign Up)" + //question(O.client) /obj/item/device/mmi/posibrain/proc/check_observer(var/mob/dead/observer/O) if(O.has_enabled_antagHUD == 1 && config.antag_hud_restricted) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index f5bcb2112c4..4e45d6bc2ba 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -279,6 +279,7 @@ if(src.emag) var/obj/item/weapon/reagent_containers/food/drinks/cans/beer/B = src.emag B.reagents.add_reagent("beer2", 2) + ..() /obj/item/weapon/robot_module/butler/add_languages(var/mob/living/silicon/robot/R) //full set of languages diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 2c1c695bdcb..68c3f58c1d4 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1272,8 +1272,6 @@ mob/proc/yank_out_object() NPC.key = key spawn(5) respawnable_list += usr - else -// message_admins("Failed to check type") else usr << "You are not dead or you have given up your right to be respawned!" return diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 4fabdc6510e..eb59f6b9aca 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -278,10 +278,6 @@ var/list/mobtypes = typesof(/mob/living/simple_animal) var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes - if(!safe_animal(mobpath)) - usr << "\red Sorry but this mob type is currently unavailable." - return - if(notransform) return for(var/obj/item/W in src) @@ -313,10 +309,6 @@ var/list/mobtypes = typesof(/mob/living/simple_animal) var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in mobtypes - if(!safe_animal(mobpath)) - usr << "\red Sorry but this mob type is currently unavailable." - return - var/mob/new_mob = new mobpath(src.loc) new_mob.key = key @@ -326,72 +318,10 @@ qdel(src) -/* Certain mob types have problems and should not be allowed to be controlled by players. - * - * This proc is here to force coders to manually place their mob in this list, hopefully tested. - * This also gives a place to explain -why- players shouldnt be turn into certain mobs and hopefully someone can fix them. - */ -/mob/proc/safe_animal(var/MP) - -//Bad mobs! - Remember to add a comment explaining what's wrong with the mob - if(!MP) - return 0 //Sanity, this should never happen. - - if(ispath(MP, /mob/living/simple_animal/hostile/spaceWorm)) - return 0 //Unfinished. Very buggy, they seem to just spawn additional space worms everywhere and eating your own tail results in new worms spawning. - - if(ispath(MP, /mob/living/simple_animal/construct/behemoth)) - return 0 //I think this may have been an unfinished WiP or something. These constructs should really have their own class simple_animal/construct/subtype - - if(ispath(MP, /mob/living/simple_animal/construct/armoured)) - return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype - - if(ispath(MP, /mob/living/simple_animal/construct/wraith)) - return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype - - if(ispath(MP, /mob/living/simple_animal/construct/builder)) - return 0 //Verbs do not appear for players. These constructs should really have their own class simple_animal/construct/subtype - -//Good mobs! - if(ispath(MP, /mob/living/simple_animal/pet/cat)) - return 1 - if(ispath(MP, /mob/living/simple_animal/pet/corgi)) - return 1 - if(ispath(MP, /mob/living/simple_animal/crab)) - return 1 - if(ispath(MP, /mob/living/simple_animal/hostile/carp)) - return 1 - if(ispath(MP, /mob/living/simple_animal/hostile/mushroom)) - return 1 - if(ispath(MP, /mob/living/simple_animal/shade)) - return 1 - if(ispath(MP, /mob/living/simple_animal/tomato)) - return 1 - if(ispath(MP, /mob/living/simple_animal/mouse)) - return 1 //It is impossible to pull up the player panel for mice (Fixed! - Nodrak) - if(ispath(MP, /mob/living/simple_animal/hostile/bear)) - return 1 //Bears will auto-attack mobs, even if they're player controlled (Fixed! - Nodrak) - if(ispath(MP, /mob/living/simple_animal/parrot)) - return 1 //Parrots are no longer unfinished! -Nodrak - if(ispath(MP, /mob/living/simple_animal/pony)) - return 1 // ZOMG PONIES WHEEE - if(ispath(MP, /mob/living/simple_animal/pet/fox)) - return 1 - if(ispath(MP, /mob/living/simple_animal/chick)) - return 1 - if(ispath(MP, /mob/living/simple_animal/pet/pug)) - return 1 - if(ispath(MP, /mob/living/simple_animal/butterfly)) - return 1 - //Not in here? Must be untested! - return 0 - - /mob/proc/safe_respawn(var/MP) if(!MP) - return 0 //Sanity, this should never happen. + return 0 -//Animals! if(ispath(MP, /mob/living/simple_animal/pet/cat)) return 1 if(ispath(MP, /mob/living/simple_animal/pet/corgi)) @@ -415,15 +345,10 @@ if(ispath(MP, /mob/living/simple_animal/butterfly)) return 1 -//Antag Creatures! if(ispath(MP, /mob/living/simple_animal/borer) && !jobban_isbanned(src, "alien") && !jobban_isbanned(src, "Syndicate")) return 1 - if(ispath(MP, /mob/living/simple_animal/hostile/statue) && !jobban_isbanned(src, "Syndicate")) - return 1 - -//Friendly Creatures! + if(ispath(MP, /mob/living/simple_animal/diona) && !jobban_isbanned(src, "Dionaea")) return 1 - //Not in here? Must be untested! return 0 diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 4e4eee07c0e..9e2bca5edcb 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -69,11 +69,12 @@ reagents.trans_to(M, gulp_size) if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell - var/mob/living/silicon/robot/bro = user - bro.cell.use(30) + var/mob/living/silicon/robot/borg = user + borg.cell.use(30) var/refill = R.get_master_reagent_id() - spawn(600) - R.add_reagent(refill, fillevel) + if(refill in drinks) // Only synthesize drinks + spawn(600) + R.add_reagent(refill, fillevel) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), 1) return 1 @@ -125,15 +126,16 @@ user << "\blue You transfer [trans] units of the solution to [target]." if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell - var/mob/living/silicon/robot/bro = user - var/chargeAmount = max(30,4*trans) - bro.cell.use(chargeAmount) - user << "Now synthesizing [trans] units of [refillName]..." + if(refill in drinks) // Only synthesize drinks + var/mob/living/silicon/robot/bro = user + var/chargeAmount = max(30,4*trans) + bro.cell.use(chargeAmount) + user << "Now synthesizing [trans] units of [refillName]..." - spawn(300) - reagents.add_reagent(refill, trans) - user << "Cyborg [src] refilled." + spawn(300) + reagents.add_reagent(refill, trans) + user << "Cyborg [src] refilled." return diff --git a/code/modules/reagents/reagent_containers/glass/bottle/robot.dm b/code/modules/reagents/reagent_containers/glass/bottle/robot.dm index cb6a7cb0a8a..6a8eb261bb4 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle/robot.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle/robot.dm @@ -14,11 +14,10 @@ icon_state = "bottle16" reagent = "epinephrine" - New() - ..() - reagents.add_reagent("epinephrine", 60) - return - +/obj/item/weapon/reagent_containers/glass/bottle/robot/epinephrine/New() + ..() + reagents.add_reagent("epinephrine", 60) + return /obj/item/weapon/reagent_containers/glass/bottle/robot/charcoal name = "internal charcoal bottle" @@ -27,7 +26,7 @@ icon_state = "bottle17" reagent = "charcoal" - New() - ..() - reagents.add_reagent("charcoal", 60) - return \ No newline at end of file +/obj/item/weapon/reagent_containers/glass/bottle/robot/charcoal/New() + ..() + reagents.add_reagent("charcoal", 60) + return \ No newline at end of file diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index b844e40addc260273899e8da0017c982fb7802e5..7aec18d1dcd0e0b166f3e1d4eb645e94022aeb2c 100644 GIT binary patch literal 32027 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

}TtzBiKoQJXC;tGF)8ITddTopS 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 X+<$j^?64mM{$09Ys$Zz<9Q8i{i#z09 literal 30044 zcmbrm2UJtvw=TK~T}2QS1QbvdY=}sc8c?K&fD}P$5TuvTJ4qB9qM%5T8bs+$={+DQ z0@9>JYUsU(lAgQq{~y15&O7(K@y@#$1IXHat-a=)-~7J0h`gt-#c@dB5C8xiI@%gW z0005MGEB0ufPeZ22Il~P(ICX+fuDwhuf30pm!AvV699rziym}&j$S*WDsFJB9P9tn zV05jtv)69%VL0=xN@vU5EBxGPBB3NH?`g$14pJ_hEUB|(?JcuMo=zAvy}rIXoz{34 zJ6T`qxaSr?4_8fdk86!pEllXwVb8ztl{#rC(!28J?Mf^5?Z>hcBGoBN8kZK9a=!b; zDjBMih0dKrd??L?t4Dc+#=>7LXhdJ*|5<%A;!=f=Agi4N_`89C3`{ znSD~c+f--nriv?n(e5WfGbe!{|2Rw59|c!zbWU$~F9-1{WHQFfKdsmHY?4-aWZ3q} z>c)NS>(3YSjJTON_;U8@*ti5{9>O1bmsC_&^I2FK^XdO=S|TqN`N_R9x?gnrLKP_q zN?&}+DE+wNkc>KS1LV!?l)IyMGuCeJFI+2ra&sU{)|+l}&pd}Fbv^qQ%gt7uBz=~W zxXZ2|MH}X}tY>0nIFwt$t9d%zG?mOb4b4CCKFjSmz9ly}JE1S-A734_|o3 zc#Y3z`Nts1=yqJL`wz#ex}>Tg@4#NQaA^8{%OFm#OL|4agNKe~Ca391yji*lS4fQJ z^HYBkCFlqIsQcXWRO(EZz1|OewiP`|3Y&PS{LzEDHs;siC*N2byd3N*o)TL;>0Rgi zo!%M(4Z2U#e5h%i63>1*;oXtba;kwOiM0d~XNlK0x1yB=pi4qO>TMUOKR@O^#Fb57 z3iw&Mw)rL1&6{&9?oiV8s*H;9FJJuB&BZUeIP-iDGD^P}_efw^%6V_%x3fQ0IrMB% zIPrS0k}r2RWLW(4l|%TeDz}{m#Bcw;I(>cW?Jv8##%=}I*?4=`R*AbVbl4nn0kb+J zw8V1)0K9+dXsDY6jjX1z+8%cx(a~Awk7wz;k;&p?wo^BVzHRV12=&rVLBWvy34yUC z&FjgjOaiOQjT^_#&VSb%as`H zq$H$KyuR_vm$yDXKIOB34)F4RwgI~M$Z5raAN{7Xd+eeXpa@N!c0L5)w= zWx^l%G-G;^ZrSD86yB$=@RFgyrE(tI+Hk@t73V$z0VvUbM$ZJf#v6 z_v4LVPLr?_ErT2ATlm%0o!1j-XMj@I}f&xo(!l3@z|0{n>hW za+aW+`-dfQ>OD$*(K~Xh1i-my!LZW|yMhxTYBV)h>Ly+_DYB3a*=%ObGeE2Uj=;nt zM1+qj2h^nr$hm7*xDICOyce@JG#j0i9HybzQHZ7_Re~2%TDtBDDdy^;d<`wcL-11s z8j5jhioiX5~f0WRFL~Ym4eZga~F{a-N7E zLe4kKXcdh9nT)YPHZj@$Tr{ubW7#v*;F^By1f>&1-|#C9xs96rh`~O2`wqMjdbrFf z#)A_o^XOUB{`zoYEiG~?L34mW*eErc_i{QAkLW7aXJKZr)&z~o3+ zRx*usUwMU(IC+bS-pLnv$wa~e)~~P_A0d+V+i_6)mfY@wsKY6hSe5STaOZrn({8FF zwR@VG^WAvsyx-AzMR9J@#uO`0*`NJ-oCS}~iZ-o$Pa9USXfO|l$zN;RGGzRcH^&+4 zMNx+_i$LyVy!Xn$wtP=SGm5-VNWC)N)6Uv&NIk~Rw(;T$=0aWJ4BUUSho5ZF!M+*l zqC0?`=h_v%hT@g5n7x6laO3NndmHvi7`YF;<)>VH=J-at;Ijm>qEOy2f&3?i6fRcn z;pE7D&1Y7dL|i~uXsDr{if9h+C>TZ+yMDf)Wm1wR%7xqJ%S^3s9fPWw6vw(5A65M& zD%U2Xq@?5nWrZCr)f*7-9CV8sg4Is4{Ujp{_e&~+X}=v#H`5}+zS(hHP&Uq-q z9k`pC>yZ((vH_~jN{P^O&v8ETk!sS~>j~CyVftsC_Y{_}*UT@a1ST}gVR}CVC-Pb7 z^!#SJR2wNpSYqUdIpdIPy6fgKS;H0!kpODOQ1w3d_z1>XrHW zL+USd9^bN(-MYtZAXqJfuvfJIRlNUu4!!^2U+l%I1oHy+S0{wP^>4-ml`;8&RqWrnz-}<<{ z-$c>`{lw#a#UnfJ5BxZNZ}y)+}MjqY2-OiWL`+qcPg@sxky{NRAX@iax5A;%Y@p1 z_UILa84FO)JL#p0Ms%?tRw$*6^tT^xRY(Du_eHyUZcCme_@3Q-?nt^T&qgfS6aQJS+-NXGNOIw&Tq~4tkVN|#u|Bf%D487E~WV#J@OP< zOMRHuPTE=eq_@95uDfF9o)KU@Qp=Lp6^7UA$HajlR9;Z1ye(qC`mS<5nsvA9v~Ung zlodH)dP-DPRa2GoF?`?6K!2|mkA6K0_XQ>+sv2)yZpH zDo6}9uHxfsbLSZFth&6kG&NW+O0=eiUbs_gCbD;=(x!P>4T^a&O6D{|IxbmtpHp)e z-IFka!k|J+4GW?*$Bt6w$+uh?2wQE!OVLW}z1c^4q9$i*Ws4&9`oQt1f*hSqWqL|d z(%b;;`azjvpF{~yTH<3~#S)gO$sV02t6B_gKAU`x933y6R`mPwjHL8@UE@_U)1Oi+ zd@-s}t6uf;u;FFlM^;27|KH3=mGpMCS6}C1cJu=_wW^?nS5Yx^)wharOWIJyh_{H- zSv&I7jDPjN=?-R*K2h!c3FqN1my*{EqqnNS!nYiu?|NL37j#g4&B))MS)FHp8oWI2 z#N7lHDuNVGZdmnTZpAsQs%!T#Q;u6hL}DS|KhLtZUIBs1*g5iQS&yr{Gk=3~mRo~! z$WY13NP`kT^-2h#XtzzNueU^EuNl|)p&`bUsP#r5OHW)s_2f17$w~1_`QJV8Jb&g3 zi1mt(mhk@A$5-A{(rxH%hk+JLKtsA*D4brFl-Se^Zx9BOyoC2Im(*u2LM)p`*3hZ@ zizlTWUw3I^y7u($VR&>AD5j zPSlB)YT5cztW6!fz|pG)D!XwB@A8d3PRlDqIg~|kf{>8`09sujB2V7ND{(-dD1)%| zFo;yaj|jL2{QUoDpk6cCg7(qT`|*~Cvd4Yjhk4zc*}CEDe)Z&oYj#=!*DFWz%AP3+ zZ6Lt5ngzsbXVFkV-ZRyqVj^gt5#070M5HQ8>n2U~GC^_}2^ASG(IK{-upiH!U|x%u0j~jzZo$fMAX7N|KTW@(XlLh-{VuHY*pZmm>3S`}|X=BE_jE-QTi@o&E2bKiL7+>K&fJ$mL40 z+OT(vy+_+9>FAfPGG}V@vn$i6?kwK;YN0-p?u}!fTz-Utyly!SVoK!ETqw3uJb$p< z`4f)weZ!6%o)Q_z6@N*u9Iv$NK9RKen|U`k{_@D;j$vuyh}|n3tW4j#ODTf#t3_BC zF+bTHF;X6|HuATJ#{&+dcsCUYL$32=e?-wMd($_5kBpJ3MnC#Qhi6{vc?UsnF!Y87 zryVt>s@p!tnU(2h%%}CZ4)kX4pH_e%Pm#JjO`i%Q2=*<)V<%BQCtk{3J>!a~vM1I; zZ)B$=a90qe`-YEryo*3r+W#vEZ;N^b<$PjB=^%cpoFVA#reD10Hb2;f_g#bO=2&oh z5MSlqugb&*P}K&iKUpBIe=mU#4OhGHIOMIArk3cz`+w}rpKm}$FB=4q%C2m3`jft^ z9{JK_pbw>wi44OYJXqYbu(QiFp=WJ~q<;N={cVKEuG@rkl@MX-1alS8I zel@f=g5yxS;3M)vHInw5dh4LU@?a7hPLm(AeGT=3c-bB{Of%I`aEsh4FWDFBgYVgt$kKx zH9O$D*n6flHfW!fk(0N*tLuEvu}{p*%to&Hn_4emxcfVjyKSqEc7!P`S*5OEGR6~` zK?eSuZP*V#hiz)B!wJLdx1PT#YkDWDRlD~_>lMlM>h+mUR?tO&9-w`n)mL0icOy`E zgQf<9P)p5WHwaTN4y>XF_FOIUcG%*-+)0b@C2i0P0jL{HVCD|~Wjgo`{N46{->`Ln z*y5ya>gel!Y=56J>~#V3il`gffTDlt<#tiWzL7#1Sssz|qT$zLQ8zv!>9kiL&`N>D z5)%|aLn)xnddn&?J>Byb(GbyM0bGTp>#U7%$6r zR{!{!Nj(mxPi)Z#u3!J{5n2}Ns#NpHTiTLEuW|F)HiHAO;)WI=jtqU8}sl6drj!i6=+dJVr z^1JM={k73V-m6xN$;tfMhKS%fP9=uL!MdF7MNy=8m!vtR#^JH4Fr}=l%)_-8`veKz zljhoF>QuEgPhU$9je7yFe>c>)mwevgIaH4NJ&i(~UDwGFIRm*#CHc4f5j={xI5PI_ znTw}-Z(nO_CQH25JsP(a?F%<>l+eRrkcBiz%ap*^C+VO{Xs_*hAq=e42f7fAF68{L zB%76*UyiKmdjktefjEB{eZ9_yn!b{Tu6cc~3FOuacpJhtMM~aIFhfA!P&XD{HhNti zm#*Nep8{(LsdJ+iRmoxXH&0wnz`6#7#V)*WxUm$4YBomnq`*A|rqe$=tM?uw7?q1? zmz$<-yM0Psn3q`#I?2!WcNi`+OsbW@874KFUQg1~LT(~;(&XS1snMsEcn3C23QW81 z3l4}ge0>s9`Voz!B{kA%q1ak5fozgon#E=5@?o!6HND)u{)CINwY2aaSrT`(+_%#v zWH*iei7%ZJBj>U8LTsS?zNkfPB?E3~@tG(P# zfzfh37$zs7`e{Cpre-u_==WDATs%y9w?cZ*lCkdx8U24aW!}^68hSIkyEPNfBd%Xv zRA7{Kh#J27;D~0_Ly)U50Ev>UkGG!pHjY^lrsSW^h+iszIxYSXyj1Jz9k$Ka-)2l- z9WgCj;AwF3y@q8Y&i3@Drc$o$ox6?Q(Gz;yQx85!=VjzTCE#c3wmIXcM?XbLN*Pe= z37fK_KU)tBO0l&(boOxs-9X;qMA5y#CC;)~7eCkh>km7QpJR~H#vrK29lT*4h>#6_ z3ob6%rl2hYK`)aOVYwCodZou`IT6fiA58N-M%K2^;V?*yT*KCL$C0>{@R}cO;-SS` zO9r%h%0yh2h3^;1Z!6@z`-}lH!9AHN1NRc|%K3MzaMiXjE`nr4pB3UxO=NlI=#ZvA zQQpdU@z9zEy1V<2>+d`g@d4Ij~vZw`d7e6VYya%>(Pfqb)Bu>z+X6 z>Eh?lC-J;>3NERoKW4qF2SKbCujbBI2>CoCG z;3&;F`-X+suOl?%gOtKIho_Q}5zjd)c($wPWZ`lD{c$F{m{mQcDA&p5dWmkzVcvv* z^9;(8DL#>r#Z5i<(y3hj6#nw{{bBk~*DC`rv7;-R2nGkoAUl_;~9 zo)Veb@6o1zn~RBYFyIYGh-Mu6SopLu2mFXy`&GJVys=fkY#S$kBH*RwIa(<(jv%j% zZ0FxExZ7}a6iY5OK>7o$hzZY?p(2aY-cko$1{fwAFutjyBGSJ!8otusxMun#XG1CW@{>F0{{;d=@*FK8Le6fn4((yJ1F$wn#A4 zcOTN&M>VZBNfK@cveu`-{ma|&@qnW=$oA+;wnUj>*uE)CN)t5VG3W|}K4khMB|W?; zEUl_~Ac{3i>J(G;e498DG5+4zp?D}{`TM}n4!(;nv*Sz^a`_!S8WYT1PnvZ$W_pg-ne%$Vsmqrw#=8{h*9URdr7*+eLS~uP5YtT^vwT{U4`F7YN5Vi^ zsL8pt%Tj}j>#;~&XbZa7x}6F?uhRBebeip{<^<68ayxXpKfmh&^0Nf+M!+U#kd&jJ z=E@@hQQoymFrVq?4$j?-5 z*P<>m(j9NrUoomJ^=VjeE)hn%{;`o^<0NZXAH8Q&xnyP%W|Ura>LO`UQVCc>v;6FO zd))xFx8wJ0#{t%m{Ch1RnC821yoU^YPLzbdC-OfaHbg*GDScr={%>9es$RvuCgVO) zd^%uasi%3m)-y|B1C*Kbgq34m^wRezXN5BmV46o7BHSUFczx=`m`ZO{F)HX=$1%Do zOL*f7Zt^Kp6)&6YiG&4VnU~6zY6FZ<%A^3`r#3L17KE6L8I<61W&lChIiTs=Igxbg z{}tfd=0+*NF-7jfwec1e?mCR=AsyRwUxx!<-;3=x0u>iWLvN?*I$^;=$_7SSVl*+K zYV4!CHU1OF94i3WIzyV&>F~U~J2Fgk{j}9P+b_+_^IzPal?D+nH_cIRP78vr+x-mX;L5))*EnR^g^=QoCbo;U@ernEPI_ zq2&`O0_+@@F__PiqwO0x37YX8iCNjFg}o%us)6seu~&y;S*2r9uV4F(POPR|oGtw~ z?4#IVq4D?J{l8Q5zms+b->Q-^jN=px$gFz2j31<-08A(bhsjAj5G_ zQ=TkV%O>F*gyTrLOUIXoE$*6_91K?3`s-pnS^&=tT*i2kfx&~>$6?INXbq(7$8&y({9Ntd%u%wv>bA~!&7*eptLF)=g1on`VG`ULLgic zAn{!Vc%2oICO|2FfD(b`Jk8S=zOJEj+y0n$42DWuuPjglqd91?OOnO&;&t=H1MQ?h zA9p{8ztocethd1uEJcsAnM+s<1oGJ-ySmX5w6^*d1C)2lgxbhIi)aOqG z!d@S}IU*x3u9Y(6r~kclftIw^BjIxnC%54z>mQfP>+5HmHLmiT5ZhkUtf;4V z6SLphX(lqUeo%02S|IMNjT-NUlXEjNP(kAWdvjYSy^rmZNbK?gstx}}P(J%f{{2Bl zPm?xUl3`9_>w`yQNOcnE7XFgxJ!k_0y zOirIVlO7?$o#CF_V7S-~Zj`LFshb|n3Xk=QX2|{2Eiedast=yx2zfry-+}RQzCKR$ zNthw;+VxS=u!^xj`tQWGTzG|i`EJRnu*e?+G;s!7nI0&;J^^K7j7dDpz?R58&iq9_ zG-gzBm~2?^MNxv-)@HMkV%2~56~->$qJ_+samlVu*rm9yhYJk)$l~?XNTsVh<2<2r z`$xjg5|$z|l3EMs+3L}@mbZ(>ODrnx2(mUw@VrPX!I~`8=)}RKGnt$CPHie|Mg>># zzA|qg7`9JK3L0wsUOS4z-MvoADB24>Xuar1#t32(0N+BF-x|7zo-`#sC_8|&%Jmqn z9En6tLBq;CZ@ zJk7`Es_*O*M@ZJoIB3a?YS3_DJ~4r`;qDPap32eN-%^uacSEa&*KUIp=RMF^Dt0Y+ zD8Q@3^czl4O0jia?xh$8kzl<|Q!>BjI(?_#pyDcEZNvqQ00zI+lIZ-N?34bbOZ3#4 zUo!i++oCb@l0k_U`=Jop$xTjvMUw)TS54CeELWb0w1iLES&AlOX2vCd-dNLKJsizp zR;`d80fik}jDj$}M>%z<=qlHuI?H_uH?9I&D{X2XBROp$inQ+wBlYH8^vvf9ev9`c z*cN7Io$vj7dM_gCx*^$bB+{QuWsVkNY1lb8qJ>YW~ zu#(dqU^$;5TE=n&6O8blo>v;Ld1Cu^vtsj|4J*ibBTt5#TW4(J(`W<>t8MTaz6~D1eOrdERqi zi;IQz=;$NJCru+?T3X`L84F+*YkL9&7oN2%7c^|5;|DGlmzu@zUeHVJGz9lg13+h3*3{oQbvh)RP)BUwP@+ zmr~9>sQ-$Qo!!~K_{&4*o?2EZQg|O$jY{lVTGRB?6kTYSdBbT&JSd0Ggo}0~4WWTc z$W@Sp#8_e2Xroo|z#=6Cq3!m)>kl`%ajhaM)a-Rnc)D@zcGJ<_crfCz| zG%s$i*>_syyB9BB%wBf_)8ChMKsB>1%(HmMo&icRB`FYMgc`J|N}{g488O_R+*~FQ z5m#YSaFY00kY0clp3#g9%hfbPy7RjX#D<)&UaMwQ)=f+g?Y@o~oO^)_fg)M?#)3ZiAu%vy zmhMcOr4hn_wvVB^^iS7{v|3O9ngwZ|gmen{^2Ba8=NG(QM<*iye6u_iNFNF{X&aF_=L#a)3am z!j}+7X{K>7uYNuGJ{|+*DZDJq8UQh{HwTjj2N!}MDlSoUfqgPqlr5h*!zk;{NL&Q& z{CKHtOC~(m0}ZXo*2JnkjWIwx`U<;DUmgBU9oz2vZjUUy02MzQzdZPU-3cxeM%$WR zuv`hTIrQhV4iDA=)su&73&zhYtTXnO*y5tDl?b}&Zce;~ED=n4twyK0)qvOf zke_cSh5aDC*=7rNF!?$bCQy9n+y?^$f<|=8x2h?vOouc6sz4%6a^a;F(wV>98?U6K ztH?P1I$68XNWP1_gC5+s1yzY*9krV`zkwo+r64yY;tp_hVU{_pVO>vREPI$`NNo~4 zWQB5;y%);yHUi4YVte!&|9)A`a8(XdmBua!P)dnK_ zQkhVa=eGlkzKVnnmZ&0oUUDBusGybUG#!?#&j>0urhAWGRZuW5pklT=E?eL*4lzs2 zB65APKuXb~!KK(qVUxqC_#WtiaDt0`1qir{81%sk9-Za8Y9*5Yps#f1z;O_W0hq8+ zTvv*GXp#K+1Bt_yuv}1*d%wW6+@X`#!&NTvDy*`+ezOJ6{7#w12S$vh)Vh*oyGov!vr#q^{SN9WkLW=j1&JA?y9-L$Jv}?`kjMkNwH;CL(yg+l=pazY zkpPbZ1?7V}>w|3m;Pc-#Ca0f?lP{Gtmi6+MApQob>DZ9nORW{c|KY@!9@R@}IaO69 z>&g4i%)9WWWQK$5y&RqF>Ds8#>aIziS{b}hq8FTou>2J9W$@n@QY1v7R@h4xM8dY> zGCiCgaaE4=C{uU(Um0%f4q3v_C@>s^vh$3d0oXF9ee)8J;yRn6cXG0n+|Pi9-$;bt=x4{nd6y zF|O7O)N=BLuGQ-2jS9Zd@$E@zo6$ldL62no-C*f=mcQTIA0L*5E9BbTQX=IC<-3rZ zlj^r7UhuHfq|Smx3b;aZY1fhRyh`PO)d#m7xtkoEC+Zbs-T&OP6q0p~J1foB7K^!i z4oUf>C7BubD3b-u)JhF*CS#s28yHfl659(8);98m=*L$mvL;C0L<~lj*4I6QYs%b? z>GmcSU8IAvMmuoK`^7TcHWE4c-k^5AYnz_6em$gkS~2teN_p9R&_DL91>~2=7mcM4 zrAlGx1jP-HFtKS%+d=vxx(~z6N%4yd=a_YUcT=Lo%Hl*@g*}0DB^|@_Gex(@l&vb` z?0(HK^J*9m{{EVp6Ju@6DmlW^1lPyO|p-#!%*0PA915xeMGKdnFzrex{|e4 zEP%otybd}g`1WMg=o*6iS)|OaN@m2TSFW^FU?6=_n@dhcK3h=jT$t&@fe&ni2m`=M z9R1ZkbnIFqHgTlmt8|F7I0HM3Es$QpOXf6R+nC$w`Lal`Tov9>rrAp<(q=dns6%nc zsc+9lIvT^tAVs!_EkU1!(EW7KP;67+L@vuv$NCDqW{%gQ%<)YeF94(MkJQDmUTf)T zMuxsv8+aJXifKk;vvP9!TR8-sYhos$6z{eGW8A1dTox|WNBafVREhlnuDEPQxlwUE zLW5zBF$`QqXU14t~(x&#(uic9|hf|!v) zJF}CzW?WYBNf#vubrcs~!a-lMI7t0JFCF@}9gURq=tXP#ND^sVLO9IV*cgleC5rOG zN(XfX$_k#{wpp(Yxw{j}jO^RMHHL?paoc9Ym`stfXY`p=d#qe7IL6S(r4zoEK&ykz z-G>j)=%p#@Q!j?3VQV07Yfod!!-zg>FM_S~*e2XY6Ox^Hxy6rpq-{7b>2jOCTT9X` zp2H?0?wr1;V3gVwSe6=tjG_jUpLk<_+C!4nrd@sg$yNS{}pfxpF$g(Fj3B!H_% zMq>+YSKp0Nrsjm*zQO{C{%FOXm~qKKR;y;50<_XJ6-kSwo+X5Kcix09!aEZrvdM(! ziqR=s_0xyGrOP7Uv3)RP+@ISoB;vOHnt4G7W z92w5BS%Bx9hli8{_p<9H?KUQ42El@o>*q-YxwO1>3Ew1qU8~L_5PZiOXH_Oq=z7NFPJ)CVV-x8;WeFfV#l{7HtZ9=RwuxHmImb zk6(P^)!)%M22nM}Aj11yCutO(t4c#~ll~`S@`?$%DYFZWNaUtBS2MawFlPuw^%$R0 zktGQB0vWtfpkxBOqZnCqpyIEFwN|0w6L0DtC z5crYQeu$nv64U2z^4K}B66+QwNmJSRAdu0MyuKm*HQo?nb3?1FRw$hV+ksVID4mT))bT4jlE&2W zEEf9)`rgsgpU*Lld;Cv?~pr862N+{Lg_!Xz*OH_c|CxMf)*je^IE zhZZ}m8ClLTJUU|v9lVx6armadKJ0!Qq0FrK-+IPYn z3(^2nn1C7^D;rp;R4ktJuRGQJHGJk$G0-)7l6b+!9E8S8F*&1he@^SDjqdmf=2a+D zvk+6?tbtQIHFHfbpF&!B&p?m7gzvXkQOD|o%djE*N=Lu}ZcBu{Zbj3!JWH?ymvGYB zom$vo+QXr3aDBnz9>F$!;WCqQ8w0=<01?4II(Q>3a7V8g7BCo8Tt&4F64@rSistaD zwdWb8yHTV9h8u=no`(;x6!3++kJ(ndZhB+a)&jVxef(cQsSl8+8{B^n^l@-G9tJ+0 zhk#&gGla>jIuU^U#Z!0nA+5G*)Y@x23`Yq!a{uP}adGDWEr$P5z2I8_75lw0JRWt$Gh@kS`Fzk}XL7Oik;OjGnb8RM1!qC0lr?J-K|ZvLIijiLfFxo^RQ zJm=?Kh|eB}AIU@J(I#^;aR_>!t_zYE2M2@e8Vu5sb@T)r^Nlm7T9mYPAvXy7CRBQQ z?Q;S72e;ner~9^e=9s(W(-XX<&`iIA$sP`!Lq!Am4!Q!H1IBU(hD3{9)q>oEOl6cT zjMezL5Ht0taDs1@(Zy$rhc1qkDq|`(g~xG5#wRY*{@NYk&EAVN-~i;^0dxJWp4Ld7 zEaA67_^1*3a}FK_o&n^=TsN$Gd0370*U_%J7lg*uoOtMdWAYIEL#snz5pt!dYBBvP zqsw<}K-PN|xs8XORip9ICoZ|-=LXSyb^DvdKZC;E>01_wo=xH7e~Xs7HebYp>VO*v z(4a_*fACoun17P#MX>VeuT?H1JNd2<+hVh?*4e*JOb^p=aNN2D`nvz62C@x@1#K5D zWxlcit<=E|9ICc9PkFOm5ESo5%*^cNb24y4*1t<-I)Dd+uI(48;8Gv6tUD(Z4>J9= z-j5OGA}2Qx1z+-}V1`#iig3kZj9GE6Ca>&L`~!z?jWklLmIi9Ap7a!sxkKyt{|*vZ z<%+5>84t6lHU8N7s7zryr6IljaV_o6sZ;xXpR`yj#=%lnD}3fsH(U1IByO*ifdP{$ z2WhJR`w%0<#6kkG=qi|~kcmpU3m*}0^zc2fFP$F4_&Rt1QH9#bRzW#)9CU{mqgSjGF=jXphd}#7xp*XMe{NwRaE28-1cxu4%a#?CCF$wU02MmL%)d zBGzl#JjOfXFUNzN6ORr`rx{b701T5w`(r+{wjKgI0dLq%(A#;uaCLp&0*S@f9Y7NK zaGClESPF05kht8b;vo&`EK-cHWWN8wO0ZYBkUKmVT^G#;CQJNTTw@DYXUZafY%~t=0*+Fw^tj_#pCLDm(~4ta@DhV7 z*;6xqWNBnR3C`+5npx=lT~sx(49*oSEUP9(KG5pW4RS-U%;wgMJdaVsY#4*cJ@?g; zn}UdNz1Ppyz&ic8+}B&`&wW8r7PyH!;S5mWYO2HFxP)o${NpU z!ZR-K_aTdXVN|k!(tK3${e1+IY@Y!A!*pSy5qX_zQzSGyF2GwT90BNlK(kWMiyh5$ zsz}+&dcU5o97_?;b+5@;99CCm+Ef~;xgVJy3Y-&Ha#DRWKGLwD1D#;~+cLvNUjKua z=kVcx^;5ZTixyo`tKoIIz6*=NEC44YY&ufBJg+YT*p(-+^L|=q`VlnoNMmJV*J?py zhaq`cl7(=dsNzYn%f{iwq)mQpH7!Uk5wr-z7qV=<%gLU~WCeCFSi%bYk8NcN#_-mw z!>wzww;tl3;S-28oFHKYQg)k60LuB%+%3*y3!<0J3VX93sU1eCM$Cu0z2GLi`APei z8{7sd04a6Nn@`r>?fA9e649T(8w?!U=T!XN_W0XDb$H6076d@GBU}GgclIrUE%4KN z=3n)k|L;7(f6pNNKlXe9=}Y|HXh%YkW#0YH1ewXaoX^lR><9e-9q5$&4`Cxn({D^x z_9fHfLjP>-7B+#{{%22rFU(`VWmwu~<#kYk6d2JDde8zdgxW%yO8@%l_YNL%wI$Q{ zi|3+V-Grs86s?7wV`cc~k`uyyd`-1=tLhtmWO#pt%Zd-XYFVro>fk939_0=Gg$#== z?TNK#CovdpJpMV|b46$w`^Upv#`@&r92_5rI?$Mi5F=w_J-k8E_3!`N#lAJCeTKze z*qB%Dq?jgx^b?hGdY~U}1MR0A7P6VFTqTZ6Mz%p$JAvg{gD1I z-V`jt?BOXM)IqsJV}($YurOWJD)rrx)^A3;XW+hLl+24<9V2{~T~kD=d#ryr@w~x> z7r6ePyx0zt$jQpR#XBbwuEYzxu5fS?e)-q4kPkyjJ2;UB`;)7y5%Mh?OQp4x?`cmT z5sGN!{Xy=&7*f(amfTt&--cW6fsRm=!9=JYkIA{rOQW5=1H39=@Lw5vbN#L=kS+@i z2d=f0Y`~A2kU^6!5%?m_a2>qjtArk?4b>D$2M=!FS&8_{1~?LSsa=mIt6tn@F+O)*EVYk&`zVwv+5xaDp!HwgQeJ8!qhyBX+5k1K%W;cRz$RIk;8+R0#|Nk)eW_o6 zv$A8PWPOHdYSsXOV()bXwVei0>Nq_Nk1S$cvOWOmxULRB}|e(@4+oj<(5aasAFNtp^x%8VWn!o;^`kygz| z(0@->PRtg#)&hX)yhL9(?)ms^_^Gr1oKlZ@{raZHp?}&}q`dh>4$Sc{D*ZnRM<}L) z-T$-V>w9+pr3&W`i6{0imN_s2`va(Og=*=VZ+Cm@Uj_so?hN>ROP*~R~w4+}|m$Oc(yqY*EeVLv0-(KMb?gmoZ9{3Mvr_b*p)4$x*bVrvw0p6U+BJzRb8vRys$Z)30!d=!r>U|GG3`US@K%sG5a zE8GI|1-^JqH$`*u1vG(rmVFaT5$>Gh%oY=Xf#(|b>vzlC$9NT$jc zZvHcsy$_ZRsYXnO9%hZ;5`0HJkfi?Z{6PjM0p;8oMCQF}=2tu3FaJ4Zi+26`p<@^S zX@8x(t_IFvk)!H=1JC~`Q~K{0V4FnLOe@{T?-W^7er7OGIZtKR`RA@uU}YbW zK$DQY|26YJb_ZMoUpHRtS9s4bMY4oe|EJ-_v|HWZ)WWH??Dap!U{3`V(@3L2O{CzV=kVZz<9i5&3%=Vp?{d?N9FOrNq;4)D_ zM2Jh=1_u5UgVM>3bSG}EL)Dz%h(7&0Ti-T7uT!-{>|VU(0Sxh=)$kMn0IIss|F)$_ zT!rMj0lCLD=+GNzJ#FwsPU6G7b()5Rtn7{GeF)W?%|ZM$lvFEod6V2Nw!xYD1JmZ(l=v>#T=x> z7^0Yd9swhWg(_W}lKqC^&jA?J69tC~=}wBsi~KRVm3aSumG&J#O+;VOS!kPp*D|HcU5 z2KN9h6C|^Mwq5aw~z31oK!wV4gGh3 zu+4b`*txDlyYj)C=g{J`;J??zG~Ma`p;I^iZQUFjozUPkXp4mXwb6UM5%Bf@9Z>Nc z{GSlYe;e=VegSkgH-K7XCcMwH+?@RzTg6(yfCTaXXt`UyK!LUc0HefYZ&9mA{f|Yx z5-a%z#Gt*Z+u@&IF{ z@dUlz&-CPjl?XeR^+Z;(?3Ya77% z$qZsLZ?il|(iz}@{sC*&9AGP79LSu*yuB?1E@Z%v1*O6E#KgMXb#~kTbhu728=V@OUDRO3M`PX5Zy9(!NsPT%2Z`6kSq&25?hZ*lHDYAD=YT_zV%T>hmQ&Kq zYsM@AL+YBsAaWoEHHHqouO66gA517HN|&{Xk4LwqMkWui;AKyevi{rtf>M#F0*FKb zEo2=7!b3Zb{n9I#@L1wm1MforsS%tvE!(fC-=jZuYc;#5Z}_$AfnqbEr~FYX{mu9{ z$;ixaANx?3xT~Jou%@Osy#T)zYq`x-7S8?i=s-ik{*=@d`l$+wgW+jcsaT5NS7qEn z`>{-^=HXvMQcVoF9i!LV^QY0F;1LEz2^T+=^?_U4XZg5Vd(Q*KJ#!I253PY1Snq;7 zmCNY)O84Ode%df^JX(47y`%WkY1tgcp&51BeC(I6*(}e-`5YoK--#S@KTYlivOXnr z!pyX14yh<6zl{mx>VUIZi z-#7O@+G5Qd0i8|EwkT_{>>0~mJGCB-N2urJjNUan z#=*N!bPWIvuSaGgnF8&<)bH-iGRaNRQ`-FJ74Rp(5EMVB`9Eo743nmxQe;zkVRnAr zt%GKJT5)4tVQ0D*Y-NjidL5G<93syVNd!OF)mLP2&w$Pb z!O^x|!OyYwL**3p`JOe2mBe}~RvAG>E^)=N;bWnofCw6M|A$H0zHOcpi}A((+)YIh zZcoiwP|Le*zZeH1sQO%c9u_Lgs3q2quFPqbxMIMR1eyq80kq$C=a@ikkjVN|#xx4U zVQ2DhE_d}Y8C!~1+^lm327_U+J0 z(qfDc2ZsmvCPHFQILIM0W;P}$jt~sjc2KQrh2{1njlX2Nv_ctJ&g^@;71yo6REQ`W9PW zejcNFch1}7?}X~f0AAQ_Q98KYBiXP{#2jxo2as2f>grW;8L-j!rty)fx;UK%$OOC~ z9llWx0s}erC$!^nb&q`wZrl(bDGo)NVU0yx5I(-utbG+8Hd1HLb|E_>#oWuGmSZdp z<%t4XG`Sg-iBe~QT;f3=K3>MchD9NbFHK`t(qrW7N5@u@nh29bYusWISnHfm;bnJt z3cZH7oa+u;`}Snh1!OXggb><-7iha1Z{y^RE}RvsH5=;YvIowoM&zJb7n zu0|!O%Wj*O!l}H_Mz621Y}FHAlJxZZ0T7|Z4kDc)=L}A~S0SGE&^kRWr%CfxZS90* zbl`%f&(*BfT=iQWvln3s(nPAFc<}WH*g6|JI~YG23xLo!Y=Ywp;hyiL?ks?X-NM=R z*|wHCTz^SGr)F!D%EUD{cyPxX;-mbXC=bXli^S4C%=?-_C=rLLAdcmBpyVGNLOd43 zx;%bclL{|uzjBk6X9lXebWrUrw#?;mR!xY*IT{CLI~Qi53ZKSLe7a*ObqP7Pe?dOL zH09)Wb%K73tzM3?#&u2s=+8BQCb%siba~W*bc7K0aAMx0`>?6}$Ub>JMkcddv4DLxg&0hs#)*RAeSDqvtcv`R(g&*7_Bt8P!r*7X~ ziHSrZG2Gfe1z;|c*h+9EUn}^=Mea!b(J0w;4GlA(35n*UVThk3Q;#*gc*YY>p-UmC zQ#<-`Y)P8;uvg!?Mt+uvle#mWD6l+k2(P!geV(}1p3*}{tfKnL>lS(ij5d8$nm{nt z!-cq$WwI(3l(kqrtObkrxc}g}YE@P1(s}sS@&|oRjT^bSxqa2QBwIT>bNC2@Le%He zaAb0Y`^Xiy!NTluYG5^A#t67zRp5t$@A1sQ$iF3jP&hkNob#|u6ysJt)9*=5F5@AD zcI?a!Z1?_2CAX2MQlAN)!+~X%OfS19Zpn*aWBapi3yR^y=7c8#T^S@r{aZcWs-FaMeE9KR36=Uv4>bGLj4l}-g z*U@KLb#edrj+v($$XEd+&eRAjk!_Wmm<3Dq1TW4IO8dG32ok=0MDFQ$t^Cu3x_$#9*N_sOLnOaI{*E+-h&=O+@e*%Zk|W^Ags{5!GgZpAd6l@kI46ib zsK5fEJJz7pr;FN)HI!A;N?Z9<3nJYDE%<1?-Tq~~Z|18x{*)s<+2u;NingQJKzTaW z_o(ii7;`|ujai5%&}!AM4c3H_^2BUr4QepqC~SRVnp;fG8}v0g1j^A|eiQ*3*!Y}! zjzc~k>_|iUE$95~FNHND{VamKyMK-VjB&{;Oh^o>%X$Fds)UoZVV=N zyKhF|h<@IIm&0K%Y5hy00moSd4R{(}Pe&|nGPe)Lpj?oHM}bw2$TA5u3R6U%4@K4g zJj8okx&4zD6J13zSuw;!6dPOyt83V)xX%C*VmLWIUL+bxgvYhb-K$bd$ukSeIqMj&`w# z;kQ$cHS@EtM<{SKTtj8>$_>zz@&?G=EO8>Yc^dSgbEdrnADZqOAs+Z>EEeiXYXS*$ zk4bQf#`a}2`wt?R+*z!1C?TgtTNIw{AEzaUvf-mn-Id8!+_%e@ip;At4Cj!no zzkeriT|?CsZ%Y_7>F|V*$i4+|m{OB0UY)r&~M64JD0*YDAx( za@8&vDf5YTxxhaWLq&Nj!nQw>r%yVC9gDefuK zH#=kiY9w6qdou7>EERI#fMT}5)E*zm!C5;b_OXA_K>&1?S{vu2+QO;$;F-Usl#^$!z2klNF zKq5*77t*^jK~3MDns<7RnMic|9_^aHrJ!unZDAEaiq^vtBOtj-3E6)R;@?7%8GS-< zUK_!ICQE#*FsKPBo81>9xzMS30yXAONRSyw#Gqa$AXksdG+@K0q3>~Uv2CR=cpqaw zewvfsyG?E!TvMzc+S*w0+^wigQSsWcmi@T=bzz$-m(e06(F67TcE@H=F)VFP*z}Ts zV<@bKre1N$etwaTFzn9ZDRQ~>eEyhyeMo3pzuo9_s$6=ICW9epM7wtd1{+Z^?S;8A zzv^x-^_N?3&h-qwCOi^}UF`5{D7VYsb>bWiTH_26@yIb84{)`>Y*BIrkbCL15DloPxb;4bN_L5O^8)MP3ishmZ&UiL&Iu|1 z6~5a`?>X#8?Nn=Gk&`LC?n8LWH%k($@3}3Xh7I1M#fO%tjqnoMv159T&=wqR+xH9K zC03XuBqR`q8l;53!LX6YiJL8N&r?+nFxf_w6KLA^SRDMKCEf@h1@Q?fus2tLX64w* zFAt)eVR3yd4q0OV2y(Yr0kqS9q5-t$^hWMC_&M`?KcD>7ztw{bb}$bD&V~`;-LtFe z;UmfyPlkg0X#-*hJ@Qq}yj~sk_1+1^uWI~V-7d>iBWmwewpmxEixQb!v^NWi-wW^G zFjiT;s}0uMk}lqjlfPf)Un%q)UXO9B8@yd)tk1L0wtUF3CB`k(qj%1u%nKgViF519 zsITDj;=%HkM81jd1_vS+t5<4&$6Q0p_Y-m)E)UDd=R3}^L957NW`8sHSm+2Z^03qm z9{-i`gFz8xd~X-va8`wCY;fkF_S2q&eEr4nlO{ZU83~D~u5zuDA5uq&sW8;#lt<_r zH*R>-Juh|O*H#6ZeLFRCR(fl0uC_5jgtl(LNw6YtsBNU&?coCK;P^n=FY))gb1CGl zEMo(rhO;M5|eTrMm(68`prof=;G z!B%L?7fd)kT4iFva;VHcCDI8g(w@%q)G1}l>{x-N=o%%LxO%q(?56V9R2cYiW z{g92T4%#NTZL;t$*A?DvdQK)3VQa$b(SzdwqaKCg4THqQ&uke4^`eLDmW-JVWjePd zNpHBskN6|1hjt;S1(|eM5FhJ>Qf!3W-yu=osZ0bll^6cr9IX9R8b}rhxDUok5bDT;fCZ3m({vve0q!S!Dxj7~PHu6TGh(=UZ36lOq%@2>Rh)GFPQKMp#r(0sW zZ?SUrBzTNQhQAeldWc^qQ+Xfi_c|e^P!GBTw=T+VIg@z$nfu!~@6gr+8E+5Ns_o&L zN6%RAX}!DP|KdQKP+Z3mB(zEv#T-a}D{qLs6B>(?wzjxQZ&aR+63_UiV8)em=VU%x zga7w0{|fG}rjy8$@T;jIl4~Y{N(>lnQeZ^ud94Y9b`N^C0ofpcLWMKWWODOsIsS~< zM1q2b7J{yQpI=ujeM<2>bvi5~2bQBRaA3N)xB0Bg3*?tJS=u=(D^Ei7mM`EILiZ&L(zCZ^pqX)p^1*2Hnqi{QF!2)1|T*SF<>NDL5a`C0ux&nVNMb zx+uy;EOmmpbNtSN?FSU<*`yvr-YMqCQ=HK7@US&$&{x}tm(Z8{vHZwWgKHorcBp0# z4*LhBa1^LaKb3sLrSYFW=Ipx-=GTUGFl#)z2dn^ibXoPg_J?>* zyL~fj?Cgd8Y{@o}r&Ai-o?$fNq3=`>skG?zQG<7%Zl?4-TwEdlq?~D9^vd;ku>_m_ zeYL-Tr}Fh5&1~d6s`^^?!l8F1cBZ8Q)AcCjo1e$d)R!6a)&Dv5Zg`=puduFkpdc$Q z;EqVQeGA8LiB8$~D~SHSO(m2u%QcIQ`G!uymBh39mhwW}G&a_61RY2c<>Z0xP>~VhX zzlR-tMGEHdLg0^FM{5lQ2e3w>F~`M>K~4l2j5>xZJW`Z#nR+}Rq#ER6i$mxNV^s6q znc%72?y}rRPL&?AX&TpI-;_h2Y_A$QyUq953E1izVkaD5GRaQ|7oO=;y02|gHGg;W z-4H;Pp^?J$x0p4pfuf$?+mUfOo!TJ7dJtjCq&rivpHN#92+tO~)Pf=2%P7&#;|BLhL7BZJts-7c-;XG)JMk#VWtAG?694J4U0TWGr9$; z-a-WCDv#$Fd^7(3*Ws1G@an8TUdIq@xIi4jB1LPh`5?JVH^vjVcp-Z5@oH^1!!*{e ziZR!bLN#KeNkAB2i_?OeEe&{Uc*Bn!nVuLLaA1{)Jg}AJIbKu9urT9MaMcF8&Nhp& zSA*o3;5rsi>mWS58AgQxITy|9mGPTa}6&E0yi#|aH0d;4nq-EteDfS_gwZ9BB@>ves~ z>pISli<}wBcUYg})KFC&qptF6SW}c_+w}EH4NR)W#7$;7l-|S}ou!zSQ^}Fa5Jjbxb%2HnHYl>!vPy$Q;oOc5z-A`B?@;Ld^c=2eG&0f%U5EnNj+wJXd9{kM$8F=jN}8KI1|8?Q{ec zBILYD(au=O!{^QYc-ASene}1JG7K{FZpduUaOqERfNKk|j7>J8|7h&!I(_w3M*kO! zUJ!L>fRVMop&7hA@F~n(#=2|x<)&S1)-zZD&72Jvv>E(8FlfdHTofetV?*U`iPXUC z;<#1QaO?+=2Zi1V59fy6OMoh=g9K}k4cGIDmlH$Zjd?xwBl=ndc80Q_R-lXH6Z70y zwi=zEh1#fkSV_d|8+q+8{58_bT+E`U#J%PtT9VF z<;36q;(zWrM&_{LiH^9NBV~jeDFZ0|qF9tQg`PV-E`WBYXs!!o>tq}J@Vs>$K_@Tv zDoU=%?1_m&>5RC8=x=tS=JxQ5oj)(fg+pakZYDaVMNWa&9d5)<+iiD!s2jUiIa-Z4 zuT)nL;k)+O`r^9yUe6+BdQY`z`g7&sb*=yrS`dBvAVyx3>t`(#_+q)?sCLI7A74?3 z&zer3QF0p`_yo>!j%Mw4Hy;-B>0~(O&V%-lrU#$krZpifprmOu_UdfjO$Or?33SHZ zMv1gOKh>RNyMr--Fu=UgC^p+LG5Z;hP)z|;eNAbk=B~^Mt)MQDEb)6gZFHoo2lwY_ zjlgVQJSGQ@g{oK3_Q7aolc=;qYEC3vh83uUj~>AVnup^83-MzIGH5Zf7T^Yma7n>cj$ZkAGCeNIJq5`4uz## zXj};whSsrMDm;&mbBnx;#jXzT)-Nt5 z4+m-=q<8kLwljRDl}eat>Sd@&NXOQXj0~}BotJvVi5)+p9Q@joMqADAW7tWnd5frq zg!&rMpF_X1OehyVU{1OTbPaKmdIF^Y(^O%#I(QN0!Q*6H(yfri2F>klr})XBOE8l` zOzBD8_b?R1R?!X}8hgcNy(r;GD9ZG#;bBs3$)CCvw{r&xm%ECS* z0;`~k#1Uk>1}|9jPIwaZlJTzXN8CH#_x*P#rgnA6`}3P}mk-tuBG@@gD)c`yZE#Fu zIE!g2W|`z^lbDn=G~=GcS(u5Ttkur3Zm86rq^vm)m-tMv6jByw=cS~E)<>$YML0)$CdzX<8p-4wj{s9tZpqeoU3G&$c6e`6k(@6 zF})5ydUQf)%0fCk$;Tu(OY5esrGrn{6M{f=$lGB|vHP=SwDCeA=IxvIWdUx&YzZA> zZFP_<=+7>Y!j*3Za{Oqxmqodv|;F#9eOSty6o8n6>~#Pviaz?aCr6 zzU#HUyacVWQ|BJLbKT%SQpOAPkynpEP*#GREyz}MR{y!UHwpK5TJoabyy2{F2z%zh zHJb_T{&xIE$~OSnO5?sMyn?H8eU~-Um~4AQ`spK2l!hR^E-&bk21jrMQmGKHxLZ~ICwscKifgM#0k`&)^BOZSM|;2BMdxJ<@&hMxE1Jxu+L!q zsn9Stf)R32QG*3j)w~dX4Lgki#fQM3s*s}rFUz273nKa=k% zRK6PPzScY|ANi6$Vs;~;Vd%xhuG|QrHjDXOeZDe|h^?jwy(YrihS;3R!NxD$NdNRF zeds_crnO?6(drU9fbT*!>vk94|AD*f-hRbpura^r&#hSD$c*?{0o${!(_7R#@A`|k zzsR1N_>oQRiu=9Ih%&+}pab%)eFUP}l( zr*P9_ZNKC{MHkYROhdjN5{a%L4OqlB%nGIV+TmOjm8&_Vb)a7ZkF?srd}f6WaZxU) zKmsa<1r5@f4gVyhfT}EWO`?UFv4gaCcTs+fqikZ%f9^L?_>PT{4-aK2Bys80e-PXp z3tx9mb{g+ibHEK>DZ`jN>UNH&J#yA=`4Z|tCU9PzeF_uGux1>kAFxVxKM1AzyurOv zs205K%g&MU5jtoIQ5Ar_cqE#_on=AkHk zhiqEdA&&^&bp8Wvb6ur<`*wHGYy%>xLXYc^rw4D}+xt2igOLp>?;K-Tsk>J)8zLF) zyN*^JE882-$C(|9qZro~25xij%$HZ&B8rEOLwxVhOG@Mm`G>ld9406o9T0p0ZcGH2 zpk!{toGDldiZMHoc)?Cy04sh*E!92eZLhFJcV+rQC9=uIj_jiYweQt$VRTgD8mGIP zCaWQDCULOi;;E$VLCFwasA%5X65mH1m$j#rtwR+kYwxwxwxGWJ-@8a=q+e4u&p)0Y zy?$wunCpam&U(HzyO+IMn#;7JdtYjI>>#=OE42MjsM-EWZ@0;Ny0wAk2A3u~Ws%7r zH10lo8~mw3giX=&V>11b%~U(mZy64y@TZ5|yL5Ye2lK%7-I@D`k*e#?dqdR-x)|^vp18B@LwF6O z#~0VIJ=Ok@%X?LG_YieR_yt~-+pw%YGkU0o{Z(cC$b%)&mh{r(h%Ko&fdE4pXot_`Ny*5p!Rk^#0j7;qM9fe8~I!U>x`ib zYq8>K)jCHn<}cRAnuwLM$6hzBAg}a?ldogQX&?0xfv#P;^9pZ}%=hIbYOGCW8yprVZ>cof4+5yXE zjrR7-%evJZzggW7?6X!2?#a_imOYY)z+SI45x@`W)rv`~PD$Dz$o=M-!0jG=+E`j6 z@=C)FBX*_hqw~?XZx1zn%iBG?v%ddXPHD_{XFA7MCnq)?H+r5FwbH_x0O}wbP_l^E zP;OS|Zmex!31k})0G}+Y2Aert1Wnp#BJ)@lw1xia-Q?C`13hxrw_q-HF8|f#QE|PP zvC-t(`tl2l@%3L8oQnem6vzB2GW!6Mb>*g#w;wX8h%>#=L@@Jn(U)hmx&vDSun=OE zn%;%!nYN!c5I5Dj<7o1A+`G;Akda@{gjdxNIjlg)A5G(@=T$csJqS{$HTLw*Nl8SQ zpaB2wv_Fz?`$Juw$Vi;lVm!m{BQA44&~5zZ@4#}^Z}R?}&$+ZIcOg};HPF0H!?NOUdnvi;EoK#DITcRRr*d9D~%mH0(byyQ!q4^d8IG zc$jRnJ}-14WN-NO)Ww5OLD+Me7x^>nyF@R0#4L&4{Nb)9KD#PWLME-)1u@$R^Iy81 zLU{S|rF7e15j+B{`unKv{Jq+F>EP3@{pcoKwr}|fHyGxi|m`FC08*GMSyGHzA*Bu)5?S2 zs)P0)b(FNJcMb}C1`)Qn{g!bskAOT%KW!5O#TJYinwiS)K)D>>AZAb`S-hxp(Mw-yA`SL-{*a)f3o29 z^VKmySb(&62t(CftL(j?kxC8?W?NQJE`3!^~4#sMmjR-GOdr zwY{f7Ny?dzg4lb<#HDQ@8%Hoz9*6<@iIb&2*=jG{xpYqA*h?NBG4cGwj?KEwe%=HD zoz4Y6lCKg%V`t^HKv*WZdo6>mKNDW`nN@B?_5kQ2vG!Dyj!sx_py*hQKMzw*Zxj9-{#A% zv7B6;EY(5m-g#iMpol|2tJMn4b%ik9C?L?B$=~ocoF~P_F&bZLIe<&cIMd*cRf@5emiLFV zu{O_qhOj1IKRGC;D^Pco)`w6FvXCw#E_Y0zLOLzT<;F)r<-7W5H&B zEVJ(M#wQ8fg!FQ2t3ii{`4ZlMvi0CH;UPBc8iHU&vL-}LFhv%lD&Vn<%ABGWMl63w zd(y?gI*)*WiZjm4Rxb3^^1C)jYalPbbRzI3=J&JTUu!%7xuxGZ(rp!A%1t>Mkm-h{2e;3IWkR#2x_gvOb5+bF*=nQGRC2``sB z7*Hd!Q~}B6OgY^eC~@a1WPu-0;RXI+&OhDX#4&0cVKQ~A$?-sj3&O^-^Sim|p-iF7 z%>w7kgj_GTBUR~?iU*CsH<{qj{g{NWOt-}b;vv7ej`3|TyY#WVlo;Sfl3e41`gLh! zMf;j?9Ty^`AV;3p5)SwJJ?ML+;wGm>?>|;h(V%n?xIHux7R9*35W^d@427ATVjeqM`Co^p_}4oetFLT&RpP%Jps{{lrG84+~fv*!uQjx pz@Co~I}7~v5n(L<+u`@@UD&OUc#bTE=)V=9>w3ml3UwU9{tLOknNR=# diff --git a/paradise.dme b/paradise.dme index 641a34617f1..5686226b3c6 100644 --- a/paradise.dme +++ b/paradise.dme @@ -71,6 +71,7 @@ #include "code\_globalvars\lists\mobs.dm" #include "code\_globalvars\lists\names.dm" #include "code\_globalvars\lists\objects.dm" +#include "code\_globalvars\lists\reagents.dm" #include "code\_hooks\area.dm" #include "code\_hooks\hooks.dm" #include "code\_hooks\mob.dm" From de930c24ba2cc59f96d5fe65af4535a5783b31eb Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 5 Oct 2015 01:10:39 +0200 Subject: [PATCH 09/22] Admin panel client fix, goon DNA fix --- code/game/dna/genes/goon_disabilities.dm | 9 +++++---- code/modules/admin/admin.dm | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm index 450973dc6a7..14e25c4ef69 100644 --- a/code/game/dna/genes/goon_disabilities.dm +++ b/code/game/dna/genes/goon_disabilities.dm @@ -36,11 +36,12 @@ ..() block=RADBLOCK - OnMobLife(var/mob/owner) - owner.radiation = max(owner.radiation, 20) + OnMobLife(var/mob/living/owner) + owner.apply_effect(max(owner.radiation, 20), IRRADIATE) for(var/mob/living/L in range(1, owner)) - if(L == owner) continue - L << "\red You are enveloped by a soft green glow emanating from [owner]." + if(L == owner) + continue + L << "You are enveloped by a soft green glow emanating from [owner]." L.apply_effect(5, IRRADIATE) return diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 721fd897214..d9654140cdf 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -56,9 +56,9 @@ var/global/nologevent = 0 body += "[admin_jump_link(M, src)]\]
" body += "Mob type: [M.type]
" - if(M.client.related_accounts_cid.len) + if(M.client && M.client.related_accounts_cid.len) body += "Related accounts by CID: [list2text(M.client.related_accounts_cid, " - ")]
" - if(M.client.related_accounts_ip.len) + if(M.client && M.client.related_accounts_ip.len) body += "Related accounts by IP: [list2text(M.client.related_accounts_ip, " - ")]

" body += "
Kick | " From 76db6db28a49e02bbf7f38b0263bc346c333660d Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 5 Oct 2015 01:12:01 +0200 Subject: [PATCH 10/22] Better handling --- code/modules/admin/admin.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index d9654140cdf..b6cc60c82ed 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -56,10 +56,11 @@ var/global/nologevent = 0 body += "[admin_jump_link(M, src)]\]

" body += "Mob type: [M.type]
" - if(M.client && M.client.related_accounts_cid.len) - body += "Related accounts by CID: [list2text(M.client.related_accounts_cid, " - ")]
" - if(M.client && M.client.related_accounts_ip.len) - body += "Related accounts by IP: [list2text(M.client.related_accounts_ip, " - ")]

" + if(M.client) + if(M.client.related_accounts_cid.len) + body += "Related accounts by CID: [list2text(M.client.related_accounts_cid, " - ")]
" + if(M.client.related_accounts_ip.len) + body += "Related accounts by IP: [list2text(M.client.related_accounts_ip, " - ")]

" body += "Kick | " body += "Warn | " From ad0329a1fda82ebf6a6ec9d3dfed2c214e5bfa39 Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 5 Oct 2015 03:37:06 +0200 Subject: [PATCH 11/22] Add fingerprint to pipe construction --- code/ATMOSPHERICS/atmospherics.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index a7fe9ddd537..3f287964e02 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -214,6 +214,7 @@ Pipelines + Other Objects -> Pipe network initialize_directions = P var/turf/T = loc level = T.intact ? 2 : 1 + add_fingerprint(usr) initialize() var/list/nodes = pipeline_expansion() for(var/obj/machinery/atmospherics/A in nodes) From 1349a52b10094f6e685b5a29589be8d0f09be1da Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 5 Oct 2015 05:39:22 -0400 Subject: [PATCH 12/22] APC Cell GC Fix --- code/modules/power/apc.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 05e5bbbe73b..41e294eba58 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -160,6 +160,7 @@ wires = null if(cell) qdel(cell) // qdel + cell = null if(terminal) disconnect_terminal() return ..() From 9a6b5c274940aab3bd8441c1365c4fc8a8f5b9a4 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Mon, 5 Oct 2015 08:28:52 -0700 Subject: [PATCH 13/22] Upgrade radios to NanoUI Things changed: - All radios now use nanoUI - Syndicate mode for any radios with syndicate access! - Electropacks also upgraded, since they are technically radios - Fancy as a motherfucker --- code/datums/wires/radio.dm | 5 - .../items/devices/radio/electropack.dm | 91 ++++-------- .../game/objects/items/devices/radio/radio.dm | 137 ++++++++++-------- code/modules/nano/interaction/default.dm | 2 + nano/templates/radio_basic.tmpl | 89 ++++++++++++ nano/templates/radio_electro.tmpl | 37 +++++ 6 files changed, 236 insertions(+), 125 deletions(-) create mode 100644 nano/templates/radio_basic.tmpl create mode 100644 nano/templates/radio_electro.tmpl diff --git a/code/datums/wires/radio.dm b/code/datums/wires/radio.dm index 9da8890ac32..6c2fb9713da 100644 --- a/code/datums/wires/radio.dm +++ b/code/datums/wires/radio.dm @@ -12,11 +12,6 @@ var/const/WIRE_TRANSMIT = 4 return 1 return 0 -/datum/wires/radio/Interact(var/mob/living/user) - if(CanUse(user)) - var/obj/item/device/radio/R = holder - R.interact(user) - /datum/wires/radio/UpdatePulsed(var/index) var/obj/item/device/radio/R = holder switch(index) diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 56d6fbbdafd..b6ea20e9954 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -10,11 +10,13 @@ materials = list(MAT_METAL=10000, MAT_GLASS=2500) var/code = 2 + is_special = 1 + /obj/item/device/radio/electropack/attack_hand(mob/user as mob) if(src == user.back) user << "You need help taking this off!" - return - ..() + return 0 + . = ..() /obj/item/device/radio/electropack/Destroy() if(istype(src.loc, /obj/item/assembly/shock_kit)) @@ -53,42 +55,22 @@ A.flags |= NODROP /obj/item/device/radio/electropack/Topic(href, href_list) - //..() - if(usr.stat || usr.restrained()) - return - if(((istype(usr, /mob/living/carbon/human) && ((!( ticker ) || (ticker && ticker.mode != "monkey")) && usr.contents.Find(src))) || (usr.contents.Find(master) || (in_range(src, usr) && istype(loc, /turf))))) - usr.set_machine(src) - if(href_list["freq"]) - var/new_frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) - set_frequency(new_frequency) - else - if(href_list["code"]) - code += text2num(href_list["code"]) - code = round(code) - code = min(100, code) - code = max(1, code) - else - if(href_list["power"]) - on = !( on ) - icon_state = "electropack[on]" - if(!( master )) - if(istype(loc, /mob)) - attack_self(loc) - else - for(var/mob/M in viewers(1, src)) - if(M.client) - attack_self(M) - else - if(istype(master.loc, /mob)) - attack_self(master.loc) - else - for(var/mob/M in viewers(1, master)) - if(M.client) - attack_self(M) - else - usr << browse(null, "window=radio") - return - return + if(..()) + return 1 + + if(href_list["freq"]) + var/new_frequency = sanitize_frequency(frequency + text2num(href_list["freq"])) + set_frequency(new_frequency) + + else if(href_list["code"]) + code += text2num(href_list["code"]) + code = round(code) + code = Clamp(code, 1, 100) + + else if(href_list["power"]) + on = !on + + add_fingerprint(usr) /obj/item/device/radio/electropack/receive_signal(datum/signal/signal) if(!signal || signal.encryption != code) @@ -115,26 +97,17 @@ master.receive_signal() return -/obj/item/device/radio/electropack/attack_self(mob/user as mob, flag1) - if(!istype(user, /mob/living/carbon/human)) - return - user.set_machine(src) - var/dat = {" -Turn [on ? "Off" : "On"]
-Frequency/Code for electropack:
-Frequency: -- -- [format_frequency(frequency)] -+ -+
+/obj/item/device/radio/electropack/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] -Code: -- -- [code] -+ -+
-
"} - user << browse(dat, "window=radio") - onclose(user, "radio") - return + data["power"] = on + data["freq"] = format_frequency(frequency) + data["code"] = code + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "radio_electro.tmpl", "[name]", 550, 500) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 4aa8f8b73f0..8b340f518a2 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -38,6 +38,9 @@ var/global/list/default_medbay_channels = list( var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h var/subspace_transmission = 0 var/syndie = 0//Holder to see if it's a syndicate encrpyed radio + + var/is_special = 0 //For electropacks mostly, skips Topic() checks + flags = CONDUCT slot_flags = SLOT_BELT throw_speed = 2 @@ -89,59 +92,68 @@ var/global/list/default_medbay_channels = list( secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT) /obj/item/device/radio/attack_ghost(mob/user) - interact(user) + return ui_interact(user) /obj/item/device/radio/attack_self(mob/user as mob) user.set_machine(src) interact(user) -/obj/item/device/radio/interact(mob/user as mob) - if(!on) - return +/obj/item/device/radio/interact(mob/user) + if(!user) + return 0 - if(active_uplink_check(user)) - return + if(b_stat) + wires.Interact(user) - var/dat = "[src]" + return ui_interact(user) - if(!istype(src, /obj/item/device/radio/headset)) //Headsets dont get a mic button - dat += "Microphone: [broadcasting ? "Engaged" : "Disengaged"]
" +/obj/item/device/radio/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] - dat += {" - Speaker: [listening ? "Engaged" : "Disengaged"]
- Frequency: - - - - - [format_frequency(frequency)] - + - +
- "} + data["mic_status"] = broadcasting + data["speaker"] = listening + data["freq"] = format_frequency(frequency) + data["rawfreq"] = num2text(frequency) - dat+=list_channels(user) + data["mic_cut"] = (wires.IsIndexCut(WIRE_TRANSMIT) || wires.IsIndexCut(WIRE_SIGNAL)) + data["spk_cut"] = (wires.IsIndexCut(WIRE_RECEIVE) || wires.IsIndexCut(WIRE_SIGNAL)) - dat+={"[text_wires()]
"} - user << browse(dat, "window=radio") - onclose(user, "radio") - return + var/list/chanlist = list_channels(user) + if(islist(chanlist) && chanlist.len) + data["chan_list"] = chanlist + data["chan_list_len"] = chanlist.len + + if(syndie) + data["useSyndMode"] = 1 + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "radio_basic.tmpl", "[name]", 550, 500) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) /obj/item/device/radio/proc/list_channels(var/mob/user) return list_internal_channels(user) /obj/item/device/radio/proc/list_secure_channels(var/mob/user) - var/dat = "" - for (var/ch_name in channels) - dat+=text_sec_channel(ch_name, channels[ch_name]) + var/dat[0] + + for(var/ch_name in channels) + var/chan_stat = channels[ch_name] + var/listening = !!(chan_stat & FREQ_LISTENING) != 0 + + dat.Add(list(list("chan" = ch_name, "display_name" = ch_name, "secure_channel" = 1, "sec_channel_listen" = !listening))) + return dat /obj/item/device/radio/proc/list_internal_channels(var/mob/user) - var/dat = "" - for (var/internal_chan in internal_channels) + var/dat[0] + for(var/internal_chan in internal_channels) if(has_channel_access(user, internal_chan)) - dat+="[get_frequency_name(text2num(internal_chan))]
" + dat.Add(list(list("chan" = internal_chan, "display_name" = get_frequency_name(text2num(internal_chan))))) - if(dat) - dat = "
Internal Channels
" + dat return dat /obj/item/device/radio/proc/has_channel_access(var/mob/user, var/freq) @@ -169,13 +181,6 @@ var/global/list/default_medbay_channels = list( return wires.GetInteractWindow() return -/obj/item/device/radio/proc/text_sec_channel(var/chan_name, var/chan_stat) - var/list = !!(chan_stat&FREQ_LISTENING)!=0 - return {" - [chan_name]
- Speaker: [list ? "Engaged" : "Disengaged"]
- "} - /obj/item/device/radio/proc/ToggleBroadcast() broadcasting = !broadcasting && !(wires.IsIndexCut(WIRE_TRANSMIT) || wires.IsIndexCut(WIRE_SIGNAL)) @@ -186,6 +191,9 @@ var/global/list/default_medbay_channels = list( if(..()) return 1 + if(is_special) + return 0 + if (href_list["track"]) var/mob/target = locate(href_list["track"]) var/mob/living/silicon/ai/A = locate(href_list["track2"]) @@ -205,7 +213,7 @@ var/global/list/default_medbay_channels = list( else if (href_list["talk"]) ToggleBroadcast() . = 1 - else if (href_list["listen"]) + else if(href_list["listen"]) var/chan_name = href_list["ch_name"] if (!chan_name) ToggleReception() @@ -220,11 +228,10 @@ var/global/list/default_medbay_channels = list( if(has_channel_access(usr, freq)) set_frequency(text2num(freq)) . = 1 + if(href_list["nowindow"]) // here for pAIs, maybe others will want it, idk return 1 - if(.) - interact(usr) add_fingerprint(usr) /obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/zlevel = config.contact_levels) //BS12 EDIT @@ -703,32 +710,40 @@ var/global/list/default_medbay_channels = list( usr << "Loudspeaker enabled." . = 1 - if(.) - interact(usr) /obj/item/device/radio/borg/interact(mob/user as mob) if(!on) return - var/dat = "[src]" - dat += {" - Speaker: [listening ? "Engaged" : "Disengaged"]
- Frequency: - - - - - [format_frequency(frequency)] - + - +
- Broadcasting: [subspace_transmission ? "Disable" : "Enable"]
- Loudspeaker: [shut_up ? "Enable" : "Disable"]
- "} + . = ..() - if(subspace_transmission)//Don't even bother if subspace isn't turned on - dat+=list_channels(user) - dat+={"[text_wires()]
"} - user << browse(dat, "window=radio") - onclose(user, "radio") - return +/obj/item/device/radio/borg/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] + + data["mic_status"] = broadcasting + data["speaker"] = listening + data["freq"] = format_frequency(frequency) + data["rawfreq"] = num2text(frequency) + + var/list/chanlist = list_channels(user) + if(islist(chanlist) && chanlist.len) + data["chan_list"] = chanlist + data["chan_list_len"] = chanlist.len + + if(syndie) + data["useSyndMode"] = 1 + + data["has_loudspeaker"] = 1 + data["loudspeaker"] = !shut_up + data["has_subspace"] = 1 + data["subspace"] = subspace_transmission + + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "radio_basic.tmpl", "[name]", 550, 500) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) /obj/item/device/radio/proc/config(op) if(radio_controller) diff --git a/code/modules/nano/interaction/default.dm b/code/modules/nano/interaction/default.dm index ae999cbcf03..7cc91a13009 100644 --- a/code/modules/nano/interaction/default.dm +++ b/code/modules/nano/interaction/default.dm @@ -43,6 +43,8 @@ var/obj/machinery/Machine = src_object if(Machine.emagged) return STATUS_INTERACTIVE + if(istype(src_object, /obj/item/device/radio/borg/syndicate)) //Not ideal, but they can't access their own radio otherwise. + return STATUS_INTERACTIVE return STATUS_UPDATE /mob/living/silicon/ai/default_can_use_topic(var/src_object) diff --git a/nano/templates/radio_basic.tmpl b/nano/templates/radio_basic.tmpl new file mode 100644 index 00000000000..9aaad8cb489 --- /dev/null +++ b/nano/templates/radio_basic.tmpl @@ -0,0 +1,89 @@ + +{{if data.useSyndMode}} + {{:helper.syndicateMode()}} +{{/if}} + +

+
+ Microphone +
+
+ {{if data.mic_cut}} + {{:helper.link('On', null, null, 'disabled')}} + {{:helper.link('Off', null, null, 'disabled')}} + {{else}} + {{:helper.link('On', null, {'talk' : 0}, data.mic_status ? 'selected' : null)}} + {{:helper.link('Off', null, {'talk' : 1}, data.mic_status ? null : 'selected')}} + {{/if}} +
+
+ +
+
+ Speaker +
+
+ {{if data.spk_cut}} + {{:helper.link('On', null, null, 'disabled')}} + {{:helper.link('Off', null, null, 'disabled')}} + {{else}} + {{:helper.link('On', null, {'listen' : 0}, data.speaker ? 'selected' : null)}} + {{:helper.link('Off', null, {'listen' : 1}, data.speaker ? null : 'selected')}} + {{/if}} +
+
+ +{{if data.has_subspace}} +
+ Subspace Transmission: +
+
+ {{:helper.link('On', null, {'mode' : 1}, data.subspace ? 'selected' : null)}} + {{:helper.link('Off', null, {'mode' : 0}, data.subspace ? null : 'selected')}} +
+{{/if}} + +{{if data.has_loudspeaker}} +
+ Loudspeaker: +
+
+ {{:helper.link('On', null, {'shutup' : 0}, data.loudspeaker ? 'selected' : null)}} + {{:helper.link('Off', null, {'shutup' : 1}, data.loudspeaker ? null : 'selected')}} +
+{{/if}} + +
+
+ Frequency: {{:data.freq}} +
+
+ {{:helper.link('--', null, {'freq' : -10})}} + {{:helper.link('-', null, {'freq' : -2})}} + {{:helper.link('+', null, {'freq' : 2})}} + {{:helper.link('++', null, {'freq' : 10})}} +
+
+ +{{if data.chan_list_len >= 1}} +

Channels

+
+ {{for data.chan_list}} +
+ {{:value.display_name}} +
+
+ {{if value.secure_channel}} + Speaker:  + {{:helper.link('On', null, {'ch_name' : value.chan, 'listen' : value.sec_channel_listen}, value.sec_channel_listen ? null : 'selected')}} + {{:helper.link('Off', null, {'ch_name' : value.chan, 'listen' : value.sec_channel_listen}, value.sec_channel_listen ? 'selected' : null)}} + {{else}} + {{:helper.link('Switch', null, {'spec_freq' : value.chan}, data.rawfreq == value.chan ? 'selected' : null)}} + {{/if}} +
+ {{/for}} +
+{{/if}} \ No newline at end of file diff --git a/nano/templates/radio_electro.tmpl b/nano/templates/radio_electro.tmpl new file mode 100644 index 00000000000..9fb8183ad01 --- /dev/null +++ b/nano/templates/radio_electro.tmpl @@ -0,0 +1,37 @@ + +
+
+ Power +
+
+ {{:helper.link('On', null, {'power' : 1}, data.power ? 'selected' : null)}} + {{:helper.link('Off', null, {'power' : 1}, data.power ? null : 'selected')}} +
+
+ +
+
+ Frequency: {{:data.freq}} +
+
+ {{:helper.link('--', null, {'freq' : -10})}} + {{:helper.link('-', null, {'freq' : -2})}} + {{:helper.link('+', null, {'freq' : 2})}} + {{:helper.link('++', null, {'freq' : 10})}} +
+
+ +
+
+ Code: {{:data.code}} +
+
+ {{:helper.link('--', null, {'code' : -5})}} + {{:helper.link('-', null, {'code' : -1})}} + {{:helper.link('+', null, {'code' : 1})}} + {{:helper.link('++', null, {'code' : 5})}} +
+
\ No newline at end of file From ec747b9f04bf1d90542746fdba4d5f929035dfb5 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Mon, 5 Oct 2015 09:31:11 -0700 Subject: [PATCH 14/22] Size tweaks, less snowflakey syndieborg radio --- code/game/objects/items/devices/radio/electropack.dm | 2 +- code/game/objects/items/devices/radio/radio.dm | 9 +++++++-- code/modules/nano/interaction/default.dm | 2 -- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index b6ea20e9954..aea107885f7 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -107,7 +107,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) - ui = new(user, src, ui_key, "radio_electro.tmpl", "[name]", 550, 500) + ui = new(user, src, ui_key, "radio_electro.tmpl", "[name]", 400, 500) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) \ No newline at end of file diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 8b340f518a2..1ef94fde8d2 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -128,7 +128,7 @@ var/global/list/default_medbay_channels = list( ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) - ui = new(user, src, ui_key, "radio_basic.tmpl", "[name]", 550, 500) + ui = new(user, src, ui_key, "radio_basic.tmpl", "[name]", 400, 550) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) @@ -583,6 +583,11 @@ var/global/list/default_medbay_channels = list( syndie = 1 keyslot = new /obj/item/device/encryptionkey/syndicate +/obj/item/device/radio/borg/syndicate/CanUseTopic(mob/user, datum/topic_state/state) + . = ..() + if(. == STATUS_UPDATE && istype(user, /mob/living/silicon/robot/syndicate)) + . = STATUS_INTERACTIVE + /obj/item/device/radio/borg/Destroy() myborg = null return ..() @@ -740,7 +745,7 @@ var/global/list/default_medbay_channels = list( ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) - ui = new(user, src, ui_key, "radio_basic.tmpl", "[name]", 550, 500) + ui = new(user, src, ui_key, "radio_basic.tmpl", "[name]", 430, 500) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) diff --git a/code/modules/nano/interaction/default.dm b/code/modules/nano/interaction/default.dm index 7cc91a13009..ae999cbcf03 100644 --- a/code/modules/nano/interaction/default.dm +++ b/code/modules/nano/interaction/default.dm @@ -43,8 +43,6 @@ var/obj/machinery/Machine = src_object if(Machine.emagged) return STATUS_INTERACTIVE - if(istype(src_object, /obj/item/device/radio/borg/syndicate)) //Not ideal, but they can't access their own radio otherwise. - return STATUS_INTERACTIVE return STATUS_UPDATE /mob/living/silicon/ai/default_can_use_topic(var/src_object) From fdc35785827279ac55d60ef6da0bc29f6228a694 Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 5 Oct 2015 19:25:05 +0200 Subject: [PATCH 15/22] Turn poll magic strings into defines --- code/__DEFINES/misc.dm | 7 ++++++- code/modules/admin/create_poll.dm | 14 +++++++------- code/modules/mob/new_player/poll.dm | 14 +++++++------- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index ced91ac0287..1a63456c728 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -163,4 +163,9 @@ #define MAT_BANANIUM "$bananium" #define MAX_STACK_SIZE 50 -//The maximum size of a stack object. \ No newline at end of file + +//unmagic-strings for types of polls +#define POLLTYPE_OPTION "OPTION" +#define POLLTYPE_TEXT "TEXT" +#define POLLTYPE_RATING "NUMVAL" +#define POLLTYPE_MULTI "MULTICHOICE" \ No newline at end of file diff --git a/code/modules/admin/create_poll.dm b/code/modules/admin/create_poll.dm index 78caa924b35..6e690b469ac 100644 --- a/code/modules/admin/create_poll.dm +++ b/code/modules/admin/create_poll.dm @@ -40,13 +40,13 @@ var/choice_amount = 0 switch(polltype) if("Single Option") - polltype = "OPTION" + polltype = POLLTYPE_OPTION if("Text Reply") - polltype = "TEXT" + polltype = POLLTYPE_TEXT if("Rating") - polltype = "NUMVAL" + polltype = POLLTYPE_RATING if("Multiple Choice") - polltype = "MULTICHOICE" + polltype = POLLTYPE_MULTI choice_amount = input("How many choices should be allowed?","Select choice amount") as num|null if(!choice_amount) return @@ -93,7 +93,7 @@ var/err = query_polladd_question.ErrorMsg() log_game("SQL ERROR adding new poll question to table. Error : \[[err]\]\n") return - if(polltype == "TEXT") + if(polltype == POLLTYPE_TEXT) log_admin("[key_name(usr)] has created a new server poll. Poll type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"] - Question: [question]") message_admins("[key_name_admin(usr)] has created a new server poll. Poll type: [polltype] - Admin Only: [adminonly ? "Yes" : "No"]
Question: [question]") return @@ -107,7 +107,7 @@ pollid = query_get_id.item[1] var/add_option = 1 while(add_option) - var/option = input("Write your option","Option") as message|null + var/option = input("Write your option",POLLTYPE_OPTION) as message|null if(!option) return pollid option = sanitizeSQL(option) @@ -124,7 +124,7 @@ var/descmin = "" var/descmid = "" var/descmax = "" - if(polltype == "NUMVAL") + if(polltype == POLLTYPE_RATING) minval = input("Set minimum rating value.","Minimum rating") as num|null if(!minval) return pollid diff --git a/code/modules/mob/new_player/poll.dm b/code/modules/mob/new_player/poll.dm index 7be517eb2d9..d9e240936d7 100644 --- a/code/modules/mob/new_player/poll.dm +++ b/code/modules/mob/new_player/poll.dm @@ -64,7 +64,7 @@ switch(polltype) //Polls that have enumerated options - if("OPTION") + if(POLLTYPE_OPTION) var/DBQuery/voted_query = dbcon.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[usr.ckey]'") voted_query.Execute() @@ -117,7 +117,7 @@ src << browse(output,"window=playerpoll;size=500x250") //Polls with a text input - if("TEXT") + if(POLLTYPE_TEXT) var/DBQuery/voted_query = dbcon.NewQuery("SELECT replytext FROM [format_table_name("poll_textreply")] WHERE pollid = [pollid] AND ckey = '[usr.ckey]'") voted_query.Execute() @@ -159,7 +159,7 @@ src << browse(output,"window=playerpoll;size=500x500") //Polls with a text input - if("NUMVAL") + if(POLLTYPE_RATING) var/DBQuery/voted_query = dbcon.NewQuery("SELECT o.text, v.rating FROM [format_table_name("poll_option")] o, erro_poll_vote v WHERE o.pollid = [pollid] AND v.ckey = '[usr.ckey]' AND o.id = v.optionid") voted_query.Execute() @@ -228,7 +228,7 @@ output += "" src << browse(output,"window=playerpoll;size=500x500") - if("MULTICHOICE") + if(POLLTYPE_MULTI) var/DBQuery/voted_query = dbcon.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[usr.ckey]'") voted_query.Execute() @@ -308,7 +308,7 @@ var/multiplechoiceoptions = 0 while(select_query.NextRow()) - if(select_query.item[4] != "OPTION" && select_query.item[4] != "MULTICHOICE") + if(select_query.item[4] != POLLTYPE_OPTION && select_query.item[4] != POLLTYPE_MULTI) return validpoll = 1 if(select_query.item[5]) @@ -377,7 +377,7 @@ var/validpoll = 0 while(select_query.NextRow()) - if(select_query.item[4] != "TEXT") + if(select_query.item[4] != POLLTYPE_TEXT) return validpoll = 1 break @@ -435,7 +435,7 @@ var/validpoll = 0 while(select_query.NextRow()) - if(select_query.item[4] != "NUMVAL") + if(select_query.item[4] != POLLTYPE_RATING) return validpoll = 1 break From f9adb09c72faee2ea054bf5a95129523c28f9594 Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 5 Oct 2015 19:37:35 +0200 Subject: [PATCH 16/22] Drone message fix, let robots unbuckle --- code/game/machinery/alarm.dm | 3 --- code/game/objects/buckling.dm | 5 +++++ code/modules/economy/POS.dm | 5 ----- code/modules/mob/living/silicon/robot/drone/drone.dm | 4 ++-- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 86d7b5ac00d..8cbe56b2d3b 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -607,9 +607,6 @@ src.add_hiddenprint(user) return ui_interact(user) -/obj/machinery/alarm/attack_robot(mob/user) - return attack_ai(user) - /obj/machinery/alarm/attack_ghost(user as mob) if(stat & (BROKEN|MAINT)) return diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 14f9f42ec06..a4e9739868d 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -12,6 +12,11 @@ . = ..() if(can_buckle && buckled_mob) return user_unbuckle_mob(user) + +/atom/movable/attack_robot(mob/living/user) + . = ..() + if(can_buckle && buckled_mob && Adjacent(user)) // attack_robot is called on all ranges, so the Adjacent check is needed + return user_unbuckle_mob(user) /atom/movable/MouseDrop_T(mob/living/M, mob/living/user) . = ..() diff --git a/code/modules/economy/POS.dm b/code/modules/economy/POS.dm index 7b1c885ff10..5a107e8f11a 100644 --- a/code/modules/economy/POS.dm +++ b/code/modules/economy/POS.dm @@ -361,11 +361,6 @@ var/const/POS_HEADER = {" else overlays += "pos-standby" -/obj/machinery/pos/attack_robot(var/mob/user) -// if(isMoMMI(user)) -// return attack_hand(user) - return ..() - /obj/machinery/pos/attack_hand(var/mob/user) user.set_machine(src) var/logindata="" diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index ba419f16b5c..cbc449410fc 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -284,9 +284,9 @@ src << "
You are a maintenance drone, a tiny-brained robotic repair machine." src << "You have no individual will, no personality, and no drives or urges other than your laws." src << "Use ; to talk to other drones, and say to speak silently to your nearby fellows." - src << "Remember, you are lawed against interference with the crew. Also remember, you DO NOT take orders from the AI." + src << "Remember, you are lawed against interference with the crew. Also remember, you DO NOT take orders from the AI." src << "Don't invade their worksites, don't steal their resources, don't tell them about the changeling in the toilets." - src << "If a crewmember has noticed you, you are probably breaking your first law." + src << "Make sure crew members do not notice you.." /* sprite["Default"] = "repairbot" From bff7a9a80cf104690657ab7797265221f25f3b1f Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 5 Oct 2015 19:55:14 +0200 Subject: [PATCH 17/22] Replace _color with item_color --- .../gamemodes/shadowling/shadowling_items.dm | 2 +- code/game/machinery/atmoalter/canister.dm | 52 ++--- .../machinery/computer/HolodeckControl.dm | 8 +- code/game/machinery/suit_storage_unit.dm | 12 +- code/game/machinery/washing_machine.dm | 28 +-- .../effects/decals/Cleanable/tracks.dm | 4 +- code/game/objects/items.dm | 2 +- .../objects/items/weapons/implants/implant.dm | 2 +- .../items/weapons/implants/implantcase.dm | 2 +- .../items/weapons/implants/implantfreedom.dm | 2 +- .../objects/items/weapons/melee/energy.dm | 24 +-- code/game/objects/structures/bedsheet_bin.dm | 48 ++--- code/modules/admin/topic.dm | 2 +- code/modules/clothing/clothing.dm | 6 +- code/modules/clothing/gloves/color.dm | 46 ++--- code/modules/clothing/gloves/miscellaneous.dm | 4 +- code/modules/clothing/head/hardhat.dm | 16 +- code/modules/clothing/head/misc_special.dm | 4 +- code/modules/clothing/head/soft_caps.dm | 32 +-- code/modules/clothing/shoes/colour.dm | 36 ++-- code/modules/clothing/shoes/miscellaneous.dm | 12 +- code/modules/clothing/spacesuits/alien.dm | 20 +- code/modules/clothing/spacesuits/ert.dm | 10 +- code/modules/clothing/spacesuits/rig.dm | 26 +-- code/modules/clothing/suits/miscellaneous.dm | 16 +- .../clothing/under/accessories/accessory.dm | 56 +++--- .../clothing/under/accessories/armband.dm | 14 +- .../clothing/under/accessories/holster.dm | 6 +- .../clothing/under/accessories/storage.dm | 10 +- code/modules/clothing/under/chameleon.dm | 8 +- code/modules/clothing/under/color.dm | 54 ++--- code/modules/clothing/under/jobs/civilian.dm | 48 ++--- .../clothing/under/jobs/engineering.dm | 10 +- code/modules/clothing/under/jobs/medsci.dm | 42 ++-- code/modules/clothing/under/jobs/security.dm | 28 +-- code/modules/clothing/under/miscellaneous.dm | 188 +++++++++--------- code/modules/clothing/under/pants.dm | 28 +-- code/modules/clothing/under/shorts.dm | 10 +- code/modules/clothing/under/syndicate.dm | 4 +- code/modules/customitems/item_defines.dm | 18 +- code/modules/mob/living/carbon/human/npcs.dm | 2 +- .../mob/living/carbon/human/species/golem.dm | 4 +- .../mob/living/carbon/human/update_icons.dm | 4 +- .../mob/living/carbon/metroid/metroid.dm | 36 ++-- .../simple_animal/friendly/farm_animals.dm | 12 +- .../living/simple_animal/friendly/mouse.dm | 28 +-- code/modules/paperwork/stamps.dm | 30 +-- .../reagent_containers/food/snacks.dm | 18 +- 48 files changed, 537 insertions(+), 537 deletions(-) diff --git a/code/game/gamemodes/shadowling/shadowling_items.dm b/code/game/gamemodes/shadowling/shadowling_items.dm index 863ea9c43a6..6af78895077 100644 --- a/code/game/gamemodes/shadowling/shadowling_items.dm +++ b/code/game/gamemodes/shadowling/shadowling_items.dm @@ -4,7 +4,7 @@ item_state = "golem" origin_tech = null icon_state = "golem" - _color = "golem" + item_color = "golem" flags = ABSTRACT | NODROP has_sensor = 0 unacidable = 1 diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index b68b74313d5..14254d2a0f4 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -57,7 +57,7 @@ var/datum/canister_icons/canister_icon_container = new() var/valve_open = 0 var/release_pressure = ONE_ATMOSPHERE - var/list/_color //variable that stores colours + var/list/item_color //variable that stores colours var/list/decals //list that stores the decals //lists for check_change() @@ -81,7 +81,7 @@ var/datum/canister_icons/canister_icon_container = new() New() ..() - _color = list( + item_color = list( "prim" = "yellow", "sec" = "none", "ter" = "none", @@ -117,7 +117,7 @@ var/datum/canister_icons/canister_icon_container = new() for(var/C in colorcontainer) if(C == "prim") continue var/list/L = colorcontainer[C] - if(!(_color[C]) || (_color[C] == "none")) + if(!(item_color[C]) || (item_color[C] == "none")) L.Add(list("anycolor" = 0)) else L.Add(list("anycolor" = 1)) @@ -151,9 +151,9 @@ var/datum/canister_icons/canister_icon_container = new() else update_flag |= 32 - if(list2params(oldcolor) != list2params(_color)) + if(list2params(oldcolor) != list2params(item_color)) update_flag |= 64 - oldcolor = _color.Copy() + oldcolor = item_color.Copy() if(list2params(olddecals) != list2params(decals)) update_flag |= 128 @@ -180,20 +180,20 @@ update_flag if (src.destroyed) src.overlays = 0 - src.icon_state = text("[]-1", src._color["prim"])//yes, I KNOW the colours don't reflect when the can's borked, whatever. + src.icon_state = text("[]-1", src.item_color["prim"])//yes, I KNOW the colours don't reflect when the can's borked, whatever. - if(icon_state != src._color["prim"]) - icon_state = src._color["prim"] + if(icon_state != src.item_color["prim"]) + icon_state = src.item_color["prim"] if(check_change()) //Returns 1 if no change needed to icons. return overlays.Cut() - for(var/C in _color) + for(var/C in item_color) if(C == "prim") continue - if(_color[C] == "none") continue - overlays.Add(_color[C]) + if(item_color[C] == "none") continue + overlays.Add(item_color[C]) for(var/D in decals) if(decals[D]) @@ -393,7 +393,7 @@ update_flag data["name"] = name data["menu"] = menu ? 1 : 0 data["canLabel"] = can_label ? 1 : 0 - data["_color"] = _color + data["item_color"] = item_color data["colorContainer"] = colorcontainer data["possibleDecals"] = possibledecals data["portConnected"] = connected_port ? 1 : 0 @@ -482,22 +482,22 @@ update_flag if (href_list["choice"] == "Primary color") if (is_a_color(href_list["icon"],"prim")) - _color["prim"] = href_list["icon"] + item_color["prim"] = href_list["icon"] if (href_list["choice"] == "Secondary color") if (href_list["icon"] == "none") - _color["sec"] = "none" + item_color["sec"] = "none" else if (is_a_color(href_list["icon"],"sec")) - _color["sec"] = href_list["icon"] + item_color["sec"] = href_list["icon"] if (href_list["choice"] == "Tertiary color") if (href_list["icon"] == "none") - _color["ter"] = "none" + item_color["ter"] = "none" else if (is_a_color(href_list["icon"],"ter")) - _color["ter"] = href_list["icon"] + item_color["ter"] = href_list["icon"] if (href_list["choice"] == "Quaternary color") if (href_list["icon"] == "none") - _color["quart"] = "none" + item_color["quart"] = "none" else if (is_a_color(href_list["icon"],"quart")) - _color["quart"] = href_list["icon"] + item_color["quart"] = href_list["icon"] if (href_list["choice"] == "decals") if (is_a_decal(href_list["icon"])) @@ -542,7 +542,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/toxins/New() ..() - _color["prim"] = "orange" + item_color["prim"] = "orange" decals["plasma"] = 1 src.air_contents.toxins = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) @@ -552,7 +552,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/oxygen/New() ..() - _color["prim"] = "blue" + item_color["prim"] = "blue" src.air_contents.oxygen = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.update_icon() @@ -561,7 +561,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/sleeping_agent/New() ..() - _color["prim"] = "redws" + item_color["prim"] = "redws" var/datum/gas/sleeping_agent/trace_gas = new air_contents.trace_gases += trace_gas trace_gas.moles = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) @@ -588,7 +588,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/nitrogen/New() ..() - _color["prim"] = "red" + item_color["prim"] = "red" src.air_contents.nitrogen = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.update_icon() @@ -597,7 +597,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/carbon_dioxide/New() ..() - _color["prim"] = "black" + item_color["prim"] = "black" src.air_contents.carbon_dioxide = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.update_icon() @@ -607,7 +607,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/air/New() ..() - _color["prim"] = "grey" + item_color["prim"] = "grey" src.air_contents.oxygen = (O2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.air_contents.nitrogen = (N2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) @@ -617,7 +617,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/custom_mix/New() ..() - _color["prim"] = "whiters" + item_color["prim"] = "whiters" src.update_icon() // Otherwise new canisters do not have their icon updated with the pressure light, likely want to add this to the canister class constructor, avoiding at current time to refrain from screwing up code for other canisters. --DZD return 1 diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 98d4cd9a5fc..b4e9dc9822c 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -420,10 +420,10 @@ var/active = 0 /obj/item/weapon/holo/esword/green/New() - _color = "green" + item_color = "green" /obj/item/weapon/holo/esword/red/New() - _color = "red" + item_color = "red" /obj/item/weapon/holo/esword/IsShield() if(active) @@ -431,13 +431,13 @@ return 0 /obj/item/weapon/holo/esword/New() - _color = pick("red","blue","green","purple") + item_color = pick("red","blue","green","purple") /obj/item/weapon/holo/esword/attack_self(mob/living/user as mob) active = !active if (active) force = 30 - icon_state = "sword[_color]" + icon_state = "sword[item_color]" w_class = 4 playsound(user, 'sound/weapons/saberon.ogg', 50, 1) user << "[src] is now active." diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 918783941fc..9313acda3cb 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -1067,7 +1067,7 @@ helmet.name = "engineering hardsuit helmet" helmet.icon_state = "rig0-engineering" helmet.item_state = "eng_helm" - helmet._color = "engineering" + helmet.item_color = "engineering" if(suit) suit.name = "engineering hardsuit" suit.icon_state = "rig-engineering" @@ -1077,7 +1077,7 @@ helmet.name = "mining hardsuit helmet" helmet.icon_state = "rig0-mining" helmet.item_state = "mining_helm" - helmet._color = "mining" + helmet.item_color = "mining" if(suit) suit.name = "mining hardsuit" suit.icon_state = "rig-mining" @@ -1087,7 +1087,7 @@ helmet.name = "medical hardsuit helmet" helmet.icon_state = "rig0-medical" helmet.item_state = "medical_helm" - helmet._color = "medical" + helmet.item_color = "medical" if(suit) suit.name = "medical hardsuit" suit.icon_state = "rig-medical" @@ -1097,7 +1097,7 @@ helmet.name = "security hardsuit helmet" helmet.icon_state = "rig0-sec" helmet.item_state = "sec_helm" - helmet._color = "sec" + helmet.item_color = "sec" if(suit) suit.name = "security hardsuit" suit.icon_state = "rig-sec" @@ -1107,7 +1107,7 @@ helmet.name = "atmospherics hardsuit helmet" helmet.icon_state = "rig0-atmos" helmet.item_state = "atmos_helm" - helmet._color = "atmos" + helmet.item_color = "atmos" if(suit) suit.name = "atmospherics hardsuit" suit.icon_state = "rig-atmos" @@ -1117,7 +1117,7 @@ helmet.name = "blood-red hardsuit helmet" helmet.icon_state = "rig0-syndie" helmet.item_state = "syndie_helm" - helmet._color = "syndie" + helmet.item_color = "syndie" if(suit) suit.name = "blood-red hardsuit" suit.item_state = "syndie_hardsuit" diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 724643ed751..f4cf0d6b0fe 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -52,15 +52,15 @@ if(crayon) - var/_color + var/item_color if(istype(crayon,/obj/item/toy/crayon)) var/obj/item/toy/crayon/CR = crayon - _color = CR.colourName + item_color = CR.colourName else if(istype(crayon,/obj/item/weapon/stamp)) var/obj/item/weapon/stamp/ST = crayon - _color = ST._color + item_color = ST.item_color - if(_color) + if(item_color) var/new_jumpsuit_icon_state = "" var/new_jumpsuit_item_state = "" var/new_jumpsuit_name = "" @@ -77,7 +77,7 @@ for(var/T in typesof(/obj/item/clothing/under)) var/obj/item/clothing/under/J = new T //world << "DEBUG: [color] == [J.color]" - if(_color == J._color) + if(item_color == J.item_color) new_jumpsuit_icon_state = J.icon_state new_jumpsuit_item_state = J.item_state new_jumpsuit_name = J.name @@ -88,7 +88,7 @@ for(var/T in typesof(/obj/item/clothing/gloves/color)) var/obj/item/clothing/gloves/color/G = new T //world << "DEBUG: [color] == [J.color]" - if(_color == G._color) + if(item_color == G.item_color) new_glove_icon_state = G.icon_state new_glove_item_state = G.item_state new_glove_name = G.name @@ -99,7 +99,7 @@ for(var/T in typesof(/obj/item/clothing/shoes)) var/obj/item/clothing/shoes/S = new T //world << "DEBUG: [color] == [J.color]" - if(_color == S._color) + if(item_color == S.item_color) new_shoe_icon_state = S.icon_state new_shoe_name = S.name qdel(S) @@ -109,7 +109,7 @@ for(var/T in typesof(/obj/item/weapon/bedsheet)) var/obj/item/weapon/bedsheet/B = new T //world << "DEBUG: [color] == [J.color]" - if(_color == B._color) + if(item_color == B.item_color) new_sheet_icon_state = B.icon_state new_sheet_name = B.name qdel(B) @@ -119,7 +119,7 @@ for(var/T in typesof(/obj/item/clothing/head/soft)) var/obj/item/clothing/head/soft/H = new T //world << "DEBUG: [color] == [J.color]" - if(_color == H._color) + if(item_color == H.item_color) new_softcap_icon_state = H.icon_state new_softcap_name = H.name qdel(H) @@ -131,7 +131,7 @@ //world << "DEBUG: YUP! FOUND IT!" J.item_state = new_jumpsuit_item_state J.icon_state = new_jumpsuit_icon_state - J._color = _color + J.item_color = item_color J.name = new_jumpsuit_name J.desc = new_desc if(new_glove_icon_state && new_glove_item_state && new_glove_name) @@ -139,7 +139,7 @@ //world << "DEBUG: YUP! FOUND IT!" G.item_state = new_glove_item_state G.icon_state = new_glove_icon_state - G._color = _color + G.item_color = item_color G.name = new_glove_name if(!istype(G, /obj/item/clothing/gloves/color/black/thief)) G.desc = new_desc @@ -151,21 +151,21 @@ S.slowdown = SHOES_SLOWDOWN new /obj/item/weapon/restraints/handcuffs( src ) S.icon_state = new_shoe_icon_state - S._color = _color + S.item_color = item_color S.name = new_shoe_name S.desc = new_desc if(new_sheet_icon_state && new_sheet_name) for(var/obj/item/weapon/bedsheet/B in contents) //world << "DEBUG: YUP! FOUND IT!" B.icon_state = new_sheet_icon_state - B._color = _color + B.item_color = item_color B.name = new_sheet_name B.desc = new_desc if(new_softcap_icon_state && new_softcap_name) for(var/obj/item/clothing/head/soft/H in contents) //world << "DEBUG: YUP! FOUND IT!" H.icon_state = new_softcap_icon_state - H._color = _color + H.item_color = item_color H.name = new_softcap_name H.desc = new_desc qdel(crayon) diff --git a/code/game/objects/effects/decals/Cleanable/tracks.dm b/code/game/objects/effects/decals/Cleanable/tracks.dm index ae05e0e4cc3..86c03a683e8 100644 --- a/code/game/objects/effects/decals/Cleanable/tracks.dm +++ b/code/game/objects/effects/decals/Cleanable/tracks.dm @@ -24,9 +24,9 @@ var/global/list/image/fluidtrack_cache=list() var/crusty=0 var/image/overlay - New(_direction,_color,_wet) + New(_direction,item_color,_wet) src.direction=_direction - src.basecolor=_color + src.basecolor=item_color src.wet=_wet // Footprints, tire trails... diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 24fd10d631d..6d303aa8fd2 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -37,7 +37,7 @@ var/list/materials = list() //Since any item can now be a piece of clothing, this has to be put here so all items share it. var/flags_inv //This flag is used to determine when items in someone's inventory cover others. IE helmets making it so you can't see glasses, etc. - var/_color = null + var/item_color = null var/body_parts_covered = 0 //see setup.dm for appropriate bit flags //var/heat_transfer_coefficient = 1 //0 prevents all transfers, 1 is invisible var/gas_transfer_coefficient = 1 // for leaking gas from turf to mask and vice-versa (for masks right now, but at some point, i'd like to include space helmets) diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index b93db8244e2..74863ccd4af 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -8,7 +8,7 @@ var/implanted = null var/mob/living/imp_in = null var/obj/item/organ/external/part = null - _color = "b" + item_color = "b" var/allow_reagents = 0 var/malfunction = 0 diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm index f32764ae410..742717c1b70 100644 --- a/code/game/objects/items/weapons/implants/implantcase.dm +++ b/code/game/objects/items/weapons/implants/implantcase.dm @@ -22,7 +22,7 @@ update() if (src.imp) - src.icon_state = text("implantcase-[]", src.imp._color) + src.icon_state = text("implantcase-[]", src.imp.item_color) src.origin_tech = src.imp.origin_tech else src.icon_state = "implantcase-0" diff --git a/code/game/objects/items/weapons/implants/implantfreedom.dm b/code/game/objects/items/weapons/implants/implantfreedom.dm index 282717b606c..978b6eb237b 100644 --- a/code/game/objects/items/weapons/implants/implantfreedom.dm +++ b/code/game/objects/items/weapons/implants/implantfreedom.dm @@ -3,7 +3,7 @@ /obj/item/weapon/implant/freedom name = "freedom" desc = "Use this to escape from those evil Red Shirts." - _color = "r" + item_color = "r" var/activation_emote = "chuckle" origin_tech = "materials=2;magnets=3;biotech=3;syndicate=4" var/uses = 4 diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index d8be2b42563..59347a12251 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -25,10 +25,10 @@ hitsound = 'sound/weapons/blade1.ogg' if(attack_verb_on.len) attack_verb = attack_verb_on - if(!_color) + if(!item_color) icon_state = icon_state_on else - icon_state = "sword[_color]" + icon_state = "sword[item_color]" w_class = w_class_on playsound(user, 'sound/weapons/saberon.ogg', 35, 1) //changed it from 50% volume to 35% because deafness user << "[src] is now active." @@ -86,8 +86,8 @@ var/blade_color /obj/item/weapon/melee/energy/sword/New() - if(_color == null) - _color = pick("red", "blue", "green", "purple") + if(item_color == null) + item_color = pick("red", "blue", "green", "purple") /obj/item/weapon/melee/energy/sword/IsShield() if(active) @@ -120,12 +120,12 @@ icon_state = "esaw_0" icon_state_on = "esaw_1" hitcost = 75 //Costs more than a standard cyborg esword - _color = null + item_color = null w_class = 3 /obj/item/weapon/melee/energy/sword/cyborg/saw/New() ..() - _color = null + item_color = null /obj/item/weapon/melee/energy/sword/cyborg/saw/IsShield() return 0 @@ -133,16 +133,16 @@ /obj/item/weapon/melee/energy/sword/saber /obj/item/weapon/melee/energy/sword/saber/blue - _color = "blue" + item_color = "blue" /obj/item/weapon/melee/energy/sword/saber/purple - _color = "purple" + item_color = "purple" /obj/item/weapon/melee/energy/sword/saber/green - _color = "green" + item_color = "green" /obj/item/weapon/melee/energy/sword/saber/red - _color = "red" + item_color = "red" /obj/item/weapon/melee/energy/sword/saber/attackby(obj/item/weapon/W, mob/living/user, params) ..() @@ -156,7 +156,7 @@ var/obj/item/weapon/twohanded/dualsaber/newSaber = new /obj/item/weapon/twohanded/dualsaber(user.loc) if(src.hacked) // That's right, we'll only check the "original" esword. newSaber.hacked = 1 - newSaber._color = "rainbow" + newSaber.item_color = "rainbow" user.unEquip(W) user.unEquip(src) qdel(W) @@ -165,7 +165,7 @@ else if(istype(W, /obj/item/device/multitool)) if(hacked == 0) hacked = 1 - _color = "rainbow" + item_color = "rainbow" user << "RNBW_ENGAGE" if(active) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index f492bcc639c..af608addbf8 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -15,7 +15,7 @@ LINEN BINS throw_speed = 1 throw_range = 2 w_class = 1.0 - _color = "white" + item_color = "white" slot_flags = SLOT_BACK @@ -31,127 +31,127 @@ LINEN BINS /obj/item/weapon/bedsheet/blue icon_state = "sheetblue" - _color = "blue" + item_color = "blue" /obj/item/weapon/bedsheet/green icon_state = "sheetgreen" - _color = "green" + item_color = "green" /obj/item/weapon/bedsheet/orange icon_state = "sheetorange" - _color = "orange" + item_color = "orange" /obj/item/weapon/bedsheet/purple icon_state = "sheetpurple" - _color = "purple" + item_color = "purple" /obj/item/weapon/bedsheet/patriot name = "patriotic bedsheet" desc = "You've never felt more free than when sleeping on this." icon_state = "sheetUSA" - _color = "sheetUSA" + item_color = "sheetUSA" /obj/item/weapon/bedsheet/rainbow name = "rainbow bedsheet" desc = "A multi_colored blanket. It's actually several different sheets cut up and sewn together." icon_state = "sheetrainbow" - _color = "rainbow" + item_color = "rainbow" /obj/item/weapon/bedsheet/red icon_state = "sheetred" - _color = "red" + item_color = "red" /obj/item/weapon/bedsheet/yellow icon_state = "sheetyellow" - _color = "yellow" + item_color = "yellow" /obj/item/weapon/bedsheet/mime name = "mime's blanket" desc = "A very soothing striped blanket. All the noise just seems to fade out when you're under the covers in this." icon_state = "sheetmime" - _color = "mime" + item_color = "mime" /obj/item/weapon/bedsheet/clown name = "clown's blanket" desc = "A rainbow blanket with a clown mask woven in. It smells faintly of bananas." icon_state = "sheetclown" - _color = "clown" + item_color = "clown" /obj/item/weapon/bedsheet/captain name = "captain's bedsheet." desc = "It has a Nanotrasen symbol on it, and was woven with a revolutionary new kind of thread guaranteed to have 0.01% permeability for most non-chemical substances, popular among most modern captains." icon_state = "sheetcaptain" - _color = "captain" + item_color = "captain" /obj/item/weapon/bedsheet/rd name = "research director's bedsheet" desc = "It appears to have a beaker emblem, and is made out of fire-resistant material, although it probably won't protect you in the event of fires you're familiar with every day." icon_state = "sheetrd" - _color = "director" + item_color = "director" /obj/item/weapon/bedsheet/medical name = "medical blanket" desc = "It's a sterilized* blanket commonly used in the Medbay. *Sterilization is voided if a virologist is present onboard the station." icon_state = "sheetmedical" - _color = "medical" + item_color = "medical" /obj/item/weapon/bedsheet/cmo name = "chief medical officer's bedsheet" desc = "It's a sterilized blanket that has a cross emblem. There's some cat fur on it, likely from Runtime." icon_state = "sheetcmo" - _color = "cmo" + item_color = "cmo" /obj/item/weapon/bedsheet/hos name = "head of security's bedsheet" desc = "It is decorated with a shield emblem. While crime doesn't sleep, you do, but you are still THE LAW!" icon_state = "sheethos" - _color = "hosred" + item_color = "hosred" /obj/item/weapon/bedsheet/hop name = "head of personnel's bedsheet" desc = "It is decorated with a key emblem. For those rare moments when you can rest and cuddle with Ian without someone screaming for you over the radio." icon_state = "sheethop" - _color = "hop" + item_color = "hop" /obj/item/weapon/bedsheet/ce name = "chief engineer's bedsheet" desc = "It is decorated with a wrench emblem. It's highly reflective and stain resistant, so you don't need to worry about ruining it with oil." icon_state = "sheetce" - _color = "chief" + item_color = "chief" /obj/item/weapon/bedsheet/qm name = "quartermaster's bedsheet" desc = "It is decorated with a crate emblem in silver lining. It's rather tough, and just the thing to lie on after a hard day of pushing paper." icon_state = "sheetqm" - _color = "qm" + item_color = "qm" /obj/item/weapon/bedsheet/brown icon_state = "sheetbrown" - _color = "cargo" + item_color = "cargo" /obj/item/weapon/bedsheet/centcom name = "centcom bedsheet" desc = "Woven with advanced nanothread for warmth as well as being very decorated, essential for all officials." icon_state = "sheetcentcom" - _color = "centcom" + item_color = "centcom" /obj/item/weapon/bedsheet/syndie name = "syndicate bedsheet" desc = "It has a syndicate emblem and it has an aura of evil." icon_state = "sheetsyndie" - _color = "syndie" + item_color = "syndie" /obj/item/weapon/bedsheet/cult name = "cultist's bedsheet" desc = "You might dream of Nar'Sie if you sleep with this. It seems rather tattered and glows of an eldritch presence." icon_state = "sheetcult" - _color = "cult" + item_color = "cult" /obj/item/weapon/bedsheet/wiz name = "wizard's bedsheet" desc = "A special fabric enchanted with magic so you can have an enchanted night. It even glows!" icon_state = "sheetwiz" - _color = "wiz" + item_color = "wiz" diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index b922b4979c8..1b21829f739 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2652,7 +2652,7 @@ for(var/obj/item/clothing/under/W in world) W.icon_state = "schoolgirl" W.item_state = "w_suit" - W._color = "schoolgirl" + W.item_color = "schoolgirl" message_admins("[key_name_admin(usr)] activated Japanese Animes mode") world << sound('sound/AI/animes.ogg') if("eagles")//SCRAW diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 243842ff906..213cd81bfa9 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -480,11 +480,11 @@ BLIND // can't see anything if(!istype(usr, /mob/living)) return if(usr.stat) return - if(copytext(_color,-2) != "_d") - basecolor = _color + if(copytext(item_color,-2) != "_d") + basecolor = item_color usr << "DEBUG:[basecolor]" if(basecolor + "_d_s" in icon_states('icons/mob/uniform.dmi')) - _color = _color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]" + item_color = item_color == "[basecolor]" ? "[basecolor]_d" : "[basecolor]" usr.update_inv_w_uniform() else usr << "You cannot roll down the uniform!" diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 9c364775343..bd9dc271366 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -5,7 +5,7 @@ item_state = "ygloves" siemens_coefficient = 0 permeability_coefficient = 0.05 - _color="yellow" + item_color="yellow" power var/next_shock = 0 @@ -20,7 +20,7 @@ item_state = "ygloves" siemens_coefficient = 1 //Set to a default of 1, gets overridden in New() permeability_coefficient = 0.05 - _color="yellow" + item_color="yellow" New() siemens_coefficient = pick(0,0.5,0.5,0.5,0.5,0.75,1.5) @@ -30,7 +30,7 @@ name = "black gloves" icon_state = "black" item_state = "bgloves" - _color="brown" + item_color="brown" cold_protection = HANDS min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT heat_protection = HANDS @@ -38,10 +38,10 @@ hos - _color = "hosred" //Exists for washing machines. Is not different from black gloves in any way. + item_color = "hosred" //Exists for washing machines. Is not different from black gloves in any way. ce - _color = "chief" //Exists for washing machines. Is not different from black gloves in any way. + item_color = "chief" //Exists for washing machines. Is not different from black gloves in any way. thief pickpocket = 1 @@ -51,14 +51,14 @@ desc = "A pair of gloves, they don't look special in any way." icon_state = "orange" item_state = "orangegloves" - _color="orange" + item_color="orange" /obj/item/clothing/gloves/color/red name = "red gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "red" item_state = "redgloves" - _color = "red" + item_color = "red" /obj/item/clothing/gloves/color/red/insulated name = "insulated gloves" @@ -71,60 +71,60 @@ desc = "A pair of gloves, they don't look special in any way." icon_state = "rainbow" item_state = "rainbowgloves" - _color = "rainbow" + item_color = "rainbow" clown - _color = "clown" + item_color = "clown" /obj/item/clothing/gloves/color/blue name = "blue gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "blue" item_state = "bluegloves" - _color="blue" + item_color="blue" /obj/item/clothing/gloves/color/purple name = "purple gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "purple" item_state = "purplegloves" - _color="purple" + item_color="purple" /obj/item/clothing/gloves/color/green name = "green gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "green" item_state = "greengloves" - _color="green" + item_color="green" /obj/item/clothing/gloves/color/grey name = "grey gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "gray" item_state = "graygloves" - _color="grey" + item_color="grey" rd - _color = "director" //Exists for washing machines. Is not different from gray gloves in any way. + item_color = "director" //Exists for washing machines. Is not different from gray gloves in any way. hop - _color = "hop" //Exists for washing machines. Is not different from gray gloves in any way. + item_color = "hop" //Exists for washing machines. Is not different from gray gloves in any way. /obj/item/clothing/gloves/color/light_brown name = "light brown gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "lightbrown" item_state = "lightbrowngloves" - _color="light brown" + item_color="light brown" /obj/item/clothing/gloves/color/brown name = "brown gloves" desc = "A pair of gloves, they don't look special in any way." icon_state = "brown" item_state = "browngloves" - _color="brown" + item_color="brown" cargo - _color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way. + item_color = "cargo" //Exists for washing machines. Is not different from brown gloves in any way. /obj/item/clothing/gloves/color/latex name = "latex gloves" @@ -133,7 +133,7 @@ item_state = "lgloves" siemens_coefficient = 0.30 permeability_coefficient = 0.01 - _color="white" + item_color="white" transfer_prints = TRUE /obj/item/clothing/gloves/color/latex/nitrile @@ -142,17 +142,17 @@ icon_state = "nitrile" item_state = "nitrilegloves" transfer_prints = FALSE - _color = "medical" + item_color = "medical" /obj/item/clothing/gloves/color/white name = "white gloves" desc = "These look pretty fancy." icon_state = "white" item_state = "wgloves" - _color="mime" + item_color="mime" redcoat - _color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way. + item_color = "redcoat" //Exists for washing machines. Is not different from white gloves in any way. /obj/item/clothing/gloves/color/captain @@ -160,7 +160,7 @@ name = "captain's gloves" icon_state = "captain" item_state = "egloves" - _color = "captain" + item_color = "captain" siemens_coefficient = 0 permeability_coefficient = 0.05 cold_protection = HANDS diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 79871b9afdc..a377e445bb7 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -3,7 +3,7 @@ desc = "Plain black gloves without fingertips for the hard working." icon_state = "fingerless" item_state = "fingerless" - _color = null //So they don't wash. + item_color = null //So they don't wash. transfer_prints = TRUE cold_protection = HANDS min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT @@ -44,4 +44,4 @@ name = "batgloves" icon_state = "bmgloves" item_state = "bmgloves" - _color="bmgloves" \ No newline at end of file + item_color="bmgloves" \ No newline at end of file diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index f603230bde0..ca24ab55d80 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -6,7 +6,7 @@ item_state = "hardhat0_yellow" var/brightness_on = 4 //luminosity when on var/on = 0 - _color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite) + item_color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite) armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20) flags_inv = 0 action_button_name = "Toggle Helmet Light" @@ -18,8 +18,8 @@ user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities. return on = !on - icon_state = "hardhat[on]_[_color]" - item_state = "hardhat[on]_[_color]" + icon_state = "hardhat[on]_[item_color]" + item_state = "hardhat[on]_[item_color]" if(on) set_light(brightness_on) else set_light(0) @@ -28,12 +28,12 @@ /obj/item/clothing/head/hardhat/orange icon_state = "hardhat0_orange" item_state = "hardhat0_orange" - _color = "orange" + item_color = "orange" /obj/item/clothing/head/hardhat/red icon_state = "hardhat0_red" item_state = "hardhat0_red" - _color = "red" + item_color = "red" name = "firefighter helmet" flags = STOPSPRESSUREDMAGE heat_protection = HEAD @@ -44,7 +44,7 @@ /obj/item/clothing/head/hardhat/white icon_state = "hardhat0_white" item_state = "hardhat0_white" - _color = "white" + item_color = "white" flags = STOPSPRESSUREDMAGE heat_protection = HEAD max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT @@ -55,12 +55,12 @@ /obj/item/clothing/head/hardhat/dblue icon_state = "hardhat0_dblue" item_state = "hardhat0_dblue" - _color = "dblue" + item_color = "dblue" /obj/item/clothing/head/hardhat/atmos icon_state = "hardhat0_atmos" item_state = "hardhat0_atmos" - _color = "atmos" + item_color = "atmos" name = "atmospheric technician's firefighting helmet" desc = "A firefighter's helmet, able to keep the user cool in any situation." flags = STOPSPRESSUREDMAGE diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index f5913956ad8..a9dd00c8ef9 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -146,7 +146,7 @@ desc = "A jack o' lantern! Believed to ward off evil spirits." icon_state = "hardhat0_pumpkin"//Could stand to be renamed item_state = "hardhat0_pumpkin" - _color = "pumpkin" + item_color = "pumpkin" flags = HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE @@ -161,7 +161,7 @@ desc = "Some fake antlers and a very fake red nose." icon_state = "hardhat0_reindeer" item_state = "hardhat0_reindeer" - _color = "reindeer" + item_color = "reindeer" flags_inv = 0 action_button_name = "Toggle Nose Light" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index 1f88aaa231c..101852ad4c9 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -3,12 +3,12 @@ desc = "It's a baseball hat in a tasteless yellow colour." icon_state = "cargosoft" item_state = "helmet" - _color = "cargo" + item_color = "cargo" var/flipped = 0 siemens_coefficient = 0.9 dropped() - src.icon_state = "[_color]soft" + src.icon_state = "[item_color]soft" src.flipped=0 ..() @@ -19,10 +19,10 @@ if(usr.canmove && !usr.stat && !usr.restrained()) src.flipped = !src.flipped if(src.flipped) - icon_state = "[_color]soft_flipped" + icon_state = "[item_color]soft_flipped" usr << "You flip the hat backwards." else - icon_state = "[_color]soft" + icon_state = "[item_color]soft" usr << "You flip the hat back in normal position." usr.update_inv_head() //so our mob-overlays update @@ -30,71 +30,71 @@ name = "red cap" desc = "It's a baseball hat in a tasteless red colour." icon_state = "redsoft" - _color = "red" + item_color = "red" /obj/item/clothing/head/soft/blue name = "blue cap" desc = "It's a baseball hat in a tasteless blue colour." icon_state = "bluesoft" - _color = "blue" + item_color = "blue" /obj/item/clothing/head/soft/green name = "green cap" desc = "It's a baseball hat in a tasteless green colour." icon_state = "greensoft" - _color = "green" + item_color = "green" /obj/item/clothing/head/soft/yellow name = "yellow cap" desc = "It's a baseball hat in a tasteless yellow colour." icon_state = "yellowsoft" - _color = "yellow" + item_color = "yellow" /obj/item/clothing/head/soft/grey name = "grey cap" desc = "It's a baseball hat in a tasteful grey colour." icon_state = "greysoft" - _color = "grey" + item_color = "grey" /obj/item/clothing/head/soft/orange name = "orange cap" desc = "It's a baseball hat in a tasteless orange colour." icon_state = "orangesoft" - _color = "orange" + item_color = "orange" /obj/item/clothing/head/soft/mime name = "white cap" desc = "It's a baseball hat in a tasteless white colour." icon_state = "mimesoft" - _color = "mime" + item_color = "mime" /obj/item/clothing/head/soft/purple name = "purple cap" desc = "It's a baseball hat in a tasteless purple colour." icon_state = "purplesoft" - _color = "purple" + item_color = "purple" /obj/item/clothing/head/soft/black name = "black cap" desc = "It's a baseball hat in a tasteless black colour." icon_state = "blacksoft" - _color = "black" + item_color = "black" /obj/item/clothing/head/soft/rainbow name = "rainbow cap" desc = "It's a baseball hat in a bright rainbow of colors." icon_state = "rainbowsoft" - _color = "rainbow" + item_color = "rainbow" /obj/item/clothing/head/soft/sec name = "security cap" desc = "It's baseball hat in tasteful red colour." icon_state = "secsoft" - _color = "sec" + item_color = "sec" armor = list(melee = 30, bullet = 25, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/head/soft/sec/corp name = "corporate security cap" desc = "It's baseball hat in corpotate colours." icon_state = "corpsoft" - _color = "corp" + item_color = "corp" diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index f2a89c662dd..364c4d808ac 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -1,7 +1,7 @@ /obj/item/clothing/shoes/black name = "black shoes" icon_state = "black" - _color = "black" + item_color = "black" desc = "A pair of black shoes." cold_protection = FEET @@ -10,7 +10,7 @@ max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT redcoat - _color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way. + item_color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way. /obj/item/clothing/shoes/black/greytide flags = NODROP @@ -21,71 +21,71 @@ icon_state = "brown" captain - _color = "captain" //Exists for washing machines. Is not different from brown shoes in any way. + item_color = "captain" //Exists for washing machines. Is not different from brown shoes in any way. hop - _color = "hop" //Exists for washing machines. Is not different from brown shoes in any way. + item_color = "hop" //Exists for washing machines. Is not different from brown shoes in any way. ce - _color = "chief" //Exists for washing machines. Is not different from brown shoes in any way. + item_color = "chief" //Exists for washing machines. Is not different from brown shoes in any way. rd - _color = "director" //Exists for washing machines. Is not different from brown shoes in any way. + item_color = "director" //Exists for washing machines. Is not different from brown shoes in any way. cmo - _color = "medical" //Exists for washing machines. Is not different from brown shoes in any way. + item_color = "medical" //Exists for washing machines. Is not different from brown shoes in any way. cmo - _color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way. + item_color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way. /obj/item/clothing/shoes/blue name = "blue shoes" icon_state = "blue" - _color = "blue" + item_color = "blue" /obj/item/clothing/shoes/green name = "green shoes" icon_state = "green" - _color = "green" + item_color = "green" /obj/item/clothing/shoes/yellow name = "yellow shoes" icon_state = "yellow" - _color = "yellow" + item_color = "yellow" /obj/item/clothing/shoes/purple name = "purple shoes" icon_state = "purple" - _color = "purple" + item_color = "purple" /obj/item/clothing/shoes/brown name = "brown shoes" icon_state = "brown" - _color = "brown" + item_color = "brown" /obj/item/clothing/shoes/red name = "red shoes" desc = "Stylish red shoes." icon_state = "red" - _color = "red" + item_color = "red" /obj/item/clothing/shoes/white name = "white shoes" icon_state = "white" permeability_coefficient = 0.01 - _color = "white" + item_color = "white" /obj/item/clothing/shoes/leather name = "leather shoes" desc = "A sturdy pair of leather shoes." icon_state = "leather" - _color = "leather" + item_color = "leather" /obj/item/clothing/shoes/rainbow name = "rainbow shoes" desc = "Very gay shoes." icon_state = "rain_bow" - _color = "rainbow" + item_color = "rainbow" /obj/item/clothing/shoes/orange name = "orange shoes" icon_state = "orange" - _color = "orange" + item_color = "orange" /obj/item/clothing/shoes/orange/attack_self(mob/user as mob) if (src.chained) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 5fbb5495aad..7a07fe249a2 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -13,7 +13,7 @@ /obj/item/clothing/shoes/mime name = "mime shoes" icon_state = "mime" - _color = "mime" + item_color = "mime" /obj/item/clothing/shoes/combat //basic syndicate combat boots for nuke ops and mob corpses name = "combat boots" @@ -57,7 +57,7 @@ icon_state = "clown" item_state = "clown_shoes" slowdown = SHOES_SLOWDOWN+1 - _color = "clown" + item_color = "clown" var/footstep = 1 //used for squeeks whilst walking species_restricted = null @@ -66,7 +66,7 @@ desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time." icon_state = "jackboots" item_state = "jackboots" - _color = "hosred" + item_color = "hosred" siemens_coefficient = 0.7 var/footstep=1 @@ -74,7 +74,7 @@ name = "jacksandals" desc = "Nanotrasen-issue Security combat sandals for combat scenarios. They're jacksandals, however that works." icon_state = "jacksandal" - _color = "jacksandal" + item_color = "jacksandal" species_restricted = null /obj/item/clothing/shoes/cult @@ -82,7 +82,7 @@ desc = "A pair of boots worn by the followers of Nar-Sie." icon_state = "cult" item_state = "cult" - _color = "cult" + item_color = "cult" siemens_coefficient = 0.7 cold_protection = FEET @@ -137,6 +137,6 @@ name = "noble boots" desc = "The boots are economically designed to balance function and comfort, so that you can step on peasants without having to worry about blisters. The leather also resists unwanted blood stains." icon_state = "noble_boot" - _color = "noble_boot" + item_color = "noble_boot" item_state = "noble_boot" \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 55c28110382..f44e426f368 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -9,12 +9,12 @@ /obj/item/clothing/head/helmet/space/skrell/white icon_state = "skrell_helmet_white" item_state = "skrell_helmet_white" - _color = "skrell_helmet_white" + item_color = "skrell_helmet_white" /obj/item/clothing/head/helmet/space/skrell/black icon_state = "skrell_helmet_black" item_state = "skrell_helmet_black" - _color = "skrell_helmet_black" + item_color = "skrell_helmet_black" /obj/item/clothing/suit/space/skrell name = "Skrellian hardsuit" @@ -28,12 +28,12 @@ /obj/item/clothing/suit/space/skrell/white icon_state = "skrell_suit_white" item_state = "skrell_suit_white" - _color = "skrell_suit_white" + item_color = "skrell_suit_white" /obj/item/clothing/suit/space/skrell/black icon_state = "skrell_suit_black" item_state = "skrell_suit_black" - _color = "skrell_suit_black" + item_color = "skrell_suit_black" //Unathi space gear. Huge and restrictive. /obj/item/clothing/head/helmet/space/unathi @@ -48,7 +48,7 @@ desc = "Hey! Watch it with that thing! It's a knock-off of a Unathi battle-helm, and that spike could put someone's eye out." icon_state = "unathi_helm_cheap" item_state = "unathi_helm_cheap" - _color = "unathi_helm_cheap" + item_color = "unathi_helm_cheap" /obj/item/clothing/suit/space/unathi armor = list(melee = 40, bullet = 30, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 50) @@ -69,14 +69,14 @@ desc = "Weathered, ancient and battle-scarred. The helmet is too." icon_state = "unathi_breacher" item_state = "unathi_breacher" - _color = "unathi_breacher" + item_color = "unathi_breacher" /obj/item/clothing/suit/space/unathi/breacher name = "breacher chassis" desc = "Huge, bulky and absurdly heavy. It must be like wearing a tank." icon_state = "unathi_breacher" item_state = "unathi_breacher" - _color = "unathi_breacher" + item_color = "unathi_breacher" slowdown = 1 // Vox space gear (vaccuum suit, low pressure armour) @@ -162,7 +162,7 @@ name = "alien clothing" desc = "This doesn't look very comfortable." icon_state = "vox-casual-1" - _color = "vox-casual-1" + item_color = "vox-casual-1" item_state = "vox-casual-1" body_parts_covered = LEGS @@ -170,7 +170,7 @@ name = "alien robes" desc = "Weird and flowing!" icon_state = "vox-casual-2" - _color = "vox-casual-2" + item_color = "vox-casual-2" item_state = "vox-casual-2" /obj/item/clothing/gloves/color/yellow/vox @@ -180,7 +180,7 @@ item_state = "gloves-vox" siemens_coefficient = 0 permeability_coefficient = 0.05 - _color = "gloves-vox" + item_color = "gloves-vox" species_restricted = list("Vox","Vox Armalis") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/gloves.dmi', diff --git a/code/modules/clothing/spacesuits/ert.dm b/code/modules/clothing/spacesuits/ert.dm index 66a7504f3b8..0a65501a37f 100644 --- a/code/modules/clothing/spacesuits/ert.dm +++ b/code/modules/clothing/spacesuits/ert.dm @@ -44,7 +44,7 @@ desc = "A helmet worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured and space ready." icon_state = "rig0-ert_commander" item_state = "helm-command" - _color = "ert_commander" + item_color = "ert_commander" /obj/item/clothing/suit/space/rig/ert/commander name = "emergency response team commander suit" @@ -58,7 +58,7 @@ desc = "A helmet worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured and space ready." icon_state = "rig0-ert_security" item_state = "syndicate-helm-black-red" - _color = "ert_security" + item_color = "ert_security" /obj/item/clothing/suit/space/rig/ert/security name = "emergency response team security suit" @@ -71,7 +71,7 @@ name = "emergency response team engineer helmet" desc = "A helmet worn by engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured and space ready." icon_state = "rig0-ert_engineer" - _color = "ert_engineer" + item_color = "ert_engineer" /obj/item/clothing/suit/space/rig/ert/engineer name = "emergency response team engineer suit" @@ -83,7 +83,7 @@ name = "emergency response team medical helmet" desc = "A helmet worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready." icon_state = "rig0-ert_medical" - _color = "ert_medical" + item_color = "ert_medical" /obj/item/clothing/suit/space/rig/ert/medical name = "emergency response team medical suit" @@ -95,7 +95,7 @@ name = "emergency response team janitor helmet" desc = "A helmet worn by janitorial members of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured and space ready." icon_state = "rig0-ert_janitor" - _color = "ert_janitor" + item_color = "ert_janitor" /obj/item/clothing/suit/space/rig/ert/janitor name = "emergency response team janitor suit" diff --git a/code/modules/clothing/spacesuits/rig.dm b/code/modules/clothing/spacesuits/rig.dm index 7303ae12c15..d5f09cdc741 100644 --- a/code/modules/clothing/spacesuits/rig.dm +++ b/code/modules/clothing/spacesuits/rig.dm @@ -9,7 +9,7 @@ allowed = list(/obj/item/device/flashlight) var/brightness_on = 4 //luminosity when on var/on = 0 - _color = "engineering" //Determines used sprites: rig[on]-[color] and rig[on]-[color]2 (lying down sprite) + item_color = "engineering" //Determines used sprites: rig[on]-[color] and rig[on]-[color]2 (lying down sprite) action_button_name = "Toggle Helmet Light" //Species-specific stuff. @@ -35,7 +35,7 @@ /obj/item/clothing/head/helmet/space/rig/proc/toggle_light(mob/user) on = !on - icon_state = "rig[on]-[_color]" + icon_state = "rig[on]-[item_color]" if(on) set_light(brightness_on) @@ -248,7 +248,7 @@ desc = "An advanced helmet designed for work in a hazardous, low pressure environment. Shines with a high polish." icon_state = "rig0-white" item_state = "ce_helm" - _color = "white" + item_color = "white" armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90) heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT @@ -268,7 +268,7 @@ desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating." icon_state = "rig0-mining" item_state = "mining_helm" - _color = "mining" + item_color = "mining" flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50) @@ -287,14 +287,14 @@ desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders." icon_state = "hardsuit1-syndi" item_state = "syndie_helm" - _color = "syndi" + item_color = "syndi" armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50) on = 1 flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL action_button_name = "Toggle Helmet Mode" /obj/item/clothing/head/helmet/space/rig/syndi/update_icon() - icon_state = "hardsuit[on]-[_color]" + icon_state = "hardsuit[on]-[item_color]" /obj/item/clothing/head/helmet/space/rig/syndi/attack_self(mob/user) if(!isturf(user.loc)) @@ -328,7 +328,7 @@ desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders." icon_state = "hardsuit1-syndi" item_state = "syndie_hardsuit" - _color = "syndi" + item_color = "syndi" slowdown = 1 w_class = 3 var/on = 1 @@ -337,7 +337,7 @@ allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank) /obj/item/clothing/suit/space/rig/syndi/update_icon() - icon_state = "hardsuit[on]-[_color]" + icon_state = "hardsuit[on]-[item_color]" /obj/item/clothing/suit/space/rig/syndi/attack_self(mob/user) on = !on @@ -369,7 +369,7 @@ desc = "A bizarre gem-encrusted helmet that radiates magical energies." icon_state = "rig0-wiz" item_state = "wiz_helm" - _color = "wiz" + item_color = "wiz" unacidable = 1 //No longer shall our kind be foiled by lone chemists with spray bottles! armor = list(melee = 40, bullet = 20, laser = 20,energy = 20, bomb = 35, bio = 100, rad = 60) siemens_coefficient = 0.7 @@ -400,7 +400,7 @@ desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort, but does not protect the eyes from intense light." icon_state = "rig0-medical" item_state = "medical_helm" - _color = "medical" + item_color = "medical" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50) flash_protect = 0 @@ -420,7 +420,7 @@ desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor." icon_state = "rig0-sec" item_state = "sec_helm" - _color = "sec" + item_color = "sec" armor = list(melee = 30, bullet = 15, laser = 30,energy = 10, bomb = 10, bio = 100, rad = 50) siemens_coefficient = 0.7 @@ -440,7 +440,7 @@ name = "atmospherics hardsuit helmet" icon_state = "rig0-atmos" item_state = "atmos_helm" - _color = "atmos" + item_color = "atmos" armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0) heat_protection = HEAD //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT @@ -460,7 +460,7 @@ desc = "This is an adamantium helmet from the chapter of the Singuloth Knights. It shines with a holy aura." icon_state = "rig0-singuloth" item_state = "singuloth_helm" - _color = "singuloth" + item_color = "singuloth" armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 25, bio = 100, rad = 100) /obj/item/clothing/suit/space/rig/singuloth diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 66d00261ac6..c56779b1b6a 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -334,14 +334,14 @@ name = "pink swimsuit" desc = "A rather skimpy pink swimsuit." icon_state = "stripper_p_under" - _color = "stripper_p" + item_color = "stripper_p" siemens_coefficient = 1 /obj/item/clothing/under/stripper/stripper_green name = "green swimsuit" desc = "A rather skimpy green swimsuit." icon_state = "stripper_g_under" - _color = "stripper_g" + item_color = "stripper_g" siemens_coefficient = 1 /obj/item/clothing/suit/stripper/stripper_pink @@ -362,7 +362,7 @@ name = "the mankini" desc = "No honest man would wear this abomination" icon_state = "mankini" - _color = "mankini" + item_color = "mankini" siemens_coefficient = 1 /obj/item/clothing/suit/jacket/miljacket @@ -389,35 +389,35 @@ name = "black swimsuit" desc = "An oldfashioned black swimsuit." icon_state = "swim_black" - _color = "swim_black" + item_color = "swim_black" siemens_coefficient = 1 /obj/item/clothing/under/swimsuit/blue name = "blue swimsuit" desc = "An oldfashioned blue swimsuit." icon_state = "swim_blue" - _color = "swim_blue" + item_color = "swim_blue" siemens_coefficient = 1 /obj/item/clothing/under/swimsuit/purple name = "purple swimsuit" desc = "An oldfashioned purple swimsuit." icon_state = "swim_purp" - _color = "swim_purp" + item_color = "swim_purp" siemens_coefficient = 1 /obj/item/clothing/under/swimsuit/green name = "green swimsuit" desc = "An oldfashioned green swimsuit." icon_state = "swim_green" - _color = "swim_green" + item_color = "swim_green" siemens_coefficient = 1 /obj/item/clothing/under/swimsuit/red name = "red swimsuit" desc = "An oldfashioned red swimsuit." icon_state = "swim_red" - _color = "swim_red" + item_color = "swim_red" siemens_coefficient = 1 /obj/item/clothing/suit/storage/mercy_hoodie diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 2f6fb17f314..bdf0c955ca4 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/clothing/ties.dmi' icon_state = "bluetie" item_state = "" //no inhands - _color = "bluetie" + item_color = "bluetie" slot_flags = SLOT_TIE w_class = 2.0 var/slot = "decor" @@ -13,7 +13,7 @@ /obj/item/clothing/accessory/New() ..() - inv_overlay = image("icon" = 'icons/obj/clothing/ties_overlay.dmi', "icon_state" = "[_color? "[_color]" : "[icon_state]"]") + inv_overlay = image("icon" = 'icons/obj/clothing/ties_overlay.dmi', "icon_state" = "[item_color? "[item_color]" : "[icon_state]"]") //when user attached an accessory to S /obj/item/clothing/accessory/proc/on_attached(obj/item/clothing/under/S, mob/user as mob) @@ -47,36 +47,36 @@ /obj/item/clothing/accessory/blue name = "blue tie" icon_state = "bluetie" - _color = "bluetie" + item_color = "bluetie" /obj/item/clothing/accessory/red name = "red tie" icon_state = "redtie" - _color = "redtie" + item_color = "redtie" /obj/item/clothing/accessory/black name = "black tie" icon_state = "blacktie" - _color = "blacktie" + item_color = "blacktie" /obj/item/clothing/accessory/horrible name = "horrible tie" desc = "A neosilk clip-on tie. This one is disgusting." icon_state = "horribletie" - _color = "horribletie" + item_color = "horribletie" /obj/item/clothing/accessory/waistcoat // No overlay name = "waistcoat" desc = "For some classy, murderous fun." icon_state = "waistcoat" item_state = "waistcoat" - _color = "waistcoat" + item_color = "waistcoat" /obj/item/clothing/accessory/stethoscope name = "stethoscope" desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing." icon_state = "stethoscope" - _color = "stethoscope" + item_color = "stethoscope" /obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user) if(ishuman(M) && isliving(user)) @@ -117,7 +117,7 @@ name = "bronze medal" desc = "A bronze medal." icon_state = "bronze" - _color = "bronze" + item_color = "bronze" materials = list(MAT_METAL=1000) /obj/item/clothing/accessory/medal/conduct @@ -137,7 +137,7 @@ name = "silver medal" desc = "A silver medal." icon_state = "silver" - _color = "silver" + item_color = "silver" materials = list(MAT_SILVER=1000) /obj/item/clothing/accessory/medal/silver/valor @@ -152,7 +152,7 @@ name = "gold medal" desc = "A prestigious golden medal." icon_state = "gold" - _color = "gold" + item_color = "gold" materials = list(MAT_GOLD=1000) /obj/item/clothing/accessory/medal/gold/captain @@ -173,7 +173,7 @@ name = "holobadge" desc = "This glowing blue badge marks the holder as THE LAW." icon_state = "holobadge" - _color = "holobadge" + item_color = "holobadge" slot_flags = SLOT_BELT | SLOT_TIE var/emagged = 0 //Emagging removes Sec check. @@ -181,7 +181,7 @@ /obj/item/clothing/accessory/holobadge/cord icon_state = "holobadge-cord" - _color = "holobadge-cord" + item_color = "holobadge-cord" slot_flags = SLOT_MASK | SLOT_TIE /obj/item/clothing/accessory/holobadge/attack_self(mob/user as mob) @@ -250,57 +250,57 @@ /obj/item/clothing/accessory/scarf/red name = "red scarf" icon_state = "redscarf" - _color = "redscarf" + item_color = "redscarf" /obj/item/clothing/accessory/scarf/green name = "green scarf" icon_state = "greenscarf" - _color = "greenscarf" + item_color = "greenscarf" /obj/item/clothing/accessory/scarf/darkblue name = "dark blue scarf" icon_state = "darkbluescarf" - _color = "darkbluescarf" + item_color = "darkbluescarf" /obj/item/clothing/accessory/scarf/purple name = "purple scarf" icon_state = "purplescarf" - _color = "purplescarf" + item_color = "purplescarf" /obj/item/clothing/accessory/scarf/yellow name = "yellow scarf" icon_state = "yellowscarf" - _color = "yellowscarf" + item_color = "yellowscarf" /obj/item/clothing/accessory/scarf/orange name = "orange scarf" icon_state = "orangescarf" - _color = "orangescarf" + item_color = "orangescarf" /obj/item/clothing/accessory/scarf/lightblue name = "light blue scarf" icon_state = "lightbluescarf" - _color = "lightbluescarf" + item_color = "lightbluescarf" /obj/item/clothing/accessory/scarf/white name = "white scarf" icon_state = "whitescarf" - _color = "whitescarf" + item_color = "whitescarf" /obj/item/clothing/accessory/scarf/black name = "black scarf" icon_state = "blackscarf" - _color = "blackscarf" + item_color = "blackscarf" /obj/item/clothing/accessory/scarf/zebra name = "zebra scarf" icon_state = "zebrascarf" - _color = "zebrascarf" + item_color = "zebrascarf" /obj/item/clothing/accessory/scarf/christmas name = "christmas scarf" icon_state = "christmasscarf" - _color = "christmasscarf" + item_color = "christmasscarf" //The three following scarves don't have the scarf subtype //This is because Ian can equip anything from that subtype @@ -308,22 +308,22 @@ /obj/item/clothing/accessory/stripedredscarf name = "striped red scarf" icon_state = "stripedredscarf" - _color = "stripedredscarf" + item_color = "stripedredscarf" /obj/item/clothing/accessory/stripedgreenscarf name = "striped green scarf" icon_state = "stripedgreenscarf" - _color = "stripedgreenscarf" + item_color = "stripedgreenscarf" /obj/item/clothing/accessory/stripedbluescarf name = "striped blue scarf" icon_state = "stripedbluescarf" - _color = "stripedbluescarf" + item_color = "stripedbluescarf" /obj/item/clothing/accessory/petcollar name = "pet collar" icon_state = "petcollar" - _color = "petcollar" + item_color = "petcollar" var/tagname = null /obj/item/clothing/accessory/petcollar/attack_self(mob/user as mob) diff --git a/code/modules/clothing/under/accessories/armband.dm b/code/modules/clothing/under/accessories/armband.dm index 8c4dd79ffe8..67d0208b6df 100644 --- a/code/modules/clothing/under/accessories/armband.dm +++ b/code/modules/clothing/under/accessories/armband.dm @@ -2,41 +2,41 @@ name = "red armband" desc = "A fancy red armband!" icon_state = "red" - _color = "red" + item_color = "red" slot = "armband" /obj/item/clothing/accessory/armband/cargo name = "cargo armband" desc = "An armband, worn by the crew to display which department they're assigned to. This one is brown." icon_state = "cargo" - _color = "cargo" + item_color = "cargo" /obj/item/clothing/accessory/armband/engine name = "engineering armband" desc = "An armband, worn by the crew to display which department they're assigned to. This one is orange with a reflective strip!" icon_state = "engie" - _color = "engie" + item_color = "engie" /obj/item/clothing/accessory/armband/science name = "science armband" desc = "An armband, worn by the crew to display which department they're assigned to. This one is purple." icon_state = "rnd" - _color = "rnd" + item_color = "rnd" /obj/item/clothing/accessory/armband/hydro name = "hydroponics armband" desc = "An armband, worn by the crew to display which department they're assigned to. This one is green and blue." icon_state = "hydro" - _color = "hydro" + item_color = "hydro" /obj/item/clothing/accessory/armband/med name = "medical armband" desc = "An armband, worn by the crew to display which department they're assigned to. This one is white." icon_state = "med" - _color = "med" + item_color = "med" /obj/item/clothing/accessory/armband/medgreen name = "EMT armband" desc = "An armband, worn by the crew to display which department they're assigned to. This one is white and green." icon_state = "medgreen" - _color = "medgreen" + item_color = "medgreen" diff --git a/code/modules/clothing/under/accessories/holster.dm b/code/modules/clothing/under/accessories/holster.dm index 06e13d50ed0..cc9e37cecd7 100644 --- a/code/modules/clothing/under/accessories/holster.dm +++ b/code/modules/clothing/under/accessories/holster.dm @@ -2,7 +2,7 @@ name = "shoulder holster" desc = "A handgun holster." icon_state = "holster" - _color = "holster" + item_color = "holster" slot = "utility" var/holster_allow = /obj/item/weapon/gun var/obj/item/weapon/gun/holstered = null @@ -125,11 +125,11 @@ name = "shoulder holster" desc = "A worn-out handgun holster. Perfect for concealed carry" icon_state = "holster" - _color = "holster" + item_color = "holster" holster_allow = /obj/item/weapon/gun/projectile /obj/item/clothing/accessory/holster/waist name = "shoulder holster" desc = "A handgun holster. Made of expensive leather." icon_state = "holster" - _color = "holster_low" \ No newline at end of file + item_color = "holster_low" \ No newline at end of file diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/under/accessories/storage.dm index fc560f47476..36e59a86eb3 100644 --- a/code/modules/clothing/under/accessories/storage.dm +++ b/code/modules/clothing/under/accessories/storage.dm @@ -2,7 +2,7 @@ name = "load bearing equipment" desc = "Used to hold things when you don't have enough hands." icon_state = "webbing" - _color = "webbing" + item_color = "webbing" slot = "utility" var/slots = 3 var/obj/item/weapon/storage/internal/hold @@ -69,27 +69,27 @@ name = "webbing" desc = "Sturdy mess of synthcotton belts and buckles, ready to share your burden." icon_state = "webbing" - _color = "webbing" + item_color = "webbing" /obj/item/clothing/accessory/storage/black_vest name = "black webbing vest" desc = "Robust black synthcotton vest with lots of pockets to hold whatever you need, but cannot hold in hands." icon_state = "vest_black" - _color = "vest_black" + item_color = "vest_black" slots = 5 /obj/item/clothing/accessory/storage/brown_vest name = "brown webbing vest" desc = "Worn brownish synthcotton vest with lots of pockets to unload your hands." icon_state = "vest_brown" - _color = "vest_brown" + item_color = "vest_brown" slots = 5 /obj/item/clothing/accessory/storage/knifeharness name = "decorated harness" desc = "A heavily decorated harness of sinew and leather with two knife-loops." icon_state = "unathiharness2" - _color = "unathiharness2" + item_color = "unathiharness2" slots = 2 /obj/item/clothing/accessory/storage/knifeharness/New() diff --git a/code/modules/clothing/under/chameleon.dm b/code/modules/clothing/under/chameleon.dm index 0e67c973e54..14635fb2946 100644 --- a/code/modules/clothing/under/chameleon.dm +++ b/code/modules/clothing/under/chameleon.dm @@ -3,7 +3,7 @@ name = "black jumpsuit" icon_state = "black" item_state = "bl_suit" - _color = "black" + item_color = "black" desc = "It's a plain jumpsuit. It seems to have a small dial on the wrist." origin_tech = "syndicate=3" siemens_coefficient = 0.8 @@ -38,11 +38,11 @@ name = "psychedelic" desc = "Groovy!" icon_state = "psyche" - _color = "psyche" + item_color = "psyche" spawn(200) name = "Black Jumpsuit" icon_state = "bl_suit" - _color = "black" + item_color = "black" desc = null ..() @@ -68,7 +68,7 @@ name = A.name icon_state = A.icon_state item_state = A.item_state - _color = A._color + item_color = A.item_color usr.update_inv_w_uniform() //so our overlays update. diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index eca864123c5..e0386585f26 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -9,13 +9,13 @@ name = initial(C.name) icon_state = initial(C.icon_state) item_state = initial(C.item_state) - _color = initial(C._color) + item_color = initial(C.item_color) /obj/item/clothing/under/color/black name = "black jumpsuit" icon_state = "black" item_state = "bl_suit" - _color = "black" + item_color = "black" flags = ONESIZEFITSALL /obj/item/clothing/under/color/blackf @@ -23,13 +23,13 @@ desc = "It's very smart and in a ladies-size!" icon_state = "black" item_state = "bl_suit" - _color = "blackf" + item_color = "blackf" /obj/item/clothing/under/color/blue name = "blue jumpsuit" icon_state = "blue" item_state = "b_suit" - _color = "blue" + item_color = "blue" flags = ONESIZEFITSALL /obj/item/clothing/under/color/blue/dodgeball @@ -39,7 +39,7 @@ name = "green jumpsuit" icon_state = "green" item_state = "g_suit" - _color = "green" + item_color = "green" flags = ONESIZEFITSALL /obj/item/clothing/under/color/grey @@ -47,7 +47,7 @@ desc = "A tasteful grey jumpsuit that reminds you of the good old days." icon_state = "grey" item_state = "gy_suit" - _color = "grey" + item_color = "grey" flags = ONESIZEFITSALL /obj/item/clothing/under/color/grey/greytide @@ -58,7 +58,7 @@ desc = "Don't wear this near paranoid security officers" icon_state = "orange" item_state = "o_suit" - _color = "orange" + item_color = "orange" flags = ONESIZEFITSALL /obj/item/clothing/under/color/orange/prison @@ -66,7 +66,7 @@ desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." icon_state = "orange" item_state = "o_suit" - _color = "orange" + item_color = "orange" has_sensor = 2 sensor_mode = 3 flags = ONESIZEFITSALL @@ -76,14 +76,14 @@ desc = "Just looking at this makes you feel fabulous." icon_state = "pink" item_state = "p_suit" - _color = "pink" + item_color = "pink" flags = ONESIZEFITSALL /obj/item/clothing/under/color/red name = "red jumpsuit" icon_state = "red" item_state = "r_suit" - _color = "red" + item_color = "red" flags = ONESIZEFITSALL /obj/item/clothing/under/color/red/dodgeball @@ -93,21 +93,21 @@ name = "white jumpsuit" icon_state = "white" item_state = "w_suit" - _color = "white" + item_color = "white" flags = ONESIZEFITSALL /obj/item/clothing/under/color/yellow name = "yellow jumpsuit" icon_state = "yellow" item_state = "y_suit" - _color = "yellow" + item_color = "yellow" flags = ONESIZEFITSALL /obj/item/clothing/under/psyche name = "psychedelic jumpsuit" desc = "Groovy!" icon_state = "psyche" - _color = "psyche" + item_color = "psyche" species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/uniform.dmi' @@ -116,66 +116,66 @@ /obj/item/clothing/under/color/lightblue name = "light blue jumpsuit" icon_state = "lightblue" - _color = "lightblue" + item_color = "lightblue" /obj/item/clothing/under/color/aqua name = "aqua jumpsuit" icon_state = "aqua" - _color = "aqua" + item_color = "aqua" flags = ONESIZEFITSALL /obj/item/clothing/under/color/purple name = "purple jumpsuit" icon_state = "purple" item_state = "p_suit" - _color = "purple" + item_color = "purple" /obj/item/clothing/under/color/lightpurple name = "light purple jumpsuit" icon_state = "lightpurple" - _color = "lightpurple" + item_color = "lightpurple" /obj/item/clothing/under/color/lightgreen name = "light green jumpsuit" icon_state = "lightgreen" - _color = "lightgreen" + item_color = "lightgreen" /obj/item/clothing/under/color/lightblue name = "light blue jumpsuit" icon_state = "lightblue" - _color = "lightblue" + item_color = "lightblue" /obj/item/clothing/under/color/lightbrown name = "light brown jumpsuit" icon_state = "lightbrown" - _color = "lightbrown" + item_color = "lightbrown" flags = ONESIZEFITSALL /obj/item/clothing/under/color/brown name = "brown jumpsuit" icon_state = "brown" - _color = "brown" + item_color = "brown" /obj/item/clothing/under/color/yellowgreen name = "yellow green jumpsuit" icon_state = "yellowgreen" - _color = "yellowgreen" + item_color = "yellowgreen" /obj/item/clothing/under/color/darkblue name = "dark blue jumpsuit" icon_state = "darkblue" - _color = "darkblue" + item_color = "darkblue" flags = ONESIZEFITSALL /obj/item/clothing/under/color/lightred name = "light red jumpsuit" icon_state = "lightred" - _color = "lightred" + item_color = "lightred" /obj/item/clothing/under/color/darkred name = "dark red jumpsuit" icon_state = "darkred" - _color = "darkred" + item_color = "darkred" flags = ONESIZEFITSALL /obj/item/clothing/under/color/red/jersey @@ -183,7 +183,7 @@ desc = "The jersey of the Nanotrasen Phi-ghters!" icon_state = "redjersey" item_state = "r_suit" - _color = "redjersey" + item_color = "redjersey" flags = ONESIZEFITSALL /obj/item/clothing/under/color/blue/jersey @@ -191,5 +191,5 @@ desc = "The jersey of the Nanotrasen Pi-rates!" icon_state = "bluejersey" item_state = "b_suit" - _color = "bluejersey" + item_color = "bluejersey" flags = ONESIZEFITSALL diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 9d7b74e9e82..78d9428d4b2 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -5,7 +5,7 @@ name = "bartender's uniform" icon_state = "ba_suit" item_state = "ba_suit" - _color = "ba_suit" + item_color = "ba_suit" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define. @@ -13,7 +13,7 @@ name = "captain's jumpsuit" icon_state = "captain" item_state = "caparmor" - _color = "captain" + item_color = "captain" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/cargo @@ -21,7 +21,7 @@ desc = "It's a jumpsuit worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper." icon_state = "qm" item_state = "lb_suit" - _color = "qm" + item_color = "qm" flags = ONESIZEFITSALL @@ -30,7 +30,7 @@ desc = "Shooooorts! They're comfy and easy to wear!" icon_state = "cargotech" item_state = "lb_suit" - _color = "cargo" + item_color = "cargo" flags = ONESIZEFITSALL @@ -39,14 +39,14 @@ name = "chaplain's jumpsuit" icon_state = "chaplain" item_state = "bl_suit" - _color = "chapblack" + item_color = "chapblack" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/chef desc = "It's an apron which is given only to the most hardcore chefs in space." name = "chef's uniform" icon_state = "chef" - _color = "chef" + item_color = "chef" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/clown @@ -54,7 +54,7 @@ desc = "'HONK!'" icon_state = "clown" item_state = "clown" - _color = "clown" + item_color = "clown" flags = ONESIZEFITSALL @@ -63,7 +63,7 @@ name = "head of personnel's jumpsuit" icon_state = "hop" item_state = "b_suit" - _color = "hop" + item_color = "hop" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/head_of_personnel_whimsy @@ -71,7 +71,7 @@ name = "head of personnel's suit" icon_state = "hopwhimsy" item_state = "hopwhimsy" - _color = "hopwhimsy" + item_color = "hopwhimsy" /obj/item/clothing/under/rank/hydroponics @@ -79,7 +79,7 @@ name = "botanist's jumpsuit" icon_state = "hydroponics" item_state = "g_suit" - _color = "hydroponics" + item_color = "hydroponics" permeability_coefficient = 0.50 flags = ONESIZEFITSALL @@ -88,7 +88,7 @@ name = "Internal Affairs uniform" icon_state = "internalaffairs" item_state = "internalaffairs" - _color = "internalaffairs" + item_color = "internalaffairs" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/ntrep @@ -96,14 +96,14 @@ name = "dress shirt" icon_state = "internalaffairs" item_state = "internalaffairs" - _color = "internalaffairs" + item_color = "internalaffairs" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/janitor desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards." name = "janitor's jumpsuit" icon_state = "janitor" - _color = "janitor" + item_color = "janitor" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -116,42 +116,42 @@ /obj/item/clothing/under/lawyer/black icon_state = "lawyer_black" item_state = "lawyer_black" - _color = "lawyer_black" + item_color = "lawyer_black" /obj/item/clothing/under/lawyer/female icon_state = "black_suit_fem" item_state = "black_suit_fem" - _color = "black_suit_fem" + item_color = "black_suit_fem" /obj/item/clothing/under/lawyer/red icon_state = "lawyer_red" item_state = "lawyer_red" - _color = "lawyer_red" + item_color = "lawyer_red" /obj/item/clothing/under/lawyer/blue icon_state = "lawyer_blue" item_state = "lawyer_blue" - _color = "lawyer_blue" + item_color = "lawyer_blue" /obj/item/clothing/under/lawyer/bluesuit name = "Blue Suit" desc = "A classy suit and tie" icon_state = "bluesuit" item_state = "bluesuit" - _color = "bluesuit" + item_color = "bluesuit" /obj/item/clothing/under/lawyer/purpsuit name = "Purple Suit" icon_state = "lawyer_purp" item_state = "lawyer_purp" - _color = "lawyer_purp" + item_color = "lawyer_purp" /obj/item/clothing/under/lawyer/oldman name = "Old Man's Suit" desc = "A classic suit for the older gentleman with built in back support." icon_state = "oldman" item_state = "oldman" - _color = "oldman" + item_color = "oldman" /obj/item/clothing/under/librarian @@ -159,7 +159,7 @@ desc = "It's very... sensible." icon_state = "red_suit" item_state = "red_suit" - _color = "red_suit" + item_color = "red_suit" flags = ONESIZEFITSALL /obj/item/clothing/under/mime @@ -167,7 +167,7 @@ desc = "It's not very colourful." icon_state = "mime" item_state = "mime" - _color = "mime" + item_color = "mime" flags = ONESIZEFITSALL @@ -176,7 +176,7 @@ name = "shaft miner's jumpsuit" icon_state = "miner" item_state = "miner" - _color = "miner" + item_color = "miner" flags = ONESIZEFITSALL /obj/item/clothing/under/barber @@ -184,4 +184,4 @@ name = "barber's uniform" icon_state = "barber" item_state = "barber" - _color = "barber" + item_color = "barber" diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index c190e31c95b..4b91e82b2fc 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -4,7 +4,7 @@ name = "chief engineer's jumpsuit" icon_state = "chiefengineer" item_state = "g_suit" - _color = "chief" + item_color = "chief" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) flags = ONESIZEFITSALL @@ -13,7 +13,7 @@ name = "atmospheric technician's jumpsuit" icon_state = "atmos" item_state = "atmos_suit" - _color = "atmos" + item_color = "atmos" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/engineer @@ -21,7 +21,7 @@ name = "engineer's jumpsuit" icon_state = "engine" item_state = "engi_suit" - _color = "engine" + item_color = "engine" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) flags = ONESIZEFITSALL @@ -30,7 +30,7 @@ name = "roboticist's jumpsuit" icon_state = "robotics" item_state = "robotics" - _color = "robotics" + item_color = "robotics" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/mechanic @@ -38,4 +38,4 @@ name = "mechanic's overalls" icon_state = "mechanic" item_state = "mechanic" - _color = "mechanic" + item_color = "mechanic" diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index b5895bc9d26..b6f83e78beb 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -6,7 +6,7 @@ name = "research director's jumpsuit" icon_state = "director" item_state = "g_suit" - _color = "director" + item_color = "director" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -15,7 +15,7 @@ name = "scientist's jumpsuit" icon_state = "toxins" item_state = "w_suit" - _color = "toxinswhite" + item_color = "toxinswhite" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) flags = ONESIZEFITSALL @@ -25,7 +25,7 @@ name = "chemist's jumpsuit" icon_state = "chemistry" item_state = "w_suit" - _color = "chemistrywhite" + item_color = "chemistrywhite" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -38,7 +38,7 @@ name = "chief medical officer's jumpsuit" icon_state = "cmo" item_state = "w_suit" - _color = "cmo" + item_color = "cmo" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -48,7 +48,7 @@ name = "geneticist's jumpsuit" icon_state = "genetics" item_state = "w_suit" - _color = "geneticswhite" + item_color = "geneticswhite" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -58,7 +58,7 @@ name = "virologist's jumpsuit" icon_state = "virology" item_state = "w_suit" - _color = "virologywhite" + item_color = "virologywhite" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -68,7 +68,7 @@ name = "nurse's suit" icon_state = "nursesuit" item_state = "nursesuit" - _color = "nursesuit" + item_color = "nursesuit" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -78,7 +78,7 @@ name = "nurse's dress" icon_state = "nurse" item_state = "nurse" - _color = "nurse" + item_color = "nurse" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -88,7 +88,7 @@ name = "orderly's uniform" icon_state = "orderly" item_state = "orderly" - _color = "orderly" + item_color = "orderly" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -98,7 +98,7 @@ name = "medical doctor's jumpsuit" icon_state = "medical" item_state = "w_suit" - _color = "medical" + item_color = "medical" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -107,28 +107,28 @@ name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue." icon_state = "scrubsblue" - _color = "scrubsblue" + item_color = "scrubsblue" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/medical/green name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green." icon_state = "scrubsgreen" - _color = "scrubsgreen" + item_color = "scrubsgreen" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/medical/purple name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple." icon_state = "scrubspurple" - _color = "scrubspurple" + item_color = "scrubspurple" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/medical/mortician name = "coroner's scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is as dark as an emo's poetry." icon_state = "scrubsblack" - _color = "scrubsblack" + item_color = "scrubsblack" flags = ONESIZEFITSALL //paramedic @@ -137,7 +137,7 @@ name = "paramedic's jumpsuit" icon_state = "paramedic" item_state = "paramedic" - _color = "paramedic" + item_color = "paramedic" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10) flags = ONESIZEFITSALL @@ -147,7 +147,7 @@ name = "psychiatrist's jumpsuit" icon_state = "psych" item_state = "w_suit" - _color = "psych" + item_color = "psych" flags = ONESIZEFITSALL /obj/item/clothing/under/rank/psych/turtleneck @@ -155,7 +155,7 @@ name = "psychologist's turtleneck" icon_state = "psychturtle" item_state = "b_suit" - _color = "psychturtle" + item_color = "psychturtle" flags = ONESIZEFITSALL @@ -167,7 +167,7 @@ name = "geneticist's jumpsuit" icon_state = "genetics_new" item_state = "w_suit" - _color = "genetics_new" + item_color = "genetics_new" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -177,7 +177,7 @@ name = "chemist's jumpsuit" icon_state = "chemist_new" item_state = "w_suit" - _color = "chemist_new" + item_color = "chemist_new" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL @@ -187,7 +187,7 @@ name = "scientist's jumpsuit" icon_state = "scientist_new" item_state = "w_suit" - _color = "scientist_new" + item_color = "scientist_new" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0) flags = ONESIZEFITSALL @@ -197,7 +197,7 @@ name = "virologist's jumpsuit" icon_state = "virologist_new" item_state = "w_suit" - _color = "virologist_new" + item_color = "virologist_new" permeability_coefficient = 0.50 armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 0c73309342d..9982e7c592a 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -14,7 +14,7 @@ name = "warden's jumpsuit" icon_state = "warden" item_state = "r_suit" - _color = "warden" + item_color = "warden" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = ONESIZEFITSALL siemens_coefficient = 0.9 @@ -24,7 +24,7 @@ desc = "It's made of a slightly sturdier material than standard jumpsuits, to allow for robust protection." icon_state = "security" item_state = "r_suit" - _color = "secred" + item_color = "secred" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = ONESIZEFITSALL siemens_coefficient = 0.9 @@ -34,7 +34,7 @@ desc = "A dress shirt and khakis with a security patch sewn on." icon_state = "dispatch" item_state = "dispatch" - _color = "dispatch" + item_color = "dispatch" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = ONESIZEFITSALL siemens_coefficient = 0.9 @@ -44,7 +44,7 @@ desc = "It's made of a slightly sturdier material, to allow for robust protection." icon_state = "redshirt2" item_state = "r_suit" - _color = "redshirt2" + item_color = "redshirt2" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = ONESIZEFITSALL siemens_coefficient = 0.9 @@ -52,12 +52,12 @@ /obj/item/clothing/under/rank/security/corp icon_state = "sec_corporate" item_state = "sec_corporate" - _color = "sec_corporate" + item_color = "sec_corporate" /obj/item/clothing/under/rank/warden/corp icon_state = "warden_corporate" item_state = "warden_corporate" - _color = "warden_corporate" + item_color = "warden_corporate" /* * Detective @@ -67,7 +67,7 @@ desc = "Someone who wears this means business." icon_state = "detective" item_state = "det" - _color = "detective" + item_color = "detective" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = ONESIZEFITSALL siemens_coefficient = 0.9 @@ -84,7 +84,7 @@ name = "head of security's jumpsuit" icon_state = "hos" item_state = "r_suit" - _color = "hosred" + item_color = "hosred" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) flags = ONESIZEFITSALL siemens_coefficient = 0.8 @@ -92,7 +92,7 @@ /obj/item/clothing/under/rank/head_of_security/corp icon_state = "hos_corporate" item_state = "hos_corporate" - _color = "hos_corporate" + item_color = "hos_corporate" //Jensen cosplay gear /obj/item/clothing/under/rank/head_of_security/jensen @@ -100,7 +100,7 @@ name = "head of security's jumpsuit" icon_state = "jensen" item_state = "jensen" - _color = "jensen" + item_color = "jensen" siemens_coefficient = 0.6 flags = ONESIZEFITSALL @@ -133,21 +133,21 @@ desc = "A formal security suit for officers complete with nanotrasen belt buckle." icon_state = "security_formal" item_state = "gy_suit" - _color = "security_formal" + item_color = "security_formal" /obj/item/clothing/under/rank/warden/formal name = "warden's suit" desc = "A formal security suit for the warden with blue desginations and '/Warden/' stiched into the shoulders." icon_state = "warden_formal" item_state = "gy_suit" - _color = "warden_formal" + item_color = "warden_formal" /obj/item/clothing/under/rank/head_of_security/formal name = "head of security's suit" desc = "A security suit decorated for those few with the dedication to achieve the position of Head of Security." icon_state = "hos_formal" item_state = "gy_suit" - _color = "hos_formal" + item_color = "hos_formal" //Brig Physician @@ -156,7 +156,7 @@ name = "brig physician's jumpsuit" icon_state = "brig_phys" item_state = "brig_phys" - _color = "brig_phys" + item_color = "brig_phys" permeability_coefficient = 0.50 armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) flags = ONESIZEFITSALL \ No newline at end of file diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 704746d851d..e33e9e598a4 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -2,14 +2,14 @@ name = "red pj's" desc = "Sleepwear." icon_state = "red_pyjamas" - _color = "red_pyjamas" + item_color = "red_pyjamas" item_state = "w_suit" /obj/item/clothing/under/pj/blue name = "blue pj's" desc = "Sleepwear." icon_state = "blue_pyjamas" - _color = "blue_pyjamas" + item_color = "blue_pyjamas" item_state = "w_suit" /obj/item/clothing/under/patriotsuit @@ -17,76 +17,76 @@ desc = "Motorcycle not included." icon_state = "ek" item_state = "ek" - _color = "ek" + item_color = "ek" /obj/item/clothing/under/captain_fly name = "rogue captains uniform" desc = "For the man who doesn't care because he's still free." icon_state = "captain_fly" item_state = "captain_fly" - _color = "captain_fly" + item_color = "captain_fly" /obj/item/clothing/under/scratch name = "white suit" desc = "A white suit, suitable for an excellent host" icon_state = "scratch" item_state = "scratch" - _color = "scratch" + item_color = "scratch" /obj/item/clothing/under/sl_suit desc = "It's a very amish looking suit." name = "amish suit" icon_state = "sl_suit" - _color = "sl_suit" + item_color = "sl_suit" /obj/item/clothing/under/waiter name = "waiter's outfit" desc = "It's a very smart uniform with a special pocket for tip." icon_state = "waiter" item_state = "waiter" - _color = "waiter" + item_color = "waiter" /obj/item/clothing/under/rank/mailman name = "mailman's jumpsuit" desc = "'Special delivery!'" icon_state = "mailman" item_state = "b_suit" - _color = "mailman" + item_color = "mailman" /obj/item/clothing/under/sexyclown name = "sexy-clown suit" desc = "It makes you look HONKable!" icon_state = "sexyclown" item_state = "sexyclown" - _color = "sexyclown" + item_color = "sexyclown" /obj/item/clothing/under/rank/vice name = "vice officer's jumpsuit" desc = "It's the standard issue pretty-boy outfit, as seen on Holo-Vision." icon_state = "vice" item_state = "gy_suit" - _color = "vice" + item_color = "vice" /obj/item/clothing/under/rank/centcom_officer desc = "It's a jumpsuit worn by CentCom Officers." name = "\improper CentCom officer's jumpsuit" icon_state = "officer" item_state = "g_suit" - _color = "officer" + item_color = "officer" /obj/item/clothing/under/rank/centcom_commander desc = "It's a jumpsuit worn by CentCom's highest-tier Commanders." name = "\improper CentCom officer's jumpsuit" icon_state = "centcom" item_state = "dg_suit" - _color = "centcom" + item_color = "centcom" /obj/item/clothing/under/rank/centcom/officer desc = "Gold trim on space-black cloth, this uniform displays the rank of \"Lieutenant-Commander\" and bears \"N.C.V. Fearless CV-286\" on the left shounder." name = "\improper Nanotrasen Officers Uniform" icon_state = "officer" item_state = "g_suit" - _color = "officer" + item_color = "officer" displays_id = 0 flags = ONESIZEFITSALL @@ -95,7 +95,7 @@ name = "\improper Nanotrasen Captains Uniform" icon_state = "centcom" item_state = "dg_suit" - _color = "centcom" + item_color = "centcom" displays_id = 0 /obj/item/clothing/under/rank/centcom/blueshield @@ -103,7 +103,7 @@ name = "\improper Nanotrasen Navy Uniform" icon_state = "officer" item_state = "g_suit" - _color = "officer" + item_color = "officer" displays_id = 0 flags = ONESIZEFITSALL @@ -112,7 +112,7 @@ name = "\improper Nanotrasen Navy Uniform" icon_state = "officer" item_state = "g_suit" - _color = "officer" + item_color = "officer" displays_id = 0 flags = ONESIZEFITSALL @@ -121,7 +121,7 @@ name = "\improper Nanotrasen Diplomatic Uniform" icon_state = "presidente" item_state = "g_suit" - _color = "presidente" + item_color = "presidente" displays_id = 0 /obj/item/clothing/under/rank/blueshield @@ -129,7 +129,7 @@ desc = "A short-sleeved black uniform, paired with grey digital-camo cargo pants. Standard issue to Blueshield officers." icon_state = "ert_uniform" item_state = "bl_suit" - _color = "ert_uniform" + item_color = "ert_uniform" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/space @@ -137,7 +137,7 @@ desc = "It has a NASA logo on it and is made of space-proofed materials." icon_state = "black" item_state = "bl_suit" - _color = "black" + item_color = "black" w_class = 4//bulky item gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 @@ -151,7 +151,7 @@ name = "administrative cybernetic jumpsuit" icon_state = "syndicate" item_state = "bl_suit" - _color = "syndicate" + item_color = "syndicate" desc = "it's a cybernetically enhanced jumpsuit used for administrative duties." gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 @@ -168,69 +168,69 @@ name = "johnny~~ jumpsuit" desc = "Johnny~~" icon_state = "johnny" - _color = "johnny" + item_color = "johnny" /obj/item/clothing/under/rainbow name = "rainbow" desc = "rainbow" icon_state = "rainbow" item_state = "rainbow" - _color = "rainbow" + item_color = "rainbow" /obj/item/clothing/under/cloud name = "cloud" desc = "cloud" icon_state = "cloud" - _color = "cloud" + item_color = "cloud" /obj/item/clothing/under/psysuit name = "dark undersuit" desc = "A thick, layered grey undersuit lined with power cables. Feels a little like wearing an electrical storm." icon_state = "psysuit" item_state = "psysuit" - _color = "psysuit" + item_color = "psysuit" /obj/item/clothing/under/gimmick/rank/captain/suit name = "captain's suit" desc = "A green suit and yellow necktie. Exemplifies authority." icon_state = "green_suit" item_state = "dg_suit" - _color = "green_suit" + item_color = "green_suit" /obj/item/clothing/under/gimmick/rank/head_of_personnel/suit name = "head of personnel's suit" desc = "A teal suit and yellow necktie. An authoritative yet tacky ensemble." icon_state = "teal_suit" item_state = "g_suit" - _color = "teal_suit" + item_color = "teal_suit" /obj/item/clothing/under/suit_jacket name = "black suit" desc = "A black suit and red tie. Very formal." icon_state = "black_suit" item_state = "bl_suit" - _color = "black_suit" + item_color = "black_suit" /obj/item/clothing/under/suit_jacket/really_black name = "executive suit" desc = "A formal black suit and red tie, intended for the station's finest." icon_state = "really_black_suit" item_state = "bl_suit" - _color = "really_black_suit" + item_color = "really_black_suit" /obj/item/clothing/under/suit_jacket/female name = "executive suit" desc = "A formal trouser suit for women, intended for the station's finest." icon_state = "black_suit_fem" item_state = "black_suit_fem" - _color = "black_suit_fem" + item_color = "black_suit_fem" /obj/item/clothing/under/suit_jacket/red name = "red suit" desc = "A red suit and blue tie. Somewhat formal." icon_state = "red_suit" item_state = "r_suit" - _color = "red_suit" + item_color = "red_suit" flags = ONESIZEFITSALL /obj/item/clothing/under/suit_jacket/navy @@ -238,34 +238,34 @@ desc = "A navy suit and red tie, intended for the station's finest." icon_state = "navy_suit" item_state = "navy_suit" - _color = "navy_suit" + item_color = "navy_suit" /obj/item/clothing/under/suit_jacket/tan name = "tan suit" desc = "A tan suit with a yellow tie. Smart, but casual." icon_state = "tan_suit" item_state = "tan_suit" - _color = "tan_suit" + item_color = "tan_suit" /obj/item/clothing/under/suit_jacket/burgundy name = "burgundy suit" desc = "A burgundy suit and black tie. Somewhat formal." icon_state = "burgundy_suit" item_state = "burgundy_suit" - _color = "burgundy_suit" + item_color = "burgundy_suit" /obj/item/clothing/under/suit_jacket/charcoal name = "charcoal suit" desc = "A charcoal suit and red tie. Very professional." icon_state = "charcoal_suit" item_state = "charcoal_suit" - _color = "charcoal_suit" + item_color = "charcoal_suit" /obj/item/clothing/under/blackskirt name = "black skirt" desc = "A black skirt, very fancy!" icon_state = "blackskirt" - _color = "blackskirt" + item_color = "blackskirt" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/under/schoolgirl @@ -273,7 +273,7 @@ desc = "It's just like one of my Japanese animes!" icon_state = "schoolgirl" item_state = "schoolgirl" - _color = "schoolgirl" + item_color = "schoolgirl" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS /obj/item/clothing/under/overalls @@ -281,42 +281,42 @@ desc = "A set of durable overalls for getting the job done." icon_state = "overalls" item_state = "lb_suit" - _color = "overalls" + item_color = "overalls" /obj/item/clothing/under/pirate name = "pirate outfit" desc = "Yarr." icon_state = "pirate" item_state = "pirate" - _color = "pirate" + item_color = "pirate" /obj/item/clothing/under/pirate_rags name = "pirate rags" desc = "an old ragged set of clothing" icon_state = "piraterags" item_state = "piraterags" - _color = "piraterags" + item_color = "piraterags" /obj/item/clothing/under/soviet name = "soviet uniform" desc = "For the Motherland!" icon_state = "soviet" item_state = "soviet" - _color = "soviet" + item_color = "soviet" /obj/item/clothing/under/redcoat name = "redcoat uniform" desc = "Looks old." icon_state = "redcoat" item_state = "redcoat" - _color = "redcoat" + item_color = "redcoat" /obj/item/clothing/under/kilt name = "kilt" desc = "Includes shoes and plaid" icon_state = "kilt" item_state = "kilt" - _color = "kilt" + item_color = "kilt" body_parts_covered = UPPER_TORSO|LOWER_TORSO|FEET /obj/item/clothing/under/sexymime @@ -324,7 +324,7 @@ desc = "The only time when you DON'T enjoy looking at someone's rack." icon_state = "sexymime" item_state = "sexymime" - _color = "sexymime" + item_color = "sexymime" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/gladiator @@ -332,7 +332,7 @@ desc = "Are you not entertained? Is that not why you are here?" icon_state = "gladiator" item_state = "gladiator" - _color = "gladiator" + item_color = "gladiator" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS //dress @@ -341,79 +341,79 @@ name = "flame dress" desc = "A small black dress with blue flames print on it." icon_state = "dress_fire" - _color = "dress_fire" + item_color = "dress_fire" /obj/item/clothing/under/dress/dress_green name = "green dress" desc = "A simple, tight fitting green dress." icon_state = "dress_green" - _color = "dress_green" + item_color = "dress_green" /obj/item/clothing/under/dress/dress_orange name = "orange dress" desc = "A fancy orange gown for those who like to show leg." icon_state = "dress_orange" - _color = "dress_orange" + item_color = "dress_orange" /obj/item/clothing/under/dress/dress_pink name = "pink dress" desc = "A simple, tight fitting pink dress." icon_state = "dress_pink" - _color = "dress_pink" + item_color = "dress_pink" /obj/item/clothing/under/dress/dress_yellow name = "yellow dress" desc = "A flirty, little yellow dress." icon_state = "dress_yellow" - _color = "dress_yellow" + item_color = "dress_yellow" /obj/item/clothing/under/dress/dress_saloon name = "saloon girl dress" desc = "A old western inspired gown for the girl who likes to drink." icon_state = "dress_saloon" - _color = "dress_saloon" + item_color = "dress_saloon" /obj/item/clothing/under/dress/dress_rd name = "research director dress uniform" desc = "Feminine fashion for the style concious RD." icon_state = "dress_rd" - _color = "dress_rd" + item_color = "dress_rd" /obj/item/clothing/under/dress/dress_cap name = "captain dress uniform" desc = "Feminine fashion for the style concious captain." icon_state = "dress_cap" - _color = "dress_cap" + item_color = "dress_cap" /obj/item/clothing/under/dress/dress_hop name = "head of personal dress uniform" desc = "Feminine fashion for the style concious HoP." icon_state = "dress_hop" - _color = "dress_hop" + item_color = "dress_hop" /obj/item/clothing/under/dress/dress_hr name = "human resources director uniform" desc = "Superior class for the nosy H.R. Director." icon_state = "huresource" - _color = "huresource" + item_color = "huresource" /obj/item/clothing/under/dress/plaid_blue name = "blue plaid skirt" desc = "A preppy blue skirt with a white blouse." icon_state = "plaid_blue" - _color = "plaid_blue" + item_color = "plaid_blue" /obj/item/clothing/under/dress/plaid_red name = "red plaid skirt" desc = "A preppy red skirt with a white blouse." icon_state = "plaid_red" - _color = "plaid_red" + item_color = "plaid_red" /obj/item/clothing/under/dress/plaid_purple name = "blue purple skirt" desc = "A preppy purple skirt with a white blouse." icon_state = "plaid_purple" - _color = "plaid_purple" + item_color = "plaid_purple" //wedding stuff @@ -421,35 +421,35 @@ name = "orange wedding dress" desc = "A big and puffy orange dress." icon_state = "bride_orange" - _color = "bride_orange" + item_color = "bride_orange" flags_inv = HIDESHOES /obj/item/clothing/under/wedding/bride_purple name = "purple wedding dress" desc = "A big and puffy purple dress." icon_state = "bride_purple" - _color = "bride_purple" + item_color = "bride_purple" flags_inv = HIDESHOES /obj/item/clothing/under/wedding/bride_blue name = "blue wedding dress" desc = "A big and puffy blue dress." icon_state = "bride_blue" - _color = "bride_blue" + item_color = "bride_blue" flags_inv = HIDESHOES /obj/item/clothing/under/wedding/bride_red name = "red wedding dress" desc = "A big and puffy red dress." icon_state = "bride_red" - _color = "bride_red" + item_color = "bride_red" flags_inv = HIDESHOES /obj/item/clothing/under/wedding/bride_white name = "orange wedding dress" desc = "A white wedding gown made from the finest silk." icon_state = "bride_white" - _color = "bride_white" + item_color = "bride_white" flags_inv = HIDESHOES /obj/item/clothing/under/sundress @@ -457,14 +457,14 @@ desc = "Makes you want to frolic in a field of daisies." icon_state = "sundress" item_state = "sundress" - _color = "sundress" + item_color = "sundress" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/roman name = "roman armor" desc = "An ancient Roman armor. Made of metallic strips and leather straps." icon_state = "roman" - _color = "roman" + item_color = "roman" item_state = "armor" /obj/item/clothing/under/maid @@ -472,7 +472,7 @@ desc = "Maid in China." icon_state = "meido" item_state = "meido" - _color = "meido" + item_color = "meido" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/janimaid @@ -480,7 +480,7 @@ desc = "A simple maid uniform for housekeeping." icon_state = "janimaid" item_state = "janimaid" - _color = "janimaid" + item_color = "janimaid" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/flappers @@ -488,42 +488,42 @@ desc = "Nothing like the roarin' '20s, flapping the night away on the dance floor." icon_state = "flapper" item_state = "flapper" - _color = "flapper" + item_color = "flapper" /obj/item/clothing/under/mafia name = "mafia outfit" desc = "The business of the mafia is business." icon_state = "mafia" item_state = "mafia" - _color = "mafia" + item_color = "mafia" /obj/item/clothing/under/mafia/vest name = "mafia vest" desc = "Extreme problems often require extreme solutions." icon_state = "mafiavest" item_state = "mafiavest" - _color = "mafiavest" + item_color = "mafiavest" /obj/item/clothing/under/mafia/white name = "white mafia outfit" desc = "The best defense against the treacherous is treachery." icon_state = "mafiawhite" item_state = "mafiawhite" - _color = "mafiawhite" + item_color = "mafiawhite" /obj/item/clothing/under/mafia/sue name = "mafia vest" desc = "The business is born into." icon_state = "suevest" item_state = "suevest" - _color = "suevest" + item_color = "suevest" /obj/item/clothing/under/mafia/tan name = "leather mafia outfit" desc = "The big drum sounds good only from a distance." icon_state = "mafiatan" item_state = "mafiatan" - _color = "mafiatan" + item_color = "mafiatan" /obj/item/clothing/under/bane @@ -531,42 +531,42 @@ desc = "Wear this harness to become the bane of the station." icon_state = "bane" item_state = "bane" - _color = "bane" + item_color = "bane" /obj/item/clothing/under/vox_grey name = "Grey Vox Jumpsuit" desc = "An assistant's jumpsuit ripped to better fit a vox." icon_state = "vgrey" item_state = "vgrey" - _color = "vgrey" + item_color = "vgrey" /obj/item/clothing/under/vox_robotics name = "Vox Robotics Jumpsuit" desc = "A roboticist's jumpsuit ripped to better fit a vox." icon_state = "vrobotics" item_state = "vrobotics" - _color = "vrobotics" + item_color = "vrobotics" /obj/item/clothing/under/vox_toxins name = "Vox Toxins Jumpsuit" desc = "A Toxin Researcher's jumpsuit ripped to better fit a vox." icon_state = "vtoxinswhite" item_state = "vtoxinswhite" - _color = "vtoxinswhite" + item_color = "vtoxinswhite" /obj/item/clothing/under/vox_atmos name = "Vox Atmos Jumpsuit" desc = "An Atmos Tech's jumpsuit ripped to better fit a vox." icon_state = "vatmos" item_state = "vatmos" - _color = "vatmos" + item_color = "vatmos" /obj/item/clothing/under/vox_engi name = "Vox Engineer Jumpsuit" desc = "An Engineer's jumpsuit ripped to better fit a vox." icon_state = "vengine" item_state = "vengine" - _color = "vengine" + item_color = "vengine" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10) /obj/item/clothing/under/vox_sec @@ -574,7 +574,7 @@ desc = "A Security officer's jumpsuit ripped to better fit a vox." icon_state = "vred" item_state = "vred" - _color = "vred" + item_color = "vred" armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) /obj/item/clothing/under/vox_chem @@ -582,7 +582,7 @@ desc = "A Chemist's jumpsuit ripped to better fit a vox." icon_state = "vchem" item_state = "vchem" - _color = "vchem" + item_color = "vchem" armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0) /obj/item/clothing/under/psyjump @@ -590,34 +590,34 @@ desc = "A suit made of strange materials." icon_state = "psyamp" item_state = "psyamp" - _color = "psyamp" + item_color = "psyamp" /obj/item/clothing/under/rebeloutfit name = "Rebel Outfit" desc = "Made in Seattle, 2216." icon_state = "colin_earle" item_state = "colin_earle" - _color = "colin_earle" + item_color = "colin_earle" /obj/item/clothing/under/officeruniform name = "Clown Officer's Uniform" desc = "For Clown officers, this uniform was designed by the great clown designer Hugo Boss." icon_state = "officeruniform" - _color = "officeruniform" + item_color = "officeruniform" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/soldieruniform name = "Clown Soldier's Uniform" desc = "For the basic grunt of the Clown army." icon_state = "soldieruniform" - _color = "soldieruniform" + item_color = "soldieruniform" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/pennywise name = "Pennywise Costume" desc = "It's everything you ever were afraid of." icon_state = "pennywise" - _color = "pennywise" + item_color = "pennywise" body_parts_covered = UPPER_TORSO|LOWER_TORSO /obj/item/clothing/under/assistantformal @@ -625,60 +625,60 @@ desc = "An assistant's formal-wear. Why an assistant needs formal-wear is still unknown." icon_state = "assistant_formal" item_state = "gy_suit" - _color = "assistant_formal" + item_color = "assistant_formal" /obj/item/clothing/under/blacktango name = "black tango dress" desc = "Filled with Latin fire." icon_state = "black_tango" item_state = "wcoat" - _color = "black_tango" + item_color = "black_tango" /obj/item/clothing/under/stripeddress name = "striped dress" desc = "Fashion in space." icon_state = "striped_dress" item_state = "stripeddress" - _color = "striped_dress" + item_color = "striped_dress" /obj/item/clothing/under/sailordress name = "sailor dress" desc = "Formal wear for a leading lady." icon_state = "sailor_dress" item_state = "sailordress" - _color = "sailor_dress" + item_color = "sailor_dress" /obj/item/clothing/under/redeveninggown name = "red evening gown" desc = "Fancy dress for space bar singers." icon_state = "red_evening_gown" item_state = "redeveninggown" - _color = "red_evening_gown" + item_color = "red_evening_gown" /obj/item/clothing/under/suit_jacket/checkered name = "checkered suit" desc = "That's a very nice suit you have there. Shame if something were to happen to it, eh?" icon_state = "checkered_suit" item_state = "checkered_suit" - _color = "checkered_suit" + item_color = "checkered_suit" /obj/item/clothing/under/owl name = "owl uniform" desc = "A soft brown jumpsuit made of synthetic feathers and strong conviction." icon_state = "owl" - _color = "owl" + item_color = "owl" flags = NODROP /obj/item/clothing/under/griffin name = "griffon uniform" desc = "A soft brown jumpsuit with a white feather collar made of synthetic feathers and a lust for mayhem." icon_state = "griffin" - _color = "griffin" + item_color = "griffin" flags = NODROP /obj/item/clothing/under/noble_clothes name = "noble clothes" desc = "They fall just short of majestic." icon_state = "noble_clothes" - _color = "noble_clothes" + item_color = "noble_clothes" item_state = "noble_clothes" diff --git a/code/modules/clothing/under/pants.dm b/code/modules/clothing/under/pants.dm index 92ce44bdac3..8beff8f41f3 100644 --- a/code/modules/clothing/under/pants.dm +++ b/code/modules/clothing/under/pants.dm @@ -7,83 +7,83 @@ name = "classic jeans" desc = "You feel cooler already." icon_state = "jeansclassic" - _color = "jeansclassic" + item_color = "jeansclassic" /obj/item/clothing/under/pants/mustangjeans name = "Must Hang jeans" desc = "Made in the finest space jeans factory this side of Alpha Centauri." icon_state = "jeansmustang" - _color = "jeansmustang" + item_color = "jeansmustang" /obj/item/clothing/under/pants/blackjeans name = "black jeans" desc = "Only for those who can pull it off." icon_state = "jeansblack" - _color = "jeansblack" + item_color = "jeansblack" /obj/item/clothing/under/pants/youngfolksjeans name = "Young Folks jeans" desc = "For those tired of boring old jeans. Relive the passion of your youth!" icon_state = "jeansyoungfolks" - _color = "jeansyoungfolks" + item_color = "jeansyoungfolks" /obj/item/clothing/under/pants/white name = "white pants" desc = "Plain white pants. Boring." icon_state = "whitepants" - _color = "whitepants" + item_color = "whitepants" /obj/item/clothing/under/pants/red name = "red pants" desc = "Bright red pants. Overflowing with personality." icon_state = "redpants" - _color = "redpants" + item_color = "redpants" /obj/item/clothing/under/pants/black name = "black pants" desc = "These pants are dark, like your soul." icon_state = "blackpants" - _color = "blackpants" + item_color = "blackpants" /obj/item/clothing/under/pants/tan name = "tan pants" desc = "Some tan pants. You look like a white collar worker with these on." icon_state = "tanpants" - _color = "tanpants" + item_color = "tanpants" /obj/item/clothing/under/pants/blue name = "blue pants" desc = "Stylish blue pants. These go well with a lot of clothes." icon_state = "bluepants" - _color = "bluepants" + item_color = "bluepants" /obj/item/clothing/under/pants/track name = "track pants" desc = "A pair of track pants, for the athletic." icon_state = "trackpants" - _color = "trackpants" + item_color = "trackpants" /obj/item/clothing/under/pants/jeans name = "jeans" desc = "A nondescript pair of tough blue jeans." icon_state = "jeans" - _color = "jeans" + item_color = "jeans" /obj/item/clothing/under/pants/khaki name = "khaki pants" desc = "A pair of dust beige khaki pants." icon_state = "khaki" - _color = "khaki" + item_color = "khaki" /obj/item/clothing/under/pants/camo name = "camo pants" desc = "A pair of woodland camouflage pants. Probably not the best choice for a space station." icon_state = "camopants" - _color = "camopants" + item_color = "camopants" /obj/item/clothing/under/pants/chaps name = "black leather assless chaps" desc = "For those brave enough to weather the breeze." icon_state = "chaps" - _color = "chaps" + item_color = "chaps" flags = ONESIZEFITSALL \ No newline at end of file diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm index 76ff9f42d7a..13008c4ff6d 100644 --- a/code/modules/clothing/under/shorts.dm +++ b/code/modules/clothing/under/shorts.dm @@ -7,20 +7,20 @@ /obj/item/clothing/under/shorts/red icon_state = "redshorts" - _color = "redshorts" + item_color = "redshorts" /obj/item/clothing/under/shorts/green icon_state = "greenshorts" - _color = "greenshorts" + item_color = "greenshorts" /obj/item/clothing/under/shorts/blue icon_state = "blueshorts" - _color = "blueshorts" + item_color = "blueshorts" /obj/item/clothing/under/shorts/black icon_state = "blackshorts" - _color = "blackshorts" + item_color = "blackshorts" /obj/item/clothing/under/shorts/grey icon_state = "greyshorts" - _color = "greyshorts" \ No newline at end of file + item_color = "greyshorts" \ No newline at end of file diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index 60c2c82bef5..8e5eafdceb1 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -3,7 +3,7 @@ desc = "It's some non-descript, slightly suspicious looking, support clothing." icon_state = "syndicate" item_state = "bl_suit" - _color = "syndicate" + item_color = "syndicate" has_sensor = 0 armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) siemens_coefficient = 0.9 @@ -16,7 +16,7 @@ desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-." icon_state = "tactifool" item_state = "bl_suit" - _color = "tactifool" + item_color = "tactifool" siemens_coefficient = 1 diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 8ccc40fbc87..34c4e097d8e 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -141,7 +141,7 @@ icon= 'icons/obj/clothing/uniforms.dmi' icon_state = "syndicate" item_state = "bl_suit" - _color = "syndicate" + item_color = "syndicate" has_sensor = 1 // Jumpsuit has no sensor by default displays_id = 0 // Purely astetic, the ID does not show up on the player sprite when equipped. Examining still reveals it. armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) // Standard Security jumpsuit stats @@ -153,7 +153,7 @@ icon = 'icons/obj/custom_items.dmi' icon_state = "castile_dress" item_state = "castile_dress" - _color = "castile_dress" + item_color = "castile_dress" /obj/item/clothing/under/psysuit/fluff/isaca_sirius_1 // Xilia: Isaca Sirius name = "Isaca's suit" @@ -165,7 +165,7 @@ icon = 'icons/obj/custom_items.dmi' icon_state = "jane_sid_suit" item_state = "jane_sid_suit" - _color = "jane_sid_suit" + item_color = "jane_sid_suit" has_sensor = 2 sensor_mode = 3 @@ -178,14 +178,14 @@ return 0 if(src.icon_state == "jane_sid_suit_down") - src._color = "jane_sid_suit" + src.item_color = "jane_sid_suit" usr << "You zip up \the [src]." else - src._color = "jane_sid_suit_down" + src.item_color = "jane_sid_suit_down" usr << "You unzip and roll down \the [src]." - src.icon_state = "[_color]" - src.item_state = "[_color]" + src.icon_state = "[item_color]" + src.item_state = "[item_color]" usr.update_inv_w_uniform() //////////// Masks //////////// @@ -207,7 +207,7 @@ icon = 'icons/obj/custom_items.dmi' icon_state = "fox_suit" item_state = "g_suit" - _color = "fox_suit" + item_color = "fox_suit" displays_id = 0 //still appears on examine; this is pure fluff. // TheFlagbearer: Willow Walker @@ -217,7 +217,7 @@ icon = 'icons/obj/clothing/uniforms.dmi' icon_state = "superior_suit" item_state = "superior_suit" - _color = "superior_suit" + item_color = "superior_suit" body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS flags_inv = HIDEGLOVES|HIDESHOES diff --git a/code/modules/mob/living/carbon/human/npcs.dm b/code/modules/mob/living/carbon/human/npcs.dm index a51a9cbd990..290c81723ee 100644 --- a/code/modules/mob/living/carbon/human/npcs.dm +++ b/code/modules/mob/living/carbon/human/npcs.dm @@ -2,7 +2,7 @@ name = "fancy uniform" desc = "It looks like it was tailored for a monkey." icon_state = "punpun" - _color = "punpun" + item_color = "punpun" species_restricted = list("Monkey") /mob/living/carbon/human/monkey/punpun/New() diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index 9c5a9ef851e..44d57c81778 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -39,7 +39,7 @@ desc = "a golem's skin" icon_state = "golem" item_state = "golem" - _color = "golem" + item_color = "golem" has_sensor = 0 flags = ABSTRACT | NODROP armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) @@ -93,7 +93,7 @@ /obj/item/clothing/head/space/golem icon_state = "golem" item_state = "dermal" - _color = "dermal" + item_color = "dermal" name = "golem's head" desc = "a golem's head" unacidable = 1 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 86c2d79eb7b..eb427777fc9 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -515,7 +515,7 @@ var/global/list/damage_icon_parts = list() /mob/living/carbon/human/update_inv_w_uniform(var/update_icons=1) if(w_uniform && istype(w_uniform, /obj/item/clothing/under) ) w_uniform.screen_loc = ui_iclothing - var/t_color = w_uniform._color + var/t_color = w_uniform.item_color if(!t_color) t_color = icon_state var/image/standing = image("icon_state" = "[t_color]_s") @@ -541,7 +541,7 @@ var/global/list/damage_icon_parts = list() if(w_uniform:accessories.len) //WE CHECKED THE TYPE ABOVE. THIS REALLY SHOULD BE FINE. for(var/obj/item/clothing/accessory/A in w_uniform:accessories) - var/tie_color = A._color + var/tie_color = A.item_color if(!tie_color) tie_color = A.icon_state standing.overlays += image("icon" = 'icons/mob/ties.dmi', "icon_state" = "[tie_color]") diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index f49a2c9996d..3806584a0d6 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -587,7 +587,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 throw_speed = 3 throw_range = 6 origin_tech = "biotech=4" - _color = "grey" + item_color = "grey" var/Uses = 1 // uses before it goes inert var/enhanced = 0 //has it been enhanced before? @@ -612,87 +612,87 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 /obj/item/slime_extract/grey name = "grey slime extract" icon_state = "grey slime extract" - _color = "grey" + item_color = "grey" /obj/item/slime_extract/gold name = "gold slime extract" icon_state = "gold slime extract" - _color = "gold" + item_color = "gold" /obj/item/slime_extract/silver name = "silver slime extract" icon_state = "silver slime extract" - _color = "silver" + item_color = "silver" /obj/item/slime_extract/metal name = "metal slime extract" icon_state = "metal slime extract" - _color = "metal" + item_color = "metal" /obj/item/slime_extract/purple name = "purple slime extract" icon_state = "purple slime extract" - _color = "purple" + item_color = "purple" /obj/item/slime_extract/darkpurple name = "dark purple slime extract" icon_state = "dark purple slime extract" - _color = "darkpurple" + item_color = "darkpurple" /obj/item/slime_extract/orange name = "orange slime extract" icon_state = "orange slime extract" - _color = "orange" + item_color = "orange" /obj/item/slime_extract/yellow name = "yellow slime extract" icon_state = "yellow slime extract" - _color = "yellow" + item_color = "yellow" /obj/item/slime_extract/red name = "red slime extract" icon_state = "red slime extract" - _color = "red" + item_color = "red" /obj/item/slime_extract/blue name = "blue slime extract" icon_state = "blue slime extract" - _color = "blue" + item_color = "blue" /obj/item/slime_extract/darkblue name = "dark blue slime extract" icon_state = "dark blue slime extract" - _color = "darkblue" + item_color = "darkblue" /obj/item/slime_extract/pink name = "pink slime extract" icon_state = "pink slime extract" - _color = "pink" + item_color = "pink" /obj/item/slime_extract/green name = "green slime extract" icon_state = "green slime extract" - _color = "green" + item_color = "green" /obj/item/slime_extract/lightpink name = "light pink slime extract" icon_state = "light pink slime extract" - _color = "lightpink" + item_color = "lightpink" /obj/item/slime_extract/black name = "black slime extract" icon_state = "black slime extract" - _color = "black" + item_color = "black" /obj/item/slime_extract/oil name = "oil slime extract" icon_state = "oil slime extract" - _color = "oil" + item_color = "oil" /obj/item/slime_extract/adamantine name = "adamantine slime extract" icon_state = "adamantine slime extract" - _color = "adamantine" + item_color = "adamantine" /obj/item/slime_extract/bluespace name = "bluespace slime extract" diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index c380fba0ea2..39abf18ca3a 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -218,18 +218,18 @@ var/global/chicken_count = 0 attacktext = "kicks" health = 10 var/eggsleft = 0 - var/_color + var/item_color pass_flags = PASSTABLE | PASSMOB small = 1 can_hide = 1 /mob/living/simple_animal/chicken/New() ..() - if(!_color) - _color = pick( list("brown","black","white") ) - icon_state = "chicken_[_color]" - icon_living = "chicken_[_color]" - icon_dead = "chicken_[_color]_dead" + if(!item_color) + item_color = pick( list("brown","black","white") ) + icon_state = "chicken_[item_color]" + icon_living = "chicken_[item_color]" + icon_dead = "chicken_[item_color]_dead" pixel_x = rand(-6, 6) pixel_y = rand(0, 10) chicken_count += 1 diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 1c25a12f2c1..6bb8000fd71 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -23,7 +23,7 @@ density = 0 ventcrawler = 2 pass_flags = PASSTABLE | PASSGRILLE | PASSMOB - var/_color //brown, gray and white, leave blank for random + var/item_color //brown, gray and white, leave blank for random layer = MOB_LAYER min_oxy = 16 //Require atleast 16kPA oxygen minbodytemp = 223 //Below -50 Degrees Celcius @@ -39,33 +39,33 @@ if(!ckey && stat == CONSCIOUS && prob(0.5)) stat = UNCONSCIOUS - icon_state = "mouse_[_color]_sleep" + icon_state = "mouse_[item_color]_sleep" wander = 0 speak_chance = 0 //snuffles else if(stat == UNCONSCIOUS) if(ckey || prob(1)) stat = CONSCIOUS - icon_state = "mouse_[_color]" + icon_state = "mouse_[item_color]" wander = 1 else if(prob(5)) emote("snuffles") /mob/living/simple_animal/mouse/New() ..() - if(!_color) - _color = pick( list("brown","gray","white") ) - icon_state = "mouse_[_color]" - icon_living = "mouse_[_color]" - icon_dead = "mouse_[_color]_dead" - desc = "It's a small [_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself." + if(!item_color) + item_color = pick( list("brown","gray","white") ) + icon_state = "mouse_[item_color]" + icon_living = "mouse_[item_color]" + icon_dead = "mouse_[item_color]_dead" + desc = "It's a small [item_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself." /mob/living/simple_animal/mouse/proc/splat() src.health = 0 src.stat = DEAD - src.icon_dead = "mouse_[_color]_splat" - src.icon_state = "mouse_[_color]_splat" + src.icon_dead = "mouse_[item_color]_splat" + src.icon_state = "mouse_[item_color]_splat" layer = MOB_LAYER if(client) client.time_died_as_mouse = world.time @@ -116,15 +116,15 @@ */ /mob/living/simple_animal/mouse/white - _color = "white" + item_color = "white" icon_state = "mouse_white" /mob/living/simple_animal/mouse/gray - _color = "gray" + item_color = "gray" icon_state = "mouse_gray" /mob/living/simple_animal/mouse/brown - _color = "brown" + item_color = "brown" icon_state = "mouse_brown" //TOM IS ALIVE! SQUEEEEEEEE~K :) diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 5a3df2ff47f..44ecc3f1f12 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -9,7 +9,7 @@ throw_speed = 3 throw_range = 7 materials = list(MAT_METAL=60) - _color = "cargo" + item_color = "cargo" pressure_resistance = 2 attack_verb = list("stamped") @@ -20,67 +20,67 @@ /obj/item/weapon/stamp/qm name = "Quartermaster's rubber stamp" icon_state = "stamp-qm" - _color = "qm" + item_color = "qm" /obj/item/weapon/stamp/law name = "Law office's rubber stamp" icon_state = "stamp-law" - _color = "cargo" + item_color = "cargo" /obj/item/weapon/stamp/captain name = "captain's rubber stamp" icon_state = "stamp-cap" - _color = "captain" + item_color = "captain" /obj/item/weapon/stamp/hop name = "head of personnel's rubber stamp" icon_state = "stamp-hop" - _color = "hop" + item_color = "hop" /obj/item/weapon/stamp/hos name = "head of security's rubber stamp" icon_state = "stamp-hos" - _color = "hosred" + item_color = "hosred" /obj/item/weapon/stamp/ce name = "chief engineer's rubber stamp" icon_state = "stamp-ce" - _color = "chief" + item_color = "chief" /obj/item/weapon/stamp/rd name = "research director's rubber stamp" icon_state = "stamp-rd" - _color = "director" + item_color = "director" /obj/item/weapon/stamp/cmo name = "chief medical officer's rubber stamp" icon_state = "stamp-cmo" - _color = "medical" + item_color = "medical" /obj/item/weapon/stamp/granted name = "\improper GRANTED rubber stamp" icon_state = "stamp-ok" - _color = "qm" + item_color = "qm" /obj/item/weapon/stamp/denied name = "\improper DENIED rubber stamp" icon_state = "stamp-deny" - _color = "redcoat" + item_color = "redcoat" /obj/item/weapon/stamp/clown name = "clown's rubber stamp" icon_state = "stamp-clown" - _color = "clown" + item_color = "clown" /obj/item/weapon/stamp/centcom name = "Nanotrasen Representative's rubber stamp" icon_state = "stamp-cent" - _color = "centcom" + item_color = "centcom" /obj/item/weapon/stamp/syndicate name = "suspicious rubber stamp" icon_state = "stamp-syndicate" - _color = "syndicate" + item_color = "syndicate" // Syndicate stamp to forge documents. @@ -105,4 +105,4 @@ if(chosen_stamp) name = chosen_stamp.name icon_state = chosen_stamp.icon_state - _color = chosen_stamp._color \ No newline at end of file + item_color = chosen_stamp.item_color \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index ee79e2e64bc..6f12c03c6a8 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -567,41 +567,41 @@ usr << "\blue You color \the [src] [clr]" icon_state = "egg-[clr]" - _color = clr + item_color = clr else ..() /obj/item/weapon/reagent_containers/food/snacks/egg/blue icon_state = "egg-blue" - _color = "blue" + item_color = "blue" /obj/item/weapon/reagent_containers/food/snacks/egg/green icon_state = "egg-green" - _color = "green" + item_color = "green" /obj/item/weapon/reagent_containers/food/snacks/egg/mime icon_state = "egg-mime" - _color = "mime" + item_color = "mime" /obj/item/weapon/reagent_containers/food/snacks/egg/orange icon_state = "egg-orange" - _color = "orange" + item_color = "orange" /obj/item/weapon/reagent_containers/food/snacks/egg/purple icon_state = "egg-purple" - _color = "purple" + item_color = "purple" /obj/item/weapon/reagent_containers/food/snacks/egg/rainbow icon_state = "egg-rainbow" - _color = "rainbow" + item_color = "rainbow" /obj/item/weapon/reagent_containers/food/snacks/egg/red icon_state = "egg-red" - _color = "red" + item_color = "red" /obj/item/weapon/reagent_containers/food/snacks/egg/yellow icon_state = "egg-yellow" - _color = "yellow" + item_color = "yellow" /obj/item/weapon/reagent_containers/food/snacks/friedegg name = "Fried egg" From 93330288c8667923883b2465ee9e3511ea68bf46 Mon Sep 17 00:00:00 2001 From: Markolie Date: Mon, 5 Oct 2015 20:13:49 +0200 Subject: [PATCH 18/22] Color updates --- code/game/machinery/atmoalter/canister.dm | 52 +++++++++---------- code/game/machinery/washing_machine.dm | 28 +++++----- .../simple_animal/friendly/farm_animals.dm | 12 ++--- .../living/simple_animal/friendly/mouse.dm | 28 +++++----- nano/templates/canister.tmpl | 8 +-- 5 files changed, 64 insertions(+), 64 deletions(-) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 14254d2a0f4..99db01bfae2 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -57,7 +57,7 @@ var/datum/canister_icons/canister_icon_container = new() var/valve_open = 0 var/release_pressure = ONE_ATMOSPHERE - var/list/item_color //variable that stores colours + var/list/canister_color //variable that stores colours var/list/decals //list that stores the decals //lists for check_change() @@ -81,7 +81,7 @@ var/datum/canister_icons/canister_icon_container = new() New() ..() - item_color = list( + canister_color = list( "prim" = "yellow", "sec" = "none", "ter" = "none", @@ -117,7 +117,7 @@ var/datum/canister_icons/canister_icon_container = new() for(var/C in colorcontainer) if(C == "prim") continue var/list/L = colorcontainer[C] - if(!(item_color[C]) || (item_color[C] == "none")) + if(!(canister_color[C]) || (canister_color[C] == "none")) L.Add(list("anycolor" = 0)) else L.Add(list("anycolor" = 1)) @@ -151,9 +151,9 @@ var/datum/canister_icons/canister_icon_container = new() else update_flag |= 32 - if(list2params(oldcolor) != list2params(item_color)) + if(list2params(oldcolor) != list2params(canister_color)) update_flag |= 64 - oldcolor = item_color.Copy() + oldcolor = canister_color.Copy() if(list2params(olddecals) != list2params(decals)) update_flag |= 128 @@ -180,20 +180,20 @@ update_flag if (src.destroyed) src.overlays = 0 - src.icon_state = text("[]-1", src.item_color["prim"])//yes, I KNOW the colours don't reflect when the can's borked, whatever. + src.icon_state = text("[]-1", src.canister_color["prim"])//yes, I KNOW the colours don't reflect when the can's borked, whatever. - if(icon_state != src.item_color["prim"]) - icon_state = src.item_color["prim"] + if(icon_state != src.canister_color["prim"]) + icon_state = src.canister_color["prim"] if(check_change()) //Returns 1 if no change needed to icons. return overlays.Cut() - for(var/C in item_color) + for(var/C in canister_color) if(C == "prim") continue - if(item_color[C] == "none") continue - overlays.Add(item_color[C]) + if(canister_color[C] == "none") continue + overlays.Add(canister_color[C]) for(var/D in decals) if(decals[D]) @@ -393,7 +393,7 @@ update_flag data["name"] = name data["menu"] = menu ? 1 : 0 data["canLabel"] = can_label ? 1 : 0 - data["item_color"] = item_color + data["canister_color"] = canister_color data["colorContainer"] = colorcontainer data["possibleDecals"] = possibledecals data["portConnected"] = connected_port ? 1 : 0 @@ -482,22 +482,22 @@ update_flag if (href_list["choice"] == "Primary color") if (is_a_color(href_list["icon"],"prim")) - item_color["prim"] = href_list["icon"] + canister_color["prim"] = href_list["icon"] if (href_list["choice"] == "Secondary color") if (href_list["icon"] == "none") - item_color["sec"] = "none" + canister_color["sec"] = "none" else if (is_a_color(href_list["icon"],"sec")) - item_color["sec"] = href_list["icon"] + canister_color["sec"] = href_list["icon"] if (href_list["choice"] == "Tertiary color") if (href_list["icon"] == "none") - item_color["ter"] = "none" + canister_color["ter"] = "none" else if (is_a_color(href_list["icon"],"ter")) - item_color["ter"] = href_list["icon"] + canister_color["ter"] = href_list["icon"] if (href_list["choice"] == "Quaternary color") if (href_list["icon"] == "none") - item_color["quart"] = "none" + canister_color["quart"] = "none" else if (is_a_color(href_list["icon"],"quart")) - item_color["quart"] = href_list["icon"] + canister_color["quart"] = href_list["icon"] if (href_list["choice"] == "decals") if (is_a_decal(href_list["icon"])) @@ -542,7 +542,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/toxins/New() ..() - item_color["prim"] = "orange" + canister_color["prim"] = "orange" decals["plasma"] = 1 src.air_contents.toxins = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) @@ -552,7 +552,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/oxygen/New() ..() - item_color["prim"] = "blue" + canister_color["prim"] = "blue" src.air_contents.oxygen = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.update_icon() @@ -561,7 +561,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/sleeping_agent/New() ..() - item_color["prim"] = "redws" + canister_color["prim"] = "redws" var/datum/gas/sleeping_agent/trace_gas = new air_contents.trace_gases += trace_gas trace_gas.moles = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) @@ -588,7 +588,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/nitrogen/New() ..() - item_color["prim"] = "red" + canister_color["prim"] = "red" src.air_contents.nitrogen = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.update_icon() @@ -597,7 +597,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/carbon_dioxide/New() ..() - item_color["prim"] = "black" + canister_color["prim"] = "black" src.air_contents.carbon_dioxide = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.update_icon() @@ -607,7 +607,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/air/New() ..() - item_color["prim"] = "grey" + canister_color["prim"] = "grey" src.air_contents.oxygen = (O2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.air_contents.nitrogen = (N2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) @@ -617,7 +617,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/custom_mix/New() ..() - item_color["prim"] = "whiters" + canister_color["prim"] = "whiters" src.update_icon() // Otherwise new canisters do not have their icon updated with the pressure light, likely want to add this to the canister class constructor, avoiding at current time to refrain from screwing up code for other canisters. --DZD return 1 diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index f4cf0d6b0fe..bd2000595f6 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -52,15 +52,15 @@ if(crayon) - var/item_color + var/wash_color if(istype(crayon,/obj/item/toy/crayon)) var/obj/item/toy/crayon/CR = crayon - item_color = CR.colourName + wash_color = CR.colourName else if(istype(crayon,/obj/item/weapon/stamp)) var/obj/item/weapon/stamp/ST = crayon - item_color = ST.item_color + wash_color = ST.item_color - if(item_color) + if(wash_color) var/new_jumpsuit_icon_state = "" var/new_jumpsuit_item_state = "" var/new_jumpsuit_name = "" @@ -77,7 +77,7 @@ for(var/T in typesof(/obj/item/clothing/under)) var/obj/item/clothing/under/J = new T //world << "DEBUG: [color] == [J.color]" - if(item_color == J.item_color) + if(wash_color == J.item_color) new_jumpsuit_icon_state = J.icon_state new_jumpsuit_item_state = J.item_state new_jumpsuit_name = J.name @@ -88,7 +88,7 @@ for(var/T in typesof(/obj/item/clothing/gloves/color)) var/obj/item/clothing/gloves/color/G = new T //world << "DEBUG: [color] == [J.color]" - if(item_color == G.item_color) + if(wash_color == G.item_color) new_glove_icon_state = G.icon_state new_glove_item_state = G.item_state new_glove_name = G.name @@ -99,7 +99,7 @@ for(var/T in typesof(/obj/item/clothing/shoes)) var/obj/item/clothing/shoes/S = new T //world << "DEBUG: [color] == [J.color]" - if(item_color == S.item_color) + if(wash_color == S.item_color) new_shoe_icon_state = S.icon_state new_shoe_name = S.name qdel(S) @@ -109,7 +109,7 @@ for(var/T in typesof(/obj/item/weapon/bedsheet)) var/obj/item/weapon/bedsheet/B = new T //world << "DEBUG: [color] == [J.color]" - if(item_color == B.item_color) + if(wash_color == B.item_color) new_sheet_icon_state = B.icon_state new_sheet_name = B.name qdel(B) @@ -119,7 +119,7 @@ for(var/T in typesof(/obj/item/clothing/head/soft)) var/obj/item/clothing/head/soft/H = new T //world << "DEBUG: [color] == [J.color]" - if(item_color == H.item_color) + if(wash_color == H.item_color) new_softcap_icon_state = H.icon_state new_softcap_name = H.name qdel(H) @@ -131,7 +131,7 @@ //world << "DEBUG: YUP! FOUND IT!" J.item_state = new_jumpsuit_item_state J.icon_state = new_jumpsuit_icon_state - J.item_color = item_color + J.item_color = wash_color J.name = new_jumpsuit_name J.desc = new_desc if(new_glove_icon_state && new_glove_item_state && new_glove_name) @@ -139,7 +139,7 @@ //world << "DEBUG: YUP! FOUND IT!" G.item_state = new_glove_item_state G.icon_state = new_glove_icon_state - G.item_color = item_color + G.item_color = wash_color G.name = new_glove_name if(!istype(G, /obj/item/clothing/gloves/color/black/thief)) G.desc = new_desc @@ -151,21 +151,21 @@ S.slowdown = SHOES_SLOWDOWN new /obj/item/weapon/restraints/handcuffs( src ) S.icon_state = new_shoe_icon_state - S.item_color = item_color + S.item_color = wash_color S.name = new_shoe_name S.desc = new_desc if(new_sheet_icon_state && new_sheet_name) for(var/obj/item/weapon/bedsheet/B in contents) //world << "DEBUG: YUP! FOUND IT!" B.icon_state = new_sheet_icon_state - B.item_color = item_color + B.item_color = wash_color B.name = new_sheet_name B.desc = new_desc if(new_softcap_icon_state && new_softcap_name) for(var/obj/item/clothing/head/soft/H in contents) //world << "DEBUG: YUP! FOUND IT!" H.icon_state = new_softcap_icon_state - H.item_color = item_color + H.item_color = wash_color H.name = new_softcap_name H.desc = new_desc qdel(crayon) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 39abf18ca3a..6fd450a4c34 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -218,18 +218,18 @@ var/global/chicken_count = 0 attacktext = "kicks" health = 10 var/eggsleft = 0 - var/item_color + var/chicken_color pass_flags = PASSTABLE | PASSMOB small = 1 can_hide = 1 /mob/living/simple_animal/chicken/New() ..() - if(!item_color) - item_color = pick( list("brown","black","white") ) - icon_state = "chicken_[item_color]" - icon_living = "chicken_[item_color]" - icon_dead = "chicken_[item_color]_dead" + if(!chicken_color) + chicken_color = pick( list("brown","black","white") ) + icon_state = "chicken_[chicken_color]" + icon_living = "chicken_[chicken_color]" + icon_dead = "chicken_[chicken_color]_dead" pixel_x = rand(-6, 6) pixel_y = rand(0, 10) chicken_count += 1 diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 6bb8000fd71..7dfa82c4989 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -23,7 +23,7 @@ density = 0 ventcrawler = 2 pass_flags = PASSTABLE | PASSGRILLE | PASSMOB - var/item_color //brown, gray and white, leave blank for random + var/mouse_color //brown, gray and white, leave blank for random layer = MOB_LAYER min_oxy = 16 //Require atleast 16kPA oxygen minbodytemp = 223 //Below -50 Degrees Celcius @@ -39,33 +39,33 @@ if(!ckey && stat == CONSCIOUS && prob(0.5)) stat = UNCONSCIOUS - icon_state = "mouse_[item_color]_sleep" + icon_state = "mouse_[mouse_color]_sleep" wander = 0 speak_chance = 0 //snuffles else if(stat == UNCONSCIOUS) if(ckey || prob(1)) stat = CONSCIOUS - icon_state = "mouse_[item_color]" + icon_state = "mouse_[mouse_color]" wander = 1 else if(prob(5)) emote("snuffles") /mob/living/simple_animal/mouse/New() ..() - if(!item_color) - item_color = pick( list("brown","gray","white") ) - icon_state = "mouse_[item_color]" - icon_living = "mouse_[item_color]" - icon_dead = "mouse_[item_color]_dead" - desc = "It's a small [item_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself." + if(!mouse_color) + mouse_color = pick( list("brown","gray","white") ) + icon_state = "mouse_[mouse_color]" + icon_living = "mouse_[mouse_color]" + icon_dead = "mouse_[mouse_color]_dead" + desc = "It's a small [mouse_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself." /mob/living/simple_animal/mouse/proc/splat() src.health = 0 src.stat = DEAD - src.icon_dead = "mouse_[item_color]_splat" - src.icon_state = "mouse_[item_color]_splat" + src.icon_dead = "mouse_[mouse_color]_splat" + src.icon_state = "mouse_[mouse_color]_splat" layer = MOB_LAYER if(client) client.time_died_as_mouse = world.time @@ -116,15 +116,15 @@ */ /mob/living/simple_animal/mouse/white - item_color = "white" + mouse_color = "white" icon_state = "mouse_white" /mob/living/simple_animal/mouse/gray - item_color = "gray" + mouse_color = "gray" icon_state = "mouse_gray" /mob/living/simple_animal/mouse/brown - item_color = "brown" + mouse_color = "brown" icon_state = "mouse_brown" //TOM IS ALIVE! SQUEEEEEEEE~K :) diff --git a/nano/templates/canister.tmpl b/nano/templates/canister.tmpl index 06dfbd2ae27..9ddef45b098 100644 --- a/nano/templates/canister.tmpl +++ b/nano/templates/canister.tmpl @@ -98,7 +98,7 @@
{{:data.colorContainer.prim.name}}
{{for data.colorContainer.prim.options}}
- {{if value.icon == data._color.prim}} + {{if value.icon == data.canister_color.prim}} {{:helper.link(value.name, '', {'choice' : data.colorContainer.prim.name, 'icon' : value.icon}, data.canLabel ? null : 'disabled', 'selected')}} {{else}} {{:helper.link(value.name, '', {'choice' : data.colorContainer.prim.name, 'icon' : value.icon}, data.canLabel ? null : 'disabled', null)}} @@ -111,7 +111,7 @@ {{:helper.link("None", '', {'choice' : data.colorContainer.sec.name, 'icon' : "none"}, data.canLabel ? null : 'disabled', data.colorContainer.sec.anycolor ? null : 'selected')}} {{for data.colorContainer.sec.options}}
- {{if value.icon == data._color.sec}} + {{if value.icon == data.canister_color.sec}} {{:helper.link(value.name, '', {'choice' : data.colorContainer.sec.name, 'icon' : value.icon}, data.canLabel ? null : 'disabled', 'selected')}} {{else}} {{:helper.link(value.name, '', {'choice' : data.colorContainer.sec.name, 'icon' : value.icon}, data.canLabel ? null : 'disabled', null)}} @@ -124,7 +124,7 @@ {{:helper.link("None", '', {'choice' : data.colorContainer.ter.name, 'icon' : "none"}, data.canLabel ? null : 'disabled', data.colorContainer.ter.anycolor ? null : 'selected')}} {{for data.colorContainer.ter.options}}
- {{if value.icon == data._color.ter}} + {{if value.icon == data.canister_color.ter}} {{:helper.link(value.name, '', {'choice' : data.colorContainer.ter.name, 'icon' : value.icon}, data.canLabel ? null : 'disabled', 'selected')}} {{else}} {{:helper.link(value.name, '', {'choice' : data.colorContainer.ter.name, 'icon' : value.icon}, data.canLabel ? null : 'disabled', null)}} @@ -137,7 +137,7 @@ {{:helper.link("None", '', {'choice' : data.colorContainer.quart.name, 'icon' : "none"}, data.canLabel ? null : 'disabled', data.colorContainer.quart.anycolor ? null : 'selected')}} {{for data.colorContainer.quart.options}}
- {{if value.icon == data._color.quart}} + {{if value.icon == data.canister_color.quart}} {{:helper.link(value.name, '', {'choice' : data.colorContainer.quart.name, 'icon' : value.icon}, data.canLabel ? null : 'disabled', 'selected')}} {{else}} {{:helper.link(value.name, '', {'choice' : data.colorContainer.quart.name, 'icon' : value.icon}, data.canLabel ? null : 'disabled', null)}} From 57d78d35aa30fd36203efc9b16cebe3ad10230cd Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 5 Oct 2015 17:35:42 -0400 Subject: [PATCH 19/22] GC Gas Mixtures --- code/LINDA/LINDA_turf_tile.dm | 36 +++++++++++++++++------------------ code/datums/gas_mixture.dm | 6 +++++- code/game/atoms.dm | 1 + 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm index 2d2a5b24e54..900d58f7930 100644 --- a/code/LINDA/LINDA_turf_tile.dm +++ b/code/LINDA/LINDA_turf_tile.dm @@ -1,17 +1,17 @@ -turf +/turf var/pressure_difference = 0 var/pressure_direction = 0 var/atmos_adjacent_turfs = 0 var/atmos_adjacent_turfs_amount = 0 var/atmos_supeconductivity = 0 -turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air - del(giver) +/turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air + qdel(giver) return 0 -turf/return_air() +/turf/return_air() //Create gas mixture to hold data for passing var/datum/gas_mixture/GM = new @@ -24,7 +24,7 @@ turf/return_air() return GM -turf/remove_air(amount as num) +/turf/remove_air(amount as num) var/datum/gas_mixture/GM = new var/sum = oxygen + carbon_dioxide + nitrogen + toxins @@ -39,7 +39,7 @@ turf/remove_air(amount as num) return GM -turf/simulated +/turf/simulated var/datum/excited_group/excited_group var/excited = 0 var/recently_active = 0 @@ -53,7 +53,7 @@ turf/simulated var/atmos_overlay_type = "" //current active overlay -turf/simulated/New() +/turf/simulated/New() ..() if(!blocks_air) @@ -66,12 +66,12 @@ turf/simulated/New() air.temperature = temperature -turf/simulated/Del() +/turf/simulated/Del() if(active_hotspot) qdel(active_hotspot) ..() -turf/simulated/assume_air(datum/gas_mixture/giver) +/turf/simulated/assume_air(datum/gas_mixture/giver) if(!giver) return 0 var/datum/gas_mixture/receiver = air if(istype(receiver)) @@ -84,22 +84,22 @@ turf/simulated/assume_air(datum/gas_mixture/giver) else return ..() -turf/simulated/proc/copy_air_with_tile(turf/simulated/T) +/turf/simulated/proc/copy_air_with_tile(turf/simulated/T) if(istype(T) && T.air && air) air.copy_from(T.air) -turf/simulated/proc/copy_air(datum/gas_mixture/copy) +/turf/simulated/proc/copy_air(datum/gas_mixture/copy) if(air && copy) air.copy_from(copy) -turf/simulated/return_air() +/turf/simulated/return_air() if(air) return air else return ..() -turf/simulated/remove_air(amount as num) +/turf/simulated/remove_air(amount as num) if(air) var/datum/gas_mixture/removed = null @@ -112,7 +112,7 @@ turf/simulated/remove_air(amount as num) else return ..() -turf/simulated/proc/mimic_temperature_solid(turf/model, conduction_coefficient) +/turf/simulated/proc/mimic_temperature_solid(turf/model, conduction_coefficient) var/delta_temperature = (temperature_archived - model.temperature) if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)) @@ -120,7 +120,7 @@ turf/simulated/proc/mimic_temperature_solid(turf/model, conduction_coefficient) (heat_capacity*model.heat_capacity/(heat_capacity+model.heat_capacity)) temperature -= heat/heat_capacity -turf/simulated/proc/share_temperature_mutual_solid(turf/simulated/sharer, conduction_coefficient) +/turf/simulated/proc/share_temperature_mutual_solid(turf/simulated/sharer, conduction_coefficient) var/delta_temperature = (temperature_archived - sharer.temperature_archived) if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER && heat_capacity && sharer.heat_capacity) @@ -287,10 +287,10 @@ turf/simulated/proc/share_temperature_mutual_solid(turf/simulated/sharer, conduc -atom/movable/var/pressure_resistance = 5 -atom/movable/var/last_forced_movement = 0 +/atom/movable/var/pressure_resistance = 5 +/atom/movable/var/last_forced_movement = 0 -atom/movable/proc/experience_pressure_difference(pressure_difference, direction) +/atom/movable/proc/experience_pressure_difference(pressure_difference, direction) if(last_forced_movement >= air_master.current_cycle) return 0 else if(!anchored && !pulledby) diff --git a/code/datums/gas_mixture.dm b/code/datums/gas_mixture.dm index 8676aaf27c5..36f32221f0e 100644 --- a/code/datums/gas_mixture.dm +++ b/code/datums/gas_mixture.dm @@ -53,6 +53,10 @@ What are the archived variables for? var/tmp/fuel_burnt = 0 +/datum/gas_mixture/Destroy() + ..() + return QDEL_HINT_QUEUE + //PV=nRT - related procedures /datum/gas_mixture/proc/heat_capacity() var/heat_capacity = HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) @@ -319,7 +323,7 @@ What are the archived variables for? trace_gases += corresponding corresponding.moles += trace_gas.moles -// del(giver) +// qdel(giver) return 1 /datum/gas_mixture/remove(amount) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index a257cbae129..f6bcfef4171 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -42,6 +42,7 @@ return /atom/proc/assume_air(datum/gas_mixture/giver) + qdel(giver) return null /atom/proc/remove_air(amount) From bf38828c1838d565ce5c196a4d6e9e461a2f5ebb Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Mon, 5 Oct 2015 18:34:07 -0400 Subject: [PATCH 20/22] Fixes a Useless Destroy --- code/game/objects/effects/effect_system.dm | 7 ------- 1 file changed, 7 deletions(-) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 17509ed951e..2d2603203ac 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -53,13 +53,6 @@ would spawn and follow the beaker, even if it is carried or thrown. return return -/obj/effect/effect/water/Destroy() - //var/turf/T = src.loc - //if (istype(T, /turf)) - // T.firelevel = 0 //TODO: FIX - src.delete() - return ..() - /obj/effect/effect/water/Move(turf/newloc) //var/turf/T = src.loc //if (istype(T, /turf)) From 7770fffdf89b9f07153f4be1fc3d8ffc6bf1b562 Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 6 Oct 2015 01:22:50 +0200 Subject: [PATCH 21/22] Fix writing on paper --- code/game/verbs/who.dm | 2 +- code/modules/paperwork/paper.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index c6acf4af28a..c2eda15b18a 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -115,5 +115,5 @@ modmsg += "\t[C] is a [C.holder.rank]\n" num_mods_online++ - msg = "Current Admins ([num_admins_online]):\n" + msg + "\n Current Mods/Mentors ([num_mods_online]):\n" + modmsg + msg = "Current Admins ([num_admins_online]):\n" + msg + "\nCurrent Mods/Mentors ([num_mods_online]):\n" + modmsg src << msg diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index a453b76a123..1520d950227 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -65,7 +65,7 @@ send_asset_list(user.client, S.assets) var/data - if(!(user.say_understands(null, all_languages["Galactic Common"]) && !forceshow) || forcestars) //assuming all paper is written in common is better than hardcoded type checks + if((!user.say_understands(null, all_languages["Galactic Common"]) && !forceshow) || forcestars) //assuming all paper is written in common is better than hardcoded type checks data = "[name][stars(info)][stamps]" if(view) usr << browse(data, "window=[name]") From 755ca6bd3af9577e75f6a41e5ebc42dd701404bd Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 6 Oct 2015 01:31:12 +0200 Subject: [PATCH 22/22] Robopen fix, pen language fix --- code/modules/paperwork/paper.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 1520d950227..479bb429efc 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -418,10 +418,11 @@ B.update_icon() else if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) - if ( istype(P, /obj/item/weapon/pen/robopen) && P:mode == 2 ) - P:RenamePaper(user,src) + var/obj/item/weapon/pen/robopen/RP = P + if(istype(P, /obj/item/weapon/pen/robopen) && RP.mode == 2) + RP.RenamePaper(user,src) else - show_content(user, forceshow = 1, infolinks = 1) + show_content(user, infolinks = 1) //openhelp(user) return