Merge remote-tracking branch 'refs/remotes/ParadiseSS13/master' into freegolems

This commit is contained in:
datlo
2019-02-03 06:41:02 +00:00
68 changed files with 3222 additions and 3057 deletions
File diff suppressed because it is too large Load Diff
+24 -24
View File
@@ -100,7 +100,7 @@
"bV" = (/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/bridge)
"bW" = (/obj/structure/table/wood,/obj/item/trash/can{desc = "A miniature ship in a bottle. I wonder how they got it in there?"; icon = 'icons/obj/lavaland/artefacts.dmi'; icon_state = "ship_bottle"; name = "ship in a bottle"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/bridge)
"bX" = (/turf/simulated/floor/carpet,/area/derelict/bridge)
"bY" = (/obj/item/clothing/under/retro/security,/obj/item/clothing/under/retro/security,/obj/structure/closet,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 9; icon_state = "darkred"},/area/derelict/arrival)
"bY" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Human remains"},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/vomit,/turf/simulated/floor/plasteel{dir = 5; icon_state = "darkblue"},/area/derelict/bridge)
"bZ" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkblue"},/area/derelict/bridge)
"ca" = (/obj/structure/table,/turf/simulated/floor/plasteel{dir = 5; icon_state = "blue"},/area/derelict/crew_quarters)
"cb" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/bridge)
@@ -112,7 +112,7 @@
"ch" = (/obj/item/cigbutt{pixel_x = 6; pixel_y = 3},/obj/item/cigbutt{pixel_x = 8; pixel_y = 9},/obj/item/cigbutt,/obj/item/lighter{pixel_x = -6; pixel_y = 5},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkblue"},/area/derelict/bridge)
"ci" = (/obj/item/paper/djstation{info = "<i>The note is stained with ink-smudges, the forceful and shaky handwriting scrawled across it is barely legible.</i><br><br>Vostok stopped banging on the door an hour ago. he must be looking for something to try and force it. I am still unsure what's happened, but it's been six hours now.<br><br>My hands won't stop shaking, not even the cigarettes are helping.<br><br>Vostok, if you manage to get in and I am no longer concious, my medication is in the freezer next to my desk. Please. I'm counting on you."; name = "shaky note"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkblue"},/area/derelict/bridge)
"cj" = (/obj/structure/sign/mech,/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,/area/derelict/arrival)
"ck" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Human remains"},/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "darkblue"},/area/derelict/bridge)
"ck" = (/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc/noalarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/bridge)
"cl" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc/noalarm{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/djstation)
"cm" = (/obj/structure/grille,/obj/structure/window/full/shuttle,/turf/simulated/floor/plating,/area/djstation)
"cn" = (/obj/structure/rack,/obj/item/clothing/suit/space/syndicate/orange{desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; name = "Cosmonaut Security Suit"},/obj/item/clothing/head/helmet/space/syndicate/orange{desc = "This spacesuit is emblazoned with the emblem of the USSP. Glory to Space Russia!"; name = "Cosmonaut Security Helmet"},/obj/item/clothing/mask/breath,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/djstation)
@@ -120,7 +120,7 @@
"cp" = (/obj/structure/sign/securearea,/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,/area/derelict/arrival)
"cq" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,/area/derelict/crew_quarters)
"cr" = (/obj/structure/chair/comfy/red{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/bridge)
"cs" = (/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/bridge)
"cs" = (/obj/item/clothing/under/retro/security,/obj/item/clothing/under/retro/security,/obj/structure/closet,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc/noalarm{dir = 1; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 9; icon_state = "darkred"},/area/derelict/arrival)
"ct" = (/obj/structure/chair/stool,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/bridge)
"cu" = (/obj/structure/table/wood,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/item/paper/djstation{info = "This damned shower is going to be the death of me. I can see the way Vostok looks at me when I speak of it, the way his eyes sneer with amusement. Just this morning, I swear the damn thing tried to lock me in! I had to break the manual release just to get out, Vostok nearly shit himself he was laughing so hard.<br><br>Well, we'll see how long he'll be laughing when I write to Commissar Grigor about his insolence; the only thing he will be officer of then is the toilet!"; name = "captain's log"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/bridge)
"cv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/derelict/bridge)
@@ -230,7 +230,7 @@
"ev" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/obj/structure/sign/poster/contraband/communist_state{pixel_y = 31},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/bridge)
"ew" = (/obj/structure/sign/poster/contraband/communist_state,/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,/area/derelict/crew_quarters)
"ex" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor/impassable{id_tag = "ruslockcom"; layer = 3; name = "Bridge Lockdown"},/obj/machinery/door/airlock/command/glass{name = "Command Wing"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/bridge)
"ey" = (/obj/machinery/newscaster{desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. Strange that it's on a Russian station."; layer = 3.3; pixel_x = 27; pixel_x = 1},/obj/item/trash/spentcasing{icon_state = "762-casing"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"ey" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/piano,/obj/machinery/power/apc/noalarm{dir = 1; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"ez" = (/turf/simulated/wall/mineral/titanium/interior,/area/derelict/arrival)
"eA" = (/obj/structure/closet/crate/can,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/item/trash/can,/obj/item/trash/semki,/turf/simulated/floor/plasteel{dir = 10; icon_state = "darkblue"},/area/derelict/bridge)
"eB" = (/obj/structure/sign/poster/contraband/random{pixel_x = 32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkblue"},/area/derelict/bridge)
@@ -367,8 +367,8 @@
"hc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/eva{name = "Derelict Annex"})
"hd" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/arrival)
"he" = (/obj/machinery/door/airlock/shuttle{name = "Dormitories"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"hf" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/piano,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"hg" = (/obj/structure/chair/stool,/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Human remains"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"hf" = (/obj/structure/chair/stool,/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Human remains"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"hg" = (/obj/machinery/newscaster{desc = "A standard Nanotrasen-licensed newsfeed handler for use in commercial space stations. Strange that it's on a Russian station."; layer = 3.3; pixel_x = 30},/obj/item/trash/spentcasing{icon_state = "762-casing"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"hh" = (/obj/structure/rack,/obj/item/clothing/shoes/jackboots{desc = "Nothing quite strikes fear into the hearts of TSF marines like a good pair of jackboots!"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "darkred"},/area/derelict/arrival)
"hi" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/westleft,/obj/structure/sign/poster/contraband/red_rum{pixel_y = -32},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkred"},/area/derelict/arrival)
"hj" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkred"},/area/derelict/arrival)
@@ -419,8 +419,8 @@
"ic" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Human remains"},/obj/structure/spider/cocoon,/turf/simulated/floor/plasteel,/area/derelict/crew_quarters)
"id" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/arrival)
"ie" = (/obj/structure/closet/crate/can,/obj/item/trash/raisins,/obj/item/trash/can,/obj/item/trash/semki,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 9; icon_state = "darkred"},/area/derelict/arrival)
"if" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Human remains"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkred"},/area/derelict/arrival)
"ig" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "cautionfull"},/obj/effect/landmark/burnturf,/turf/simulated/wall/mineral/titanium/nodecon/tileblend{fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "cautionfull"); icon_state = "4-i"},/area/derelict/eva{name = "Derelict Annex"})
"if" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Human remains"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkred"},/area/derelict/arrival)
"ig" = (/obj/structure/chair/stool/bar,/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Human remains"},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"ih" = (/obj/structure/rack,/obj/item/storage/toolbox/emergency/old,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 5; icon_state = "darkred"},/area/derelict/arrival)
"ii" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "purple"},/area/derelict/eva{name = "Derelict Annex"})
"ij" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/derelict/eva{name = "Derelict Annex"})
@@ -461,7 +461,7 @@
"iS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/obj/item/trash/spentcasing{icon_state = "762-casing"},/turf/simulated/floor/plasteel,/area/derelict/eva{name = "Derelict Annex"})
"iT" = (/obj/machinery/door_control{id = "ruslock"; layer = 2.1; name = "suspicious button"},/obj/machinery/vending/cigarette/free{product_slogans = "Just remember! No capitalist.;Best enjoyed with Vodka!.;Smoke!;Nine out of ten USSP scientists agree, smoking reduces stress!;There's no cigarette like a Russian cigarette!;Cigarettes! Now with 100% less capitalism."},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/derelict/crew_quarters)
"iU" = (/obj/structure/chair/stool/bar,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"iV" = (/obj/structure/chair/stool/bar,/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Human remains"},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"iV" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc/noalarm{dir = 1; pixel_y = 24},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/derelict/eva{name = "Derelict Annex"})
"iW" = (/obj/structure/grille,/obj/structure/shuttle/window{tag = "icon-window5_end (NORTH)"; icon = 'icons/turf/shuttle.dmi'; icon_state = "window5_end"; dir = 1},/turf/simulated/floor/plating,/area/derelict/arrival)
"iX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/derelict/arrival)
"iY" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/obj/item/pen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkred"},/area/derelict/arrival)
@@ -475,7 +475,7 @@
"jg" = (/obj/structure/chair/wood/normal{dir = 8},/obj/structure/sign/poster/contraband/random{pixel_x = 32},/turf/simulated/floor/plasteel{dir = 6; icon_state = "darkblue"},/area/derelict/eva{name = "Derelict Annex"})
"jh" = (/obj/structure/table/wood,/obj/item/ashtray/plastic,/turf/simulated/floor/plasteel{dir = 2; icon_state = "darkblue"},/area/derelict/eva{name = "Derelict Annex"})
"ji" = (/obj/machinery/floodlight,/turf/simulated/floor/plasteel{dir = 10; icon_state = "caution"},/area/derelict/eva{name = "Derelict Annex"})
"jj" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/derelict/solar_control)
"jj" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "cautionfull"},/obj/effect/landmark/burnturf,/turf/simulated/wall/mineral/titanium/nodecon/tileblend{fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "cautionfull"); icon_state = "4-i"},/area/derelict/eva{name = "Derelict Annex"})
"jk" = (/obj/machinery/power/solar_control{id = "russolar"; track = 2},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 4},/area/derelict/eva{name = "Derelict Annex"})
"jl" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high,/obj/structure/spider/stickyweb,/turf/simulated/floor/plasteel,/area/derelict/crew_quarters)
"jm" = (/obj/structure/spider/stickyweb,/turf/simulated/floor/plasteel,/area/derelict/crew_quarters)
@@ -502,7 +502,7 @@
"jH" = (/obj/machinery/recharge_station,/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plasteel{dir = 10; icon_state = "caution"},/area/derelict/eva{name = "Derelict Annex"})
"jI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/derelict/eva{name = "Derelict Annex"})
"jJ" = (/obj/structure/rack,/obj/item/t_scanner,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "caution"; dir = 5},/area/derelict/eva{name = "Derelict Annex"})
"jK" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "caution"},/area/derelict/eva{name = "Derelict Annex"})
"jK" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/derelict/solar_control)
"jL" = (/obj/structure/table/wood,/obj/item/ashtray/bronze,/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"jM" = (/obj/structure/chair/wood/normal{dir = 8},/turf/simulated/floor/plasteel{icon_state = "wood"},/area/derelict/crew_quarters)
"jN" = (/obj/structure/closet/secure_closet/bar,/obj/item/reagent_containers/food/drinks/bottle/vodka,/obj/item/reagent_containers/food/drinks/bottle/vodka,/obj/item/reagent_containers/food/drinks/bottle/vodka,/obj/item/reagent_containers/food/drinks/bottle/rum,/obj/item/reagent_containers/food/drinks/bottle/kahlua,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/derelict/crew_quarters)
@@ -1334,8 +1334,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbj
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaeaeaEaEacacaaaaaGaFaFaHahahaGaeaeacacaEaEaeaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaJaKaKaKaLaJaMaPaNaKaJaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaeaEaQaQaRaRaSaSaGahahajakaUaGaSaSaTaTaVaVaEaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaYaYaYaJaZbdbcbfbebhbgbkbibmblaJaYaYaYaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaaaaaEaEacacaaaaboamahbpahaFbobqbqacacaEaEaaaabjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaYaYbbbrbwbuaJbxbCbBbDbCbFbEbHbGbJbIaJbKbMbLaJaYaYbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaeaEaQaQaQaRaSaSayahahbPbQbQbRaSaSaTaTaVaVaEaebjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaJbUbTbWbVbVbXaJbZcbbCcdcccccccebCbCcfaJbZcgcgcichckbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaeaeaEaEaEaEaeaecmclaraqcocncmaaaaaEaEaEaEaeaebjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNbNaJcscrcuctcwcvcycxcxczczczcAbCbCbCbCbCcBcgcDcCcFcEcGbzbzbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaeaEaQaQaQaRaSaSayahahbPbQbQbRaSaSaTaTaVaVaEaebjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaJbUbTbWbVbVbXaJbZcbbCcdcccccccebCbCcfaJbZcgcgcichbYbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjaeaeaEaEaEaEaeaecmclaraqcocncmaaaaaEaEaEaEaeaebjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNbNaJckcrcuctcwcvcycxcxczczczcAbCbCbCbCbCcBcgcDcCcFcEcGbzbzbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbjaeaaaaaaaaaaaeaxaxaxcKaxaxaxaaaaaaaaaaaaaebjbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtgkcLcNaJcPcOcRcQbVbXaJbZbCbCbCbCcTbCbCbCcVcUaJbZcDcWcXcEcZbzdadabzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbjaaaxaxaxaxaxdddcdfdedhdgddaxaxaxaxaxaabjbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNgkdjdidkaJcQdlbVbVbVcQaJdmdodndpbCcTbCdrdqdtdsaJducDdvdwcEdxbzdzdydAbzbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacmaBdBdDdCagdEdFdfdHdGagdIdKdJdLcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNdOdNdQdPdRaJaJdSaJaJdXdWaJaYaYaYaJdYeadZaJaYaYaYaJecefcgcgcgcfbzegdydAbzbnbnbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -1345,21 +1345,21 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxfEfDaxgHfFdedefGfHaxaaaebsaaaaaeaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaabNfKfJfMfLfNfMfPfOfQaJaIaeaaaaaaaaaaaaaagUaaeSfceeaaaaaaaaaaaaaaaaaaaeaIbzfTfSfUflflfVbzfWfWbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaxfYfXgaaxgcgbddbvddaxaabsbsaeaaaaaeaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNggfMfMghgjgiglbNgmaIaeaeaaaaaaaaaaaaaaaaaafmfceeaaaaaaaaaaaaaaaaaaaeaebngrbzbzgsgsbzbzgtflgubnbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxaxddaxaxaxaxaxbyaxaebjbsaeaaaaaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNbNgwfMfMfMfMgxbNbtaeaeaeaeaaaaaaaaaaaaaaaaaaeefyeeaaaaaaaaaaaaaaaaaaaeaeaeaebnbnflflflflflflflgAbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxbAaxbsbsaeaaaaaeaeaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaWbYgCfMfMfMfMgFaWezaaaaaaaeaaaaaaaaaaaaaaaaaaaaeefceeaaaaaaaaaaaaaaaaaeaeaeaaaaaabnbnflgtflflflgtgGbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxbAaxbsbsaeaaaaaeaeaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaWcsgCfMfMfMfMgFaWezaaaaaaaeaaaaaaaaaaaaaaaaaaaaeefceeaaaaaaaaaaaaaaaaaeaeaeaaaaaabnbnflgtflflflgtgGbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagIhlgIaaaeaeaaaaaeaaaaaaaaaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaWgJeEfMfMfMfMgFaWezaaaaaaaaaaaaaaaeaaaaaaaaaaaacHcJgNcJcHaaaaaaaaaaaaaeaeaeaaaaaaaaaabnbngPgRgQgQgSbzbzbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNgVfMeEfMfMgWgXaWezaaaaaaaaaaaaaaaaaaaaaaaacHcMcMcMgZhcbScMcMcMcHaeaeaeaeaeaaaaaaaaaaaaaabnbzbzbzhebzbzhfhgbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNhhfMeEdNhjhihkgmaaaaaaaaaaaaaaaaaaaeaecHcMcMhnhmcSeheZhbcMhohvcYcMcHhwaeaeaaaaaaaaaaaaaaaagrhyhxhAhzhChBeybzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNgVfMeEfMfMgWgXaWezaaaaaaaaaaaaaaaaaaaaaaaacHcMcMcMgZhcbScMcMcMcHaeaeaeaeaeaaaaaaaaaaaaaabnbzbzbzhebzbzeyhfbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaeaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNhhfMeEdNhjhihkgmaaaaaaaaaaaaaaaaaaaeaecHcMcMhnhmcSeheZhbcMhohvcYcMcHhwaeaeaaaaaaaaaaaaaaaagrhyhxhAhzhChBhgbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNbNdbhEfxcpbNbNbNbtaaaaaaaeaaaaaaaaaecHhJhshLhKhMhMhOhqhrhthRhQhThShVhUhWcHaeaaaaaaaaaaaaaaaabnbnhAeFhYhAiahAibbnbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaabNieftiffMeEftihbNbtaaaaaaaaaaaaaaaaaacHcMhLiihMijikikimilioiniqipisirhMitiuhUcHaaaaaaaaaaaaaaaaaabnbnhAivixiwhAiyizgraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNiBfMhGidiAiEiGiFaaaaaaaaaaaaaaaaaacHhsiHiIhMijiJhMiKdMhNiMhPcMiNhMiPirhMiRiQcMcHaaaaaaaaaaaaaaaaaagriThAgDiahYgMiVgraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNiBfMhGidiAiEiGiFaaaaaaaaaaaaaaaaaacHhsiHiIhMijiJhMiKdMhNiMhPcMiNhMiPirhMiRiQcMcHaaaaaaaaaaaaaaaaaagriThAgDiahYgMiggraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtaWgwfMiXfMiZiYbNbtaaaaaaaaaaaaaaaacHhsjbjahMijiJhMjdeTdTjejhjgcMjihMhMiPirhMjkcMdUcHaaaaaaaaaaaaaaaabnbzjnjpiajrjqjsbzbnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNjufzfMiXfMfMjviFaaaaaaaaaaaaaaaacHcMjwjyjxijiJhMjzjBcMcMcMhJcMcMdVjHjGhMiPjIiJjKjJhUcHaaaaaaaaaaaaaaaagrjLjMiaiUjqgOjNbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjPhdfMiXgTjSaWbtaaaaaaaaaaaaaaaahJjUjTjVijiJiRiKhshJcHaaaaaaaaaacHhJigkaiRiPikkbhMfAhJaaaaaaaaaaaaaaaabnbzhAhBiUkdkfkebzaaaaaaaaaakgaaaaaakhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNkifJkjiXkkklbNaaaaaaaaaaaaaaaacHhskmikikiJiRknkohJaaaaaaaaaaaaaaaakphJkrkqhMhMkshMkthUcHaaaaaaaaaaaaaaaabzkuiaiUkvgOkwbzaaaaaaaakxjjkyaakAjjkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNeikDbNkFbNbNbtaaaaaaaaaaaaaaaacMkHkshMhMhMkKkJcMcHaaaaaaaaaajtaagUaacHepkLkNhMkshMkPkOcMaaaaaaaaaaaaaaaabnbzkQkReDkSbzbzbnaaaaaakxjjkyaakAjjkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNgBkTkVkVkXkWbNaaaaaaaaaaaaaaaacHcMkYkshMhMiKhshJcHaeaaaeaeaaaeaakZaaaaaacHhJhUlaiPikldlccMcHaaaaaaaaaaaaaaaabzlelglflgjXlibzaaaaaakxjjkyaakAjjkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNljgfgfgfhDlkbNaaaaaaaaaaaaaaaacMjDhMkslnlqlohJaaaaaaaaaacHcMfbfRlDlyedaeaeaahJlMhMhMkshMlNcMaaaaaaaaaaaaaaaaewlQhFlflflTmdgraaaaaakxjjkyaakAjjkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiCiDiLiWjFbtbNbNplpkgfhHllpobNaaaaaaaaaaaaaaaacMprhMkspspvcMcHaaaaaaaacHcMlhpJpHlDpKaagUaaaacHcMpMjGkshMpNcMaaaaaaaaaaaaaaaabzpOgylghIpQpRgraaaaaakxjjkyaakAjjkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNjufzfMiXfMfMjviFaaaaaaaaaaaaaaaacHcMjwjyjxijiJhMjzjBcMcMcMhJcMcMdVjHjGhMiPjIiJiVjJhUcHaaaaaaaaaaaaaaaagrjLjMiaiUjqgOjNbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjPhdfMiXgTjSaWbtaaaaaaaaaaaaaaaahJjUjTjVijiJiRiKhshJcHaaaaaaaaaacHhJjjkaiRiPikkbhMfAhJaaaaaaaaaaaaaaaabnbzhAhBiUkdkfkebzaaaaaaaaaakgaaaaaakhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNkifJkjiXkkklbNaaaaaaaaaaaaaaaacHhskmikikiJiRknkohJaaaaaaaaaaaaaaaakphJkrkqhMhMkshMkthUcHaaaaaaaaaaaaaaaabzkuiaiUkvgOkwbzaaaaaaaakxjKkyaakAjKkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtbNeikDbNkFbNbNbtaaaaaaaaaaaaaaaacMkHkshMhMhMkKkJcMcHaaaaaaaaaajtaagUaacHepkLkNhMkshMkPkOcMaaaaaaaaaaaaaaaabnbzkQkReDkSbzbzbnaaaaaakxjKkyaakAjKkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNgBkTkVkVkXkWbNaaaaaaaaaaaaaaaacHcMkYkshMhMiKhshJcHaeaaaeaeaaaeaakZaaaaaacHhJhUlaiPikldlccMcHaaaaaaaaaaaaaaaabzlelglflgjXlibzaaaaaakxjKkyaakAjKkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNljgfgfgfhDlkbNaaaaaaaaaaaaaaaacMjDhMkslnlqlohJaaaaaaaaaacHcMfbfRlDlyedaeaeaahJlMhMhMkshMlNcMaaaaaaaaaaaaaaaaewlQhFlflflTmdgraaaaaakxjKkyaakAjKkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiCiDiLiWjFbtbNbNplpkgfhHllpobNaaaaaaaaaaaaaaaacMprhMkspspvcMcHaaaaaaaacHcMlhpJpHlDpKaagUaaaacHcMpMjGkshMpNcMaaaaaaaaaaaaaaaabzpOgylghIpQpRgraaaaaakxjKkyaakAjKkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajOpSpVpUjObNpXpWgfgfpZgfllqabNbtaaaaaaaaaaaacHcMcSqdqfcMcMcMaaaaaaaacHcMlhpJqglDlDgngoaajtaaaacMcMcMqkqjcMcMcHaaaaaaaaaaaabnbzqmqoqnhAhAonbzbzbnaaaaoSaaaaaaoSaaaakhkhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajOqrqtqsqvquqxgfhXgfgfgfqzhZqAbNfbfbfbfbfbfbcMkclmkcmEnnqpcMqEqDqEqEcMlhpJgElDhapJhpcMqEqDqEqEcMqNpjpTqCqIqJcMfbfbfbfbfbfbbzqoqmqolfqLhArlqMqPqOrmrmrnrmrmrmrnrmrmrnrFkyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajOqTqsqUjObNqXqWgYqYrbiOrdrcrfreikrgrhiSrgrjrXrkscsViJhMrHstrororororppJkClDlDlDlbrrrurtrtrtrtrvrWikrwiksYikrxikryikikryrhrzrBrArCrCsZrEsgeGbzbzrIaarJaaaaaarJaaaaaashrKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -3,7 +3,7 @@
"c" = (/obj/machinery/shower{pixel_y = 24},/obj/structure/window/reinforced/polarized{dir = 4; id = "room_s"},/turf/unsimulated/floor{dir = 8; icon_state = "whiteblue"},/area/template_noop)
"d" = (/turf/unsimulated/floor/carpet,/area/template_noop)
"e" = (/obj/structure/rack,/obj/item/clothing/suit/apron,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/holidaypriest,/obj/item/clothing/suit/judgerobe,/obj/item/clothing/suit/storage/labcoat,/obj/item/clothing/suit/hooded/nun,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/suit/wizrobe/fake,/obj/item/clothing/suit/wizrobe/marisa/fake,/obj/effect/decal/cleanable/greenglow,/turf/unsimulated/floor/carpet,/area/template_noop)
"f" = (/obj/structure/rack,/obj/item/clothing/head/collectable/police,/obj/item/clothing/head/nun_hood,/obj/item/clothing/head/mailman,/obj/item/clothing/head/nursehat,/obj/item/clothing/head/wizard/fake,/obj/item/clothing/head/powdered_wig,/obj/item/clothing/head/wizard/marisa/fake,/obj/item/clothing/mask/gas/sexyclown,/turf/unsimulated/floor/carpet,/area/template_noop)
"f" = (/obj/structure/rack,/obj/item/clothing/head/collectable/police,/obj/item/clothing/head/nun_hood,/obj/item/clothing/head/mailman,/obj/item/clothing/head/nursehat,/obj/item/clothing/head/wizard/fake,/obj/item/clothing/head/powdered_wig,/obj/item/clothing/head/wizard/marisa/fake,/obj/item/clothing/mask/gas/clown_hat/sexy,/turf/unsimulated/floor/carpet,/area/template_noop)
"g" = (/obj/structure/rack,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/head/kitty,/obj/item/clothing/head/rabbitears,/obj/item/clothing/mask/muzzle,/obj/item/clothing/accessory/stethoscope,/turf/unsimulated/floor/carpet,/area/template_noop)
"h" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop)
"i" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/unsimulated/floor/carpet,/area/template_noop)
@@ -3,7 +3,7 @@
"c" = (/obj/machinery/shower{pixel_y = 24},/obj/structure/window/reinforced/polarized{dir = 4; id = "room_s"},/turf/unsimulated/floor{dir = 8; icon_state = "whiteblue"},/area/template_noop)
"d" = (/turf/unsimulated/floor/carpet,/area/template_noop)
"e" = (/obj/structure/rack,/obj/item/clothing/suit/apron,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/holidaypriest,/obj/item/clothing/suit/judgerobe,/obj/item/clothing/suit/storage/labcoat,/obj/item/clothing/suit/hooded/nun,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/suit/wizrobe/fake,/obj/item/clothing/suit/xenos,/obj/item/clothing/suit/wizrobe/marisa/fake,/turf/unsimulated/floor/carpet,/area/template_noop)
"f" = (/obj/structure/rack,/obj/item/clothing/head/collectable/police,/obj/item/clothing/head/nun_hood,/obj/item/clothing/head/mailman,/obj/item/clothing/head/nursehat,/obj/item/clothing/head/wizard/fake,/obj/item/clothing/head/powdered_wig,/obj/item/clothing/head/xenos,/obj/item/clothing/head/wizard/marisa/fake,/obj/item/clothing/mask/gas/sexyclown,/turf/unsimulated/floor/carpet,/area/template_noop)
"f" = (/obj/structure/rack,/obj/item/clothing/head/collectable/police,/obj/item/clothing/head/nun_hood,/obj/item/clothing/head/mailman,/obj/item/clothing/head/nursehat,/obj/item/clothing/head/wizard/fake,/obj/item/clothing/head/powdered_wig,/obj/item/clothing/head/xenos,/obj/item/clothing/head/wizard/marisa/fake,/obj/item/clothing/mask/gas/clown_hat/sexy,/turf/unsimulated/floor/carpet,/area/template_noop)
"g" = (/obj/structure/rack,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/head/kitty,/obj/item/clothing/head/rabbitears,/obj/item/clothing/mask/muzzle,/obj/item/clothing/accessory/stethoscope,/turf/unsimulated/floor/carpet,/area/template_noop)
"h" = (/obj/structure/dresser,/turf/unsimulated/floor/carpet,/area/template_noop)
"i" = (/obj/structure/table/wood,/obj/item/flashlight/lamp/green,/turf/unsimulated/floor/carpet,/area/template_noop)
+3
View File
@@ -75,6 +75,9 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list(
#define isslime(A) (istype((A), /mob/living/carbon/slime))
//Structures
#define isstructure(A) (istype((A), /obj/structure))
// Misc
#define isclient(A) istype(A, /client)
#define isradio(A) istype(A, /obj/item/radio)
+3 -1
View File
@@ -51,4 +51,6 @@
#define EXP_TYPE_SECURITY "Security"
#define EXP_TYPE_SILICON "Silicon"
#define EXP_TYPE_SERVICE "Service"
#define EXP_TYPE_WHITELIST "Whitelist"
#define EXP_TYPE_WHITELIST "Whitelist"
#define EXP_DEPT_TYPE_LIST list(EXP_TYPE_SERVICE, EXP_TYPE_MEDICAL, EXP_TYPE_ENGINEERING, EXP_TYPE_SCIENCE, EXP_TYPE_SECURITY, EXP_TYPE_COMMAND, EXP_TYPE_SILICON, EXP_TYPE_SPECIAL)
+1 -1
View File
@@ -449,7 +449,7 @@ proc/pollCandidates(Question, be_special_type, antag_age_check = 0, poll_time =
if(jobban_isbanned(G, roletext) || jobban_isbanned(G, "Syndicate"))
continue
if(config.use_exp_restrictions && min_hours)
if(G.client.get_exp_living_num() < min_hours * 60)
if(G.client.get_exp_type_num(EXP_TYPE_LIVING) < min_hours * 60)
continue
if(check_antaghud && cannotPossess(G))
continue
+161 -137
View File
@@ -343,7 +343,7 @@ var/record_id_num = 1001
locked += L
return
/proc/get_id_photo(mob/living/carbon/human/H)
/proc/get_id_photo(mob/living/carbon/human/H, var/custom_job = null)
var/icon/preview_icon = null
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
var/obj/item/organ/internal/eyes/eyes_organ = H.get_int_organ(/obj/item/organ/internal/eyes)
@@ -470,142 +470,166 @@ var/record_id_num = 1001
var/icon/clothes_s = null
if(H.mind)
switch(H.mind.assigned_role)
if("Head of Personnel")
clothes_s = new /icon('icons/mob/uniform.dmi', "hop_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
if("Nanotrasen Representative")
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
if("Blueshield")
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "swat_gl"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "blueshield"), ICON_OVERLAY)
if("Magistrate")
clothes_s = new /icon('icons/mob/uniform.dmi', "really_black_suit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "judge"), ICON_OVERLAY)
if("Bartender")
clothes_s = new /icon('icons/mob/uniform.dmi', "ba_suit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Botanist")
clothes_s = new /icon('icons/mob/uniform.dmi', "hydroponics_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Chef")
clothes_s = new /icon('icons/mob/uniform.dmi', "chef_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Janitor")
clothes_s = new /icon('icons/mob/uniform.dmi', "janitor_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Librarian")
clothes_s = new /icon('icons/mob/uniform.dmi', "red_suit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Quartermaster")
clothes_s = new /icon('icons/mob/uniform.dmi', "qm_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
if("Cargo Technician")
clothes_s = new /icon('icons/mob/uniform.dmi', "cargotech_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Shaft Miner")
clothes_s = new /icon('icons/mob/uniform.dmi', "miner_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Lawyer")
clothes_s = new /icon('icons/mob/uniform.dmi', "internalaffairs_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
if("Chaplain")
clothes_s = new /icon('icons/mob/uniform.dmi', "chapblack_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Research Director")
clothes_s = new /icon('icons/mob/uniform.dmi', "director_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
if("Scientist")
clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
if("Chemist")
clothes_s = new /icon('icons/mob/uniform.dmi', "chemistrywhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem_open"), ICON_OVERLAY)
if("Chief Medical Officer")
clothes_s = new /icon('icons/mob/uniform.dmi', "cmo_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo_open"), ICON_OVERLAY)
if("Medical Doctor")
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
if("Geneticist")
clothes_s = new /icon('icons/mob/uniform.dmi', "geneticswhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen_open"), ICON_OVERLAY)
if("Virologist")
clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY)
if("Psychiatrist")
clothes_s = new /icon('icons/mob/uniform.dmi', "psych_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_UNDERLAY)
if("Paramedic")
clothes_s = new /icon('icons/mob/uniform.dmi', "paramedic_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Captain")
clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
if("Head of Security")
clothes_s = new /icon('icons/mob/uniform.dmi', "hosred_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
if("Warden")
clothes_s = new /icon('icons/mob/uniform.dmi', "warden_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
if("Detective")
clothes_s = new /icon('icons/mob/uniform.dmi', "detective_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY)
if("Security Pod Pilot")
clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "bomber"), ICON_OVERLAY)
if("Brig Physician")
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "fr_jacket_open"), ICON_OVERLAY)
if("Security Officer")
clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
if("Chief Engineer")
clothes_s = new /icon('icons/mob/uniform.dmi', "chief_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
if("Station Engineer")
clothes_s = new /icon('icons/mob/uniform.dmi', "engine_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
if("Life Support Specialist")
clothes_s = new /icon('icons/mob/uniform.dmi', "atmos_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
if("Mechanic")
clothes_s = new /icon('icons/mob/uniform.dmi', "mechanic_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
if("Roboticist")
clothes_s = new /icon('icons/mob/uniform.dmi', "robotics_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
else if(H.mind.assigned_role in get_all_centcom_jobs())
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
else
clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
else
clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
var/job_clothes = null
if(custom_job)
job_clothes = custom_job
else if(H.mind)
job_clothes = H.mind.assigned_role
switch(job_clothes)
if("Head of Personnel")
clothes_s = new /icon('icons/mob/uniform.dmi', "hop_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
if("Nanotrasen Representative")
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
if("Blueshield")
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "swat_gl"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "blueshield"), ICON_OVERLAY)
if("Magistrate")
clothes_s = new /icon('icons/mob/uniform.dmi', "really_black_suit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "judge"), ICON_OVERLAY)
if("Bartender")
clothes_s = new /icon('icons/mob/uniform.dmi', "ba_suit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Botanist")
clothes_s = new /icon('icons/mob/uniform.dmi', "hydroponics_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Chef")
clothes_s = new /icon('icons/mob/uniform.dmi', "chef_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Janitor")
clothes_s = new /icon('icons/mob/uniform.dmi', "janitor_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Librarian")
clothes_s = new /icon('icons/mob/uniform.dmi', "red_suit_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Barber")
clothes_s = new /icon('icons/mob/uniform.dmi', "barber_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Clown")
clothes_s = new /icon('icons/mob/uniform.dmi', "clown_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "clown"), ICON_UNDERLAY)
if("Mime")
clothes_s = new /icon('icons/mob/uniform.dmi', "mime_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Quartermaster")
clothes_s = new /icon('icons/mob/uniform.dmi', "qm_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
if("Cargo Technician")
clothes_s = new /icon('icons/mob/uniform.dmi', "cargotech_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Shaft Miner")
clothes_s = new /icon('icons/mob/uniform.dmi', "miner_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Lawyer")
clothes_s = new /icon('icons/mob/uniform.dmi', "internalaffairs_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
if("Chaplain")
clothes_s = new /icon('icons/mob/uniform.dmi', "chapblack_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Research Director")
clothes_s = new /icon('icons/mob/uniform.dmi', "director_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
if("Scientist")
clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY)
if("Chemist")
clothes_s = new /icon('icons/mob/uniform.dmi', "chemistrywhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem_open"), ICON_OVERLAY)
if("Chief Medical Officer")
clothes_s = new /icon('icons/mob/uniform.dmi', "cmo_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo_open"), ICON_OVERLAY)
if("Medical Doctor")
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
if("Coroner")
clothes_s = new /icon('icons/mob/uniform.dmi', "scrubsblack_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_mort_open"), ICON_OVERLAY)
if("Geneticist")
clothes_s = new /icon('icons/mob/uniform.dmi', "geneticswhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen_open"), ICON_OVERLAY)
if("Virologist")
clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY)
if("Psychiatrist")
clothes_s = new /icon('icons/mob/uniform.dmi', "psych_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_UNDERLAY)
if("Paramedic")
clothes_s = new /icon('icons/mob/uniform.dmi', "paramedic_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Captain")
clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
if("Head of Security")
clothes_s = new /icon('icons/mob/uniform.dmi', "hosred_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
if("Warden")
clothes_s = new /icon('icons/mob/uniform.dmi', "warden_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
if("Detective")
clothes_s = new /icon('icons/mob/uniform.dmi', "detective_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY)
if("Security Pod Pilot")
clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "bomber"), ICON_OVERLAY)
if("Brig Physician")
clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "fr_jacket_open"), ICON_OVERLAY)
if("Security Officer")
clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
if("Chief Engineer")
clothes_s = new /icon('icons/mob/uniform.dmi', "chief_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
if("Station Engineer")
clothes_s = new /icon('icons/mob/uniform.dmi', "engine_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
if("Life Support Specialist")
clothes_s = new /icon('icons/mob/uniform.dmi', "atmos_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
if("Mechanic")
clothes_s = new /icon('icons/mob/uniform.dmi', "mechanic_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY)
if("Roboticist")
clothes_s = new /icon('icons/mob/uniform.dmi', "robotics_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY)
if("Syndicate Agent")
clothes_s = new /icon('icons/mob/uniform.dmi', "syndicate_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
if("Syndicate Officer")
clothes_s = new /icon('icons/mob/uniform.dmi', "syndicate_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "swat_gl"), ICON_UNDERLAY)
if("Syndicate Nuclear Operative")
clothes_s = new /icon('icons/mob/uniform.dmi', "syndicate_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/hands.dmi', "swat_gl"), ICON_UNDERLAY)
else if(H.mind.assigned_role in get_all_centcom_jobs())
clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY)
else
clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
preview_icon.Blend(face_s, ICON_OVERLAY) // Why do we do this twice
if(clothes_s)
+1
View File
@@ -59,6 +59,7 @@ var/list/diseases = subtypesof(/datum/disease)
var/cure_chance = 8
var/carrier = FALSE //If our host is only a carrier
var/bypasses_immunity = FALSE //Does it skip species virus immunity check? Some things may diseases and not viruses
var/virus_heal_resistant = FALSE // Some things aren't technically viruses/traditional diseases and should be immune to edge case cure methods, like healing viruses.
var/permeability_mod = 1
var/severity = NONTHREAT
var/list/required_organs = list()
@@ -69,6 +69,8 @@ Bonus
var/cured = 0
for(var/thing in M.viruses)
var/datum/disease/D = thing
if(D.virus_heal_resistant)
continue
if(D != A)
cured = 1
cured_diseases += D.GetDiseaseID()
+1
View File
@@ -13,6 +13,7 @@
visibility_flags = HIDDEN_PANDEMIC
required_organs = list(/obj/item/organ/internal/appendix)
bypasses_immunity = TRUE
virus_heal_resistant = TRUE
/datum/disease/appendicitis/stage_act()
..()
+1
View File
@@ -13,6 +13,7 @@
severity = MINOR
disease_flags = CURABLE
spread_flags = NON_CONTAGIOUS
virus_heal_resistant = TRUE
var/remissive = 0
/datum/disease/food_poisoning/stage_act()
+2
View File
@@ -11,7 +11,9 @@
desc = "Uncontrollable laughing."
severity = BIOHAZARD
spread_flags = NON_CONTAGIOUS
disease_flags = CAN_CARRY
bypasses_immunity = TRUE //Kuru is a prion disorder, not a virus
virus_heal_resistant = TRUE
/datum/disease/kuru/stage_act()
..()
+2 -2
View File
@@ -6,10 +6,10 @@
qdel(src)
owner = new_owner
/datum/spawners_menu/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = FALSE, datum/nanoui/master_ui = null)
/datum/spawners_menu/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = FALSE, datum/topic_state/state = ghost_state, datum/nanoui/master_ui = null)
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "spawners_menu.tmpl", "Spawners Menu", 700, 600, master_ui)
ui = new(user, src, ui_key, "spawners_menu.tmpl", "Spawners Menu", 700, 600, master_ui, state = state)
ui.open()
/datum/spawners_menu/ui_data(mob/user)
+7
View File
@@ -878,6 +878,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
item = /obj/item/grenade/plastic/c4
cost = 1
/datum/uplink_item/explosives/plastic_explosives_pack
name = "Pack of 5 C-4 Explosives"
desc = "A package containing 5 C-4 Explosives at a discounted price. For when you need that little bit extra for your sabotaging needs."
reference = "C4P"
item = /obj/item/storage/box/syndie_kit/c4
cost = 4
/datum/uplink_item/explosives/breaching_charge
name = "Composition X-4"
desc = "X-4 is a shaped charge designed to be safe to the user while causing maximum damage to the occupants of the room beach breached. It has a modifiable timer with a minimum setting of 10 seconds."
+1
View File
@@ -93,6 +93,7 @@
pulling.pulledby = null
var/mob/living/ex_pulled = pulling
pulling = null
pulledby = null
if(isliving(ex_pulled))
var/mob/living/L = ex_pulled
L.update_canmove()// mob gets up if it was lyng down in a chokehold
+12
View File
@@ -202,3 +202,15 @@
/datum/dna/gene/disability/wingdings/New()
block = WINGDINGSBLOCK
/datum/dna/gene/disability/wingdings/OnSay(var/mob/M, var/message)
var/list/chars = string2charlist(message)
var/garbled_message = ""
for(var/C in chars)
if(C in GLOB.alphabet_uppercase)
garbled_message += pick(GLOB.alphabet_uppercase)
else if(C in GLOB.alphabet)
garbled_message += pick(GLOB.alphabet)
else
garbled_message += C
message = garbled_message
return message
@@ -61,61 +61,6 @@
var/blacklisted_lights = list(/obj/item/flashlight/flare, /obj/item/flashlight/slime)
action_icon_state = "veil"
/obj/effect/proc_holder/spell/aoe_turf/veil/proc/extinguishItem(var/obj/item/I) //WARNING NOT SUFFICIENT TO EXTINGUISH AN ITEM HELD BY A MOB
if(istype(I, /obj/item/flashlight))
var/obj/item/flashlight/F = I
if(istype(F, /obj/item/flashlight/flare/glowstick))
var/obj/item/flashlight/flare/glowstick/gstick = F
gstick.fuel = 0
if(F.on)
if(is_type_in_list(I, blacklisted_lights))
I.visible_message("<span class='danger'>[I] dims slightly before scattering the shadows around it.</span>")
return
F.on = 0
F.update_brightness()
else if(istype(I, /obj/item/pda))
var/obj/item/pda/P = I
var/datum/data/pda/utility/flashlight/FL = P.find_program(/datum/data/pda/utility/flashlight)
if(FL && FL.fon)
FL.start()
else if(istype(I, /obj/item/clothing/head/helmet/space/hardsuit))
var/obj/item/clothing/head/helmet/space/hardsuit/R = I
if(R.on)
R.toggle_light()
R.visible_message("<span class='danger'>[R]'s light fades and turns off.</span>")
else if(istype(I, /obj/item/clothing/head/helmet/space/eva/plasmaman))
var/obj/item/clothing/head/helmet/space/eva/plasmaman/P = I
if(P.on)
P.toggle_light()
P.visible_message("<span class='danger'>[P]'s light fades and turns off.</span>")
else if(istype(I, /obj/item/gun))
var/obj/item/gun/G = I
if(G.gun_light)
var/obj/item/flashlight/F = G.gun_light
if(F.on)
G.toggle_gunlight()
G.visible_message("<span class='danger'>[G]'s light fades and turns off.</span>")
else if(istype(I, /obj/item/clothing/head/hardhat)) //There really needs to be a better way to handle this.
var/obj/item/clothing/head/hardhat/hhat = I
if(hhat.on)
hhat.on = 0
hhat.set_light(0)
hhat.icon_state = "hardhat0_[hhat.item_color]"
hhat.item_state = "hardhat0_[hhat.item_color]"
hhat.visible_message("<span class='danger'>[hhat]'s light fades and turns off.</span>")
return I.light_range
/obj/effect/proc_holder/spell/aoe_turf/veil/proc/extinguishMob(mob/living/L)
for(var/obj/item/F in L)
if(F.light_range > 0)
extinguishItem(F)
if(ishuman(L))
var/mob/living/carbon/human/H = L
var/obj/item/organ/internal/lantern/O = H.get_int_organ(/obj/item/organ/internal/lantern)
if(O && O.glowing)
O.toggle_biolum(1)
H.visible_message("<span class='danger'>[H] is engulfed in shadows and fades into the darkness.</span>", "<span class='danger'>A sense of dread washes over you as you suddenly dim dark.</span>")
/obj/effect/proc_holder/spell/aoe_turf/veil/cast(list/targets, mob/user = usr)
if(!shadowling_check(user))
charge_counter = charge_max
@@ -125,23 +70,8 @@
G.visible_message("<span class='warning'>\The [G] withers away!</span>")
qdel(G)
for(var/turf/T in targets)
for(var/obj/item/F in T.contents)
extinguishItem(F)
for(var/obj/machinery/floodlight/F in T.contents)
F.on = 0
F.set_light(0)
for(var/obj/machinery/light/L in T.contents)
L.on = 0
L.visible_message("<span class='danger'>[L] flickers and falls dark.</span>")
L.update(0)
for(var/obj/machinery/computer/C in T.contents)
C.set_light(0)
C.visible_message("<span class='danger'>[C] grows dim, its screen barely readable.</span>")
for(var/mob/living/H in T.contents)
extinguishMob(H)
for(var/mob/living/silicon/robot/borg in T.contents)
borg.update_headlamp(1, charge_max)
for(var/atom/A in T.contents)
A.extinguish_light()
/obj/effect/proc_holder/spell/targeted/shadow_walk
name = "Shadow Walk"
+2 -2
View File
@@ -237,8 +237,8 @@
/datum/outfit/job/clown/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
if(H.gender == FEMALE)
mask = /obj/item/clothing/mask/gas/sexyclown
uniform = /obj/item/clothing/under/sexyclown
mask = /obj/item/clothing/mask/gas/clown_hat/sexy
uniform = /obj/item/clothing/under/rank/clown/sexy
/datum/outfit/job/clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
. = ..()
+35 -30
View File
@@ -47,7 +47,7 @@ var/global/list/role_playtime_requirements = list(
to_chat(src, "<span class='warning'>Playtime tracking is not enabled.</span>")
return
to_chat(src, "<span class='notice'>Your playtime is [get_exp_living()].</span>")
to_chat(src, "<span class='notice'>Your [EXP_TYPE_CREW] playtime is [get_exp_type(EXP_TYPE_CREW)].</span>")
// Admin Verbs
@@ -57,36 +57,31 @@ var/global/list/role_playtime_requirements = list(
if(!check_rights(R_ADMIN|R_MOD|R_MENTOR))
return
var/msg = "<html><head><title>Playtime Report</title></head><body>"
var/list/players_new = list()
var/list/players_old = list()
var/pline
var/datum/job/theirjob
var/jtext
msg += "<TABLE border ='1'><TR><TH>Player</TH><TH>Job</TH><TH>Crew</TH>"
for(var/thisdept in EXP_DEPT_TYPE_LIST)
msg += "<TH>[thisdept]</TH>"
msg += "</TR>"
for(var/client/C in GLOB.clients)
jtext = "No Job"
msg += "<TR>"
if(check_rights(R_ADMIN, 0))
msg += "<TD>[key_name_admin(C.mob)]</TD>"
else
msg += "<TD>[key_name_mentor(C.mob)]</TD>"
jtext = "-"
if(C.mob.mind && C.mob.mind.assigned_role)
theirjob = job_master.GetJob(C.mob.mind.assigned_role)
if(theirjob)
jtext = theirjob.title
if(config.use_exp_restrictions && theirjob.exp_requirements && theirjob.exp_type)
jtext += "<span class='warning'>*</span>"
if(check_rights(R_ADMIN, 0))
pline = "<LI> [key_name_admin(C.mob)]: [jtext]: <A href='?_src_=holder;getplaytimewindow=[C.mob.UID()]'>" + C.get_exp_living() + "</a></LI>"
else
pline = "<LI> [key_name_mentor(C.mob)]: [jtext]: <A href='?_src_=holder;getplaytimewindow=[C.mob.UID()]'>" + C.get_exp_living() + "</a></LI>"
if(C.get_exp_living_num() > 1200)
players_old += pline
else
players_new += pline
if(players_new.len)
msg += "<BR>Players under 20h:<BR><UL>"
msg += players_new.Join()
msg += "</UL>"
if(players_old.len)
msg += "<BR>Players over 20h:<BR><UL>"
msg += players_old.Join()
msg += "</UL>"
msg += "</BODY></HTML>"
msg += "<TD>[jtext]</TD>"
msg += "<TD><A href='?_src_=holder;getplaytimewindow=[C.mob.UID()]'>" + C.get_exp_type(EXP_TYPE_CREW) + "</a></TD>"
msg += "[C.get_exp_dept_string()]"
msg += "</TR>"
msg += "</TABLE></BODY></HTML>"
src << browse(msg, "window=Player_playtime_check")
@@ -200,14 +195,24 @@ var/global/list/role_playtime_requirements = list(
return_text += "</LI></UL>"
return return_text
/client/proc/get_exp_type(var/etype)
return get_exp_format(get_exp_type_num(etype))
/client/proc/get_exp_living()
return get_exp_format(get_exp_living_num())
/client/proc/get_exp_living_num()
/client/proc/get_exp_type_num(var/etype)
var/list/play_records = params2list(prefs.exp)
var/exp_living = text2num(play_records[EXP_TYPE_LIVING])
return exp_living
return text2num(play_records[etype])
/client/proc/get_exp_dept_string()
var/list/play_records = params2list(prefs.exp)
var/list/result_text = list()
for(var/thistype in EXP_DEPT_TYPE_LIST)
var/thisvalue = text2num(play_records[thistype])
if(thisvalue)
result_text.Add("<TD>[get_exp_format(thisvalue)]</TD>")
else
result_text.Add("<TD>-</TD>")
return result_text.Join("")
/proc/get_exp_format(var/expnum)
if(expnum > 60)
+4
View File
@@ -68,6 +68,10 @@
set_broken()
density = 0
/obj/machinery/computer/extinguish_light()
set_light(0)
visible_message("<span class='danger'>[src] grows dim, its screen barely readable.</span>")
/obj/machinery/computer/update_icon()
overlays.Cut()
if(stat & NOPOWER)
+4
View File
@@ -132,3 +132,7 @@
cell = W
to_chat(user, "You insert the power cell.")
updateicon()
/obj/machinery/floodlight/extinguish_light()
on = 0
set_light(0)
+2 -2
View File
@@ -1184,8 +1184,8 @@
/obj/item/clothing/head/bandana = 1,/obj/item/clothing/under/soviet = 1,/obj/item/clothing/head/ushanka = 1,/obj/item/clothing/suit/imperium_monk = 1,
/obj/item/clothing/mask/gas/cyborg = 1,/obj/item/clothing/suit/holidaypriest = 1,/obj/item/clothing/head/wizard/marisa/fake = 1,
/obj/item/clothing/suit/wizrobe/marisa/fake = 1,/obj/item/clothing/under/sundress = 1,/obj/item/clothing/head/witchwig = 1,/obj/item/twohanded/staff/broom = 1,
/obj/item/clothing/suit/wizrobe/fake = 1,/obj/item/clothing/head/wizard/fake = 1,/obj/item/twohanded/staff = 3,/obj/item/clothing/mask/gas/sexyclown = 1,
/obj/item/clothing/under/sexyclown = 1,/obj/item/clothing/mask/gas/sexymime = 1,/obj/item/clothing/under/sexymime = 1,
/obj/item/clothing/suit/wizrobe/fake = 1,/obj/item/clothing/head/wizard/fake = 1,/obj/item/twohanded/staff = 3,/obj/item/clothing/mask/gas/clown_hat/sexy = 1,
/obj/item/clothing/under/rank/clown/sexy = 1,/obj/item/clothing/mask/gas/sexymime = 1,/obj/item/clothing/under/sexymime = 1,
/obj/item/clothing/mask/face/bat = 1,/obj/item/clothing/mask/face/bee = 1,/obj/item/clothing/mask/face/bear = 1,/obj/item/clothing/mask/face/raven = 1,/obj/item/clothing/mask/face/jackal = 1,/obj/item/clothing/mask/face/fox = 1,/obj/item/clothing/mask/face/tribal = 1,/obj/item/clothing/mask/face/rat = 1,
/obj/item/clothing/suit/apron/overalls = 1,
/obj/item/clothing/head/rabbitears =1, /obj/item/clothing/head/sombrero = 1, /obj/item/clothing/suit/poncho = 1,
+2 -2
View File
@@ -250,8 +250,8 @@
qdel(src)
/obj/effect/landmark/costume/sexyclown/New()
new /obj/item/clothing/mask/gas/sexyclown(src.loc)
new /obj/item/clothing/under/sexyclown(src.loc)
new /obj/item/clothing/mask/gas/clown_hat/sexy(loc)
new /obj/item/clothing/under/rank/clown/sexy(loc)
qdel(src)
/obj/effect/landmark/costume/sexymime/New()
+13 -2
View File
@@ -84,6 +84,11 @@
else
return ..()
/obj/item/flashlight/extinguish_light()
if(on)
on = FALSE
update_brightness()
/obj/item/flashlight/pen
name = "penlight"
desc = "A pen-sized light, used by medical staff."
@@ -122,7 +127,7 @@
w_class = WEIGHT_CLASS_BULKY
flags = CONDUCT
materials = list()
on = 1
on = TRUE
// green-shaded desk lamp
@@ -292,6 +297,9 @@
new T(loc)
return INITIALIZE_HINT_QDEL
/obj/item/flashlight/flare/extinguish_light()
visible_message("<span class='danger'>[src] dims slightly before scattering the shadows around it.</span>")
/obj/item/flashlight/flare/torch
name = "torch"
desc = "A torch fashioned from some leaves and a log."
@@ -312,7 +320,7 @@
brightness_on = 6
light_color = "#FFBF00"
materials = list()
on = 1 //Bio-luminesence has one setting, on.
on = TRUE //Bio-luminesence has one setting, on.
/obj/item/flashlight/slime/New()
set_light(brightness_on)
@@ -323,6 +331,9 @@
/obj/item/flashlight/slime/attack_self(mob/user)
return //Bio-luminescence does not toggle.
/obj/item/flashlight/slime/extinguish_light()
visible_message("<span class='danger'>[src] dims slightly before scattering the shadows around it.</span>")
/obj/item/flashlight/emp
origin_tech = "magnets=3;syndicate=1"
@@ -339,3 +339,7 @@
pai.ex_act(severity)
else
qdel(src)
/obj/item/paicard/extinguish_light()
pai.extinguish_light()
set_light(0)
+56 -46
View File
@@ -333,25 +333,6 @@
to_chat(usr, "<span class='notice'>The card's microscanners activate as you pass it over \the [I], copying its access.</span>")
src.access |= I.access //Don't copy access if user isn't an antag -- to prevent metagaming
/obj/item/card/id/syndicate/proc/fake_id_photo(var/mob/living/carbon/human/H)//get_id_photo wouldn't work correctly
if(!istype(H))
return
var/storedDir = H.dir //don't want to lose track of this
var/icon/faked = new()
if(!H.equip_to_slot_if_possible(src, slot_l_store, 0, 1))
to_chat(H, "<span class='warning'>You need to empty your pockets before taking the ID picture.</span>")
return
H.dir = WEST //ensure the icon is actually the proper direction before copying it
faked.Insert(getFlatIcon(H), dir = WEST)
H.dir = SOUTH
faked.Insert(getFlatIcon(H), dir = SOUTH)
H.dir = storedDir
H.equip_to_slot_if_possible(src, slot_l_hand, 0, 1)
return faked
/obj/item/card/id/syndicate/attack_self(mob/user as mob)
if(!src.registered_name)
var t = reject_bad_name(input(user, "What name would you like to use on this card?", "Agent Card name", ishuman(user) ? user.real_name : user.name))
@@ -377,7 +358,7 @@
if("Show")
return ..()
if("Edit")
switch(input(user,"What would you like to edit on \the [src]?") in list("Name","Photo","Appearance","Sex","Age","Occupation","Money Account","Blood Type","DNA Hash","Fingerprint Hash","Reset Card"))
switch(input(user,"What would you like to edit on \the [src]?") in list("Name", "Photo", "Appearance", "Sex", "Age", "Occupation", "Money Account", "Blood Type", "DNA Hash", "Fingerprint Hash", "Reset Access", "Delete Card Information"))
if("Name")
var/new_name = reject_bad_name(input(user,"What name would you like to put on this card?","Agent Card Name", ishuman(user) ? user.real_name : user.name))
if(!Adjacent(user))
@@ -390,11 +371,14 @@
if("Photo")
if(!Adjacent(user))
return
var/icon/newphoto = fake_id_photo(user)
var/job_clothes = null
if(assignment)
job_clothes = assignment
var/icon/newphoto = get_id_photo(user, job_clothes)
if(!newphoto)
return
photo = newphoto
to_chat(user, "<span class='notice'>Photo changed.</span>")
to_chat(user, "<span class='notice'>Photo changed. Select another occupation and take a new photo if you wish to appear with different clothes.</span>")
RebuildHTML()
if("Appearance")
@@ -432,22 +416,41 @@
return
if(!choice)
return
src.icon_state = choice
icon_state = choice
switch(choice)
if("silver")
desc = "A silver card which shows honour and dedication."
if("gold")
desc = "A golden card which shows power and might."
if("clown")
desc = "Even looking at the card strikes you with deep fear."
if("mime")
desc = "..."
if("prisoner")
desc = "You are a number, you are not a free man."
if("centcom")
desc = "An ID straight from Central Command."
else
desc = "A card used to provide ID and determine access across the station."
to_chat(usr, "<span class='notice'>Appearance changed to [choice].</span>")
if("Sex")
var/new_sex = sanitize(stripped_input(user,"What sex would you like to put on this card?","Agent Card Sex", ishuman(user) ? capitalize(user.gender) : "Male", MAX_MESSAGE_LEN))
if(!Adjacent(user))
return
src.sex = new_sex
sex = new_sex
to_chat(user, "<span class='notice'>Sex changed to [new_sex].</span>")
RebuildHTML()
if("Age")
var/new_age = sanitize(stripped_input(user,"What age would you like to put on this card?","Agent Card Age","21", MAX_MESSAGE_LEN))
var/default = "21"
if(ishuman(user))
var/mob/living/carbon/human/H = user
default = H.age
var/new_age = sanitize(input(user,"What age would you like to be written on this card?","Agent Card Age", default) as text)
if(!Adjacent(user))
return
src.age = new_age
age = new_age
to_chat(user, "<span class='notice'>Age changed to [new_age].</span>")
RebuildHTML()
@@ -485,7 +488,7 @@
if(!Adjacent(user))
return
src.assignment = new_job
assignment = new_job
to_chat(user, "<span class='notice'>Occupation changed to [new_job].</span>")
UpdateName()
RebuildHTML()
@@ -507,7 +510,7 @@
var/new_blood_type = sanitize(input(user,"What blood type would you like to be written on this card?","Agent Card Blood Type",default) as text)
if(!Adjacent(user))
return
src.blood_type = new_blood_type
blood_type = new_blood_type
to_chat(user, "<span class='notice'>Blood type changed to [new_blood_type].</span>")
RebuildHTML()
@@ -521,7 +524,7 @@
var/new_dna_hash = sanitize(input(user,"What DNA hash would you like to be written on this card?","Agent Card DNA Hash",default) as text)
if(!Adjacent(user))
return
src.dna_hash = new_dna_hash
dna_hash = new_dna_hash
to_chat(user, "<span class='notice'>DNA hash changed to [new_dna_hash].</span>")
RebuildHTML()
@@ -535,26 +538,33 @@
var/new_fingerprint_hash = sanitize(input(user,"What fingerprint hash would you like to be written on this card?","Agent Card Fingerprint Hash",default) as text)
if(!Adjacent(user))
return
src.fingerprint_hash = new_fingerprint_hash
fingerprint_hash = new_fingerprint_hash
to_chat(user, "<span class='notice'>Fingerprint hash changed to [new_fingerprint_hash].</span>")
RebuildHTML()
if("Reset Card")
name = initial(name)
registered_name = initial(registered_name)
icon_state = initial(icon_state)
sex = initial(sex)
age = initial(age)
assignment = initial(assignment)
associated_account_number = initial(associated_account_number)
blood_type = initial(blood_type)
dna_hash = initial(dna_hash)
fingerprint_hash = initial(fingerprint_hash)
access = initial_access.Copy() // Initial() doesn't work on lists
registered_user = null
if("Reset Access")
var/response = alert(user, "Are you sure you want to reset access saved on the card?","Reset Access", "No", "Yes")
if(response == "Yes")
access = initial_access.Copy() // Initial() doesn't work on lists
to_chat(user, "<span class='notice'>Card access reset.</span>")
to_chat(user, "<span class='notice'>All information has been deleted from \the [src].</span>")
RebuildHTML()
if("Delete Card Information")
var/response = alert(user, "Are you sure you want to delete all information saved on the card?","Delete Card Information", "No", "Yes")
if(response == "Yes")
name = initial(name)
registered_name = initial(registered_name)
icon_state = initial(icon_state)
sex = initial(sex)
age = initial(age)
assignment = initial(assignment)
associated_account_number = initial(associated_account_number)
blood_type = initial(blood_type)
dna_hash = initial(dna_hash)
fingerprint_hash = initial(fingerprint_hash)
photo = null
registered_user = null
to_chat(user, "<span class='notice'>All information has been deleted from \the [src].</span>")
RebuildHTML()
else
..()
@@ -565,7 +575,7 @@
icon_state = "syndie"
assignment = "Syndicate Overlord"
untrackable = 1
access = list(access_syndicate, access_external_airlocks)
access = list(access_syndicate, access_syndicate_leader, access_syndicate_command, access_external_airlocks)
/obj/item/card/id/captains_spare
name = "captain's spare ID"
@@ -116,8 +116,9 @@
cure_text = "Unknown"
viable_mobtypes = list(/mob/living/carbon/human)
severity = BIOHAZARD
disease_flags = CURABLE
disease_flags = CAN_CARRY
spread_flags = NON_CONTAGIOUS
virus_heal_resistant = TRUE
var/obj/item/storage/toolbox/green/memetic/progenitor = null
/datum/disease/memetic_madness/Destroy()
@@ -189,6 +189,17 @@
new /obj/item/grenade/empgrenade(src)
new /obj/item/implanter/emp/(src)
/obj/item/storage/box/syndie_kit/c4
name = "Pack of C-4 Explosives"
/obj/item/storage/box/syndie_kit/c4/New()
..()
new /obj/item/grenade/plastic/c4(src)
new /obj/item/grenade/plastic/c4(src)
new /obj/item/grenade/plastic/c4(src)
new /obj/item/grenade/plastic/c4(src)
new /obj/item/grenade/plastic/c4(src)
/obj/item/storage/box/syndie_kit/throwing_weapons
name = "boxed throwing kit"
can_hold = list(/obj/item/throwing_star, /obj/item/restraints/legcuffs/bola/tactical)
+1 -1
View File
@@ -62,7 +62,7 @@ var/global/nologevent = 0
if(M.client)
body += " played by <b>[M.client]</b> "
body += "\[<A href='?_src_=holder;editrights=rank;ckey=[M.ckey]'>[M.client.holder ? M.client.holder.rank : "Player"]</A>\] "
body += "\[<A href='?_src_=holder;getplaytimewindow=[M.UID()]'>" + M.client.get_exp_living() + "</a>\]"
body += "\[<A href='?_src_=holder;getplaytimewindow=[M.UID()]'>" + M.client.get_exp_type(EXP_TYPE_CREW) + " as [EXP_TYPE_CREW]</a>\]"
if(istype(M, /mob/new_player))
body += " <B>Hasn't Entered Game</B> "
+2 -2
View File
@@ -106,8 +106,8 @@ var/global/sent_honksquad = 0
equip_to_slot_or_del(new /obj/item/storage/backpack/clown(src), slot_back)
equip_to_slot_or_del(new /obj/item/storage/box/survival(src), slot_in_backpack)
if(src.gender == FEMALE)
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sexyclown(src), slot_wear_mask)
equip_to_slot_or_del(new /obj/item/clothing/under/sexyclown(src), slot_w_uniform)
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat/sexy(src), slot_wear_mask)
equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown/sexy(src), slot_w_uniform)
else
equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(src), slot_w_uniform)
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(src), slot_wear_mask)
+22 -30
View File
@@ -373,15 +373,7 @@
if(prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates. -CP
if(establish_db_connection())
to_chat(src, "<span class='info'>Changelog has changed since your last visit.</span>")
winset(src, "rpane.changelog", "background-color=#bb7700;font-color=#FFFFFF;font-style=bold")
else
if(establish_db_connection())
if(prefs.toggles & UI_DARKMODE)
winset(src, "rpane.changelog", "background-color=#bb7700;font-color=#FFFFFF;font-style=bold") // makes changelog dark if its been set
else
winset(src, "rpane.changelog", "background-color=#ffffff;font-color=#000000") // makes changelog normal if it hasnt been set
else
winset(src, "rpane.changelog", "background-color=#ffffff;font-color=#000000") // makes changelog normal if DB isnt connected
winset(src, "rpane.changelog", "background-color=#bb7700;text-color=#FFFFFF;font-style=bold")
if(!void)
void = new()
@@ -714,33 +706,33 @@
/client/proc/deactivate_darkmode()
///// BUTTONS /////
/* Rpane */
winset(src, "rpane.textb", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.infob", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.wikib", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.forumb", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.rulesb", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.githubb", "background-color=#ffffff;text-color=#000000")
winset(src, "rpane.textb", "background-color=none;text-color=#000000")
winset(src, "rpane.infob", "background-color=none;text-color=#000000")
winset(src, "rpane.wikib", "background-color=none;text-color=#000000")
winset(src, "rpane.forumb", "background-color=none;text-color=#000000")
winset(src, "rpane.rulesb", "background-color=none;text-color=#000000")
winset(src, "rpane.githubb", "background-color=none;text-color=#000000")
/* Mainwindow */
winset(src, "mainwindow.saybutton", "background-color=#ffffff;text-color=#000000")
winset(src, "mainwindow.mebutton", "background-color=#ffffff;text-color=#000000")
winset(src, "mainwindow.hotkey_toggle", "background-color=#ffffff;text-color=#000000")
winset(src, "mainwindow.saybutton", "background-color=none;text-color=#000000")
winset(src, "mainwindow.mebutton", "background-color=none;text-color=#000000")
winset(src, "mainwindow.hotkey_toggle", "background-color=none;text-color=#000000")
///// UI ELEMENTS /////
/* Mainwindow */
winset(src, "mainwindow", "background-color=#ffffff")
winset(src, "mainwindow.mainvsplit", "background-color=#ffffff")
winset(src, "mainwindow.tooltip", "background-color=#ffffff")
winset(src, "mainwindow", "background-color=none")
winset(src, "mainwindow.mainvsplit", "background-color=none")
winset(src, "mainwindow.tooltip", "background-color=none")
/* Outputwindow */
winset(src, "outputwindow.outputwindow", "background-color=#ffffff")
winset(src, "outputwindow.browseroutput", "background-color=#ffffff")
winset(src, "outputwindow.outputwindow", "background-color=none")
winset(src, "outputwindow.browseroutput", "background-color=none")
/* Rpane */
winset(src, "rpane", "background-color=#ffffff")
winset(src, "rpane.rpane", "background-color=#ffffff")
winset(src, "rpane.rpanewindow", "background-color=#ffffff")
winset(src, "rpane", "background-color=none")
winset(src, "rpane.rpane", "background-color=none")
winset(src, "rpane.rpanewindow", "background-color=none")
/* Browserwindow */
winset(src, "browserwindow", "background-color=#ffffff")
winset(src, "browserwindow.browser", "background-color=#ffffff")
winset(src, "browserwindow", "background-color=none")
winset(src, "browserwindow.browser", "background-color=none")
/* Infowindow */
winset(src, "infowindow", "background-color=#ffffff;text-color=#000000")
winset(src, "infowindow.info", "background-color=#ffffff;text-color=#000000;highlight-color=#007700;tab-text-color=#000000;tab-background-color=#ffffff")
winset(src, "infowindow", "background-color=none;text-color=#000000")
winset(src, "infowindow.info", "background-color=none;text-color=#000000;highlight-color=#007700;tab-text-color=#000000;tab-background-color=none")
///// NOTIFY USER /////
to_chat(src, "<span class='notice'>Darkmode Disabled</span>") // what a sick fuck
@@ -482,7 +482,10 @@
/datum/preferences/proc/SetChangelog(client/C,hash)
lastchangelog=hash
winset(C, "rpane.changelog", "background-color=none;font-style=")
if(preferences_datums[C.ckey].toggles & UI_DARKMODE)
winset(C, "rpane.changelog", "background-color=#40628a;font-color=#ffffff;font-style=none")
else
winset(C, "rpane.changelog", "background-color=none;font-style=none")
var/DBQuery/query = dbcon.NewQuery("UPDATE [format_table_name("player")] SET lastchangelog='[lastchangelog]' WHERE ckey='[C.ckey]'")
if(!query.Execute())
var/err = query.ErrorMsg()
@@ -491,3 +494,9 @@
to_chat(C, "Couldn't update your last seen changelog, please try again later.")
return
return 1
/datum/preferences/proc/UpdateChangelogButton(client/C)
if(preferences_datums[C.ckey].toggles & UI_DARKMODE)
winset(C, "rpane.changelog", "background-color=#40628a;text-color=#ffffff;font-style=none")
else
winset(C, "rpane.changelog", "background-color=none;text-color=#000000;font-style=none")
+8 -1
View File
@@ -5,7 +5,7 @@
icon_state = "hardhat0_yellow"
item_state = "hardhat0_yellow"
var/brightness_on = 4 //luminosity when on
var/on = 0
var/on = FALSE
item_color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite)
armor = list(melee = 15, bullet = 5, laser = 20, energy = 10, bomb = 20, bio = 10, rad = 20)
flags_inv = 0
@@ -29,6 +29,13 @@
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/clothing/head/hardhat/extinguish_light()
if(on)
on = FALSE
set_light(0)
icon_state = "hardhat0_[item_color]"
item_state = "hardhat0_[item_color]"
visible_message("<span class='danger'>[src]'s light fades and turns off.</span>")
/obj/item/clothing/head/hardhat/orange
icon_state = "hardhat0_orange"
+6 -7
View File
@@ -119,6 +119,12 @@
to_chat(M, "Your Clown Mask has now morphed into [choice], all praise the Honk Mother!")
return 1
/obj/item/clothing/mask/gas/clown_hat/sexy
name = "sexy-clown wig and mask"
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
icon_state = "sexyclown"
item_state = "sexyclown"
/obj/item/clothing/mask/gas/clownwiz
name = "wizard clown wig and mask"
desc = "Some pranksters are truly magical."
@@ -135,13 +141,6 @@
item_state = "clown_hat"
flags = NODROP
/obj/item/clothing/mask/gas/sexyclown
name = "sexy-clown wig and mask"
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
icon_state = "sexyclown"
item_state = "sexyclown"
burn_state = FLAMMABLE
/obj/item/clothing/mask/gas/mime
name = "mime mask"
desc = "The traditional mime's mask. It has an eerie facial posture."
@@ -57,6 +57,11 @@
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/clothing/head/helmet/space/hardsuit/extinguish_light()
if(on)
toggle_light()
visible_message("<span class='danger'>[src]'s light fades and turns off.</span>")
/obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot)
if(slot == slot_head)
return 1
@@ -102,6 +102,11 @@
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/clothing/head/helmet/space/eva/plasmaman/extinguish_light()
if(on)
toggle_light()
visible_message("<span class='danger'>[src]'s light fades and turns off.</span>")
// ENGINEERING
/obj/item/clothing/suit/space/eva/plasmaman/atmostech
name = "plasmaman atmospheric suit"
@@ -81,6 +81,13 @@
score_clownabuse++
return ..()
/obj/item/clothing/under/rank/clown/sexy
name = "sexy-clown suit"
desc = "It makes you look HONKable!"
icon_state = "sexyclown"
item_state = "sexyclown"
item_color = "sexyclown"
/obj/item/clothing/under/rank/head_of_personnel
desc = "It's a jumpsuit worn by someone who works in the position of \"Head of Personnel\"."
name = "head of personnel's jumpsuit"
@@ -53,13 +53,6 @@
item_state = "b_suit"
item_color = "mailman"
/obj/item/clothing/under/sexyclown
name = "sexy-clown suit"
desc = "It makes you look HONKable!"
icon_state = "sexyclown"
item_state = "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."
+37
View File
@@ -1627,3 +1627,40 @@
icon = 'icons/obj/custom_items.dmi'
icon_state = "ps_bunny"
/obj/item/clothing/under/fluff/kiaoutfit //FullOfSkittles: Kiachi
name = "Suspicious Outfit"
desc = "A very expensive top with intricate details tailored to fit a vox and paired with a glittery blue skirt, probably illegal."
icon = 'icons/obj/custom_items.dmi'
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
species_fit = list("Vox")
sprite_sheets = list("Vox" = 'icons/mob/species/vox/uniform.dmi')
icon_state = "kiaoutfit"
item_state = "kiaoutfit"
item_color = "kiaoutfit"
displays_id = FALSE
species_restricted = list("Vox")
/obj/item/clothing/head/fluff/kiahat //FullOfSkittles: Kiachi
name = "Suspicious Witch Hat"
desc = "A black witch hat with a blue sash decorated with tiny glimmering stars and a gold squid-like medallion, probably possessed."
icon = 'icons/obj/custom_items.dmi'
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
icon_state = "kiahat"
item_state = "kiahat"
item_color = "kiahat"
/obj/item/clothing/mask/gas/fluff/kiamask //FullOfSkittles: Kiachi
name = "Suspicious Mask"
desc = "A sleek mask that blends in with the owner's existing quills using strange technology. It might even be magic..."
icon = 'icons/obj/custom_items.dmi'
lefthand_file = 'icons/mob/inhands/fluff_lefthand.dmi'
righthand_file = 'icons/mob/inhands/fluff_righthand.dmi'
species_fit = list("Vox")
sprite_sheets = list("Vox" = 'icons/mob/species/vox/mask.dmi')
icon_state = "kiamask"
item_state = "kiamask"
item_color = "kiamask"
species_restricted = list("Vox")
+3
View File
@@ -40,6 +40,9 @@
else
light = new /datum/light_source(src, .)
/atom/proc/extinguish_light()
return
/atom/Destroy()
if(light)
light.destroy()
@@ -1992,3 +1992,12 @@ Eyes need to have significantly high darksight to shine unless the mob has the X
dna.SetSEState(block, FALSE, TRUE)
genemutcheck(src, block, null, MUTCHK_FORCED)
dna.UpdateSE()
/mob/living/carbon/human/extinguish_light()
// Parent function handles stuff the human may be holding
..()
var/obj/item/organ/internal/lantern/O = get_int_organ(/obj/item/organ/internal/lantern)
if(O && O.glowing)
O.toggle_biolum(TRUE)
visible_message("<span class='danger'>[src] is engulfed in shadows and fades into the darkness.</span>", "<span class='danger'>A sense of dread washes over you as you suddenly dim dark.</span>")
@@ -91,6 +91,9 @@
var/obj/item/organ/internal/L = get_organ_slot("lungs")
if((breathes && !L) || breathes && L && (L.status & ORGAN_DEAD))
return FALSE
if(oxyloss > 10 || losebreath >= 4)
emote("gasp")
return FALSE
if(mind)
return !mind.miming
return TRUE
+16
View File
@@ -80,6 +80,10 @@
if(moving_diagonally) //no mob swap during diagonal moves.
return 1
if(a_intent == INTENT_HELP) // Help intent doesn't mob swap a mob pulling a structure
if(isstructure(M.pulling) || isstructure(pulling))
return 1
if(!M.buckled && !M.has_buckled_mobs())
var/mob_swap
//the puller can always swap with it's victim if on grab intent
@@ -128,6 +132,13 @@
//Called when we want to push an atom/movable
/mob/living/proc/PushAM(atom/movable/AM, force = move_force)
if(isstructure(AM) && AM.pulledby)
if(a_intent == INTENT_HELP && AM.pulledby != src) // Help intent doesn't push other peoples pulled structures
return FALSE
if(get_dist(get_step(AM, get_dir(src, AM)), AM.pulledby)>1)//Release pulled structures beyond 1 distance
AM.pulledby.stop_pulling()
if(now_pushing)
return TRUE
if(moving_diagonally) // no pushing during diagonal moves
@@ -976,3 +987,8 @@
/mob/living/proc/fakefire()
return
/mob/living/extinguish_light()
for(var/atom/A in src)
if(A.light_range > 0)
A.extinguish_light()
@@ -79,6 +79,7 @@
var/obj/item/integrated_radio/signal/sradio // AI's signaller
var/translator_on = 0 // keeps track of the translator module
var/flashlight_on = FALSE //keeps track of the flashlight module
var/current_pda_messaging = null
var/custom_sprite = 0
@@ -607,3 +608,8 @@
else //something went very wrong.
CRASH("pAI without card")
loc = card
/mob/living/silicon/pai/extinguish_light()
flashlight_on = FALSE
set_light(0)
card.set_light(0)
@@ -609,3 +609,20 @@
data["holder"] = 0
return data
/datum/pai_software/flashlight
name = "Flashlight"
ram_cost = 5
id = "flashlight"
/datum/pai_software/flashlight/toggle(mob/living/silicon/pai/user)
var/atom/movable/actual_location = istype(user.loc, /obj/item/paicard) ? user.loc : user
if(user.flashlight_on)
actual_location.set_light(2)
user.card.set_light(2)
return
actual_location.set_light(2)
user.card.set_light(0)
/datum/pai_software/flashlight/is_active(mob/living/silicon/pai/user)
return user.flashlight_on
@@ -1382,6 +1382,9 @@ var/list/robot_verbs_default = list(
if(2)
disable_component("comms", 60)
/mob/living/silicon/robot/extinguish_light()
update_headlamp(1, 150)
/mob/living/silicon/robot/rejuvenate()
..()
var/brute = 1000
+1
View File
@@ -3,6 +3,7 @@
layer = 4.0
animate_movement = 2
pressure_resistance = 8
dont_save = TRUE //to avoid it messing up in buildmode saving
var/datum/mind/mind
var/stat = 0 //Whether a mob is alive or dead. TODO: Move this to living - Nodrak
+1
View File
@@ -536,6 +536,7 @@ var/list/intents = list(INTENT_HELP,INTENT_DISARM,INTENT_GRAB,INTENT_HARM)
if(ID.registered_name == oldname)
ID.registered_name = newname
ID.name = "[newname]'s ID Card ([ID.assignment])"
ID.RebuildHTML()
if(!search_pda) break
search_id = 0
+14
View File
@@ -0,0 +1,14 @@
/*
This checks that the user is a ghost or alternatively an admin. Used for the mob spawner.
We don't want any living people somehow getting the menu open and reincarnating while alive
*/
/var/global/datum/topic_state/ghost_state/ghost_state = new()
/datum/topic_state/ghost_state/can_use_topic(var/src_object, var/mob/user)
if(user.stat == DEAD)
return STATUS_INTERACTIVE
if(check_rights(R_ADMIN, 0, src))
return STATUS_INTERACTIVE
return STATUS_CLOSE
+5
View File
@@ -511,3 +511,8 @@ var/global/list/obj/item/pda/PDAs = list()
/obj/item/pda/process()
if(current_app)
current_app.program_process()
/obj/item/pda/extinguish_light()
var/datum/data/pda/utility/flashlight/FL = find_program(/datum/data/pda/utility/flashlight)
if(FL && FL.fon)
FL.start()
+11 -7
View File
@@ -137,7 +137,7 @@
idle_power_usage = 2
active_power_usage = 20
power_channel = LIGHT //Lights are calc'd via area so they dont need to be in the machine list
var/on = 0 // 1 if on, 0 if off
var/on = FALSE // 1 if on, 0 if off
var/on_gs = 0
var/static_power_used = 0
var/brightness_range = 8 // luminosity when on, also used in power calculation
@@ -159,7 +159,6 @@
var/nightshift_light_power = 0.45
var/nightshift_light_color = "#FFDDCC"
// the smaller bulb light fixture
/obj/machinery/light/small
@@ -213,7 +212,7 @@
/obj/machinery/light/Destroy()
var/area/A = get_area(src)
if(A)
on = 0
on = FALSE
// A.update_lights()
return ..()
@@ -224,13 +223,13 @@
icon_state = "[base_state][on]"
if(LIGHT_EMPTY)
icon_state = "[base_state]-empty"
on = 0
on = FALSE
if(LIGHT_BURNED)
icon_state = "[base_state]-burned"
on = 0
on = FALSE
if(LIGHT_BROKEN)
icon_state = "[base_state]-broken"
on = 0
on = FALSE
return
// update the icon_state and luminosity of the light depending on its state
@@ -255,7 +254,7 @@
if(status == LIGHT_OK && trigger)
status = LIGHT_BURNED
icon_state = "[base_state]-burned"
on = 0
on = FALSE
set_light(0)
else
use_power = ACTIVE_POWER_USE
@@ -730,3 +729,8 @@
if(limb)
limb.droplimb(0, DROPLIMB_BURN)
return FIRELOSS
/obj/machinery/light/extinguish_light()
on = FALSE
visible_message("<span class='danger'>[src] flickers and falls dark.</span>")
update(0)
+5
View File
@@ -305,6 +305,11 @@ obj/item/gun/proc/newshot()
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/gun/extinguish_light()
if(gun_light.on)
toggle_gunlight()
visible_message("<span class='danger'>[src]'s light fades and turns off.</span>")
/obj/item/gun/pickup(mob/user)
..()
if(azoom)
@@ -430,7 +430,6 @@
update_flags |= M.adjustOxyLoss(-25*REAGENTS_EFFECT_MULTIPLIER, FALSE)
if(volume >= 4)
M.LoseBreath(6)
M.Silence(6)
if(prob(33))
update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
+1 -1
View File
@@ -189,7 +189,7 @@
for(var/mob/living/carbon/human/H in view(2, E.loc))//germs from people
if(AStar(E.loc, H.loc, /turf/proc/Distance, 2, simulated_only = 0))
if((!(BREATHLESS in H.mutations) || !(NO_BREATHE in H.dna.species.species_traits)) && !H.wear_mask) //wearing a mask helps preventing people from breathing cooties into open incisions
if(!((BREATHLESS in H.mutations) || (NO_BREATHE in H.dna.species.species_traits)) && !H.wear_mask) //wearing a mask helps preventing people from breathing cooties into open incisions
germs += H.germ_level * 0.25
for(var/obj/effect/decal/cleanable/M in view(2, E.loc))//germs from messes
+63
View File
@@ -56,6 +56,69 @@
-->
<div class="commit sansserif">
<h2 class="date">03 February 2019</h2>
<h3 class="author">Fox McCloud updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Fixes a few edge cases of being able to create immunity to a few diseases</li>
<li class="rscadd">Adds suspiciously Voxy outfit to the game</li>
</ul>
<h2 class="date">02 February 2019</h2>
<h3 class="author">AzuleUtama updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Added Pack of C-4 for Traitors and Nuke ops. Comes with 5 C-4 charges for 4TC.</li>
</ul>
<h3 class="author">Kyep updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Made playtime numbers displayed to admins (in the playtime report) and players (in the 'check my playtime' verb) clearer in meaning.</li>
</ul>
<h3 class="author">MINIMAN10000 updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Mobs in help intent do not push mobs pulling a structure or the structure they are pulling</li>
<li class="bugfix">mobs standing on the same tile when being walked into on help intent.</li>
<li class="bugfix">structures pulled beyond 1 distance call stop_pulling</li>
<li class="bugfix">stop_pulling() now sets pulledby to null</li>
</ul>
<h3 class="author">Shadeykins updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Thunderdome volume.</li>
<li class="bugfix">Newscaster placement</li>
<li class="tweak">Power alarm subtype (noalarm), vomit/blood</li>
</ul>
<h3 class="author">TDSSS updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Mob spawner menu buttons now work. This time it really works, I swear.</li>
</ul>
<h3 class="author">uc_guy updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Non-breathing mobs no longer cause an increase in germ level by not wearing a mask.</li>
</ul>
<h2 class="date">01 February 2019</h2>
<h3 class="author">AffectedArc07 updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Disabled darkmode is now normal grey, not full white</li>
<li class="tweak">Changelog button now respects darkmode and will update when clicked</li>
</ul>
<h3 class="author">Citinited updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Sexy clown suits now have the squeak component</li>
<li class="bugfix">You can now change the way your sexy clown mask looks</li>
</ul>
<h3 class="author">Ty-Omaha updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">Admin save feature in build mode will ignore mobs</li>
</ul>
<h3 class="author">datlo updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Wingdings now garbles sentences.</li>
<li class="bugfix">Clown and mime now have their ID properly updated to their new name after they rename roundstart</li>
<li class="rscadd">Added some ID photo outfits to some jobs missing it.</li>
<li class="tweak">Agent ID photo editing refactored. The photo now looks the same as a real ID, with an outfit based on the job you've forged on the ID.</li>
<li class="tweak">Agent ID should now be impossible to distinguish from a real ID by non-antagonists once properly forged.</li>
<li class="tweak">You can now reset access or delete the agent ID's information without having to do both.</li>
</ul>
<h2 class="date">31 January 2019</h2>
<h3 class="author">Darkmight9 updated:</h3>
<ul class="changes bgimages16">
+46
View File
@@ -8957,3 +8957,49 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- tweak: Replaced the toolbox in the professional syndicate bundle by a pair of
combat gloves.
- bugfix: Wingdings mutation works again.
2019-02-01:
AffectedArc07:
- tweak: Disabled darkmode is now normal grey, not full white
- tweak: Changelog button now respects darkmode and will update when clicked
Citinited:
- bugfix: Sexy clown suits now have the squeak component
- bugfix: You can now change the way your sexy clown mask looks
Ty-Omaha:
- bugfix: Admin save feature in build mode will ignore mobs
datlo:
- tweak: Wingdings now garbles sentences.
- bugfix: Clown and mime now have their ID properly updated to their new name after
they rename roundstart
- rscadd: Added some ID photo outfits to some jobs missing it.
- tweak: Agent ID photo editing refactored. The photo now looks the same as a real
ID, with an outfit based on the job you've forged on the ID.
- tweak: Agent ID should now be impossible to distinguish from a real ID by non-antagonists
once properly forged.
- tweak: You can now reset access or delete the agent ID's information without having
to do both.
2019-02-02:
AzuleUtama:
- rscadd: Added Pack of C-4 for Traitors and Nuke ops. Comes with 5 C-4 charges
for 4TC.
Kyep:
- tweak: Made playtime numbers displayed to admins (in the playtime report) and
players (in the 'check my playtime' verb) clearer in meaning.
MINIMAN10000:
- rscadd: Mobs in help intent do not push mobs pulling a structure or the structure
they are pulling
- bugfix: mobs standing on the same tile when being walked into on help intent.
- bugfix: structures pulled beyond 1 distance call stop_pulling
- bugfix: stop_pulling() now sets pulledby to null
Shadeykins:
- tweak: Thunderdome volume.
- bugfix: Newscaster placement
- tweak: Power alarm subtype (noalarm), vomit/blood
TDSSS:
- bugfix: Mob spawner menu buttons now work. This time it really works, I swear.
uc_guy:
- bugfix: Non-breathing mobs no longer cause an increase in germ level by not wearing
a mask.
2019-02-03:
Fox McCloud:
- bugfix: Fixes a few edge cases of being able to create immunity to a few diseases
- rscadd: Adds suspiciously Voxy outfit to the game
@@ -0,0 +1,4 @@
author: "Fox McCloud"
delete-after: True
changes:
- tweak: "Lack of breathing will render you unable to speak"
@@ -0,0 +1,4 @@
author: "Tayyyyyyy, TaukaUsanake"
delete-after: True
changes:
- rscadd: "pAI units now have access to a flashlight module, which can be obtained with 5 RAM points."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 KiB

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 108 KiB

+1 -1
View File
@@ -38,7 +38,7 @@
'html/changelog.html'
)
src << browse('html/changelog.html', "window=changes;size=675x650")
prefs.UpdateChangelogButton(src)
if(prefs.lastchangelog != changelog_hash) //if it's already opened, no need to tell them they have unread changes
prefs.SetChangelog(src,changelog_hash)
+1
View File
@@ -2028,6 +2028,7 @@
#include "code\modules\nano\interaction\conscious.dm"
#include "code\modules\nano\interaction\contained.dm"
#include "code\modules\nano\interaction\default.dm"
#include "code\modules\nano\interaction\ghost.dm"
#include "code\modules\nano\interaction\inventory.dm"
#include "code\modules\nano\interaction\inventory_deep.dm"
#include "code\modules\nano\interaction\not_incapacitated.dm"
Binary file not shown.