diff --git a/_maps/RandomRuins/SpaceRuins/advancedlab.dmm b/_maps/RandomRuins/SpaceRuins/advancedlab.dmm new file mode 100644 index 0000000000..39e29018ea --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/advancedlab.dmm @@ -0,0 +1,582 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/powered/advancedlab) +"c" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"d" = ( +/obj/machinery/vending/assist, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"e" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"f" = ( +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"g" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"h" = ( +/obj/structure/table/glass, +/obj/item/crowbar/advanced, +/obj/item/multitool/advanced{ + pixel_x = 4; + pixel_y = -1 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"i" = ( +/obj/machinery/computer/rdconsole, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"j" = ( +/obj/structure/chair/comfy/beige, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"k" = ( +/obj/structure/table/glass, +/obj/item/screwdriver/advanced{ + pixel_y = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"l" = ( +/obj/structure/table/glass, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"m" = ( +/obj/structure/table/glass, +/obj/item/gps{ + gpstag = "Abductor Replication Lab"; + pixel_x = -2; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"n" = ( +/obj/structure/chair/comfy/beige{ + icon_state = "comfychair"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"o" = ( +/obj/structure/table/glass, +/obj/item/weldingtool/advanced{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"p" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table/glass, +/obj/item/paper{ + name = "Note to finder"; + pixel_x = -1; + pixel_y = 3; + info = "As of yet, our experiments have seen a fair bit of success. Unfortunately, our business partners have stopped funding us as they realised they utterly hate each other. To whoever finds this place, they are yours. Use them how you will. I leave you with the next generation of greytiding." + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"q" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"r" = ( +/obj/structure/table/glass, +/obj/item/wirecutters/advanced{ + pixel_y = 7 + }, +/obj/item/wrench/advanced{ + pixel_x = -1; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"s" = ( +/obj/structure/chair/comfy/beige{ + icon_state = "comfychair"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"t" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"u" = ( +/obj/machinery/light/small{ + icon_state = "bulb"; + dir = 4 + }, +/obj/structure/closet, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/shoes/sneakers/brown, +/obj/item/clothing/under/pants/classicjeans, +/obj/item/clothing/neck/scarf, +/obj/item/clothing/neck/stripedgreenscarf, +/obj/item/toy/tennis/rainbow, +/obj/item/toy/tennis, +/obj/item/clothing/suit/hooded/wintercoat/miner, +/obj/item/clothing/shoes/sneakers/brown, +/obj/item/clothing/under/pants/classicjeans, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"v" = ( +/obj/machinery/vending/boozeomat{ + req_access = null; + shut_up = 1 + }, +/turf/closed/wall, +/area/ruin/space/has_grav/powered/advancedlab) +"w" = ( +/obj/machinery/door/airlock/command{ + name = "Dorms" + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"x" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/table/glass, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"y" = ( +/obj/machinery/light/small{ + icon_state = "bulb"; + dir = 1 + }, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"z" = ( +/obj/machinery/door/airlock/security{ + name = "Visiting Business Partners" + }, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"A" = ( +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"B" = ( +/obj/structure/bed, +/obj/item/bedsheet/syndie, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"C" = ( +/obj/structure/closet{ + name = "Clothes" + }, +/obj/item/clothing/head/chameleon, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/suit/chameleon, +/obj/item/clothing/under/chameleon, +/obj/item/clothing/shoes/chameleon, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"D" = ( +/obj/machinery/light/small, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"E" = ( +/obj/structure/table/wood, +/obj/item/radio/headset/chameleon, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"F" = ( +/obj/structure/falsewall, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"G" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"H" = ( +/obj/structure/table/wood, +/obj/item/radio/headset/headset_cent/alt{ + keyslot2 = null + }, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"I" = ( +/obj/structure/closet{ + name = "Official Clothing" + }, +/obj/item/clothing/under/rank/centcom_commander, +/obj/item/clothing/head/centhat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/suit/armor/vest, +/obj/item/clothing/shoes/sneakers/brown, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"J" = ( +/obj/machinery/door/airlock/command{ + name = "Dorms" + }, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"K" = ( +/obj/machinery/door/airlock/command{ + name = "Visiting Officials" + }, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"L" = ( +/obj/structure/bed, +/obj/item/bedsheet/centcom, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) +"M" = ( +/obj/structure/lattice, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/space/basic, +/area/ruin/space/has_grav/powered/advancedlab) +"N" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall, +/area/ruin/space/has_grav/powered/advancedlab) +"O" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"P" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"Q" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"R" = ( +/obj/machinery/light/small{ + icon_state = "bulb"; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/powered/advancedlab) +"T" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/wood, +/area/ruin/space/has_grav/powered/advancedlab) + +(1,1,1) = {" +a +b +b +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +b +d +j +l +q +s +O +b +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +b +e +j +m +l +s +f +b +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +c +f +j +l +l +s +f +M +M +M +M +M +M +a +a +a +a +"} +(5,1,1) = {" +a +b +f +f +n +n +f +f +w +f +Q +f +f +M +a +a +a +a +"} +(6,1,1) = {" +a +b +f +f +f +f +f +f +M +M +M +M +f +M +a +a +a +a +"} +(7,1,1) = {" +a +b +g +f +f +f +f +f +b +P +P +M +R +M +a +a +a +a +"} +(8,1,1) = {" +a +N +f +f +f +f +f +u +b +P +P +M +f +M +a +a +a +a +"} +(9,1,1) = {" +a +b +f +f +f +f +f +b +b +b +b +M +J +M +b +a +a +a +"} +(10,1,1) = {" +a +b +h +k +o +r +f +b +y +A +A +F +T +A +b +a +a +a +"} +(11,1,1) = {" +a +b +i +f +f +f +t +b +z +v +b +b +b +K +b +a +a +a +"} +(12,1,1) = {" +a +b +p +f +f +f +f +b +A +C +b +G +A +A +b +a +a +a +"} +(13,1,1) = {" +a +b +l +l +x +l +f +b +A +D +b +H +A +D +b +a +a +a +"} +(14,1,1) = {" +a +b +b +b +b +b +b +b +B +E +b +I +A +L +b +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +a +b +b +b +b +b +b +b +b +a +a +a +"} diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 50b5504af5..980e23188a 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -41,24 +41,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) -"aad" = ( -/obj/structure/bed, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/button/door{ - id = "Dorm4"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aae" = ( /obj/effect/landmark/carpspawn, /turf/open/space, @@ -595,19 +577,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/security/execution/transfer) -"abz" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm5"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "abA" = ( /obj/machinery/light, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -2149,55 +2118,6 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) -"aeD" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm6"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aeE" = ( -/obj/structure/bed, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/button/door{ - id = "Dorm3"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aeF" = ( -/obj/structure/bed, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/button/door{ - id = "Dorm2"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aeG" = ( /obj/structure/cable, /obj/machinery/power/solar{ @@ -2574,11 +2494,6 @@ }, /turf/open/floor/plasteel, /area/security/main) -"afn" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/turf/open/floor/plasteel/white, -/area/medical/virology) "afo" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Three" @@ -2599,14 +2514,6 @@ }, /turf/open/space/basic, /area/space) -"afq" = ( -/obj/structure/bed, -/obj/item/tank/internals/anesthetic, -/obj/item/clothing/mask/breath, -/obj/effect/decal/cleanable/semen, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plating, -/area/maintenance/bar) "aft" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 @@ -7503,6 +7410,24 @@ }, /turf/open/floor/plating, /area/maintenance/fore/secondary) +"aqn" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm4"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aqo" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -8283,6 +8208,19 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) +"asu" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm5"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "asv" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -8374,6 +8312,19 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"asL" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm6"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "asM" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -8980,6 +8931,24 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness) +"auw" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm3"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aux" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -10846,6 +10815,24 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) +"ayV" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm2"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "ayW" = ( /turf/closed/wall, /area/ai_monitored/storage/eva) @@ -31259,6 +31246,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/machinery/keycard_auth{ + pixel_y = 25 + }, /turf/open/floor/plasteel, /area/quartermaster/qm) "bvH" = ( @@ -39377,6 +39367,11 @@ /obj/machinery/announcement_system, /turf/open/floor/plasteel, /area/tcommsat/computer) +"bOm" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/turf/open/floor/plasteel/white, +/area/medical/virology) "bOn" = ( /obj/machinery/light{ dir = 1 @@ -56671,12 +56666,6 @@ /obj/item/stock_parts/cell/high, /turf/open/floor/plasteel/white, /area/science/circuit) -"eef" = ( -/obj/machinery/autolathe{ - name = "public autolathe" - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "evR" = ( /turf/open/floor/plating, /area/maintenance/bar) @@ -56912,6 +56901,12 @@ /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) +"ium" = ( +/mob/living/simple_animal/bot/cleanbot{ + name = "C.L.E.A.N." + }, +/turf/open/floor/plasteel/white, +/area/medical/medbay/central) "izv" = ( /obj/machinery/vending/clothing, /obj/machinery/light/small{ @@ -57146,12 +57141,6 @@ }, /turf/open/floor/plating, /area/construction/mining/aux_base) -"lKX" = ( -/mob/living/simple_animal/bot/cleanbot{ - name = "C.L.E.A.N." - }, -/turf/open/floor/plasteel/white, -/area/medical/medbay/central) "lMg" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -57383,6 +57372,14 @@ }, /turf/open/floor/plating, /area/construction) +"rMN" = ( +/obj/structure/bed, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath, +/obj/effect/decal/cleanable/semen, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plating, +/area/maintenance/bar) "rNc" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -57594,6 +57591,12 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) +"urE" = ( +/obj/machinery/autolathe{ + name = "public autolathe" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "usO" = ( /obj/machinery/vending/snack/random, /obj/machinery/light/small{ @@ -79853,7 +79856,7 @@ sAM imH evR evR -afq +rMN bCq bUs bLv @@ -81615,7 +81618,7 @@ cNG cNJ bLF aZK -eef +urE bbR bqt cBq @@ -88517,13 +88520,13 @@ aoD aod aqe arf -aad +aqn ath arf -aeE +auw ath arf -aeF +ayV ath dgz aCd @@ -90317,7 +90320,7 @@ cSA aqe arf ari -abz +asu aun auW avR @@ -91345,7 +91348,7 @@ apr aqj arf ark -aeD +asL aun avu awt @@ -94210,7 +94213,7 @@ blm bmL boi bpw -lKX +ium bsx btX bvj @@ -96541,7 +96544,7 @@ bof fTg bLV bNd -afn +bOm bPp bQF bRN @@ -98347,7 +98350,7 @@ bRQ bOr bSQ bWj -afn +bOm bXc bYe bNd @@ -98861,7 +98864,7 @@ bRQ bOr bSQ bWj -afn +bOm bXc bYe bNd diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index b4aabc3676..fd7c0a3c00 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -124,22 +124,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) -"aaq" = ( -/obj/structure/bed, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/item/bedsheet/clown, -/turf/open/floor/plasteel/grimy, -/area/hallway/secondary/service) -"aar" = ( -/obj/structure/bed, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/item/bedsheet/mime, -/turf/open/floor/wood, -/area/hallway/secondary/service) "aas" = ( /obj/docking_port/stationary/random{ id = "pod_lavaland1"; @@ -159,52 +143,6 @@ /obj/effect/landmark/xeno_spawn, /turf/open/space, /area/solar/starboard/fore) -"aav" = ( -/obj/structure/bed, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aaw" = ( -/obj/structure/bed, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aax" = ( -/obj/structure/bed, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aay" = ( -/obj/structure/bed, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"aaz" = ( -/obj/structure/bed, -/obj/machinery/light, -/obj/machinery/status_display{ - pixel_y = -32 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aaA" = ( -/obj/structure/bed, -/obj/item/tank/internals/anesthetic, -/obj/item/clothing/mask/breath, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plating, -/area/crew_quarters/abandoned_gambling_den) "aaE" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -1072,6 +1010,10 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"aez" = ( +/obj/machinery/keycard_auth, +/turf/closed/wall, +/area/quartermaster/qm) "aeB" = ( /obj/machinery/status_display, /turf/closed/wall, @@ -13768,6 +13710,14 @@ }, /turf/open/floor/plasteel/grimy, /area/hallway/secondary/service) +"aDF" = ( +/obj/structure/bed, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/item/bedsheet/clown, +/turf/open/floor/plasteel/grimy, +/area/hallway/secondary/service) "aDG" = ( /turf/open/floor/plasteel/grimy, /area/hallway/secondary/service) @@ -16922,6 +16872,14 @@ }, /turf/open/floor/wood, /area/hallway/secondary/service) +"aIP" = ( +/obj/structure/bed, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/item/bedsheet/mime, +/turf/open/floor/wood, +/area/hallway/secondary/service) "aIQ" = ( /obj/structure/dresser, /turf/open/floor/wood{ @@ -79006,6 +78964,17 @@ /obj/structure/dresser, /turf/open/floor/carpet, /area/crew_quarters/dorms) +"cCi" = ( +/obj/structure/bed, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "cCj" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/suit/jacket{ @@ -81023,10 +80992,24 @@ icon_state = "wood-broken2" }, /area/crew_quarters/dorms) +"cFx" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "cFy" = ( /obj/item/twohanded/required/kirbyplants/random, /turf/open/floor/wood, /area/crew_quarters/dorms) +"cFz" = ( +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "cFA" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, @@ -88896,6 +88879,11 @@ /obj/structure/chair/office/dark, /turf/open/floor/wood, /area/crew_quarters/dorms) +"cTc" = ( +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms) "cTd" = ( /obj/structure/table, /obj/item/storage/fancy/donut_box, @@ -90092,6 +90080,15 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) +"cUX" = ( +/obj/structure/bed, +/obj/machinery/light, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "cUY" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/suit/jacket{ @@ -127214,6 +127211,13 @@ dir = 1 }, /area/science/circuit) +"poI" = ( +/obj/structure/bed, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plating, +/area/crew_quarters/abandoned_gambling_den) "psi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bodycontainer/morgue{ @@ -151680,7 +151684,7 @@ djm fow dod dod -aaA +poI dfY ajr aad @@ -160834,11 +160838,11 @@ ary aAf aBu aCB -aaq +aDF aEJ aFV aDI -aar +aIP aKo aLE aMX @@ -174465,7 +174469,7 @@ aaa aaa aad aQQ -aQQ +aez aUp aVY aXE @@ -178374,7 +178378,7 @@ cyY cAx cCd cDD -aaw +cFx cGU cAw cJl @@ -178382,7 +178386,7 @@ cLa cMx cIi cPR -aax +cFz cDG cUW cAw @@ -179155,7 +179159,7 @@ cNU cDI cFB cDI -aaz +cUX cAw cYj cZV @@ -179402,7 +179406,7 @@ czc cAw cCg cDG -aax +cFz cGW cIi cJo @@ -180171,7 +180175,7 @@ bHq cxt coI cAw -aav +cCi cDI cFB cDI @@ -180439,7 +180443,7 @@ cMB cIi cPW cRv -aay +cTc cVb cAw cYp diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 7faca77d70..75d7466371 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -2,58 +2,10 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aab" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin3"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "aac" = ( /obj/effect/landmark/carpspawn, /turf/open/space, /area/space) -"aad" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/button/door{ - id = "Cabin4"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/structure/bed, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aae" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin2"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aaf" = ( /obj/structure/lattice, /turf/open/space, @@ -300,19 +252,6 @@ }, /turf/open/floor/plating, /area/security/prison) -"aaM" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin5"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "aaN" = ( /obj/structure/cable{ icon_state = "0-2" @@ -355,37 +294,6 @@ }, /turf/open/floor/plasteel, /area/security/prison) -"aaU" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin6"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aaV" = ( -/obj/machinery/button/door{ - id = "Cabin7"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/structure/bed, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "aaY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -10233,6 +10141,22 @@ /obj/item/clothing/under/assistantformal, /turf/open/floor/wood, /area/crew_quarters/dorms) +"asV" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin3"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "asW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -10271,6 +10195,23 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"ata" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/button/door{ + id = "Cabin4"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "atb" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/machinery/airalarm{ @@ -11951,6 +11892,21 @@ /obj/item/clothing/under/suit_jacket/tan, /turf/open/floor/carpet, /area/crew_quarters/dorms) +"awE" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin2"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "awF" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -11964,6 +11920,19 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"awG" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin5"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "awH" = ( /obj/machinery/newscaster{ pixel_y = 32 @@ -15014,6 +14983,22 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"aCJ" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin6"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aCK" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/machinery/airalarm{ @@ -17590,6 +17575,21 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) +"aHS" = ( +/obj/machinery/button/door{ + id = "Cabin7"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/structure/bed, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "aHT" = ( /obj/structure/chair/wood/normal{ dir = 4 @@ -20373,6 +20373,9 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/machinery/keycard_auth{ + pixel_y = 23 + }, /turf/open/floor/plasteel, /area/quartermaster/qm) "aNS" = ( @@ -120053,10 +120056,10 @@ agz aoV dhs arB -aab +asV auf arB -aae +awE axE arB dhA @@ -121595,19 +121598,19 @@ anK aoZ aqk arB -aad +ata aul avp -aaM +awG axJ avp aAj arB -aaU +aCJ aEe arB boS -aaV +aHS aJh aKt aLW diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 0166dd6a84..ee97af14fc 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -2,44 +2,12 @@ "aaa" = ( /turf/open/space/basic, /area/space) -"aab" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm3Shutters"; - name = "Privacy Shutters Control"; - pixel_y = 26 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aac" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm2Shutters"; - name = "Privacy Shutters Control"; - pixel_y = 26; - req_access_txt = "0" - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aad" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating{ icon_state = "platingdmg3" }, /area/maintenance/department/science) -"aae" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm1Shutters"; - name = "Privacy Shutters Control"; - pixel_y = 26; - req_access_txt = "0" - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) "abf" = ( /obj/structure/bed, /turf/open/floor/plating, @@ -49,6 +17,13 @@ /obj/structure/grille, /turf/open/space, /area/space/nearstation) +"abD" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/nitrous_oxide, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "abI" = ( /obj/structure/lattice, /turf/open/space, @@ -8637,6 +8612,16 @@ }, /turf/open/floor/plating, /area/crew_quarters/dorms) +"ave" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm3Shutters"; + name = "Privacy Shutters Control"; + pixel_y = 26 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "avf" = ( /obj/machinery/light/small{ dir = 1 @@ -10080,6 +10065,17 @@ }, /turf/open/floor/plating, /area/crew_quarters/dorms) +"ayj" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm2Shutters"; + name = "Privacy Shutters Control"; + pixel_y = 26; + req_access_txt = "0" + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "ayk" = ( /obj/machinery/light/small{ dir = 1 @@ -11527,6 +11523,17 @@ }, /turf/open/floor/plating, /area/crew_quarters/dorms) +"aBM" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm1Shutters"; + name = "Privacy Shutters Control"; + pixel_y = 26; + req_access_txt = "0" + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms) "aBN" = ( /obj/machinery/light/small{ dir = 1 @@ -14549,6 +14556,18 @@ }, /turf/open/space, /area/solar/port) +"aIA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "aIC" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -15277,13 +15296,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"aKm" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) "aKn" = ( /obj/structure/cable{ icon_state = "1-2" @@ -16688,9 +16700,22 @@ /turf/open/floor/plating, /area/maintenance/disposal) "aNV" = ( +/obj/machinery/mineral/stacking_unit_console{ + dir = 2; + machinedir = 8; + pixel_x = -32; + pixel_y = 32 + }, /obj/machinery/conveyor{ - dir = 8; - id = "EngLoad" + dir = 4; + id = "garbagestacked" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"aNW" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbagestacked" }, /turf/open/floor/plating, /area/maintenance/disposal) @@ -17182,7 +17207,7 @@ /area/maintenance/department/cargo) "aPg" = ( /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, /obj/structure/disposaloutlet{ @@ -17566,7 +17591,7 @@ dir = 8 }, /obj/machinery/conveyor{ - dir = 2; + dir = 1; id = "garbage" }, /turf/open/floor/plating, @@ -24110,6 +24135,10 @@ /obj/effect/turf_decal/tile/brown{ dir = 8 }, +/obj/machinery/keycard_auth{ + pixel_x = -23; + pixel_y = 0 + }, /turf/open/floor/plasteel, /area/quartermaster/qm) "beK" = ( @@ -24169,6 +24198,17 @@ /obj/item/caution, /turf/open/floor/plating, /area/maintenance/department/cargo) +"beT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + name = "Monastery Transit" + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/chapel/dock) "beU" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -29401,6 +29441,13 @@ dir = 1 }, /obj/effect/landmark/start/chemist, +/obj/machinery/button/door{ + id = "chemistry_shutters"; + name = "Shutters Control"; + pixel_x = 26; + pixel_y = 4; + req_access_txt = "5; 33" + }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -29442,6 +29489,15 @@ }, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"brp" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-03" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -24 + }, +/turf/open/floor/plasteel/dark, +/area/science/lab) "brq" = ( /obj/structure/sink/kitchen{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; @@ -31924,27 +31980,13 @@ /turf/open/floor/plasteel/white, /area/medical/chemistry) "bwW" = ( -/obj/structure/rack, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, -/obj/item/clothing/glasses/science, -/obj/item/clothing/glasses/science, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/machinery/door/poddoor/shutters/preopen{ + id = "chemistry_shutters"; + name = "chemistry shutters" }, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/plasteel/white, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/medical/chemistry) -"bxa" = ( -/obj/structure/table/glass, -/obj/item/book/manual/wiki/research_and_development, -/obj/item/disk/tech_disk, -/obj/item/disk/design_disk, -/turf/open/floor/plasteel/dark, -/area/science/lab) "bxc" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -32453,17 +32495,19 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "bxY" = ( -/obj/structure/closet/emcloset, /obj/machinery/light/small{ dir = 1 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, /area/hallway/secondary/entry) "bxZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/white, /area/hallway/secondary/entry) "bya" = ( /obj/structure/extinguisher_cabinet{ @@ -32472,7 +32516,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/white, /area/hallway/secondary/entry) "byb" = ( /obj/structure/table, @@ -33186,17 +33230,14 @@ /area/space/nearstation) "bzz" = ( /obj/effect/turf_decal/stripes/line, -/obj/structure/chair{ - dir = 4 - }, -/obj/structure/sign/departments/holy{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/white, /area/hallway/secondary/entry) "bzA" = ( /obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, /area/hallway/secondary/entry) "bzB" = ( /obj/effect/turf_decal/stripes/line, @@ -33207,7 +33248,7 @@ network = list("monastery"); pixel_x = 28 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/white, /area/hallway/secondary/entry) "bzC" = ( /obj/structure/table, @@ -33740,8 +33781,9 @@ /obj/structure/transit_tube/curved/flipped{ dir = 4 }, -/turf/open/space/basic, -/area/space/nearstation) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hallway/secondary/entry) "bAJ" = ( /obj/structure/transit_tube/horizontal, /obj/structure/window/reinforced/fulltile, @@ -37152,6 +37194,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/door/firedoor, /obj/effect/turf_decal/tile/purple{ dir = 1 }, @@ -37276,19 +37319,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"bHp" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) "bHq" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -37478,6 +37508,7 @@ dir = 8; layer = 2.9 }, +/obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) "bHP" = ( @@ -38059,14 +38090,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/dock) -"bIY" = ( -/obj/structure/lattice, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/turf/open/space/basic, -/area/space/nearstation) "bIZ" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -38622,15 +38645,15 @@ /area/chapel/dock) "bKe" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/dark, +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, /area/chapel/dock) "bKf" = ( -/obj/structure/chair, -/turf/open/floor/plasteel/dark, -/area/chapel/dock) -"bKg" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, /area/chapel/dock) "bKh" = ( /obj/machinery/door/window/eastright{ @@ -39144,19 +39167,11 @@ /turf/open/floor/plasteel/dark, /area/chapel/dock) "bLr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 }, -/turf/open/floor/plasteel/dark, /area/chapel/dock) -"bLs" = ( -/obj/structure/lattice, -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 - }, -/turf/open/space, -/area/space/nearstation) "bLt" = ( /obj/effect/decal/cleanable/oil{ icon_state = "floor6" @@ -39647,7 +39662,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, /area/chapel/dock) "bMx" = ( /obj/effect/turf_decal/stripes/line, @@ -39657,16 +39674,13 @@ /obj/machinery/light/small{ dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/chapel/dock) -"bMy" = ( -/obj/structure/window/reinforced{ - dir = 8; - layer = 2.9 +/obj/structure/chair{ + dir = 1 }, -/obj/structure/lattice, -/turf/open/space, -/area/space/nearstation) +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/chapel/dock) "bMA" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/engine, @@ -40518,19 +40532,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/dock) -"bOy" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/dock) "bOz" = ( /obj/structure/chair/comfy/black{ dir = 1 @@ -42241,12 +42242,6 @@ /obj/structure/flora/ausbushes, /turf/open/floor/plating/asteroid, /area/chapel/asteroid/monastery) -"bSn" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/space, -/area/space/nearstation) "bSo" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -44059,7 +44054,8 @@ /turf/open/floor/engine/co2, /area/engine/atmos) "bWh" = ( -/turf/open/floor/plating/asteroid, +/obj/effect/turf_decal/sand, +/turf/open/floor/plasteel, /area/chapel/office) "bWi" = ( /obj/structure/flora/ausbushes/leafybush, @@ -44780,12 +44776,6 @@ }, /turf/closed/wall/r_wall, /area/engine/atmos) -"bXI" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/dark, -/area/chapel/main/monastery) "bXJ" = ( /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) @@ -45107,6 +45097,24 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"bYM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "bYN" = ( /obj/structure/cable{ icon_state = "4-8" @@ -45179,15 +45187,15 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/engineering) "bYR" = ( @@ -46450,13 +46458,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) -"ccL" = ( -/obj/item/flashlight/lantern{ - icon_state = "lantern-on" - }, -/obj/effect/turf_decal/sand, -/turf/open/floor/plasteel, -/area/chapel/asteroid/monastery) "ccM" = ( /obj/structure/chair, /turf/open/floor/plating/asteroid, @@ -46689,6 +46690,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/power/port_gen/pacman, /turf/open/floor/plasteel, /area/engine/engineering) "cdK" = ( @@ -46857,6 +46859,15 @@ }, /turf/open/floor/plating/asteroid, /area/chapel/asteroid/monastery) +"cep" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "ceq" = ( /obj/machinery/power/emitter, /turf/open/floor/plating, @@ -47117,22 +47128,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) -"cfp" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/main/monastery) "cfr" = ( /obj/structure/transit_tube_pod, /obj/structure/transit_tube/station/reverse{ @@ -47240,7 +47235,6 @@ /turf/open/floor/plating, /area/chapel/main/monastery) "cfL" = ( -/obj/structure/flora/ausbushes/fernybush, /obj/machinery/camera{ c_tag = "Monastery Asteroid Starboard Aft"; dir = 1; @@ -47249,11 +47243,6 @@ /obj/effect/turf_decal/sand, /turf/open/floor/plasteel, /area/chapel/asteroid/monastery) -"cfM" = ( -/obj/structure/flora/ausbushes, -/obj/effect/turf_decal/sand, -/turf/open/floor/plasteel, -/area/chapel/asteroid/monastery) "cfN" = ( /turf/closed/mineral, /area/chapel/asteroid/monastery) @@ -47426,6 +47415,13 @@ }, /turf/open/floor/plating, /area/engine/engineering) +"cgt" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cgu" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -50161,6 +50157,19 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/dock) +"cqI" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/dock) "cqS" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -50902,6 +50911,22 @@ /obj/machinery/vending/wardrobe/chap_wardrobe, /turf/open/floor/carpet, /area/chapel/office) +"cua" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main/monastery) "cuc" = ( /obj/machinery/light, /obj/machinery/camera{ @@ -50922,13 +50947,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"cui" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) "cuk" = ( /obj/structure/closet{ name = "beekeeping wardrobe" @@ -51264,11 +51282,11 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "cvf" = ( +/obj/machinery/recycler, /obj/machinery/conveyor{ - dir = 8; + dir = 4; id = "garbage" }, -/obj/machinery/recycler, /turf/open/floor/plating, /area/maintenance/disposal) "cvg" = ( @@ -51544,15 +51562,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) -"cvM" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-10" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/dark, -/area/chapel/main/monastery) "cvR" = ( /obj/machinery/light/small{ dir = 8 @@ -51850,6 +51859,22 @@ }, /turf/open/space/basic, /area/space/nearstation) +"cxj" = ( +/obj/structure/table, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/meson/engine, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser, +/obj/item/pipe_dispenser, +/obj/machinery/light, +/obj/effect/turf_decal/delivery, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engineering) "cxk" = ( /obj/structure/window/reinforced{ dir = 1; @@ -52395,6 +52420,12 @@ }, /turf/open/floor/plasteel/dark, /area/library) +"cAp" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) "cAr" = ( /obj/machinery/light/small{ dir = 8 @@ -52546,15 +52577,6 @@ }, /turf/open/floor/plasteel/dark, /area/library) -"cAQ" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) "cAS" = ( /obj/machinery/vending/wardrobe/curator_wardrobe, /turf/open/floor/plasteel/dark, @@ -52870,23 +52892,6 @@ }, /turf/open/floor/plasteel, /area/science/explab) -"cKV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"cLw" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/engine/engineering) "cOp" = ( /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, @@ -52896,6 +52901,13 @@ /obj/structure/table, /turf/open/floor/plasteel, /area/science/xenobiology) +"cOA" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "cPy" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 2 @@ -52930,6 +52942,14 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"cQZ" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/plating, +/area/maintenance/department/engine) +"cRJ" = ( +/obj/machinery/status_display/supply, +/turf/closed/wall, +/area/quartermaster/warehouse) "cSJ" = ( /obj/item/reagent_containers/glass/beaker/cryoxadone{ pixel_x = -2; @@ -52985,6 +53005,15 @@ }, /turf/open/floor/plasteel/dark, /area/science/lab) +"cUT" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "cXW" = ( /obj/structure/grille, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -53037,13 +53066,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"dgj" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 - }, -/obj/machinery/meter, -/turf/closed/wall/r_wall, -/area/engine/supermatter) "dgz" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -53065,6 +53087,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"dhu" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "dhz" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -53109,6 +53138,12 @@ }, /turf/open/floor/plasteel/dark, /area/science/explab) +"dlI" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "dmP" = ( /obj/structure/chair{ dir = 8 @@ -53180,10 +53215,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) -"dps" = ( -/obj/machinery/status_display/ai, -/turf/closed/wall, -/area/quartermaster/qm) "dqw" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "0"; @@ -53219,13 +53250,6 @@ /obj/machinery/reagentgrinder, /turf/open/floor/plating, /area/maintenance/department/cargo) -"dsz" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) "dtm" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -53291,6 +53315,24 @@ /obj/item/stack/sheet/mineral/wood, /turf/open/floor/plating, /area/maintenance/department/engine) +"dzA" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/rack, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/chapel/monastery) +"dAa" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "dAF" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/vacuum/external, @@ -53305,54 +53347,30 @@ icon_state = "platingdmg1" }, /area/maintenance/department/engine) -"dEy" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) -"dFJ" = ( -/turf/open/floor/engine, +"dFF" = ( +/turf/closed/wall/r_wall, /area/engine/supermatter) -"dHr" = ( +"dGd" = ( /obj/machinery/atmospherics/pipe/manifold/cyan/visible, -/obj/machinery/button/door{ - id = "engsm"; - name = "Radiation Shutters Control"; - pixel_y = 24; - req_access_txt = "10" - }, +/obj/machinery/meter, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/engine, /area/engine/engineering) -"dHZ" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/obj/effect/landmark/start/chemist, -/obj/machinery/button/door{ - id = "chemistry_shutters"; - name = "Shutters Control"; - pixel_x = 26; - pixel_y = 4; - req_access_txt = "5; 33" - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ +"dGp" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/medical/chemistry) -"dJk" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/plating, -/area/engine/atmos) +/turf/closed/wall/r_wall, +/area/engine/engineering) +"dHF" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) "dJm" = ( /obj/structure/cable{ icon_state = "4-8" @@ -53412,12 +53430,18 @@ /obj/machinery/shieldwallgen/xenobiologyaccess, /turf/open/floor/plating, /area/maintenance/department/engine) -"dSp" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ - dir = 1 +"dPZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/plating/airless, +/turf/open/floor/plasteel, /area/engine/engineering) +"dRs" = ( +/obj/structure/lattice, +/obj/structure/grille, +/turf/open/space/basic, +/area/space) "dSr" = ( /obj/item/chair, /turf/open/floor/wood, @@ -53428,6 +53452,25 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"dUk" = ( +/obj/machinery/cryopod{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) +"dVt" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/start/chemist, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) "dVI" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -53494,10 +53537,6 @@ /obj/structure/chair/office/light, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"eex" = ( -/obj/machinery/status_display/supply, -/turf/closed/wall, -/area/quartermaster/office) "eeQ" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -53533,13 +53572,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"eiV" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "ekU" = ( /obj/effect/decal/cleanable/cobweb{ icon_state = "cobweb2" @@ -53550,23 +53582,12 @@ /obj/structure/chair/office/dark, /turf/open/floor/wood, /area/lawoffice) -"epj" = ( -/obj/machinery/cryopod{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) "epJ" = ( /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, /turf/open/floor/carpet, /area/maintenance/department/crew_quarters/dorms) -"epV" = ( -/obj/structure/chair, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plasteel, -/area/engine/engineering) "eqD" = ( /obj/structure/sign/poster/contraband/random{ pixel_x = -32 @@ -53576,6 +53597,20 @@ icon_state = "wood-broken" }, /area/maintenance/department/crew_quarters/dorms) +"eqM" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"erV" = ( +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "eta" = ( /obj/machinery/door/airlock/engineering{ name = "Engineering Supplies"; @@ -53594,6 +53629,40 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) +"eue" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engineering) +"eux" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"euN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-10" + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main/monastery) "euQ" = ( /obj/structure/sign/warning/vacuum/external{ pixel_y = 32 @@ -53603,10 +53672,20 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) -"eyj" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/engineering) +"eyT" = ( +/obj/machinery/jukebox, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/bar) +"ezo" = ( +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, +/obj/structure/rack, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/chapel/monastery) "ezF" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -53638,23 +53717,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"eAH" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"eAZ" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) "eCw" = ( /obj/structure/cable{ icon_state = "1-2" @@ -53693,19 +53755,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) -"eFG" = ( -/obj/machinery/mineral/stacking_unit_console{ - dir = 2; - machinedir = 8; - pixel_x = -32; - pixel_y = 32 - }, -/obj/machinery/conveyor{ - dir = 8; - id = "EngLoad" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) "eHI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, @@ -53730,6 +53779,17 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit/departure_lounge) +"eMz" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering/glass{ + name = "Supermatter Engine"; + req_access_txt = "10" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "eMC" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -53749,6 +53809,15 @@ /obj/structure/lattice, /turf/closed/wall, /area/space/nearstation) +"eOA" = ( +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "eOZ" = ( /obj/structure/closet, /obj/item/clothing/suit/judgerobe, @@ -53756,6 +53825,19 @@ /obj/item/gavelhammer, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"ePS" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -28 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "ePU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -53783,18 +53865,6 @@ icon_state = "platingdmg3" }, /area/maintenance/department/security/brig) -"eRp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"eSB" = ( -/obj/machinery/computer/cryopod{ - dir = 1; - pixel_y = -26 - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) "eSL" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/item/beacon, @@ -53816,6 +53886,10 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) +"eVW" = ( +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/plating, +/area/engine/engineering) "eWi" = ( /obj/structure/cable{ icon_state = "0-4" @@ -53845,6 +53919,12 @@ /obj/item/stack/cable_coil/cut/random, /turf/open/floor/plating, /area/maintenance/department/cargo) +"fbu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) "fdQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53929,12 +54009,6 @@ }, /turf/open/floor/plasteel/white, /area/science/explab) -"fjD" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/engine/supermatter) "fkH" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -53947,16 +54021,20 @@ }, /turf/open/floor/plasteel, /area/science/explab) +"flP" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) "fmh" = ( /turf/open/floor/wood, /area/maintenance/department/engine) -"fmL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/light{ - dir = 8; - light_color = "#e8eaff" +"fml" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 }, -/turf/open/floor/plasteel/dark, +/turf/closed/wall/r_wall, /area/engine/engineering) "fmU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -53997,12 +54075,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/engine) -"frj" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) "ftp" = ( /turf/open/floor/plating{ icon_state = "platingdmg1" @@ -54052,6 +54124,10 @@ }, /turf/open/floor/plasteel, /area/quartermaster/sorting) +"fwo" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/plating, +/area/chapel/main/monastery) "fwr" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -54065,21 +54141,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"fxC" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"fym" = ( -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Chamber"; - req_access_txt = "10" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/supermatter) "fyF" = ( /obj/structure/cable/yellow{ icon_state = "0-4" @@ -54148,12 +54209,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/mixing) -"fBZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/supermatter) "fFv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/firealarm{ @@ -54162,6 +54217,14 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) +"fGt" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/plasteel, +/area/engine/engineering) "fIu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -54234,19 +54297,9 @@ /obj/structure/bookcase/random/religion, /turf/open/floor/plasteel/dark, /area/library/lounge) -"fZK" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4; - light_color = "#e8eaff" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, +"fWE" = ( /turf/open/floor/engine, -/area/engine/engineering) +/area/engine/supermatter) "gam" = ( /obj/machinery/door/airlock/medical/glass{ name = "Service Door"; @@ -54259,6 +54312,18 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/kitchen) +"gaJ" = ( +/obj/machinery/status_display/ai, +/turf/closed/wall, +/area/quartermaster/qm) +"gaQ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "gcj" = ( /obj/machinery/vending/kink, /obj/effect/turf_decal/tile/blue{ @@ -54306,6 +54371,13 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"gfh" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "gfi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -54315,11 +54387,18 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"ggg" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 +"gih" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/light{ + dir = 1; + light_color = "#d1dfff" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, /area/engine/engineering) "giI" = ( /obj/machinery/light/small{ @@ -54364,6 +54443,12 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"gkN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) "gkR" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/structure/extinguisher_cabinet{ @@ -54493,6 +54578,14 @@ heat_capacity = 1e+006 }, /area/hallway/secondary/exit/departure_lounge) +"gvO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/chapel/dock) "gwn" = ( /obj/structure/sign/warning{ pixel_y = 32 @@ -54545,24 +54638,6 @@ /obj/item/flashlight/lamp/green, /turf/open/floor/carpet, /area/lawoffice) -"gBb" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) -"gDR" = ( -/obj/machinery/camera{ - c_tag = "Central Primary Hallway Escape"; - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) "gDZ" = ( /obj/effect/turf_decal/box/corners{ dir = 1 @@ -54582,11 +54657,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/explab) -"gEo" = ( -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, -/obj/machinery/meter, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "gFo" = ( /obj/structure/window/reinforced, /obj/structure/table/glass, @@ -54620,17 +54690,39 @@ /turf/open/floor/plating, /area/maintenance/department/security/brig) "gGA" = ( -/obj/structure/table/glass, -/obj/machinery/reagentgrinder, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 +/obj/machinery/door/poddoor/shutters/preopen{ + id = "chemistry_shutters"; + name = "chemistry shutters" }, -/turf/open/floor/plasteel/white, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/medical/chemistry) +"gHp" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 8; + light_color = "#e8eaff" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"gHy" = ( +/obj/machinery/computer/cryopod{ + dir = 1; + pixel_y = -26 + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) "gHZ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -54681,6 +54773,13 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"gLn" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "gLF" = ( /obj/machinery/vending/snack/random, /obj/effect/turf_decal/tile/neutral{ @@ -54732,12 +54831,6 @@ }, /turf/open/floor/wood, /area/lawoffice) -"gQf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/engine, -/area/engine/engineering) "gSH" = ( /turf/closed/wall, /area/lawoffice) @@ -54755,6 +54848,21 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) +"gUS" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Fore"; + dir = 1; + network = list("ss13","engine") + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/engine, +/area/engine/engineering) "gVc" = ( /turf/open/floor/wood{ icon_state = "wood-broken4" @@ -54767,31 +54875,10 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) -"gXZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Fore"; - dir = 4; - network = list("ss13","engine") - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "gYo" = ( /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) -"haA" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/rods/fifty, -/obj/item/clothing/glasses/welding, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) "heC" = ( /obj/machinery/power/apc/highcap/five_k{ dir = 8; @@ -54838,24 +54925,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"hjk" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/plasteel, -/area/engine/atmos) -"hjD" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) "hkQ" = ( /obj/machinery/light{ dir = 4 @@ -54878,26 +54947,6 @@ }, /turf/open/floor/wood, /area/lawoffice) -"hon" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 4; - name = "Gas to Filter" - }, -/turf/open/floor/engine, -/area/engine/engineering) -"hoS" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/engine, -/area/engine/engineering) "hqo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -54913,6 +54962,13 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"hrx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "hvW" = ( /obj/machinery/door/poddoor/preopen{ id = "xenobio4"; @@ -54948,18 +55004,18 @@ /obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/plating, /area/security/execution/transfer) +"hxh" = ( +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "hxn" = ( /obj/structure/chair, /obj/item/clothing/glasses/regular, /turf/open/floor/plating, /area/maintenance/department/science) -"hyh" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) "hzc" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -54989,6 +55045,21 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port) +"hCg" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "garbage" + }, +/turf/open/floor/plating, +/area/maintenance/disposal) +"hDy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/engine/engineering) "hDG" = ( /obj/machinery/door/airlock/engineering{ name = "Auxillary Base Construction"; @@ -55021,43 +55092,20 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"hGB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) "hHr" = ( /obj/structure/chair/comfy/black{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"hIZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"hKp" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 - }, -/obj/structure/window/plasma/reinforced{ +"hJO" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 }, -/obj/machinery/power/rad_collector/anchored, -/turf/open/floor/engine, -/area/engine/supermatter) +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "hOx" = ( /obj/structure/cable{ icon_state = "2-4" @@ -55095,17 +55143,6 @@ icon_state = "platingdmg3" }, /area/maintenance/department/science) -"hQy" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "engsm"; - name = "Radiation Chamber Shutters" - }, -/obj/item/tank/internals/plasma, -/turf/open/floor/plating, -/area/engine/supermatter) "hQz" = ( /obj/structure/closet/emcloset/anchored, /obj/structure/cable/yellow{ @@ -55117,29 +55154,14 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/engine/engineering) -"hSt" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 4; - name = "Gas to Cooling Loop" +"hRQ" = ( +/obj/structure/window/reinforced{ + dir = 8; + layer = 2.9 }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"hSC" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) +/obj/structure/lattice, +/turf/open/space, +/area/space/nearstation) "hSM" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -55164,18 +55186,23 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) +"hUf" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"hUi" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "hUt" = ( /obj/structure/closet/crate{ icon_state = "crateopen" }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"hUw" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) "hUJ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -55191,17 +55218,25 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) +"hWa" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) +"hXm" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "hXt" = ( /obj/structure/girder, /turf/open/floor/plating, /area/maintenance/department/science) -"hXK" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/engine/engineering) "hYe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/red{ @@ -55243,20 +55278,15 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit/departure_lounge) +"iaZ" = ( +/turf/open/space/basic, +/area/hallway/secondary/entry) "ick" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/open/floor/plasteel/dark, /area/library) -"iej" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/engine, -/area/engine/engineering) "igE" = ( /obj/structure/table/reinforced, /obj/machinery/button/door{ @@ -55305,30 +55335,24 @@ icon_state = "platingdmg3" }, /area/maintenance/department/science) +"ikm" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4; + name = "Mix to Gas" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) "ikB" = ( /obj/structure/closet/secure_closet/medical2, /turf/open/floor/plating, /area/maintenance/department/science) -"ikO" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 9 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) "ilD" = ( /obj/machinery/processor/slime, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"imE" = ( -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) "ioj" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -55345,40 +55369,13 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) -"iop" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/light{ - dir = 8; - light_color = "#e8eaff" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"ioF" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "iqc" = ( /turf/open/floor/plasteel/stairs/right, /area/maintenance/department/crew_quarters/dorms) -"irM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) +"irs" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) "itl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -55411,13 +55408,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"iwe" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) "iyg" = ( /obj/structure/cable{ icon_state = "1-2" @@ -55434,11 +55424,6 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"izm" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/engine/engineering) "izB" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod" @@ -55521,6 +55506,20 @@ }, /turf/open/floor/plasteel/white, /area/storage/emergency/port) +"iHe" = ( +/obj/machinery/camera{ + c_tag = "Central Primary Hallway Escape"; + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"iHI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "iJi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -55534,13 +55533,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/quartermaster/sorting) -"iLh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 9 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/engine, -/area/engine/engineering) "iLl" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -55602,6 +55594,22 @@ }, /turf/open/floor/plating, /area/security/execution/transfer) +"iSi" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Cooling Loop Bypass" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) "iSz" = ( /obj/structure/cable{ icon_state = "2-8" @@ -55614,9 +55622,14 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"iTF" = ( -/obj/structure/sign/warning/electricshock, -/turf/closed/wall/r_wall, +"iSL" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/plating, +/area/engine/atmos) +"iTE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, /area/engine/supermatter) "iVJ" = ( /obj/effect/spawner/lootdrop/organ_spawner, @@ -55683,6 +55696,16 @@ icon_state = "platingdmg3" }, /area/maintenance/department/crew_quarters/dorms) +"jjA" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Gas to Cooling Loop" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "jjC" = ( /obj/structure/rack, /obj/item/storage/briefcase{ @@ -55695,6 +55718,18 @@ }, /turf/open/floor/wood, /area/lawoffice) +"jkm" = ( +/obj/structure/closet/emcloset, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) +"jrb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "jrG" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -55750,6 +55785,17 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"jtv" = ( +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Starboard"; + dir = 8; + network = list("ss13","engine") + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "jvi" = ( /obj/structure/cable{ icon_state = "4-8" @@ -55795,17 +55841,6 @@ /obj/structure/sign/warning/vacuum/external, /turf/open/floor/plating, /area/hallway/secondary/entry) -"jzE" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/door/airlock/engineering/glass{ - name = "Supermatter Engine"; - req_access_txt = "10" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "jAy" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -55884,15 +55919,39 @@ /obj/machinery/atmospherics/pipe/simple/purple/visible, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) +"jOw" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "jOB" = ( /turf/open/floor/plating, /area/storage/emergency/starboard) +"jOX" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Monastery Transit" + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/chapel/dock) "jPf" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, /obj/item/kitchen/knife, /turf/open/floor/plasteel, /area/maintenance/department/engine) +"jPC" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) "jQh" = ( /obj/item/stack/sheet/animalhide/xeno, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -55902,6 +55961,15 @@ icon_state = "platingdmg1" }, /area/maintenance/department/science) +"jQn" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) "jRG" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -55912,6 +55980,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) +"jTc" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 4; + name = "Gas to Filter" + }, +/turf/open/floor/engine, +/area/engine/engineering) "jTh" = ( /obj/structure/cable{ icon_state = "1-2" @@ -55933,16 +56008,6 @@ }, /turf/open/floor/carpet, /area/lawoffice) -"jTU" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) "jUV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -55963,12 +56028,6 @@ /obj/item/stack/ore/iron, /turf/open/floor/plating, /area/maintenance/department/science) -"jXF" = ( -/obj/machinery/cryopod{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) "jXV" = ( /obj/machinery/light/small{ dir = 1 @@ -55993,20 +56052,14 @@ icon_state = "platingdmg3" }, /area/maintenance/department/engine) -"jZG" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "chemistry_shutters"; - name = "chemistry shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/medical/chemistry) -"kaR" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 8 +"kec" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/light{ + dir = 8; + light_color = "#e8eaff" }, /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 8 }, /turf/open/floor/engine, /area/engine/engineering) @@ -56064,10 +56117,6 @@ icon_state = "platingdmg3" }, /area/maintenance/department/science) -"klb" = ( -/obj/machinery/status_display/supply, -/turf/closed/wall, -/area/quartermaster/sorting) "klo" = ( /obj/structure/dresser, /obj/structure/mirror{ @@ -56086,22 +56135,10 @@ /obj/item/clothing/under/rank/clown/sexy, /turf/open/floor/plasteel/dark, /area/maintenance/department/crew_quarters/dorms) -"kmd" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "kmn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, /area/science/mixing) -"koz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) "kpK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -56121,6 +56158,12 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) +"ksC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "kvj" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -56134,6 +56177,20 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"kvu" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"kvx" = ( +/obj/machinery/light, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "kwm" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 @@ -56194,12 +56251,22 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit/departure_lounge) +"kBe" = ( +/obj/structure/reflector/double/anchored{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "kDf" = ( /obj/machinery/light/small{ dir = 2 }, /turf/open/floor/carpet/black, /area/chapel/office) +"kDI" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/supermatter) "kDJ" = ( /obj/machinery/light{ dir = 8 @@ -56332,6 +56399,11 @@ }, /turf/open/floor/engine, /area/science/xenobiology) +"kNK" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/engine/engineering) "kPi" = ( /obj/structure/table, /obj/machinery/microwave, @@ -56405,20 +56477,10 @@ }, /turf/open/floor/plating, /area/storage/emergency/port) -"kTj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) -"kTR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) +"kVA" = ( +/obj/machinery/status_display/supply, +/turf/closed/wall, +/area/quartermaster/sorting) "kWQ" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible, /obj/structure/cable/yellow{ @@ -56432,16 +56494,15 @@ }, /turf/open/floor/engine, /area/engine/engineering) -"kYM" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = 27 +"kYR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 8 +/obj/machinery/light, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) +/area/hallway/secondary/entry) "lcU" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -56469,29 +56530,14 @@ }, /turf/open/floor/plating, /area/security/execution/transfer) -"lfx" = ( -/obj/structure/table, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/effect/turf_decal/delivery, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) +"lfZ" = ( +/obj/machinery/status_display/supply, +/turf/closed/wall, +/area/quartermaster/office) "lhA" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"lhP" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "liR" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -56506,18 +56552,30 @@ /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/open/floor/plating, /area/maintenance/department/cargo) -"ljG" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 6 +"llS" = ( +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 }, -/turf/open/floor/plasteel, -/area/engine/atmos) +/area/hallway/secondary/entry) "lms" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, /turf/closed/wall, /area/maintenance/department/engine) +"lmv" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1; + light_color = "#d1dfff" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) "lnn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/neutral, @@ -56526,32 +56584,17 @@ }, /turf/open/floor/plasteel, /area/storage/primary) -"lnr" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"loz" = ( -/obj/structure/closet/radiation, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "lqc" = ( /obj/item/toy/gun, /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"lqo" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/department/chapel/monastery) "lqy" = ( /obj/machinery/door/airlock/grunge{ name = "Library" @@ -56561,13 +56604,13 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/library/lounge) -"lrM" = ( -/obj/structure/cable{ - icon_state = "2-8" +"lxh" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) +/turf/open/space, +/area/space/nearstation) "lzJ" = ( /obj/structure/closet/crate/bin, /turf/open/floor/carpet, @@ -56601,6 +56644,24 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) +"lCR" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engineering) +"lCY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"lDW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plasteel, +/area/engine/engineering) "lEn" = ( /obj/structure/window/reinforced{ dir = 1 @@ -56671,12 +56732,6 @@ /obj/item/wrench, /turf/open/floor/plating, /area/maintenance/department/science) -"lJI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) "lKL" = ( /obj/machinery/door/airlock/abandoned{ name = "Starboard Emergency Storage"; @@ -56711,6 +56766,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) +"lQy" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/turf/open/space, +/area/space/nearstation) "lQQ" = ( /obj/machinery/door/poddoor/preopen{ id = "bridgespace"; @@ -56736,13 +56798,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"lRX" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 - }, -/turf/open/floor/plating, -/area/engine/engineering) "lTC" = ( /obj/item/shard, /obj/effect/turf_decal/stripes/line{ @@ -56753,10 +56808,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"lUO" = ( -/obj/structure/sign/warning/radiation, -/turf/closed/wall/r_wall, -/area/engine/supermatter) "lWy" = ( /turf/open/floor/plating, /area/maintenance/department/science) @@ -56778,28 +56829,11 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"lXb" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Gas to Mix" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) "lXc" = ( /obj/structure/table, /obj/item/clothing/head/beret, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"lXJ" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 4 - }, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "mal" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -56840,10 +56874,32 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"mci" = ( -/obj/machinery/portable_atmospherics/canister/toxins, +"mbD" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/plating, /area/engine/engineering) +"mcf" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) +"mdi" = ( +/obj/machinery/rnd/production/circuit_imprinter, +/obj/machinery/camera{ + c_tag = "Engineering Starboard Aft"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "mdL" = ( /obj/structure/table, /obj/item/paper_bin, @@ -56860,19 +56916,19 @@ /obj/machinery/status_display/evac, /turf/closed/wall/r_wall, /area/engine/supermatter) -"mfC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +"mfg" = ( +/obj/structure/window/reinforced{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"mgz" = ( -/obj/structure/cable{ - icon_state = "4-8" +/turf/open/space, +/area/space/nearstation) +"mfx" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "mhl" = ( /obj/machinery/power/emitter, /obj/machinery/light{ @@ -56880,39 +56936,14 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"mhn" = ( -/obj/machinery/door/firedoor, -/obj/structure/sign/poster/random{ - pixel_x = 32 +"mlb" = ( +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 8 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"miw" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Fore"; - dir = 1; - network = list("ss13","engine") - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"mjn" = ( -/obj/machinery/jukebox, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/bar) -"mjK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/closed/wall/r_wall, +/turf/open/floor/plating, /area/engine/engineering) "mlr" = ( /obj/structure/lattice, @@ -56921,6 +56952,26 @@ }, /turf/open/space/basic, /area/space/nearstation) +"mlx" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"mlS" = ( +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber"; + req_access_txt = "10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/supermatter) "mmv" = ( /obj/machinery/door/airlock/engineering{ name = "Engineering Supplies"; @@ -56968,19 +57019,6 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"mqp" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -28 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) "msX" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -57019,6 +57057,21 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) +"mvA" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"mvY" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "Gas to Filter" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/engine, +/area/engine/supermatter) "mwg" = ( /obj/structure/closet/crate{ icon_state = "crateopen" @@ -57086,6 +57139,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, /area/maintenance/department/engine) +"mAi" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "mCe" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -57094,6 +57153,27 @@ }, /turf/open/floor/plating, /area/security/checkpoint/engineering) +"mCP" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"mCU" = ( +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/rods/fifty, +/obj/item/clothing/glasses/welding, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engineering) "mDW" = ( /obj/machinery/power/smes{ charge = 5e+006 @@ -57101,16 +57181,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/tcommsat/computer) -"mEu" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) "mES" = ( /obj/machinery/door/airlock/maintenance/abandoned{ name = "Surgical Room" @@ -57140,6 +57210,10 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) +"mLc" = ( +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "mLB" = ( /obj/structure/cable{ icon_state = "1-4" @@ -57179,6 +57253,16 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"mVj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "mVM" = ( /turf/open/floor/plating/airless, /area/space/nearstation) @@ -57191,6 +57275,20 @@ "mZE" = ( /turf/open/space/basic, /area/space/nearstation) +"mZK" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) +"mZV" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "naq" = ( /obj/structure/disposaloutlet{ dir = 4 @@ -57200,14 +57298,14 @@ }, /turf/open/floor/engine, /area/science/xenobiology) -"ncm" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 +"ndf" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Gas to Mix" }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/engine/engineering) "ndI" = ( @@ -57252,10 +57350,37 @@ /obj/structure/lattice, /turf/open/space, /area/space/nearstation) +"ngg" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) "ngp" = ( /obj/item/chair/stool, /turf/open/floor/carpet, /area/maintenance/department/crew_quarters/dorms) +"nhW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"nif" = ( +/obj/structure/table/glass, +/obj/item/book/manual/wiki/engineering_hacking{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/engineering_construction, +/turf/open/floor/plasteel, +/area/engine/engineering) "nih" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/costume, @@ -57279,6 +57404,30 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit/departure_lounge) +"nkk" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/chair{ + dir = 8; + name = "Defense" + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Starboard"; + dir = 8 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "nku" = ( /obj/machinery/door/airlock/centcom{ name = "Crematorium"; @@ -57288,6 +57437,21 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/chapel/office) +"nnf" = ( +/obj/structure/rack, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/medical/chemistry) "nnh" = ( /obj/structure/chair{ dir = 8 @@ -57309,13 +57473,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/department/engine) -"nqu" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "nqV" = ( /obj/structure/cable{ icon_state = "1-2" @@ -57326,6 +57483,19 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"nqW" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "nsy" = ( /obj/structure/table, /obj/item/stack/sheet/metal/fifty, @@ -57355,14 +57525,6 @@ }, /turf/closed/wall/r_wall, /area/science/mixing) -"nsJ" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "ntj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -57399,6 +57561,10 @@ }, /turf/open/floor/plasteel/white/corner, /area/hallway/primary/central) +"nyN" = ( +/obj/machinery/power/supermatter_crystal/engine, +/turf/open/floor/engine, +/area/engine/supermatter) "nyO" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" @@ -57425,12 +57591,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"nAY" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/plasteel, -/area/engine/engineering) "nBw" = ( /obj/machinery/computer/crew{ dir = 1 @@ -57503,6 +57663,15 @@ /obj/structure/table/reinforced, /turf/open/floor/plasteel, /area/science/xenobiology) +"nIq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Engineering Supermatter Fore"; + dir = 4; + network = list("ss13","engine") + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "nIU" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -57526,6 +57695,17 @@ }, /turf/open/floor/engine, /area/science/explab) +"nKF" = ( +/obj/machinery/door/firedoor, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "nLl" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -57561,6 +57741,17 @@ }, /turf/open/floor/plasteel, /area/tcommsat/computer) +"nNn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engineering) "nNJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -57595,6 +57786,13 @@ /obj/item/chair, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"nPW" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/obj/machinery/meter, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "nQc" = ( /obj/structure/table, /obj/item/stack/sheet/metal/fifty, @@ -57605,13 +57803,9 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"nRM" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/plasteel, +"nQf" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/closed/wall/r_wall, /area/engine/engineering) "nSj" = ( /obj/structure/grille/broken, @@ -57625,16 +57819,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/lawoffice) -"nTr" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"nUQ" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/engine, -/area/engine/supermatter) "nVU" = ( /obj/item/twohanded/spear, /turf/open/floor/plating, @@ -57647,6 +57831,13 @@ /obj/structure/table_frame/wood, /turf/open/floor/wood, /area/maintenance/department/engine) +"nYe" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Engine" + }, +/turf/open/floor/plasteel, +/area/engine/atmos) "nYn" = ( /obj/structure/sign/warning/docking, /obj/effect/spawner/structure/window/reinforced, @@ -57673,6 +57864,23 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) +"obl" = ( +/obj/structure/sign/warning/radiation, +/turf/closed/wall/r_wall, +/area/engine/supermatter) +"obG" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/obj/machinery/button/door{ + id = "engsm"; + name = "Radiation Shutters Control"; + pixel_y = 24; + req_access_txt = "10" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) "obP" = ( /obj/structure/table, /obj/item/paper_bin, @@ -57682,6 +57890,11 @@ initial_gas_mix = "o2=0.01;n2=0.01" }, /area/maintenance/department/science) +"ocy" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/engine/engineering) "oep" = ( /obj/structure/table/glass, /obj/item/paper_bin, @@ -57714,6 +57927,10 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"oge" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/turf/open/floor/plating, +/area/engine/engineering) "ohR" = ( /obj/item/chair, /turf/open/floor/plating, @@ -57728,6 +57945,18 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) +"ona" = ( +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/engineering) "onX" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -57785,6 +58014,12 @@ /obj/structure/window/reinforced, /turf/open/floor/plasteel, /area/science/xenobiology) +"oto" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "ous" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/button/door{ @@ -57807,6 +58042,14 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) +"ovE" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/chapel/monastery) "ovM" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 @@ -57832,11 +58075,17 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/office) -"oxw" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +"oxt" = ( +/obj/structure/table/glass, +/obj/item/book/manual/wiki/research_and_development, +/obj/item/disk/tech_disk, +/obj/item/disk/design_disk, +/turf/open/floor/plasteel/dark, +/area/science/lab) +"oyE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, /area/engine/engineering) "oyF" = ( @@ -57864,6 +58113,19 @@ }, /turf/closed/wall/r_wall, /area/science/xenobiology) +"oBY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/meter, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/engine, +/area/engine/engineering) "oCn" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -57934,6 +58196,15 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"oFi" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/engine, +/area/engine/engineering) "oFo" = ( /obj/structure/closet/emcloset/anchored, /obj/structure/sign/warning/vacuum/external{ @@ -57950,23 +58221,6 @@ /obj/item/stack/sheet/mineral/wood, /turf/open/floor/plasteel, /area/maintenance/department/engine) -"oHa" = ( -/obj/machinery/power/emitter/anchored{ - dir = 8; - state = 2 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/engine/engineering) -"oJr" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plating, -/area/engine/engineering) "oKa" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -57982,18 +58236,6 @@ icon_state = "platingdmg3" }, /area/maintenance/department/science) -"oKv" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/effect/turf_decal/bot, -/turf/open/floor/engine, -/area/engine/engineering) -"oKJ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/engine, -/area/engine/engineering) "oLR" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -58100,6 +58342,12 @@ icon_state = "platingdmg3" }, /area/maintenance/department/security/brig) +"oTD" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/bot, +/turf/open/floor/engine, +/area/engine/engineering) "oUa" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -58115,14 +58363,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"oWu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/holopad, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/engineering) "oWw" = ( /obj/item/flashlight, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -58143,22 +58383,6 @@ }, /turf/open/floor/plasteel/white, /area/security/execution/transfer) -"oXq" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Cooling Loop Bypass" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) "oYj" = ( /obj/effect/turf_decal/loading_area{ dir = 4 @@ -58171,12 +58395,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"paU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 - }, -/turf/open/floor/plating/airless, -/area/engine/engineering) "pbm" = ( /obj/machinery/door/airlock/external{ name = "Pod Docking Bay" @@ -58212,6 +58430,19 @@ }, /turf/open/floor/plating, /area/science/explab) +"peb" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 8 + }, +/obj/structure/window/plasma/reinforced{ + dir = 4 + }, +/obj/machinery/power/rad_collector/anchored, +/turf/open/floor/engine, +/area/engine/supermatter) "pfz" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -58232,13 +58463,12 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"pgH" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 4 +"pga" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 }, -/turf/open/floor/engine, -/area/engine/engineering) +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "phJ" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -58260,13 +58490,6 @@ /obj/structure/piano, /turf/open/floor/plasteel/dark, /area/maintenance/department/crew_quarters/dorms) -"pmB" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/plasteel, -/area/engine/atmos) "pnU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ dir = 4; @@ -58275,14 +58498,16 @@ }, /turf/open/floor/circuit/telecomms, /area/science/xenobiology) -"poP" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ +"ppi" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/turf/open/space, -/area/space/nearstation) +/turf/open/floor/engine, +/area/engine/engineering) "pps" = ( /turf/closed/wall, /area/engine/break_room) @@ -58301,18 +58526,20 @@ }, /turf/open/floor/engine, /area/engine/supermatter) -"psd" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - name = "Gas to Filter" +"ptk" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, -/area/engine/supermatter) -"puw" = ( -/obj/structure/sign/warning/fire, -/turf/closed/wall/r_wall, -/area/engine/supermatter) +/area/engine/engineering) +"puO" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "pvK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ @@ -58347,17 +58574,13 @@ }, /turf/open/space/basic, /area/space/nearstation) -"pxD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +"pBs" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "chemistry_shutters"; - name = "chemistry shutters" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/medical/chemistry) +/turf/open/floor/engine, +/area/engine/engineering) "pBD" = ( /obj/structure/cable{ icon_state = "0-8" @@ -58368,22 +58591,6 @@ /obj/machinery/shieldwallgen/xenobiologyaccess, /turf/open/floor/plating, /area/maintenance/department/engine) -"pBJ" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) -"pCo" = ( -/obj/structure/reflector/single/anchored{ - dir = 6 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/engine/engineering) "pDP" = ( /obj/machinery/vending/assist, /obj/effect/turf_decal/tile/neutral{ @@ -58440,6 +58647,29 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/hop) +"pIk" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/engine/engineering) +"pJx" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/engine, +/area/engine/engineering) "pKd" = ( /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; @@ -58499,6 +58729,12 @@ dir = 1 }, /area/hallway/secondary/exit/departure_lounge) +"pPu" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "pQw" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -58579,19 +58815,6 @@ /obj/structure/cable, /turf/open/floor/wood, /area/lawoffice) -"pYh" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/closed/wall/r_wall, -/area/engine/engineering) -"pYw" = ( -/obj/item/twohanded/required/kirbyplants{ - icon_state = "plant-03" - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -24 - }, -/turf/open/floor/plasteel/dark, -/area/science/lab) "pYC" = ( /obj/structure/sign/warning{ pixel_y = -32 @@ -58606,12 +58829,25 @@ }, /turf/open/floor/plasteel/white, /area/medical/virology) +"qbm" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "qbp" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 8 }, /turf/open/floor/plasteel/dark, /area/engine/engineering) +"qbV" = ( +/obj/structure/lattice, +/turf/open/space, +/area/space) "qbZ" = ( /obj/structure/rack, /obj/item/clothing/mask/gas, @@ -58666,18 +58902,6 @@ /obj/item/stack/sheet/mineral/wood, /turf/open/floor/plating, /area/maintenance/department/engine) -"qeY" = ( -/turf/closed/wall/r_wall, -/area/engine/supermatter) -"qhE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "qjx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line, @@ -58687,38 +58911,10 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) -"qkM" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/engine, -/area/engine/engineering) "qnT" = ( /obj/machinery/iv_drip, /turf/open/floor/plating, /area/maintenance/department/science) -"qpd" = ( -/obj/machinery/atmospherics/pipe/manifold/green/visible{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qpS" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) "qtA" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -58859,21 +59055,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/maintenance/department/science) -"qLI" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass/fifty{ - layer = 4 - }, -/obj/item/stack/cable_coil, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/engine/engineering) "qMi" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/general/visible, @@ -58910,10 +59091,10 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"qOS" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, +"qPh" = ( +/obj/structure/chair, +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plasteel, /area/engine/engineering) "qPB" = ( /obj/structure/chair/stool, @@ -58922,22 +59103,8 @@ }, /turf/open/floor/plasteel/dark, /area/maintenance/department/crew_quarters/dorms) -"qRl" = ( -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_x = 29 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"qTV" = ( -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_x = -27 - }, -/obj/effect/turf_decal/tile/blue{ +"qUe" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plasteel, @@ -58967,6 +59134,12 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"qWB" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "qWG" = ( /obj/structure/closet/emcloset/anchored, /turf/open/floor/plating, @@ -59045,9 +59218,8 @@ /area/medical/sleeper) "rax" = ( /obj/machinery/conveyor{ - icon_state = "conveyor_map"; dir = 1; - id = "EngLoad" + id = "garbage" }, /turf/open/floor/plating, /area/maintenance/disposal) @@ -59206,6 +59378,23 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/bar) +"rwf" = ( +/obj/machinery/power/emitter/anchored{ + dir = 8; + state = 2 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/engine/engineering) +"rwt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/engine, +/area/engine/engineering) "rxa" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -59240,6 +59429,13 @@ icon_state = "panelscorched" }, /area/maintenance/department/engine) +"rAZ" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "rBh" = ( /obj/structure/mopbucket, /obj/item/mop, @@ -59254,6 +59450,19 @@ /obj/item/reagent_containers/blood/random, /turf/open/floor/plating, /area/maintenance/department/science) +"rEt" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "rFq" = ( /obj/structure/chair, /obj/item/reagent_containers/food/snacks/donkpocket, @@ -59261,6 +59470,24 @@ icon_state = "platingdmg3" }, /area/maintenance/department/science) +"rGz" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) +"rHv" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Monastery Transit" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/hallway/secondary/entry) "rHA" = ( /turf/open/floor/plasteel, /area/construction/mining/aux_base) @@ -59319,6 +59546,16 @@ /obj/item/ammo_casing/shotgun/improvised, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"rMt" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "rMV" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -59330,6 +59567,16 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/department/science) +"rPd" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_x = -27 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "rPg" = ( /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 8 @@ -59344,13 +59591,12 @@ /obj/item/trash/can, /turf/open/floor/wood, /area/maintenance/department/engine) -"rTd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable/yellow{ - icon_state = "4-8" +"rTZ" = ( +/obj/machinery/cryopod{ + dir = 8 }, /turf/open/floor/plasteel, -/area/engine/engineering) +/area/crew_quarters/dorms) "rWE" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -59377,6 +59623,14 @@ }, /turf/open/floor/plating, /area/storage/emergency/starboard) +"saW" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Monastery Transit" + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/hallway/secondary/entry) "sbk" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -59419,6 +59673,17 @@ }, /turf/open/space, /area/space/nearstation) +"sdZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engineering) +"sfr" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "sgc" = ( /obj/machinery/vending/cigarette, /obj/effect/turf_decal/tile/neutral{ @@ -59433,51 +59698,23 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit/departure_lounge) -"shH" = ( -/turf/closed/wall/r_wall, -/area/space/nearstation) +"sho" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/hallway/secondary/entry) "sij" = ( /obj/structure/closet, /obj/item/reagent_containers/food/snacks/meat/slab/monkey, /turf/open/floor/plating, /area/maintenance/department/engine) -"sjC" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/power/port_gen/pacman, -/turf/open/floor/plasteel, -/area/engine/engineering) "skw" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/closed/wall, /area/maintenance/department/security/brig) -"slJ" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1; - light_color = "#d1dfff" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"smv" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "Cooling Loop to Gas" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) "spz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, @@ -59523,12 +59760,6 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard) -"svA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) "svN" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/structure/sign/departments/restroom{ @@ -59536,11 +59767,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) -"swg" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) "sww" = ( /obj/effect/decal/cleanable/blood/old, /obj/item/reagent_containers/food/snacks/meat/slab/monkey, @@ -59575,6 +59801,12 @@ }, /turf/open/floor/plating, /area/security/execution/transfer) +"sAF" = ( +/obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/landmark/start/station_engineer, +/turf/open/floor/plasteel, +/area/engine/engineering) "sAK" = ( /obj/item/clothing/mask/gas/plaguedoctor, /turf/open/floor/plating, @@ -59612,6 +59844,17 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"sHX" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Cooling Loop to Gas" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/engine, +/area/engine/engineering) "sJp" = ( /obj/machinery/atmospherics/pipe/simple/general/visible, /obj/effect/turf_decal/stripes/line, @@ -59633,6 +59876,21 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"sKw" = ( +/obj/structure/table, +/obj/item/stack/sheet/glass/fifty{ + layer = 4 + }, +/obj/item/stack/cable_coil, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "sNz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -59646,6 +59904,12 @@ }, /turf/open/floor/plating, /area/security/execution/transfer) +"sOQ" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/space/basic, +/area/space) "sQt" = ( /obj/machinery/door/airlock/external{ name = "Supply Dock Airlock"; @@ -59656,6 +59920,37 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) +"sQG" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) +"sQV" = ( +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/engine, +/area/engine/engineering) +"sRH" = ( +/obj/structure/lattice, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/space, +/area/space/nearstation) +"sTg" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "sUP" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 @@ -59682,19 +59977,6 @@ }, /turf/open/floor/engine, /area/engine/engineering) -"sWW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/meter, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/engine, -/area/engine/engineering) "sXi" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -59709,16 +59991,6 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/r_wall, /area/science/xenobiology) -"sYQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) "sZh" = ( /obj/structure/closet/crate, /turf/open/floor/plating, @@ -59756,13 +60028,16 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"tbw" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 +"tcC" = ( +/obj/machinery/door/firedoor, +/obj/structure/sign/poster/official/random{ + pixel_x = -32 }, -/turf/open/space, -/area/space/nearstation) +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "tcY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -59810,10 +60085,6 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"tdL" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/closed/wall/r_wall, -/area/engine/supermatter) "tfw" = ( /obj/structure/cable{ icon_state = "0-2"; @@ -59859,17 +60130,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) -"tkL" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/light{ - dir = 8; - light_color = "#e8eaff" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) "tlc" = ( /obj/machinery/recharger, /obj/structure/table, @@ -59888,12 +60148,14 @@ }, /turf/open/floor/engine, /area/engine/engineering) -"tlV" = ( -/obj/structure/reflector/double/anchored{ - dir = 9 +"tmi" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/engine/engineering) +/turf/open/space, +/area/space/nearstation) "tnY" = ( /obj/machinery/button/door{ id = "aux_base_shutters"; @@ -59915,15 +60177,13 @@ icon_state = "panelscorched" }, /area/maintenance/department/security/brig) -"tqO" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, -/obj/effect/turf_decal/tile/blue{ +"tpX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ dir = 8 }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "tqX" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -59935,6 +60195,13 @@ }, /turf/open/floor/plating, /area/science/xenobiology) +"ttX" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/turf/open/floor/plating, +/area/engine/engineering) "tue" = ( /obj/structure/cable{ icon_state = "2-4" @@ -59991,14 +60258,19 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"tzH" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "research_shutters_2"; - name = "research shutters" +"tzh" = ( +/obj/structure/chair/office/dark{ + dir = 4 }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/science/lab) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/engineering) +"tAv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/open/floor/plating/airless, +/area/engine/engineering) "tAK" = ( /obj/structure/table, /obj/structure/window/reinforced{ @@ -60016,13 +60288,6 @@ /obj/item/wrench, /turf/open/floor/plating, /area/maintenance/department/cargo) -"tDE" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Mix to Engine" - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "tHk" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -60038,33 +60303,13 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"tJr" = ( -/obj/structure/plasticflaps/opaque, -/obj/effect/turf_decal/delivery, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "research_shutters_2"; - name = "research shutters" +"tMA" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 }, -/turf/open/floor/plasteel, -/area/science/lab) -"tLP" = ( -/obj/machinery/status_display/supply, -/turf/closed/wall, -/area/quartermaster/warehouse) -"tOD" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"tQT" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/engineering) +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "tRc" = ( /obj/structure/ore_box, /turf/open/floor/plating{ @@ -60097,6 +60342,11 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"uaa" = ( +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/chapel/monastery) "uaC" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -60109,13 +60359,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"uaO" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) "uaP" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -60129,14 +60372,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall/r_wall, /area/science/mixing) -"udl" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/space, -/area/space/nearstation) "uek" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -60165,21 +60400,27 @@ icon_state = "panelscorched" }, /area/maintenance/department/science) -"ueX" = ( -/obj/structure/table/glass, -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/engineering_construction, -/turf/open/floor/plasteel, -/area/engine/engineering) "ufa" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"ufr" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"ufx" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research_shutters_2"; + name = "research shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/science/lab) "ugC" = ( /obj/structure/chair/office/light{ icon_state = "officechair_white"; @@ -60212,16 +60453,6 @@ }, /turf/closed/wall, /area/maintenance/department/engine) -"ukp" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "Mix to Gas" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/engine, -/area/engine/engineering) "ulu" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -60284,13 +60515,12 @@ "uoS" = ( /turf/open/floor/plating, /area/construction/mining/aux_base) -"upc" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ +"upg" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 6 }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "uqJ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -60359,44 +60589,17 @@ }, /turf/open/floor/circuit/telecomms, /area/science/xenobiology) +"uwT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "uwX" = ( /obj/machinery/field/generator, /turf/open/floor/plating, /area/maintenance/department/engine) -"uxP" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/structure/chair{ - dir = 8; - name = "Defense" - }, -/obj/machinery/camera{ - c_tag = "Atmospherics Starboard"; - dir = 8 - }, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) -"uzh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/engineering/glass/critical{ - heat_proof = 1; - name = "Supermatter Chamber"; - req_access_txt = "10" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/engine, -/area/engine/supermatter) "uzn" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/structure/cable{ @@ -60410,6 +60613,10 @@ }, /turf/open/floor/plasteel, /area/tcommsat/computer) +"uAL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "uAU" = ( /obj/structure/table/wood, /obj/item/folder/blue, @@ -60431,6 +60638,11 @@ }, /turf/open/floor/engine, /area/science/explab) +"uBu" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/department/chapel/monastery) "uCS" = ( /obj/machinery/door/poddoor/shutters{ id = "aux_base_shutters"; @@ -60439,6 +60651,16 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"uDr" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) +"uER" = ( +/turf/closed/wall/r_wall, +/area/space/nearstation) "uHG" = ( /obj/structure/cable{ icon_state = "1-4" @@ -60451,12 +60673,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"uIB" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/engine/engineering) "uLF" = ( /obj/structure/cable{ icon_state = "1-4" @@ -60493,6 +60709,12 @@ /obj/effect/turf_decal/plaque, /turf/open/floor/plating, /area/maintenance/department/engine) +"uQa" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/engine, +/area/engine/supermatter) "uQR" = ( /obj/item/ammo_casing/shotgun/beanbag, /turf/open/floor/plating, @@ -60532,6 +60754,14 @@ /obj/item/stamp/law, /turf/open/floor/carpet, /area/lawoffice) +"uWe" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 2; + name = "External Gas to Loop" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/engine, +/area/engine/engineering) "uXG" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60554,12 +60784,28 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard) +"uZs" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "vay" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/open/floor/plating, /area/maintenance/department/engine) +"vbQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) +"vdb" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "veM" = ( /obj/machinery/suit_storage_unit/rd, /obj/machinery/light{ @@ -60577,6 +60823,15 @@ }, /turf/open/floor/plasteel/dark, /area/science/mixing) +"vfn" = ( +/obj/structure/plasticflaps/opaque, +/obj/effect/turf_decal/delivery, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "research_shutters_2"; + name = "research shutters" + }, +/turf/open/floor/plasteel, +/area/science/lab) "vgp" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -60594,6 +60849,14 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) +"vgX" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/space, +/area/space/nearstation) "vhk" = ( /obj/structure/chair, /turf/open/floor/carpet, @@ -60607,31 +60870,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"vli" = ( -/obj/structure/table, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/glasses/meson/engine, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/obj/item/pipe_dispenser, -/obj/machinery/light, -/obj/effect/turf_decal/delivery, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/engine/engineering) -"vlC" = ( -/obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) "vlF" = ( /obj/item/coin/silver, /obj/effect/decal/cleanable/oil{ @@ -60666,20 +60904,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"voh" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"vor" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/engine/engineering) "vpz" = ( /obj/structure/girder, /turf/open/floor/plating{ @@ -60697,31 +60921,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) -"vsw" = ( -/obj/machinery/camera{ - c_tag = "Engineering Supermatter Starboard"; - dir = 8; - network = list("ss13","engine") - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) -"vsG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Research Lab Maintenance"; - req_access_txt = "0"; - req_one_access_txt = "7;29" - }, -/turf/open/floor/plating, -/area/maintenance/department/engine) "vsJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/neutral{ @@ -60755,6 +60954,13 @@ /obj/item/clothing/mask/gas, /turf/open/floor/plating, /area/maintenance/department/science) +"vvr" = ( +/obj/effect/spawner/structure/window/plasma/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/engine/engineering) "vxp" = ( /obj/machinery/door/window/eastright{ base_state = "left"; @@ -60768,17 +60974,12 @@ /obj/item/assembly/mousetrap, /turf/open/floor/engine, /area/science/explab) -"vxr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/light{ - dir = 4; - light_color = "#e8eaff" - }, -/obj/effect/turf_decal/stripes/line{ +"vyN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel, -/area/engine/engineering) +/turf/closed/wall/r_wall, +/area/crew_quarters/heads/hor) "vzz" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -60789,15 +60990,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) -"vzA" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/aft) "vzP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, @@ -60828,19 +61020,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"vBE" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1; - light_color = "#d1dfff" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) "vCC" = ( /obj/structure/cable{ icon_state = "4-8" @@ -60866,16 +61045,36 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"vKq" = ( -/obj/machinery/door/firedoor, -/obj/structure/sign/poster/official/random{ +"vIn" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) +"vIU" = ( +/obj/structure/transit_tube/horizontal, +/obj/structure/sign/departments/holy{ pixel_x = -32 }, -/obj/effect/turf_decal/tile/blue{ +/turf/open/floor/plating, +/area/hallway/secondary/entry) +"vJS" = ( +/obj/structure/closet/radiation, +/obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, /turf/open/floor/plasteel, -/area/hallway/primary/aft) +/area/engine/engineering) +"vMv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/chapel/main/monastery) "vMx" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -60885,6 +61084,19 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"vMH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) +"vMQ" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/r_wall, +/area/engine/supermatter) "vOw" = ( /obj/machinery/door/airlock/grunge{ name = "Library" @@ -60899,6 +61111,13 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/library) +"vPU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) "vRi" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -60967,16 +61186,20 @@ }, /turf/open/floor/plasteel/dark, /area/science/mixing) -"vVO" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/structure/cable/yellow{ - icon_state = "2-8" +"vYi" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/engine, -/area/engine/engineering) +/obj/machinery/door/airlock/maintenance{ + name = "Research Lab Maintenance"; + req_access_txt = "0"; + req_one_access_txt = "7;29" + }, +/turf/open/floor/plating, +/area/maintenance/department/engine) "vYN" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8; @@ -60986,22 +61209,16 @@ }, /turf/open/floor/circuit/telecomms, /area/science/xenobiology) -"wbB" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - name = "External Gas to Loop" +"waN" = ( +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 3; + name = "3maintenance loot spawner" }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/engine, -/area/engine/engineering) -"wbF" = ( -/obj/machinery/rnd/production/circuit_imprinter, -/obj/machinery/camera{ - c_tag = "Engineering Starboard Aft"; - dir = 8 +/obj/structure/rack, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, -/turf/open/floor/plasteel, -/area/engine/engineering) +/area/maintenance/department/chapel/monastery) "wcs" = ( /turf/open/floor/plasteel/dark, /area/engine/engineering) @@ -61038,24 +61255,10 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"wfG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/crew_quarters/heads/hor) "wfO" = ( /mob/living/simple_animal/hostile/retaliate/poison/snake, /turf/open/floor/plating, /area/maintenance/department/engine) -"wfP" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible, -/obj/machinery/meter, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) "wig" = ( /obj/machinery/vending/cigarette, /turf/open/floor/plating{ @@ -61070,22 +61273,14 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "wjm" = ( -/obj/structure/cable{ +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/effect/turf_decal/stripes/line{ + dir = 6 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, +/turf/open/floor/engine, /area/engine/engineering) "wkZ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ @@ -61114,6 +61309,27 @@ }, /turf/open/floor/plasteel/white, /area/science/explab) +"wlZ" = ( +/obj/machinery/light/small, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/department/chapel/monastery) +"wmA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) +"wnw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/aft) "wnJ" = ( /obj/structure/sign/warning, /turf/closed/wall, @@ -61147,6 +61363,17 @@ }, /turf/open/floor/wood, /area/lawoffice) +"wsx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/light{ + dir = 4; + light_color = "#e8eaff" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "wun" = ( /obj/structure/cable{ icon_state = "1-2" @@ -61174,6 +61401,9 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"wwK" = ( +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "wxb" = ( /obj/structure/cable{ icon_state = "4-8" @@ -61221,15 +61451,21 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) -"wDl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plasteel, -/area/engine/engineering) "wDm" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"wDH" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "engsm"; + name = "Radiation Chamber Shutters" + }, +/obj/item/tank/internals/plasma, +/turf/open/floor/plating, +/area/engine/supermatter) "wDZ" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -61257,18 +61493,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) -"wHI" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 9 - }, -/turf/open/floor/plating, -/area/engine/engineering) -"wIo" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "wIv" = ( /obj/machinery/power/apc/highcap/five_k{ dir = 8; @@ -61303,12 +61527,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/cmo) -"wLK" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "wMF" = ( /obj/effect/spawner/lootdrop/three_course_meal, /obj/effect/spawner/lootdrop/three_course_meal, @@ -61324,10 +61542,6 @@ /obj/structure/grille, /turf/open/floor/plating, /area/maintenance/department/engine) -"wMX" = ( -/obj/effect/spawner/structure/window/plasma/reinforced, -/turf/open/floor/plating, -/area/engine/supermatter) "wNq" = ( /obj/structure/cable{ icon_state = "1-4" @@ -61398,6 +61612,12 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"wSU" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/hallway/secondary/entry) "wTD" = ( /obj/structure/table/wood, /obj/item/folder/red, @@ -61440,6 +61660,16 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"wXe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/engineering/glass/critical{ + heat_proof = 1; + name = "Supermatter Chamber"; + req_access_txt = "10" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/engine, +/area/engine/supermatter) "wXu" = ( /obj/machinery/disposal/bin, /obj/structure/window/reinforced{ @@ -61457,10 +61687,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"wYK" = ( -/obj/machinery/power/supermatter_crystal/engine, -/turf/open/floor/engine, -/area/engine/supermatter) "xah" = ( /obj/structure/cable{ icon_state = "1-2" @@ -61508,18 +61734,15 @@ /obj/structure/sign/warning/vacuum/external, /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) -"xer" = ( -/obj/machinery/conveyor{ - dir = 2; - id = "garbage" - }, -/turf/open/floor/plating, -/area/maintenance/disposal) "xeB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/lawoffice) +"xgB" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/closed/wall/r_wall, +/area/engine/engineering) "xgG" = ( /obj/effect/turf_decal/stripes/line{ dir = 5 @@ -61544,12 +61767,11 @@ dir = 1 }, /area/hallway/secondary/exit/departure_lounge) -"xhI" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/engine/engineering) +"xiY" = ( +/obj/structure/lattice, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "xja" = ( /obj/machinery/light/small{ dir = 4 @@ -61597,10 +61819,34 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"xkf" = ( +/obj/effect/landmark/carpspawn, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"xkL" = ( +/obj/structure/table, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/delivery, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/engine/engineering) "xlA" = ( /obj/machinery/door/airlock/maintenance/abandoned, /turf/open/floor/plating, /area/maintenance/department/science) +"xlY" = ( +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/department/chapel/monastery) "xmp" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -61655,6 +61901,20 @@ /obj/item/broken_bottle, /turf/open/floor/plating, /area/maintenance/solars/port) +"xuW" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"xvK" = ( +/obj/structure/reflector/single/anchored{ + dir = 6 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/engine/engineering) "xvO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -61712,6 +61972,10 @@ icon_state = "panelscorched" }, /area/maintenance/department/security/brig) +"xyT" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/department/chapel/monastery) "xzp" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -61719,13 +61983,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"xzR" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) "xCV" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -61779,6 +62036,7 @@ dir = 1; light_color = "#ffc1c1" }, +/obj/effect/landmark/start/lawyer, /turf/open/floor/wood, /area/lawoffice) "xKc" = ( @@ -61809,13 +62067,6 @@ /obj/structure/disposalpipe/junction/flip, /turf/open/space/basic, /area/space/nearstation) -"xNy" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/engine, -/area/engine/engineering) "xOC" = ( /obj/machinery/door/airlock/external{ name = "Construction Zone"; @@ -61858,6 +62109,12 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"xVT" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) "xWl" = ( /obj/item/pen, /obj/item/paper_bin{ @@ -61869,6 +62126,10 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) +"xXh" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/maintenance/department/chapel/monastery) "ybX" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance, @@ -61906,6 +62167,21 @@ }, /turf/open/floor/plating, /area/maintenance/department/cargo) +"yjy" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/light{ + dir = 8; + light_color = "#e8eaff" + }, +/turf/open/floor/plasteel/dark, +/area/engine/engineering) +"ykV" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) "ymb" = ( /obj/machinery/camera{ c_tag = "Engineering Telecomms Access"; @@ -75967,7 +76243,7 @@ cfN bOw bOw bOw -bOw +bQg bOw ccu cbG @@ -76224,7 +76500,7 @@ bOw bOw bOw bOw -bOw +bQg bUC bOw cbG @@ -76476,12 +76752,12 @@ bOv bNs bNs bWh -bOw -bOw -bOw -bOw -bOw -bOw +bQg +bQg +bQg +bQg +bQg +bQg bOw bOw cbG @@ -76732,7 +77008,7 @@ bQQ bNs bNs bQe -bOw +bQg bOw bOw bOw @@ -76989,7 +77265,7 @@ bNs bNs bOw bOw -bOw +bQg bOw bOw bOw @@ -77246,7 +77522,7 @@ bOw bOw bOw bOw -bOw +bQg bOw bOw bOw @@ -77503,7 +77779,7 @@ bOw bOw bOw bOw -bOw +bQg bOw bOw bUC @@ -77520,7 +77796,7 @@ ctL cgg cfE cfE -cfp +cua cfE cuW cfE @@ -77759,8 +78035,8 @@ bOw bOw bOw bOw -bOw -bOw +bQg +bQg bOw bWV bWV @@ -78016,7 +78292,7 @@ bOw bOw bOw bOw -bOw +bQg bOw bOw bWV @@ -78273,7 +78549,7 @@ bOw bQd bOw bQd -bOw +bQg bQd bWV bWV @@ -78530,7 +78806,7 @@ bOw bQe bOw bOw -bOw +bQg bQe bWV bXJ @@ -78790,7 +79066,7 @@ bQf bQf bQf bWW -bXI +vMv bZn bZn bZn @@ -79032,10 +79308,10 @@ bGG bHL bIW bKc -bOy +cqI bMt bLn -bOy +cqI bPo bQg bQg @@ -79301,7 +79577,7 @@ bOw bQe bOw bOw -bOw +bQg bQe bWV bXJ @@ -79558,7 +79834,7 @@ bOw bQd bOw bQd -bOw +bQg bWi bWV bWV @@ -79785,7 +80061,7 @@ aaa aaa aaa aaa -aaa +btK aaa aaa aaa @@ -79815,7 +80091,7 @@ bOw bOw bOw bOw -bOw +bQg bOw bOw bWV @@ -80040,9 +80316,9 @@ aaa aaa aaa aaa -aZx -aZx -aZx +iaZ +bsl +btL aZx aaa aaa @@ -80056,11 +80332,11 @@ aaa aaa aaa aaa -aaa -bGI +irs +aqG bGE bKf -bLn +gvO bMw bNy bNw @@ -80072,7 +80348,7 @@ bOw bSm bOw bOw -bOw +bQg bOw bOw bWV @@ -80297,9 +80573,9 @@ aaa aaa aaa aaa +iaZ aZx -baJ -bon +bcX aZx aaa aaa @@ -80312,12 +80588,12 @@ aaa aaa aaa aaa -aaa -aaa -bGI +irs +irs +aqG bGE -bKg -bLn +bKf +gvO bMx bNz bHM @@ -80329,7 +80605,7 @@ bOw bOw bOw bOw -bOw +bQg bOw bOw bOw @@ -80344,7 +80620,7 @@ ccJ cdw cel ceM -cfp +cua cfE cfE chn @@ -80555,8 +80831,8 @@ aaa jzz aZx jzz -baK -bon +bsl +btM aZx aaa aaa @@ -80568,17 +80844,17 @@ aaa aaa aaa aaa -aaa -aaa -aaa -bGI -bHM -bGE +irs +irs +irs +aqG bGE +jOX +beT bHM bNA bHM -abI +bSZ bQi bQR bNs @@ -80586,7 +80862,7 @@ bNs bOw bOw bOw -bOw +bQg bOw bOw bOw @@ -80611,8 +80887,8 @@ cvc cho cvk cdx -cvc -cvM +euN +csS cfm cwe fWv @@ -80818,23 +81094,23 @@ aZx aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -bIY -bIY -bLs -bMy +mZE +bVp +bVp +bVp +bVp +bVp +gLn +sTg +gLn +gLn +eOA +aZx +llS +kYR +aZx bNB -bMy +hRQ abI aby abI @@ -80843,15 +81119,15 @@ bNs bNs bNs bOw -bOw -bOw -bOw -bOw -bOw -bOw -bOw -bOw -bOw +bQg +bQg +bQg +bQg +bQg +bQg +bQg +bQg +bQg bQg cbR bXJ @@ -80869,7 +81145,7 @@ ciF cuQ cfm cfm -cfm +fwo cfm cwe ckp @@ -81075,29 +81351,29 @@ aZx aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aby -aby -aaa -aaa +bGI +aZx +aZx +aZx +aZx +aZx +aZx +aZx +aZx +aZx +aZx +aZx +llS +sho +aZx amC aaa aht aby aby abI -bSn -bSZ +mfg +sRH cqS bNs bQe @@ -81108,8 +81384,8 @@ bQg bQg bQg bOw -bOw -ccL +bQe +bQg bWV csT cen @@ -81126,7 +81402,7 @@ chq ciX cfm cfN -cfN +cwA cfN cwe cwe @@ -81332,21 +81608,21 @@ aZx aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bGI +aZx +jkm +tpX +iHI +iHI +iHI +tpX +iHI +hWa +wwK +wSU +llS +wmA +aZx amB aht aht @@ -81355,7 +81631,7 @@ aaa abI abI abI -abI +sRH bNs bNs bNs @@ -81366,7 +81642,7 @@ bXL bNs bOw bOw -bOw +bQg bWV csU bWV @@ -81383,7 +81659,7 @@ chr chL cfm cfN -cfN +xyT cfN cfN cfN @@ -81589,21 +81865,21 @@ aZx aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bGI +aZx +oto +wwK +wwK +wwK +uAL +vbQ +vbQ +vbQ +vbQ +vbQ +vbQ +pga +aZx amC aaa aht @@ -81613,7 +81889,7 @@ aaa aaa abI aaa -aaa +sOQ bQR bNs bNs @@ -81623,7 +81899,7 @@ bXM bNs bOw bOw -bOw +bQg bOw ccM cdD @@ -81640,7 +81916,7 @@ chs ciY cfm cfN -cfN +cwA cfN cfN cfN @@ -81846,21 +82122,21 @@ aZx aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bGI +aZx +oto +wwK +aZx +aZx +aZx +aZx +aZx +aZx +aZx +aZx +aZx +aZx +aZx amB aht aht @@ -81880,12 +82156,12 @@ bXN bNs bOw bOw -bOw -bOw -bOw -bQe -bOw -bOw +bQg +bQg +bQg +bQg +bQg +bQg cfL cfm cfm @@ -81897,7 +82173,7 @@ cht cfm cfm cfN -cfN +cwA cfN cfN cfN @@ -82103,21 +82379,21 @@ aZx aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +aqG +aZx +oto +wwK +aZx +irs +irs +irs +irs +irs +irs +irs +irs +irs +irs amD aaa aht @@ -82140,10 +82416,10 @@ bOw bUC bOw bOw -bOw +bQe bOw bUC -cfM +bQg cfm cgO chu @@ -82154,7 +82430,7 @@ chu ciZ cfm cfN -cfN +cwA cfN cfN cfN @@ -82359,12 +82635,12 @@ bon aZx aaa aaa -btK -aaa -aaa -aaa -aaa -aaa +irs +aqG +aZx +oto +wwK +aZx bBV bDf bDf @@ -82411,8 +82687,8 @@ cfm cfm cfm cfN -cfN -cfN +cwA +cjm cfN cfN cfN @@ -82615,16 +82891,16 @@ bnp bon aZx aZx -bsl -btL aZx -aaa -aaa -aaa +aZx +aZx +aZx +oto +kvx bAI -bBW +qbV abI -aaa +irs abI aaa bva @@ -82650,11 +82926,11 @@ abI ahi bSZ crO -crO -crO -crO -crO -crO +arF +arF +arF +arF +arF crO crO crO @@ -82668,8 +82944,8 @@ cfN cfN cfN cfN -cfN -cfN +wlZ +cjm cfN cfN aaa @@ -82802,7 +83078,7 @@ aeU afo afG aeU -eSB +gHy agy agL agZ @@ -82872,12 +83148,12 @@ bnp baK bbR bbR +bbR +bbR +bbR aZx -bcX -aZx -aYG -aZx -aYG +rHv +saW bAJ bBX bBX @@ -82925,9 +83201,9 @@ cfN cfN cfN cfN -cfN -cfN -aaa +uaa +cjm +irs aaa aaa aaa @@ -83129,13 +83405,13 @@ bnq baM baK baK -bsl -btM +baK +baK +baK aZx -aYG bxY bzz -bAK +vIU bBX bDg bEj @@ -83169,23 +83445,23 @@ caZ cbS ccN bIZ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +cjm +cjm +cjm +cjm +cjm +cjm +cjm +cjm +cjm cfN cfN cfN cfN -aaa -aaa -aaa -aaa +uBu +cjm +cjm +irs aaa aaa aaa @@ -83316,7 +83592,7 @@ lGp aeU afI aeU -jXF +dUk agy agN agY @@ -83425,24 +83701,24 @@ bIZ cba cbT bDi -bIZ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +cQZ +cwA +cwA +cwA +cwA +lqo +cwA +cwA +cwA +cwA +uaa +ovE +uaa +uBu +xlY +ezo +cjm +aht aaa aaa aaa @@ -83683,23 +83959,23 @@ cbb bDi ccO bIZ -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +cjm +cjm +xXh +xXh +cjm +cjm +cjm +xXh +xXh +cjm +cjm +cjm +cjm +waN +dzA +cjm +aht aaa aaa aaa @@ -83940,23 +84216,23 @@ bva bNK bva bva -aaa -cFB -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +irs +xkf +dRs +dRs +aht +aht +mau +fon +fon +aht +aht +aht +cjm +cjm +cjm +cjm +aht aaa aaa aaa @@ -84209,11 +84485,11 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa +dRs +dRs +irs +irs +xiY aaa aaa aaa @@ -88820,9 +89096,9 @@ eQN tcY cam cam -sjC +cdI bXk -mci +eVW cbX ceq mhl @@ -89077,7 +89353,7 @@ bpL fQf cbW cbd -cdI +gaQ cri cbX cbX @@ -90615,9 +90891,9 @@ bXh bXZ bYK bZz -nAY +sAF cbd -nRM +fGt cam cdM bXq @@ -90627,8 +90903,8 @@ cfQ bXk qWG bXk -paU -dSp +tAv +pPu cdm aaa aht @@ -90880,22 +91156,22 @@ qtO bXk bXk bXk -svA -mjK -mjK -mjK -wHI -eyj -eyj +fbu +nQf +nQf +nQf +cgt +oge +oge bXk -shH -shH -shH -shH -shH -shH -shH -shH +uER +uER +uER +uER +uER +uER +uER +uER fon fon mau @@ -91127,23 +91403,23 @@ bVH bWr bXj qGZ -bYQ +bYM bZD caj cbf ccb cah cdO -ioF +jOw ceX -qOS +ocy cfS fFv -fmL -gXZ -kmd -lXJ -lXJ +yjy +nIq +mAi +abD +abD bXk aaa aht @@ -91396,10 +91672,10 @@ mwG nAs cfT wcs -ggg +upg qbp qbp -gEo +hUi dMG bXk aaa @@ -91643,14 +91919,14 @@ bXk bYc bYO bZA -xhI +dlI cbh cbh cbh cbh cbh -hjD -vor +nNn +mvA cfU tIS iCs @@ -91900,21 +92176,21 @@ bXk bYd bYP bZF -rTd -wDl -vxr -irM -irM +uZs +lDW +wsx +uwT +uwT qFu cet ulY cfV cgu cgU -izm +kNK chw -eyj -jzE +oge +eMz bXk bXk bXk @@ -92155,31 +92431,31 @@ bVK bWu bXk bYe -bYQ +bYM bZA can cbi ccc -eyj +oge cdR -tQT +vvr bXk bXk -sWW +oBY cgv -lXb +ndf cgv uaP cgv -ukp +ikm cgV cgv cgv -gQf +gkN bXk aht fon -shH +uER fon aaa aaa @@ -92416,27 +92692,27 @@ bYR bZA can cbj -eyj +oge cbX wcs iyJ cfa -eyj +oge twv -hoS +pJx sWj dnS -hSC -jTU -fZK -pgH -pgH +rEt +mZK +nqW +pBs +pBs uRk ciG bXk aaa fon -shH +uER fon aaa aaa @@ -92672,7 +92948,7 @@ bYf bYS bZA can -qpS +eue ccd ccX ccX @@ -92680,20 +92956,20 @@ ceu cbX cfu tlN -ncm +pIk cCI uoq -hQy +wDH chA meF -oKv -wbB -xzR +oTD +uWe +dHF hQC bXk aht fon -shH +uER fon aht aaa @@ -92894,7 +93170,7 @@ bmz bnG boN bpW -dHZ +brk bsK buk bvs @@ -92930,27 +93206,27 @@ bYT bZB caq cbk -eyj +oge ccY cdT ccY cbX -eyj -vlC -iej -qeY +oge +jQn +sQV +dFF fyO fyO fyO -qeY -oKv -wbB -wfP +dFF +oTD +uWe +dGd hQC bXk aaa fon -shH +uER fon aaa aaa @@ -93186,28 +93462,28 @@ bYh bYU bZE car -mgz -eyj +sdZ +oge cbX wcs wcs cfd bXk tlN -ncm -lUO +pIk +obl mpd -hKp -hKp +peb +peb cit -qeY -puw -vBE +dFF +vMQ +gih hQC bXk aht fon -shH +uER fon aaa aaa @@ -93408,7 +93684,7 @@ bkh bkh boN bpW -brk +dVt bsM bum bvt @@ -93449,22 +93725,22 @@ cda wcs wcs wcs -eyj -eAH -lnr -qeY -fBZ -fBZ -fBZ +oge +oFi +wjm +dFF +uQa +uQa +uQa cgY ciI -tdL -dHr +mZV +obG hQC bXk aaa fon -shH +uER fon aaa aaa @@ -93645,7 +93921,7 @@ aSS aUg aVf aWi -mjn +eyT aYe aZb bag @@ -93668,8 +93944,8 @@ bpV brm bsN bun -gGA -bwW +mcf +nnf byA bAi bpY @@ -93698,30 +93974,30 @@ bWz bVN bYf bYW -oWu +hDy cam -vli +cxj ckJ cey cdW wcs cdW -eyj -kTR -mEu -wMX -dFJ -wYK -dFJ -uzh -nUQ -fym -hon +oge +vPU +eux +kDI +fWE +nyN +fWE +wXe +iTE +mlS +jTc hQC bXk aht fon -shH +uER fon aaa aaa @@ -93925,12 +94201,12 @@ bpY bpY bpY bpY -pxD -jZG +gGA +bwW bpY bpY bpY -vsG +vYi bva bva bva @@ -93957,28 +94233,28 @@ bUT bYX bZA cam -lfx +xkL bXk -pCo +xvK wcs wcs -tlV -eyj -qkM -miw -qeY +kBe +oge +mlx +gUS +dFF prQ prQ prQ -dgj -psd -fxC +nPW +mvY +sfr dZj hQC bXk aaa fon -shH +uER fon aaa aaa @@ -94178,17 +94454,17 @@ bls aBI aBI bmB -vKq -nTr -gDR -vzA +tcC +qWB +iHe +qbm bvu -hIZ -tqO -mqp -cKV -iwe -qTV +wnw +cep +ePS +nhW +rGz +rPd xDj blt jCv @@ -94211,31 +94487,31 @@ bVO bWA mCe bYj -bYQ +bYM bZA cam -mgz -eyj +sdZ +oge cbX wcs wcs -dEy +hxh bXk tlN -ncm -puw +pIk +vMQ fyF cZt cZt -fjD -qeY -iTF -slJ +hUf +dFF +mLc +lmv hQC bXk aht fon -shH +uER fon aaa aaa @@ -94443,11 +94719,11 @@ gkS tTl tTl tTl -koz +qUe dgg phJ phJ -lJI +lCY bAk bIt bJB @@ -94468,31 +94744,31 @@ bVP bWB mCe bYk -wjm +bYQ bZF cbm -mgz -eyj -oHa -oHa +sdZ +oge +rwf +rwf eWi cbX -eyj -vlC +oge +jQn cgx -qeY +dFF fyO fyO fyO -qeY +dFF cBS cjt -kaR +mCP hQC bXk aaa fon -shH +uER fon aht aaa @@ -94692,19 +94968,19 @@ blu aDZ aDZ bjm -mhn +nKF cqi cqi cqi cqi cqi -imE -kYM -mfC +erV +rMt +ksC fdQ bmD bmD -eRp +jrb bAl bIu bJC @@ -94728,28 +95004,28 @@ bYl bYO bZA cam -lrM +lCR ccd -cAQ -cAQ -cLw +mlb +mlb +mbD cbX cfu jBn -oxw +ptk meF chA chA woh cCI cBS -iLh +rwt liR hQC bXk aht fon -shH +uER fon aaa aaa @@ -94952,18 +95228,18 @@ bKM cCl cCl cCl -tJr -tzH -tzH +vfn +ufx +ufx byD bAm dhz -uxP +nkk bDA bEQ bGa -bHp -sYQ +bHg +mVj bJD bBo bBo @@ -94986,27 +95262,27 @@ bYY bZA cam cbn -eyj +oge cbX wcs cfP cff -eyj +oge cfX -vVO -iop +kvu +gHp kWQ -oXq -qpd -tkL -tOD -tOD -ikO +iSi +ona +kec +ngg +ngg +cUT hQC bXk aaa fon -shH +uER fon aaa aaa @@ -95207,14 +95483,14 @@ bmC cqi boP bqb -pYw +brp gFo cSK duF -bxa +oxt byE bBp -wfG +vyN bBp bBp bBp @@ -95244,22 +95520,22 @@ bZG cax cbo ccc -eyj +oge cdR -oJr +uDr bXq bXq cfY -xNy -smv -xNy -hGB -hSt +hrx +sHX +hrx +hXm +jjA civ civ -vsw -qRl -oKJ +jtv +ppi +oyE bXk aht fon @@ -95501,19 +95777,19 @@ bZF cal cbp cci -kTj -kTj -qhE -loz -frj -lRX -eyj -uIB -eyj -eyj -uIB -eyj -eyj +dPZ +dPZ +vMH +vJS +vIn +ttX +oge +dGp +oge +oge +dGp +oge +oge bXk bXk bXk @@ -95753,24 +96029,24 @@ bVU bWG bXq bYo -hXK +tzh bZI -hXK +tzh cbq cbd cam cam cam -haA -aKm -upc -wIo -hyh -upc -voh -pBJ -wIo -voh +mCU +cOA +gfh +vdb +rAZ +gfh +tMA +puO +vdb +tMA cdm aaa aaa @@ -96011,23 +96287,23 @@ bWH bXk bTE bZc -ueX +nif cCU bZJ -wbF +mdi cCV ceb -epV -qLI -aKm -eiV -upc -dsz -eiV -eiV -uaO -voh -eiV +qPh +sKw +cOA +sQG +gfh +eqM +sQG +sQG +dhu +tMA +sQG cdm aaa aaa @@ -96267,29 +96543,29 @@ bJN bJN bJN bJN -frj -pYh -pYh -pYh -pYh -pYh -pYh -pYh -pYh -hUw -nqu -nsJ -gBb -nsJ -nsJ -gBb -nsJ -nsJ -dsz +vIn +xgB +xgB +xgB +xgB +xgB +xgB +xgB +xgB +fml +mfx +hJO +dAa +hJO +hJO +dAa +hJO +hJO +eqM aht aht fon -shH +uER fon aaa aaa @@ -96524,7 +96800,7 @@ bVV bWI bXr bKQ -udl +vgX bZK abI abI @@ -96533,20 +96809,20 @@ abI aaa aaa aaa -uaO -wIo -nsJ -gBb -nsJ -nsJ -gBb -nsJ -nsJ -hyh +dhu +vdb +hJO +dAa +hJO +hJO +dAa +hJO +hJO +rAZ aaa aaa fon -shH +uER fon aaa aaa @@ -96781,7 +97057,7 @@ bQI bWJ bXs bJN -cui +lxh bJP bJP bJP @@ -96790,20 +97066,20 @@ bJP abI abI aht -pBJ -wIo -nsJ -gBb -nsJ -nsJ -gBb -nsJ -nsJ -dsz +puO +vdb +hJO +dAa +hJO +hJO +dAa +hJO +hJO +eqM aht aht fon -shH +uER fon aaa aaa @@ -97018,7 +97294,7 @@ bCK bDG bEW bAt -bHg +aIA cqw cqD bKO @@ -97038,7 +97314,7 @@ bMf fuR bXt bYp -eAZ +jPC bZL caz cbs @@ -97047,20 +97323,20 @@ bJP aaa aaa aaa -uaO -wIo -nsJ -gBb -nsJ -nsJ -gBb -nsJ -nsJ -hyh +dhu +vdb +hJO +dAa +hJO +hJO +dAa +hJO +hJO +rAZ aaa aaa fon -shH +uER fon aaa aaa @@ -97295,7 +97571,7 @@ bVW bWL bXu bLW -cui +lxh bMi caA cbt @@ -97304,20 +97580,20 @@ bJP aaa aaa aaa -pBJ -swg -hyh -pBJ -hyh -pBJ -hyh -pBJ -hyh +puO +xuW +rAZ +puO +rAZ +puO +rAZ +puO +rAZ cdm aht aht fon -shH +uER fon aaa aaa @@ -97552,7 +97828,7 @@ bVX bWM bXv bWc -poP +tmi bZL caB cbs @@ -97789,7 +98065,7 @@ bAt bAt bAu bAu -bHp +bHg cqx bJJ bKQ @@ -97804,12 +98080,12 @@ bQI bQI bTM bUs -ljG -hjk -pmB +cAp +ykV +ufr bXw -dJk -tbw +iSL +lQy bJP bJP bJP @@ -98061,7 +98337,7 @@ bMf bMf bTN bUt -wLK +flP bOk bWK bXt @@ -98317,8 +98593,8 @@ bRx bQJ bPQ bTO -ljG -lhP +cAp +xVT bOk bWL bXx @@ -98332,21 +98608,21 @@ bJP aaa aaa fon -shH -shH -shH -shH -shH -shH -shH -shH -shH -shH +uER +uER +uER +uER +uER +uER +uER +uER +uER +uER fon aaa aht -shH -shH +uER +uER fon aaa aaa @@ -98574,7 +98850,7 @@ bPQ bPQ bPQ bTP -wLK +flP bVh bVY bWM @@ -98602,7 +98878,7 @@ fon fon aaa aht -shH +uER fon fon aaa @@ -98831,7 +99107,7 @@ bQK bQK bPQ bTQ -wLK +flP bKX bOk bWN @@ -99088,7 +99364,7 @@ bRy bSf bSR bTM -wLK +flP bKX bVZ bWO @@ -99272,13 +99548,13 @@ ale asb coe apX -aab +ave awn apX -aac +ayj azr apX -aae +aBM aDb apX oFo @@ -99345,7 +99621,7 @@ bRz bMf bSS bTR -tDE +nYe bKX bWa bMf @@ -99802,7 +100078,7 @@ aHn aIi aJi aKe -klb +kVA aMi aNJ fwl @@ -100840,7 +101116,7 @@ lAs eeQ aUs aLf -eex +lfZ aLf aLf aUl @@ -101105,7 +101381,7 @@ aTm bbE bbE bbE -dps +bbE bbE bbE aEj @@ -101364,7 +101640,7 @@ bcA bdF beJ bfB -bbE +gaJ aZv aUC biz @@ -102101,7 +102377,7 @@ apX apX avl fIu -epj +rTZ aIh azA dbi @@ -102635,7 +102911,7 @@ aNP aPb aNO aNP -tLP +cRJ aTq aSk aTm @@ -107513,7 +107789,7 @@ aaa aaa aLn aNT -xer +rax aQo aPg aRu @@ -107771,7 +108047,7 @@ aaa aLm aLm aNU -aNV +hCg dqY aRv sZh @@ -108027,8 +108303,8 @@ aaa aaa aLm aME -eFG aNV +hCg dqY aRw sqQ @@ -108284,8 +108560,8 @@ aaa aaa aLo aMF -aNV -aNV +aNW +hCg cvf aQn sqQ @@ -108542,7 +108818,7 @@ aaa aLo aMG aNX -aNV +hCg rax aRy aSn diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 7a591a48fa..3bdf64ac27 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -41,7 +41,7 @@ /area/engine/gravity_generator) "am" = ( /obj/machinery/atmospherics/components/unary/tank/air, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/atmos) "an" = ( /obj/structure/lattice/catwalk, @@ -124,6 +124,8 @@ dir = 5 }, /obj/structure/cable, +/obj/machinery/power/port_gen/pacman/super, +/obj/item/stack/sheet/mineral/uranium, /turf/open/floor/plasteel, /area/engine/gravity_generator) "au" = ( @@ -351,7 +353,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel, /area/engine/gravity_generator) "aY" = ( /obj/machinery/light{ @@ -431,7 +433,7 @@ icon_state = "1-2" }, /obj/machinery/door/airlock, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/atmos) "bl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -447,9 +449,9 @@ /turf/open/floor/plating, /area/engine/atmos) "bo" = ( -/obj/structure/table, -/obj/item/screwdriver/power, -/obj/item/wirecutters/power, +/obj/structure/closet/secure_closet/atmospherics{ + locked = 0 + }, /turf/open/floor/plasteel, /area/engine/engineering) "bp" = ( @@ -508,7 +510,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "by" = ( /turf/closed/wall/r_wall, @@ -658,13 +660,13 @@ /obj/structure/cable{ icon_state = "0-2" }, -/mob/living/carbon/human, /obj/effect/turf_decal/tile/blue{ dir = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/mob/living/carbon/human, /turf/open/floor/plasteel/white/corner{ dir = 1 }, @@ -673,20 +675,20 @@ /obj/machinery/light{ dir = 1 }, -/mob/living/carbon/human, /obj/effect/turf_decal/tile/blue{ dir = 4 }, +/mob/living/carbon/human, /turf/open/floor/plasteel/white/corner{ dir = 1 }, /area/medical/medbay) "bW" = ( /obj/machinery/camera/autoname, -/mob/living/carbon/human, /obj/effect/turf_decal/tile/blue{ dir = 4 }, +/mob/living/carbon/human, /turf/open/floor/plasteel/white/corner{ dir = 1 }, @@ -730,7 +732,7 @@ icon_state = "4-8" }, /obj/machinery/door/airlock, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/bridge) "ce" = ( /obj/structure/cable{ @@ -895,7 +897,7 @@ /area/medical/medbay) "cz" = ( /obj/structure/fans/tiny, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/medical/medbay) "cA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1280,7 +1282,7 @@ /area/storage/primary) "dH" = ( /obj/machinery/door/airlock, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/maintenance/department/bridge) "dI" = ( /obj/effect/landmark/start, @@ -1309,6 +1311,8 @@ /area/construction) "dN" = ( /obj/structure/table, +/obj/item/warpwhistle, +/obj/item/voodoo, /turf/open/floor/plasteel, /area/storage/primary) "dO" = ( @@ -1337,7 +1341,7 @@ "dS" = ( /obj/machinery/atmospherics/components/unary/tank/air, /obj/machinery/camera/autoname, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/atmos) "dT" = ( /obj/machinery/camera/autoname, @@ -1429,7 +1433,7 @@ name = "Mining Dock Airlock" }, /obj/structure/fans/tiny, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/quartermaster/miningoffice) "ef" = ( /obj/machinery/door/airlock, @@ -1484,7 +1488,7 @@ name = "Arrival Airlock" }, /obj/structure/fans/tiny, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/hallway/secondary/entry) "ep" = ( /obj/structure/cable{ @@ -1543,7 +1547,7 @@ name = "Escape Pod One" }, /obj/structure/fans/tiny, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/hallway/secondary/entry) "ey" = ( /obj/machinery/status_display/supply, @@ -1576,6 +1580,9 @@ icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "eC" = ( @@ -1659,6 +1666,9 @@ /area/storage/primary) "eL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "eM" = ( @@ -1800,6 +1810,9 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) "fe" = ( @@ -1822,6 +1835,7 @@ dir = 8 }, /obj/effect/turf_decal/bot, +/obj/item/export_scanner, /turf/open/floor/plasteel, /area/quartermaster/storage) "ff" = ( @@ -1911,6 +1925,7 @@ /obj/machinery/computer/cargo/express{ dir = 4 }, +/obj/item/disk/cargo/bluespace_pod, /turf/open/floor/plasteel, /area/quartermaster/storage) "fs" = ( @@ -1918,7 +1933,7 @@ name = "Transport Airlock" }, /obj/structure/fans/tiny, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/hallway/secondary/entry) "ft" = ( /obj/machinery/door/airlock, @@ -1928,7 +1943,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/hallway/primary/central) "fu" = ( /obj/structure/cable{ @@ -2135,7 +2150,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/storage/primary) "fO" = ( /turf/open/floor/plasteel, @@ -2236,12 +2251,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"fZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/entry) "ga" = ( /turf/closed/wall/r_wall, /area/hallway/secondary/exit/departure_lounge) @@ -2256,7 +2265,7 @@ name = "Auxiliary Airlock" }, /obj/structure/fans/tiny, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/hallway/secondary/entry) "gd" = ( /obj/effect/spawner/structure/window/reinforced, @@ -2513,6 +2522,26 @@ /obj/item/paper/guides/jobs/security/labor_camp, /turf/open/floor/plasteel, /area/security/brig) +"gM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/space/basic, +/turf/open/floor/carpet/blackred, +/area/crew_quarters/bar) +"gR" = ( +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 25 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "gY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -2539,6 +2568,15 @@ }, /turf/open/floor/plasteel, /area/science) +"jt" = ( +/obj/machinery/smartfridge, +/turf/open/floor/grass, +/area/hydroponics) +"jw" = ( +/obj/machinery/power/rtg/abductor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/space/nearstation) "jE" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -2550,6 +2588,26 @@ /obj/item/melee/transforming/energy/axe, /turf/open/floor/plasteel, /area/storage/primary) +"kf" = ( +/obj/machinery/vending/hydroseeds, +/turf/open/floor/grass, +/area/hydroponics) +"kk" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/space, +/area/space/nearstation) "kn" = ( /obj/machinery/light{ dir = 1 @@ -2559,6 +2617,14 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"kG" = ( +/obj/machinery/vending/hydronutrients, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/grass, +/area/hydroponics) "kQ" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -2575,6 +2641,10 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"kT" = ( +/obj/machinery/light, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) "lg" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2590,6 +2660,14 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"mI" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/grass, +/area/hydroponics) +"nb" = ( +/obj/structure/filingcabinet/chestdrawer/wheeled, +/turf/open/floor/plasteel, +/area/quartermaster/storage) "ny" = ( /obj/structure/table, /obj/item/storage/toolbox/syndicate, @@ -2597,7 +2675,7 @@ /area/storage/primary) "ou" = ( /obj/machinery/airalarm/directional/west, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/atmos) "oV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2610,12 +2688,20 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, /area/science) +"pF" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/reagentgrinder/constructed, +/obj/structure/table/reinforced, +/turf/open/floor/grass, +/area/hydroponics) "pI" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, /obj/machinery/door/airlock/external/glass, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/medical/medbay) "pQ" = ( /obj/structure/cable{ @@ -2625,7 +2711,7 @@ /area/medical/chemistry) "qb" = ( /obj/machinery/door/airlock, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/atmos) "qn" = ( /obj/structure/cable{ @@ -2633,11 +2719,55 @@ }, /turf/open/floor/plating, /area/maintenance/department/bridge) +"qZ" = ( +/obj/structure/lattice, +/obj/structure/lattice/catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/space, +/area/space/nearstation) +"rN" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/cafeteria) +"sD" = ( +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/closet/secure_closet/warden{ + locked = 0 + }, +/turf/open/floor/plasteel, +/area/bridge) "sE" = ( /obj/machinery/power/rtg/advanced, /obj/structure/cable, /turf/open/floor/plating/airless, /area/space/nearstation) +"sN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"sP" = ( +/obj/structure/table/reinforced, +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"up" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/cafeteria) "ut" = ( /obj/structure/closet/secure_closet/atmospherics{ locked = 0 @@ -2645,15 +2775,40 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/atmos) "vm" = ( /turf/closed/wall/r_wall, /area/maintenance/aft) +"vs" = ( +/obj/machinery/door/airlock, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) "vv" = ( /obj/machinery/door/airlock, /turf/open/floor/plating, /area/storage/primary) +"vG" = ( +/obj/machinery/biogenerator, +/turf/open/floor/grass, +/area/hydroponics) +"vH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"vN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/space/basic, +/turf/open/floor/carpet/blackred, +/area/crew_quarters/bar) "vP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -2676,6 +2831,10 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"wf" = ( +/turf/open/space/basic, +/turf/open/floor/carpet/blackred, +/area/crew_quarters/bar) "wS" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -2685,6 +2844,48 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"wT" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"wX" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/space/basic, +/turf/open/floor/carpet/blackred, +/area/crew_quarters/bar) +"xh" = ( +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/grass, +/area/hydroponics) +"xj" = ( +/turf/open/floor/plasteel, +/area/hydroponics) +"yl" = ( +/obj/structure/chair/stool/bar, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/space/basic, +/turf/open/floor/carpet/blackred, +/area/crew_quarters/bar) +"yt" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/bar) +"yM" = ( +/obj/machinery/vending/wallmed, +/turf/closed/wall/r_wall, +/area/hallway/secondary/entry) +"yO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/cafeteria) "zo" = ( /obj/machinery/power/apc/auto_name/south, /obj/structure/cable{ @@ -2732,6 +2933,10 @@ "Ce" = ( /turf/open/floor/plasteel, /area/medical/chemistry) +"Cr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/crew_quarters/cafeteria) "Ct" = ( /obj/structure/closet/syndicate/resources/everything, /turf/open/floor/plasteel, @@ -2743,6 +2948,30 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/medical/chemistry) +"Dh" = ( +/obj/structure/table/reinforced, +/obj/machinery/chem_dispenser/drinks/fullupgrade, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"DH" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/hydroponics) +"DJ" = ( +/obj/structure/kitchenspike, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/cafeteria) +"Em" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) "EI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -2751,6 +2980,9 @@ /obj/effect/turf_decal/tile/blue{ dir = 8 }, +/obj/structure/closet/secure_closet/quartermaster{ + locked = 0 + }, /turf/open/floor/plasteel, /area/bridge) "ES" = ( @@ -2762,6 +2994,37 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"Fg" = ( +/turf/open/floor/plasteel, +/area/engine/atmos) +"Fy" = ( +/obj/machinery/seed_extractor, +/turf/open/floor/grass, +/area/hydroponics) +"Ga" = ( +/obj/machinery/vending/boozeomat/all_access, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"Gc" = ( +/obj/structure/closet/secure_closet/miner/unlocked, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"Go" = ( +/obj/structure/closet/wardrobe/cargotech, +/turf/open/floor/plasteel, +/area/quartermaster/storage) +"Hn" = ( +/obj/structure/beebox, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/honey_frame, +/obj/item/queen_bee/bought, +/turf/open/floor/grass, +/area/hydroponics) "If" = ( /obj/machinery/rnd/production/techfab/department, /turf/open/floor/plasteel, @@ -2776,12 +3039,35 @@ }, /turf/open/floor/plasteel, /area/bridge) +"IB" = ( +/obj/structure/chair/stool/bar, +/turf/open/space/basic, +/turf/open/floor/carpet/blackred, +/area/crew_quarters/bar) "JF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, /turf/open/floor/plasteel, /area/medical/chemistry) +"JJ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) +"JV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) "Kx" = ( /obj/structure/table, /obj/item/analyzer, @@ -2789,10 +3075,55 @@ /obj/machinery/light, /turf/open/floor/plating, /area/engine/atmos) +"Lg" = ( +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock" + }, +/obj/structure/fans/tiny, +/turf/open/floor/plasteel, +/area/security/brig) +"Lo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/space/basic, +/turf/open/floor/carpet/blackred, +/area/crew_quarters/bar) "Ly" = ( /obj/machinery/chem_dispenser/chem_synthesizer, /turf/open/floor/plasteel/dark, /area/medical/chemistry) +"Mk" = ( +/obj/structure/table, +/obj/item/book_of_babel, +/obj/item/book/granter/action/origami, +/obj/item/book/granter/action/drink_fling, +/turf/open/floor/plasteel, +/area/storage/primary) +"MH" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 25 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/bar) +"MQ" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/space/basic, +/turf/open/floor/carpet/blackred, +/area/crew_quarters/bar) +"MS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "MY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/cable{ @@ -2800,6 +3131,27 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"Nw" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2"; + pixel_y = 1 + }, +/obj/machinery/power/apc{ + dir = 1; + pixel_y = 25 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/cafeteria) +"NC" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/cafeteria) +"NL" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/mining, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/cafeteria) "NZ" = ( /obj/machinery/rnd/production/protolathe/department, /turf/open/floor/plasteel, @@ -2808,16 +3160,26 @@ /obj/item/disk/tech_disk/debug, /turf/open/floor/plasteel, /area/science) +"PD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/cafeteria) "PI" = ( /obj/structure/fans/tiny/invisible, /turf/open/space/basic, /area/space) +"PV" = ( +/obj/machinery/vending/dinnerware, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/cafeteria) "Qt" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 }, /obj/machinery/door/airlock/external/glass, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/medical/medbay) "Rb" = ( /obj/effect/spawner/structure/window/reinforced, @@ -2830,6 +3192,9 @@ }, /turf/open/floor/plating/airless, /area/space/nearstation) +"Si" = ( +/turf/open/floor/plasteel, +/area/crew_quarters/bar) "Sj" = ( /obj/structure/table/optable, /obj/effect/turf_decal/tile/blue{ @@ -2837,9 +3202,37 @@ }, /turf/open/floor/plasteel/white/corner, /area/medical/medbay) +"Sv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/plantgenes/seedvault, +/turf/open/floor/grass, +/area/hydroponics) +"SC" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/cafeteria) +"SF" = ( +/obj/machinery/chem_dispenser/mutagensaltpeter, +/obj/item/reagent_containers/glass/beaker/bluespace, +/obj/item/reagent_containers/glass/beaker/bluespace, +/obj/item/reagent_containers/glass/beaker/bluespace, +/turf/open/floor/grass, +/area/hydroponics) +"Tp" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/rtg/abductor, +/turf/open/floor/plating/airless, +/area/space/nearstation) "Tt" = ( /turf/open/floor/plating, /area/maintenance/aft) +"TZ" = ( +/turf/closed/wall/r_wall, +/area/crew_quarters/bar) "Ut" = ( /obj/structure/closet/secure_closet/medical3{ locked = 0 @@ -2911,7 +3304,7 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/atmos) "Yy" = ( /obj/machinery/light{ @@ -2924,10 +3317,26 @@ }, /turf/open/floor/plasteel, /area/science) +"YB" = ( +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/cafeteria) "ZD" = ( /obj/machinery/suit_storage_unit/ce, /turf/open/floor/plasteel, /area/engine/atmos) +"ZO" = ( +/turf/closed/wall/r_wall, +/area/hydroponics) +"ZR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/space/basic, +/turf/open/floor/carpet/blackred, +/area/crew_quarters/bar) (1,1,1) = {" aa @@ -5368,13 +5777,13 @@ en ek eh dY -aa -aa -aa -aa -aa -aa -aa +DH +DH +DH +DH +DH +DH +ZO aa aa aa @@ -5460,13 +5869,13 @@ en ek eh en -aa -aa -aa -aa -aa -aa -aa +Hn +mI +mI +mI +mI +xh +DH aa aa aa @@ -5552,13 +5961,13 @@ en ek eh dY -aa -aa -aa -aa -aa -aa -aa +gR +JJ +xj +xj +xj +xj +DH aa aa aa @@ -5644,13 +6053,13 @@ dY gC eh dY -aa -aa -aa -aa -aa -aa -aa +pF +MS +vG +SF +xj +kf +DH aa aa aa @@ -5736,13 +6145,13 @@ en ek eh dY -aa -aa -aa -aa -aa -aa -aa +Sv +MS +Fy +jt +xj +kG +ZO aa aa aa @@ -5801,7 +6210,7 @@ di bw ag bw -di +Lg bw ag ag @@ -5827,14 +6236,14 @@ dY dY ek eh -dY -aa -aa -aa -aa -aa -aa -aa +yM +vH +sN +Si +Si +Si +kT +TZ aa aa aa @@ -5920,13 +6329,13 @@ eh ek eh dY -aa -aa -aa -aa -aa -aa -aa +vH +vN +wf +wf +wf +Si +yt aa aa aa @@ -6009,16 +6418,16 @@ eL eL eL eL -fZ -eh -dY -aa -aa -aa -aa -aa -aa -aa +fd +eL +vs +JV +ZR +MQ +Lo +gM +Si +yt aa aa aa @@ -6104,13 +6513,13 @@ eh eh eh ge -aa -aa -aa -aa -aa -aa -aa +MH +IB +yl +wX +IB +Si +yt aa aa aa @@ -6196,13 +6605,13 @@ fI dY dY ge -aa -aa -aa -aa -aa -aa -aa +Ga +Dh +sP +Em +wT +kT +TZ aa aa aa @@ -6256,10 +6665,10 @@ aa aa ah ut -aw +Fg ou -aw -aw +Fg +Fg Kx ah bs @@ -6287,14 +6696,14 @@ cN Tt vm fg -aa -aa -aa -aa -aa -aa -aa -aa +NC +NC +YB +PD +up +YB +YB +NC aa aa aa @@ -6380,13 +6789,13 @@ Tt vm fg aa -aa -aa -aa -aa -aa -aa -aa +NC +Nw +rN +yO +YB +YB +NC aa aa aa @@ -6472,13 +6881,13 @@ Tt vm fg aa -aa -aa -aa -aa -aa -aa -aa +NC +PV +NL +SC +SC +DJ +NC aa aa aa @@ -6564,13 +6973,13 @@ Tt vm fg aa -aa -aa -aa -aa -aa -aa -aa +NC +NC +Cr +NC +Cr +NC +NC aa aa aa @@ -7084,11 +7493,11 @@ aa aa ae ab -ab -ab -aB -ab -ab +Tp +qZ +kk +qZ +jw ab bv bJ @@ -7175,13 +7584,13 @@ aa aa aa ae -ac -ac +ab +ab ab aB ab -ac -ac +ab +ab bv bK cf @@ -7277,7 +7686,7 @@ ac bv bL cf -cq +sD bv cD bE @@ -8306,7 +8715,7 @@ dJ dJ dJ dJ -dN +Mk cS gH fO @@ -8669,7 +9078,7 @@ cS cS cS fN -vv +dG cS cS cS @@ -8764,9 +9173,9 @@ eZ eu fq fr -eu -eu -eu +nb +Go +Gc et aa aa diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index d6e522e3a0..115ad3d363 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2248,11 +2248,6 @@ }, /turf/open/floor/plasteel, /area/tdome/arena_source) -"fR" = ( -/obj/item/paicard, -/obj/structure/table/wood, -/turf/open/floor/engine/cult, -/area/wizard_station) "fS" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -2940,22 +2935,6 @@ /obj/machinery/capture_the_flag/red, /turf/open/floor/circuit/green/anim, /area/ctf) -"hH" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/seclite, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/item/paicard, -/turf/open/floor/plasteel/dark, -/area/centcom/ferry) "hI" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -8415,6 +8394,9 @@ /turf/open/floor/plating, /area/syndicate_mothership) "tg" = ( +/obj/machinery/shower{ + dir = 4 + }, /obj/item/soap/syndie, /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) @@ -11391,6 +11373,22 @@ /obj/structure/table/reinforced, /turf/open/floor/plasteel/grimy, /area/centcom/ferry) +"AL" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/seclite, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/paicard, +/turf/open/floor/plasteel/dark, +/area/centcom/ferry) "AM" = ( /obj/machinery/shuttle_manipulator, /turf/open/floor/circuit/green, @@ -11587,6 +11585,11 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Bp" = ( +/obj/item/paicard, +/obj/structure/table/wood, +/turf/open/floor/engine/cult, +/area/wizard_station) "Bs" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole/bookmanagement, @@ -17434,6 +17437,8 @@ /obj/structure/mirror{ pixel_x = -28 }, +/obj/structure/table, +/obj/item/reagent_containers/rag/towel/syndicate, /turf/open/floor/plasteel/freezer, /area/syndicate_mothership) "Rm" = ( @@ -25742,7 +25747,7 @@ lI lI lI Ax -fR +Bp qZ qZ Ax @@ -56338,7 +56343,7 @@ yr sw sw Ad -hH +AL Bx sw Cv diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm index 04e9c52527..c33106e2f5 100644 --- a/code/__DEFINES/citadel_defines.dm +++ b/code/__DEFINES/citadel_defines.dm @@ -12,7 +12,7 @@ #define ui_boxcraft "EAST-4:22,SOUTH+1:6" #define ui_boxarea "EAST-4:6,SOUTH+1:6" #define ui_boxlang "EAST-5:22,SOUTH+1:6" -#define ui_boxvore "EAST-4:22,SOUTH+1:6" +#define ui_boxvore "EAST-5:22,SOUTH+1:6" //Filters #define CIT_FILTER_STAMINACRIT filter(type="drop_shadow", x=0, y=0, size=-3, border=0, color="#04080F") @@ -57,7 +57,7 @@ #define BALLS_SACK_SIZE_DEF 8 #define BALLS_SACK_SIZE_MAX 40 -#define CUM_RATE 5 +#define CUM_RATE 0.035 #define CUM_RATE_MULT 1 #define CUM_EFFICIENCY 1//amount of nutrition required per life() @@ -132,22 +132,22 @@ //xenobio console upgrade stuff #define XENOBIO_UPGRADE_MONKEYS 1 -#define XENOBIO_UPGRADE_SLIMEBASIC 2 +#define XENOBIO_UPGRADE_SLIMEBASIC 2 #define XENOBIO_UPGRADE_SLIMEADV 4 //stamina stuff -#define STAMINA_SOFTCRIT 100 //softcrit for stamina damage. prevents standing up, prevents performing actions that cost stamina, etc, but doesn't force a rest or stop movement -#define STAMINA_CRIT 140 //crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit -#define STAMINA_SOFTCRIT_TRADITIONAL 0 //same as STAMINA_SOFTCRIT except for the more traditional health calculations +#define STAMINA_SOFTCRIT 100 //softcrit for stamina damage. prevents standing up, prevents performing actions that cost stamina, etc, but doesn't force a rest or stop movement +#define STAMINA_CRIT 140 //crit for stamina damage. forces a rest, and stops movement until stamina goes back to stamina softcrit +#define STAMINA_SOFTCRIT_TRADITIONAL 0 //same as STAMINA_SOFTCRIT except for the more traditional health calculations #define STAMINA_CRIT_TRADITIONAL -40 //ditto, but for STAMINA_CRIT -#define MIN_MELEE_STAMCOST 1.25 //Minimum cost for swinging items around. Will be extra useful when stats and skills are introduced. +#define MIN_MELEE_STAMCOST 1.25 //Minimum cost for swinging items around. Will be extra useful when stats and skills are introduced. #define CRAWLUNDER_DELAY 30 //Delay for crawling under a standing mob //Citadel toggles because bitflag memes -#define MEDIHOUND_SLEEPER 1 -#define EATING_NOISES 2 -#define DIGESTION_NOISES 4 +#define MEDIHOUND_SLEEPER (1<<0) +#define EATING_NOISES (1<<1) +#define DIGESTION_NOISES (1<<2) #define TOGGLES_CITADEL (EATING_NOISES|DIGESTION_NOISES) diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 8d86826ac2..e01bf5669b 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -73,6 +73,8 @@ #define COMSIG_ATOM_CANREACH "atom_can_reach" //from internal loop in atom/movable/proc/CanReach(): (list/next) #define COMPONENT_BLOCK_REACH 1 #define COMSIG_ATOM_SCREWDRIVER_ACT "atom_screwdriver_act" //from base of atom/screwdriver_act(): (mob/living/user, obj/item/I) +#define COMSIG_ATOM_INTERCEPT_TELEPORT "intercept_teleport" //called when teleporting into a protected turf: (channel, turf/origin) + #define COMPONENT_BLOCK_TELEPORT 1 ///////////////// #define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" //from base of atom/attack_ghost(): (mob/dead/observer/ghost) #define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" //from base of atom/attack_hand(): (mob/user) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 2fe70961f8..d64fa30047 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -7,7 +7,7 @@ //for convenience #define ENABLE_BITFIELD(variable, flag) (variable |= (flag)) #define DISABLE_BITFIELD(variable, flag) (variable &= ~(flag)) -#define CHECK_BITFIELD(variable, flag) (variable & flag) +#define CHECK_BITFIELD(variable, flag) (variable & (flag)) #define TOGGLE_BITFIELD(variable, flag) (variable ^= (flag)) GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768)) diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 03cfde802f..95a8a2c885 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -28,6 +28,7 @@ #define ITEM_SLOT_POCKET (1<<11) // this is to allow items with a w_class of WEIGHT_CLASS_NORMAL or WEIGHT_CLASS_BULKY to fit in pockets. #define ITEM_SLOT_DENYPOCKET (1<<12) // this is to deny items with a w_class of WEIGHT_CLASS_SMALL or WEIGHT_CLASS_TINY to fit in pockets. #define ITEM_SLOT_NECK (1<<13) +#define ITEM_SLOT_SUITSTORE (1<<14) //SLOTS #define SLOT_BACK 1 @@ -52,6 +53,7 @@ #define SLOT_LEGCUFFED 19 #define SLOT_GENERC_DEXTROUS_STORAGE 20 + #define SLOTS_AMT 20 // Keep this up to date! //I hate that this has to exist @@ -84,6 +86,8 @@ . = ITEM_SLOT_ICLOTHING if(SLOT_L_STORE, SLOT_R_STORE) . = ITEM_SLOT_POCKET + if(SLOT_S_STORE) + . = ITEM_SLOT_SUITSTORE //Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. diff --git a/code/__DEFINES/melee.dm b/code/__DEFINES/melee.dm new file mode 100644 index 0000000000..cb4a433211 --- /dev/null +++ b/code/__DEFINES/melee.dm @@ -0,0 +1,10 @@ +//Martial arts defines + +#define MARTIALART_BOXING "boxing" +#define MARTIALART_WRESTLING "wrestling" +#define MARTIALART_SLEEPINGCARP "sleeping carp" +#define MARTIALART_PSYCHOBRAWL "psychotic brawling" +#define MARTIALART_MUSHPUNCH "mushroom punch" +#define MARTIALART_KRAVMAGA "krav maga" +#define MARTIALART_CQC "CQC" +#define MARTIALART_PLASMAFIST "plasma fist" \ No newline at end of file diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 73711fe02d..2ba1563001 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -455,6 +455,13 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S #define SUMMON_GUNS "guns" #define SUMMON_MAGIC "magic" +#define TELEPORT_CHANNEL_BLUESPACE "bluespace" //Classic bluespace teleportation, requires a sender but no receiver +#define TELEPORT_CHANNEL_QUANTUM "quantum" //Quantum-based teleportation, requires both sender and receiver, but is free from normal disruption +#define TELEPORT_CHANNEL_WORMHOLE "wormhole" //Wormhole teleportation, is not disrupted by bluespace fluctuations but tends to be very random or unsafe +#define TELEPORT_CHANNEL_MAGIC "magic" //Magic teleportation, does whatever it wants (unless there's antimagic) +#define TELEPORT_CHANNEL_CULT "cult" //Cult teleportation, does whatever it wants (unless there's holiness) +#define TELEPORT_CHANNEL_FREE "free" //Anything else + //Run the world with this parameter to enable a single run though of the game setup and tear down process with unit tests in between #define TEST_RUN_PARAMETER "test-run" //Force the log directory to be something specific in the data/logs folder diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index 897d107939..928f364a81 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -1,5 +1,55 @@ // Radios use a large variety of predefined frequencies. +//say based modes like binary are in living/say.dm + +#define RADIO_CHANNEL_COMMON "Common" +#define RADIO_KEY_COMMON ";" + +#define RADIO_CHANNEL_SECURITY "Security" +#define RADIO_KEY_SECURITY "s" +#define RADIO_TOKEN_SECURITY ":s" + +#define RADIO_CHANNEL_ENGINEERING "Engineering" +#define RADIO_KEY_ENGINEERING "e" +#define RADIO_TOKEN_ENGINEERING ":e" + +#define RADIO_CHANNEL_COMMAND "Command" +#define RADIO_KEY_COMMAND "c" +#define RADIO_TOKEN_COMMAND ":c" + +#define RADIO_CHANNEL_SCIENCE "Science" +#define RADIO_KEY_SCIENCE "n" +#define RADIO_TOKEN_SCIENCE ":n" + +#define RADIO_CHANNEL_MEDICAL "Medical" +#define RADIO_KEY_MEDICAL "m" +#define RADIO_TOKEN_MEDICAL ":m" + +#define RADIO_CHANNEL_SUPPLY "Supply" +#define RADIO_KEY_SUPPLY "u" +#define RADIO_TOKEN_SUPPLY ":u" + +#define RADIO_CHANNEL_SERVICE "Service" +#define RADIO_KEY_SERVICE "v" +#define RADIO_TOKEN_SERVICE ":v" + +#define RADIO_CHANNEL_AI_PRIVATE "AI Private" +#define RADIO_KEY_AI_PRIVATE "o" +#define RADIO_TOKEN_AI_PRIVATE ":o" + + +#define RADIO_CHANNEL_SYNDICATE "Syndicate" +#define RADIO_KEY_SYNDICATE "t" +#define RADIO_TOKEN_SYNDICATE ":t" + +#define RADIO_CHANNEL_CENTCOM "CentCom" +#define RADIO_KEY_CENTCOM "y" +#define RADIO_TOKEN_CENTCOM ":y" + +#define RADIO_CHANNEL_CTF_RED "Red Team" +#define RADIO_CHANNEL_CTF_BLUE "Blue Team" + + #define MIN_FREE_FREQ 1201 // ------------------------------------------------- // Frequencies are always odd numbers and range from 1201 to 1599. diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 82fbfdb848..e655408db1 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -6,17 +6,43 @@ //Message modes. Each one defines a radio channel, more or less. #define MODE_HEADSET "headset" #define MODE_ROBOT "robot" + #define MODE_R_HAND "right hand" +#define MODE_KEY_R_HAND "r" + #define MODE_L_HAND "left hand" +#define MODE_KEY_L_HAND "l" + #define MODE_INTERCOM "intercom" +#define MODE_KEY_INTERCOM "i" + #define MODE_BINARY "binary" +#define MODE_KEY_BINARY "b" +#define MODE_TOKEN_BINARY ":b" + #define MODE_WHISPER "whisper" #define MODE_WHISPER_CRIT "whispercrit" + #define MODE_DEPARTMENT "department" +#define MODE_KEY_DEPARTMENT "h" +#define MODE_TOKEN_DEPARTMENT ":h" + +#define MODE_ADMIN "admin" +#define MODE_KEY_ADMIN "p" + +#define MODE_DEADMIN "deadmin" +#define MODE_KEY_DEADMIN "d" + #define MODE_ALIEN "alientalk" #define MODE_HOLOPAD "holopad" + #define MODE_CHANGELING "changeling" +#define MODE_KEY_CHANGELING "g" +#define MODE_TOKEN_CHANGELING ":g" + #define MODE_VOCALCORDS "cords" +#define MODE_KEY_VOCALCORDS "x" + #define MODE_MONKEY "monkeyhive" //Spans. Robot speech, italics, etc. Applied in compose_message(). diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 1546717c7a..9eba361231 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -128,6 +128,7 @@ #define TRAIT_HEAVY_SLEEPER "heavy_sleeper" #define TRAIT_NIGHT_VISION "night_vision" #define TRAIT_LIGHT_STEP "light_step" +#define TRAIT_SILENT_STEP "silent_step" #define TRAIT_SPEEDY_STEP "speedy_step" #define TRAIT_SPIRITUAL "spiritual" #define TRAIT_VORACIOUS "voracious" diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 82ccd439ee..d09368d7b7 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -100,6 +100,11 @@ GLOBAL_LIST_INIT(security_depts_prefs, list(SEC_DEPT_RANDOM, SEC_DEPT_NONE, SEC_ #define DDUFFELBAG "Department Duffel Bag" GLOBAL_LIST_INIT(backbaglist, list(DBACKPACK, DSATCHEL, DDUFFELBAG, GBACKPACK, GSATCHEL, GDUFFELBAG, LSATCHEL)) +//Suit/Skirt +#define PREF_SUIT "Jumpsuit" +#define PREF_SKIRT "Jumpskirt" +GLOBAL_LIST_INIT(jumpsuitlist, list(PREF_SUIT, PREF_SKIRT)) + //Uplink spawn loc #define UPLINK_PDA "PDA" #define UPLINK_RADIO "Radio" diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index f432e44b18..2f56c69384 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -87,17 +87,20 @@ SUBSYSTEM_DEF(vote) /datum/controller/subsystem/vote/proc/announce_result() var/list/winners = get_result() var/text + var/was_roundtype_vote = mode == "roundtype" if(winners.len > 0) if(question) text += "[question]" else text += "[capitalize(mode)] Vote" - stored_gamemode_votes = list() + if(was_roundtype_vote) + stored_gamemode_votes = list() for(var/i=1,i<=choices.len,i++) var/votes = choices[choices[i]] if(!votes) votes = 0 - stored_gamemode_votes[choices[i]] = votes + if(was_roundtype_vote) + stored_gamemode_votes[choices[i]] = votes text += "\n[choices[i]]: [obfuscated ? "???" : votes]" //CIT CHANGE - adds obfuscated votes if(mode != "custom") if(winners.len > 1 && !obfuscated) //CIT CHANGE - adds obfuscated votes diff --git a/code/datums/action.dm b/code/datums/action.dm index f64a549b29..fd33ef79b5 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -494,6 +494,7 @@ else to_chat(owner, "Your hands are full!") +//MGS Box /datum/action/item_action/agent_box name = "Deploy Box" desc = "Find inner peace, here, in the box." @@ -502,21 +503,27 @@ icon_icon = 'icons/mob/actions/actions_items.dmi' button_icon_state = "deploy_box" var/cooldown = 0 - var/obj/structure/closet/cardboard/agent/box + var/boxtype = /obj/structure/closet/cardboard/agent +//Handles open and closing the box /datum/action/item_action/agent_box/Trigger() - if(!..()) + . = ..() + if(!.) return FALSE - if(QDELETED(box)) - if(cooldown < world.time - 100) - box = new(owner.drop_location()) - owner.forceMove(box) - cooldown = world.time - owner.playsound_local(box, 'sound/misc/box_deploy.ogg', 50, TRUE) - else - owner.forceMove(box.drop_location()) + if(istype(owner.loc, /obj/structure/closet/cardboard/agent)) + var/obj/structure/closet/cardboard/agent/box = owner.loc + owner.playsound_local(box, 'sound/misc/box_deploy.ogg', 50, TRUE) + box.open() + return + //Box closing from here on out. + if(!isturf(owner.loc)) //Don't let the player use this to escape mechs/welded closets. + to_chat(owner, "You need more space to activate this implant.") + return + if(cooldown < world.time - 100) + var/box = new boxtype(owner.drop_location()) + owner.forceMove(box) + cooldown = world.time owner.playsound_local(box, 'sound/misc/box_deploy.ogg', 50, TRUE) - QDEL_NULL(box) //Preset for spells /datum/action/spell_action diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm index bfcc49f453..e6c9f20de6 100644 --- a/code/datums/components/footstep.dm +++ b/code/datums/components/footstep.dm @@ -14,15 +14,18 @@ var/turf/open/T = get_turf(parent) if(!istype(T)) return - + var/mob/living/LM = parent var/v = volume var/e = e_range if(!T.footstep || LM.buckled || LM.lying || !LM.canmove || LM.resting || LM.buckled || LM.throwing || LM.movement_type & (VENTCRAWLING | FLYING)) - if (LM.lying && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying + if (LM.lying && !LM.buckled && !(!T.footstep || LM.movement_type & (VENTCRAWLING | FLYING))) //play crawling sound if we're lying playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v) return - + + if(HAS_TRAIT(LM, TRAIT_SILENT_STEP)) + return + if(iscarbon(LM)) var/mob/living/carbon/C = LM if(!C.get_bodypart(BODY_ZONE_L_LEG) && !C.get_bodypart(BODY_ZONE_R_LEG)) @@ -31,18 +34,18 @@ v /= 2 e -= 5 steps++ - + if(steps >= 3) steps = 0 - + else return - + if(prob(80) && !LM.has_gravity(T)) // don't need to step as often when you hop around return - + //begin playsound shenanigans// - + //for barefooted non-clawed mobs like monkeys if(isbarefoot(LM)) playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]), @@ -50,19 +53,19 @@ TRUE, GLOB.barefootstep[T.barefootstep][3] + e) return - + //for xenomorphs, dogs, and other clawed mobs if(isclawfoot(LM)) if(isalienadult(LM)) //xenos are stealthy and get quieter footsteps v /= 3 e -= 5 - + playsound(T, pick(GLOB.clawfootstep[T.clawfootstep][1]), GLOB.clawfootstep[T.clawfootstep][2] * v, TRUE, GLOB.clawfootstep[T.clawfootstep][3] + e) return - + //for megafauna and other large and imtimidating mobs such as the bloodminer if(isheavyfoot(LM)) playsound(T, pick(GLOB.heavyfootstep[T.heavyfootstep][1]), @@ -70,12 +73,12 @@ TRUE, GLOB.heavyfootstep[T.heavyfootstep][3] + e) return - + //for slimes - if(isslime(LM)) + if(isslime(LM)) playsound(T, 'sound/effects/footstep/slime1.ogg', 15 * v) return - + //for (simple) humanoid mobs (clowns, russians, pirates, etc.) if(isshoefoot(LM)) if(!ishuman(LM)) @@ -87,17 +90,17 @@ if(ishuman(LM)) //for proper humans, they're special var/mob/living/carbon/human/H = LM var/feetCover = (H.wear_suit && (H.wear_suit.body_parts_covered & FEET)) || (H.w_uniform && (H.w_uniform.body_parts_covered & FEET)) - + if (H.dna.features["taur"] == "Naga" || H.dna.features["taur"] == "Tentacle") //are we a naga or tentacle taur creature playsound(T, 'sound/effects/footstep/crawl1.ogg', 15 * v) return - + if(H.shoes || feetCover) //are we wearing shoes playsound(T, pick(GLOB.footstep[T.footstep][1]), GLOB.footstep[T.footstep][2] * v, TRUE, GLOB.footstep[T.footstep][3] + e) - + if((!H.shoes && !feetCover)) //are we NOT wearing shoes playsound(T, pick(GLOB.barefootstep[T.barefootstep][1]), GLOB.barefootstep[T.barefootstep][2] * v, diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 0623e2f5f9..4d1986cccf 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -5,11 +5,19 @@ // effectout: effect to show right after teleportation // asoundin: soundfile to play before teleportation // asoundout: soundfile to play after teleportation -// force_teleport: if false, teleport will use Move() proc (dense objects will prevent teleportation) // no_effects: disable the default effectin/effectout of sparks -/proc/do_teleport(atom/movable/teleatom, atom/destination, precision=null, force_teleport=TRUE, datum/effect_system/effectin=null, datum/effect_system/effectout=null, asoundin=null, asoundout=null, no_effects=FALSE) +// forceMove: if false, teleport will use Move() proc (dense objects will prevent teleportation) +// forced: whether or not to ignore no_teleport +/proc/do_teleport(atom/movable/teleatom, atom/destination, precision=null, forceMove = TRUE, datum/effect_system/effectin=null, datum/effect_system/effectout=null, asoundin=null, asoundout=null, no_effects=FALSE, channel=TELEPORT_CHANNEL_BLUESPACE, forced = FALSE) // teleporting most effects just deletes them - if(iseffect(teleatom) && !istype(teleatom, /obj/effect/dummy/chameleon)) + var/static/list/delete_atoms = typecacheof(list( + /obj/effect, + )) - typecacheof(list( + /obj/effect/dummy/chameleon, + /obj/effect/wisp, + /obj/effect/mob_spawn + )) + if(delete_atoms[teleatom.type]) qdel(teleatom) return FALSE @@ -17,25 +25,37 @@ // if the precision is not specified, default to 0, but apply BoH penalties if (isnull(precision)) precision = 0 - if(istype(teleatom, /obj/item/storage/backpack/holding)) - precision = rand(1,100) - var/static/list/bag_cache = typecacheof(/obj/item/storage/backpack/holding) - var/list/bagholding = typecache_filter_list(teleatom.GetAllContents(), bag_cache) - if(bagholding.len) - precision = max(rand(1,100)*bagholding.len,100) - if(isliving(teleatom)) - var/mob/living/MM = teleatom - to_chat(MM, "The bluespace interface on your bag of holding interferes with the teleport!") + switch(channel) + if(TELEPORT_CHANNEL_BLUESPACE) + if(istype(teleatom, /obj/item/storage/backpack/holding)) + precision = rand(1,100) - // if effects are not specified and not explicitly disabled, sparks - if ((!effectin || !effectout) && !no_effects) - var/datum/effect_system/spark_spread/sparks = new - sparks.set_up(5, 1, teleatom) - if (!effectin) - effectin = sparks - if (!effectout) - effectout = sparks + var/static/list/bag_cache = typecacheof(/obj/item/storage/backpack/holding) + var/list/bagholding = typecache_filter_list(teleatom.GetAllContents(), bag_cache) + if(bagholding.len) + precision = max(rand(1,100)*bagholding.len,100) + if(isliving(teleatom)) + var/mob/living/MM = teleatom + to_chat(MM, "The bluespace interface on your bag of holding interferes with the teleport!") + + // if effects are not specified and not explicitly disabled, sparks + if ((!effectin || !effectout) && !no_effects) + var/datum/effect_system/spark_spread/sparks = new + sparks.set_up(5, 1, teleatom) + if (!effectin) + effectin = sparks + if (!effectout) + effectout = sparks + if(TELEPORT_CHANNEL_QUANTUM) + // if effects are not specified and not explicitly disabled, rainbow sparks + if ((!effectin || !effectout) && !no_effects) + var/datum/effect_system/spark_spread/quantum/sparks = new + sparks.set_up(5, 1, teleatom) + if (!effectin) + effectin = sparks + if (!effectout) + effectout = sparks // perform the teleport var/turf/curturf = get_turf(teleatom) @@ -45,11 +65,15 @@ return FALSE var/area/A = get_area(curturf) - if(A.noteleport) + var/area/B = get_area(destturf) + if(!forced && (A.noteleport || B.noteleport)) + return FALSE + + if(SEND_SIGNAL(destturf, COMSIG_ATOM_INTERCEPT_TELEPORT, channel, curturf, destturf)) return FALSE tele_play_specials(teleatom, curturf, effectin, asoundin) - var/success = force_teleport ? teleatom.forceMove(destturf) : teleatom.Move(destturf) + var/success = forceMove ? teleatom.forceMove(destturf) : teleatom.Move(destturf) if (success) log_game("[key_name(teleatom)] has teleported from [loc_name(curturf)] to [loc_name(destturf)]") tele_play_specials(teleatom, destturf, effectout, asoundout) diff --git a/code/datums/martial.dm b/code/datums/martial.dm index ae8f92a342..d119759efc 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -2,6 +2,7 @@ var/name = "Martial Art" var/streak = "" var/max_streak_length = 6 + var/id = "" //ID, used by mind/has_martialartcode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proccode\game\objects\items\granters.dm:345:error: user.mind.has_martialart: undefined proc var/current_target var/datum/martial_art/base // The permanent style. This will be null unless the martial art is temporary var/deflection_chance = 0 //Chance to deflect projectiles diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm index c93fc47f2b..7399528e1c 100644 --- a/code/datums/martial/boxing.dm +++ b/code/datums/martial/boxing.dm @@ -1,5 +1,6 @@ /datum/martial_art/boxing name = "Boxing" + id = MARTIALART_BOXING /datum/martial_art/boxing/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) to_chat(A, "Can't disarm while boxing!") diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 55cd4a3f7a..71545476ff 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -6,6 +6,7 @@ /datum/martial_art/cqc name = "CQC" + id = MARTIALART_CQC help_verb = /mob/living/carbon/human/proc/CQC_help block_chance = 75 var/just_a_cook = FALSE diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index 4283d7f78f..6379d481ca 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -1,5 +1,6 @@ /datum/martial_art/krav_maga name = "Krav Maga" + id = MARTIALART_KRAVMAGA var/datum/action/neck_chop/neckchop = new/datum/action/neck_chop() var/datum/action/leg_sweep/legsweep = new/datum/action/leg_sweep() var/datum/action/lung_punch/lungpunch = new/datum/action/lung_punch() @@ -85,14 +86,14 @@ return 1 return 0 -/datum/martial_art/krav_maga/proc/leg_sweep(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) +/datum/martial_art/krav_maga/proc/leg_sweep(mob/living/carbon/human/A, mob/living/carbon/human/D) if(D.lying || D.IsKnockdown()) return 0 D.visible_message("[A] leg sweeps [D]!", \ "[A] leg sweeps you!") playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) D.apply_damage(5, BRUTE) - D.Knockdown(40, override_hardstun = 0.01, 25) + D.Knockdown(40, override_hardstun = 0.01, override_stamdmg = 25) log_combat(A, D, "leg sweeped") return 1 @@ -196,7 +197,7 @@ name = "combat gloves plus" desc = "These tactical gloves are fireproof and shock resistant, and using nanochip technology it teaches you the powers of krav maga." icon_state = "combat" - item_state = "blackglovesplus" + item_state = "blackgloves" siemens_coefficient = 0 permeability_coefficient = 0.05 strip_delay = 80 diff --git a/code/datums/martial/mushpunch.dm b/code/datums/martial/mushpunch.dm index 33d5bb51bf..1ef7734771 100644 --- a/code/datums/martial/mushpunch.dm +++ b/code/datums/martial/mushpunch.dm @@ -1,5 +1,6 @@ /datum/martial_art/mushpunch name = "Mushroom Punch" + id = MARTIALART_MUSHPUNCH /datum/martial_art/mushpunch/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) var/atk_verb diff --git a/code/datums/martial/plasma_fist.dm b/code/datums/martial/plasma_fist.dm index f540dc0783..e38a011db0 100644 --- a/code/datums/martial/plasma_fist.dm +++ b/code/datums/martial/plasma_fist.dm @@ -4,6 +4,7 @@ /datum/martial_art/plasma_fist name = "Plasma Fist" + id = MARTIALART_PLASMAFIST help_verb = /mob/living/carbon/human/proc/plasma_fist_help diff --git a/code/datums/martial/psychotic_brawl.dm b/code/datums/martial/psychotic_brawl.dm index 1cb18f903f..8f1a33a8b3 100644 --- a/code/datums/martial/psychotic_brawl.dm +++ b/code/datums/martial/psychotic_brawl.dm @@ -1,5 +1,6 @@ /datum/martial_art/psychotic_brawling name = "Psychotic Brawling" + id = MARTIALART_PSYCHOBRAWL /datum/martial_art/psychotic_brawling/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) return psycho_attack(A,D) diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 5f19c37b99..e205d7a435 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -6,6 +6,7 @@ /datum/martial_art/the_sleeping_carp name = "The Sleeping Carp" + id = MARTIALART_SLEEPINGCARP deflection_chance = 100 reroute_deflection = TRUE no_guns = TRUE diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index e57edf9fb2..e07fa27ef5 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -10,6 +10,7 @@ /datum/martial_art/wrestling name = "Wrestling" + id = MARTIALART_WRESTLING var/datum/action/slam/slam = new/datum/action/slam() var/datum/action/throw_wrassle/throw_wrassle = new/datum/action/throw_wrassle() var/datum/action/kick/kick = new/datum/action/kick() diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 7d150d890d..8e61801e15 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -64,6 +64,8 @@ var/force_escaped = FALSE // Set by Into The Sunset command of the shuttle manipulator + var/list/learned_recipes //List of learned recipe TYPES. + /datum/mind/New(var/key) src.key = key soulOwner = src @@ -130,7 +132,8 @@ L.update_arousal_hud() //Removes the old icon /datum/mind/proc/store_memory(new_text) - memory += "[new_text]
" + if((length(memory) + length(new_text)) <= MAX_MESSAGE_LEN) + memory += "[new_text]
" /datum/mind/proc/wipe_memory() memory = null @@ -778,6 +781,11 @@ mind_initialize() //updates the mind (or creates and initializes one if one doesn't exist) mind.active = 1 //indicates that the mind is currently synced with a client +/datum/mind/proc/has_martialart(var/string) + if(martial_art && martial_art.id == string) + return martial_art + return FALSE + /mob/dead/new_player/sync_mind() return diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 461c221ff8..a32220aa43 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -63,16 +63,14 @@ /datum/mutation/human/dwarfism/on_acquiring(mob/living/carbon/human/owner) if(..()) return - owner.resize = 0.8 - owner.update_transform() + owner.transform = owner.transform.Scale(1, 0.8) owner.pass_flags |= PASSTABLE owner.visible_message("[owner] suddenly shrinks!", "Everything around you seems to grow..") /datum/mutation/human/dwarfism/on_losing(mob/living/carbon/human/owner) if(..()) return - owner.resize = 1.25 - owner.update_transform() + owner.transform = owner.transform.Scale(1, 1.25) owner.pass_flags &= ~PASSTABLE owner.visible_message("[owner] suddenly grows!", "Everything around you seems to shrink..") diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index 22fca23902..9762426608 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -305,3 +305,9 @@ suffix = "spacehermit.dmm" name = "Space Hermit" description = "A late awakening cryo pod in a crashed escape pod wakes up to find what befell of his fellow survivors. Contains all the necessary resources to actually make it out alive. Good luck." + +/datum/map_template/ruin/space/advancedlab + id = "advancedlab" + suffix = "advancedlab.dmm" + name = "Abductor Replication Lab" + description = "Some scientists tried and almost succeeded to recreate abductor tools. Somewhat slower and a bit less modern than their originals, these tools are the best you can get if you aren't an alien." diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index c4f485653e..3b6fae5aee 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -11,7 +11,7 @@ /datum/saymode/changeling - key = "g" + key = MODE_KEY_CHANGELING mode = MODE_CHANGELING /datum/saymode/changeling/handle_message(mob/living/user, message, datum/language/language) @@ -73,7 +73,7 @@ /datum/saymode/vocalcords - key = "x" + key = MODE_KEY_VOCALCORDS mode = MODE_VOCALCORDS /datum/saymode/vocalcords/handle_message(mob/living/user, message, datum/language/language) @@ -87,7 +87,7 @@ /datum/saymode/binary //everything that uses .b (silicons, drones, blobbernauts/spores, swarmers) - key = "b" + key = MODE_KEY_BINARY mode = MODE_BINARY /datum/saymode/binary/handle_message(mob/living/user, message, datum/language/language) diff --git a/code/datums/wires/_wires.dm b/code/datums/wires/_wires.dm index f1b08ee18b..fab5a1313c 100644 --- a/code/datums/wires/_wires.dm +++ b/code/datums/wires/_wires.dm @@ -231,6 +231,9 @@ // Same for anyone with an abductor multitool. else if(user.is_holding_item_of_type(/obj/item/multitool/abductor)) reveal_wires = TRUE + // and advanced multitool + else if(user.is_holding_item_of_type(/obj/item/multitool/advanced)) + reveal_wires = TRUE // Station blueprints do that too, but only if the wires are not randomized. else if(user.is_holding_item_of_type(/obj/item/areaeditor/blueprints) && !randomize) diff --git a/code/game/area/areas/ruins/space.dm b/code/game/area/areas/ruins/space.dm index 00a7fed012..d5ceb833b7 100644 --- a/code/game/area/areas/ruins/space.dm +++ b/code/game/area/areas/ruins/space.dm @@ -467,3 +467,8 @@ /area/ruin/space/has_grav/powered/ancient_shuttle name = "Ancient Shuttle" icon_state = "yellow" + +// Abductor Replication Lab +/area/ruin/space/has_grav/powered/advancedlab + name = "Abductor Replication Lab" + icon_state = "yellow" diff --git a/code/game/communications.dm b/code/game/communications.dm index 212a99f966..ed470473d9 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -91,35 +91,35 @@ GLOBAL_LIST_EMPTY(all_radios) // use in maps, such as in intercoms. GLOBAL_LIST_INIT(radiochannels, list( - "Common" = FREQ_COMMON, - "Science" = FREQ_SCIENCE, - "Command" = FREQ_COMMAND, - "Medical" = FREQ_MEDICAL, - "Engineering" = FREQ_ENGINEERING, - "Security" = FREQ_SECURITY, - "CentCom" = FREQ_CENTCOM, - "Syndicate" = FREQ_SYNDICATE, - "Supply" = FREQ_SUPPLY, - "Service" = FREQ_SERVICE, - "AI Private" = FREQ_AI_PRIVATE, - "Red Team" = FREQ_CTF_RED, - "Blue Team" = FREQ_CTF_BLUE + RADIO_CHANNEL_COMMON = FREQ_COMMON, + RADIO_CHANNEL_SCIENCE = FREQ_SCIENCE, + RADIO_CHANNEL_COMMAND = FREQ_COMMAND, + RADIO_CHANNEL_MEDICAL = FREQ_MEDICAL, + RADIO_CHANNEL_ENGINEERING = FREQ_ENGINEERING, + RADIO_CHANNEL_SECURITY = FREQ_SECURITY, + RADIO_CHANNEL_CENTCOM = FREQ_CENTCOM, + RADIO_CHANNEL_SYNDICATE = FREQ_SYNDICATE, + RADIO_CHANNEL_SUPPLY = FREQ_SUPPLY, + RADIO_CHANNEL_SERVICE = FREQ_SERVICE, + RADIO_CHANNEL_AI_PRIVATE = FREQ_AI_PRIVATE, + RADIO_CHANNEL_CTF_RED = FREQ_CTF_RED, + RADIO_CHANNEL_CTF_BLUE = FREQ_CTF_BLUE )) GLOBAL_LIST_INIT(reverseradiochannels, list( - "[FREQ_COMMON]" = "Common", - "[FREQ_SCIENCE]" = "Science", - "[FREQ_COMMAND]" = "Command", - "[FREQ_MEDICAL]" = "Medical", - "[FREQ_ENGINEERING]" = "Engineering", - "[FREQ_SECURITY]" = "Security", - "[FREQ_CENTCOM]" = "CentCom", - "[FREQ_SYNDICATE]" = "Syndicate", - "[FREQ_SUPPLY]" = "Supply", - "[FREQ_SERVICE]" = "Service", - "[FREQ_AI_PRIVATE]" = "AI Private", - "[FREQ_CTF_RED]" = "Red Team", - "[FREQ_CTF_BLUE]" = "Blue Team" + "[FREQ_COMMON]" = RADIO_CHANNEL_COMMON, + "[FREQ_SCIENCE]" = RADIO_CHANNEL_SCIENCE, + "[FREQ_COMMAND]" = RADIO_CHANNEL_COMMAND, + "[FREQ_MEDICAL]" = RADIO_CHANNEL_MEDICAL, + "[FREQ_ENGINEERING]" = RADIO_CHANNEL_ENGINEERING, + "[FREQ_SECURITY]" = RADIO_CHANNEL_SECURITY, + "[FREQ_CENTCOM]" = RADIO_CHANNEL_CENTCOM, + "[FREQ_SYNDICATE]" = RADIO_CHANNEL_SYNDICATE, + "[FREQ_SUPPLY]" = RADIO_CHANNEL_SUPPLY, + "[FREQ_SERVICE]" = RADIO_CHANNEL_SERVICE, + "[FREQ_AI_PRIVATE]" = RADIO_CHANNEL_AI_PRIVATE, + "[FREQ_CTF_RED]" = RADIO_CHANNEL_CTF_RED, + "[FREQ_CTF_BLUE]" = RADIO_CHANNEL_CTF_BLUE )) /datum/radio_frequency diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 94ca86e0dd..808022d25f 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -52,7 +52,7 @@ Credit where due: if(!istype(M)) return FALSE if(M.mind) - if(ishuman(M) && (M.mind.assigned_role in list("Captain", "Chaplain"))) + if(M.mind.assigned_role in list("Captain", "Chaplain")) return FALSE if(M.mind.enslaved_to && !is_servant_of_ratvar(M.mind.enslaved_to)) return FALSE @@ -275,7 +275,7 @@ Credit where due: gloves = /obj/item/clothing/gloves/color/yellow belt = /obj/item/storage/belt/utility/servant backpack_contents = list(/obj/item/storage/box/engineer = 1, \ - /obj/item/clockwork/replica_fabricator = 1, /obj/item/stack/tile/brass/fifty = 1, /obj/item/paper/servant_primer = 1, /obj/item/reagent_containers/food/drinks/holyoil = 1) + /obj/item/clockwork/replica_fabricator = 1, /obj/item/stack/tile/brass/fifty = 1, /obj/item/paper/servant_primer = 1, /obj/item/reagent_containers/food/drinks/bottle/holyoil = 1) id = /obj/item/pda var/plasmaman //We use this to determine if we should activate internals in post_equip() diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 8f091b6372..e7cc3c53ae 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -16,7 +16,7 @@ if(!istype(M)) return FALSE if(M.mind) - if(ishuman(M) && (M.mind.assigned_role in list("Captain", "Chaplain"))) + if(M.mind.assigned_role in list("Captain", "Chaplain")) return FALSE if(specific_cult && specific_cult.is_sacrifice_target(M.mind)) return FALSE diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index e56495d808..176f62ef2d 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -53,7 +53,7 @@ name = "the chief engineer's advanced magnetic boots." targetitem = /obj/item/clothing/shoes/magboots/advance difficulty = 5 - excludefromjob = list("Chief Engineer") + excludefromjob = list("Chief Engineer", "Station Engineer", "Atmospheric Technician") /datum/objective_item/steal/capmedal name = "the medal of captaincy." @@ -62,10 +62,10 @@ excludefromjob = list("Captain") /datum/objective_item/steal/hypo - name = "the hypospray." + name = "the Chief Medical Officer's MKII hypospray." targetitem = /obj/item/hypospray/mkii/CMO //CITADEL EDIT, changing theft objective for the Hypo MK II difficulty = 5 - excludefromjob = list("Chief Medical Officer") + excludefromjob = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Virologist", "Geneticist") /datum/objective_item/steal/nukedisc name = "the nuclear authentication disk." @@ -83,10 +83,10 @@ excludefromjob = list("Head of Security", "Warden") /datum/objective_item/steal/reactive - name = "the reactive teleport armor." + name = "a reactive teleport armor." targetitem = /obj/item/clothing/suit/armor/reactive difficulty = 5 - excludefromjob = list("Research Director") + excludefromjob = list("Research Director","Scientist", "Roboticist") /datum/objective_item/steal/documents name = "any set of secret documents of any organization." @@ -143,7 +143,7 @@ name = "the station blueprints." targetitem = /obj/item/areaeditor/blueprints difficulty = 10 - excludefromjob = list("Chief Engineer") + excludefromjob = list("Chief Engineer", "Station Engineer", "Atmospheric Technician") altitems = list(/obj/item/photo) /datum/objective_item/steal/blueprints/check_special_completion(obj/item/I) @@ -159,7 +159,7 @@ name = "an unused sample of slime extract." targetitem = /obj/item/slime_extract difficulty = 3 - excludefromjob = list("Research Director","Scientist") + excludefromjob = list("Research Director","Scientist", "Roboticist") /datum/objective_item/steal/slime/check_special_completion(obj/item/slime_extract/E) if(E.Uses > 0) diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index 71dcb89ce7..0b9ed6bb3f 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -6,7 +6,7 @@ var/siphoning = FALSE var/next_warning = 0 var/obj/item/radio/radio - var/radio_channel = "Common" + var/radio_channel = RADIO_CHANNEL_COMMON var/minimum_time_between_warnings = 400 /obj/machinery/computer/bank_machine/Initialize() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index ba9b6fc225..4f04335852 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -31,7 +31,7 @@ var/internal_radio = TRUE var/obj/item/radio/radio var/radio_key = /obj/item/encryptionkey/headset_med - var/radio_channel = "Medical" + var/radio_channel = RADIO_CHANNEL_MEDICAL var/obj/effect/countdown/clonepod/countdown @@ -163,15 +163,8 @@ H.hardset_dna(ui, se, H.real_name, null, mrace, features) - if(efficiency > 2) - var/list/unclean_mutations = (GLOB.not_good_mutations|GLOB.bad_mutations) - H.dna.remove_mutation_group(unclean_mutations) - if(efficiency > 5 && prob(20)) - H.randmutvg() - if(efficiency < 3 && prob(50)) - var/mob/M = H.randmutb() - if(ismob(M)) - H = M + if(prob(50 - efficiency*10)) //Chance to give a bad mutation. + H.randmutb() //100% bad mutation. Can be cured with mutadone. H.silent = 20 //Prevents an extreme edge case where clones could speak if they said something at exactly the right moment. occupant = H diff --git a/code/game/machinery/computer/arcade/minesweeper.dm b/code/game/machinery/computer/arcade/minesweeper.dm index fe69860f76..e90e05966c 100644 --- a/code/game/machinery/computer/arcade/minesweeper.dm +++ b/code/game/machinery/computer/arcade/minesweeper.dm @@ -250,11 +250,11 @@ itemname = "a syndicate bomb beacon" new /obj/item/sbeacondrop/bomb(loc) if(2) - itemname = "a grenade launcher" - new /obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted(loc) - new /obj/item/ammo_casing/a40mm(loc) - new /obj/item/ammo_casing/a40mm(loc) - new /obj/item/ammo_casing/a40mm(loc) + itemname = "a rocket launcher" + new /obj/item/gun/ballistic/rocketlauncher/unrestricted(loc) + new /obj/item/ammo_casing/caseless/rocket(loc) + new /obj/item/ammo_casing/caseless/rocket(loc) + new /obj/item/ammo_casing/caseless/rocket(loc) if(3) itemname = "two bags of c4" new /obj/item/storage/backpack/duffelbag/syndie/c4(loc) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 86fcefb340..43582e39bf 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -361,14 +361,16 @@ return button_icon_state = "warp_down" owner.update_action_buttons() + QDEL_NULL(warping) + if(!do_teleport(user, T, channel = TELEPORT_CHANNEL_CULT, forced = TRUE)) + to_chat(user, "Warp Failed. Something deflected our attempt to warp to [AR].") + return T.visible_message("[user] warps in!") playsound(user, 'sound/magic/magic_missile.ogg', 50, TRUE) playsound(T, 'sound/magic/magic_missile.ogg', 50, TRUE) - user.forceMove(get_turf(T)) user.setDir(SOUTH) flash_color(user, flash_color = "#AF0AAF", flash_time = 5) R.remove_eye_control(user) - QDEL_NULL(warping) /datum/action/innate/servant_warp/proc/is_canceled() return !cancel diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 39d5c3d56f..1654768de0 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -1,4 +1,4 @@ -#define AUTOCLONING_MINIMAL_LEVEL 3 +#define AUTOCLONING_MINIMAL_LEVEL 4 /obj/machinery/computer/cloning name = "cloning console" @@ -13,17 +13,20 @@ var/scantemp_ckey var/scantemp = "Ready to Scan" var/menu = 1 //Which menu screen to display - var/list/records = list() var/datum/data/record/active_record = null var/obj/item/disk/data/diskette = null //Mostly so the geneticist can steal everything. var/loading = 0 // Nice loading text var/autoprocess = 0 + var/list/records = list() light_color = LIGHT_COLOR_BLUE /obj/machinery/computer/cloning/Initialize() . = ..() updatemodules(TRUE) + var/obj/item/circuitboard/computer/cloning/board = circuit + records = board.records + /obj/machinery/computer/cloning/Destroy() if(pods) @@ -346,6 +349,8 @@ active_record = null playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) src.menu = 2 + var/obj/item/circuitboard/computer/cloning/board = circuit + board.records = records else src.temp = "Access Denied." playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) @@ -368,6 +373,8 @@ for(var/key in diskette.fields) src.active_record.fields[key] = diskette.fields[key] src.temp = "Load successful." + var/obj/item/circuitboard/computer/cloning/board = circuit + board.records = records playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if("eject") @@ -502,5 +509,7 @@ R.fields["imp"] = "[REF(imp)]" src.records += R + var/obj/item/circuitboard/computer/cloning/board = circuit + board.records = records scantemp = "Subject successfully scanned." playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index c955edbcd0..f6cb58bbbc 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -30,7 +30,7 @@ obj_flags |= EMAGGED /obj/machinery/gulag_item_reclaimer/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/card/id/prisoner)) + if(istype(I, /obj/item/card/id)) if(!inserted_id) if(!user.transferItemToLoc(I, src)) return @@ -83,7 +83,7 @@ usr.put_in_hands(inserted_id) inserted_id = null else - var/obj/item/I = usr.is_holding_item_of_type(/obj/item/card/id/prisoner) + var/obj/item/I = usr.is_holding_item_of_type(/obj/item/card/id) if(I) if(!usr.transferItemToLoc(I, src)) return diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 03c60be91c..84a688c724 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -63,7 +63,7 @@ if(91 to INFINITY) filling_overlay.icon_state = "reagent100" - filling_overlay.color = list("#0000", "#0000", "#0000", "#000f", mix_color_from_reagents(beaker.reagents.reagent_list)) + filling_overlay.color = mix_color_from_reagents(beaker.reagents.reagent_list) add_overlay(filling_overlay) /obj/machinery/iv_drip/MouseDrop(mob/living/target) diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index 4016c32162..db59f3f413 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -127,7 +127,7 @@ if(first_inner) log_msg += "empty" log_msg += ")" - do_teleport(ROI, dest, no_effects = !first) + do_teleport(ROI, dest, no_effects = !first, channel = TELEPORT_CHANNEL_BLUESPACE) first = FALSE if (first) @@ -206,7 +206,7 @@ /obj/item/storage/briefcase/launchpad/PopulateContents() new /obj/item/pen(src) - new /obj/item/launchpad_remote(src, pad) + new /obj/item/launchpad_remote(src, pad) /obj/item/storage/briefcase/launchpad/attack_self(mob/user) if(!isturf(user.loc)) //no setting up in a locker @@ -227,7 +227,7 @@ L.pad = src.pad to_chat(user, "You link [pad] to [L].") else - return ..() + return ..() /obj/item/launchpad_remote name = "folder" diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index 7a8552607b..b5ef38b42c 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -36,7 +36,7 @@ to_chat(user, "The panel is screwed in, obstructing the linking device.") else to_chat(user, "The linking device is now able to be scanned with a multitool.") - + /obj/machinery/quantumpad/RefreshParts() var/E = 0 for(var/obj/item/stock_parts/capacitor/C in component_parts) @@ -74,15 +74,26 @@ to_chat(user, "There is no quantum pad data saved in [I]'s buffer!") return TRUE + else if(istype(I, /obj/item/quantum_keycard)) + var/obj/item/quantum_keycard/K = I + if(K.qpad) + to_chat(user, "You insert [K] into [src]'s card slot, activating it.") + interact(user, K.qpad) + else + to_chat(user, "You insert [K] into [src]'s card slot, initiating the link procedure.") + if(do_after(user, 40, target = src)) + to_chat(user, "You complete the link between [K] and [src].") + K.qpad = src + if(default_deconstruction_crowbar(I)) return return ..() -/obj/machinery/quantumpad/interact(mob/user) - if(!linked_pad || QDELETED(linked_pad)) +/obj/machinery/quantumpad/interact(mob/user, obj/machinery/quantumpad/target_pad = linked_pad) + if(!target_pad || QDELETED(target_pad)) if(!map_pad_link_id || !initMappedLink()) - to_chat(user, "There is no linked pad!") + to_chat(user, "Target pad not found!") return if(world.time < last_teleport + teleport_cooldown) @@ -93,18 +104,18 @@ to_chat(user, "[src] is charging up. Please wait.") return - if(linked_pad.teleporting) - to_chat(user, "Linked pad is busy. Please wait.") + if(target_pad.teleporting) + to_chat(user, "Target pad is busy. Please wait.") return - if(linked_pad.stat & NOPOWER) - to_chat(user, "Linked pad is not responding to ping.") + if(target_pad.stat & NOPOWER) + to_chat(user, "Target pad is not responding to ping.") return add_fingerprint(user) - doteleport(user) + doteleport(user, target_pad) /obj/machinery/quantumpad/proc/sparks() - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + var/datum/effect_system/spark_spread/quantum/s = new s.set_up(5, 1, get_turf(src)) s.start() @@ -117,8 +128,8 @@ if(linked_pad) ghost.forceMove(get_turf(linked_pad)) -/obj/machinery/quantumpad/proc/doteleport(mob/user) - if(linked_pad) +/obj/machinery/quantumpad/proc/doteleport(mob/user, obj/machinery/quantumpad/target_pad = linked_pad) + if(target_pad) playsound(get_turf(src), 'sound/weapons/flash.ogg', 25, 1) teleporting = TRUE @@ -130,7 +141,7 @@ to_chat(user, "[src] is unpowered!") teleporting = FALSE return - if(!linked_pad || QDELETED(linked_pad) || linked_pad.stat & NOPOWER) + if(!target_pad || QDELETED(target_pad) || target_pad.stat & NOPOWER) to_chat(user, "Linked pad is not responding to ping. Teleport aborted.") teleporting = FALSE return @@ -141,26 +152,30 @@ // use a lot of power use_power(10000 / power_efficiency) sparks() - linked_pad.sparks() + target_pad.sparks() flick("qpad-beam", src) playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) - flick("qpad-beam", linked_pad) - playsound(get_turf(linked_pad), 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) + flick("qpad-beam", target_pad) + playsound(get_turf(target_pad), 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5) for(var/atom/movable/ROI in get_turf(src)) + if(QDELETED(ROI)) + continue //sleeps in CHECK_TICK + // if is anchored, don't let through if(ROI.anchored) if(isliving(ROI)) var/mob/living/L = ROI - if(L.buckled) - // TP people on office chairs - if(L.buckled.anchored) - continue + //only TP living mobs buckled to non anchored items + if(!L.buckled || L.buckled.anchored) + continue else continue + //Don't TP camera mobs else if(!isobserver(ROI)) continue - do_teleport(ROI, get_turf(linked_pad)) + do_teleport(ROI, get_turf(target_pad),null,TRUE,null,null,null,null,TRUE, channel = TELEPORT_CHANNEL_QUANTUM) + CHECK_TICK /obj/machinery/quantumpad/proc/initMappedLink() . = FALSE diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index cc83e6502a..64081a77e4 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -66,7 +66,7 @@ visible_message("Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.") return if (ismovableatom(M)) - if(do_teleport(M, com.target)) + if(do_teleport(M, com.target, channel = TELEPORT_CHANNEL_BLUESPACE)) use_power(5000) if(!calibrated && prob(30 - ((accurate) * 10))) //oh dear a problem log_game("[M] ([key_name(M)]) was turned into a fly person") diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 2a24ce69b9..5e8515d3d5 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -95,7 +95,7 @@ var/obj/item/toy/crayon/CR = WM.color_source add_atom_colour(CR.paint_color, WASHABLE_COLOUR_PRIORITY) -/obj/item/reagents_containers/glass/rag/towel/machine_wash(obj/machinery/washing_machine/WM) +/obj/item/reagents_containers/rag/towel/machine_wash(obj/machinery/washing_machine/WM) if(WM.color_source) if(istype(WM.color_source, /obj/item/toy/crayon)) var/obj/item/toy/crayon/CR = WM.color_source diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 8a5a83379d..23be95ff16 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -76,6 +76,9 @@ return 0 if(energy_drain && !chassis.has_charge(energy_drain)) return 0 + if(chassis.equipment_disabled) + to_chat(chassis.occupant, "Error -- Equipment control unit is unresponsive.") + return 0 return 1 /obj/item/mecha_parts/mecha_equipment/proc/action(atom/target) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 80c92c7922..a8ba9850ff 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -17,7 +17,7 @@ return var/turf/T = get_turf(target) if(T) - do_teleport(chassis, T, 4) + do_teleport(chassis, T, 4, channel = TELEPORT_CHANNEL_BLUESPACE) return 1 diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index fc0665f51e..22aac63d2b 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -42,6 +42,7 @@ var/last_message = 0 var/add_req_access = 1 var/maint_access = 0 + var/equipment_disabled = 0 //disabled due to EMP var/dna_lock //dna-locking the mech var/list/proc_res = list() //stores proc owners, like proc_res["functionname"] = owner reference var/datum/effect_system/spark_spread/spark_system = new @@ -143,7 +144,6 @@ diag_hud_set_mechhealth() diag_hud_set_mechcell() diag_hud_set_mechstat() - diag_hud_set_mechtracking() /obj/mecha/get_cell() return cell @@ -205,6 +205,15 @@ GLOB.mechas_list -= src //global mech list return ..() +/obj/mecha/proc/restore_equipment() + equipment_disabled = 0 + if(istype(src, /obj/mecha/combat)) + mouse_pointer = 'icons/mecha/mecha_mouse.dmi' + if(occupant) + SEND_SOUND(occupant, sound('sound/items/timer.ogg', volume=50)) + to_chat(occupant, "Equipment control unit has been rebooted successfuly.") + occupant.update_mouse_pointer() + /obj/mecha/CheckParts(list/parts_list) ..() cell = locate(/obj/item/stock_parts/cell) in contents @@ -394,8 +403,6 @@ diag_hud_set_mechhealth() diag_hud_set_mechcell() diag_hud_set_mechstat() - diag_hud_set_mechtracking() - /obj/mecha/proc/drop_item()//Derpfix, but may be useful in future for engineering exosuits. return diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 714c66d032..3b957431f7 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -11,8 +11,8 @@ var/obj/mecha/M = new result(drop_location()) QDEL_NULL(M.cell) - var/atom/parent_atom = parent - M.CheckParts(parent_atom.contents) + var/obj/item/mecha_parts/chassis/parent_chassis = parent + M.CheckParts(parent_chassis.contents) SSblackbox.record_feedback("tally", "mechas_created", 1, M.name) QDEL_NULL(parent) diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 1524da42f2..9498eec3da 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -21,8 +21,9 @@ var/answer = TR.get_mecha_info() if(answer) dat += {"
[answer]
- Send message
- Show exosuit log | (EMP pulse)
"} + Send message
+ Show exosuit log
+ [TR.recharging?"Recharging EMP Pulse...
":"(EMP Pulse)
"]"} if(screen==1) dat += "

Log contents

" @@ -65,6 +66,7 @@ icon_state = "motion2" w_class = WEIGHT_CLASS_SMALL var/ai_beacon = FALSE //If this beacon allows for AI control. Exists to avoid using istype() on checking. + var/recharging = 0 /obj/item/mecha_parts/mecha_tracking/proc/get_mecha_info() if(!in_mecha()) @@ -102,10 +104,16 @@ return 0 /obj/item/mecha_parts/mecha_tracking/proc/shock() + if(recharging) + return var/obj/mecha/M = in_mecha() if(M) - M.emp_act(EMP_LIGHT) - qdel(src) + M.emp_act(EMP_HEAVY) + addtimer(CALLBACK(src, /obj/item/mecha_parts/mecha_tracking/proc/recharge), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) + recharging = 1 + +/obj/item/mecha_parts/mecha_tracking/proc/recharge() + recharging = 0 /obj/item/mecha_parts/mecha_tracking/proc/get_mecha_log() if(!ismecha(loc)) diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 367c750787..62a62b569d 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -149,7 +149,14 @@ use_power((cell.charge/3)/(severity*2)) take_damage(30 / severity, BURN, "energy", 1) log_message("EMP detected", color="red") - check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1) + + if(istype(src, /obj/mecha/combat)) + mouse_pointer = 'icons/mecha/mecha_mouse-disable.dmi' + occupant?.update_mouse_pointer() + if(!equipment_disabled && occupant) //prevent spamming this message with back-to-back EMPs + to_chat(occupant, "Error -- Connection to equipment control unit has been lost.") + addtimer(CALLBACK(src, /obj/mecha/proc/restore_equipment), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) + equipment_disabled = 1 /obj/mecha/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature>max_temperature) diff --git a/code/game/mecha/medical/medical.dm b/code/game/mecha/medical/medical.dm index e86b5174cc..8b4e48cd3e 100644 --- a/code/game/mecha/medical/medical.dm +++ b/code/game/mecha/medical/medical.dm @@ -1,8 +1,3 @@ -/obj/mecha/medical/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) - - /obj/mecha/medical/mechturn(direction) setDir(direction) playsound(src,'sound/mecha/mechmove01.ogg',40,1) @@ -18,4 +13,4 @@ var/result = step_rand(src) if(result) playsound(src,'sound/mecha/mechstep.ogg',25,1) - return result \ No newline at end of file + return result diff --git a/code/game/mecha/working/working.dm b/code/game/mecha/working/working.dm index 498ccd94fa..c9e7d99ac0 100644 --- a/code/game/mecha/working/working.dm +++ b/code/game/mecha/working/working.dm @@ -1,6 +1,3 @@ /obj/mecha/working internal_damage_threshold = 60 -/obj/mecha/working/Initialize() - . = ..() - trackers += new /obj/item/mecha_parts/mecha_tracking(src) diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 91df57052e..fbe25c5d1b 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -190,11 +190,11 @@ /obj/effect/anomaly/bluespace/anomalyEffect() ..() for(var/mob/living/M in range(1,src)) - do_teleport(M, locate(M.x, M.y, M.z), 4) + do_teleport(M, locate(M.x, M.y, M.z), 4, channel = TELEPORT_CHANNEL_BLUESPACE) /obj/effect/anomaly/bluespace/Bumped(atom/movable/AM) if(isliving(AM)) - do_teleport(AM, locate(AM.x, AM.y, AM.z), 8) + do_teleport(AM, locate(AM.x, AM.y, AM.z), 8, channel = TELEPORT_CHANNEL_BLUESPACE) /obj/effect/anomaly/bluespace/detonate() var/turf/T = safepick(get_area_turfs(impact_area)) diff --git a/code/game/objects/effects/blessing.dm b/code/game/objects/effects/blessing.dm index 06ba2bb47c..5df90d65c7 100644 --- a/code/game/objects/effects/blessing.dm +++ b/code/game/objects/effects/blessing.dm @@ -16,3 +16,12 @@ I.alpha = 64 I.appearance_flags = RESET_ALPHA add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/blessedAware, "blessing", I) + RegisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT, .proc/block_cult_teleport) + +/obj/effect/blessing/Destroy() + UnregisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT) + return ..() + +/obj/effect/blessing/proc/block_cult_teleport(datum/source, channel, turf/origin, turf/destination) + if(channel == TELEPORT_CHANNEL_CULT) + return COMPONENT_BLOCK_TELEPORT \ No newline at end of file diff --git a/code/game/objects/effects/effect_system/effects_sparks.dm b/code/game/objects/effects/effect_system/effects_sparks.dm index 0656d9b3ca..19b0dc76dd 100644 --- a/code/game/objects/effects/effect_system/effects_sparks.dm +++ b/code/game/objects/effects/effect_system/effects_sparks.dm @@ -26,7 +26,7 @@ /obj/effect/particle_effect/sparks/Initialize() . = ..() - flick("sparks", src) // replay the animation + flick(icon_state, src) // replay the animation playsound(src, "sparks", 100, TRUE) var/turf/T = loc if(isturf(T)) @@ -48,6 +48,8 @@ /datum/effect_system/spark_spread effect_type = /obj/effect/particle_effect/sparks +/datum/effect_system/spark_spread/quantum + effect_type = /obj/effect/particle_effect/sparks/quantum //electricity @@ -55,5 +57,9 @@ name = "lightning" icon_state = "electricity" +/obj/effect/particle_effect/sparks/quantum + name = "quantum sparks" + icon_state = "quantum_sparks" + /datum/effect_system/lightning_spread effect_type = /obj/effect/particle_effect/sparks/electricity diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index d69cfd38ef..631b87cada 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -20,6 +20,7 @@ var/mech_sized = FALSE var/obj/effect/portal/linked var/hardlinked = TRUE //Requires a linked portal at all times. Destroy if there's no linked portal, if there is destroy it when this one is deleted. + var/teleport_channel = TELEPORT_CHANNEL_BLUESPACE var/creator var/turf/hard_target //For when a portal needs a hard target and isn't to be linked. var/atmos_link = FALSE //Link source/destination atmos. @@ -34,6 +35,7 @@ icon = 'icons/obj/objects.dmi' icon_state = "anom" mech_sized = TRUE + teleport_channel = TELEPORT_CHANNEL_WORMHOLE /obj/effect/portal/Move(newloc) for(var/T in newloc) @@ -160,7 +162,7 @@ no_effect = TRUE else last_effect = world.time - if(do_teleport(M, real_target, innate_accuracy_penalty, no_effects = no_effect)) + if(do_teleport(M, real_target, innate_accuracy_penalty, no_effects = no_effect, channel = teleport_channel)) if(istype(M, /obj/item/projectile)) var/obj/item/projectile/P = M P.ignore_source_check = TRUE diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 384a1e4ee4..e17fe20977 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -579,6 +579,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/proc/get_belt_overlay() //Returns the icon used for overlaying the object on a belt return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', icon_state) +/obj/item/proc/get_worn_belt_overlay(icon_file) + return + /obj/item/proc/update_slot_icon() if(!ismob(loc)) return diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 8895bffd70..1ff3c7df9f 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -616,7 +616,7 @@ RLD name = "rapid-light-device (RLD)" desc = "A device used to rapidly provide lighting sources to an area. Reload with metal, plasteel, glass or compressed matter cartridges." icon = 'icons/obj/tools.dmi' - icon_state = "rld-5" + icon_state = "rld" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' matter = 500 @@ -625,6 +625,7 @@ RLD var/mode = LIGHT_MODE actions_types = list(/datum/action/item_action/pick_color) ammo_sections = 5 + has_ammobar = TRUE var/wallcost = 10 var/floorcost = 15 @@ -638,6 +639,10 @@ RLD var/color_choice = null +/obj/item/construction/rld/Initialize() + . = ..() + update_icon() + /obj/item/construction/rld/ui_action_click(mob/user, var/datum/action/A) if(istype(A, /datum/action/item_action/pick_color)) color_choice = input(user,"","Choose Color",color_choice) as color @@ -645,9 +650,10 @@ RLD ..() /obj/item/construction/rld/update_icon() - icon_state = "rld-[round((matter/max_matter) * 5, 1)]" ..() - + var/ratio = CEILING((matter / max_matter) * ammo_sections, 1) + cut_overlays() //To prevent infinite stacking of overlays + add_overlay("rld_light[ratio]") /obj/item/construction/rld/attack_self(mob/user) ..() diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm index cea8165e02..63f460f9aa 100644 --- a/code/game/objects/items/RCL.dm +++ b/code/game/objects/items/RCL.dm @@ -2,7 +2,7 @@ name = "rapid cable layer" desc = "A device used to rapidly deploy cables. It has screws on the side which can be removed to slide off the cables. Do not use without insulation!" icon = 'icons/obj/tools.dmi' - icon_state = "rcl-0" + icon_state = "rcl-empty" item_state = "rcl-0" var/obj/structure/cable/last var/obj/item/stack/cable_coil/loaded @@ -92,22 +92,32 @@ /obj/item/twohanded/rcl/update_icon() if(!loaded) - icon_state = "rcl-0" - item_state = "rcl-0" + icon_state = "rcl-empty" + item_state = "rcl-empty" return + cut_overlays() + var/cable_amount = 0 switch(loaded.amount) if(61 to INFINITY) - icon_state = "rcl-30" - item_state = "rcl" + cable_amount = 3 if(31 to 60) - icon_state = "rcl-20" - item_state = "rcl" + cable_amount = 2 if(1 to 30) - icon_state = "rcl-10" - item_state = "rcl" + cable_amount = 1 else - icon_state = "rcl-0" - item_state = "rcl-0" + cable_amount = 0 + + var/mutable_appearance/cable_overlay = mutable_appearance(icon, "rcl-[cable_amount]") + cable_overlay.color = GLOB.cable_colors[colors[current_color_index]] + if(cable_amount >= 1) + icon_state = "rcl" + item_state = "rcl" + add_overlay(cable_overlay) + else + icon_state = "rcl-empty" + item_state = "rcl-0" + add_overlay(cable_overlay) + /obj/item/twohanded/rcl/proc/is_empty(mob/user, loud = 1) update_icon() @@ -302,6 +312,7 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook) to_chat(user, "Color changed to [cwname]!") if(loaded) loaded.item_color= colors[current_color_index] + update_icon() if(wiring_gui_menu) wiringGuiUpdate(user) else if(istype(action, /datum/action/item_action/rcl_gui)) @@ -318,13 +329,29 @@ obj/item/twohanded/rcl/proc/getMobhook(mob/to_hook) /obj/item/twohanded/rcl/ghetto/update_icon() if(!loaded) - icon_state = "rclg-0" + icon_state = "rclg-empty" item_state = "rclg-0" return + cut_overlays() + var/cable_amount = 0 switch(loaded.amount) - if(1 to INFINITY) - icon_state = "rclg-1" - item_state = "rcl" + if(20 to INFINITY) + cable_amount = 3 + if(10 to 19) + cable_amount = 2 + if(1 to 9) + cable_amount = 1 else - icon_state = "rclg-1" - item_state = "rclg-1" + cable_amount = 0 + + var/mutable_appearance/cable_overlay = mutable_appearance(icon, "rcl-[cable_amount]") + cable_overlay.color = GLOB.cable_colors[colors[current_color_index]] + if(cable_amount >= 1) + icon_state = "rclg" + item_state = "rclg" + add_overlay(cable_overlay) + else + icon_state = "rclg-empty" + item_state = "rclg-0" + add_overlay(cable_overlay) + diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 1dbdb4efe0..141f7e510a 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -177,6 +177,8 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( desc = "A device used to rapidly pipe things." icon = 'icons/obj/tools.dmi' icon_state = "rpd" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' flags_1 = CONDUCT_1 force = 10 throwforce = 10 diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index a1ee62e2eb..7d2ffe0a02 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -110,6 +110,7 @@ /obj/item/circuitboard/computer/cloning name = "Cloning (Computer Board)" build_path = /obj/machinery/computer/cloning + var/list/records = list() /obj/item/circuitboard/computer/prototype_cloning name = "Prototype Cloning (Computer Board)" diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index f8b1d6e15b..a3ab9153ce 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -237,3 +237,10 @@ icon = 'icons/obj/abductor.dmi' icon_state = "multitool" toolspeed = 0.1 + +/obj/item/multitool/advanced + name = "advanced multitool" + desc = "The reproduction of an abductor's multitool, this multitool is a classy silver." + icon = 'icons/obj/advancedtools.dmi' + icon_state = "multitool" + toolspeed = 0.2 diff --git a/code/game/objects/items/devices/quantum_keycard.dm b/code/game/objects/items/devices/quantum_keycard.dm new file mode 100644 index 0000000000..37079722c0 --- /dev/null +++ b/code/game/objects/items/devices/quantum_keycard.dm @@ -0,0 +1,32 @@ +/obj/item/quantum_keycard + name = "quantum keycard" + desc = "A keycard able to link to a quantum pad's particle signature, allowing other quantum pads to travel there instead of their linked pad." + icon = 'icons/obj/device.dmi' + icon_state = "quantum_keycard" + item_state = "card-id" + lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' + w_class = WEIGHT_CLASS_TINY + var/obj/machinery/quantumpad/qpad + +/obj/item/quantum_keycard/examine(mob/user) + ..() + if(qpad) + to_chat(user, "It's currently linked to a quantum pad.") + to_chat(user, "Alt-click to unlink the keycard.") + else + to_chat(user, "Insert [src] into an active quantum pad to link it.") + +/obj/item/quantum_keycard/AltClick(mob/living/user) + if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + return + to_chat(user, "You start pressing [src]'s unlink button...") + if(do_after(user, 40, target = src)) + to_chat(user, "The keycard beeps twice and disconnects the quantum link.") + qpad = null + +/obj/item/quantum_keycard/update_icon() + if(qpad) + icon_state = "quantum_keycard_on" + else + icon_state = initial(icon_state) diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index dd7489d6b1..9adc0488aa 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -1,6 +1,6 @@ /obj/item/encryptionkey name = "standard encryption key" - desc = "An encryption key for a radio headset. Has no special codes in it. WHY DOES IT EXIST? ASK NANOTRASEN." + desc = "An encryption key for a radio headset." icon = 'icons/obj/radio.dmi' icon_state = "cypherkey" w_class = WEIGHT_CLASS_TINY @@ -9,124 +9,119 @@ var/independent = FALSE var/list/channels = list() +/obj/item/encryptionkey/Initialize() + . = ..() + if(!channels.len) + desc = "An encryption key for a radio headset. Has no special codes in it. You should probably tell a coder!" + +/obj/item/encryptionkey/examine(mob/user) + . = ..() + if(LAZYLEN(channels)) + var/list/examine_text_list = list() + for(var/i in channels) + examine_text_list += "[GLOB.channel_tokens[i]] - [lowertext(i)]" + + to_chat(user, "It can access the following channels; [jointext(examine_text_list, ", ")].") + /obj/item/encryptionkey/syndicate name = "syndicate encryption key" - desc = "An encryption key for a radio headset. To access the syndicate channel, use :t." icon_state = "syn_cypherkey" - channels = list("Syndicate" = 1) - syndie = 1//Signifies that it de-crypts Syndicate transmissions + channels = list(RADIO_CHANNEL_SYNDICATE = 1) + syndie = TRUE //Signifies that it de-crypts Syndicate transmissions /obj/item/encryptionkey/binary name = "binary translator key" - desc = "An encryption key for a radio headset. To access the binary channel, use :b." icon_state = "bin_cypherkey" translate_binary = TRUE /obj/item/encryptionkey/headset_sec name = "security radio encryption key" - desc = "An encryption key for a radio headset. To access the security channel, use :s." icon_state = "sec_cypherkey" - channels = list("Security" = 1) + channels = list(RADIO_CHANNEL_SECURITY = 1) /obj/item/encryptionkey/headset_eng name = "engineering radio encryption key" - desc = "An encryption key for a radio headset. To access the engineering channel, use :e." icon_state = "eng_cypherkey" - channels = list("Engineering" = 1) + channels = list(RADIO_CHANNEL_ENGINEERING = 1) /obj/item/encryptionkey/headset_rob name = "robotics radio encryption key" - desc = "An encryption key for a radio headset. To access the engineering channel, use :e. For research, use :n." icon_state = "rob_cypherkey" - channels = list("Science" = 1, "Engineering" = 1) + channels = list(RADIO_CHANNEL_SCIENCE = 1, RADIO_CHANNEL_ENGINEERING = 1) /obj/item/encryptionkey/headset_med name = "medical radio encryption key" - desc = "An encryption key for a radio headset. To access the medical channel, use :m." icon_state = "med_cypherkey" - channels = list("Medical" = 1) + channels = list(RADIO_CHANNEL_MEDICAL = 1) /obj/item/encryptionkey/headset_sci name = "science radio encryption key" - desc = "An encryption key for a radio headset. To access the science channel, use :n." icon_state = "sci_cypherkey" - channels = list("Science" = 1) + channels = list(RADIO_CHANNEL_SCIENCE = 1) /obj/item/encryptionkey/headset_medsci name = "medical research radio encryption key" - desc = "An encryption key for a radio headset. To access the medical channel, use :m. For science, use :n." icon_state = "medsci_cypherkey" - channels = list("Science" = 1, "Medical" = 1) + channels = list(RADIO_CHANNEL_SCIENCE = 1, RADIO_CHANNEL_MEDICAL = 1) /obj/item/encryptionkey/headset_com name = "command radio encryption key" - desc = "An encryption key for a radio headset. To access the command channel, use :c." icon_state = "com_cypherkey" - channels = list("Command" = 1) + channels = list(RADIO_CHANNEL_COMMAND = 1) /obj/item/encryptionkey/heads/captain name = "\proper the captain's encryption key" - desc = "An encryption key for a radio headset. Channels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." icon_state = "cap_cypherkey" - channels = list("Command" = 1, "Security" = 1, "Engineering" = 0, "Science" = 0, "Medical" = 0, "Supply" = 0, "Service" = 0) + channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_SECURITY = 1, RADIO_CHANNEL_ENGINEERING = 0, RADIO_CHANNEL_SCIENCE = 0, RADIO_CHANNEL_MEDICAL = 0, RADIO_CHANNEL_SUPPLY = 0, RADIO_CHANNEL_SERVICE = 0) /obj/item/encryptionkey/heads/rd name = "\proper the research director's encryption key" - desc = "An encryption key for a radio headset. To access the science channel, use :n. For command, use :c." icon_state = "rd_cypherkey" - channels = list("Science" = 1, "Command" = 1) + channels = list(RADIO_CHANNEL_SCIENCE = 1, RADIO_CHANNEL_COMMAND = 1) /obj/item/encryptionkey/heads/hos name = "\proper the head of security's encryption key" - desc = "An encryption key for a radio headset. To access the security channel, use :s. For command, use :c." icon_state = "hos_cypherkey" - channels = list("Security" = 1, "Command" = 1) + channels = list(RADIO_CHANNEL_SECURITY = 1, RADIO_CHANNEL_COMMAND = 1) /obj/item/encryptionkey/heads/ce name = "\proper the chief engineer's encryption key" - desc = "An encryption key for a radio headset. To access the engineering channel, use :e. For command, use :c." icon_state = "ce_cypherkey" - channels = list("Engineering" = 1, "Command" = 1) + channels = list(RADIO_CHANNEL_ENGINEERING = 1, RADIO_CHANNEL_COMMAND = 1) /obj/item/encryptionkey/heads/cmo name = "\proper the chief medical officer's encryption key" - desc = "An encryption key for a radio headset. To access the medical channel, use :m. For command, use :c." icon_state = "cmo_cypherkey" - channels = list("Medical" = 1, "Command" = 1) + channels = list(RADIO_CHANNEL_MEDICAL = 1, RADIO_CHANNEL_COMMAND = 1) /obj/item/encryptionkey/heads/hop name = "\proper the head of personnel's encryption key" - desc = "An encryption key for a radio headset. Channels are as follows: :u - supply, :v - service, :c - command." icon_state = "hop_cypherkey" - channels = list("Supply" = 1, "Service" = 1, "Command" = 1) + channels = list(RADIO_CHANNEL_SUPPLY = 1, RADIO_CHANNEL_SERVICE = 1, RADIO_CHANNEL_COMMAND = 1) /obj/item/encryptionkey/headset_cargo name = "supply radio encryption key" - desc = "An encryption key for a radio headset. To access the supply channel, use :u." icon_state = "cargo_cypherkey" - channels = list("Supply" = 1) + channels = list(RADIO_CHANNEL_SUPPLY = 1) /obj/item/encryptionkey/headset_mining name = "mining radio encryption key" - desc = "An encryption key for a radio headset. To access the supply channel, use :u. For science, use :n." icon_state = "cargo_cypherkey" - channels = list("Supply" = 1, "Science" = 1) + channels = list(RADIO_CHANNEL_SUPPLY = 1, RADIO_CHANNEL_SCIENCE = 1) /obj/item/encryptionkey/headset_service name = "service radio encryption key" - desc = "An encryption key for a radio headset. To access the service channel, use :v." icon_state = "srv_cypherkey" - channels = list("Service" = 1) + channels = list(RADIO_CHANNEL_SERVICE = 1) /obj/item/encryptionkey/headset_cent name = "\improper CentCom radio encryption key" - desc = "An encryption key for a radio headset. To access the CentCom channel, use :y." icon_state = "cent_cypherkey" independent = TRUE - channels = list("CentCom" = 1) + channels = list(RADIO_CHANNEL_CENTCOM = 1) /obj/item/encryptionkey/ai //ported from NT, this goes 'inside' the AI. - channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1) + channels = list(RADIO_CHANNEL_COMMAND = 1, RADIO_CHANNEL_SECURITY = 1, RADIO_CHANNEL_ENGINEERING = 1, RADIO_CHANNEL_SCIENCE = 1, RADIO_CHANNEL_MEDICAL = 1, RADIO_CHANNEL_SUPPLY = 1, RADIO_CHANNEL_SERVICE = 1, RADIO_CHANNEL_AI_PRIVATE = 1) /obj/item/encryptionkey/secbot - channels = list("AI Private"=1,"Security"=1) + channels = list(RADIO_CHANNEL_AI_PRIVATE = 1, RADIO_CHANNEL_SECURITY = 1) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index ea9c6fb99e..cca5eb4217 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -1,3 +1,19 @@ +// Used for translating channels to tokens on examination +GLOBAL_LIST_INIT(channel_tokens, list( + RADIO_CHANNEL_COMMON = RADIO_KEY_COMMON, + RADIO_CHANNEL_SCIENCE = RADIO_TOKEN_SCIENCE, + RADIO_CHANNEL_COMMAND = RADIO_TOKEN_COMMAND, + RADIO_CHANNEL_MEDICAL = RADIO_TOKEN_MEDICAL, + RADIO_CHANNEL_ENGINEERING = RADIO_TOKEN_ENGINEERING, + RADIO_CHANNEL_SECURITY = RADIO_TOKEN_SECURITY, + RADIO_CHANNEL_CENTCOM = RADIO_TOKEN_CENTCOM, + RADIO_CHANNEL_SYNDICATE = RADIO_TOKEN_SYNDICATE, + RADIO_CHANNEL_SUPPLY = RADIO_TOKEN_SUPPLY, + RADIO_CHANNEL_SERVICE = RADIO_TOKEN_SERVICE, + MODE_BINARY = MODE_TOKEN_BINARY, + RADIO_CHANNEL_AI_PRIVATE = RADIO_TOKEN_AI_PRIVATE +)) + /obj/item/radio/headset name = "radio headset" desc = "An updated, modular intercom that fits over the head. Takes encryption keys." @@ -17,9 +33,24 @@ /obj/item/radio/headset/examine(mob/user) ..() - to_chat(user, "To speak on the general radio frequency, use ; before speaking.") - if (command) - to_chat(user, "Alt-click to toggle the high-volume mode.") + + if(item_flags & IN_INVENTORY && loc == user) + // construction of frequency description + var/list/avail_chans = list("Use [RADIO_KEY_COMMON] for the currently tuned frequency") + if(translate_binary) + avail_chans += "use [MODE_TOKEN_BINARY] for [MODE_BINARY]" + if(length(channels)) + for(var/i in 1 to length(channels)) + if(i == 1) + avail_chans += "use [MODE_TOKEN_DEPARTMENT] or [GLOB.channel_tokens[channels[i]]] for [lowertext(channels[i])]" + else + avail_chans += "use [GLOB.channel_tokens[channels[i]]] for [lowertext(channels[i])]" + to_chat(user, "A small screen on the headset displays the following available frequencies:\n[english_list(avail_chans)].") + + if(command) + to_chat(user, "Alt-click to toggle the high-volume mode.") + else + to_chat(user, "A small screen on the headset flashes, it's too small to read without holding or wearing the headset.") /obj/item/radio/headset/Initialize() . = ..() @@ -47,7 +78,7 @@ /obj/item/radio/headset/syndicate/alt //undisguised bowman with flash protection name = "syndicate headset" - desc = "A syndicate headset that can be used to hear all radio frequencies. Protects ears from flashbangs. \nTo access the syndicate channel, use ; before speaking." + desc = "A syndicate headset that can be used to hear all radio frequencies. Protects ears from flashbangs." icon_state = "syndie_headset" item_state = "syndie_headset" @@ -72,13 +103,13 @@ /obj/item/radio/headset/headset_sec name = "security radio headset" - desc = "This is used by your elite security force.\nTo access the security channel, use :s." + desc = "This is used by your elite security force." icon_state = "sec_headset" keyslot = new /obj/item/encryptionkey/headset_sec /obj/item/radio/headset/headset_sec/alt name = "security bowman headset" - desc = "This is used by your elite security force. Protects ears from flashbangs.\nTo access the security channel, use :s." + desc = "This is used by your elite security force. Protects ears from flashbangs." icon_state = "sec_headset_alt" item_state = "sec_headset_alt" @@ -88,31 +119,31 @@ /obj/item/radio/headset/headset_eng name = "engineering radio headset" - desc = "When the engineers wish to chat like girls.\nTo access the engineering channel, use :e." + desc = "When the engineers wish to chat like girls." icon_state = "eng_headset" keyslot = new /obj/item/encryptionkey/headset_eng /obj/item/radio/headset/headset_rob name = "robotics radio headset" - desc = "Made specifically for the roboticists, who cannot decide between departments.\nTo access the engineering channel, use :e. For research, use :n." + desc = "Made specifically for the roboticists, who cannot decide between departments." icon_state = "rob_headset" keyslot = new /obj/item/encryptionkey/headset_rob /obj/item/radio/headset/headset_med name = "medical radio headset" - desc = "A headset for the trained staff of the medbay.\nTo access the medical channel, use :m." + desc = "A headset for the trained staff of the medbay." icon_state = "med_headset" keyslot = new /obj/item/encryptionkey/headset_med /obj/item/radio/headset/headset_sci name = "science radio headset" - desc = "A sciency headset. Like usual.\nTo access the science channel, use :n." + desc = "A sciency headset. Like usual." icon_state = "sci_headset" keyslot = new /obj/item/encryptionkey/headset_sci /obj/item/radio/headset/headset_medsci name = "medical research radio headset" - desc = "A headset that is a result of the mating between medical and science.\nTo access the medical channel, use :m. For science, use :n." + desc = "A headset that is a result of the mating between medical and science." icon_state = "medsci_headset" keyslot = new /obj/item/encryptionkey/headset_medsci @@ -127,13 +158,13 @@ /obj/item/radio/headset/heads/captain name = "\proper the captain's headset" - desc = "The headset of the king.\nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." + desc = "The headset of the king." icon_state = "com_headset" keyslot = new /obj/item/encryptionkey/heads/captain /obj/item/radio/headset/heads/captain/alt name = "\proper the captain's bowman headset" - desc = "The headset of the boss. Protects ears from flashbangs.\nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." + desc = "The headset of the boss. Protects ears from flashbangs." icon_state = "com_headset_alt" item_state = "com_headset_alt" @@ -143,19 +174,19 @@ /obj/item/radio/headset/heads/rd name = "\proper the research director's headset" - desc = "Headset of the fellow who keeps society marching towards technological singularity.\nTo access the science channel, use :n. For command, use :c." + desc = "Headset of the fellow who keeps society marching towards technological singularity." icon_state = "com_headset" keyslot = new /obj/item/encryptionkey/heads/rd /obj/item/radio/headset/heads/hos name = "\proper the head of security's headset" - desc = "The headset of the man in charge of keeping order and protecting the station.\nTo access the security channel, use :s. For command, use :c." + desc = "The headset of the man in charge of keeping order and protecting the station." icon_state = "com_headset" keyslot = new /obj/item/encryptionkey/heads/hos /obj/item/radio/headset/heads/hos/alt name = "\proper the head of security's bowman headset" - desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs.\nTo access the security channel, use :s. For command, use :c." + desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs." icon_state = "com_headset_alt" item_state = "com_headset_alt" @@ -165,43 +196,43 @@ /obj/item/radio/headset/heads/ce name = "\proper the chief engineer's headset" - desc = "The headset of the guy in charge of keeping the station powered and undamaged.\nTo access the engineering channel, use :e. For command, use :c." + desc = "The headset of the guy in charge of keeping the station powered and undamaged." icon_state = "com_headset" keyslot = new /obj/item/encryptionkey/heads/ce /obj/item/radio/headset/heads/cmo name = "\proper the chief medical officer's headset" - desc = "The headset of the highly trained medical chief.\nTo access the medical channel, use :m. For command, use :c." + desc = "The headset of the highly trained medical chief." icon_state = "com_headset" keyslot = new /obj/item/encryptionkey/heads/cmo /obj/item/radio/headset/heads/hop name = "\proper the head of personnel's headset" - desc = "The headset of the guy who will one day be captain.\nChannels are as follows: :u - supply, :v - service, :c - command." + desc = "The headset of the guy who will one day be captain." icon_state = "com_headset" keyslot = new /obj/item/encryptionkey/heads/hop /obj/item/radio/headset/headset_cargo name = "supply radio headset" - desc = "A headset used by the QM and his slaves.\nTo access the supply channel, use :u." + desc = "A headset used by the QM and his slaves." icon_state = "cargo_headset" keyslot = new /obj/item/encryptionkey/headset_cargo /obj/item/radio/headset/headset_cargo/mining name = "mining radio headset" - desc = "Headset used by shaft miners.\nTo access the supply channel, use :u. For science, use :n." + desc = "Headset used by shaft miners." icon_state = "mine_headset" keyslot = new /obj/item/encryptionkey/headset_mining /obj/item/radio/headset/headset_srv name = "service radio headset" - desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean.\nTo access the service channel, use :v." + desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean." icon_state = "srv_headset" keyslot = new /obj/item/encryptionkey/headset_service /obj/item/radio/headset/headset_cent name = "\improper CentCom headset" - desc = "A headset used by the upper echelons of Nanotrasen.\nTo access the CentCom channel, use :y." + desc = "A headset used by the upper echelons of Nanotrasen." icon_state = "cent_headset" keyslot = new /obj/item/encryptionkey/headset_com keyslot2 = new /obj/item/encryptionkey/headset_cent @@ -215,7 +246,7 @@ /obj/item/radio/headset/headset_cent/alt name = "\improper CentCom bowman headset" - desc = "A headset especially for emergency response personnel. Protects ears from flashbangs.\nTo access the CentCom channel, use :y." + desc = "A headset especially for emergency response personnel. Protects ears from flashbangs." icon_state = "cent_headset_alt" item_state = "cent_headset_alt" keyslot = null diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 1d51aabf86..7c136f556e 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -221,7 +221,7 @@ // From the channel, determine the frequency and get a reference to it. var/freq if(channel && channels && channels.len > 0) - if(channel == "department") + if(channel == MODE_DEPARTMENT) channel = channels[1] freq = secure_radio_connections[channel] if (!channels[channel]) // if the channel is turned off, don't broadcast diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 21f6961e5d..71687f0d5a 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -1,4 +1,3 @@ - ///books that teach things (intrinsic actions like bar flinging, spells like fireball or smoke, or martial arts)/// /obj/item/book/granter @@ -13,19 +12,50 @@ /obj/item/book/granter/proc/turn_page(mob/user) playsound(user, pick('sound/effects/pageturn1.ogg','sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg'), 30, 1) if(do_after(user,50, user)) - to_chat(user, "[pick(remarks)]") + if(remarks.len) + to_chat(user, "[pick(remarks)]") + else + to_chat(user, "You keep reading...") return TRUE return FALSE /obj/item/book/granter/proc/recoil(mob/user) //nothing so some books can just return +/obj/item/book/granter/proc/already_known(mob/user) + return FALSE + +/obj/item/book/granter/proc/on_reading_start(mob/user) + to_chat(user, "You start reading [name]...") + +/obj/item/book/granter/proc/on_reading_stopped(mob/user) + to_chat(user, "You stop reading...") + +/obj/item/book/granter/proc/on_reading_finished(mob/user) + to_chat(user, "You finish reading [name]!") + /obj/item/book/granter/proc/onlearned(mob/user) used = TRUE + /obj/item/book/granter/attack_self(mob/user) - if(reading == TRUE) + if(reading) to_chat(user, "You're already reading this!") return FALSE + if(already_known(user)) + return FALSE + if(used && oneuse) + recoil(user) + else + on_reading_start(user) + reading = TRUE + for(var/i=1, i<=pages_to_mastery, i++) + if(!turn_page(user)) + on_reading_stopped() + reading = FALSE + return + if(do_after(user,50, user)) + on_reading_finished(user) + reading = FALSE return TRUE ///ACTION BUTTONS/// @@ -34,33 +64,23 @@ var/granted_action var/actionname = "catching bugs" //might not seem needed but this makes it so you can safely name action buttons toggle this or that without it fucking up the granter, also caps -/obj/item/book/granter/action/attack_self(mob/user) - . = ..() - if(!.) - return +/obj/item/book/granter/action/already_known(mob/user) if(!granted_action) - return - var/datum/action/G = new granted_action + return TRUE for(var/datum/action/A in user.actions) - if(A.type == G.type) + if(A.type == granted_action) to_chat(user, "You already know all about [actionname].") - qdel(G) - return - if(used == TRUE && oneuse == TRUE) - recoil(user) - else - to_chat(user, "You start reading about [actionname]...") - reading = TRUE - for(var/i=1, i<=pages_to_mastery, i++) - if(!turn_page(user)) - to_chat(user, "You stop reading...") - reading = FALSE - qdel(G) - return - if(do_after(user,50, user)) - to_chat(user, "You feel like you've got a good handle on [actionname]!") - G.Grant(user) - reading = FALSE + return TRUE + return FALSE + +/obj/item/book/granter/action/on_reading_start(mob/user) + to_chat(user, "You start reading about [actionname]...") + +/obj/item/book/granter/action/on_reading_finished(mob/user) + to_chat(user, "You feel like you've got a good handle on [actionname]!") + var/datum/action/G = new granted_action + G.Grant(user) + onlearned(user) /obj/item/book/granter/action/drink_fling granted_action = /datum/action/innate/drink_fling @@ -120,38 +140,28 @@ var/spell var/spellname = "conjure bugs" -/obj/item/book/granter/spell/attack_self(mob/user) - . = ..() - if(!.) - return +/obj/item/book/granter/spell/already_known(mob/user) if(!spell) - return - var/obj/effect/proc_holder/spell/S = new spell + return TRUE for(var/obj/effect/proc_holder/spell/knownspell in user.mind.spell_list) - if(knownspell.type == S.type) + if(knownspell.type == spell) if(user.mind) if(iswizard(user)) - to_chat(user,"You're already far more versed in this spell than this flimsy howto book can provide.") + to_chat(user,"You're already far more versed in this spell than this flimsy how-to book can provide.") else to_chat(user,"You've already read this one.") - return - if(used == TRUE && oneuse == TRUE) - recoil(user) - else - to_chat(user, "You start reading about casting [spellname]...") - reading = TRUE - for(var/i=1, i<=pages_to_mastery, i++) - if(!turn_page(user)) - to_chat(user, "You stop reading...") - reading = FALSE - qdel(S) - return - if(do_after(user,50, user)) - to_chat(user, "You feel like you've experienced enough to cast [spellname]!") - user.mind.AddSpell(S) - user.log_message("learned the spell [spellname] ([S])", LOG_ATTACK, color="orange") - onlearned(user) - reading = FALSE + return TRUE + return FALSE + +/obj/item/book/granter/spell/on_reading_start(mob/user) + to_chat(user, "You start reading about casting [spellname]...") + +/obj/item/book/granter/spell/on_reading_finished(mob/user) + to_chat(user, "You feel like you've experienced enough to cast [spellname]!") + var/obj/effect/proc_holder/spell/S = new spell + user.mind.AddSpell(S) + user.log_message("learned the spell [spellname] ([S])", LOG_ATTACK, color="orange") + onlearned(user) /obj/item/book/granter/spell/recoil(mob/user) user.visible_message("[src] glows in a black light!") @@ -280,7 +290,8 @@ if(ishuman(user)) to_chat(user,"HORSIE HAS RISEN") var/obj/item/clothing/magichead = new /obj/item/clothing/mask/horsehead/cursed(user.drop_location()) - user.dropItemToGround(user.wear_mask, TRUE) + if(!user.dropItemToGround(user.wear_mask)) + qdel(user.wear_mask) user.equip_to_slot_if_possible(magichead, SLOT_WEAR_MASK, TRUE, TRUE) qdel(src) else @@ -327,35 +338,24 @@ var/martialname = "bug jitsu" var/greet = "You feel like you have mastered the art in breaking code. Nice work, jackass." -/obj/item/book/granter/martial/attack_self(mob/user) - . = ..() - if(!.) - return +/obj/item/book/granter/martial/already_known(mob/user) if(!martial) - return + return TRUE + var/datum/martial_art/MA = martial + if(user.mind.has_martialart(initial(MA.id))) + to_chat(user,"You already know [martialname]!") + return TRUE + return FALSE + +/obj/item/book/granter/martial/on_reading_start(mob/user) + to_chat(user, "You start reading about [martialname]...") + +/obj/item/book/granter/martial/on_reading_finished(mob/user) + to_chat(user, "[greet]") var/datum/martial_art/MA = new martial - if(user.mind.martial_art) - for(var/datum/martial_art/knownmartial in user.mind.martial_art) - if(knownmartial.type == MA.type) - to_chat(user,"You already know [martialname]!") - return - if(used == TRUE && oneuse == TRUE) - recoil(user) - else - to_chat(user, "You start reading about [martialname]...") - reading = TRUE - for(var/i=1, i<=pages_to_mastery, i++) - if(!turn_page(user)) - to_chat(user, "You stop reading...") - reading = FALSE - qdel(MA) - return - if(do_after(user,50, user)) - to_chat(user, "[greet]") - MA.teach(user) - user.log_message("learned the martial art [martialname] ([MA])", LOG_ATTACK, color="orange") - onlearned(user) - reading = FALSE + MA.teach(user) + user.log_message("learned the martial art [martialname] ([MA])", LOG_ATTACK, color="orange") + onlearned(user) /obj/item/book/granter/martial/cqc martial = /datum/martial_art/cqc @@ -416,3 +416,44 @@ icon_state = "blankscroll" // I did not include mushpunch's grant, it is not a book and the item does it just fine. + + +//Crafting Recipe books + +/obj/item/book/granter/crafting_recipe + var/list/crafting_recipe_types = list() //Use full /datum/crafting_recipe/what_you_craft + +/obj/item/book/granter/crafting_recipe/on_reading_finished(mob/user) + . = ..() + if(!user.mind) + return + for(var/crafting_recipe_type in crafting_recipe_types) + var/datum/crafting_recipe/R = crafting_recipe_type + user.mind.teach_crafting_recipe(crafting_recipe_type) + to_chat(user,"You learned how to make [initial(R.name)].") + +/obj/item/book/granter/crafting_recipe/cooking_sweets_101 //We start at 101 for 103 and 105 + name = "Cooking Desserts 101" + desc = "A cook book that teaches you some more of the newest desserts. AI approved, and a best seller on Honkplanet." + crafting_recipe_types = list(/datum/crafting_recipe/food/mimetart, /datum/crafting_recipe/food/berrytart, /datum/crafting_recipe/food/cocolavatart, /datum/crafting_recipe/food/clowncake, /datum/crafting_recipe/food/vanillacake) + icon_state = "cooking_learing_sweets" + oneuse = FALSE + remarks = list("So that is how icing is made!", "Placing fruit on top? How simple...", "Huh layering cake seems harder then this...", "This book smells like candy", "A clown must have made this page, or they forgot to spell check it before printing...", "Wait, a way to cook slime to be safe?") + +//Later content when I have free time - Trilby Date:02-Aug-2019 + +/obj/item/book/granter/crafting_recipe/under_the_oven //Illegal cook book + name = "Under The Oven" + desc = "A cook book that teaches you many illegal and fun candys. MALF AI approved, and a best seller on the blackmarket." + crafting_recipe_types = list() + icon_state = "cooking_learing_illegal" + oneuse = FALSE + remarks = list() + +/obj/item/book/granter/crafting_recipe/coldcooking //IceCream + name = "Cooking with Ice" + desc = "A cook book that teaches you many old icecream treats." + crafting_recipe_types = list() + icon_state = "cooking_learing_ice" + oneuse = FALSE + remarks = list() \ No newline at end of file diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 5e19577b46..36a92b3db9 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -26,6 +26,7 @@ gender = PLURAL icon = 'icons/obj/items_and_weapons.dmi' icon_state = "handcuff" + item_state = "handcuff" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' flags_1 = CONDUCT_1 @@ -103,7 +104,6 @@ desc = "A pair of restraints fashioned from long strands of flesh." icon = 'icons/obj/mining.dmi' icon_state = "sinewcuff" - item_state = "sinewcuff" breakouttime = 300 //Deciseconds = 30s cuffsound = 'sound/weapons/cablecuff.ogg' @@ -172,6 +172,13 @@ desc = "Fake handcuffs meant for gag purposes." breakouttime = 10 //Deciseconds = 1s +/obj/item/restraints/handcuffs/fake/kinky + name = "kinky handcuffs" + desc = "Fake handcuffs meant for erotic roleplay." + icon = 'modular_citadel/icons/obj/items_and_weapons.dmi' + icon_state = "handcuffgag" + item_state = "kinkycuff" + /obj/item/restraints/handcuffs/cable/attackby(obj/item/I, mob/user, params) ..() if(istype(I, /obj/item/stack/rods)) @@ -206,7 +213,8 @@ /obj/item/restraints/handcuffs/cable/zipties name = "zipties" desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use." - icon_state = "cuff" + icon_state = "zipties" + item_state = "zipties" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' materials = list() @@ -217,7 +225,6 @@ /obj/item/restraints/handcuffs/cable/zipties/used desc = "A pair of broken zipties." icon_state = "cuff_used" - item_state = "cuff" /obj/item/restraints/handcuffs/cable/zipties/used/attack() return @@ -230,6 +237,7 @@ gender = PLURAL icon = 'icons/obj/items_and_weapons.dmi' icon_state = "handcuff" + item_state = "legcuff" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' flags_1 = CONDUCT_1 diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm index 6e977331a6..65a4bd542b 100644 --- a/code/game/objects/items/his_grace.dm +++ b/code/game/objects/items/his_grace.dm @@ -174,6 +174,7 @@ /obj/item/his_grace/proc/consume(mob/living/meal) //Here's your dinner, Mr. Grace. if(!meal) return + var/victims = 0 meal.visible_message("[src] swings open and devours [meal]!", "[src] consumes you!") meal.adjustBruteLoss(200) playsound(meal, 'sound/misc/desceration-02.ogg', 75, 1) @@ -185,7 +186,10 @@ bloodthirst = max(LAZYLEN(contents), 1) //Never fully sated, and His hunger will only grow. else bloodthirst = HIS_GRACE_CONSUME_OWNER - if(LAZYLEN(contents) >= victims_needed) + for(var/mob/living/C in contents) + if(C.mind) + victims++ + if(victims >= victims_needed) ascend() update_stats() diff --git a/code/game/objects/items/implants/implant_krav_maga.dm b/code/game/objects/items/implants/implant_krav_maga.dm index 3a751ecd0e..373658b386 100644 --- a/code/game/objects/items/implants/implant_krav_maga.dm +++ b/code/game/objects/items/implants/implant_krav_maga.dm @@ -21,7 +21,7 @@ return if(!H.mind) return - if(istype(H.mind.martial_art, /datum/martial_art/krav_maga)) + if(H.mind.has_martialart(MARTIALART_KRAVMAGA)) style.remove(H) else style.teach(H,1) diff --git a/code/game/objects/items/implants/implant_stealth.dm b/code/game/objects/items/implants/implant_stealth.dm index 84f9f5f454..eb58d76d1b 100644 --- a/code/game/objects/items/implants/implant_stealth.dm +++ b/code/game/objects/items/implants/implant_stealth.dm @@ -9,6 +9,7 @@ name = "inconspicious box" desc = "It's so normal that you didn't notice it before." icon_state = "agentbox" + max_integrity = 1 use_mob_movespeed = TRUE /obj/structure/closet/cardboard/agent/proc/go_invisible() diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 0d45960767..daeceb7f87 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -89,6 +89,12 @@ if(istype(B)) playsound(B, 'sound/items/sheath.ogg', 25, 1) +/obj/item/melee/sabre/get_belt_overlay() + return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "sabre") + +/obj/item/melee/sabre/get_worn_belt_overlay(icon_file) + return mutable_appearance(icon_file, "-sabre") + /obj/item/melee/sabre/suicide_act(mob/living/user) user.visible_message("[user] is trying to cut off all [user.p_their()] limbs with [src]! it looks like [user.p_theyre()] trying to commit suicide!") var/i = 0 @@ -147,13 +153,19 @@ flags_1 = CONDUCT_1 obj_flags = UNIQUE_RENAME w_class = WEIGHT_CLASS_BULKY - sharpness = IS_SHARP_ACCURATE //It cant be sharpend cook -_- + sharpness = IS_SHARP_ACCURATE //It cant be sharpend cook -_- attack_verb = list("slashed", "cut", "pierces", "pokes") /obj/item/melee/rapier/Initialize() . = ..() AddComponent(/datum/component/butchering, 20, 65, 0) +/obj/item/melee/rapier/get_belt_overlay() + return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "rapier") + +/obj/item/melee/rapier/get_worn_belt_overlay(icon_file) + return mutable_appearance(icon_file, "-rapier") + /obj/item/melee/classic_baton name = "police baton" desc = "A wooden truncheon for beating criminal scum." diff --git a/code/game/objects/items/scrolls.dm b/code/game/objects/items/scrolls.dm index 07f6edb828..28a4664a24 100644 --- a/code/game/objects/items/scrolls.dm +++ b/code/game/objects/items/scrolls.dm @@ -66,7 +66,8 @@ to_chat(user, "The spell matrix was unable to locate a suitable teleport destination for an unknown reason. Sorry.") return - user.forceMove(pick(L)) - - smoke.start() - uses-- + if(do_teleport(user, pick(L), forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE)) + smoke.start() + uses-- + else + to_chat(user, "The spell matrix was disrupted by something near the destination.") diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index 522e1a1153..49a735af9c 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -33,7 +33,7 @@ use(1) /obj/item/stack/ore/bluespace_crystal/proc/blink_mob(mob/living/L) - do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg') + do_teleport(L, get_turf(L), blink_range, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) /obj/item/stack/ore/bluespace_crystal/throw_impact(atom/hit_atom) if(!..()) // not caught in mid-air diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 4bb3359c2f..5610cbad9a 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -18,7 +18,7 @@ /obj/item/stack/medical/attack(mob/living/M, mob/user) - if(M.stat == DEAD) + if(M.stat == DEAD && !stop_bleeding) var/t_him = "it" if(M.gender == MALE) t_him = "him" diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 5594059463..c65129ec85 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -415,6 +415,8 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ new/datum/stack_recipe("brass window - directional", /obj/structure/window/reinforced/clockwork/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \ new/datum/stack_recipe("brass window - fulltile", /obj/structure/window/reinforced/clockwork/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \ new/datum/stack_recipe("brass chair", /obj/structure/chair/brass, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("brass bar stool", /obj/structure/chair/stool/bar/brass, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("brass stool", /obj/structure/chair/stool/brass, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("brass table frame", /obj/structure/table_frame/brass, 1, time = 5, one_per_turf = TRUE, on_floor = TRUE), \ null, new/datum/stack_recipe("sender - pressure sensor", /obj/structure/destructible/clockwork/trap/trigger/pressure_sensor, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ @@ -426,7 +428,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ new/datum/stack_recipe("receiver - steam vent", /obj/structure/destructible/clockwork/trap/steam_vent, 3, time = 30, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_CARDINALS), \ new/datum/stack_recipe("receiver - power nullifier", /obj/structure/destructible/clockwork/trap/power_nullifier, 5, time = 20, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_CARDINALS), \ null, - new/datum/stack_recipe("brass flask", /obj/item/reagent_containers/food/drinks/holyoil/null), \ + new/datum/stack_recipe("brass flask", /obj/item/reagent_containers/food/drinks/bottle/holyoil/empty), \ )) @@ -478,6 +480,8 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ new/datum/stack_recipe("bronze boots", /obj/item/clothing/shoes/bronze), \ null, new/datum/stack_recipe("bronze chair", /obj/structure/chair/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("bronze bar stool", /obj/structure/chair/stool/bar/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("bronze stool", /obj/structure/chair/stool/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ )) /obj/item/stack/tile/bronze diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index e3494e36cf..d71b91c8dc 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -10,6 +10,7 @@ attack_verb = list("whipped", "lashed", "disciplined") max_integrity = 300 var/content_overlays = FALSE //If this is true, the belt will gain overlays based on what it's holding + var/worn_overlays = FALSE //worn counterpart of the above. /obj/item/storage/belt/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins belting [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -23,6 +24,12 @@ add_overlay(M) ..() +/obj/item/storage/belt/worn_overlays(isinhands, icon_file) + . = ..() + if(!isinhands && worn_overlays) + for(var/obj/item/I in contents) + . += I.get_worn_belt_overlay(icon_file) + /obj/item/storage/belt/Initialize() . = ..() update_icon() @@ -653,6 +660,10 @@ icon_state = "sheath" item_state = "sheath" w_class = WEIGHT_CLASS_BULKY + content_overlays = TRUE + worn_overlays = TRUE + var/list/fitting_swords = list(/obj/item/melee/sabre, /obj/item/melee/baton/stunsword) + var/starting_sword = /obj/item/melee/sabre /obj/item/storage/belt/sabre/ComponentInitialize() . = ..() @@ -660,35 +671,7 @@ STR.max_items = 1 STR.rustle_sound = FALSE STR.max_w_class = WEIGHT_CLASS_BULKY - STR.can_hold = typecacheof(list( - /obj/item/melee/sabre - )) - -/obj/item/storage/belt/sabre/rapier - name = "rapier sheath" - desc = "A black, thin sheath that looks to house only a long thin blade. Feels like its made of metal." - icon_state = "rsheath" - item_state = "rsheath" - force = 5 - throwforce = 15 - block_chance = 30 - w_class = WEIGHT_CLASS_BULKY - attack_verb = list("bashed", "slashes", "prods", "pokes") - -/obj/item/storage/belt/sabre/rapier/ComponentInitialize() - . = ..() - GET_COMPONENT(STR, /datum/component/storage) - STR.max_items = 1 - STR.rustle_sound = FALSE - STR.max_w_class = WEIGHT_CLASS_BULKY - STR.can_hold = typecacheof(list( - /obj/item/melee/rapier - )) - -/obj/item/storage/belt/sabre/rapier/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(attack_type == PROJECTILE_ATTACK) - final_block_chance = 0 //To thin to block bullets - return ..() + STR.can_hold = typecacheof(fitting_swords) /obj/item/storage/belt/sabre/examine(mob/user) ..() @@ -707,20 +690,28 @@ to_chat(user, "[src] is empty.") /obj/item/storage/belt/sabre/update_icon() - icon_state = initial(icon_state) - item_state = initial(item_state) - if(contents.len) - icon_state += "-sabre" - item_state += "-sabre" - if(loc && isliving(loc)) + . = ..() + if(isliving(loc)) var/mob/living/L = loc L.regenerate_icons() - ..() /obj/item/storage/belt/sabre/PopulateContents() - new /obj/item/melee/sabre(src) - update_icon() + new starting_sword(src) -/obj/item/storage/belt/sabre/rapier/PopulateContents() - new /obj/item/melee/rapier(src) - update_icon() +/obj/item/storage/belt/sabre/rapier + name = "rapier sheath" + desc = "A black, thin sheath that looks to house only a long thin blade. Feels like its made of metal." + icon_state = "rsheath" + item_state = "rsheath" + force = 5 + throwforce = 15 + block_chance = 30 + w_class = WEIGHT_CLASS_BULKY + attack_verb = list("bashed", "slashes", "prods", "pokes") + fitting_swords = list(/obj/item/melee/rapier) + starting_sword = /obj/item/melee/rapier + +/obj/item/storage/belt/sabre/rapier/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(attack_type == PROJECTILE_ATTACK) + final_block_chance = 0 //To thin to block bullets + return ..() diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 4ff63ceeac..903c319644 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -1131,6 +1131,7 @@ name = "Nanotrasen MRE Ration Kit Menu 0" desc = "A package containing food suspended in an outdated bluespace pocket which lasts for centuries. If you're lucky you may even be able to enjoy the meal without getting food poisoning." icon_state = "mre" + illustration = null var/can_expire = TRUE var/spawner_chance = 2 var/expiration_date @@ -1184,7 +1185,7 @@ /obj/item/storage/box/mre/menu3 name = "\improper Nanotrasen MRE Ration Kit Menu 3" - desc = "The holy grail of MREs. This item contains the fabled MRE pizza and a sample of coffee instant type 2. Any NT employee lucky enough to get their hands on one of these is truly blessed." + desc = "The holy grail of MREs. This item contains the fabled MRE pizza, spicy nachos and a sample of coffee instant type 2. Any NT employee lucky enough to get their hands on one of these is truly blessed." icon_state = "menu3" can_expire = FALSE //always fresh, never expired. spawner_chance = 1 @@ -1192,7 +1193,42 @@ /obj/item/storage/box/mre/menu3/PopulateContents() new /obj/item/reagent_containers/food/snacks/pizzaslice/pepperoni(src) new /obj/item/reagent_containers/food/snacks/breadslice/plain(src) - new /obj/item/reagent_containers/food/snacks/cheesewedge(src) + new /obj/item/reagent_containers/food/snacks/cubannachos(src) new /obj/item/reagent_containers/food/snacks/grown/chili(src) new /obj/item/reagent_containers/food/drinks/coffee/type2(src) new /obj/item/tank/internals/emergency_oxygen(src) + +/obj/item/storage/box/mre/menu4 + name = "\improper Nanotrasen MRE Ration Kit Menu 4" + +/obj/item/storage/box/mre/menu4/safe + spawner_chance = 0 + desc = "A package containing food suspended in a bluespace pocket capable of lasting till the end of time." + can_expire = FALSE + +/obj/item/storage/box/mre/menu4/PopulateContents() + if(prob(66)) + new /obj/item/reagent_containers/food/snacks/salad/boiledrice(src) + else + new /obj/item/reagent_containers/food/snacks/salad/ricebowl(src) + new /obj/item/reagent_containers/food/snacks/burger/tofu(src) + new /obj/item/reagent_containers/food/snacks/salad/fruit(src) + new /obj/item/reagent_containers/food/snacks/cracker(src) + new /obj/item/tank/internals/emergency_oxygen(src) + +//Where do I put this? +/obj/item/secbat + name = "Secbat box" + desc = "Contained inside is a secbat for use with law enforcement." + icon = 'icons/obj/storage.dmi' + icon_state = "box" + item_state = "syringe_kit" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + +/obj/item/secbat/attack_self(mob/user) + new /mob/living/simple_animal/hostile/retaliate/bat/secbat(user.loc) + to_chat(user, "You open the box, releasing the secbat!") + var/obj/item/stack/sheet/cardboard/I = new(user.drop_location()) + qdel(src) + user.put_in_hands(I) diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index 7c2694016b..b69567a2a5 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -16,7 +16,7 @@ AddComponent(component_type) /obj/item/storage/AllowDrop() - return TRUE + return FALSE /obj/item/storage/contents_explosion(severity, target) for(var/atom/A in contents) diff --git a/code/game/objects/items/teleprod.dm b/code/game/objects/items/teleprod.dm index 341c85fa1c..40392c19c3 100644 --- a/code/game/objects/items/teleprod.dm +++ b/code/game/objects/items/teleprod.dm @@ -10,7 +10,7 @@ . = ..() if(!. || !istype(M) || M.anchored) return - do_teleport(M, get_turf(M), 15) + do_teleport(M, get_turf(M), 15, channel = TELEPORT_CHANNEL_BLUESPACE) /obj/item/melee/baton/cattleprod/teleprod/clowning_around(mob/living/user) user.visible_message("[user] accidentally hits [user.p_them()]self with [src]!", \ @@ -18,7 +18,7 @@ SEND_SIGNAL(user, COMSIG_LIVING_MINOR_SHOCK) user.Knockdown(stunforce*3) playsound(loc, 'sound/weapons/egloves.ogg', 50, 1, -1) - if(do_teleport(user, get_turf(user), 50)) + if(do_teleport(user, get_turf(user), 50, channel = TELEPORT_CHANNEL_BLUESPACE)) deductcharge(hitcost) else deductcharge(hitcost * 0.25) diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 97375221d4..70bfebb799 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -90,4 +90,12 @@ var/obj/item/wirecutters/power/cutjaws = new /obj/item/wirecutters/power(drop_location()) to_chat(user, "You attach the cutting jaws to [src].") qdel(src) - user.put_in_active_hand(cutjaws) \ No newline at end of file + user.put_in_active_hand(cutjaws) + +/obj/item/crowbar/advanced + name = "advanced crowbar" + desc = "A scientist's almost successful reproduction of an abductor's crowbar, it uses the same technology combined with a handle that can't quite hold it." + icon = 'icons/obj/advancedtools.dmi' + usesound = 'sound/weapons/sonic_jackhammer.ogg' + icon_state = "crowbar" + toolspeed = 0.2 \ No newline at end of file diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index e5808de088..68946f73cd 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -141,4 +141,14 @@ name = "powered screwdriver" desc = "An electrical screwdriver, designed to be both precise and quick." usesound = 'sound/items/drill_use.ogg' - toolspeed = 0.5 \ No newline at end of file + toolspeed = 0.5 + +/obj/item/screwdriver/advanced + name = "advanced screwdriver" + desc = "A classy silver screwdriver with an alien alloy tip, it works almost as well as the real thing." + icon = 'icons/obj/advancedtools.dmi' + icon_state = "screwdriver_a" + item_state = "screwdriver_nuke" + usesound = 'sound/items/pshoom.ogg' + toolspeed = 0.2 + random_color = FALSE \ No newline at end of file diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 718035a9a5..9b622a14c4 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -377,4 +377,18 @@ nextrefueltick = world.time + 10 reagents.add_reagent("welding_fuel", 1) +/obj/item/weldingtool/advanced + name = "advanced welding tool" + desc = "A modern welding tool combined with an alien welding tool, it never runs out of fuel and works almost as fast." + icon = 'icons/obj/advancedtools.dmi' + icon_state = "welder" + toolspeed = 0.2 + light_intensity = 0 + change_icons = 0 + +/obj/item/weldingtool/advanced/process() + if(get_fuel() <= max_fuel) + reagents.add_reagent("welding_fuel", 1) + ..() + #undef WELDER_FUEL_BURN_INTERVAL diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index 1a35196bd8..527891afdb 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -82,7 +82,6 @@ icon = 'icons/obj/abductor.dmi' icon_state = "cutters" toolspeed = 0.1 - random_color = FALSE /obj/item/wirecutters/cyborg @@ -126,3 +125,11 @@ return else ..() + +/obj/item/wirecutters/advanced + name = "advanced wirecutters" + desc = "A set of reproduction alien wirecutters, they have a silver handle with an exceedingly sharp blade." + icon = 'icons/obj/advancedtools.dmi' + icon_state = "cutters" + toolspeed = 0.2 + random_color = FALSE \ No newline at end of file diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 4fd99e9adf..8ff960825a 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -112,4 +112,12 @@ user.dust() - return OXYLOSS \ No newline at end of file + return OXYLOSS + +/obj/item/wrench/advanced + name = "advanced wrench" + desc = "A wrench that uses the same magnetic technology that abductor tools use, but slightly more ineffeciently." + icon = 'icons/obj/advancedtools.dmi' + icon_state = "wrench" + usesound = 'sound/effects/empulse.ogg' + toolspeed = 0.2 \ No newline at end of file diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index e944eb32da..88d141a9ad 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -317,9 +317,6 @@ new stack_type(get_turf(loc)) qdel(src) - - - /obj/item/chair/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(attack_type == UNARMED_ATTACK && prob(hit_reaction_chance)) owner.visible_message("[owner] fends off [attack_text] with [src]!") @@ -338,7 +335,6 @@ C.Knockdown(20) smash(user) - /obj/item/chair/stool name = "stool" icon_state = "stool_toppled" @@ -352,6 +348,70 @@ item_state = "stool_bar" origin_type = /obj/structure/chair/stool/bar +////////////////////////// +//Brass & Bronze stools!// +////////////////////////// + +/obj/structure/chair/stool/bar/brass + name = "brass bar stool" + desc = "A brass bar stool with red silk for a pillow." + icon_state = "barbrass" + item_chair = /obj/item/chair/stool/bar/brass + buildstacktype = /obj/item/stack/tile/brass + buildstackamount = 1 + +/obj/structure/chair/stool/bar/bronze + name = "bronze bar stool" + desc = "A bronze bar stool with red silk for a pillow." + icon_state = "barbrass" + item_chair = /obj/item/chair/stool/bar/bronze + buildstacktype = /obj/item/stack/tile/bronze + buildstackamount = 1 + +/obj/structure/chair/stool/brass + name = "brass stool" + desc = "A brass stool with a silk top for comfort." + icon_state = "stoolbrass" + item_chair = /obj/item/chair/stool/brass + buildstacktype = /obj/item/stack/tile/brass + buildstackamount = 1 + +/obj/structure/chair/stool/bronze + name = "bronze stool" + desc = "A bronze stool with a silk top for comfort." + icon_state = "stoolbrass" + item_chair = /obj/item/chair/stool/bronze + buildstacktype = /obj/item/stack/tile/bronze + buildstackamount = 1 + +/obj/item/chair/stool/brass + name = "brass stool" + icon_state = "stoolbrass_toppled" + item_state = "stoolbrass" + origin_type = /obj/structure/chair/stool/brass + +/obj/item/chair/stool/bar/brass + name = "brass bar stool" + icon_state = "barbrass_toppled" + item_state = "stoolbrass_bar" + origin_type = /obj/structure/chair/stool/bar/brass + +/obj/item/chair/stool/bronze + name = "bronze stool" + icon_state = "stoolbrass_toppled" + item_state = "stoolbrass" + origin_type = /obj/structure/chair/stool/bronze + +/obj/item/chair/stool/bar/bronze + name = "bronze bar stool" + icon_state = "barbrass_toppled" + item_state = "stoolbrass_bar" + origin_type = /obj/structure/chair/stool/bar/bronze + +///////////////////////////////// +//End of Brass & Bronze stools!// +///////////////////////////////// + /obj/item/chair/stool/narsie_act() return //sturdy enough to ignore a god diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 2c4463928c..eedb49f2c3 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -34,7 +34,8 @@ var/delivery_icon = "deliverycloset" //which icon to use when packagewrapped. null to be unwrappable. var/anchorable = TRUE var/icon_welded = "welded" - + var/obj/item/electronics/airlock/lockerelectronics //Installed electronics + var/lock_in_use = FALSE //Someone is doing some stuff with the lock here, better not proceed further /obj/structure/closet/Initialize(mapload) . = ..() @@ -42,47 +43,56 @@ PopulateContents() if(mapload && !opened) // if closed, any item at the crate's loc is put in the contents take_contents() + if(secure) + lockerelectronics = new(src) + lockerelectronics.accesses = req_access //USE THIS TO FILL IT, NOT INITIALIZE OR NEW /obj/structure/closet/proc/PopulateContents() return /obj/structure/closet/Destroy() - dump_contents() + dump_contents(override = FALSE) return ..() /obj/structure/closet/update_icon() cut_overlays() - if(!opened) + if(opened & icon_door_override) + add_overlay("[icon_door]_open") layer = OBJ_LAYER - if(icon_door) - add_overlay("[icon_door]_door") - else - add_overlay("[icon_state]_door") - if(welded) - add_overlay(icon_welded) - if(secure && !broken) - if(locked) - add_overlay("locked") - else - add_overlay("unlocked") - + return + else if(opened) + add_overlay("[icon_state]_open") + return + if(icon_door) + add_overlay("[icon_door]_door") else layer = BELOW_OBJ_LAYER - if(icon_door_override) - add_overlay("[icon_door]_open") - else - add_overlay("[icon_state]_open") + add_overlay("[icon_state]_door") + if(welded) + add_overlay("welded") + if(!secure) + return + if(broken) + add_overlay("off") + add_overlay("sparking") + else if(locked) + add_overlay("locked") + else + add_overlay("unlocked") /obj/structure/closet/examine(mob/user) ..() if(welded) - to_chat(user, "It's welded shut.") + to_chat(user, "It's welded shut.") if(anchored) to_chat(user, "It is bolted to the ground.") if(opened) to_chat(user, "The parts are welded together.") else if(secure && !opened) + else if(broken) + to_chat(user, "The lock is screwed in.") + else if(secure) to_chat(user, "Alt-click to [locked ? "unlock" : "lock"].") if(isliving(user)) var/mob/living/L = user @@ -117,9 +127,37 @@ return FALSE return TRUE -/obj/structure/closet/proc/dump_contents() +/obj/structure/closet/proc/can_lock(mob/living/user, var/check_access = TRUE) //set check_access to FALSE if you only need to check if a locker has a functional lock rather than access + if(!secure) + return FALSE + if(broken) + to_chat(user, "[src] is broken!") + return FALSE + if(QDELETED(lockerelectronics) && !locked) //We want to be able to unlock it regardless of electronics, but only lockable with electronics + to_chat(user, "[src] is missing locker electronics!") + return FALSE + if(!check_access) + return TRUE + if(allowed(user)) + return TRUE + to_chat(user, "Access denied.") + +/obj/structure/closet/proc/togglelock(mob/living/user) + add_fingerprint(user) + if(opened) + return + if(!can_lock(user)) + return + locked = !locked + user.visible_message("[user] [locked ? null : "un"]locks [src].", + "You [locked ? null : "un"]lock [src].") + update_icon() + +/obj/structure/closet/proc/dump_contents(var/override = TRUE) //Override is for not revealing the locker electronics when you open the locker, for example var/atom/L = drop_location() for(var/atom/movable/AM in src) + if(AM == lockerelectronics && override) + continue AM.forceMove(L) if(throwing) // you keep some momentum when getting out of a thrown closet step(AM, dir) @@ -207,6 +245,73 @@ else return open(user) +/obj/structure/closet/proc/bust_open() + welded = FALSE //applies to all lockers + locked = FALSE //applies to critter crates and secure lockers only + broken = TRUE //applies to secure lockers only + open() + +/obj/structure/closet/proc/handle_lock_addition(mob/user, obj/item/electronics/airlock/E) + add_fingerprint(user) + if(lock_in_use) + to_chat(user, "Wait for work on [src] to be done first!") + return + if(secure) + to_chat(user, "This locker already has a lock!") + return + if(broken) + to_chat(user, "Unscrew the broken lock first!") + return + if(!istype(E)) + return + user.visible_message("[user] begins installing a lock on [src]...","You begin installing a lock on [src]...") + lock_in_use = TRUE + playsound(loc, 'sound/items/screwdriver.ogg', 50, 1) + if(!do_after(user, 60, target = src)) + lock_in_use = FALSE + return + lock_in_use = FALSE + to_chat(user, "You finish the lock on [src]!") + E.forceMove(src) + lockerelectronics = E + req_access = E.accesses + secure = TRUE + update_icon() + return TRUE + +/obj/structure/closet/proc/handle_lock_removal(mob/user, obj/item/screwdriver/S) + if(lock_in_use) + to_chat(user, "Wait for work on [src] to be done first!") + return + if(locked) + to_chat(user, "Unlock it first!") + return + if(!secure) + to_chat(user, "[src] doesn't have a lock that you can remove!") + return + if(!istype(S)) + return + var/brokenword = broken ? "broken " : null + user.visible_message("[user] begins removing the [brokenword]lock on [src]...","You begin removing the [brokenword]lock on [src]...") + playsound(loc, S.usesound, 50, 1) + lock_in_use = TRUE + if(!do_after(user, 100 * S.toolspeed, target = src)) + lock_in_use = FALSE + return + to_chat(user, "You remove the [brokenword]lock from [src]!") + if(!QDELETED(lockerelectronics)) + lockerelectronics.add_fingerprint(user) + lockerelectronics.forceMove(user.loc) + lockerelectronics = null + req_access = null + secure = FALSE + broken = FALSE + locked = FALSE + lock_in_use = FALSE + update_icon() + return TRUE + + /obj/structure/closet/deconstruct(disassembled = TRUE) if(ispath(material_drop) && material_drop_amount && !(flags_1 & NODECONSTRUCT_1)) new material_drop(loc, material_drop_amount) @@ -247,7 +352,11 @@ deconstruct(TRUE) return if(user.transferItemToLoc(W, drop_location())) // so we put in unlit welder too - return + return TRUE + else if(istype(W, /obj/item/electronics/airlock)) + handle_lock_addition(user, W) + else if(istype(W, /obj/item/screwdriver)) + handle_lock_removal(user, W) else if(istype(W, /obj/item/weldingtool) && can_weld_shut) if(!W.tool_start_check(user, amount=0)) return @@ -258,7 +367,7 @@ return welded = !welded after_weld(welded) - user.visible_message("[user] [welded ? "welds shut" : "unwelded"] \the [src].", + user.visible_message("[user] [welded ? "welds shut" : "unwelds"] \the [src].", "You [welded ? "weld" : "unwelded"] \the [src] with \the [W].", "You hear welding.") update_icon() @@ -401,20 +510,12 @@ if(user.loc == src) //so we don't get the message if we resisted multiple times and succeeded. to_chat(user, "You fail to break out of [src]!") -/obj/structure/closet/proc/bust_open() - welded = FALSE //applies to all lockers - locked = FALSE //applies to critter crates and secure lockers only - broken = TRUE //applies to secure lockers only - open() - /obj/structure/closet/AltClick(mob/user) ..() - if(!user.canUseTopic(src, BE_CLOSE) || !isturf(loc)) + if(!user.canUseTopic(src, be_close=TRUE) || !isturf(loc)) + to_chat(user, "You can't do that right now!") return - if(opened || !secure) - return - else - togglelock(user) + togglelock(user) /obj/structure/closet/CtrlShiftClick(mob/living/user) if(!HAS_TRAIT(user, TRAIT_SKITTISH)) @@ -423,20 +524,6 @@ return dive_into(user) -/obj/structure/closet/proc/togglelock(mob/living/user, silent) - if(secure && !broken) - if(allowed(user)) - if(iscarbon(user)) - add_fingerprint(user) - locked = !locked - user.visible_message("[user] [locked ? null : "un"]locks [src].", - "You [locked ? null : "un"]lock [src].") - update_icon() - else if(!silent) - to_chat(user, "Access Denied") - else if(secure && broken) - to_chat(user, "\The [src] is broken!") - /obj/structure/closet/emag_act(mob/user) if(secure && !broken) user.visible_message("Sparks fly from [src]!", @@ -445,6 +532,9 @@ playsound(src, "sparks", 50, 1) broken = TRUE locked = FALSE + if(!QDELETED(lockerelectronics)) + qdel(lockerelectronics) + lockerelectronics = null update_icon() /obj/structure/closet/get_remote_view_fullscreens(mob/user) @@ -458,16 +548,19 @@ if (!(. & EMP_PROTECT_CONTENTS)) for(var/obj/O in src) O.emp_act(severity) - if(secure && !broken && !(. & EMP_PROTECT_SELF)) - if(prob(50 / severity)) - locked = !locked - update_icon() - if(prob(20 / severity) && !opened) - if(!locked) - open() - else - req_access = list() - req_access += pick(get_all_accesses()) + if(!secure || broken) + return ..() + if(prob(50 / severity)) + locked = !locked + update_icon() + if(prob(20 / severity) && !opened) + if(!locked) + open() + else + req_access = list() + req_access += pick(get_all_accesses()) + if(!QDELETED(lockerelectronics)) + lockerelectronics.accesses = req_access /obj/structure/closet/contents_explosion(severity, target) for(var/atom/A in contents) diff --git a/code/game/objects/structures/crates_lockers/closets/bodybag.dm b/code/game/objects/structures/crates_lockers/closets/bodybag.dm index 502b23354c..1c34850274 100644 --- a/code/game/objects/structures/crates_lockers/closets/bodybag.dm +++ b/code/game/objects/structures/crates_lockers/closets/bodybag.dm @@ -49,6 +49,12 @@ return 1 return 0 +/obj/structure/closet/body_bag/handle_lock_addition() + return + +/obj/structure/closet/body_bag/handle_lock_removal() + return + /obj/structure/closet/body_bag/MouseDrop(over_object, src_location, over_location) . = ..() if(over_object == usr && Adjacent(usr) && (in_range(src, usr) || usr.contents.Find(src))) diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index 82b0d1a441..aad68b2166 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -57,6 +57,11 @@ I.alpha = 0 animate(I, pixel_z = 32, alpha = 255, time = 5, easing = ELASTIC_EASING) +/obj/structure/closet/cardboard/handle_lock_addition() //Whoever heard of a lockable cardboard box anyway + return + +/obj/structure/closet/cardboard/handle_lock_removal() + return /obj/structure/closet/cardboard/metal name = "large metal box" diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index d6d2f18e5a..d2ab9ea6fb 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -358,3 +358,8 @@ new /obj/item/clothing/shoes/workboots/mining(src) new /obj/item/storage/backpack/satchel/explorer(src) +/obj/structure/closet/coffin/handle_lock_addition() + return + +/obj/structure/closet/coffin/handle_lock_removal() + return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 5a9228e397..18928424c0 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -9,6 +9,7 @@ new /obj/item/clothing/head/beret/qm(src) new /obj/item/storage/lockbox/medal/cargo(src) new /obj/item/clothing/under/rank/cargo(src) + new /obj/item/clothing/under/rank/cargo/skirt(src) new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/radio/headset/headset_cargo(src) new /obj/item/clothing/suit/fire/firefighter(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 0d06276876..167823b9be 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -8,6 +8,7 @@ new /obj/item/clothing/neck/cloak/ce(src) new /obj/item/clothing/head/beret/ce(src) new /obj/item/clothing/under/rank/chief_engineer(src) + new /obj/item/clothing/under/rank/chief_engineer/skirt(src) new /obj/item/clothing/head/hardhat/white(src) new /obj/item/clothing/head/welding(src) new /obj/item/clothing/gloves/color/yellow(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 9081cddbe4..0f810225b3 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -61,6 +61,7 @@ new /obj/item/clothing/head/bio_hood/cmo(src) new /obj/item/clothing/suit/toggle/labcoat/cmo(src) new /obj/item/clothing/under/rank/chief_medical_officer(src) + new /obj/item/clothing/under/rank/chief_medical_officer/skirt(src) new /obj/item/clothing/shoes/sneakers/brown (src) new /obj/item/cartridge/cmo(src) new /obj/item/radio/headset/heads/cmo(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index eb764fc230..e44d3c9079 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -4,6 +4,18 @@ req_access = list(ACCESS_ALL_PERSONAL_LOCKERS) var/registered_name = null +/obj/structure/closet/secure_closet/personal/examine(mob/user) + ..() + if(registered_name) + to_chat(user, "The display reads, \"Owned by [registered_name]\".") + +/obj/structure/closet/secure_closet/personal/check_access(obj/item/card/id/I) + . = ..() + if(!I || !istype(I)) + return + if(registered_name == I.registered_name) + return TRUE + /obj/structure/closet/secure_closet/personal/PopulateContents() ..() if(prob(50)) @@ -33,21 +45,21 @@ /obj/structure/closet/secure_closet/personal/attackby(obj/item/W, mob/user, params) var/obj/item/card/id/I = W.GetID() - if(istype(I)) - if(broken) - to_chat(user, "It appears to be broken.") - return - if(!I || !I.registered_name) - return - if(allowed(user) || !registered_name || (istype(I) && (registered_name == I.registered_name))) - //they can open all lockers, or nobody owns this, or they own this locker - locked = !locked - update_icon() - - if(!registered_name) - registered_name = I.registered_name - desc = "Owned by [I.registered_name]." - else - to_chat(user, "Access Denied.") - else + if(!I || !istype(I)) return ..() + if(!can_lock(user, FALSE)) //Can't do anything if there isn't a lock! + return + if(I.registered_name && !registered_name) + to_chat(user, "You claim [src].") + registered_name = I.registered_name + else + ..() + +/obj/structure/closet/secure_closet/personal/handle_lock_addition() //If lock construction is successful we don't care what access the electronics had, so we override it + if(..()) + req_access = list(ACCESS_ALL_PERSONAL_LOCKERS) + lockerelectronics.accesses = req_access + +/obj/structure/closet/secure_closet/personal/handle_lock_removal() + if(..()) + registered_name = null diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 7fe1247eb7..efcc2aa7ca 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -11,8 +11,11 @@ new /obj/item/clothing/head/bio_hood/scientist(src) new /obj/item/clothing/suit/toggle/labcoat(src) new /obj/item/clothing/under/rank/research_director(src) + new /obj/item/clothing/under/rank/research_director/skirt(src) new /obj/item/clothing/under/rank/research_director/alt(src) + new /obj/item/clothing/under/rank/research_director/alt/skirt(src) new /obj/item/clothing/under/rank/research_director/turtleneck(src) + new /obj/item/clothing/under/rank/research_director/turtleneck/skirt(src) new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/cartridge/rd(src) new /obj/item/clothing/gloves/color/latex(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 8c06af91a4..3cb8ceb22b 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -2,7 +2,6 @@ name = "\proper captain's locker" req_access = list(ACCESS_CAPTAIN) icon_state = "cap" - /obj/structure/closet/secure_closet/captains/PopulateContents() ..() new /obj/item/clothing/suit/hooded/wintercoat/captain(src) @@ -14,6 +13,7 @@ new /obj/item/pet_carrier(src) new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/clothing/under/rank/captain(src) + new /obj/item/clothing/under/rank/captain/skirt(src) new /obj/item/clothing/suit/armor/vest/capcarapace(src) new /obj/item/clothing/head/caphat(src) new /obj/item/clothing/under/captainparade(src) @@ -34,16 +34,15 @@ new /obj/item/gun/energy/e_gun(src) new /obj/item/door_remote/captain(src) new /obj/item/storage/photo_album/Captain(src) - /obj/structure/closet/secure_closet/hop name = "\proper head of personnel's locker" req_access = list(ACCESS_HOP) icon_state = "hop" - /obj/structure/closet/secure_closet/hop/PopulateContents() ..() new /obj/item/clothing/neck/cloak/hop(src) new /obj/item/clothing/under/rank/head_of_personnel(src) + new /obj/item/clothing/under/rank/head_of_personnel/skirt(src) new /obj/item/clothing/head/hopcap(src) new /obj/item/clothing/head/hopcap/beret(src) new /obj/item/cartridge/hop(src) @@ -62,12 +61,10 @@ new /obj/item/door_remote/civillian(src) new /obj/item/circuitboard/machine/techfab/department/service(src) new /obj/item/storage/photo_album/HoP(src) - /obj/structure/closet/secure_closet/hos name = "\proper head of security's locker" req_access = list(ACCESS_HOS) icon_state = "hos" - /obj/structure/closet/secure_closet/hos/PopulateContents() ..() new /obj/item/clothing/neck/cloak/hos(src) @@ -77,7 +74,9 @@ new /obj/item/clothing/under/hosparademale(src) new /obj/item/clothing/suit/armor/vest/leather(src) new /obj/item/clothing/suit/armor/hos(src) + new /obj/item/clothing/under/rank/head_of_security/skirt(src) new /obj/item/clothing/under/rank/head_of_security/alt(src) + new /obj/item/clothing/under/rank/head_of_security/alt/skirt(src) new /obj/item/clothing/head/HoS(src) new /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch(src) new /obj/item/clothing/glasses/hud/security/sunglasses/gars/supergars(src) @@ -95,12 +94,10 @@ new /obj/item/pinpointer/nuke(src) new /obj/item/circuitboard/machine/techfab/department/security(src) new /obj/item/storage/photo_album/HoS(src) - /obj/structure/closet/secure_closet/warden name = "\proper warden's locker" req_access = list(ACCESS_ARMORY) icon_state = "warden" - /obj/structure/closet/secure_closet/warden/PopulateContents() ..() new /obj/item/radio/headset/headset_sec(src) @@ -110,6 +107,7 @@ new /obj/item/clothing/head/beret/sec/navywarden(src) new /obj/item/clothing/suit/armor/vest/warden/alt(src) new /obj/item/clothing/under/rank/warden/navyblue(src) + new /obj/item/clothing/under/rank/warden/skirt(src) new /obj/item/clothing/glasses/hud/security/sunglasses(src) new /obj/item/holosign_creator/security(src) new /obj/item/clothing/mask/gas/sechailer(src) @@ -120,12 +118,10 @@ new /obj/item/clothing/gloves/krav_maga/sec(src) new /obj/item/door_remote/head_of_security(src) new /obj/item/gun/ballistic/shotgun/automatic/combat/compact(src) - /obj/structure/closet/secure_closet/security name = "security officer's locker" req_access = list(ACCESS_SECURITY) icon_state = "sec" - /obj/structure/closet/secure_closet/security/PopulateContents() ..() new /obj/item/clothing/suit/armor/vest(src) @@ -134,55 +130,45 @@ new /obj/item/radio/headset/headset_sec/alt(src) new /obj/item/clothing/glasses/hud/security/sunglasses(src) new /obj/item/flashlight/seclite(src) - /obj/structure/closet/secure_closet/security/sec - /obj/structure/closet/secure_closet/security/sec/PopulateContents() ..() new /obj/item/storage/belt/security/full(src) - /obj/structure/closet/secure_closet/security/cargo - /obj/structure/closet/secure_closet/security/cargo/PopulateContents() ..() new /obj/item/clothing/accessory/armband/cargo(src) new /obj/item/encryptionkey/headset_cargo(src) - /obj/structure/closet/secure_closet/security/engine - /obj/structure/closet/secure_closet/security/engine/PopulateContents() ..() new /obj/item/clothing/accessory/armband/engine(src) new /obj/item/encryptionkey/headset_eng(src) - /obj/structure/closet/secure_closet/security/science - /obj/structure/closet/secure_closet/security/science/PopulateContents() ..() new /obj/item/clothing/accessory/armband/science(src) new /obj/item/encryptionkey/headset_sci(src) - /obj/structure/closet/secure_closet/security/med - /obj/structure/closet/secure_closet/security/med/PopulateContents() ..() new /obj/item/clothing/accessory/armband/medblue(src) new /obj/item/encryptionkey/headset_med(src) - /obj/structure/closet/secure_closet/detective name = "\improper detective's cabinet" req_access = list(ACCESS_FORENSICS_LOCKERS) icon_state = "cabinet" resistance_flags = FLAMMABLE max_integrity = 70 - /obj/structure/closet/secure_closet/detective/PopulateContents() ..() new /obj/item/clothing/under/rank/det(src) + new /obj/item/clothing/under/rank/det/skirt(src) new /obj/item/clothing/suit/det_suit(src) new /obj/item/clothing/head/fedora/det_hat(src) new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/under/rank/det/grey(src) + new /obj/item/clothing/under/rank/det/grey/skirt(src) new /obj/item/clothing/accessory/waistcoat(src) new /obj/item/clothing/suit/det_suit/grey(src) new /obj/item/clothing/head/fedora(src) @@ -200,33 +186,29 @@ /obj/structure/closet/secure_closet/injection name = "lethal injections" req_access = list(ACCESS_HOS) - /obj/structure/closet/secure_closet/injection/PopulateContents() ..() for(var/i in 1 to 5) new /obj/item/reagent_containers/syringe/lethal/execution(src) - /obj/structure/closet/secure_closet/brig name = "brig locker" req_access = list(ACCESS_BRIG) anchored = TRUE var/id = null - /obj/structure/closet/secure_closet/evidence anchored = TRUE name = "Secure Evidence Closet" req_access_txt = "0" req_one_access_txt = list(ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS) - /obj/structure/closet/secure_closet/brig/PopulateContents() ..() new /obj/item/clothing/under/rank/prisoner( src ) + new /obj/item/clothing/under/rank/prisoner/skirt( src ) new /obj/item/clothing/shoes/sneakers/orange( src ) /obj/structure/closet/secure_closet/courtroom name = "courtroom locker" req_access = list(ACCESS_COURT) - /obj/structure/closet/secure_closet/courtroom/PopulateContents() ..() new /obj/item/clothing/shoes/sneakers/brown(src) @@ -236,22 +218,18 @@ new /obj/item/clothing/suit/judgerobe (src) new /obj/item/clothing/head/powdered_wig (src) new /obj/item/storage/briefcase(src) - /obj/structure/closet/secure_closet/contraband/armory anchored = TRUE name = "Contraband Locker" req_access = list(ACCESS_ARMORY) - /obj/structure/closet/secure_closet/contraband/heads anchored = TRUE name = "Contraband Locker" req_access = list(ACCESS_HEADS) - /obj/structure/closet/secure_closet/armory1 name = "armory armor locker" req_access = list(ACCESS_ARMORY) icon_state = "armory" - /obj/structure/closet/secure_closet/armory1/PopulateContents() ..() new /obj/item/clothing/suit/armor/laserproof(src) @@ -261,12 +239,10 @@ new /obj/item/clothing/head/helmet/riot(src) for(var/i in 1 to 3) new /obj/item/shield/riot(src) - /obj/structure/closet/secure_closet/armory2 name = "armory ballistics locker" req_access = list(ACCESS_ARMORY) icon_state = "armory" - /obj/structure/closet/secure_closet/armory2/PopulateContents() ..() new /obj/item/storage/box/firingpins(src) @@ -274,12 +250,10 @@ new /obj/item/storage/box/rubbershot(src) for(var/i in 1 to 3) new /obj/item/gun/ballistic/shotgun/riot(src) - /obj/structure/closet/secure_closet/armory3 name = "armory energy gun locker" req_access = list(ACCESS_ARMORY) icon_state = "armory" - /obj/structure/closet/secure_closet/armory3/PopulateContents() ..() new /obj/item/storage/box/firingpins(src) @@ -288,24 +262,20 @@ new /obj/item/gun/energy/e_gun(src) for(var/i in 1 to 3) new /obj/item/gun/energy/laser(src) - /obj/structure/closet/secure_closet/tac name = "armory tac locker" req_access = list(ACCESS_ARMORY) icon_state = "tac" - /obj/structure/closet/secure_closet/tac/PopulateContents() ..() new /obj/item/gun/ballistic/automatic/wt550(src) new /obj/item/clothing/head/helmet/alt(src) new /obj/item/clothing/mask/gas/sechailer(src) new /obj/item/clothing/suit/armor/bulletproof(src) - /obj/structure/closet/secure_closet/lethalshots name = "shotgun lethal rounds" req_access = list(ACCESS_ARMORY) icon_state = "tac" - /obj/structure/closet/secure_closet/lethalshots/PopulateContents() ..() for(var/i in 1 to 3) diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index f2d32b773e..94d1b03fdb 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -9,6 +9,7 @@ /obj/structure/closet/syndicate/personal/PopulateContents() ..() new /obj/item/clothing/under/syndicate(src) + new /obj/item/clothing/under/syndicate/skirt(src) new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/radio/headset/syndicate(src) new /obj/item/ammo_box/magazine/m10mm(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 7493603ad4..d83922d708 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -2,33 +2,34 @@ name = "wardrobe" desc = "It's a storage unit for standard-issue Nanotrasen attire." icon_door = "blue" - /obj/structure/closet/wardrobe/PopulateContents() ..() for(var/i in 1 to 3) new /obj/item/clothing/under/color/blue(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/skirt/color/blue(src) for(var/i in 1 to 3) new /obj/item/clothing/shoes/sneakers/brown(src) return - /obj/structure/closet/wardrobe/pink name = "pink wardrobe" icon_door = "pink" - /obj/structure/closet/wardrobe/pink/PopulateContents() for(var/i in 1 to 3) new /obj/item/clothing/under/color/pink(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/skirt/color/pink(src) for(var/i in 1 to 3) new /obj/item/clothing/shoes/sneakers/brown(src) return - /obj/structure/closet/wardrobe/black name = "black wardrobe" icon_door = "black" - /obj/structure/closet/wardrobe/black/PopulateContents() for(var/i in 1 to 3) new /obj/item/clothing/under/color/black(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/skirt/color/black(src) if(prob(25)) new /obj/item/clothing/suit/jacket/leather(src) if(prob(20)) @@ -44,66 +45,60 @@ if(prob(40)) new /obj/item/clothing/mask/bandana/skull(src) return - - /obj/structure/closet/wardrobe/green name = "green wardrobe" icon_door = "green" - /obj/structure/closet/wardrobe/green/PopulateContents() for(var/i in 1 to 3) new /obj/item/clothing/under/color/green(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/skirt/color/green(src) for(var/i in 1 to 3) new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/mask/bandana/green(src) new /obj/item/clothing/mask/bandana/green(src) return - - /obj/structure/closet/wardrobe/orange name = "prison wardrobe" desc = "It's a storage unit for Nanotrasen-regulation prisoner attire." icon_door = "orange" - /obj/structure/closet/wardrobe/orange/PopulateContents() for(var/i in 1 to 3) new /obj/item/clothing/under/rank/prisoner(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/rank/prisoner/skirt(src) for(var/i in 1 to 3) new /obj/item/clothing/shoes/sneakers/orange(src) return - - /obj/structure/closet/wardrobe/yellow name = "yellow wardrobe" icon_door = "yellow" - /obj/structure/closet/wardrobe/yellow/PopulateContents() for(var/i in 1 to 3) new /obj/item/clothing/under/color/yellow(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/skirt/color/yellow(src) for(var/i in 1 to 3) new /obj/item/clothing/shoes/sneakers/orange(src) new /obj/item/clothing/mask/bandana/gold(src) new /obj/item/clothing/mask/bandana/gold(src) return - - /obj/structure/closet/wardrobe/white name = "white wardrobe" icon_door = "white" - /obj/structure/closet/wardrobe/white/PopulateContents() for(var/i in 1 to 3) new /obj/item/clothing/under/color/white(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/skirt/color/white(src) for(var/i in 1 to 3) new /obj/item/clothing/shoes/sneakers/white(src) for(var/i in 1 to 3) new /obj/item/clothing/head/soft/mime(src) return - /obj/structure/closet/wardrobe/pjs name = "pajama wardrobe" icon_door = "white" - /obj/structure/closet/wardrobe/pjs/PopulateContents() new /obj/item/clothing/under/pj/red(src) new /obj/item/clothing/under/pj/red(src) @@ -112,15 +107,14 @@ for(var/i in 1 to 4) new /obj/item/clothing/shoes/sneakers/white(src) return - - /obj/structure/closet/wardrobe/grey name = "grey wardrobe" icon_door = "grey" - /obj/structure/closet/wardrobe/grey/PopulateContents() for(var/i in 1 to 3) new /obj/item/clothing/under/color/grey(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/skirt/color/grey(src) for(var/i in 1 to 3) new /obj/item/clothing/shoes/sneakers/black(src) for(var/i in 1 to 3) @@ -140,28 +134,36 @@ if(prob(30)) new /obj/item/clothing/accessory/pocketprotector(src) return - - /obj/structure/closet/wardrobe/mixed name = "mixed wardrobe" icon_door = "mixed" - /obj/structure/closet/wardrobe/mixed/PopulateContents() if(prob(40)) new /obj/item/clothing/suit/jacket(src) if(prob(40)) new /obj/item/clothing/suit/jacket(src) new /obj/item/clothing/under/color/white(src) + new /obj/item/clothing/under/skirt/color/white(src) new /obj/item/clothing/under/color/blue(src) + new /obj/item/clothing/under/skirt/color/blue(src) new /obj/item/clothing/under/color/yellow(src) + new /obj/item/clothing/under/skirt/color/yellow(src) new /obj/item/clothing/under/color/green(src) + new /obj/item/clothing/under/skirt/color/green(src) new /obj/item/clothing/under/color/orange(src) + new /obj/item/clothing/under/skirt/color/orange(src) new /obj/item/clothing/under/color/pink(src) + new /obj/item/clothing/under/skirt/color/pink(src) new /obj/item/clothing/under/color/red(src) + new /obj/item/clothing/under/skirt/color/red(src) new /obj/item/clothing/under/color/darkblue(src) + new /obj/item/clothing/under/skirt/color/darkblue(src) new /obj/item/clothing/under/color/teal(src) + new /obj/item/clothing/under/skirt/color/teal(src) new /obj/item/clothing/under/color/lightpurple(src) + new /obj/item/clothing/under/skirt/color/lightpurple(src) new /obj/item/clothing/under/color/green(src) + new /obj/item/clothing/under/skirt/color/green(src) new /obj/item/clothing/mask/bandana/red(src) new /obj/item/clothing/mask/bandana/red(src) new /obj/item/clothing/mask/bandana/blue(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 067b1b0eb1..6caa7d834b 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -54,6 +54,12 @@ manifest = null update_icon() +/obj/structure/closet/crate/handle_lock_addition() + return + +/obj/structure/closet/crate/handle_lock_removal() + return + /obj/structure/closet/crate/proc/tear_manifest(mob/user) to_chat(user, "You tear the manifest off of [src].") playsound(src, 'sound/items/poster_ripped.ogg', 75, 1) diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index 461e19adf1..8dc560b936 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -79,4 +79,4 @@ var/n_color = input(H, "Choose your [garment_type]'\s color.", "Character Preference", default_color) as color|null if(!n_color || !H.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return default_color - return n_color + return sanitize_hexcolor(n_color, include_crunch= TRUE) diff --git a/code/game/objects/structures/femur_breaker.dm b/code/game/objects/structures/femur_breaker.dm new file mode 100644 index 0000000000..e3002a8fae --- /dev/null +++ b/code/game/objects/structures/femur_breaker.dm @@ -0,0 +1,175 @@ +#define BREAKER_ANIMATION_LENGTH 32 +#define BREAKER_SLAT_RAISED 1 +#define BREAKER_SLAT_MOVING 2 +#define BREAKER_SLAT_DROPPED 3 +#define BREAKER_ACTIVATE_DELAY 30 +#define BREAKER_WRENCH_DELAY 10 +#define BREAKER_ACTION_INUSE 5 +#define BREAKER_ACTION_WRENCH 6 + +/obj/structure/femur_breaker + name = "femur breaker" + desc = "A large structure used to break the femurs of traitors and treasonists." + icon = 'icons/obj/femur_breaker.dmi' + icon_state = "breaker_raised" + can_buckle = TRUE + anchored = TRUE + density = TRUE + max_buckled_mobs = 1 + buckle_lying = TRUE + buckle_prevents_pull = TRUE + layer = ABOVE_MOB_LAYER + var/slat_status = BREAKER_SLAT_RAISED + var/current_action = 0 // What's currently happening to the femur breaker + +/obj/structure/femur_breaker/examine(mob/user) + ..() + + var/msg = "" + + msg += "It is [anchored ? "secured to the floor." : "unsecured."]
" + + if (slat_status == BREAKER_SLAT_RAISED) + msg += "The breaker slat is in a neutral position." + else + msg += "The breaker slat is lowered, and must be raised." + + if (LAZYLEN(buckled_mobs)) + msg += "
" + msg += "Someone appears to be strapped in. You can help them unbuckle, or activate the femur breaker." + + to_chat(user, msg) + + return msg + +/obj/structure/femur_breaker/attack_hand(mob/user) + add_fingerprint(user) + + // Currently being used + if (current_action) + return + + switch (slat_status) + if (BREAKER_SLAT_MOVING) + return + if (BREAKER_SLAT_DROPPED) + slat_status = BREAKER_SLAT_MOVING + icon_state = "breaker_raise" + addtimer(CALLBACK(src, .proc/raise_slat), BREAKER_ANIMATION_LENGTH) + return + if (BREAKER_SLAT_RAISED) + if (LAZYLEN(buckled_mobs)) + if (user.a_intent == INTENT_HARM) + user.visible_message("[user] begins to pull the lever!", + "You begin to the pull the lever.") + current_action = BREAKER_ACTION_INUSE + + if (do_after(user, BREAKER_ACTIVATE_DELAY, target = src) && slat_status == BREAKER_SLAT_RAISED) + current_action = 0 + slat_status = BREAKER_SLAT_MOVING + icon_state = "breaker_drop" + drop_slat(user) + else + current_action = 0 + else + var/mob/living/carbon/human/H = buckled_mobs[1] + + if (H) + H.regenerate_icons() + + unbuckle_all_mobs() + else //HERE + slat_status = BREAKER_SLAT_DROPPED + icon_state = "breaker_drop" + +/obj/structure/femur_breaker/proc/damage_leg(mob/living/carbon/human/H) + H.emote("scream") + H.apply_damage(150, BRUTE, pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) + H.adjustBruteLoss(rand(5,20) + (max(0, H.health))) //Make absolutely sure they end up in crit, so that they can succumb if they wish. + +/obj/structure/femur_breaker/proc/raise_slat() + slat_status = BREAKER_SLAT_RAISED + icon_state = "breaker_raised" + +/obj/structure/femur_breaker/proc/drop_slat(mob/user) + if (buckled_mobs.len) + var/mob/living/carbon/human/H = buckled_mobs[1] + + if (!H) + return + + playsound(src, 'sound/effects/femur_breaker.ogg', 100, FALSE) + H.Stun(BREAKER_ANIMATION_LENGTH) + addtimer(CALLBACK(src, .proc/damage_leg, H), BREAKER_ANIMATION_LENGTH, TIMER_UNIQUE) + log_combat(user, H, "femur broke", src) + + slat_status = BREAKER_SLAT_DROPPED + icon_state = "breaker" + +/obj/structure/femur_breaker/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) + if (!anchored) + to_chat(usr, "The [src] needs to be wrenched to the floor!") + return FALSE + + if (!istype(M, /mob/living/carbon/human)) + to_chat(usr, "It doesn't look like [M.p_they()] can fit into this properly!") + return FALSE + + if (slat_status != BREAKER_SLAT_RAISED) + to_chat(usr, "The femur breaker must be in its neutral position before buckling someone in!") + return FALSE + + return ..(M, force, FALSE) + +/obj/structure/femur_breaker/post_buckle_mob(mob/living/M) + if (!istype(M, /mob/living/carbon/human)) + return + + var/mob/living/carbon/human/H = M + + if (H.dna) + if (H.dna.species) + var/datum/species/S = H.dna.species + + if (!istype(S)) + unbuckle_all_mobs() + else + unbuckle_all_mobs() + else + unbuckle_all_mobs() + + ..() + +/obj/structure/femur_breaker/can_be_unfasten_wrench(mob/user, silent) + if (LAZYLEN(buckled_mobs)) + if (!silent) + to_chat(user, "Can't unfasten, someone's strapped in!") + return FAILED_UNFASTEN + + if (current_action) + return FAILED_UNFASTEN + + return ..() + +/obj/structure/femur_breaker/wrench_act(mob/living/user, obj/item/I) + if (current_action) + return + + current_action = BREAKER_ACTION_WRENCH + + if (do_after(user, BREAKER_WRENCH_DELAY, target = src)) + current_action = 0 + default_unfasten_wrench(user, I, 0) + setDir(SOUTH) + return TRUE + else + current_action = 0 + +#undef BREAKER_ANIMATION_LENGTH +#undef BREAKER_SLAT_RAISED +#undef BREAKER_SLAT_MOVING +#undef BREAKER_SLAT_DROPPED +#undef BREAKER_ACTIVATE_DELAY +#undef BREAKER_WRENCH_DELAY +#undef BREAKER_ACTION_INUSE +#undef BREAKER_ACTION_WRENCH diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index cff219c63e..f6d234b346 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -272,7 +272,7 @@ return 0 if(ishuman(C) && (lube&NO_SLIP_WHEN_WALKING)) var/mob/living/carbon/human/H = C - if(!H.sprinting && H.getStaminaLoss() >= 20) + if(!H.sprinting && H.getStaminaLoss() <= 20) return 0 if(!(lube&SLIDE_ICE)) to_chat(C, "You slipped[ O ? " on the [O.name]" : ""]!") diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index eb856237bf..3bcc0e0c01 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -15,9 +15,9 @@ H.real_name = random_unique_name(H.gender) H.name = H.real_name H.underwear = random_underwear(H.gender) - H.undie_color = random_color() + H.undie_color = random_short_color() H.undershirt = random_undershirt(H.gender) - H.shirt_color = random_color() + H.shirt_color = random_short_color() H.skin_tone = random_skin_tone() H.hair_style = random_hair_style(H.gender) H.facial_hair_style = random_facial_hair_style(H.gender) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 6fa118ab7f..d881044757 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1882,14 +1882,14 @@ return var/mob/M = locate(href_list["CentComReply"]) - usr.client.admin_headset_message(M, "CentCom") + usr.client.admin_headset_message(M, RADIO_CHANNEL_CENTCOM) else if(href_list["SyndicateReply"]) if(!check_rights(R_ADMIN)) return var/mob/M = locate(href_list["SyndicateReply"]) - usr.client.admin_headset_message(M, "Syndicate") + usr.client.admin_headset_message(M, RADIO_CHANNEL_SYNDICATE) else if(href_list["HeadsetMessage"]) if(!check_rights(R_ADMIN)) diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm index 6295d4be43..c0445d588d 100644 --- a/code/modules/admin/verbs/borgpanel.dm +++ b/code/modules/admin/verbs/borgpanel.dm @@ -62,7 +62,7 @@ .["laws"] = borg.laws ? borg.laws.get_law_list(include_zeroth = TRUE) : list() .["channels"] = list() for (var/k in GLOB.radiochannels) - if (k == "Common") + if (k == RADIO_CHANNEL_COMMON) continue .["channels"] += list(list("name" = k, "installed" = (k in borg.radio.channels))) .["cell"] = borg.cell ? list("missing" = FALSE, "maxcharge" = borg.cell.maxcharge, "charge" = borg.cell.charge) : list("missing" = TRUE, "maxcharge" = 1, "charge" = 0) @@ -164,15 +164,15 @@ if (channel in borg.radio.channels) // We're removing a channel if (!borg.radio.keyslot) // There's no encryption key. This shouldn't happen but we can cope borg.radio.channels -= channel - if (channel == "Syndicate") + if (channel == RADIO_CHANNEL_SYNDICATE) borg.radio.syndie = FALSE - else if (channel == "CentCom") + else if (channel == RADIO_CHANNEL_CENTCOM) borg.radio.independent = FALSE else borg.radio.keyslot.channels -= channel - if (channel == "Syndicate") + if (channel == RADIO_CHANNEL_SYNDICATE) borg.radio.keyslot.syndie = FALSE - else if (channel == "CentCom") + else if (channel == RADIO_CHANNEL_CENTCOM) borg.radio.keyslot.independent = FALSE message_admins("[key_name_admin(user)] removed the [channel] radio channel from [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] removed the [channel] radio channel from [key_name(borg)].") @@ -180,9 +180,9 @@ if (!borg.radio.keyslot) // Assert that an encryption key exists borg.radio.keyslot = new (borg.radio) borg.radio.keyslot.channels[channel] = 1 - if (channel == "Syndicate") + if (channel == RADIO_CHANNEL_SYNDICATE) borg.radio.keyslot.syndie = TRUE - else if (channel == "CentCom") + else if (channel == RADIO_CHANNEL_CENTCOM) borg.radio.keyslot.independent = TRUE message_admins("[key_name_admin(user)] added the [channel] radio channel to [ADMIN_LOOKUPFLW(borg)].") log_admin("[key_name(user)] added the [channel] radio channel to [key_name(borg)].") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 52e76f95b6..a725399b0f 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -65,7 +65,7 @@ return if (!sender) - sender = input("Who is the message from?", "Sender") as null|anything in list("CentCom","Syndicate") + sender = input("Who is the message from?", "Sender") as null|anything in list(RADIO_CHANNEL_CENTCOM,RADIO_CHANNEL_SYNDICATE) if(!sender) return diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index a1b9b53fe9..252e2b5cbe 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -353,7 +353,7 @@ /datum/antagonist/changeling/greet() if (you_are_greet) to_chat(owner.current, "You are [changelingID], a changeling! You have absorbed and taken the form of a human.") - to_chat(owner.current, "Use say \":g message\" to communicate with your fellow changelings.") + to_chat(owner.current, "Use say \"[MODE_TOKEN_CHANGELING] message\" to communicate with your fellow changelings.") to_chat(owner.current, "You must complete the following tasks:") owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/ling_aler.ogg', 100, FALSE, pressure_affected = FALSE) diff --git a/code/modules/antagonists/changeling/powers/hivemind.dm b/code/modules/antagonists/changeling/powers/hivemind.dm index 1d7382d947..f7718d7708 100644 --- a/code/modules/antagonists/changeling/powers/hivemind.dm +++ b/code/modules/antagonists/changeling/powers/hivemind.dm @@ -1,8 +1,8 @@ -//HIVEMIND COMMUNICATION (:g) +//HIVEMIND COMMUNICATION //MODE_TOKEN_CHANGELING / :g /obj/effect/proc_holder/changeling/hivemind_comms name = "Hivemind Communication" desc = "We tune our senses to the airwaves to allow us to discreetly communicate and exchange DNA with other changelings." - helptext = "We will be able to talk with other changelings with :g. Exchanged DNA do not count towards absorb objectives." + helptext = "We will be able to talk with other changelings with :g. Exchanged DNA do not count towards absorb objectives." //MODE_TOKEN_CHANGELING needs to be manually updated here. dna_cost = 1 chemical_cost = -1 action_icon = 'icons/mob/actions/actions_xeno.dmi' @@ -20,7 +20,7 @@ ..() var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) changeling.changeling_speak = 1 - to_chat(user, "Use say \":g message\" to communicate with the other changelings.") + to_chat(user, "Use say \"[MODE_TOKEN_CHANGELING] message\" to communicate with the other changelings.") var/obj/effect/proc_holder/changeling/hivemind_upload/S1 = new if(!changeling.has_sting(S1)) changeling.purchasedpowers+=S1 diff --git a/code/modules/antagonists/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm index 70df78e3b4..971c811074 100644 --- a/code/modules/antagonists/changeling/powers/linglink.dm +++ b/code/modules/antagonists/changeling/powers/linglink.dm @@ -56,8 +56,8 @@ if(M.lingcheck() == LINGHIVE_LING) to_chat(M, "We can sense a foreign presence in the hivemind...") target.mind.linglink = 1 - target.say(":g AAAAARRRRGGGGGHHHHH!!") - to_chat(target, "You can now communicate in the changeling hivemind, say \":g message\" to communicate!") + target.say("[MODE_TOKEN_CHANGELING] AAAAARRRRGGGGGHHHHH!!") + to_chat(target, "You can now communicate in the changeling hivemind, say \"[MODE_TOKEN_CHANGELING] message\" to communicate!") target.reagents.add_reagent("salbutamol", 40) // So they don't choke to death while you interrogate them sleep(1800) SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]", "[i]")) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 4e0595362c..99d8ae797b 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -244,6 +244,7 @@ lefthand_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi' righthand_file = 'icons/mob/inhands/antag/changeling_righthand.dmi' item_flags = NEEDS_PERMIT | ABSTRACT | DROPDEL | NOBLUDGEON + slot_flags = NONE flags_1 = NONE w_class = WEIGHT_CLASS_HUGE ammo_type = /obj/item/ammo_casing/magic/tentacle diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index 68ddf3ce28..c58d934d6d 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -230,24 +230,23 @@ /obj/effect/proc_holder/changeling/sting/LSD name = "Hallucination Sting" - desc = "Causes terror in the target." - helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect begins after a few seconds." + desc = "Causes terror in the target and deals a minor amount of toxin damage." + helptext = "We evolve the ability to sting a target with a powerful toxic hallucinogenic chemical. The target does not notice they have been stung, and the effect begins instantaneously. This ability is somewhat loud, and carries a small risk of our blood gaining violent sensitivity to heat." sting_icon = "sting_lsd" chemical_cost = 10 dna_cost = 1 + loudness = 1 action_icon = 'icons/mob/actions/actions_changeling.dmi' action_icon_state = "ling_sting_lsd" action_background_icon_state = "bg_ling" -/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target) +/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/target) log_combat(user, target, "stung", "LSD sting") - addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(100,200)) + if(target.reagents) + target.reagents.add_reagent("regenerative_materia", 5) + target.reagents.add_reagent("mindbreaker", 5) return TRUE -/obj/effect/proc_holder/changeling/sting/LSD/proc/hallucination_time(mob/living/carbon/target) - if(target) - target.hallucination = max(90, target.hallucination) - /obj/effect/proc_holder/changeling/sting/cryo name = "Cryogenic Sting" desc = "We silently sting a human with a cocktail of chemicals that freeze them." diff --git a/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm b/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm index ea2ec4d6ef..5cf7ab7923 100644 --- a/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm +++ b/code/modules/antagonists/clockcult/clock_effects/spatial_gateway.dm @@ -133,6 +133,9 @@ return FALSE if(!uses) return FALSE + if(!do_teleport(A, get_turf(linked_gateway), channel = TELEPORT_CHANNEL_CULT, forced = TRUE)) + visible_message("[A] bounces off [src]!") + return FALSE if(isliving(A)) var/mob/living/user = A to_chat(user, "You pass through [src] and appear elsewhere!") @@ -141,7 +144,6 @@ playsound(linked_gateway, 'sound/effects/empulse.ogg', 50, 1) transform = matrix() * 1.5 linked_gateway.transform = matrix() * 1.5 - A.forceMove(get_turf(linked_gateway)) if(!no_cost) uses = max(0, uses - 1) linked_gateway.uses = max(0, linked_gateway.uses - 1) diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm index 530c4c5662..23caa788d4 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm @@ -67,6 +67,7 @@ name = "replicant manacles" desc = "Heavy manacles made out of freezing-cold metal. It looks like brass, but feels much more solid." icon_state = "brass_manacles" + item_state = "brass_manacles" item_flags = DROPDEL /obj/item/restraints/handcuffs/clockwork/dropped(mob/user) diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm index 54027266e5..0ac96c47f9 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm @@ -69,7 +69,7 @@ heat_protection = CHEST|GROIN|LEGS resistance_flags = FIRE_PROOF | ACID_PROOF armor = list("melee" = 60, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - allowed = list(/obj/item/clockwork, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor, /obj/item/mmi/posibrain/soul_vessel, /obj/item/reagent_containers/food/drinks/holyoil) + allowed = list(/obj/item/clockwork, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor, /obj/item/mmi/posibrain/soul_vessel, /obj/item/reagent_containers/food/drinks/bottle/holyoil) /obj/item/clothing/suit/armor/clockwork/Initialize() . = ..() diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm index 552a747651..6d6b1fa9d0 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_drivers.dm @@ -27,7 +27,7 @@ to_chat(invoker, "Stargazers can't be built off-station.") return return ..() - + //Integration Cog: Creates an integration cog that can be inserted into APCs to passively siphon power. /datum/clockwork_scripture/create_object/integration_cog @@ -224,12 +224,14 @@ . = ..() /datum/clockwork_scripture/abscond/scripture_effects() - var/take_pulling = invoker.pulling && isliving(invoker.pulling) && get_clockwork_power(ABSCOND_ABDUCTION_COST) + var/mob/living/pulled_mob = (invoker.pulling && isliving(invoker.pulling) && get_clockwork_power(ABSCOND_ABDUCTION_COST)) ? invoker.pulling : null var/turf/T if(GLOB.ark_of_the_clockwork_justiciar) T = get_step(GLOB.ark_of_the_clockwork_justiciar, SOUTH) else T = get_turf(pick(GLOB.servant_spawns)) + if(!do_teleport(invoker, T, channel = TELEPORT_CHANNEL_CULT, forced = TRUE)) + return invoker.visible_message("[invoker] flickers and phases out of existence!", \ "You feel a dizzying sense of vertigo as you're yanked back to Reebe!") T.visible_message("[invoker] flickers and phases into existence!") @@ -237,10 +239,9 @@ playsound(T, 'sound/magic/magic_missile.ogg', 50, TRUE) do_sparks(5, TRUE, invoker) do_sparks(5, TRUE, T) - if(take_pulling) + if(pulled_mob && do_teleport(pulled_mob, T, channel = TELEPORT_CHANNEL_CULT, forced = TRUE)) adjust_clockwork_power(-special_power_cost) - invoker.pulling.forceMove(T) - invoker.forceMove(T) + invoker.start_pulling(pulled_mob) //forcemove resets pulls, so we need to re-pull if(invoker.client) animate(invoker.client, color = client_color, time = 25) diff --git a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm index 2b1d9d5f02..4cf7c1ba60 100644 --- a/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm +++ b/code/modules/antagonists/clockcult/clock_structures/ark_of_the_clockwork_justicar.dm @@ -131,10 +131,10 @@ if(!M || !M.current) continue if(isliving(M.current) && M.current.stat != DEAD) + var/turf/t_turf if(isAI(M.current)) - M.current.forceMove(get_step(get_step(src, NORTH),NORTH)) // AI too fat, must make sure it always ends up a 2 tiles north instead of on the ark. - else - M.current.forceMove(get_turf(src)) + t_turf = isAI(M.current) ? get_step(get_step(src, NORTH),NORTH) : get_turf(src) // AI too fat, must make sure it always ends up a 2 tiles north instead of on the ark. + do_teleport(M, t_turf, channel = TELEPORT_CHANNEL_CULT, forced = TRUE) M.current.overlay_fullscreen("flash", /obj/screen/fullscreen/flash) M.current.clear_fullscreen("flash", 5) playsound(src, 'sound/magic/clockwork/invoke_general.ogg', 50, FALSE) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index a5fd516a42..f58ffc56d2 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -490,11 +490,12 @@ to_chat(user, "The target rune is blocked. Attempting to teleport to it would be massively unwise.") return uses-- - user.visible_message("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!", \ - "You speak the words of the talisman and find yourself somewhere else!", "You hear a sharp crack.") + var/turf/origin = get_turf(user) var/mob/living/L = target - L.forceMove(dest) - dest.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") + if(do_teleport(L, dest, channel = TELEPORT_CHANNEL_CULT)) + origin.visible_message("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!", \ + "You speak the words of the talisman and find yourself somewhere else!", "You hear a sharp crack.") + dest.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") ..() //Shackles diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 9a17c3270b..dc2c29eb6d 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -568,7 +568,7 @@ var/mob/living/carbon/C = user if(C.pulling) var/atom/movable/pulled = C.pulling - pulled.forceMove(T) + do_teleport(pulled, T, channel = TELEPORT_CHANNEL_CULT) . = pulled /obj/item/cult_shift/attack_self(mob/user) @@ -593,13 +593,12 @@ new /obj/effect/temp_visual/dir_setting/cult/phase/out(mobloc, C.dir) var/atom/movable/pulled = handle_teleport_grab(destination, C) - C.forceMove(destination) - if(pulled) - C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull - - new /obj/effect/temp_visual/dir_setting/cult/phase(destination, C.dir) - playsound(destination, 'sound/effects/phasein.ogg', 25, 1) - playsound(destination, "sparks", 50, 1) + if(do_teleport(C, destination, channel = TELEPORT_CHANNEL_CULT)) + if(pulled) + C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull + new /obj/effect/temp_visual/dir_setting/cult/phase(destination, C.dir) + playsound(destination, 'sound/effects/phasein.ogg', 25, 1) + playsound(destination, "sparks", 50, 1) else to_chat(C, "The veil cannot be torn here!") diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index be8d3b2e0a..a69694ced9 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -422,6 +422,7 @@ structure_check() searches for nearby cultist structures required for the invoca return var/movedsomething = FALSE var/moveuserlater = FALSE + var/movesuccess = FALSE for(var/atom/movable/A in T) if(ishuman(A)) new /obj/effect/temp_visual/dir_setting/cult/phase/out(T, A.dir) @@ -432,20 +433,26 @@ structure_check() searches for nearby cultist structures required for the invoca continue if(!A.anchored) movedsomething = TRUE - A.forceMove(target) + if(do_teleport(A, target, forceMove = TRUE, channel = TELEPORT_CHANNEL_CULT)) + movesuccess = TRUE if(movedsomething) ..() - visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!", null, "You hear a sharp crack.") - to_chat(user, "You[moveuserlater ? "r vision blurs, and you suddenly appear somewhere else":" send everything above the rune away"].") if(moveuserlater) - user.forceMove(target) + if(do_teleport(user, target, channel = TELEPORT_CHANNEL_CULT)) + movesuccess = TRUE + if(movesuccess) + visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!", null, "You hear a sharp crack.") + to_chat(user, "You[moveuserlater ? "r vision blurs, and you suddenly appear somewhere else":" send everything above the rune away"].") + else + to_chat(user, "You[moveuserlater ? "r vision blurs briefly, but nothing happens":" try send everything above the rune away, but the teleportation fails"].") if(is_mining_level(z) && !is_mining_level(target.z)) //No effect if you stay on lavaland actual_selected_rune.handle_portal("lava") else var/area/A = get_area(T) if(A.map_name == "Space") actual_selected_rune.handle_portal("space", T) - target.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") + if(movesuccess) + target.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") else fail_invoke() diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm index c616459bd1..b274283621 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm @@ -62,7 +62,10 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) for(var/obj/machinery/computer/camera_advanced/shuttle_docker/D in GLOB.jam_on_wardec) D.jammed = TRUE - new uplink_type(get_turf(user), user.key, CHALLENGE_TELECRYSTALS + CEILING(PLAYER_SCALING * GLOB.player_list.len, 1)) + var/list/nukeops = get_antag_minds(/datum/antagonist/nukeop) + var/actual_players = GLOB.joined_player_list.len - nukeops.len + + new uplink_type(get_turf(user), user.key, CHALLENGE_TELECRYSTALS + CEILING(PLAYER_SCALING * actual_players, 1)) CONFIG_SET(number/shuttle_refuel_delay, max(CONFIG_GET(number/shuttle_refuel_delay), CHALLENGE_SHUTTLE_DELAY)) SSblackbox.record_feedback("amount", "nuclear_challenge_mode", 1) @@ -72,7 +75,10 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) if(declaring_war) to_chat(user, "You are already in the process of declaring war! Make your mind up.") return FALSE - if(GLOB.player_list.len < CHALLENGE_MIN_PLAYERS) + + var/list/nukeops = get_antag_minds(/datum/antagonist/nukeop) + var/actual_players = GLOB.joined_player_list.len - nukeops.len + if(actual_players < CHALLENGE_MIN_PLAYERS) to_chat(user, "The enemy crew is too small to be worth declaring war on.") return FALSE if(!user.onSyndieBase()) diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm index 9fb2c3e2b7..87cee7586d 100644 --- a/code/modules/antagonists/swarmer/swarmer.dm +++ b/code/modules/antagonists/swarmer/swarmer.dm @@ -488,7 +488,7 @@ S.set_up(4,0,get_turf(target)) S.start() playsound(src,'sound/effects/sparks4.ogg',50,1) - do_teleport(target, F, 0) + do_teleport(target, F, 0, channel = TELEPORT_CHANNEL_BLUESPACE) /mob/living/simple_animal/hostile/swarmer/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, safety = FALSE, tesla_shock = FALSE, illusion = FALSE, stun = TRUE) if(!tesla_shock) diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 86493f6322..08e00ea0f4 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -408,7 +408,7 @@ break var/turf/potential_T = find_safe_turf() if(T.z != potential_T.z || abs(get_dist_euclidian(potential_T,T)) > 50 - breakout) - user.forceMove(potential_T) + do_teleport(user, potential_T, channel = TELEPORT_CHANNEL_MAGIC) user.canmove = 0 T = potential_T break diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 9858db2abb..0d9c0730c1 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -38,8 +38,11 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list()) for(var/id in cached_gases) . += cached_gases[id] * cached_gasheats[id] -/datum/gas_mixture/turf/heat_capacity() - . = ..() +/datum/gas_mixture/turf/heat_capacity() // Same as above except vacuums return HEAT_CAPACITY_VACUUM + var/list/cached_gases = gases + var/list/cached_gasheats = GLOB.meta_gas_specific_heats + for(var/id in cached_gases) + . += cached_gases[id] * cached_gasheats[id] if(!.) . += HEAT_CAPACITY_VACUUM //we want vacuums in turfs to have the same heat capacity as space @@ -331,22 +334,19 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list()) /datum/gas_mixture/react(datum/holder) . = NO_REACTION var/list/cached_gases = gases - if(!cached_gases.len) + if(!length(cached_gases)) return - var/possible + var/list/reactions = list() for(var/I in cached_gases) - if(GLOB.nonreactive_gases[I]) - continue - possible = TRUE - break - if(!possible) + reactions += SSair.gas_reactions[I] + if(!length(reactions)) return reaction_results = new var/temp = temperature var/ener = THERMAL_ENERGY(src) reaction_loop: - for(var/r in SSair.gas_reactions) + for(var/r in reactions) var/datum/gas_reaction/reaction = r var/list/min_reqs = reaction.min_requirements @@ -376,14 +376,11 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list()) continue reaction_loop //at this point, all requirements for the reaction are satisfied. we can now react() */ - . |= reaction.react(src, holder) if (. & STOP_REACTIONS) break if(.) GAS_GARBAGE_COLLECT(gases) - if(temperature < TCMB) //just for safety - temperature = TCMB //Takes the amount of the gas you want to PP as an argument //So I don't have to do some hacky switches/defines/magic strings diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index d628826b01..19f7bff965 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -78,22 +78,26 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g var/moles_visible = null var/dangerous = FALSE //currently used by canisters var/fusion_power = 0 //How much the gas accelerates a fusion reaction + var/rarity = 0 // relative rarity compared to other gases, used when setting up the reactions list. /datum/gas/oxygen id = "o2" specific_heat = 20 name = "Oxygen" + rarity = 900 /datum/gas/nitrogen id = "n2" specific_heat = 20 name = "Nitrogen" + rarity = 1000 /datum/gas/carbon_dioxide //what the fuck is this? id = "co2" specific_heat = 30 name = "Carbon Dioxide" fusion_power = 3 + rarity = 700 /datum/gas/plasma id = "plasma" @@ -102,6 +106,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g gas_overlay = "plasma" moles_visible = MOLES_GAS_VISIBLE dangerous = TRUE + rarity = 800 /datum/gas/water_vapor id = "water_vapor" @@ -110,6 +115,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g gas_overlay = "water_vapor" moles_visible = MOLES_GAS_VISIBLE fusion_power = 8 + rarity = 500 /datum/gas/hypernoblium id = "nob" @@ -118,6 +124,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g gas_overlay = "freon" moles_visible = MOLES_GAS_VISIBLE dangerous = TRUE + rarity = 50 /datum/gas/nitrous_oxide id = "n2o" @@ -126,6 +133,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g gas_overlay = "nitrous_oxide" moles_visible = MOLES_GAS_VISIBLE * 2 dangerous = TRUE + rarity = 600 /datum/gas/nitryl id = "no2" @@ -135,6 +143,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g moles_visible = MOLES_GAS_VISIBLE dangerous = TRUE fusion_power = 15 + rarity = 100 /datum/gas/tritium id = "tritium" @@ -144,6 +153,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g moles_visible = MOLES_GAS_VISIBLE dangerous = TRUE fusion_power = 1 + rarity = 300 /datum/gas/bz id = "bz" @@ -151,18 +161,21 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g name = "BZ" dangerous = TRUE fusion_power = 8 + rarity = 400 /datum/gas/stimulum id = "stim" specific_heat = 5 name = "Stimulum" fusion_power = 7 + rarity = 1 /datum/gas/pluoxium id = "pluox" specific_heat = 80 name = "Pluoxium" fusion_power = 10 + rarity = 200 /datum/gas/miasma id = "miasma" @@ -171,6 +184,7 @@ GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/g name = "Miasma" gas_overlay = "miasma" moles_visible = MOLES_GAS_VISIBLE * 60 + rarity = 250 /obj/effect/overlay/gas icon = 'icons/effects/atmospherics.dmi' diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index ef0a422079..5ad97fb7c8 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -1,19 +1,36 @@ //All defines used in reactions are located in ..\__DEFINES\reactions.dm /proc/init_gas_reactions() - var/list/reaction_types = list() + . = list() + for(var/type in subtypesof(/datum/gas)) + .[type] = list() + for(var/r in subtypesof(/datum/gas_reaction)) var/datum/gas_reaction/reaction = r - if(!initial(reaction.exclude)) - reaction_types += reaction - reaction_types = sortList(reaction_types, /proc/cmp_gas_reactions) + if(initial(reaction.exclude)) + continue + reaction = new r + var/datum/gas/reaction_key + for (var/req in reaction.min_requirements) + if (ispath(req)) + var/datum/gas/req_gas = req + if (!reaction_key || initial(reaction_key.rarity) > initial(req_gas.rarity)) + reaction_key = req_gas + .[reaction_key] += list(reaction) + sortTim(., /proc/cmp_gas_reactions, TRUE) - . = list() - for(var/path in reaction_types) - . += new path - -/proc/cmp_gas_reactions(datum/gas_reaction/a, datum/gas_reaction/b) //sorts in descending order of priority - return initial(b.priority) - initial(a.priority) +/proc/cmp_gas_reactions(list/datum/gas_reaction/a, list/datum/gas_reaction/b) // compares lists of reactions by the maximum priority contained within the list + if (!length(a) || !length(b)) + return length(b) - length(a) + var/maxa + var/maxb + for (var/datum/gas_reaction/R in a) + if (R.priority > maxa) + maxa = R.priority + for (var/datum/gas_reaction/R in b) + if (R.priority > maxb) + maxb = R.priority + return maxb - maxa /datum/gas_reaction //regarding the requirements lists: the minimum or maximum requirements must be non-zero. @@ -364,7 +381,7 @@ cached_gases[/datum/gas/nitrous_oxide] -= reaction_efficency cached_gases[/datum/gas/plasma] -= 2*reaction_efficency - SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, (reaction_efficency**0.5)*BZ_RESEARCH_AMOUNT) + SSresearch.science_tech.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, (reaction_efficency**0.5)*BZ_RESEARCH_AMOUNT) if(energy_released > 0) var/new_heat_capacity = air.heat_capacity() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 552b9dbd64..35b30107d8 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -27,7 +27,7 @@ var/obj/item/radio/radio var/radio_key = /obj/item/encryptionkey/headset_med - var/radio_channel = "Medical" + var/radio_channel = RADIO_CHANNEL_MEDICAL var/running_anim = FALSE diff --git a/code/modules/cargo/exports/manifest.dm b/code/modules/cargo/exports/manifest.dm index 02b060e0bf..d03f5a46ce 100644 --- a/code/modules/cargo/exports/manifest.dm +++ b/code/modules/cargo/exports/manifest.dm @@ -81,6 +81,7 @@ /datum/export/paperwork_correct cost = 150 + k_elasticity = 0 unit_name = "correct paperwork" export_types = list(/obj/item/folder/paperwork_correct) @@ -88,5 +89,6 @@ /datum/export/paperwork_incorrect cost = -500 // Failed to meet NT standers + k_elasticity = 0 unit_name = "returned incorrect paperwork" export_types = list(/obj/item/folder/paperwork) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 72f5d2d068..5656287c52 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -252,6 +252,17 @@ crate_name = "space suit crate" crate_type = /obj/structure/closet/crate/secure +/datum/supply_pack/emergency/spacejets + name = "Spare EVA Jetpacks" + desc = "Contains three EVA grade jectpaks. Requires EVA access to open." + cost = 2000 + access = ACCESS_EVA + contains = list(/obj/item/tank/jetpack/carbondioxide/eva, + /obj/item/tank/jetpack/carbondioxide/eva, + /obj/item/tank/jetpack/carbondioxide/eva) + crate_name = "eva jetpacks crate" + crate_type = /obj/structure/closet/crate/secure + /datum/supply_pack/emergency/specialops name = "Special Ops Supplies" desc = "(*!&@#TOO CHEAP FOR THAT NULL_ENTRY, HUH OPERATIVE? WELL, THIS LITTLE ORDER CAN STILL HELP YOU OUT IN A PINCH. CONTAINS A BOX OF FIVE EMP GRENADES, THREE SMOKEBOMBS, AN INCENDIARY GRENADE, AND A \"SLEEPY PEN\" FULL OF NICE TOXINS!#@*$" @@ -339,15 +350,6 @@ /obj/item/clothing/head/fedora/det_hat) crate_name = "forensics crate" -/datum/supply_pack/security/sechardsuit - name = "Sec Hardsuit" - desc = "One Sec Hardsuit with a small air tank and mask." - cost = 3000 // half of SWAT gear for have the armor and half the gear - contains = list(/obj/item/clothing/suit/space/hardsuit/security, - /obj/item/tank/internals/air, - /obj/item/clothing/mask/gas) - crate_name = "sec hardsuit crate" - /datum/supply_pack/security/helmets name = "Helmets Crate" desc = "Contains three standard-issue brain buckets. Requires Security access to open." @@ -366,6 +368,55 @@ /obj/item/gun/energy/laser) crate_name = "laser crate" +/datum/supply_pack/security/russianclothing + name = "Russian Surplus Clothing" + desc = "An old russian crate full of surplus armor that they used to use! Has two sets of bulletproff armor, a few union suits and some warm hats!" + contraband = TRUE + cost = 5000 // Its basicly sec suits, good boots/gloves + contains = list(/obj/item/clothing/suit/security/officer/russian, + /obj/item/clothing/suit/security/officer/russian, + /obj/item/clothing/shoes/combat, + /obj/item/clothing/shoes/combat, + /obj/item/clothing/head/ushanka, + /obj/item/clothing/head/ushanka, + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/head/helmet/alt, + /obj/item/clothing/head/helmet/alt, + /obj/item/clothing/gloves/combat, + /obj/item/clothing/gloves/combat, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas) + crate_name = "surplus russian clothing" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/security/russianmosin + name = "Russian Minutemen Gear" + desc = "An old russian Minutemen crate, comes with a full russian outfit, a mosin and a stripper clip." + contraband = TRUE + access = FALSE + cost = 5000 // + contains = list(/obj/item/clothing/suit/security/officer/russian, + /obj/item/clothing/shoes/combat, + /obj/item/clothing/head/ushanka, + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/head/helmet/alt, + /obj/item/clothing/gloves/combat, + /obj/item/clothing/mask/gas, + /obj/item/gun/ballistic/shotgun/boltaction, + /obj/item/ammo_box/a762) + crate_name = "surplus russian gear" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/security/sechardsuit + name = "Sec Hardsuit" + desc = "One Sec Hardsuit with a small air tank and mask." + cost = 3000 // half of SWAT gear for have the armor and half the gear + contains = list(/obj/item/clothing/suit/space/hardsuit/security, + /obj/item/tank/internals/air, + /obj/item/clothing/mask/gas) + crate_name = "sec hardsuit crate" + /datum/supply_pack/security/securitybarriers name = "Security Barrier Grenades" desc = "Stem the tide with four Security Barrier grenades. Requires Security access to open." @@ -430,28 +481,6 @@ /obj/item/melee/baton/loaded) crate_name = "stun baton crate" -/datum/supply_pack/security/russianclothing - name = "Russian Surplus Clothing" - desc = "An old russian crate full of surplus armor that they used to use! Has two sets of bulletproff armor, a few union suits and some warm hats!" - contraband = TRUE - cost = 5000 // Its basicly sec suits, good boots/gloves - contains = list(/obj/item/clothing/suit/security/officer/russian, - /obj/item/clothing/suit/security/officer/russian, - /obj/item/clothing/shoes/combat, - /obj/item/clothing/shoes/combat, - /obj/item/clothing/head/ushanka, - /obj/item/clothing/head/ushanka, - /obj/item/clothing/suit/armor/bulletproof, - /obj/item/clothing/suit/armor/bulletproof, - /obj/item/clothing/head/helmet/alt, - /obj/item/clothing/head/helmet/alt, - /obj/item/clothing/gloves/combat, - /obj/item/clothing/gloves/combat, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas) - crate_name = "surplus russian clothing" - crate_type = /obj/structure/closet/crate/internals - /datum/supply_pack/security/taser name = "Taser Crate" desc = "From the depths of stunbased combat, this order rises above, supreme. Contains three hybrid tasers, capable of firing both electrodes and disabling shots. Requires Security access to open." @@ -665,6 +694,15 @@ /obj/item/gun/energy/e_gun/stun) crate_name = "swat taser crate" +/datum/supply_pack/security/armory/woodstock + name = "Classic WoodStock Shotguns Crate" + desc = "Contains three rustic, pumpaction shotguns. Requires Armory access to open." + cost = 3500 + contains = list(/obj/item/gun/ballistic/shotgun, + /obj/item/gun/ballistic/shotgun, + /obj/item/gun/ballistic/shotgun) + crate_name = "woodstock shotguns crate" + /datum/supply_pack/security/armory/wt550 name = "WT-550 Semi-Auto Rifle Crate" desc = "Contains two high-powered, semiautomatic rifles chambered in 4.6x30mm. Requires Armory access to open." @@ -1968,7 +2006,8 @@ /obj/item/storage/box/mre/menu1/safe, /obj/item/storage/box/mre/menu2/safe, /obj/item/storage/box/mre/menu2/safe, - /obj/item/storage/box/mre/menu3) + /obj/item/storage/box/mre/menu3, + /obj/item/storage/box/mre/menu4/safe) crate_name = "MRE crate (emergency rations)" /datum/supply_pack/organic/pizza @@ -2195,6 +2234,12 @@ /obj/item/clothing/neck/petcollar) crate_name = "pug crate" +/datum/supply_pack/organic/critter/kiwi + name = "Space kiwi Crate" + cost = 2000 + contains = list( /mob/living/simple_animal/kiwi) + crate_name = "space kiwi crate" + /datum/supply_pack/critter/snake name = "Snake Crate" desc = "Tired of these MOTHER FUCKING snakes on this MOTHER FUCKING space station? Then this isn't the crate for you. Contains three poisonous snakes." @@ -2204,6 +2249,17 @@ /mob/living/simple_animal/hostile/retaliate/poison/snake) crate_name = "snake crate" +/datum/supply_pack/critter/secbat + name = "Security Bat Crate" + desc = "Contains five security bats, perfect to Bat-up any security officer." + cost = 2500 + contains = list(/mob/living/simple_animal/hostile/retaliate/bat/secbat, + /mob/living/simple_animal/hostile/retaliate/bat/secbat, + /mob/living/simple_animal/hostile/retaliate/bat/secbat, + /mob/living/simple_animal/hostile/retaliate/bat/secbat, + /mob/living/simple_animal/hostile/retaliate/bat/secbat) + crate_name = "security bat crate" + ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Costumes & Toys ///////////////////////////////// ////////////////////////////////////////////////////////////////////////////// @@ -2561,6 +2617,13 @@ /obj/item/vending_refill/wardrobe/law_wardrobe) crate_name = "security department supply crate" +/datum/supply_pack/costumes_toys/kinkmate + name = "Kinkmate construction kit" + cost = 2000 + contraband = TRUE + contains = list(/obj/item/vending_refill/kink, /obj/item/circuitboard/machine/kinkmate) + crate_name = "Kinkmate construction kit" + ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Miscellaneous /////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// @@ -2674,6 +2737,26 @@ crate_type = /obj/structure/closet/crate/wooden crate_name = "festive wrapping paper crate" +/datum/supply_pack/misc/paper_work + name = "Freelance Paper work" + desc = "The Nanotrasen Primary Bureaucratic Database Intelligence (PDBI) reports that the station has not completed its funding and grant paperwork this solar cycle. In order to gain further funding, your station is required to fill out (10) ten of these forms or no additional capital will be disbursed. We have sent you ten copies of the following form and we expect every one to be up to Nanotrasen Standards." // Disbursement. It's not a typo, look it up. + cost = 700 // Net of 0 credits + contains = list(/obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/folder/paperwork, + /obj/item/pen/fountain, + /obj/item/pen/fountain, + /obj/item/pen/fountain, + /obj/item/pen/fountain, + /obj/item/pen/fountain) + crate_name = "Paperwork" /datum/supply_pack/misc/funeral name = "Funeral Supply crate" @@ -2686,18 +2769,11 @@ crate_name = "coffin" crate_type = /obj/structure/closet/crate/coffin -/datum/supply_pack/misc/religious_supplies - name = "Religious Supplies Crate" - desc = "Keep your local chaplain happy and well-supplied, lest they call down judgement upon your cargo bay. Contains two bottles of holywater, bibles, chaplain robes, and burial garmets." - cost = 4000 // it costs so much because the Space Church is ran by Space Jews - contains = list(/obj/item/reagent_containers/food/drinks/bottle/holywater, - /obj/item/reagent_containers/food/drinks/bottle/holywater, - /obj/item/storage/book/bible/booze, - /obj/item/storage/book/bible/booze, - /obj/item/clothing/suit/hooded/chaplain_hoodie, - /obj/item/clothing/suit/hooded/chaplain_hoodie - ) - crate_name = "religious supplies crate" +/datum/supply_pack/misc/jukebox + name = "Jukebox" + cost = 35000 + contains = list(/obj/machinery/jukebox) + crate_name = "Jukebox" /datum/supply_pack/misc/lewd name = "Lewd Crate" // OwO @@ -2730,26 +2806,18 @@ crate_name = "deluxe keg" crate_type = /obj/structure/closet/crate -/datum/supply_pack/misc/paper_work - name = "Freelance Paper work" - desc = "The Nanotrasen Primary Bureaucratic Database Intelligence (PDBI) reports that the station has not completed its funding and grant paperwork this solar cycle. In order to gain further funding, your station is required to fill out (10) ten of these forms or no additional capital will be disbursed. We have sent you ten copies of the following form and we expect every one to be up to Nanotrasen Standards." // Disbursement. It's not a typo, look it up. - cost = 400 // Net of 0 credits - contains = list(/obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/folder/paperwork, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain, - /obj/item/pen/fountain) - crate_name = "Paperwork" +/datum/supply_pack/misc/religious_supplies + name = "Religious Supplies Crate" + desc = "Keep your local chaplain happy and well-supplied, lest they call down judgement upon your cargo bay. Contains two bottles of holywater, bibles, chaplain robes, and burial garmets." + cost = 4000 // it costs so much because the Space Church is ran by Space Jews + contains = list(/obj/item/reagent_containers/food/drinks/bottle/holywater, + /obj/item/reagent_containers/food/drinks/bottle/holywater, + /obj/item/storage/book/bible/booze, + /obj/item/storage/book/bible/booze, + /obj/item/clothing/suit/hooded/chaplain_hoodie, + /obj/item/clothing/suit/hooded/chaplain_hoodie + ) + crate_name = "religious supplies crate" /datum/supply_pack/misc/randomised/promiscuous name = "Promiscuous Organs" @@ -2775,4 +2843,3 @@ /obj/item/toner, /obj/item/toner) crate_name = "toner crate" - diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index bac9ed0c89..c4ede4c396 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -78,6 +78,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/socks = "Nude" //socks type var/socks_color = "#FFFFFF" var/backbag = DBACKPACK //backpack type + var/jumpsuit_style = PREF_SUIT //suit/skirt var/hair_style = "Bald" //Hair type var/hair_color = "000" //Hair color var/facial_hair_style = "Shaved" //Face hair type @@ -686,6 +687,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(UNDIE_COLORABLE(GLOB.socks_list[socks])) dat += "Socks Color:[socks_color]" dat += "Backpack:[backbag]" + dat += "Jumpsuit:
[jumpsuit_style]
" dat += "Uplink Location:[uplink_spawn_loc]" dat += "" @@ -1408,19 +1410,21 @@ GLOBAL_LIST_EMPTY(preferences_datums) facial_hair_style = random_facial_hair_style(gender) if("underwear") underwear = random_underwear(gender) - undie_color = random_color() + undie_color = random_short_color() if("undershirt") undershirt = random_undershirt(gender) - shirt_color = random_color() + shirt_color = random_short_color() if("socks") socks = random_socks() - socks_color = random_color() + socks_color = random_short_color() if(BODY_ZONE_PRECISE_EYES) eye_color = random_eye_color() if("s_tone") skin_tone = random_skin_tone() if("bag") backbag = pick(GLOB.backbaglist) + if("suit") + jumpsuit_style = pick(GLOB.jumpsuitlist) if("all") random_character() @@ -1527,7 +1531,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("undie_color") var/n_undie_color = input(user, "Choose your underwear's color.", "Character Preference", undie_color) as color|null if(n_undie_color) - undie_color = n_undie_color + undie_color = sanitize_hexcolor(n_undie_color, include_crunch= TRUE) if("undershirt") var/new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference") as null|anything in GLOB.undershirt_list @@ -1537,7 +1541,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("shirt_color") var/n_shirt_color = input(user, "Choose your undershirt's color.", "Character Preference", shirt_color) as color|null if(n_shirt_color) - shirt_color = n_shirt_color + shirt_color = sanitize_hexcolor(n_shirt_color, include_crunch= TRUE) if("socks") var/new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in GLOB.socks_list @@ -1547,7 +1551,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("socks_color") var/n_socks_color = input(user, "Choose your socks' color.", "Character Preference", socks_color) as color|null if(n_socks_color) - socks_color = n_socks_color + socks_color = sanitize_hexcolor(n_socks_color, include_crunch= TRUE) if("eyes") var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference","#"+eye_color) as color|null @@ -1962,6 +1966,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_backbag) backbag = new_backbag + if("suit") + if(jumpsuit_style == PREF_SUIT) + jumpsuit_style = PREF_SKIRT + else + jumpsuit_style = PREF_SUIT + + if("uplink_loc") var/new_loc = input(user, "Choose your character's traitor uplink spawn location:", "Character Preference") as null|anything in GLOB.uplink_spawn_loc_list if(new_loc) @@ -2280,6 +2291,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.backbag = backbag + character.jumpsuit_style = jumpsuit_style var/datum/species/chosen_species if(!roundstart_checks || (pref_species.id in GLOB.roundstart_races)) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 175cd9613a..2b238c2b8c 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -277,6 +277,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["socks"] >> socks S["socks_color"] >> socks_color S["backbag"] >> backbag + S["jumpsuit_style"] >> jumpsuit_style S["uplink_loc"] >> uplink_spawn_loc S["feature_mcolor"] >> features["mcolor"] S["feature_lizard_tail"] >> features["tail_lizard"] @@ -411,6 +412,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car eye_color = sanitize_hexcolor(eye_color, 3, 0) skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones) backbag = sanitize_inlist(backbag, GLOB.backbaglist, initial(backbag)) + jumpsuit_style = sanitize_inlist(jumpsuit_style, GLOB.jumpsuitlist, initial(jumpsuit_style)) uplink_spawn_loc = sanitize_inlist(uplink_spawn_loc, GLOB.uplink_spawn_loc_list, initial(uplink_spawn_loc)) features["mcolor"] = sanitize_hexcolor(features["mcolor"], 3, 0) features["tail_lizard"] = sanitize_inlist(features["tail_lizard"], GLOB.tails_list_lizard) @@ -479,7 +481,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["shirt_color"] , shirt_color) WRITE_FILE(S["socks"] , socks) WRITE_FILE(S["socks_color"] , socks_color) - WRITE_FILE(S["backbag"] , backbag) + WRITE_FILE(S["backbag"] , backbag) + WRITE_FILE(S["jumpsuit_style"] , jumpsuit_style) WRITE_FILE(S["uplink_loc"] , uplink_spawn_loc) WRITE_FILE(S["species"] , pref_species.id) WRITE_FILE(S["feature_mcolor"] , features["mcolor"]) diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 7346dc9ea9..cf411ef367 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -28,7 +28,6 @@ H.update_inv_wear_suit() else if(adjusted == ALT_STYLE) adjusted = NORMAL_STYLE - H.update_inv_wear_suit() if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None")) if(H.dna.features["taur"] in list("Naga", "Tentacle")) diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index bf11d40caf..3c3c8f0e9d 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -177,3 +177,23 @@ armor = list("melee" = 25, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) cold_protection = CHEST|ARMS heat_protection = CHEST|ARMS + + +//Robotocist + +/obj/item/clothing/suit/hooded/techpriest + name = "techpriest robes" + desc = "For those who REALLY love their toasters." + icon_state = "techpriest" + item_state = "techpriest" + body_parts_covered = CHEST|GROIN|LEGS|ARMS + hoodtype = /obj/item/clothing/head/hooded/techpriest + mutantrace_variation = NO_MUTANTRACE_VARIATION + +/obj/item/clothing/head/hooded/techpriest + name = "techpriest's hood" + desc = "A hood for those who REALLY love their toasters." + icon_state = "techpriesthood" + item_state = "techpriesthood" + body_parts_covered = HEAD + flags_inv = HIDEHAIR|HIDEEARS diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index c239f48b05..54264ef9d4 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -1,12 +1,18 @@ /obj/item/clothing/under/color desc = "A standard issue colored jumpsuit. Variety is the spice of life!" +/obj/item/clothing/under/skirt/color + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/color/random icon_state = "random_jumpsuit" /obj/item/clothing/under/color/random/Initialize() ..() - var/obj/item/clothing/under/color/C = pick(subtypesof(/obj/item/clothing/under/color) - /obj/item/clothing/under/color/random - /obj/item/clothing/under/color/grey/glorf - /obj/item/clothing/under/color/black/ghost) + var/obj/item/clothing/under/color/C = pick(subtypesof(/obj/item/clothing/under/color) - subtypesof(/obj/item/clothing/under/skirt/color) - /obj/item/clothing/under/color/random - /obj/item/clothing/under/color/grey/glorf - /obj/item/clothing/under/color/black/ghost) + if(ishuman(loc)) var/mob/living/carbon/human/H = loc H.equip_to_slot_or_del(new C(H), SLOT_W_UNIFORM) //or else you end up with naked assistants running around everywhere... @@ -14,6 +20,20 @@ new C(loc) return INITIALIZE_HINT_QDEL +/obj/item/clothing/under/skirt/color/random + icon_state = "random_jumpsuit" //Skirt variant needed + +/obj/item/clothing/under/skirt/color/random/Initialize() + ..() + var/obj/item/clothing/under/skirt/color/C = pick(subtypesof(/obj/item/clothing/under/skirt/color) - /obj/item/clothing/under/skirt/color/random) + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.equip_to_slot_or_del(new C(H), SLOT_W_UNIFORM) + else + new C(loc) + return INITIALIZE_HINT_QDEL + + /obj/item/clothing/under/color/black name = "black jumpsuit" icon_state = "black" @@ -21,6 +41,12 @@ item_color = "black" resistance_flags = NONE +/obj/item/clothing/under/skirt/color/black + name = "black jumpskirt" + icon_state = "black_skirt" + item_state = "bl_suit" + item_color = "black_skirt" + /obj/item/clothing/under/color/black/ghost item_flags = DROPDEL @@ -28,6 +54,9 @@ . = ..() ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) +/obj/item/clothing/under/color/black/ghost/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, DROPDEL) /obj/item/clothing/under/color/grey name = "grey jumpsuit" desc = "A tasteful grey jumpsuit that reminds you of the good old days." @@ -35,6 +64,13 @@ item_state = "gy_suit" item_color = "grey" +/obj/item/clothing/under/skirt/color/grey + name = "grey jumpskirt" + desc = "A tasteful grey jumpskirt that reminds you of the good old days." + icon_state = "grey_skirt" + item_state = "gy_suit" + item_color = "grey_skirt" + /obj/item/clothing/under/color/grey/glorf name = "ancient jumpsuit" desc = "A terribly ragged and frayed grey jumpsuit. It looks like it hasn't been washed in over a decade." @@ -49,12 +85,24 @@ item_state = "b_suit" item_color = "blue" +/obj/item/clothing/under/skirt/color/blue + name = "blue jumpskirt" + icon_state = "blue_skirt" + item_state = "b_suit" + item_color = "blue_skirt" + /obj/item/clothing/under/color/green name = "green jumpsuit" icon_state = "green" item_state = "g_suit" item_color = "green" +/obj/item/clothing/under/skirt/color/green + name = "green jumpskirt" + icon_state = "green_skirt" + item_state = "g_suit" + item_color = "green_skirt" + /obj/item/clothing/under/color/orange name = "orange jumpsuit" desc = "Don't wear this near paranoid security officers." @@ -62,6 +110,12 @@ item_state = "o_suit" item_color = "orange" +/obj/item/clothing/under/skirt/color/orange + name = "orange jumpskirt" + icon_state = "orange_skirt" + item_state = "o_suit" + item_color = "orange_skirt" + /obj/item/clothing/under/color/pink name = "pink jumpsuit" icon_state = "pink" @@ -69,66 +123,133 @@ item_state = "p_suit" item_color = "pink" +/obj/item/clothing/under/skirt/color/pink + name = "pink jumpskirt" + icon_state = "pink_skirt" + item_state = "p_suit" + item_color = "pink_skirt" + /obj/item/clothing/under/color/red name = "red jumpsuit" icon_state = "red" item_state = "r_suit" item_color = "red" +/obj/item/clothing/under/skirt/color/red + name = "red jumpskirt" + icon_state = "red_skirt" + item_state = "r_suit" + item_color = "red_skirt" + /obj/item/clothing/under/color/white name = "white jumpsuit" icon_state = "white" item_state = "w_suit" item_color = "white" +/obj/item/clothing/under/skirt/color/white + name = "white jumpskirt" + icon_state = "white_skirt" + item_state = "w_suit" + item_color = "white_skirt" + /obj/item/clothing/under/color/yellow name = "yellow jumpsuit" icon_state = "yellow" item_state = "y_suit" item_color = "yellow" +/obj/item/clothing/under/skirt/color/yellow + name = "yellow jumpskirt" + icon_state = "yellow_skirt" + item_state = "y_suit" + item_color = "yellow_skirt" + /obj/item/clothing/under/color/darkblue name = "darkblue jumpsuit" icon_state = "darkblue" item_state = "b_suit" item_color = "darkblue" +/obj/item/clothing/under/skirt/color/darkblue + name = "darkblue jumpskirt" + icon_state = "darkblue_skirt" + item_state = "b_suit" + item_color = "darkblue_skirt" + /obj/item/clothing/under/color/teal name = "teal jumpsuit" icon_state = "teal" item_state = "b_suit" item_color = "teal" +/obj/item/clothing/under/skirt/color/teal + name = "teal jumpskirt" + icon_state = "teal_skirt" + item_state = "b_suit" + item_color = "teal_skirt" + + /obj/item/clothing/under/color/lightpurple name = "purple jumpsuit" icon_state = "lightpurple" item_state = "p_suit" item_color = "lightpurple" +/obj/item/clothing/under/skirt/color/lightpurple + name = "lightpurple jumpskirt" + icon_state = "lightpurple_skirt" + item_state = "p_suit" + item_color = "lightpurple_skirt" + /obj/item/clothing/under/color/darkgreen name = "darkgreen jumpsuit" icon_state = "darkgreen" item_state = "g_suit" item_color = "darkgreen" +/obj/item/clothing/under/skirt/color/darkgreen + name = "darkgreen jumpskirt" + icon_state = "darkgreen_skirt" + item_state = "g_suit" + item_color = "darkgreen_skirt" + /obj/item/clothing/under/color/lightbrown name = "lightbrown jumpsuit" icon_state = "lightbrown" item_state = "lb_suit" item_color = "lightbrown" +/obj/item/clothing/under/skirt/color/lightbrown + name = "lightbrown jumpskirt" + icon_state = "lightbrown_skirt" + item_state = "lb_suit" + item_color = "lightbrown_skirt" + /obj/item/clothing/under/color/brown name = "brown jumpsuit" icon_state = "brown" item_state = "lb_suit" item_color = "brown" +/obj/item/clothing/under/skirt/color/brown + name = "brown jumpskirt" + icon_state = "brown_skirt" + item_state = "lb_suit" + item_color = "brown_skirt" + /obj/item/clothing/under/color/maroon name = "maroon jumpsuit" icon_state = "maroon" item_state = "r_suit" item_color = "maroon" +/obj/item/clothing/under/skirt/color/maroon + name = "maroon jumpskirt" + icon_state = "maroon_skirt" + item_state = "r_suit" + item_color = "maroon_skirt" + /obj/item/clothing/under/color/rainbow name = "rainbow jumpsuit" desc = "A multi-colored jumpsuit!" @@ -136,3 +257,11 @@ item_state = "rainbow" item_color = "rainbow" can_adjust = FALSE + +/obj/item/clothing/under/skirt/color/rainbow + name = "rainbow jumpskirt" + desc = "A multi-colored jumpskirt!" + icon_state = "rainbow_skirt" + item_state = "rainbow" + item_color = "rainbow_skirt" + can_adjust = FALSE diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 2288c98b34..c6796d64c9 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -16,6 +16,16 @@ item_color = "purplebartender" can_adjust = FALSE +/obj/item/clothing/under/rank/bartender/skirt + name = "bartender's skirt" + desc = "It looks like it could use some more flair." + icon_state = "barman_skirt" + item_state = "bar_suit" + item_color = "barman_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define. desc = "It's a blue jumpsuit with some gold markings denoting the rank of \"Captain\"." name = "captain's jumpsuit" @@ -25,6 +35,16 @@ sensor_mode = SENSOR_COORDS random_sensor = FALSE +/obj/item/clothing/under/rank/captain/skirt + name = "captain's jumpskirt" + desc = "It's a blue jumpskirt with some gold markings denoting the rank of \"Captain\"." + icon_state = "captain_skirt" + item_state = "b_suit" + item_color = "captain_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/cargo name = "quartermaster's jumpsuit" desc = "It's a jumpsuit worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper." @@ -32,6 +52,16 @@ item_state = "lb_suit" item_color = "qm" +/obj/item/clothing/under/rank/cargo/skirt + name = "quartermaster's jumpskirt" + desc = "It's a jumpskirt worn by the quartermaster. It's specially designed to prevent back injuries caused by pushing paper." + icon_state = "qm_skirt" + item_state = "lb_suit" + item_color = "qm_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/cargotech name = "cargo technician's jumpsuit" desc = "Shooooorts! They're comfy and easy to wear!" @@ -42,6 +72,15 @@ mutantrace_variation = MUTANTRACE_VARIATION alt_covers_chest = TRUE +/obj/item/clothing/under/rank/cargotech/skirt + name = "cargo technician's jumpskirt" + desc = "Skiiiiirts! They're comfy and easy to wear" + icon_state = "cargo_skirt" + item_state = "lb_suit" + item_color = "cargo_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP /obj/item/clothing/under/rank/chaplain desc = "It's a black jumpsuit, often worn by religious folk." @@ -51,6 +90,16 @@ item_color = "chapblack" can_adjust = FALSE +/obj/item/clothing/under/rank/chaplain/skirt + name = "chaplain's jumpskirt" + desc = "It's a black jumpskirt, often worn by religious folk." + icon_state = "chapblack_skirt" + item_state = "bl_suit" + item_color = "chapblack_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/chef name = "cook's suit" desc = "A suit which is given only to the most hardcore cooks in space." @@ -58,6 +107,15 @@ item_color = "chef" alt_covers_chest = TRUE +/obj/item/clothing/under/rank/chef/skirt + name = "cook's skirt" + desc = "A skirt which is given only to the most hardcore cooks in space." + icon_state = "chef_skirt" + item_color = "chef_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/clown name = "clown suit" desc = "'HONK!'" @@ -66,7 +124,6 @@ item_color = "clown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/rank/blueclown name = "blue clown suit" desc = "'BLUE HONK!'" @@ -130,7 +187,6 @@ /obj/item/clothing/under/rank/clown/Initialize() . = ..() AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50) - /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" @@ -139,6 +195,16 @@ item_color = "hop" can_adjust = FALSE +/obj/item/clothing/under/rank/head_of_personnel/skirt + name = "head of personnel's jumpskirt" + desc = "It's a jumpskirt worn by someone who works in the position of \"Head of Personnel\"." + icon_state = "hop_skirt" + item_state = "b_suit" + item_color = "hop_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/hydroponics desc = "It's a jumpsuit designed to protect against minor plant-related hazards." name = "botanist's jumpsuit" @@ -147,6 +213,16 @@ item_color = "hydroponics" permeability_coefficient = 0.5 +/obj/item/clothing/under/rank/hydroponics/skirt + name = "botanist's jumpskirt" + desc = "It's a jumpskirt designed to protect against minor plant-related hazards." + icon_state = "hydroponics_skirt" + item_state = "g_suit" + item_color = "hydroponics_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/janitor desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards." name = "janitor's jumpsuit" @@ -154,49 +230,108 @@ item_color = "janitor" armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) +/obj/item/clothing/under/rank/janitor/skirt + name = "janitor's jumpskirt" + desc = "It's the official skirt of the station's janitor. It has minor protection from biohazards." + icon_state = "janitor_skirt" + item_color = "janitor_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/lawyer desc = "Slick threads." name = "Lawyer suit" can_adjust = FALSE - /obj/item/clothing/under/lawyer/black + name = "lawyer black suit" icon_state = "lawyer_black" item_state = "lawyer_black" item_color = "lawyer_black" +/obj/item/clothing/under/lawyer/black/skirt + name = "lawyer black suitskirt" + icon_state = "lawyer_black_skirt" + item_state = "lawyer_black" + item_color = "lawyer_black_skirt" + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/lawyer/female + name = "female black suit" icon_state = "black_suit_fem" - item_state = "black_suit_fem" + item_state = "bl_suit" item_color = "black_suit_fem" /obj/item/clothing/under/lawyer/red + name = "lawyer red suit" icon_state = "lawyer_red" item_state = "lawyer_red" item_color = "lawyer_red" +/obj/item/clothing/under/lawyer/female/skirt + name = "female black suitskirt" + icon_state = "black_suit_fem_skirt" + item_state = "bl_suit" + item_color = "black_suit_fem_skirt" + fitted = FEMALE_UNIFORM_TOP + +/obj/item/clothing/under/lawyer/red/skirt + name = "lawyer red suitskirt" + icon_state = "lawyer_red_skirt" + item_state = "lawyer_red" + item_color = "lawyer_red_skirt" + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/lawyer/blue + name = "lawyer blue suit" icon_state = "lawyer_blue" item_state = "lawyer_blue" item_color = "lawyer_blue" +/obj/item/clothing/under/lawyer/blue/skirt + name = "lawyer blue suitskirt" + icon_state = "lawyer_blue_skirt" + item_state = "lawyer_blue" + item_color = "lawyer_blue_skirt" + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/lawyer/bluesuit name = "blue suit" desc = "A classy suit and tie." icon_state = "bluesuit" - item_state = "bluesuit" + item_state = "b_suit" item_color = "bluesuit" can_adjust = TRUE alt_covers_chest = TRUE +/obj/item/clothing/under/lawyer/bluesuit/skirt + name = "blue suitskirt" + desc = "A classy suitskirt and tie." + icon_state = "bluesuit_skirt" + item_state = "b_suit" + item_color = "bluesuit_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/lawyer/purpsuit name = "purple suit" icon_state = "lawyer_purp" - item_state = "lawyer_purp" + item_state = "p_suit" item_color = "lawyer_purp" fitted = NO_FEMALE_UNIFORM can_adjust = TRUE alt_covers_chest = TRUE +/obj/item/clothing/under/lawyer/purpsuit/skirt + name = "purple suitskirt" + icon_state = "lawyer_purp_skirt" + item_state = "p_suit" + item_color = "lawyer_purp_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/lawyer/blacksuit name = "black suit" desc = "A professional black suit. Nanotrasen Investigation Bureau approved!" @@ -206,6 +341,16 @@ can_adjust = TRUE alt_covers_chest = TRUE +/obj/item/clothing/under/lawyer/blacksuit/skirt + name = "black suitskirt" + desc = "A professional black suit. Nanotrasen Investigation Bureau approved!" + icon_state = "blacksuit_skirt" + item_state = "bar_suit" + item_color = "blacksuit_skirt" + can_adjust = FALSE + alt_covers_chest = TRUE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/curator name = "sensible suit" desc = "It's very... sensible." @@ -214,6 +359,33 @@ item_color = "red_suit" can_adjust = FALSE +/obj/item/clothing/under/lawyer/really_black + name = "executive suit" + desc = "A formal black suit and red tie, intended for the station's finest." + icon_state = "really_black_suit" + item_state = "bl_suit" + item_color = "really_black_suit" + +/obj/item/clothing/under/lawyer/really_black/skirt + name = "executive suitskirt" + desc = "A formal black suitskirt and red tie, intended for the station's finest." + icon_state = "really_black_suit_skirt" + item_state = "bl_suit" + item_color = "really_black_suit_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + +/obj/item/clothing/under/rank/curator/skirt + name = "sensible suitskirt" + desc = "It's very... sensible." + icon_state = "red_suit_skirt" + item_state = "red_suit" + item_color = "red_suit_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/curator/treasure_hunter name = "treasure hunter uniform" desc = "A rugged uniform suitable for treasure hunting." @@ -228,13 +400,22 @@ item_state = "mime" item_color = "mime" +/obj/item/clothing/under/rank/mime/skirt + name = "mime's skirt" + desc = "It's not very colourful." + icon_state = "mime_skirt" + item_state = "mime" + item_color = "mime_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/miner desc = "It's a snappy jumpsuit with a sturdy set of overalls. It is very dirty." name = "shaft miner's jumpsuit" icon_state = "miner" item_state = "miner" item_color = "miner" - /obj/item/clothing/under/rank/miner/lavaland desc = "A green uniform for operating in hazardous environments." name = "shaft miner's jumpsuit" diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 4ee0963a64..f65b05c280 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -8,6 +8,16 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 80, "acid" = 40) resistance_flags = NONE +/obj/item/clothing/under/rank/chief_engineer/skirt + name = "chief engineer's jumpskirt" + desc = "It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of \"Chief Engineer\". It has minor radiation shielding." + icon_state = "chief_skirt" + item_state = "gy_suit" + item_color = "chief_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/atmospheric_technician desc = "It's a jumpsuit worn by atmospheric technicians." name = "atmospheric technician's jumpsuit" @@ -16,6 +26,16 @@ item_color = "atmos" resistance_flags = NONE +/obj/item/clothing/under/rank/atmospheric_technician/skirt + name = "atmospheric technician's jumpskirt" + desc = "It's a jumpskirt worn by atmospheric technicians." + icon_state = "atmos_skirt" + item_state = "atmos_suit" + item_color = "atmos_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/engineer desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding." name = "engineer's jumpsuit" @@ -24,6 +44,23 @@ item_color = "engine" armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 60, "acid" = 20) resistance_flags = NONE +/obj/item/clothing/under/rank/engineer/hazard + name = "engineer's hazard jumpsuit" + desc = "A high visibility jumpsuit made from heat and radiation resistant materials." + icon_state = "hazard" + item_state = "suit-orange" + item_color = "hazard" + alt_covers_chest = TRUE + +/obj/item/clothing/under/rank/engineer/skirt + name = "engineer's jumpskirt" + desc = "It's an orange high visibility jumpskirt worn by engineers." + icon_state = "engine_skirt" + item_state = "engi_suit" + item_color = "engine_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP /obj/item/clothing/under/rank/roboticist desc = "It's a slimming black with reinforced seams; great for industrial work." @@ -31,4 +68,14 @@ icon_state = "robotics" item_state = "robotics" item_color = "robotics" - resistance_flags = NONE \ No newline at end of file + resistance_flags = NONE + +/obj/item/clothing/under/rank/roboticist/skirt + name = "roboticist's jumpskirt" + desc = "It's a slimming black with reinforced seams; great for industrial work." + icon_state = "robotics_skirt" + item_state = "robotics" + item_color = "robotics_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP diff --git a/code/modules/clothing/under/jobs/medsci.dm b/code/modules/clothing/under/jobs/medsci.dm index f0980cae4d..7b7a205021 100644 --- a/code/modules/clothing/under/jobs/medsci.dm +++ b/code/modules/clothing/under/jobs/medsci.dm @@ -10,6 +10,16 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 35) can_adjust = FALSE +/obj/item/clothing/under/rank/research_director/skirt + name = "research director's vest suitskirt" + desc = "It's a suitskirt worn by those with the know-how to achieve the position of \"Research Director\". Its fabric provides minor protection from biological contaminants." + icon_state = "director_skirt" + item_state = "lb_suit" + item_color = "director_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/research_director/alt desc = "Maybe you'll engineer your own half-man, half-pig creature some day. Its fabric provides minor protection from biological contaminants." name = "research director's tan suit" @@ -20,6 +30,16 @@ can_adjust = TRUE alt_covers_chest = TRUE +/obj/item/clothing/under/rank/research_director/alt/skirt + name = "research director's tan suitskirt" + desc = "Maybe you'll engineer your own half-man, half-pig creature some day. Its fabric provides minor protection from biological contaminants." + icon_state = "rdwhimsy_skirt" + item_state = "rdwhimsy" + item_color = "rdwhimsy_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/research_director/turtleneck desc = "A dark purple turtleneck and tan khakis, for a director with a superior sense of style." name = "research director's turtleneck" @@ -30,6 +50,16 @@ can_adjust = TRUE alt_covers_chest = TRUE +/obj/item/clothing/under/rank/research_director/turtleneck/skirt + name = "research director's turtleneck skirt" + desc = "A dark purple turtleneck and tan khaki skirt, for a director with a superior sense of style." + icon_state = "rdturtle_skirt" + item_state = "p_suit" + item_color = "rdturtle_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/scientist desc = "It's made of a special fiber that provides minor protection against explosives. It has markings that denote the wearer as a scientist." name = "scientist's jumpsuit" @@ -39,6 +69,15 @@ permeability_coefficient = 0.5 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) +/obj/item/clothing/under/rank/scientist/skirt + name = "scientist's jumpskirt" + desc = "It's made of a special fiber that provides minor protection against explosives. It has markings that denote the wearer as a scientist." + icon_state = "toxinswhite_skirt" + item_state = "w_suit" + item_color = "toxinswhite_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP /obj/item/clothing/under/rank/chemist desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it." @@ -49,6 +88,16 @@ permeability_coefficient = 0.5 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 50, "acid" = 65) +/obj/item/clothing/under/rank/chemist/skirt + name = "chemist's jumpskirt" + desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it." + icon_state = "chemistrywhite_skirt" + item_state = "w_suit" + item_color = "chemistrywhite_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /* * Medical */ @@ -61,6 +110,16 @@ permeability_coefficient = 0.5 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) +/obj/item/clothing/under/rank/chief_medical_officer/skirt + name = "chief medical officer's jumpskirt" + desc = "It's a jumpskirt worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection." + icon_state = "cmo_skirt" + item_state = "w_suit" + item_color = "cmo_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/geneticist desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it." name = "geneticist's jumpsuit" @@ -70,6 +129,16 @@ permeability_coefficient = 0.5 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) +/obj/item/clothing/under/rank/geneticist/skirt + name = "geneticist's jumpskirt" + desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it." + icon_state = "geneticswhite_skirt" + item_state = "w_suit" + item_color = "geneticswhite_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/virologist desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it." name = "virologist's jumpsuit" @@ -79,6 +148,16 @@ permeability_coefficient = 0.5 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) +/obj/item/clothing/under/rank/virologist/skirt + name = "virologist's jumpskirt" + desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it." + icon_state = "virologywhite_skirt" + item_state = "w_suit" + item_color = "virologywhite_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/nursesuit desc = "It's a jumpsuit commonly worn by nursing staff in the medical department." name = "nurse's suit" @@ -90,7 +169,6 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = NO_FEMALE_UNIFORM can_adjust = FALSE - /obj/item/clothing/under/rank/medical desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel." name = "medical doctor's jumpsuit" @@ -99,24 +177,31 @@ item_color = "medical" permeability_coefficient = 0.5 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) - /obj/item/clothing/under/rank/medical/blue name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue." icon_state = "scrubsblue" item_color = "scrubsblue" can_adjust = FALSE - /obj/item/clothing/under/rank/medical/green name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green." icon_state = "scrubsgreen" item_color = "scrubsgreen" can_adjust = FALSE - /obj/item/clothing/under/rank/medical/purple name = "medical scrubs" desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple." icon_state = "scrubspurple" item_color = "scrubspurple" can_adjust = FALSE + +/obj/item/clothing/under/rank/medical/skirt + name = "medical doctor's jumpskirt" + desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel." + icon_state = "medical_skirt" + item_state = "w_suit" + item_color = "medical_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 6f9e77b09f..6c00d6969c 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -4,11 +4,9 @@ * Detective * Navy uniforms */ - /* * Security */ - /obj/item/clothing/under/rank/security name = "security jumpsuit" desc = "A tactical security jumpsuit for officers complete with Nanotrasen belt buckle." @@ -20,14 +18,12 @@ alt_covers_chest = TRUE sensor_mode = SENSOR_COORDS random_sensor = FALSE - /obj/item/clothing/under/rank/security/grey name = "grey security jumpsuit" desc = "A tactical relic of years past before Nanotrasen decided it was cheaper to dye the suits red instead of washing out the blood." icon_state = "security" item_state = "gy_suit" item_color = "security" - /obj/item/clothing/under/rank/security/skirt name = "security jumpskirt" desc = "A \"tactical\" security jumpsuit with the legs replaced by a skirt." @@ -36,6 +32,7 @@ item_color = "secskirt" body_parts_covered = CHEST|GROIN|ARMS can_adjust = FALSE //you know now that i think of it if you adjust the skirt and the sprite disappears isn't that just like flashing everyone + fitted = FEMALE_UNIFORM_TOP /obj/item/clothing/under/rank/warden @@ -49,7 +46,6 @@ alt_covers_chest = TRUE sensor_mode = 3 random_sensor = FALSE - /obj/item/clothing/under/rank/warden/grey name = "grey security suit" desc = "A formal relic of years past before Nanotrasen decided it was cheaper to dye the suits red instead of washing out the blood." @@ -57,6 +53,16 @@ item_state = "gy_suit" item_color = "warden" +/obj/item/clothing/under/rank/warden/skirt + name = "warden's suitskirt" + desc = "A formal security suitskirt for officers complete with Nanotrasen belt buckle." + icon_state = "rwarden_skirt" + item_state = "r_suit" + item_color = "rwarden_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /* * Detective */ @@ -72,6 +78,16 @@ sensor_mode = 3 random_sensor = FALSE +/obj/item/clothing/under/rank/det/skirt + name = "detective's suitskirt" + desc = "Someone who wears this means business." + icon_state = "detective_skirt" + item_state = "det" + item_color = "detective_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/det/grey name = "noir suit" desc = "A hard-boiled private investigator's grey suit, complete with tie clip." @@ -80,6 +96,16 @@ item_color = "greydet" alt_covers_chest = TRUE +/obj/item/clothing/under/rank/det/grey/skirt + name = "noir suitskirt" + desc = "A hard-boiled private investigator's grey suitskirt, complete with tie clip." + icon_state = "greydet_skirt" + item_state = "greydet" + item_color = "greydet_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /* * Head of Security */ @@ -95,13 +121,22 @@ sensor_mode = 3 random_sensor = FALSE +/obj/item/clothing/under/rank/head_of_security/skirt + name = "head of security's jumpskirt" + desc = "A security jumpskirt decorated for those few with the dedication to achieve the position of Head of Security." + icon_state = "rhos_skirt" + item_state = "r_suit" + item_color = "rhos_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/head_of_security/grey name = "head of security's grey jumpsuit" desc = "There are old men, and there are bold men, but there are very few old, bold men." icon_state = "hos" item_state = "gy_suit" item_color = "hos" - /obj/item/clothing/under/rank/head_of_security/alt name = "head of security's turtleneck" desc = "A stylish alternative to the normal head of security jumpsuit, complete with tactical pants." @@ -109,10 +144,19 @@ item_state = "bl_suit" item_color = "hosalt" +/obj/item/clothing/under/rank/head_of_security/alt/skirt + name = "head of security's turtleneck skirt" + desc = "A stylish alternative to the normal head of security jumpsuit, complete with a tactical skirt." + icon_state = "hosalt_skirt" + item_state = "bl_suit" + item_color = "hosalt_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /* * Navy uniforms */ - /obj/item/clothing/under/rank/security/navyblue name = "security officer's formal uniform" desc = "The latest in fashionable security outfits." @@ -120,7 +164,6 @@ item_state = "officerblueclothes" item_color = "officerblueclothes" alt_covers_chest = TRUE - /obj/item/clothing/under/rank/head_of_security/navyblue desc = "The insignia on this uniform tells you that this uniform belongs to the Head of Security." name = "head of security's formal uniform" @@ -128,7 +171,6 @@ item_state = "hosblueclothes" item_color = "hosblueclothes" alt_covers_chest = TRUE - /obj/item/clothing/under/rank/warden/navyblue desc = "The insignia on this uniform tells you that this uniform belongs to the Warden." name = "warden's formal uniform" @@ -136,11 +178,9 @@ item_state = "wardenblueclothes" item_color = "wardenblueclothes" alt_covers_chest = TRUE - /* *Blueshirt */ - /obj/item/clothing/under/rank/security/blueshirt name = "blue shirt and tie" desc = "I'm a little busy right now, Calhoun." @@ -148,3 +188,13 @@ item_state = "blueshift" item_color = "blueshift" can_adjust = FALSE +/* + *Spacepol + */ +/obj/item/clothing/under/rank/security/spacepol + name = "police uniform" + desc = "Space not controlled by megacorporations, planets, or pirates is under the jurisdiction of Spacepol." + icon_state = "spacepol" + item_state = "spacepol" + item_color = "spacepol" + can_adjust = FALSE diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 16848e393a..abc157fa71 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -5,7 +5,6 @@ item_color = "red_pyjamas" item_state = "w_suit" can_adjust = FALSE - /obj/item/clothing/under/pj/blue name = "blue pj's" desc = "Sleepwear." @@ -13,7 +12,6 @@ item_color = "blue_pyjamas" item_state = "w_suit" can_adjust = FALSE - /obj/item/clothing/under/patriotsuit name = "Patriotic Suit" desc = "Motorcycle not included." @@ -21,7 +19,6 @@ item_state = "ek" item_color = "ek" can_adjust = FALSE - /obj/item/clothing/under/scratch name = "white suit" desc = "A white suit, suitable for an excellent host." @@ -30,13 +27,22 @@ item_color = "scratch" can_adjust = FALSE +/obj/item/clothing/under/scratch/skirt + name = "white suitskirt" + desc = "A white suitskirt, suitable for an excellent host." + icon_state = "white_suit_skirt" + item_state = "scratch" + item_color = "white_suit_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/sl_suit desc = "It's a very amish looking suit." name = "amish suit" icon_state = "sl_suit" item_color = "sl_suit" can_adjust = FALSE - /obj/item/clothing/under/roman name = "\improper Roman armor" desc = "Ancient Roman armor. Made of metallic and leather straps." @@ -46,7 +52,6 @@ can_adjust = FALSE strip_delay = 100 resistance_flags = NONE - /obj/item/clothing/under/waiter name = "waiter's outfit" desc = "It's a very smart uniform with a special pocket for tip." @@ -54,7 +59,6 @@ item_state = "waiter" item_color = "waiter" can_adjust = FALSE - /obj/item/clothing/under/rank/prisoner name = "prison jumpsuit" desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." @@ -65,20 +69,28 @@ sensor_mode = SENSOR_COORDS random_sensor = FALSE +/obj/item/clothing/under/rank/prisoner/skirt + name = "prison jumpskirt" + desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." + icon_state = "prisoner_skirt" + item_state = "o_suit" + item_color = "prisoner_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/rank/mailman name = "mailman's jumpsuit" desc = "'Special delivery!'" icon_state = "mailman" item_state = "b_suit" item_color = "mailman" - /obj/item/clothing/under/rank/psyche name = "psychedelic jumpsuit" desc = "Groovy!" icon_state = "psyche" item_state = "p_suit" item_color = "psyche" - /obj/item/clothing/under/rank/clown/sexy name = "sexy-clown suit" desc = "It makes you look HONKable!" @@ -86,7 +98,6 @@ item_state = "sexyclown" item_color = "sexyclown" can_adjust = FALSE - /obj/item/clothing/under/jabroni name = "Jabroni Outfit" desc = "The leather club is two sectors down." @@ -94,7 +105,6 @@ item_state = "darkholme" item_color = "darkholme" can_adjust = FALSE - /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." @@ -102,7 +112,6 @@ item_state = "gy_suit" item_color = "vice" can_adjust = FALSE - /obj/item/clothing/under/rank/centcom_officer desc = "It's a jumpsuit worn by CentCom Officers." name = "\improper CentCom officer's jumpsuit" @@ -110,14 +119,12 @@ item_state = "g_suit" item_color = "officer" alt_covers_chest = TRUE - /obj/item/clothing/under/rank/centcom_commander desc = "It's a jumpsuit worn by CentCom's highest-tier Commanders." name = "\improper CentCom officer's jumpsuit" icon_state = "centcom" item_state = "dg_suit" item_color = "centcom" - /obj/item/clothing/under/space name = "\improper NASA jumpsuit" desc = "It has a NASA logo on it and is made of space-proofed materials." @@ -134,7 +141,6 @@ max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT can_adjust = FALSE resistance_flags = NONE - /obj/item/clothing/under/acj name = "administrative cybernetic jumpsuit" icon_state = "syndicate" @@ -151,28 +157,24 @@ max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT can_adjust = FALSE resistance_flags = FIRE_PROOF | ACID_PROOF - /obj/item/clothing/under/owl name = "owl uniform" desc = "A soft brown jumpsuit made of synthetic feathers and strong conviction." icon_state = "owl" item_color = "owl" can_adjust = FALSE - /obj/item/clothing/under/griffin name = "griffon uniform" desc = "A soft brown jumpsuit with a white feather collar made of synthetic feathers and a lust for mayhem." icon_state = "griffin" item_color = "griffin" can_adjust = FALSE - /obj/item/clothing/under/cloud name = "cloud" desc = "cloud" icon_state = "cloud" item_color = "cloud" can_adjust = FALSE - /obj/item/clothing/under/gimmick/rank/captain/suit name = "captain's suit" desc = "A green suit and yellow necktie. Exemplifies authority." @@ -181,6 +183,16 @@ item_color = "green_suit" can_adjust = FALSE +/obj/item/clothing/under/gimmick/rank/captain/suit/skirt + name = "green suitskirt" + desc = "A green suitskirt and yellow necktie. Exemplifies authority." + icon_state = "green_suit_skirt" + item_state = "dg_suit" + item_color = "green_suit_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/gimmick/rank/head_of_personnel/suit name = "head of personnel's suit" desc = "A teal suit and yellow necktie. An authoritative yet tacky ensemble." @@ -189,6 +201,16 @@ item_color = "teal_suit" can_adjust = FALSE +/obj/item/clothing/under/gimmick/rank/head_of_personnel/suit/skirt + name = "teal suitskirt" + desc = "A teal suitskirt and yellow necktie. An authoritative yet tacky ensemble." + icon_state = "teal_suit_skirt" + item_state = "g_suit" + item_color = "teal_suit_skirt" + body_parts_covered = CHEST|GROIN|ARMS + can_adjust = FALSE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/suit_jacket name = "black suit" desc = "A black suit and red tie. Very formal." @@ -196,21 +218,18 @@ item_state = "bl_suit" item_color = "black_suit" can_adjust = FALSE - /obj/item/clothing/under/suit_jacket/really_black name = "executive suit" desc = "A formal black suit and red tie, intended for the station's finest." icon_state = "really_black_suit" item_state = "bl_suit" - item_color = "black_suit" - + item_color = "really_black_suit" /obj/item/clothing/under/suit_jacket/female name = "executive suit" desc = "A formal trouser suit for women, intended for the station's finest." icon_state = "black_suit_fem" item_state = "black_suit_fem" item_color = "black_suit_fem" - /obj/item/clothing/under/suit_jacket/green name = "green suit" desc = "A green suit and yellow necktie. Baller." @@ -218,56 +237,48 @@ item_state = "dg_suit" item_color = "green_suit" can_adjust = FALSE - /obj/item/clothing/under/suit_jacket/red name = "red suit" desc = "A red suit and blue tie. Somewhat formal." icon_state = "red_suit" item_state = "r_suit" item_color = "red_suit" - /obj/item/clothing/under/suit_jacket/charcoal name = "charcoal suit" desc = "A charcoal suit and red tie. Very professional." icon_state = "charcoal_suit" item_state = "charcoal_suit" item_color = "charcoal_suit" - /obj/item/clothing/under/suit_jacket/navy name = "navy suit" desc = "A navy suit and red tie, intended for the station's finest." icon_state = "navy_suit" item_state = "navy_suit" item_color = "navy_suit" - /obj/item/clothing/under/suit_jacket/burgundy name = "burgundy suit" desc = "A burgundy suit and black tie. Somewhat formal." icon_state = "burgundy_suit" item_state = "burgundy_suit" item_color = "burgundy_suit" - /obj/item/clothing/under/suit_jacket/checkered name = "checkered suit" desc = "That's a very nice suit you have there. Shame if something were to happen to it, eh?" icon_state = "checkered_suit" item_state = "checkered_suit" item_color = "checkered_suit" - /obj/item/clothing/under/suit_jacket/tan name = "tan suit" desc = "A tan suit with a yellow tie. Smart, but casual." icon_state = "tan_suit" item_state = "tan_suit" item_color = "tan_suit" - /obj/item/clothing/under/suit_jacket/white name = "white suit" desc = "A white suit and jacket with a blue shirt. You wanna play rough? OKAY!" icon_state = "white_suit" item_state = "white_suit" item_color = "white_suit" - /obj/item/clothing/under/burial name = "burial garments" desc = "Traditional burial garments from the early 22nd century." @@ -275,7 +286,6 @@ item_state = "burial" item_color = "burial" has_sensor = NO_SENSORS - /obj/item/clothing/under/skirt/black name = "black skirt" desc = "A black skirt, very fancy!" @@ -284,7 +294,6 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/skirt/blue name = "blue skirt" desc = "A blue, casual skirt." @@ -294,7 +303,6 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/skirt/red name = "red skirt" desc = "A red, casual skirt." @@ -304,7 +312,6 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/skirt/purple name = "purple skirt" desc = "A purple, casual skirt." @@ -314,8 +321,6 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - - /obj/item/clothing/under/schoolgirl name = "blue schoolgirl uniform" desc = "It's just like one of my Japanese animes!" @@ -325,25 +330,21 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/schoolgirl/red name = "red schoolgirl uniform" icon_state = "schoolgirlred" item_state = "schoolgirlred" item_color = "schoolgirlred" - /obj/item/clothing/under/schoolgirl/green name = "green schoolgirl uniform" icon_state = "schoolgirlgreen" item_state = "schoolgirlgreen" item_color = "schoolgirlgreen" - /obj/item/clothing/under/schoolgirl/orange name = "orange schoolgirl uniform" icon_state = "schoolgirlorange" item_state = "schoolgirlorange" item_color = "schoolgirlorange" - /obj/item/clothing/under/overalls name = "laborer's overalls" desc = "A set of durable overalls for getting the job done." @@ -351,7 +352,6 @@ item_state = "lb_suit" item_color = "overalls" can_adjust = FALSE - /obj/item/clothing/under/pirate name = "pirate outfit" desc = "Yarr." @@ -359,7 +359,6 @@ item_state = "pirate" item_color = "pirate" can_adjust = FALSE - /obj/item/clothing/under/soviet name = "soviet uniform" desc = "For the Motherland!" @@ -367,7 +366,6 @@ item_state = "soviet" item_color = "soviet" can_adjust = FALSE - /obj/item/clothing/under/redcoat name = "redcoat uniform" desc = "Looks old." @@ -375,7 +373,6 @@ item_state = "redcoat" item_color = "redcoat" can_adjust = FALSE - /obj/item/clothing/under/kilt name = "kilt" desc = "Includes shoes and plaid." @@ -385,7 +382,6 @@ body_parts_covered = CHEST|GROIN|LEGS|FEET fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/kilt/highlander desc = "You're the only one worthy of this kilt." @@ -402,7 +398,6 @@ body_parts_covered = CHEST|GROIN|LEGS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/gladiator name = "gladiator uniform" desc = "Are you not entertained? Is that not why you are here?" @@ -413,11 +408,9 @@ fitted = NO_FEMALE_UNIFORM can_adjust = FALSE resistance_flags = NONE - /obj/item/clothing/under/gladiator/ash_walker desc = "This gladiator uniform appears to be covered in ash and fairly dated." has_sensor = NO_SENSORS - /obj/item/clothing/under/sundress name = "sundress" desc = "Makes you want to frolic in a field of daisies." @@ -427,7 +420,6 @@ body_parts_covered = CHEST|GROIN fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/captainparade name = "captain's parade uniform" desc = "A captain's luxury-wear, for special occasions." @@ -435,7 +427,6 @@ item_state = "by_suit" item_color = "captain_parade" can_adjust = FALSE - /obj/item/clothing/under/hosparademale name = "head of security's parade uniform" desc = "A male head of security's luxury-wear, for special occasions." @@ -443,7 +434,6 @@ item_state = "r_suit" item_color = "hos_parade_male" can_adjust = FALSE - /obj/item/clothing/under/hosparadefem name = "head of security's parade uniform" desc = "A female head of security's luxury-wear, for special occasions." @@ -452,7 +442,6 @@ item_color = "hos_parade_fem" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/assistantformal name = "assistant's formal uniform" desc = "An assistant's formal-wear. Why an assistant needs formal-wear is still unknown." @@ -460,7 +449,6 @@ item_state = "gy_suit" item_color = "assistant_formal" can_adjust = FALSE - /obj/item/clothing/under/blacktango name = "black tango dress" desc = "Filled with Latin fire." @@ -469,8 +457,6 @@ item_color = "black_tango" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - body_parts_covered = CHEST|GROIN - /obj/item/clothing/under/stripeddress name = "striped dress" desc = "Fashion in space." @@ -480,7 +466,6 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_FULL can_adjust = FALSE - /obj/item/clothing/under/sailordress name = "sailor dress" desc = "Formal wear for a leading lady." @@ -490,7 +475,6 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/redeveninggown name = "red evening gown" desc = "Fancy dress for space bar singers." @@ -499,7 +483,6 @@ item_color = "red_evening_gown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/maid name = "maid costume" desc = "Maid in China." @@ -509,12 +492,10 @@ body_parts_covered = CHEST|GROIN fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/maid/Initialize() . = ..() var/obj/item/clothing/accessory/maidapron/A = new (src) attach_accessory(A) - /obj/item/clothing/under/janimaid name = "maid uniform" desc = "A simple maid uniform for housekeeping." @@ -524,7 +505,6 @@ body_parts_covered = CHEST|GROIN fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/plaid_skirt name = "red plaid skirt" desc = "A preppy red skirt with a white blouse." @@ -534,7 +514,6 @@ fitted = FEMALE_UNIFORM_TOP can_adjust = TRUE alt_covers_chest = TRUE - /obj/item/clothing/under/plaid_skirt/blue name = "blue plaid skirt" desc = "A preppy blue skirt with a white blouse." @@ -544,7 +523,6 @@ fitted = FEMALE_UNIFORM_TOP can_adjust = TRUE alt_covers_chest = TRUE - /obj/item/clothing/under/plaid_skirt/purple name = "purple plaid skirt" desc = "A preppy purple skirt with a white blouse." @@ -554,7 +532,6 @@ fitted = FEMALE_UNIFORM_TOP can_adjust = TRUE alt_covers_chest = TRUE - /obj/item/clothing/under/singery name = "yellow performer's outfit" desc = "Just looking at this makes you want to sing." @@ -565,7 +542,6 @@ fitted = NO_FEMALE_UNIFORM alternate_worn_layer = ABOVE_SHOES_LAYER can_adjust = FALSE - /obj/item/clothing/under/singerb name = "blue performer's outfit" desc = "Just looking at this makes you want to sing." @@ -576,7 +552,6 @@ alternate_worn_layer = ABOVE_SHOES_LAYER fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - /obj/item/clothing/under/plaid_skirt/green name = "green plaid skirt" desc = "A preppy green skirt with a white blouse." @@ -586,17 +561,14 @@ fitted = FEMALE_UNIFORM_TOP can_adjust = TRUE alt_covers_chest = TRUE - /obj/item/clothing/under/jester name = "jester suit" desc = "A jolly dress, well suited to entertain your master, nuncle." icon_state = "jester" item_color = "jester" can_adjust = FALSE - /obj/item/clothing/under/jester/alt icon_state = "jester2" - /obj/item/clothing/under/geisha name = "geisha suit" desc = "Cute space ninja senpai not included." @@ -604,14 +576,12 @@ item_color = "geisha" body_parts_covered = CHEST|GROIN|ARMS can_adjust = FALSE - /obj/item/clothing/under/villain name = "villain suit" desc = "A change of wardrobe is necessary if you ever want to catch a real superhero." icon_state = "villain" item_color = "villain" can_adjust = FALSE - /obj/item/clothing/under/sailor name = "sailor suit" desc = "Skipper's in the wardroom drinkin gin'." @@ -619,7 +589,6 @@ item_state = "b_suit" item_color = "sailor" can_adjust = FALSE - /obj/item/clothing/under/plasmaman name = "plasma envirosuit" desc = "A special containment suit that allows plasma-based lifeforms to exist safely in an oxygenated environment, and automatically extinguishes them in a crisis. Despite being airtight, it's not spaceworthy." @@ -633,17 +602,12 @@ var/next_extinguish = 0 var/extinguish_cooldown = 100 var/extinguishes_left = 5 - - /obj/item/clothing/under/plasmaman/examine(mob/user) ..() to_chat(user, "There are [extinguishes_left] extinguisher charges left in this suit.") - - /obj/item/clothing/under/plasmaman/proc/Extinguish(mob/living/carbon/human/H) if(!istype(H)) return - if(H.on_fire) if(extinguishes_left) if(next_extinguish > world.time) @@ -654,7 +618,6 @@ H.ExtinguishMob() new /obj/effect/particle_effect/water(get_turf(H)) return 0 - /obj/item/clothing/under/plasmaman/attackby(obj/item/E, mob/user, params) ..() if (istype(E, /obj/item/extinguisher_refill)) @@ -668,20 +631,17 @@ return return return - /obj/item/extinguisher_refill name = "envirosuit extinguisher cartridge" desc = "A cartridge loaded with a compressed extinguisher mix, used to refill the automatic extinguisher on plasma envirosuits." icon_state = "plasmarefill" icon = 'icons/obj/device.dmi' - /obj/item/clothing/under/rank/security/navyblue/russian name = "\improper Russian officer's uniform" desc = "The latest in fashionable russian outfits." icon_state = "hostanclothes" item_state = "hostanclothes" item_color = "hostanclothes" - /obj/item/clothing/under/mummy name = "mummy wrapping" desc = "Return the slab or suffer my stale references." @@ -692,7 +652,6 @@ fitted = NO_FEMALE_UNIFORM can_adjust = FALSE resistance_flags = NONE - /obj/item/clothing/under/scarecrow name = "scarecrow clothes" desc = "Perfect camouflage for hiding in botany." @@ -703,7 +662,6 @@ fitted = NO_FEMALE_UNIFORM can_adjust = FALSE resistance_flags = NONE - /obj/item/clothing/under/draculass name = "draculass coat" desc = "A dress inspired by the ancient \"Victorian\" era." @@ -713,8 +671,6 @@ body_parts_covered = CHEST|GROIN|ARMS fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION - /obj/item/clothing/under/drfreeze name = "doctor freeze's jumpsuit" desc = "A modified scientist jumpsuit to look extra cool." @@ -722,8 +678,6 @@ item_state = "drfreeze" item_color = "drfreeze" can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION - /obj/item/clothing/under/lobster name = "foam lobster suit" desc = "Who beheaded the college mascot?" @@ -732,8 +686,6 @@ item_color = "lobster" fitted = NO_FEMALE_UNIFORM can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION - /obj/item/clothing/under/gondola name = "gondola hide suit" desc = "Now you're cooking." @@ -741,7 +693,6 @@ item_state = "lb_suit" item_color = "gondola" can_adjust = FALSE - /obj/item/clothing/under/skeleton name = "skeleton jumpsuit" desc = "A black jumpsuit with a white bone pattern printed on it. Spooky!" @@ -752,10 +703,18 @@ fitted = NO_FEMALE_UNIFORM can_adjust = FALSE resistance_flags = NONE +/obj/item/clothing/under/durathread + name = "durathread jumpsuit" + desc = "A jumpsuit made from durathread, its resilient fibres provide some protection to the wearer." + icon_state = "durathread" + item_state = "durathread" + item_color = "durathread" + can_adjust = FALSE + armor = list("melee" = 10, "laser" = 10, "fire" = 40, "acid" = 10, "bomb" = 5) /obj/item/clothing/under/gear_harness name = "gear harness" desc = "A simple, inconspicuous harness replacement for a jumpsuit." icon_state = "gear_harness" item_state = "gear_harness" //We dont use golem do to being a item, item without faces making it default to error suit sprites. - body_parts_covered = CHEST|GROIN \ No newline at end of file + body_parts_covered = CHEST|GROIN diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index 83cab9d992..9893edf248 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -8,6 +8,17 @@ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) alt_covers_chest = TRUE +/obj/item/clothing/under/syndicate/skirt + name = "tactical skirtleneck" + desc = "A non-descript and slightly suspicious looking skirtleneck." + icon_state = "syndicate_skirt" + item_state = "bl_suit" + item_color = "syndicate_skirt" + has_sensor = NO_SENSORS + armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) + alt_covers_chest = TRUE + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/syndicate/tacticool name = "tacticool turtleneck" desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-." @@ -16,6 +27,15 @@ item_color = "tactifool" armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) +/obj/item/clothing/under/syndicate/tacticool/skirt + name = "tacticool skirtleneck" + desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-." + icon_state = "tactifool_skirt" + item_state = "bl_suit" + item_color = "tactifool_skirt" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) + fitted = FEMALE_UNIFORM_TOP + /obj/item/clothing/under/syndicate/sniper name = "Tactical turtleneck suit" desc = "A double seamed tactical turtleneck disguised as a civilian grade silk suit. Intended for the most formal operator. The collar is really sharp." diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm index 3e96512bb8..0fb46c3e46 100644 --- a/code/modules/crafting/craft.dm +++ b/code/modules/crafting/craft.dm @@ -317,6 +317,8 @@ var/list/cant_craft = list() for(var/rec in GLOB.crafting_recipes) var/datum/crafting_recipe/R = rec + if(!R.always_availible && !(R.type in user?.mind?.learned_recipes)) //User doesn't actually know how to make this. + continue if((R.category != cur_category) || (R.subcategory != cur_subcategory)) continue if(check_contents(R, surroundings)) @@ -431,3 +433,10 @@ data["tool_text"] = tool_text return data + +//Mind helpers + +/datum/mind/proc/teach_crafting_recipe(R) + if(!learned_recipes) + learned_recipes = list() + learned_recipes |= R \ No newline at end of file diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index f0665682a9..48ade24bbe 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -9,6 +9,7 @@ var/chem_catalysts[] = list() //like tools but for reagents var/category = CAT_NONE //where it shows up in the crafting UI var/subcategory = CAT_NONE + var/always_availible = TRUE //Set to FALSE if it needs to be learned first. /datum/crafting_recipe/pin_removal name = "Pin Removal" @@ -210,6 +211,12 @@ time = 40 category = CAT_ROBOT +/datum/crafting_recipe/potatos + name = "Potat-OS" + reqs = list(/obj/item/stack/cable_coil = 1, /obj/item/stack/rods = 1, /obj/item/reagent_containers/food/snacks/grown/potato = 1, /obj/item/aicard = 1 ) + result = /obj/item/aicard/potato + category = CAT_ROBOT + /datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but name = "Pneumatic Cannon" result = /obj/item/pneumatic_cannon/ghetto @@ -454,6 +461,12 @@ /obj/item/bikehorn = 1) category = CAT_MISC +/datum/crafting_recipe/toyneb + name = "Non-Euplastic Blade" + reqs = list(/obj/item/light/tube = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4) + result = /obj/item/toy/sword/cx + category = CAT_MISC + /datum/crafting_recipe/chemical_payload name = "Chemical Payload (C4)" result = /obj/item/bombcore/chemical @@ -659,6 +672,15 @@ tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) category = CAT_MISC +/datum/crafting_recipe/femur_breaker + name = "Femur Breaker" + result = /obj/structure/femur_breaker + time = 150 + reqs = list(/obj/item/stack/sheet/metal = 20, + /obj/item/stack/cable_coil = 30) + tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) + category = CAT_MISC + /datum/crafting_recipe/lizardhat name = "Lizard Cloche Hat" result = /obj/item/clothing/head/lizard diff --git a/code/modules/events/wizard/shuffle.dm b/code/modules/events/wizard/shuffle.dm index ec253f13c3..7e37429223 100644 --- a/code/modules/events/wizard/shuffle.dm +++ b/code/modules/events/wizard/shuffle.dm @@ -27,7 +27,7 @@ for(var/mob/living/carbon/human/H in mobs) if(!moblocs) break //locs aren't always unique, so this may come into play - do_teleport(H, moblocs[moblocs.len]) + do_teleport(H, moblocs[moblocs.len], channel = TELEPORT_CHANNEL_MAGIC) moblocs.len -= 1 for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index 412e54878a..bb601b7c82 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -63,4 +63,4 @@ hard_target = P.loc if(!hard_target) return - do_teleport(M, hard_target, 1, 1, 0, 0) ///You will appear adjacent to the beacon + do_teleport(M, hard_target, 1, 1, 0, 0, channel = TELEPORT_CHANNEL_WORMHOLE) ///You will appear adjacent to the beacon diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 0794d274b6..e72b624ae5 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -7,11 +7,12 @@ /obj/item/reagent_containers/food/drinks/bottle amount_per_transfer_from_this = 10 volume = 100 + force = 15 throwforce = 15 item_state = "broken_beer" //Generic held-item sprite until unique ones are made. lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' - var/const/duration = 13 //Directly relates to the 'knockdown' duration. Lowered by armor (i.e. helmets) + var/knockdown_duration = 13 //Directly relates to the 'knockdown' duration. Lowered by armor (i.e. helmets) isGlass = TRUE foodtype = ALCOHOL @@ -61,46 +62,30 @@ to_chat(user, "You don't want to harm [target]!") return - force = 15 //Smashing bottles over someoen's head hurts. - var/obj/item/bodypart/affecting = user.zone_selected //Find what the player is aiming at - var/armor_block = 0 //Get the target's armor values for normal attack damage. - var/armor_duration = 0 //The more force the bottle has, the longer the duration. + var/headarmor = 0 // Target's head armor + var/armor_block = min(90, target.run_armor_check(affecting, "melee", null, null,armour_penetration)) // For normal attack damage - //Calculating duration and calculating damage. - if(ishuman(target)) + //If they have a hat/helmet and the user is targeting their head. + if(affecting == BODY_ZONE_HEAD) + var/obj/item/I = target.get_item_by_slot(SLOT_HEAD) + if(I) + headarmor = I.armor.melee - var/mob/living/carbon/human/H = target - var/headarmor = 0 // Target's head armor - armor_block = H.run_armor_check(affecting, "melee", null, null,armour_penetration) // For normal attack damage - - //If they have a hat/helmet and the user is targeting their head. - if(istype(H.head, /obj/item/clothing/head) && affecting == BODY_ZONE_HEAD) - headarmor = H.head.armor.melee - else - headarmor = 0 - - //Calculate the knockdown duration for the target. - armor_duration = (duration - headarmor) + force - - else - //Only humans can have armor, right? - armor_block = target.run_armor_check(affecting, "melee") - if(affecting == BODY_ZONE_HEAD) - armor_duration = duration + force + //Calculate the knockdown duration for the target. + var/armor_duration = (knockdown_duration - headarmor) + force //Apply the damage! - armor_block = min(90,armor_block) target.apply_damage(force, BRUTE, affecting, armor_block) // You are going to knock someone out for longer if they are not wearing a helmet. var/head_attack_message = "" - if(affecting == BODY_ZONE_HEAD && istype(target, /mob/living/carbon/)) + if(affecting == BODY_ZONE_HEAD && iscarbon(target)) head_attack_message = " on the head" //Knockdown the target for the duration that we calculated and divide it by 5. if(armor_duration) - target.apply_effect(min(armor_duration, 200) , EFFECT_KNOCKDOWN) // Never knockdown more than a flash! + target.Knockdown(min(armor_duration, 200)) // Never knockdown more than a flash! //Display an attack message. if(target != user) @@ -202,17 +187,18 @@ desc = "A flask of holy water...it's been sitting in the Necropolis a while though." list_reagents = list("hell_water" = 100) -/obj/item/reagent_containers/food/drinks/holyoil +/obj/item/reagent_containers/food/drinks/bottle/holyoil name = "flask of zelus oil" desc = "A brass flask of Zelus oil, a viscous fluid scenting of brass. Can be thrown to deal damage from afar." icon_state = "zelusflask" - list_reagents = list("holyoil" = 30) //Powerfull + list_reagents = list("holyoil" = 30) volume = 30 foodtype = NONE - force = 12 //Same as a toolbox + force = 18 throwforce = 18 + knockdown_duration = 18 -/obj/item/reagent_containers/food/drinks/holyoil/null +/obj/item/reagent_containers/food/drinks/bottle/holyoil/empty list_reagents = list("holyoil" = 0) /obj/item/reagent_containers/food/drinks/bottle/vermouth diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index 1eeea79410..d66cfdd667 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -17,21 +17,21 @@ foodtype = GRAIN | DAIRY /obj/item/reagent_containers/food/snacks/store/cake/plain - name = "vanilla cake" + name = "plain cake" desc = "A plain cake, not a lie." icon_state = "plaincake" custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/cake bonus_reagents = list("nutriment" = 10, "vitamin" = 2) - tastes = list("vanilla" = 1, "sweetness" = 2,"cake" = 5) + tastes = list("sweetness" = 2,"cake" = 5) foodtype = GRAIN | DAIRY | SUGAR /obj/item/reagent_containers/food/snacks/cakeslice/plain - name = "vanilla cake slice" + name = "plain cake slice" desc = "Just a slice of cake, it is enough for everyone." icon_state = "plaincake_slice" filling_color = "#FFD700" customfoodfilling = 1 - tastes = list("vanilla" = 1, "sweetness" = 2,"cake" = 5) + tastes = list("sweetness" = 2,"cake" = 5) foodtype = GRAIN | DAIRY | SUGAR /obj/item/reagent_containers/food/snacks/store/cake/carrot @@ -147,7 +147,6 @@ tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR - /obj/item/reagent_containers/food/snacks/store/cake/chocolate name = "chocolate cake" desc = "A cake with added chocolate." @@ -186,7 +185,6 @@ tastes = list("cake" = 5, "sweetness" = 1) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR - /obj/item/reagent_containers/food/snacks/store/cake/apple name = "apple cake" desc = "A cake centred with Apple." @@ -248,7 +246,6 @@ /obj/item/reagent_containers/food/snacks/store/cake/bsvc // blackberry strawberries vanilla cake name = "blackberry and strawberry vanilla cake" desc = "A plain cake, filled with assortment of blackberries and strawberries!" - icon = 'modular_citadel/icons/obj/food/cake.dmi' icon_state = "blackbarry_strawberries_cake_vanilla_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bsvc bonus_reagents = list("nutriment" = 14, "vitamin" = 4) @@ -258,7 +255,6 @@ /obj/item/reagent_containers/food/snacks/cakeslice/bsvc name = "blackberry and strawberry vanilla cake slice" desc = "Just a slice of cake filled with assortment of blackberries and strawberries!" - icon = 'modular_citadel/icons/obj/food/cake.dmi' icon_state = "blackbarry_strawberries_cake_vanilla_slice" filling_color = "#FFD700" tastes = list("blackbarry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2,"cake" = 3) @@ -267,7 +263,6 @@ /obj/item/reagent_containers/food/snacks/store/cake/bscc // blackbarry strawberries chocolate cake name = "blackberry and strawberry chocolate cake" desc = "A plain cake, filled with assortment of blackberries and strawberries!" - icon = 'modular_citadel/icons/obj/food/cake.dmi' icon_state = "blackbarry_strawberries_cake_coco_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bscc bonus_reagents = list("nutriment" = 14, "vitamin" = 4, "cocoa" = 5) @@ -277,16 +272,14 @@ /obj/item/reagent_containers/food/snacks/cakeslice/bscc name = "blackberry and strawberry chocolate cake slice" desc = "Just a slice of cake filled with assortment of blackberries and strawberries!" - icon = 'modular_citadel/icons/obj/food/cake.dmi' icon_state = "blackbarry_strawberries_cake_coco_cake_slice" filling_color = "#FFD700" tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3) foodtype = GRAIN | DAIRY | FRUIT | SUGAR -obj/item/reagent_containers/food/snacks/store/cake/holy_cake +/obj/item/reagent_containers/food/snacks/store/cake/holy_cake name = "angel food cake" desc = "A cake made for angels and chaplains alike! Contains holy water." - icon = 'modular_citadel/icons/obj/food/cake.dmi' icon_state = "holy_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice bonus_reagents = list("nutriment" = 1, "vitamin" = 3, "holy_water" = 10) @@ -296,7 +289,6 @@ obj/item/reagent_containers/food/snacks/store/cake/holy_cake /obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice name = "angel food cake slice" desc = "A slice of heavenly cake." - icon = 'modular_citadel/icons/obj/food/cake.dmi' icon_state = "holy_cake_slice" filling_color = "#00FFFF" tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1) @@ -305,7 +297,6 @@ obj/item/reagent_containers/food/snacks/store/cake/holy_cake obj/item/reagent_containers/food/snacks/store/cake/pound_cake name = "pound cake" desc = "A condensed cake made for filling people up quickly." - icon = 'modular_citadel/icons/obj/food/cake.dmi' icon_state = "pound_cake" slices_num = 7 //Its ment to feed the party slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice @@ -316,16 +307,14 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake /obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice name = "pound cake slice" desc = "A slice of condensed cake made for filling people up quickly." - icon = 'modular_citadel/icons/obj/food/cake.dmi' icon_state = "pound_cake_slice" filling_color = "#00FFFF" tastes = list("cake" = 5, "sweetness" = 5, "batter" = 1) foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD -obj/item/reagent_containers/food/snacks/store/cake/hardware_cake +/obj/item/reagent_containers/food/snacks/store/cake/hardware_cake name = "hardware cake" desc = "A cake that is made with electronic boards and leaks acid..." - icon = 'modular_citadel/icons/obj/food/cake.dmi' icon_state = "hardware_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice bonus_reagents = list("sacid" = 15, "oil" = 15) @@ -335,8 +324,41 @@ obj/item/reagent_containers/food/snacks/store/cake/hardware_cake /obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice name = "hardware cake slice" desc = "A slice of electronic boards and some acid." - icon = 'modular_citadel/icons/obj/food/cake.dmi' icon_state = "hardware_cake_slice" filling_color = "#00FFFF" tastes = list("acid" = 1, "metal" = 1, "regret" = 10) foodtype = GRAIN | GROSS + +/obj/item/reagent_containers/food/snacks/store/cake/vanilla_cake + name = "vanilla cake" + desc = "A vanilla frosted cake." + icon_state = "vanillacake" + slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice + bonus_reagents = list("sugar" = 15, "vanilla" = 15) + tastes = list("caje" = 1, "sugar" = 1, "vanilla" = 10) + foodtype = GRAIN | SUGAR | DAIRY + +/obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice + name = "vanilla cake slice" + desc = "A slice of vanilla frosted cake." + icon_state = "vanillacake_slice" + filling_color = "#00FFFF" + tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10) + foodtype = GRAIN | SUGAR | DAIRY + +/obj/item/reagent_containers/food/snacks/store/cake/clown_cake + name = "clown cake" + desc = "A funny cake with a clown face on it." + icon_state = "clowncake" + slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/clown_slice + bonus_reagents = list("sugar" = 15, "laugher" = 15) + tastes = list("cake" = 1, "sugar" = 1, "joy" = 10) + foodtype = GRAIN | SUGAR | DAIRY + +/obj/item/reagent_containers/food/snacks/cakeslice/clown_slice + name = "clown cake slice" + desc = "A slice of bad jokes, and silly props." + icon_state = "clowncake_slice" + filling_color = "#00FFFF" + tastes = list("cake" = 1, "sugar" = 1, "joy" = 10) + foodtype = GRAIN | SUGAR | DAIRY \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index febfa527ca..c4f8ccf76b 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -88,7 +88,7 @@ /obj/item/reagent_containers/food/snacks/snowcones/orange name = "orange flavored snowcone" - desc = "A mix of different flavors dizzled on a snowball in a paper cup." + desc = "A orange flavor dizzled on a snowball in a paper cup." icon_state = "orange_sc" list_reagents = list("nutriment" = 1, "orangejuice" = 10) tastes = list("ice" = 1, "water" = 1, "berries" = 5) @@ -130,7 +130,7 @@ name = "mixed fruit flavored snowcone" desc = "A mix of different flavors dizzled on a snowball in a paper cup." icon_state = "fruitsalad_sc" - list_reagents = list("nutriment" = 1, "lemonjuice" = 5, "limejuice" = 5, "lemonjuice" = 5, "orangejuice" = 5) + list_reagents = list("nutriment" = 1, "limejuice" = 5, "lemonjuice" = 5, "orangejuice" = 5) tastes = list("ice" = 1, "water" = 1, "fruits" = 25) foodtype = FRUIT diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index 13222cc22d..20313fd1b7 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -171,8 +171,6 @@ tastes = list("pie" = 1, "apple" = 1) foodtype = GRAIN | FRUIT | SUGAR - - /obj/item/reagent_containers/food/snacks/pie/cherrypie name = "cherry pie" desc = "Taste so good, make a grown man cry." @@ -221,6 +219,33 @@ tastes = list("pie" = 1, "grape" = 1) foodtype = GRAIN | FRUIT | SUGAR +/obj/item/reagent_containers/food/snacks/pie/mimetart + name = "mime tart" + desc = "..." + icon_state = "mimetart" + bonus_reagents = list("nutriment" = 1, "vitamin" = 4, "nothing" = 10) + list_reagents = list("nutriment" = 5, "vitamin" = 5) + tastes = list("pie" = 1, "nothing" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/pie/berrytart + name = "berry tart" + desc = "A tasty dessert of many different small barries on a thin pie crust." + icon_state = "berrytart" + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 3, "vitamin" = 5) + tastes = list("pie" = 1, "berries" = 2) + foodtype = GRAIN | FRUIT + +/obj/item/reagent_containers/food/snacks/pie/cocolavatart + name = "chocolate lava tart" + desc = "A tasty dessert made of chocaloate, with a liquid core." + icon_state = "cocolavatart" + bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + list_reagents = list("nutriment" = 4, "vitamin" = 4) + tastes = list("pie" = 1, "grape" = 1) + foodtype = GRAIN | SUGAR + /obj/item/reagent_containers/food/snacks/pie/blumpkinpie name = "blumpkin pie" desc = "An odd blue pie made with toxic blumpkin." diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm index 464b8ce26f..e26d15dbd3 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_cake.dm @@ -148,6 +148,27 @@ result = /obj/item/reagent_containers/food/snacks/store/cake/bsvc subcategory = CAT_CAKE +/datum/crafting_recipe/food/clowncake + name = "clown cake" + always_availible = FALSE + reqs = list( + /obj/item/reagent_containers/food/snacks/store/cake/plain = 1, + /obj/item/reagent_containers/food/snacks/sundae = 2, + /obj/item/reagent_containers/food/snacks/grown/banana = 5 + ) + result = /obj/item/reagent_containers/food/snacks/store/cake/clown_cake + subcategory = CAT_CAKE + +/datum/crafting_recipe/food/vanillacake + name = "vanilla cake" + always_availible = FALSE + reqs = list( + /obj/item/reagent_containers/food/snacks/store/cake/plain = 1, + /obj/item/reagent_containers/food/snacks/grown/vanillapod = 2 + ) + result = /obj/item/reagent_containers/food/snacks/store/cake/vanilla_cake + subcategory = CAT_CAKE + /datum/crafting_recipe/food/cak name = "Living cat/cake hybrid" reqs = list( diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm index 08d5716779..73b09df68d 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_frozen.dm @@ -211,7 +211,7 @@ subcategory = CAT_ICE /datum/crafting_recipe/food/kiwi_sc - name = "Soda water snowcone" + name = "Kiwi snowcone" reqs = list( /obj/item/reagent_containers/food/drinks/sillycup = 1, /obj/item/reagent_containers/food/snacks/egg/kiwiEgg = 1, diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index a6240e5b48..ce33cbef77 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -258,7 +258,7 @@ subcategory = CAT_MISCFOOD -/datum/crafting_recipe/food/lizardwine +/datum/crafting_recipe/lizardwine //not a subtype of /datum/crafting_recipe/food due to a bug where the resulting bottle would contain 100u of lizardwine and 100u of ethanol. name = "Lizard wine" time = 40 reqs = list( @@ -266,6 +266,7 @@ /datum/reagent/consumable/ethanol = 100 ) result = /obj/item/reagent_containers/food/drinks/bottle/lizardwine + category = CAT_FOOD subcategory = CAT_MISCFOOD diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm index 79d761c2e2..39eb4ce05e 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm @@ -168,4 +168,41 @@ /obj/item/seeds/wheat/oat = 3 ) result = /obj/item/reagent_containers/food/snacks/pie/baklava + subcategory = CAT_PIE + +/datum/crafting_recipe/food/mimetart + name = "Mime tart" + always_availible = FALSE + reqs = list( + /datum/reagent/consumable/milk = 5, + /datum/reagent/consumable/sugar = 5, + /obj/item/reagent_containers/food/snacks/pie/plain = 1, + /datum/reagent/consumable/nothing = 5 + ) + result = /obj/item/reagent_containers/food/snacks/pie/mimetart + subcategory = CAT_PIE + +/datum/crafting_recipe/food/berrytart + name = "Berry tart" + always_availible = FALSE + reqs = list( + /datum/reagent/consumable/milk = 5, + /datum/reagent/consumable/sugar = 5, + /obj/item/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/reagent_containers/food/snacks/grown/berries = 3 + ) + result = /obj/item/reagent_containers/food/snacks/pie/berrytart + subcategory = CAT_PIE + +/datum/crafting_recipe/food/cocolavatart + name = "Chocolate Lava tart" + always_availible = FALSE + reqs = list( + /datum/reagent/consumable/milk = 5, + /datum/reagent/consumable/sugar = 5, + /obj/item/reagent_containers/food/snacks/pie/plain = 1, + /obj/item/reagent_containers/food/snacks/chocolatebar = 3, + /obj/item/slime_extract = 1 + ) + result = /obj/item/reagent_containers/food/snacks/pie/cocolavatart subcategory = CAT_PIE \ No newline at end of file diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 17462c0626..db529e8ffb 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -290,15 +290,15 @@ var/teleport_radius = max(round(G.seed.potency / 10), 1) var/turf/T = get_turf(target) new /obj/effect/decal/cleanable/molten_object(T) //Leave a pile of goo behind for dramatic effect... - do_teleport(target, T, teleport_radius) + do_teleport(target, T, teleport_radius, channel = TELEPORT_CHANNEL_BLUESPACE) /datum/plant_gene/trait/teleport/on_slip(obj/item/reagent_containers/food/snacks/grown/G, mob/living/carbon/C) var/teleport_radius = max(round(G.seed.potency / 10), 1) var/turf/T = get_turf(C) to_chat(C, "You slip through spacetime!") - do_teleport(C, T, teleport_radius) + do_teleport(C, T, teleport_radius, channel = TELEPORT_CHANNEL_BLUESPACE) if(prob(50)) - do_teleport(G, T, teleport_radius) + do_teleport(G, T, teleport_radius, channel = TELEPORT_CHANNEL_BLUESPACE) else new /obj/effect/decal/cleanable/molten_object(T) //Leave a pile of goo behind for dramatic effect... qdel(G) diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index 65805f73fd..ce6eea97b0 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -30,6 +30,12 @@ Assistant /datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/H) ..() if (CONFIG_GET(flag/grey_assistants)) - uniform = /obj/item/clothing/under/color/grey + if(H.jumpsuit_style == PREF_SUIT) + uniform = /obj/item/clothing/under/color/grey + else + uniform = /obj/item/clothing/under/skirt/color/grey else - uniform = /obj/item/clothing/under/color/random + if(H.jumpsuit_style == PREF_SUIT) + uniform = /obj/item/clothing/under/color/random + else + uniform = /obj/item/clothing/under/skirt/color/random diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index cd9c914e7a..80c78220e6 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -67,7 +67,7 @@ Head of Personnel flag = HOP department_head = list("Captain") department_flag = CIVILIAN - head_announce = list("Supply", "Service") + head_announce = list(RADIO_CHANNEL_SERVICE) faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm index 22ef2a9211..175b7e8263 100644 --- a/code/modules/jobs/job_types/cargo_service.dm +++ b/code/modules/jobs/job_types/cargo_service.dm @@ -6,6 +6,7 @@ Quartermaster flag = QUARTERMASTER department_head = list("Head of Personnel") department_flag = CIVILIAN + head_announce = list(RADIO_CHANNEL_SUPPLY) faction = "Station" total_positions = 1 spawn_positions = 1 @@ -88,9 +89,9 @@ Shaft Miner gloves = /obj/item/clothing/gloves/color/black uniform = /obj/item/clothing/under/rank/miner/lavaland l_pocket = /obj/item/reagent_containers/hypospray/medipen/survival - r_pocket = /obj/item/flashlight/seclite + r_pocket = /obj/item/storage/bag/ore //causes issues if spawned in backpack backpack_contents = list( - /obj/item/storage/bag/ore=1,\ + /obj/item/flashlight/seclite=1,\ /obj/item/kitchen/knife/combat/survival=1,\ /obj/item/mining_voucher=1,\ /obj/item/suit_voucher=1,\ @@ -116,7 +117,7 @@ Shaft Miner suit_store = /obj/item/tank/internals/oxygen internals_slot = SLOT_S_STORE backpack_contents = list( - /obj/item/storage/bag/ore=1, + /obj/item/flashlight/seclite=1,\ /obj/item/kitchen/knife/combat/survival=1, /obj/item/mining_voucher=1, /obj/item/t_scanner/adv_mining_scanner/lesser=1, diff --git a/code/modules/jobs/job_types/engineering.dm b/code/modules/jobs/job_types/engineering.dm index f28e5f1afc..b2bc8bf241 100644 --- a/code/modules/jobs/job_types/engineering.dm +++ b/code/modules/jobs/job_types/engineering.dm @@ -6,7 +6,7 @@ Chief Engineer flag = CHIEF department_head = list("Captain") department_flag = ENGSEC - head_announce = list("Engineering") + head_announce = list(RADIO_CHANNEL_ENGINEERING) faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm index f678700735..f03696e5da 100644 --- a/code/modules/jobs/job_types/job.dm +++ b/code/modules/jobs/job_types/job.dm @@ -190,6 +190,16 @@ backpack_contents.Insert(1, box) // Box always takes a first slot in backpack backpack_contents[box] = 1 + //converts the uniform string into the path we'll wear, whether it's the skirt or regular variant + var/holder + if(H.jumpsuit_style == PREF_SKIRT) + holder = "[uniform]/skirt" + if(!text2path(holder)) + holder = "[uniform]" + else + holder = "[uniform]" + uniform = text2path(holder) + /datum/outfit/job/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) if(visualsOnly) return diff --git a/code/modules/jobs/job_types/medical.dm b/code/modules/jobs/job_types/medical.dm index 5a926f490a..1a6d2aa2f6 100644 --- a/code/modules/jobs/job_types/medical.dm +++ b/code/modules/jobs/job_types/medical.dm @@ -6,7 +6,7 @@ Chief Medical Officer flag = CMO_JF department_head = list("Captain") department_flag = MEDSCI - head_announce = list("Medical") + head_announce = list(RADIO_CHANNEL_MEDICAL) faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/science.dm b/code/modules/jobs/job_types/science.dm index 6a14f204a3..21b1a9747a 100644 --- a/code/modules/jobs/job_types/science.dm +++ b/code/modules/jobs/job_types/science.dm @@ -6,7 +6,7 @@ Research Director flag = RD_JF department_head = list("Captain") department_flag = MEDSCI - head_announce = list("Science") + head_announce = list(RADIO_CHANNEL_SCIENCE) faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm index 8d2b9e8681..2a6cc199ee 100644 --- a/code/modules/jobs/job_types/security.dm +++ b/code/modules/jobs/job_types/security.dm @@ -12,7 +12,7 @@ Head of Security flag = HOS department_head = list("Captain") department_flag = ENGSEC - head_announce = list("Security") + head_announce = list(RADIO_CHANNEL_SECURITY) faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index a1ba493d46..0abb1cfa9e 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -68,6 +68,7 @@ /obj/machinery/computer/shuttle/mining name = "mining shuttle console" desc = "Used to call and send the mining shuttle." + req_access = list(ACCESS_MINING) circuit = /obj/item/circuitboard/computer/mining_shuttle shuttleId = "mining" possible_destinations = "mining_home;mining_away;landing_zone_dock;mining_public" diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 4ccac5f9d7..47c6cf0170 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -429,7 +429,19 @@ /mob/dead/new_player/proc/LateChoices() - var/dat = "
Round Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]
" + + var/level = "green" + switch(GLOB.security_level) + if(SEC_LEVEL_BLUE) + level = "blue" + if(SEC_LEVEL_AMBER) + level = "amber" + if(SEC_LEVEL_RED) + level = "red" + if(SEC_LEVEL_DELTA) + level = "delta" + + var/dat = "
Round Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]
Alert Level: [capitalize(level)]
" if(SSshuttle.emergency) switch(SSshuttle.emergency.mode) diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index ffe9a800a1..6e91b58506 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -6,11 +6,11 @@ else gender = pick(MALE,FEMALE) underwear = random_underwear(gender) - undie_color = random_color() + undie_color = random_short_color() undershirt = random_undershirt(gender) - shirt_color = random_color() + shirt_color = random_short_color() socks = random_socks() - socks_color = random_color() + socks_color = random_short_color() skin_tone = random_skin_tone() hair_style = random_hair_style(gender) facial_hair_style = random_facial_hair_style(gender) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm b/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm index bf63ea09d7..fb40563ccf 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm @@ -172,11 +172,13 @@ name = "Tank Top - Midriff" icon_state = "tank_midriff" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/tanktop_midriff_alt name = "Tank Top - Midriff Halterneck" icon_state = "tank_midriff_alt" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/tankstripe name = "Tank Top - Striped" @@ -190,100 +192,122 @@ name = "Baby-Doll" icon_state = "babydoll" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/bra name = "Bra" icon_state = "bra" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/bra_alt name = "Bra - Alt" icon_state = "bra_alt" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/bra_thin name = "Bra - Thin" icon_state = "bra_thin" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/bra_kinky name = "Bra - Kinky Black" icon_state = "bra_kinky" + gender = FEMALE /datum/sprite_accessory/underwear/top/bra_freedom name = "Bra - Freedom" icon_state = "bra_assblastusa" + gender = FEMALE /datum/sprite_accessory/underwear/top/bra_commie name = "Bra - Commie" icon_state = "bra_commie" + gender = FEMALE /datum/sprite_accessory/underwear/top/bra_beekini name = "Bra - Bee-kini" icon_state = "bra_bee-kini" + gender = FEMALE /datum/sprite_accessory/underwear/top/bra_uk name = "Bra - UK" icon_state = "bra_uk" + gender = FEMALE /datum/sprite_accessory/underwear/top/bra_neko name = "Bra - Neko" icon_state = "bra_neko" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/halterneck_bra name = "Bra - Halterneck" icon_state = "halterneck_bra" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/sports_bra name = "Bra, Sports" icon_state = "sports_bra" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/sports_bra_alt name = "Bra, Sports - Alt" icon_state = "sports_bra_alt" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/bra_strapless name = "Bra, Strapless" icon_state = "bra_strapless" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/bra_strapless_alt name = "Bra, Strapless - Alt" icon_state = "bra_blue" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/striped_bra name = "Bra - Striped" icon_state = "striped_bra" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/fishnet_sleeves name = "Fishnet - sleeves" icon_state = "fishnet_sleeves" + gender = FEMALE /datum/sprite_accessory/underwear/top/fishnet_gloves name = "Fishnet - gloves" icon_state = "fishnet_gloves" + gender = FEMALE /datum/sprite_accessory/underwear/top/fishnet_base name = "Fishnet - top" icon_state = "fishnet_body" + gender = FEMALE /datum/sprite_accessory/underwear/top/swimsuit name = "Swimsuit Top" icon_state = "bra_swimming" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/swimsuit_alt name = "Swimsuit Top - Strapless" icon_state = "bra_swimming_alt" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/top/tubetop name = "Tube Top" icon_state = "tubetop" - has_color = TRUE \ No newline at end of file + has_color = TRUE + gender = FEMALE \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm b/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm index 611547ad4e..3356804cb3 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm @@ -10,45 +10,55 @@ name = "Mankini" icon_state = "mankini" has_color = TRUE + gender = MALE /datum/sprite_accessory/underwear/bottom/male_kinky name = "Jockstrap" icon_state = "jockstrap" has_color = TRUE + gender = MALE /datum/sprite_accessory/underwear/bottom/briefs name = "Briefs" icon_state = "briefs" has_color = TRUE + gender = MALE /datum/sprite_accessory/underwear/bottom/boxers name = "Boxers" icon_state = "boxers" has_color = TRUE + gender = MALE /datum/sprite_accessory/underwear/bottom/male_bee name = "Boxers - Bee" icon_state = "bee_shorts" + gender = MALE /datum/sprite_accessory/underwear/bottom/male_hearts name = "Boxers - Heart" icon_state = "boxers_heart" + gender = MALE /datum/sprite_accessory/underwear/bottom/male_stripe name = "Boxers - Striped" icon_state = "boxers_striped" + gender = MALE /datum/sprite_accessory/underwear/bottom/male_commie name = "Boxers - Striped Communist" icon_state = "boxers_commie" + gender = MALE /datum/sprite_accessory/underwear/bottom/male_usastripe name = "Boxers - Striped Freedom" icon_state = "boxers_assblastusa" + gender = MALE /datum/sprite_accessory/underwear/bottom/male_uk name = "Boxers - Striped UK" icon_state = "boxers_uk" + gender = MALE /datum/sprite_accessory/underwear/bottom/boxer_briefs name = "Boxer Briefs" @@ -59,60 +69,73 @@ name = "Panties" icon_state = "panties" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/bottom/panties_alt name = "Panties - Alt" icon_state = "panties_alt" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/bottom/fishnet_lower name = "Panties - Fishnet" icon_state = "fishnet_lower" + gender = FEMALE /datum/sprite_accessory/underwear/bottom/female_beekini name = "Panties - Bee-kini" icon_state = "panties_bee-kini" + gender = FEMALE /datum/sprite_accessory/underwear/bottom/female_commie name = "Panties - Commie" icon_state = "panties_commie" + gender = FEMALE /datum/sprite_accessory/underwear/bottom/female_usastripe name = "Panties - Freedom" icon_state = "panties_assblastusa" + gender = FEMALE /datum/sprite_accessory/underwear/bottom/female_kinky name = "Panties - Kinky Black" icon_state = "panties_kinky" + gender = FEMALE /datum/sprite_accessory/underwear/bottom/panties_uk name = "Panties - UK" icon_state = "panties_uk" + gender = FEMALE /datum/sprite_accessory/underwear/bottom/panties_neko name = "Panties - Neko" icon_state = "panties_neko" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/bottom/panties_slim name = "Panties - Slim" icon_state = "panties_slim" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/bottom/striped_panties name = "Panties - Striped" icon_state = "striped_panties" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/bottom/panties_swimsuit name = "Panties - Swimsuit" icon_state = "panties_swimming" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/bottom/panties_thin name = "Panties - Thin" icon_state = "panties_thin" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/bottom/longjon name = "Long John Bottoms" @@ -122,23 +145,28 @@ /datum/sprite_accessory/underwear/bottom/swimsuit_red name = "Swimsuit, One Piece - Red" icon_state = "swimming_red" + gender = FEMALE /datum/sprite_accessory/underwear/bottom/swimsuit name = "Swimsuit, One Piece - Black" icon_state = "swimming_black" + gender = FEMALE /datum/sprite_accessory/underwear/bottom/swimsuit_blue name = "Swimsuit, One Piece - Striped Blue" icon_state = "swimming_blue" + gender = FEMALE /datum/sprite_accessory/underwear/bottom/thong name = "Thong" icon_state = "thong" has_color = TRUE + gender = FEMALE /datum/sprite_accessory/underwear/bottom/thong_babydoll name = "Thong - Alt" icon_state = "thong_babydoll" has_color = TRUE + gender = FEMALE diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm index d521ef179f..7eeab05466 100644 --- a/code/modules/mob/dead/observer/say.dm +++ b/code/modules/mob/dead/observer/say.dm @@ -4,14 +4,14 @@ return var/message_mode = get_message_mode(message) - if(client && (message_mode == "admin" || message_mode == "deadmin")) + if(client && (message_mode == MODE_ADMIN || message_mode == MODE_DEADMIN)) message = copytext(message, 3) if(findtext(message, " ", 1, 2)) message = copytext(message, 2) - if(message_mode == "admin") + if(message_mode == MODE_ADMIN) client.cmd_admin_say(message) - else if(message_mode == "deadmin") + else if(message_mode == MODE_DEADMIN) client.dsay(message) return diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index e1a7752e9d..d2788075e2 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -59,15 +59,19 @@ /mob/living/carbon/alien/humanoid/update_inv_handcuffed() remove_overlay(HANDCUFF_LAYER) - var/cuff_icon = "aliencuff" - var/dmi_file = 'icons/mob/alien.dmi' - - if(mob_size == MOB_SIZE_LARGE) - cuff_icon = "aliencuff_[caste]" - dmi_file = 'icons/mob/alienqueen.dmi' if(handcuffed) - overlays_standing[HANDCUFF_LAYER] = mutable_appearance(dmi_file, cuff_icon, -HANDCUFF_LAYER) + var/cuff_icon = handcuffed.item_state + var/dmi_file = 'icons/mob/alien.dmi' + + if(mob_size == MOB_SIZE_LARGE) + cuff_icon += "_[caste]" + dmi_file = 'icons/mob/alienqueen.dmi' + + var/mutable_appearance/cuffs = mutable_appearance(dmi_file, cuff_icon, -HANDCUFF_LAYER) + cuffs.color = handcuffed.color + + overlays_standing[HANDCUFF_LAYER] = cuffs apply_overlay(HANDCUFF_LAYER) //Royals have bigger sprites, so inhand things must be handled differently. diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index b4739f943e..1574305a83 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -63,7 +63,7 @@ -/obj/item/organ/body_egg/alien_embryo/proc/AttemptGrow(gib_on_success=TRUE) +/obj/item/organ/body_egg/alien_embryo/proc/AttemptGrow(var/kill_on_sucess=TRUE) if(!owner || bursting) return @@ -102,10 +102,12 @@ new_xeno.notransform = 0 new_xeno.invisibility = 0 - if(gib_on_success) - new_xeno.visible_message("[new_xeno] bursts out of [owner] in a shower of gore!", "You exit [owner], your previous host.", "You hear organic matter ripping and tearing!") - owner.gib(TRUE) - else + if(kill_on_sucess) //ITS TOO LATE + new_xeno.visible_message("[new_xeno] bursts out of [owner]!", "You exit [owner], your previous host.", "You hear organic matter ripping and tearing!") + owner.apply_damage(rand(100,300),BRUTE,zone,FALSE) //Random high damage to torso so health sensors don't metagame. + owner.spill_organs(TRUE,FALSE,TRUE) //Lets still make the death gruesome and impossible to just simply defib someone. + owner.death(FALSE) //Just in case some freak occurance occurs where you somehow survive all your organs being removed from you and the 100-300 brute damage. + else //When it is removed via surgery at a late stage, rather than forced. new_xeno.visible_message("[new_xeno] wriggles out of [owner]!", "You exit [owner], your previous host.") owner.adjustBruteLoss(40) owner.cut_overlay(overlay) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index aa87a6e46d..e94a6eac86 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -699,9 +699,10 @@ clear_fullscreen("critvision") //Oxygen damage overlay - if(oxyloss) + var/windedup = getOxyLoss() + getStaminaLoss() * 0.2 + stamdamageoverlaytemp + if(windedup) var/severity = 0 - switch(oxyloss) + switch(windedup) if(10 to 20) severity = 1 if(20 to 25) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index f782289e18..a067be798f 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -11,8 +11,8 @@ var/silent = FALSE //Can't talk. Value goes down every life proc. //NOTE TO FUTURE CODERS: DO NOT INITIALIZE NUMERICAL VARS AS NULL OR I WILL MURDER YOU. var/dreaming = 0 //How many dream images we have left to send - var/obj/item/handcuffed = null //Whether or not the mob is handcuffed - var/obj/item/legcuffed = null //Same as handcuffs but for legs. Bear traps use this. + var/obj/item/restraints/handcuffed //Whether or not the mob is handcuffed + var/obj/item/restraints/legcuffed //Same as handcuffs but for legs. Bear traps use this. var/disgust = 0 @@ -61,5 +61,6 @@ var/next_hallucination = 0 var/cpr_time = 1 //CPR cooldown. var/damageoverlaytemp = 0 + var/stamdamageoverlaytemp = 0 var/drunkenness = 0 //Overall drunkenness - check handle_alcohol() in life.dm for effects diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 57dd1af749..69926f46f9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -623,6 +623,7 @@ facial_hair_style = "Shaved" hair_style = pick("Bedhead", "Bedhead 2", "Bedhead 3") underwear = "Nude" + undershirt = "Nude" update_body() update_hair() update_genitals() @@ -899,12 +900,9 @@ stop_pulling() /mob/living/carbon/human/proc/is_shove_knockdown_blocked() //If you want to add more things that block shove knockdown, extend this - var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, back, gloves, shoes, belt, s_store, glasses, ears, wear_id) //Everything but pockets. Pockets are l_store and r_store. (if pockets were allowed, putting something armored, gloves or hats for example, would double up on the armor) - for(var/bp in body_parts) - if(istype(bp, /obj/item/clothing)) - var/obj/item/clothing/C = bp - if(C.blocks_shove_knockdown) - return TRUE + for(var/obj/item/clothing/C in get_equipped_items()) //doesn't include pockets + if(C.blocks_shove_knockdown) + return TRUE return FALSE /mob/living/carbon/human/proc/clear_shove_slowdown() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index c9d59b84f2..a10a205a5f 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -31,6 +31,7 @@ var/socks = "Nude" //Which socks the player wants var/socks_color = "#FFFFFF" var/backbag = DBACKPACK //Which backpack type the player has chosen. + var/jumpsuit_style = PREF_SUIT //suit/skirt //Equipment slots var/obj/item/wear_suit = null diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 56be62c75e..eee425063d 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -53,14 +53,14 @@ if(ears) var/obj/item/radio/headset/dongle = ears if(!istype(dongle)) - return 0 + return FALSE if(dongle.translate_binary) - return 1 + return TRUE /mob/living/carbon/human/radio(message, message_mode, list/spans, language) . = ..() - if(. != 0) - return . + if(.) + return switch(message_mode) if(MODE_HEADSET) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 37e5da2f84..076b8efb66 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1781,6 +1781,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(CLONE) H.adjustCloneLoss(damage * hit_percent * H.physiology.clone_mod) if(STAMINA) + H.stamdamageoverlaytemp = 20 if(BP) if(damage > 0 ? BP.receive_damage(0, 0, damage * hit_percent * H.physiology.stamina_mod) : BP.heal_damage(0, 0, abs(damage * hit_percent * H.physiology.stamina_mod), only_robotic = FALSE, only_organic = FALSE)) H.update_stamina() diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 2c663b4094..88dd59749c 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -420,7 +420,7 @@ H.visible_message("[H] teleports!", "You destabilize and teleport!") new /obj/effect/particle_effect/sparks(get_turf(H)) playsound(get_turf(H), "sparks", 50, 1) - do_teleport(H, get_turf(H), 6, asoundin = 'sound/weapons/emitter2.ogg') + do_teleport(H, get_turf(H), 6, asoundin = 'sound/weapons/emitter2.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) last_teleport = world.time /datum/species/golem/bluespace/spec_hitby(atom/movable/AM, mob/living/carbon/human/H) @@ -486,7 +486,7 @@ spark_system.set_up(10, 0, src) spark_system.attach(H) spark_system.start() - do_teleport(H, get_turf(H), 12, asoundin = 'sound/weapons/emitter2.ogg') + do_teleport(H, get_turf(H), 12, asoundin = 'sound/weapons/emitter2.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) last_teleport = world.time UpdateButtonIcon() //action icon looks unavailable sleep(cooldown + 5) diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 2b487d4349..ce5d7be890 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -14,7 +14,8 @@ damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs var/datum/action/innate/slime_change/slime_change //CIT CHANGE - liked_food = MEAT + liked_food = TOXIC | MEAT + toxic_food = null coldmod = 6 // = 3x cold damage heatmod = 0.5 // = 1/4x heat damage burnmod = 0.5 // = 1/2x generic burn damage diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm index 5c20b0ce75..49121c9409 100644 --- a/code/modules/mob/living/carbon/human/status_procs.dm +++ b/code/modules/mob/living/carbon/human/status_procs.dm @@ -3,7 +3,7 @@ amount = dna.species.spec_stun(src,amount) return ..() -/mob/living/carbon/human/Knockdown(amount, updating = 1, ignore_canknockdown = 0) +/mob/living/carbon/human/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) amount = dna.species.spec_stun(src,amount) return ..() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index feb80e8d2c..72ff7e7a60 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -288,8 +288,10 @@ There are several things that need to be remembered: S.alternate_worn_icon = 'modular_citadel/icons/mob/digishoes.dmi' else S.alternate_worn_icon = null - - overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(state = shoes.icon_state, default_layer = SHOES_LAYER, default_icon_file = ((shoes.alternate_worn_icon) ? shoes.alternate_worn_icon : 'icons/mob/feet.dmi')) + var/t_state = shoes.item_state + if (!t_state) + t_state = shoes.icon_state + overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(state = t_state, default_layer = SHOES_LAYER, default_icon_file = ((shoes.alternate_worn_icon) ? shoes.alternate_worn_icon : 'icons/mob/feet.dmi')) var/mutable_appearance/shoes_overlay = overlays_standing[SHOES_LAYER] if(OFFSET_SHOES in dna.species.offset_features) shoes_overlay.pixel_x += dna.species.offset_features[OFFSET_SHOES][1] @@ -377,13 +379,16 @@ There are several things that need to be remembered: if(wear_suit) var/obj/item/clothing/suit/S = wear_suit + var/no_taur_thanks = FALSE + if(!istype(S)) + no_taur_thanks = TRUE wear_suit.screen_loc = ui_oclothing if(client && hud_used && hud_used.hud_shown) if(hud_used.inventory_shown) client.screen += wear_suit update_observer_view(wear_suit,1) - if(S.mutantrace_variation) //Just make sure we've got this checked too + if(!no_taur_thanks && S.mutantrace_variation) //Just make sure we've got this checked too if(S.taurmode == NOT_TAURIC && S.adjusted == ALT_STYLE) //are we not a taur, but we have Digitigrade legs? Run this check first, then. S.alternate_worn_icon = 'modular_citadel/icons/mob/suit_digi.dmi' else @@ -404,7 +409,7 @@ There are several things that need to be remembered: if(OFFSET_SUIT in dna.species.offset_features) suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1] suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2] - if(S.center) + if(!no_taur_thanks && S.center) suit_overlay = center_image(suit_overlay, S.dimension_x, S.dimension_y) overlays_standing[SUIT_LAYER] = suit_overlay update_hair() @@ -468,14 +473,6 @@ There are several things that need to be remembered: overlays_standing[BACK_LAYER] = back_overlay apply_overlay(BACK_LAYER) -/mob/living/carbon/human/update_inv_legcuffed() - remove_overlay(LEGCUFF_LAYER) - clear_alert("legcuffed") - if(legcuffed) - overlays_standing[LEGCUFF_LAYER] = mutable_appearance('icons/mob/mob.dmi', "legcuff1", -LEGCUFF_LAYER) - apply_overlay(LEGCUFF_LAYER) - throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = src.legcuffed) - /proc/wear_female_version(t_color, icon, layer, type) var/index = t_color var/icon/female_clothing_icon = GLOB.female_clothing_icons[index] diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 9dd55c361e..ec80da6b53 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -4,8 +4,9 @@ if(notransform) return - if(damageoverlaytemp) + if(damageoverlaytemp || stamdamageoverlaytemp) damageoverlaytemp = 0 + stamdamageoverlaytemp = 0 update_damage_hud() if(stat != DEAD) //Reagent processing needs to come before breathing, to prevent edge cases. diff --git a/code/modules/mob/living/carbon/monkey/update_icons.dm b/code/modules/mob/living/carbon/monkey/update_icons.dm index 6311776596..e9bb9fc207 100644 --- a/code/modules/mob/living/carbon/monkey/update_icons.dm +++ b/code/modules/mob/living/carbon/monkey/update_icons.dm @@ -43,12 +43,15 @@ /mob/living/carbon/monkey/update_inv_legcuffed() remove_overlay(LEGCUFF_LAYER) + clear_alert("legcuffed") if(legcuffed) - var/mutable_appearance/legcuff_overlay = mutable_appearance('icons/mob/mob.dmi', "legcuff1", -LEGCUFF_LAYER) - legcuff_overlay.pixel_y = 8 - overlays_standing[LEGCUFF_LAYER] = legcuff_overlay - apply_overlay(LEGCUFF_LAYER) + var/mutable_appearance/legcuffs = mutable_appearance('icons/mob/restraints.dmi', legcuffed.item_state, -LEGCUFF_LAYER) + legcuffs.color = handcuffed.color + legcuffs.pixel_y = 8 + overlays_standing[HANDCUFF_LAYER] = legcuffs + apply_overlay(LEGCUFF_LAYER) + throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = legcuffed) //monkey HUD updates for items in our inventory diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 87bf662c4f..44c2508894 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -176,9 +176,22 @@ /mob/living/carbon/update_inv_handcuffed() remove_overlay(HANDCUFF_LAYER) if(handcuffed) - overlays_standing[HANDCUFF_LAYER] = mutable_appearance('icons/mob/mob.dmi', "handcuff1", -HANDCUFF_LAYER) + var/mutable_appearance/cuffs = mutable_appearance('icons/mob/restraints.dmi', handcuffed.item_state, -HANDCUFF_LAYER) + cuffs.color = handcuffed.color + + overlays_standing[HANDCUFF_LAYER] = cuffs apply_overlay(HANDCUFF_LAYER) +/mob/living/carbon/update_inv_legcuffed() + remove_overlay(LEGCUFF_LAYER) + clear_alert("legcuffed") + if(legcuffed) + var/mutable_appearance/legcuffs = mutable_appearance('icons/mob/restraints.dmi', legcuffed.item_state, -LEGCUFF_LAYER) + legcuffs.color = handcuffed.color + + overlays_standing[HANDCUFF_LAYER] = legcuffs + apply_overlay(LEGCUFF_LAYER) + throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = legcuffed) //mob HUD updates for items in our inventory diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 155ff15d5b..bfd27c11cc 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -2,61 +2,61 @@ GLOBAL_LIST_INIT(department_radio_prefixes, list(":", ".")) GLOBAL_LIST_INIT(department_radio_keys, list( // Location - "r" = "right hand", - "l" = "left hand", - "i" = "intercom", + MODE_KEY_R_HAND = MODE_R_HAND, + MODE_KEY_L_HAND = MODE_L_HAND, + MODE_KEY_INTERCOM = MODE_INTERCOM, // Department - "h" = "department", - "c" = "Command", - "n" = "Science", - "m" = "Medical", - "e" = "Engineering", - "s" = "Security", - "u" = "Supply", - "v" = "Service", + MODE_KEY_DEPARTMENT = MODE_DEPARTMENT, + RADIO_KEY_COMMAND = RADIO_CHANNEL_COMMAND, + RADIO_KEY_SCIENCE = RADIO_CHANNEL_SCIENCE, + RADIO_KEY_MEDICAL = RADIO_CHANNEL_MEDICAL, + RADIO_KEY_ENGINEERING = RADIO_CHANNEL_ENGINEERING, + RADIO_KEY_SECURITY = RADIO_CHANNEL_SECURITY, + RADIO_KEY_SUPPLY = RADIO_CHANNEL_SUPPLY, + RADIO_KEY_SERVICE = RADIO_CHANNEL_SERVICE, // Faction - "t" = "Syndicate", - "y" = "CentCom", + RADIO_KEY_SYNDICATE = RADIO_CHANNEL_SYNDICATE, + RADIO_KEY_CENTCOM = RADIO_CHANNEL_CENTCOM, // Admin - "p" = "admin", - "d" = "deadmin", + MODE_KEY_ADMIN = MODE_ADMIN, + MODE_KEY_DEADMIN = MODE_DEADMIN, // Misc - "o" = "AI Private", // AI Upload channel - "x" = "cords", // vocal cords, used by Voice of God + RADIO_KEY_AI_PRIVATE = RADIO_CHANNEL_AI_PRIVATE, // AI Upload channel + MODE_KEY_VOCALCORDS = MODE_VOCALCORDS, // vocal cords, used by Voice of God //kinda localization -- rastaf0 //same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding. // Location - "ê" = "right hand", - "ä" = "left hand", - "ø" = "intercom", + "ê" = MODE_R_HAND, + "ä" = MODE_L_HAND, + "ø" = MODE_INTERCOM, // Department - "ð" = "department", - "ñ" = "Command", - "ò" = "Science", - "ü" = "Medical", - "ó" = "Engineering", - "û" = "Security", - "ã" = "Supply", - "ì" = "Service", + "ð" = MODE_DEPARTMENT, + "ñ" = RADIO_CHANNEL_COMMAND, + "ò" = RADIO_CHANNEL_SCIENCE, + "ü" = RADIO_CHANNEL_MEDICAL, + "ó" = RADIO_CHANNEL_ENGINEERING, + "û" = RADIO_CHANNEL_SECURITY, + "ã" = RADIO_CHANNEL_SUPPLY, + "ì" = RADIO_CHANNEL_SERVICE, // Faction - "å" = "Syndicate", - "í" = "CentCom", + "å" = RADIO_CHANNEL_SYNDICATE, + "í" = RADIO_CHANNEL_CENTCOM, // Admin - "ç" = "admin", - "â" = "deadmin", + "ç" = MODE_ADMIN, + "â" = MODE_ADMIN, // Misc - "ù" = "AI Private", - "÷" = "cords" + "ù" = RADIO_CHANNEL_AI_PRIVATE, + "÷" = MODE_VOCALCORDS )) /mob/living/proc/Ellipsis(original_msg, chance = 50, keep_words) @@ -105,12 +105,12 @@ GLOBAL_LIST_INIT(department_radio_keys, list( if(findtext(message, " ", 1, 2)) message = copytext(message, 2) - if(message_mode == "admin") + if(message_mode == MODE_ADMIN) if(client) client.cmd_admin_say(message) return - if(message_mode == "deadmin") + if(message_mode == MODE_DEADMIN) if(client) client.dsay(message) return diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index ce99e301c5..91515e4511 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -61,7 +61,7 @@ var/mob/living/silicon/ai/calling_ai //Links a bot to the AI calling it. var/obj/item/radio/Radio //The bot's radio, for speaking to people. var/radio_key = null //which channels can the bot listen to - var/radio_channel = "Common" //The bot's default radio channel + var/radio_channel = RADIO_CHANNEL_COMMON //The bot's default radio channel var/auto_patrol = 0// set to make bot automatically patrol var/turf/patrol_target // this is turf to navigate to (location of beacon) var/turf/summon_target // The turf of a user summoning a bot. diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index bc8dd0c3ab..e09eb13886 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -9,7 +9,7 @@ health = 25 maxHealth = 25 radio_key = /obj/item/encryptionkey/headset_service - radio_channel = "Service" //Service + radio_channel = RADIO_CHANNEL_SERVICE //Service bot_type = CLEAN_BOT model = "Cleanbot" bot_core_type = /obj/machinery/bot_core/cleanbot @@ -155,7 +155,7 @@ else shuffle = TRUE //Shuffle the list the next time we scan so we dont both go the same way. path = list() - + if(!path || path.len == 0) //No path, need a new one //Try to produce a path to the target, and ignore airlocks to which it has access. path = get_path_to(src, target.loc, /turf/proc/Distance_cardinal, 0, 30, id=access_card) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index 581711d271..0781c2907a 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -13,7 +13,7 @@ mob_size = MOB_SIZE_LARGE radio_key = /obj/item/encryptionkey/headset_sec - radio_channel = "Security" + radio_channel = RADIO_CHANNEL_SECURITY bot_type = SEC_BOT model = "ED-209" bot_core = /obj/machinery/bot_core/secbot diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm index d8c3bca72a..1c2a6393ae 100644 --- a/code/modules/mob/living/simple_animal/bot/firebot.dm +++ b/code/modules/mob/living/simple_animal/bot/firebot.dm @@ -16,7 +16,7 @@ spacewalk = TRUE radio_key = /obj/item/encryptionkey/headset_eng - radio_channel = "Engineering" + radio_channel = RADIO_CHANNEL_ENGINEERING bot_type = FIRE_BOT model = "Firebot" bot_core = /obj/machinery/bot_core/firebot diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 7e5cfe2110..4709680ad9 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -11,7 +11,7 @@ spacewalk = TRUE radio_key = /obj/item/encryptionkey/headset_eng - radio_channel = "Engineering" + radio_channel = RADIO_CHANNEL_ENGINEERING bot_type = FLOOR_BOT model = "Floorbot" bot_core = /obj/machinery/bot_core/floorbot diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index d586cc694b..e069b46e9d 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -11,7 +11,6 @@ pass_flags = PASSMOB radio_key = /obj/item/encryptionkey/headset_service //doesn't have security key - radio_channel = "Service" //Doesn't even use the radio anyway. bot_type = HONK_BOT model = "Honkbot" bot_core_type = /obj/machinery/bot_core/honkbot diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 5a21d33d5a..5eaaaea175 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -17,7 +17,7 @@ status_flags = (CANPUSH | CANSTUN) radio_key = /obj/item/encryptionkey/headset_med - radio_channel = "Medical" + radio_channel = RADIO_CHANNEL_MEDICAL bot_type = MED_BOT model = "Medibot" diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index c45d435253..2efdf09f24 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -23,7 +23,7 @@ mob_size = MOB_SIZE_LARGE radio_key = /obj/item/encryptionkey/headset_cargo - radio_channel = "Supply" + radio_channel = RADIO_CHANNEL_SUPPLY bot_type = MULE_BOT model = "MULE" diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index fca1f66546..b6ef509d54 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -11,7 +11,7 @@ pass_flags = PASSMOB radio_key = /obj/item/encryptionkey/secbot //AI Priv + Security - radio_channel = "Security" //Security channel + radio_channel = RADIO_CHANNEL_SECURITY //Security channel bot_type = SEC_BOT model = "Securitron" bot_core_type = /obj/machinery/bot_core/secbot @@ -61,7 +61,7 @@ /mob/living/simple_animal/bot/secbot/pingsky name = "Officer Pingsky" desc = "It's Officer Pingsky! Delegated to satellite guard duty for harbouring anti-human sentiment." - radio_channel = "AI Private" + radio_channel = RADIO_CHANNEL_AI_PRIVATE /mob/living/simple_animal/bot/secbot/Initialize() . = ..() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index 807c52ea46..23ac527b2e 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -222,7 +222,7 @@ if(.) update_icons() -/mob/living/simple_animal/drone/cogscarab/Knockdown(amount, updating = 1, ignore_canknockdown = 0) +/mob/living/simple_animal/drone/cogscarab/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) . = ..() if(.) update_icons() diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm index 8fb1de18df..ff2f453207 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm @@ -22,7 +22,7 @@ var/mob/living/M = target if(!M.anchored && M != summoner && !hasmatchingsummoner(M)) new /obj/effect/temp_visual/guardian/phase/out(get_turf(M)) - do_teleport(M, M, 10) + do_teleport(M, M, 10, channel = TELEPORT_CHANNEL_BLUESPACE) for(var/mob/living/L in range(1, M)) if(hasmatchingsummoner(L)) //if the summoner matches don't hurt them continue diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index 8ef70e439f..794683e69f 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -142,5 +142,5 @@ L.flash_act() A.visible_message("[A] disappears in a flash of light!", \ "Your vision is obscured by a flash of light!") - do_teleport(A, beacon, 0) + do_teleport(A, beacon, 0, channel = TELEPORT_CHANNEL_BLUESPACE) new /obj/effect/temp_visual/guardian/phase(get_turf(A)) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 7cf8defc0f..b529d826c9 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -747,6 +747,12 @@ Difficulty: Very Hard /obj/structure/closet/stasis/ex_act() return +/obj/structure/closet/stasis/handle_lock_addition() + return + +/obj/structure/closet/stasis/handle_lock_removal() + return + /obj/effect/proc_holder/spell/targeted/exit_possession name = "Exit Possession" desc = "Exits the body you are possessing." diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm index 5cee4ef1b7..cc54ad3bef 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm @@ -38,3 +38,13 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 +/mob/living/simple_animal/hostile/retaliate/bat/secbat + name = "Security Bat" + icon_state = "secbat" + icon_living = "secbat" + icon_dead = "secbat_dead" + icon_gib = "secbat_dead" + desc = "A fruit bat with a tiny little security hat who is ready to inject cuteness into any security operation." + emote_see = list("is ready to law down the law.", "flaps about with an air of authority.") + response_help = "respects the authority of" + gold_core_spawnable = FRIENDLY_SPAWN diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index fc53483eda..a50af21d47 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -241,23 +241,23 @@ clearlist(available_channels) for(var/ch in headset_to_add.channels) switch(ch) - if("Engineering") - available_channels.Add(":e") - if("Command") - available_channels.Add(":c") - if("Security") - available_channels.Add(":s") - if("Science") - available_channels.Add(":n") - if("Medical") - available_channels.Add(":m") - if("Supply") - available_channels.Add(":u") - if("Service") - available_channels.Add(":v") + if(RADIO_CHANNEL_ENGINEERING) + available_channels.Add(RADIO_TOKEN_ENGINEERING) + if(RADIO_CHANNEL_COMMAND) + available_channels.Add(RADIO_TOKEN_COMMAND) + if(RADIO_CHANNEL_SECURITY) + available_channels.Add(RADIO_TOKEN_SECURITY) + if(RADIO_CHANNEL_SCIENCE) + available_channels.Add(RADIO_TOKEN_SCIENCE) + if(RADIO_CHANNEL_MEDICAL) + available_channels.Add(RADIO_TOKEN_MEDICAL) + if(RADIO_CHANNEL_SUPPLY) + available_channels.Add(RADIO_TOKEN_SUPPLY) + if(RADIO_CHANNEL_SERVICE) + available_channels.Add(RADIO_TOKEN_SERVICE) if(headset_to_add.translate_binary) - available_channels.Add(":b") + available_channels.Add(MODE_TOKEN_BINARY) else return ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal_vr.dm b/code/modules/mob/living/simple_animal/simple_animal_vr.dm index 4d808a11a9..41ece5ed06 100644 --- a/code/modules/mob/living/simple_animal/simple_animal_vr.dm +++ b/code/modules/mob/living/simple_animal/simple_animal_vr.dm @@ -105,6 +105,9 @@ var/mob/living/carbon/human/user = usr if(!istype(user) || user.stat) return + if(!vore_active) + return + if(vore_selected.digest_mode == DM_HOLD) var/confirm = alert(usr, "Enabling digestion on [name] will cause it to digest all stomach contents. Using this to break OOC prefs is against the rules. Digestion will disable itself after 20 minutes.", "Enabling [name]'s Digestion", "Enable", "Cancel") if(confirm == "Enable") diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 5006bd2920..0880f7f432 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -62,15 +62,15 @@ return K.duration - world.time return 0 -/mob/living/proc/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE) //Can't go below remaining duration +/mob/living/proc/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) //Can't go below remaining duration if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canknockdown) - if(absorb_stun(amount, ignore_canknockdown)) + if(absorb_stun(isnull(override_hardstun)? amount : override_hardstun, ignore_canknockdown)) return var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() if(K) - K.duration = max(world.time + amount, K.duration) - else if(amount > 0) - K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating) + K.duration = max(world.time + (isnull(override_hardstun)? amount : override_hardstun), K.duration) + else if((amount || override_hardstun) > 0) + K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating, override_hardstun, override_stamdmg) return K /mob/living/proc/SetKnockdown(amount, updating = TRUE, ignore_canknockdown = FALSE) //Sets remaining duration diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b098801da8..84f0df3cc7 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -116,7 +116,7 @@ // vision_distance (optional) define how many tiles away the message can be seen. // ignored_mob (optional) doesn't show any message to a given mob if TRUE. -/atom/proc/visible_message(message, self_message, blind_message, vision_distance, ignored_mob) +/atom/proc/visible_message(message, self_message, blind_message, vision_distance, ignored_mob, no_ghosts = FALSE) var/turf/T = get_turf(src) if(!T) return @@ -129,6 +129,8 @@ if(M == ignored_mob) continue var/msg = message + if(isobserver(M) && no_ghosts) + continue if(M == src) //the src always see the main message or self message if(self_message) msg = self_message @@ -155,7 +157,7 @@ // deaf_message (optional) is what deaf people will see. // hearing_distance (optional) is the range, how many tiles away the message can be heard. -/mob/audible_message(message, deaf_message, hearing_distance, self_message) +/mob/audible_message(message, deaf_message, hearing_distance, self_message, no_ghosts = FALSE) var/range = 7 if(hearing_distance) range = hearing_distance @@ -163,6 +165,8 @@ var/msg = message if(self_message && M==src) msg = self_message + if(no_ghosts && isobserver(M)) + continue M.show_message( msg, 2, deaf_message, 1) // Show a message to all mobs in earshot of this atom @@ -171,11 +175,13 @@ // deaf_message (optional) is what deaf people will see. // hearing_distance (optional) is the range, how many tiles away the message can be heard. -/atom/proc/audible_message(message, deaf_message, hearing_distance) +/atom/proc/audible_message(message, deaf_message, hearing_distance, no_ghosts = FALSE) var/range = 7 if(hearing_distance) range = hearing_distance for(var/mob/M in get_hearers_in_view(range, src)) + if(no_ghosts && isobserver(M)) + continue M.show_message( message, 2, deaf_message, 1) /mob/proc/Life() diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 66444abf91..1fc97c31e4 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -172,15 +172,11 @@ proc/get_top_level_mob(var/mob/S) user.log_message(message, INDIVIDUAL_EMOTE_LOG) message = "[user] " + "[message]" - for(var/mob/M) - if(M in list(/mob/living)) - M.show_message(message) - if(emote_type == EMOTE_AUDIBLE) - user.audible_message(message=message,hearing_distance=1) + user.audible_message(message=message,hearing_distance=1, no_ghosts = TRUE) else - user.visible_message(message=message,self_message=message,vision_distance=1) - log_emote("[key_name(user)] : [message]") + user.visible_message(message=message,self_message=message,vision_distance=1, no_ghosts = TRUE) + log_emote("[key_name(user)] : (SUBTLER) [message]") message = null diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm index 1c3fbd8147..94be922fdf 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_stealth.dm @@ -8,33 +8,37 @@ Contents: /obj/item/clothing/suit/space/space_ninja/proc/toggle_stealth() - var/mob/living/carbon/human/U = affecting - if(!U) + if(!affecting) return if(stealth) cancel_stealth() else if(cell.charge <= 0) - to_chat(U, "You don't have enough power to enable Stealth!") + to_chat(affecting, "You don't have enough power to enable Stealth!") return stealth = !stealth - animate(U, alpha = 50,time = 15) - U.visible_message("[U.name] vanishes into thin air!", \ + animate(affecting, alpha = 10,time = 15) + affecting.visible_message("[affecting.name] vanishes into thin air!", \ "You are now mostly invisible to normal detection.") + RegisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY), .proc/reduce_stealth) + RegisterSignal(affecting, COMSIG_MOVABLE_BUMP, .proc/bumping_stealth) +/obj/item/clothing/suit/space/space_ninja/proc/reduce_stealth() + affecting.alpha = min(affecting.alpha + 30, 80) + +/obj/item/clothing/suit/space/space_ninja/proc/bumping_stealth(datum/source, atom/A) + if(isliving(A)) + affecting.alpha = min(affecting.alpha + 15, 80) /obj/item/clothing/suit/space/space_ninja/proc/cancel_stealth() - var/mob/living/carbon/human/U = affecting - if(!U) - return 0 - if(stealth) - stealth = !stealth - animate(U, alpha = 255, time = 15) - U.visible_message("[U.name] appears from thin air!", \ - "You are now visible.") - return 1 - return 0 - + if(!affecting || !stealth) + return FALSE + stealth = !stealth + UnregisterSignal(affecting, list(COMSIG_MOB_ITEM_ATTACK, COMSIG_MOB_ATTACK_RANGED, COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_THROW, COMSIG_PARENT_ATTACKBY, COMSIG_MOVABLE_BUMP)) + animate(affecting, alpha = 255, time = 15) + affecting.visible_message("[affecting.name] appears from thin air!", \ + "You are now visible.") + return TRUE /obj/item/clothing/suit/space/space_ninja/proc/stealth() if(!s_busy) diff --git a/code/modules/ninja/suit/shoes.dm b/code/modules/ninja/suit/shoes.dm index 1b935a00de..115b14b63b 100644 --- a/code/modules/ninja/suit/shoes.dm +++ b/code/modules/ninja/suit/shoes.dm @@ -1,4 +1,3 @@ - /obj/item/clothing/shoes/space_ninja name = "ninja shoes" desc = "A pair of running shoes. Excellent for running and even better for smashing skulls." @@ -13,3 +12,12 @@ min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT heat_protection = FEET max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT + +/obj/item/clothing/shoes/space_ninja/equipped(mob/user, slot) + . = ..() + if(slot == SLOT_SHOES) + ADD_TRAIT(user, TRAIT_SILENT_STEP, "ninja_shoes_[REF(src)]") + +/obj/item/clothing/shoes/space_ninja/dropped(mob/user) + . = ..() + REMOVE_TRAIT(user, TRAIT_SILENT_STEP, "ninja_shoes_[REF(src)]") diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index b98ef764c0..ac1ef3b96a 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -149,12 +149,11 @@ Contents: /obj/item/clothing/suit/space/space_ninja/examine(mob/user) ..() - if(s_initialized) - if(user == affecting) - to_chat(user, "All systems operational. Current energy capacity: [DisplayEnergy(cell.charge)].") - to_chat(user, "The CLOAK-tech device is [stealth?"active":"inactive"].") - to_chat(user, "There are [s_bombs] smoke bomb\s remaining.") - to_chat(user, "There are [a_boost] adrenaline booster\s remaining.") + if(s_initialized && user == affecting) + to_chat(user, "All systems operational. Current energy capacity: [DisplayEnergy(cell.charge)].\n\ + The CLOAK-tech device is [stealth?"active":"inactive"].\n\ + There are [s_bombs] smoke bomb\s remaining.\n\ + There are [a_boost] adrenaline booster\s remaining.") /obj/item/clothing/suit/space/space_ninja/ui_action_click(mob/user, action) if(istype(action, /datum/action/item_action/initialize_ninja_suit)) diff --git a/code/modules/ninja/suit/suit_initialisation.dm b/code/modules/ninja/suit/suit_initialisation.dm index 4b159557bc..3d80282fe7 100644 --- a/code/modules/ninja/suit/suit_initialisation.dm +++ b/code/modules/ninja/suit/suit_initialisation.dm @@ -48,7 +48,7 @@ /obj/item/clothing/suit/space/space_ninja/proc/ninitialize_seven(delay, mob/living/carbon/human/U) to_chat(U, "All systems operational. Welcome to SpiderOS, [U.real_name].") s_initialized = TRUE - ntick() + START_PROCESSING(SSprocessing, src) s_busy = FALSE @@ -91,4 +91,5 @@ unlock_suit() U.regenerate_icons() s_initialized = FALSE + STOP_PROCESSING(SSprocessing, src) s_busy = FALSE diff --git a/code/modules/ninja/suit/suit_process.dm b/code/modules/ninja/suit/suit_process.dm index 4a89a59f75..850fb837b4 100644 --- a/code/modules/ninja/suit/suit_process.dm +++ b/code/modules/ninja/suit/suit_process.dm @@ -1,20 +1,17 @@ -/obj/item/clothing/suit/space/space_ninja/proc/ntick(mob/living/carbon/human/U = affecting) - //Runs in the background while the suit is initialized. - //Requires charge or stealth to process. - spawn while(s_initialized) - if(!affecting) - terminate()//Kills the suit and attached objects. +/obj/item/clothing/suit/space/space_ninja/process() + if(!affecting || !s_initialized) + return PROCESS_KILL - else if(cell.charge > 0) - if(s_coold) - s_coold--//Checks for ability s_cooldown first. + if(cell.charge > 0) + if(s_coold) + s_coold--//Checks for ability s_cooldown first. - cell.charge -= s_cost//s_cost is the default energy cost each ntick, usually 5. - if(stealth)//If stealth is active. - cell.charge -= s_acost + cell.charge -= s_cost//s_cost is the default energy cost each tick, usually 5. + if(stealth)//If stealth is active. + cell.charge -= s_acost + affecting.alpha = max(affecting.alpha - 10, 10) - else - cell.charge = 0 + else + cell.charge = 0 + if(stealth) cancel_stealth() - - sleep(10)//Checks every second. diff --git a/code/modules/projectiles/ammunition/caseless/rocket.dm b/code/modules/projectiles/ammunition/caseless/rocket.dm index 9d6befce53..bc693d96bc 100644 --- a/code/modules/projectiles/ammunition/caseless/rocket.dm +++ b/code/modules/projectiles/ammunition/caseless/rocket.dm @@ -9,7 +9,7 @@ name = "\improper PM-9HEDP" desc = "An 84mm High Explosive Dual Purpose rocket. Pointy end toward mechs." caliber = "84mm" - icon_state = "s-casing-live" + icon_state = "84mm-hedp" projectile_type = /obj/item/projectile/bullet/a84mm /obj/item/ammo_casing/caseless/a75 diff --git a/code/modules/projectiles/ammunition/energy/special.dm b/code/modules/projectiles/ammunition/energy/special.dm index 0879506036..7b4e0bfa97 100644 --- a/code/modules/projectiles/ammunition/energy/special.dm +++ b/code/modules/projectiles/ammunition/energy/special.dm @@ -62,3 +62,8 @@ e_cost = 200 select_name = "stun" projectile_type = /obj/item/projectile/energy/tesla/revolver + +/obj/item/ammo_casing/energy/emitter + fire_sound = 'sound/weapons/emitter.ogg' + e_cost = 2000 //20,000 is in the cell making this 10 shots before reload + projectile_type = /obj/item/projectile/beam/emitter diff --git a/code/modules/projectiles/boxes_magazines/internal/grenade.dm b/code/modules/projectiles/boxes_magazines/internal/grenade.dm index 352d1eb951..79a005ee8a 100644 --- a/code/modules/projectiles/boxes_magazines/internal/grenade.dm +++ b/code/modules/projectiles/boxes_magazines/internal/grenade.dm @@ -11,7 +11,7 @@ max_ammo = 1 /obj/item/ammo_box/magazine/internal/rocketlauncher - name = "grenade launcher internal magazine" + name = "rocket launcher internal magazine" ammo_type = /obj/item/ammo_casing/caseless/rocket caliber = "84mm" max_ammo = 1 diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 98fd774d63..fb3ed19f82 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -32,9 +32,10 @@ var/fire_delay = 0 //rate of fire for burst firing and semi auto var/firing_burst = 0 //Prevent the weapon from firing again while already firing var/semicd = 0 //cooldown handler - var/weapon_weight = WEAPON_LIGHT + var/weapon_weight = WEAPON_LIGHT //currently only used for inaccuracy var/spread = 0 //Spread induced by the gun itself. var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. + var/inaccuracy_modifier = 1 lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' @@ -538,3 +539,13 @@ if(A == chambered) chambered = null update_icon() + +/obj/item/gun/proc/getinaccuracy(mob/living/user) + if(!iscarbon(user)) + return FALSE + else + var/mob/living/carbon/holdingdude = user + if(istype(holdingdude) && holdingdude.combatmode) + return (max((holdingdude.lastdirchange + weapon_weight * 25) - world.time,0) * inaccuracy_modifier) + else + return ((weapon_weight * 25) * inaccuracy_modifier) diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm index eea4e1bc0b..f6356dce99 100644 --- a/code/modules/projectiles/guns/ballistic/launchers.dm +++ b/code/modules/projectiles/guns/ballistic/launchers.dm @@ -86,6 +86,7 @@ pin = /obj/item/firing_pin/implant/pindicate burst_size = 1 fire_delay = 0 + inaccuracy_modifier = 0.7 casing_ejector = FALSE weapon_weight = WEAPON_HEAVY magazine_wording = "rocket" @@ -108,34 +109,34 @@ /obj/item/gun/ballistic/rocketlauncher/can_shoot() return chambered?.BB -/obj/item/gun/ballistic/rocketlauncher/process_chamber() - if(chambered) - chambered = null - if(magazine) - QDEL_NULL(magazine) - update_icon() - /obj/item/gun/ballistic/rocketlauncher/attack_self_tk(mob/user) return //too difficult to remove the rocket with TK /obj/item/gun/ballistic/rocketlauncher/attack_self(mob/living/user) if(magazine) - if(chambered) - chambered.forceMove(magazine) - magazine.stored_ammo.Insert(1, chambered) + var/obj/item/ammo_casing/AC = chambered + if(AC) + if(!user.put_in_hands(AC)) + AC.bounce_away(FALSE, NONE) + to_chat(user, "You remove \the [AC] from \the [src]!") + playsound(src, 'sound/weapons/gun_magazine_remove_full.ogg', 70, TRUE) chambered = null else - stack_trace("Removed [magazine] from [src] without a chambered round") - magazine.forceMove(drop_location()) - if(user.is_holding(src)) - user.put_in_hands(magazine) - playsound(src, 'sound/weapons/gun_magazine_remove_full.ogg', 70, TRUE) - to_chat(user, "You work the [magazine] out from [src].") - magazine = null - else - to_chat(user, "There's no rocket in [src].") + to_chat(user, "There's no [magazine_wording] in [src].") update_icon() +/obj/item/gun/ballistic/rocketlauncher/attackby(obj/item/A, mob/user, params) + if(magazine && istype(A, /obj/item/ammo_casing)) + if(user.temporarilyRemoveItemFromInventory(A)) + if(!chambered) + to_chat(user, "You load a new [A] into \the [src].") + playsound(src, "gun_insert_full_magazine", 70, 1) + chamber_round() + update_icon() + return TRUE + else + to_chat(user, "You cannot seem to get \the [A] out of your hands!") + /obj/item/gun/ballistic/rocketlauncher/update_icon() icon_state = "[initial(icon_state)]-[chambered ? "1" : "0"]" diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index bb6a144c93..856dfed78b 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -212,14 +212,41 @@ ) /obj/item/gun/ballistic/shotgun/automatic/combat/compact - name = "compact combat shotgun" - desc = "A compact version of the semi automatic combat shotgun. For close encounters." + name = "warden's combat shotgun" + desc = "A modified version of the semi automatic combat shotgun with a collapsible stock. For close encounters." icon_state = "cshotgunc" - mag_type = /obj/item/ammo_box/magazine/internal/shot/com/compact + mag_type = /obj/item/ammo_box/magazine/internal/shot/com w_class = WEIGHT_CLASS_NORMAL - unique_reskin = list("Tatical" = "cshotgunc", - "Slick" = "cshotgunc_slick" - ) + var/stock = FALSE + recoil = 5 + spread = 2 + +/obj/item/gun/ballistic/shotgun/automatic/combat/compact/AltClick(mob/living/user) + if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + return + toggle_stock(user) + . = ..() + +/obj/item/gun/ballistic/shotgun/automatic/combat/compact/examine(mob/user) + ..() + to_chat(user, "Alt-click to toggle the stock.") + +/obj/item/gun/ballistic/shotgun/automatic/combat/compact/proc/toggle_stock(mob/living/user) + stock = !stock + if(stock) + w_class = WEIGHT_CLASS_HUGE + to_chat(user, "You unfold the stock.") + recoil = 1 + spread = 0 + else + w_class = WEIGHT_CLASS_NORMAL + to_chat(user, "You fold the stock.") + recoil = 5 + spread = 2 + update_icon() + +/obj/item/gun/ballistic/shotgun/automatic/combat/compact/update_icon() + icon_state = "[current_skin ? unique_reskin[current_skin] : "cshotgun"][stock ? "" : "c"]" //Dual Feed Shotgun @@ -235,6 +262,7 @@ /obj/item/gun/ballistic/shotgun/automatic/dual_tube/examine(mob/user) ..() to_chat(user, "Alt-click to pump it.") + . = ..() /obj/item/gun/ballistic/shotgun/automatic/dual_tube/Initialize() . = ..() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 6e2c9dc62a..87bfd578bc 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -304,3 +304,22 @@ /obj/item/gun/energy/gravity_gun/security pin = /obj/item/firing_pin + +//Emitter Gun + +/obj/item/gun/energy/emitter + name = "Emitter Carbine" + desc = "A small emitter fitted into a handgun case, do to size constraints and safety it can only shoot about ten times when fully charged." + icon_state = "emitter_carbine" + force = 12 + w_class = WEIGHT_CLASS_SMALL + cell_type = /obj/item/stock_parts/cell/super + ammo_type = list(/obj/item/ammo_casing/energy/emitter) + +/obj/item/gun/energy/emitter/update_icon() + ..() + var/obj/item/ammo_casing/energy/shot = ammo_type[select] + if(!QDELETED(cell) && (cell.charge > shot.e_cost)) + add_overlay("emitter_carbine_empty") + else + add_overlay("emitter_carbine") diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index e3724fdf31..42033d8c88 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -131,7 +131,7 @@ no_den_usage = 1 /obj/item/gun/magic/wand/teleport/zap_self(mob/living/user) - if(do_teleport(user, user, 10)) + if(do_teleport(user, user, 10, channel = TELEPORT_CHANNEL_MAGIC)) var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(3, user.loc) smoke.start() diff --git a/code/modules/projectiles/projectile/energy/net_snare.dm b/code/modules/projectiles/projectile/energy/net_snare.dm index f5d0607341..c8333a811c 100644 --- a/code/modules/projectiles/projectile/energy/net_snare.dm +++ b/code/modules/projectiles/projectile/energy/net_snare.dm @@ -42,10 +42,10 @@ /obj/effect/nettingportal/proc/pop(teletarget) if(teletarget) for(var/mob/living/L in get_turf(src)) - do_teleport(L, teletarget, 2)//teleport what's in the tile to the beacon + do_teleport(L, teletarget, 2, channel = TELEPORT_CHANNEL_BLUESPACE)//teleport what's in the tile to the beacon else for(var/mob/living/L in get_turf(src)) - do_teleport(L, L, 15) //Otherwise it just warps you off somewhere. + do_teleport(L, L, 15, channel = TELEPORT_CHANNEL_BLUESPACE) //Otherwise it just warps you off somewhere. qdel(src) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index dee88f176f..5b84608fad 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -67,7 +67,7 @@ teleloc = target.loc for(var/atom/movable/stuff in teleloc) if(!stuff.anchored && stuff.loc) - if(do_teleport(stuff, stuff, 10)) + if(do_teleport(stuff, stuff, 10, channel = TELEPORT_CHANNEL_MAGIC)) teleammount++ var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(max(round(4 - teleammount),0), stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity diff --git a/code/modules/projectiles/projectile/special/rocket.dm b/code/modules/projectiles/projectile/special/rocket.dm index a62fa25f7d..e15810c6bb 100644 --- a/code/modules/projectiles/projectile/special/rocket.dm +++ b/code/modules/projectiles/projectile/special/rocket.dm @@ -16,6 +16,7 @@ var/anti_armour_damage = 200 armour_penetration = 100 dismemberment = 100 + ricochets_max = 0 /obj/item/projectile/bullet/a84mm/on_hit(atom/target, blocked = FALSE) ..() diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 6401a78141..1d13b44c7a 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -102,12 +102,9 @@ updateUsrDialog() update_icon() else if(!condi && istype(I, /obj/item/storage/pill_bottle)) - if(bottle) - to_chat(user, "A pill bottle is already loaded into [src]!") - return if(!user.transferItemToLoc(I, src)) return - bottle = I + replace_pillbottle(user, I) to_chat(user, "You add [I] into the dispenser slot.") updateUsrDialog() else @@ -131,12 +128,23 @@ update_icon() return TRUE -/obj/machinery/chem_master/on_deconstruction() - replace_beaker(usr) +/obj/machinery/chem_master/proc/replace_pillbottle(mob/living/user, obj/item/storage/pill_bottle/new_bottle) if(bottle) bottle.forceMove(drop_location()) - adjust_item_drop_location(bottle) + if(user && Adjacent(user) && !issiliconoradminghost(user)) + user.put_in_hands(beaker) + else + adjust_item_drop_location(bottle) + if(new_bottle) + bottle = new_bottle + else bottle = null + update_icon() + return TRUE + +/obj/machinery/chem_master/on_deconstruction() + replace_beaker(usr) + replace_pillbottle(usr) return ..() /obj/machinery/chem_master/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ @@ -195,11 +203,8 @@ . = TRUE if("ejectp") - if(bottle) - bottle.forceMove(drop_location()) - adjust_item_drop_location(bottle) - bottle = null - . = TRUE + replace_pillbottle(usr) + . = TRUE if("transferToBuffer") if(beaker) @@ -245,14 +250,14 @@ if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return var/obj/item/reagent_containers/pill/P - var/target_loc = drop_location() + var/target_loc = bottle ? bottle : drop_location() var/drop_threshold = INFINITY if(bottle) GET_COMPONENT_FROM(STRB, /datum/component/storage, bottle) if(STRB) drop_threshold = STRB.max_items - bottle.contents.len - for(var/i = 0; i < amount; i++) + for(var/i in 1 to amount) if(i < drop_threshold) P = new(target_loc) else @@ -348,10 +353,10 @@ return var/amount_full = 0 - var/vol_part = min(reagents.total_volume, 30) + var/vol_part = min(reagents.total_volume, 60) if(text2num(many)) - amount_full = round(reagents.total_volume / 30) - vol_part = reagents.total_volume % 30 + amount_full = round(reagents.total_volume / 60) + vol_part = reagents.total_volume % 60 var/name = stripped_input(usr, "Name:","Name your hypovial!", (reagents.total_volume ? reagents.get_master_reagent_name() : " "), MAX_NAME_LEN) if(!name || !reagents.total_volume || !src || QDELETED(src) || !usr.canUseTopic(src, !issilicon(usr))) return @@ -361,7 +366,7 @@ P = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location()) P.name = trim("[name] hypovial") adjust_item_drop_location(P) - reagents.trans_to(P, 30) + reagents.trans_to(P, 60) if(vol_part) P = new/obj/item/reagent_containers/glass/bottle/vial/small(drop_location()) @@ -432,4 +437,4 @@ condi = TRUE #undef PILL_STYLE_COUNT -#undef RANDOM_PILL_STYLE \ No newline at end of file +#undef RANDOM_PILL_STYLE diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 211fddca26..a46a4d61e4 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -2076,7 +2076,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/blazaam/on_mob_life(mob/living/carbon/M) if(M.drunkenness > 40) if(stored_teleports) - do_teleport(M, get_turf(M), rand(1,3)) + do_teleport(M, get_turf(M), rand(1,3), channel = TELEPORT_CHANNEL_WORMHOLE) stored_teleports-- if(prob(10)) stored_teleports += rand(2,6) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 840a57055c..db927411c0 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -346,7 +346,7 @@ //We only get 30u to start with... /datum/reagent/fuel/holyoil/reaction_obj(obj/O, reac_volume) - . = ..() + . = ..() if(istype(O, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O reac_volume = min(reac_volume, M.amount) @@ -989,7 +989,7 @@ /datum/reagent/bluespace/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) - do_teleport(M, get_turf(M), (reac_volume / 5), asoundin = 'sound/effects/phasein.ogg') //4 tiles per crystal + do_teleport(M, get_turf(M), (reac_volume / 5), asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) //4 tiles per crystal ..() /datum/reagent/bluespace/on_mob_life(mob/living/carbon/M) @@ -1001,7 +1001,7 @@ ..() /mob/living/proc/bluespace_shuffle() - do_teleport(src, get_turf(src), 5, asoundin = 'sound/effects/phasein.ogg') + do_teleport(src, get_turf(src), 5, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) /datum/reagent/aluminium name = "Aluminium" diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 9d10b9356a..9bc6bef8a5 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -53,7 +53,7 @@ /obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity) . = ..() - if((!proximity) || !spillable || !check_allowed_items(target,target_self=1)) + if((!proximity) || !check_allowed_items(target,target_self=1)) return if(target.is_refillable()) //Something like a glass. Player probably wants to transfer TO it. diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm index 47f3ba5efa..92a4b155d8 100644 --- a/code/modules/reagents/reagent_containers/rags.dm +++ b/code/modules/reagents/reagent_containers/rags.dm @@ -13,11 +13,18 @@ var/wipe_sound var/soak_efficiency = 1 var/extinguish_efficiency = 0 + var/action_speed = 3 SECONDS + var/damp_threshold = 0.5 /obj/item/reagent_containers/rag/suicide_act(mob/user) user.visible_message("[user] is smothering [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (OXYLOSS) +/obj/item/reagent_containers/rag/examine(mob/user) + . = ..() + if(reagents.total_volume) + to_chat(user, "Alt-Click to squeeze the liquids out of it.") + /obj/item/reagent_containers/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity) . = ..() if(!proximity) @@ -39,7 +46,7 @@ else if(istype(A) && src in user) user.visible_message("[user] starts to wipe down [A] with [src]!", "You start to wipe down [A] with [src]...") - if(do_after(user,30, target = A)) + if(do_after(user, action_speed, target = A)) user.visible_message("[user] finishes wiping off [A]!", "You finish wiping off [A].") SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) return @@ -47,21 +54,47 @@ /obj/item/reagent_containers/rag/pre_altattackby(mob/living/M, mob/living/user, params) if(istype(M) && user.a_intent == INTENT_HELP) user.changeNext_move(CLICK_CD_MELEE) - if(user.on_fire) + if(M.on_fire) user.visible_message("\The [user] uses \the [src] to pat out [M == user ? "[user.p_their()]" : "\the [M]'s"] flames!") if(hitsound) playsound(M, hitsound, 25, 1) - M.adjust_fire_stacks(-extinguish_efficiency) + M.adjust_fire_stacks(-min(extinguish_efficiency, M.fire_stacks)) else + if(reagents.total_volume > (volume * damp_threshold)) + to_chat(user, "\The [src] is too drenched to be used to dry [user == M ? "yourself" : "\the [M]"] off.") + return TRUE user.visible_message("\The [user] starts drying [M == user ? "[user.p_them()]self" : "\the [M]"] off with \the [src]...") - if(do_mob(user, M, 3 SECONDS)) + if(do_mob(user, M, action_speed)) + if(reagents.total_volume > (volume * damp_threshold)) + return user.visible_message("\The [user] dries [M == user ? "[user.p_them()]self" : "\the [M]"] off with \the [src].") if(wipe_sound) playsound(M, wipe_sound, 25, 1) - M.adjust_fire_stacks(-soak_efficiency) + if(M.fire_stacks) + var/minus_plus = M.fire_stacks < 0 ? 1 : -1 + var/amount = min(abs(M.fire_stacks), soak_efficiency) + var/r_id = "fuel" + if(M.fire_stacks < 0) + r_id = "water" + reagents.add_reagent(r_id, amount * 0.3) + M.adjust_fire_stacks(minus_plus * amount) + M.wash_cream() return TRUE return ..() +/obj/item/reagent_containers/rag/AltClick(mob/user) + . = ..() + if(reagents.total_volume && user.canUseTopic(src, BE_CLOSE)) + to_chat(user, "You start squeezing the liquids out of \the [src]...") + if(do_after(user, action_speed, TRUE, src)) + to_chat(user, "You squeeze \the [src] dry.") + var/atom/react_loc = get_turf(src) + if(ismob(react_loc)) + react_loc = react_loc.loc + if(react_loc) + reagents.reaction(react_loc, TOUCH) + reagents.clear_reagents() + /obj/item/reagent_containers/rag/towel name = "towel" desc = "A soft cotton towel." @@ -77,10 +110,16 @@ volume = 10 total_mass = 2 wipe_sound = 'sound/items/towelwipe.ogg' - soak_efficiency = 2 - extinguish_efficiency = 2 + soak_efficiency = 4 + extinguish_efficiency = 3 var/flat_icon = "towel_flat" var/folded_icon = "towel" + var/list/possible_colors + +/obj/item/reagent_containers/rag/towel/Initialize() + . = ..() + if(possible_colors) + add_atom_colour(pick(possible_colors), FIXED_COLOUR_PRIORITY) /obj/item/reagent_containers/rag/towel/attack(mob/living/M, mob/living/user) if(user.a_intent == INTENT_HARM) @@ -112,13 +151,27 @@ to_chat(user, "You lay out \the [src] flat on the ground.") icon_state = flat_icon layer = BELOW_OBJ_LAYER - qdel(src) /obj/item/reagent_containers/rag/towel/pickup(mob/living/user) . = ..() icon_state = folded_icon layer = initial(layer) -/obj/item/reagent_containers/rag/towel/random/Initialize() - . = ..() - add_atom_colour(pick("FF0000","FF7F00","FFFF00","00FF00","0000FF","4B0082","8F00FF"), FIXED_COLOUR_PRIORITY) +/obj/item/reagent_containers/rag/towel/on_reagent_change(changetype) + force = initial(force) + round(reagents.total_volume * 0.5) + +/obj/item/reagent_containers/rag/towel/random + possible_colors = list("#FF0000","#FF7F00","#FFFF00","#00FF00","#0000FF","#4B0082","#8F00FF") + +/obj/item/reagent_containers/rag/towel/syndicate + name = "syndicate towel" + desc = "Truly a weapon of mass destruction." + possible_colors = list("#DD1A1A", "#DB4325", "#E02700") + force = 4 + armour_penetration = 10 + volume = 20 + soak_efficiency = 6 + extinguish_efficiency = 5 + action_speed = 15 + damp_threshold = 0.8 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 20, "bio" = 20, "rad" = 20, "fire" = 50, "acid" = 50) //items don't provide armor to wearers unlike clothing yet. \ No newline at end of file diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 59df0f6e85..d27c876f88 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -460,6 +460,16 @@ category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING +/datum/design/quantum_keycard + name = "Quantum Keycard" + desc = "Allows for the construction of a quantum keycard." + id = "quantum_keycard" + build_type = PROTOLATHE + materials = list(MAT_GLASS = 500, MAT_METAL = 500, MAT_SILVER = 500, MAT_BLUESPACE = 1000) + build_path = /obj/item/quantum_keycard + category = list("Equipment") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING + /datum/design/anomaly_neutralizer name = "Anomaly Neutralizer" desc = "An advanced tool capable of instantly neutralizing anomalies, designed to capture the fleeting aberrations created by the engine." diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index ebd386513e..e56350a280 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -651,7 +651,7 @@ if(loc == user && !is_centcom_level(userturf.z)) //Because Nuke Ops bringing this back on their shuttle, then looting the ERT area is 2fun4you! visible_message("[src] twists and bends, relocating itself!") throwSmoke(userturf) - do_teleport(user, userturf, 8, asoundin = 'sound/effects/phasein.ogg') + do_teleport(user, userturf, 8, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) throwSmoke(get_turf(user)) warn_admins(user, "Teleport", 0) diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index c6487c92f0..c70ee8a16b 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -221,13 +221,22 @@ //research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500) //export_price = 5000 +/datum/techweb_node/computer_board_gaming + id = "computer_board_gaming" + display_name = "Games and Toys" + description = "For the slackers on the station." + prereq_ids = list("comptech") + design_ids = list("arcade_battle", "arcade_orion", "slotmachine", "autoylathe") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000) + export_price = 5000 + /////////////////////////Bluespace tech///////////////////////// /datum/techweb_node/bluespace_basic //Bluespace-memery id = "bluespace_basic" display_name = "Basic Bluespace Theory" description = "Basic studies into the mysterious alternate dimension known as bluespace." prereq_ids = list("base", "datatheory") - design_ids = list("beacon", "xenobioconsole", "telesci_gps") + design_ids = list("beacon", "xenobioconsole", "telesci_gps", "xenobio_monkeys") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -236,7 +245,7 @@ display_name = "Applied Bluespace Research" description = "Using bluespace to make things faster and better." prereq_ids = list("bluespace_basic", "engineering") - design_ids = list("bs_rped","biobag_holding","minerbag_holding", "bluespacebeaker", "bluespacesyringe", "phasic_scanning", "bluespacesmartdart") + design_ids = list("bs_rped","biobag_holding","minerbag_holding", "bluespacebeaker", "bluespacesyringe", "phasic_scanning", "bluespacesmartdart", "xenobio_slimebasic") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 5000 @@ -245,7 +254,7 @@ display_name = "Advanced Bluespace Research" description = "Deeper understanding of how the Bluespace dimension works" prereq_ids = list("practical_bluespace", "high_efficiency") - design_ids = list("bluespace_matter_bin", "femto_mani", "triphasic_scanning", "bluespace_crystal") + design_ids = list("bluespace_matter_bin", "femto_mani", "triphasic_scanning", "bluespace_crystal", "xenobio_slimeadv") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000) export_price = 5000 @@ -278,10 +287,10 @@ /datum/techweb_node/bluespace_warping id = "bluespace_warping" - display_name = "Bluespace Teleportation tech" - description = "Traversing through space at an instant with Bluespace." + display_name = "Bluespace Travel" + description = "Application of Bluespace for static teleportation technology." prereq_ids = list("adv_power", "adv_bluespace") - design_ids = list( "tele_station", "tele_hub", "quantumpad", "launchpad", "launchpad_console", "teleconsole", "roastingstick") + design_ids = list("tele_station", "tele_hub", "quantumpad", "quantum_keycard", "launchpad", "launchpad_console", "teleconsole", "roastingstick") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -672,7 +681,7 @@ display_name = "Ballistic Weaponry" description = "This isn't research.. This is reverse-engineering!" prereq_ids = list("weaponry") - design_ids = list("mag_oldsmg", "mag_oldsmg_ap", "mag_oldsmg_ic") + design_ids = list("mag_oldsmg", "mag_oldsmg_ap", "mag_oldsmg_ic", "mag_oldsmg_rubber", "mag_oldsmg_tx") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2750) export_price = 5000 @@ -1049,6 +1058,15 @@ continue boost_item_paths |= UI.item //allows deconning to unlock. +/datum/techweb_node/advanced_illegl_ballistics + id = "advanced_illegal_ballistics" + display_name = "Advanced Illegal Ballistics" + description = "Advanced Ballistic for Illegal weaponds." + design_ids = list("10mm","10mmap","10mminc","10mmhp","pistolm9mm","m45","bolt_clip") + prereq_ids = list("ballistic_weapons","syndicate_basic","explosive_weapons") + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 25000) //This gives sec lethal mags/clips for guns form traitors or space. + export_price = 7000 + //Helpers for debugging/balancing the techweb in its entirety! /proc/total_techweb_exports() var/list/datum/techweb_node/processing = list() diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index ad5bfa27dc..b9e7122d07 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -680,7 +680,7 @@ datum/status_effect/stabilized/blue/on_remove() if(!F) F = get_turf(owner) range = 50 - if(do_teleport(owner, F, range)) + if(do_teleport(owner, F, range, channel = TELEPORT_CHANNEL_BLUESPACE)) to_chat(owner, "[linked_extract] will take some time to re-align you on the bluespace axis.") do_sparks(5,FALSE,owner) owner.apply_status_effect(/datum/status_effect/bluespacestabilization) diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm index 141e6b1fe1..53857b214c 100644 --- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm +++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm @@ -9,6 +9,7 @@ righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' item_flags = ABSTRACT | DROPDEL w_class = WEIGHT_CLASS_HUGE + slot_flags = NONE force = 5 max_charges = 1 //Recharging costs blood. recharge_rate = 1 @@ -46,4 +47,4 @@ /obj/item/projectile/magic/bloodchill/on_hit(mob/living/target) . = ..() if(isliving(target)) - target.apply_status_effect(/datum/status_effect/bloodchill) \ No newline at end of file + target.apply_status_effect(/datum/status_effect/bloodchill) diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index 38362e6d64..363331e12d 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -144,7 +144,7 @@ Burning extracts: user.visible_message("[src] sparks, and lets off a shockwave of bluespace energy!") for(var/mob/living/L in range(1, get_turf(user))) if(L != user) - do_teleport(L, get_turf(L), 6, asoundin = 'sound/effects/phasein.ogg') //Somewhere between the effectiveness of fake and real BS crystal + do_teleport(L, get_turf(L), 6, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) //Somewhere between the effectiveness of fake and real BS crystal new /obj/effect/particle_effect/sparks(get_turf(L)) playsound(get_turf(L), "sparks", 50, 1) ..() diff --git a/code/modules/research/xenobiology/crossbreeding/consuming.dm b/code/modules/research/xenobiology/crossbreeding/consuming.dm index b51a7b2553..0b2d60da8c 100644 --- a/code/modules/research/xenobiology/crossbreeding/consuming.dm +++ b/code/modules/research/xenobiology/crossbreeding/consuming.dm @@ -232,7 +232,7 @@ Consuming extracts: L.Cut(I,I+1) if(target) - do_teleport(M, target, 0, asoundin = 'sound/effects/phasein.ogg') + do_teleport(M, target, 0, asoundin = 'sound/effects/phasein.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) new /obj/effect/particle_effect/sparks(get_turf(M)) playsound(get_turf(M), "sparks", 50, 1) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index ce36be8e42..7acbaaac1c 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -494,7 +494,7 @@ to_chat(user, "You feel your body vibrating...") if(do_after(user, 25, target = user)) to_chat(user, "You teleport!") - do_teleport(user, get_turf(user), 6, asoundin = 'sound/weapons/emitter2.ogg') + do_teleport(user, get_turf(user), 6, asoundin = 'sound/weapons/emitter2.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) return 300 if(SLIME_ACTIVATE_MAJOR) @@ -510,7 +510,7 @@ if(teleport_x && teleport_y && teleport_z) var/turf/T = locate(teleport_x, teleport_y, teleport_z) to_chat(user, "You snap back to your anchor point!") - do_teleport(user, T, asoundin = 'sound/weapons/emitter2.ogg') + do_teleport(user, T, asoundin = 'sound/weapons/emitter2.ogg', channel = TELEPORT_CHANNEL_BLUESPACE) return 450 diff --git a/code/modules/spells/spell_types/area_teleport.dm b/code/modules/spells/spell_types/area_teleport.dm index ab399f4e2a..7bede9f8be 100644 --- a/code/modules/spells/spell_types/area_teleport.dm +++ b/code/modules/spells/spell_types/area_teleport.dm @@ -58,7 +58,7 @@ var/success = 0 while(tempL.len) attempt = pick(tempL) - target.Move(attempt) + do_teleport(target, attempt, channel = TELEPORT_CHANNEL_MAGIC) if(get_turf(target) == attempt) success = 1 break @@ -66,7 +66,7 @@ tempL.Remove(attempt) if(!success) - target.forceMove(L) + do_teleport(target, L, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC) playsound(get_turf(user), sound2, 50,1) return diff --git a/code/modules/spells/spell_types/turf_teleport.dm b/code/modules/spells/spell_types/turf_teleport.dm index 093285b74d..8a45f2be22 100644 --- a/code/modules/spells/spell_types/turf_teleport.dm +++ b/code/modules/spells/spell_types/turf_teleport.dm @@ -40,6 +40,5 @@ if(!picked || !isturf(picked)) return - if(!target.Move(picked)) - target.forceMove(picked) - playsound(get_turf(user), sound2, 50,1) + if(do_teleport(user, picked, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC)) + playsound(get_turf(user), sound1, 50,1) diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 98f5534d06..be88d0ecdc 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -133,6 +133,7 @@ mode = "M-SHIELD" speed_process = TRUE var/kill_range = 14 + density = 0 /obj/machinery/satellite/meteor_shield/sci name = "\improper Meteor Shield Satellite" diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index ab31d64034..a3f8b883b4 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -20,8 +20,8 @@ icon_state = "borg_l_arm" status = BODYPART_ROBOTIC - brute_reduction = 5 - burn_reduction = 4 + brute_reduction = 2 + burn_reduction = 1 light_brute_msg = ROBOTIC_LIGHT_BRUTE_MSG medium_brute_msg = ROBOTIC_MEDIUM_BRUTE_MSG @@ -41,8 +41,8 @@ icon_state = "borg_r_arm" status = BODYPART_ROBOTIC - brute_reduction = 5 - burn_reduction = 4 + brute_reduction = 2 + burn_reduction = 1 light_brute_msg = ROBOTIC_LIGHT_BRUTE_MSG medium_brute_msg = ROBOTIC_MEDIUM_BRUTE_MSG @@ -62,8 +62,8 @@ icon_state = "borg_l_leg" status = BODYPART_ROBOTIC - brute_reduction = 5 - burn_reduction = 4 + brute_reduction = 2 + burn_reduction = 1 light_brute_msg = ROBOTIC_LIGHT_BRUTE_MSG medium_brute_msg = ROBOTIC_MEDIUM_BRUTE_MSG @@ -83,8 +83,8 @@ icon_state = "borg_r_leg" status = BODYPART_ROBOTIC - brute_reduction = 5 - burn_reduction = 4 + brute_reduction = 2 + burn_reduction = 1 light_brute_msg = ROBOTIC_LIGHT_BRUTE_MSG medium_brute_msg = ROBOTIC_MEDIUM_BRUTE_MSG @@ -103,8 +103,8 @@ icon_state = "borg_chest" status = BODYPART_ROBOTIC - brute_reduction = 5 - burn_reduction = 4 + brute_reduction = 2 + burn_reduction = 1 light_brute_msg = ROBOTIC_LIGHT_BRUTE_MSG medium_brute_msg = ROBOTIC_MEDIUM_BRUTE_MSG @@ -268,38 +268,38 @@ burn_reduction = 0 max_damage = 20 -// Upgraded Surplus lims +// Upgraded Surplus lims - Better then robotic lims /obj/item/bodypart/l_arm/robot/surplus_upgraded name = "reinforced surplus prosthetic left arm" - desc = "A skeletal, robotic limb. This one is reinforced to provide better protection." + desc = "A skeletal, robotic limb. This one is reinforced to provide better protection, and is made of stronger parts." icon = 'icons/mob/augmentation/surplus_augments.dmi' - brute_reduction = 1 - burn_reduction = 1 - max_damage = 30 + brute_reduction = 3 + burn_reduction = 2 + max_damage = 55 /obj/item/bodypart/r_arm/robot/surplus_upgraded name = "reinforced surplus prosthetic right arm" - desc = "A skeletal, robotic limb. This one is reinforced to provide better protection." + desc = "A skeletal, robotic limb. This one is reinforced to provide better protection, and is made of stronger parts." icon = 'icons/mob/augmentation/surplus_augments.dmi' - brute_reduction = 1 - burn_reduction = 1 - max_damage = 30 + brute_reduction = 3 + burn_reduction = 2 + max_damage = 55 /obj/item/bodypart/l_leg/robot/surplus_upgraded name = "reinforced surplus prosthetic left leg" - desc = "A skeletal, robotic limb. This one is reinforced to provide better protection." + desc = "A skeletal, robotic limb. This one is reinforced to provide better protection, and is made of stronger parts." icon = 'icons/mob/augmentation/surplus_augments.dmi' - brute_reduction = 1 - burn_reduction = 1 - max_damage = 30 + brute_reduction = 3 + burn_reduction = 2 + max_damage = 55 /obj/item/bodypart/r_leg/robot/surplus_upgraded name = "reinforced surplus prosthetic right leg" - desc = "A skeletal, robotic limb. This one is reinforced to provide better protection." + desc = "A skeletal, robotic limb. This one is reinforced to provide better protection, and is made of stronger parts." icon = 'icons/mob/augmentation/surplus_augments.dmi' - brute_reduction = 1 - burn_reduction = 1 - max_damage = 30 + brute_reduction = 3 + burn_reduction = 2 + max_damage = 55 #undef ROBOTIC_LIGHT_BRUTE_MSG #undef ROBOTIC_MEDIUM_BRUTE_MSG diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 98abb2528a..55c8d95082 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -169,7 +169,6 @@ var/list/obj/effect/abstract/eye_lighting/eye_lighting var/obj/effect/abstract/eye_lighting/on_mob var/image/mob_overlay - var/datum/component/mobhook /obj/item/organ/eyes/robotic/glow/Initialize() . = ..() @@ -238,26 +237,18 @@ return deactivate(silent = TRUE) -/obj/item/organ/eyes/robotic/glow/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = FALSE) - . = ..() - if (mobhook && mobhook.parent != M) - QDEL_NULL(mobhook) - if (!mobhook) - mobhook = M.AddComponent(/datum/component/redirect, list(COMSIG_ATOM_DIR_CHANGE = CALLBACK(src, .proc/update_visuals))) - /obj/item/organ/eyes/robotic/glow/Remove(mob/living/carbon/M) . = ..() - QDEL_NULL(mobhook) - -/obj/item/organ/eyes/robotic/glow/Destroy() - QDEL_NULL(mobhook) // mobhook is not our component - return ..() + if(active) + UnregisterSignal(M, COMSIG_ATOM_DIR_CHANGE) + active = FALSE /obj/item/organ/eyes/robotic/glow/proc/activate(silent = FALSE) start_visuals() if(!silent) to_chat(owner, "Your [src] clicks and makes a whining noise, before shooting out a beam of light!") active = TRUE + RegisterSignal(owner, COMSIG_ATOM_DIR_CHANGE, .proc/update_visuals) cycle_mob_overlay() /obj/item/organ/eyes/robotic/glow/proc/deactivate(silent = FALSE) @@ -265,6 +256,7 @@ if(!silent) to_chat(owner, "Your [src] shuts off!") active = FALSE + UnregisterSignal(owner, COMSIG_ATOM_DIR_CHANGE) remove_mob_overlay() /obj/item/organ/eyes/robotic/glow/proc/update_visuals(datum/source, olddir, newdir) diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index ef358c48da..64b2c2ee90 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -451,6 +451,6 @@ /obj/item/organ/lungs/slime/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/H) . = ..() - if (breath.gases[/datum/gas/plasma]) + if (breath && breath.gases[/datum/gas/plasma]) var/plasma_pp = breath.get_breath_partial_pressure(breath.gases[/datum/gas/plasma]) owner.blood_volume += (0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you. diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 55ead3b5b4..ad13de0a01 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -3,7 +3,7 @@ #define COOLDOWN_MEME 300 #define COOLDOWN_NONE 100 -/obj/item/organ/vocal_cords //organs that are activated through speech with the :x channel +/obj/item/organ/vocal_cords //organs that are activated through speech with the :x/MODE_KEY_VOCALCORDS channel name = "vocal cords" icon_state = "appendix" zone = BODY_ZONE_PRECISE_MOUTH diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 13dcf5a12b..38c31a1294 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -290,6 +290,22 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/dangerous category = "Conspicuous and Dangerous Weapons" +/datum/uplink_item/dangerous/pistol + name = "Stechkin Pistol" + desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible \ + with suppressors." + item = /obj/item/gun/ballistic/automatic/pistol + cost = 7 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/revolver + name = "Syndicate Revolver" + desc = "A brutally simple syndicate revolver that fires .357 Magnum rounds and has 7 chambers." + item = /obj/item/gun/ballistic/revolver/syndie + cost = 13 + surplus = 50 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + /datum/uplink_item/dangerous/rawketlawnchair name = "84mm Rocket Propelled Grenade Launcher" desc = "A reusable rocket propelled grenade launcher preloaded with a low-yield 84mm HE round. \ @@ -414,8 +430,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/dangerous/rapier name = "Rapier" desc = "A fancy rapier with a diamond tip piercing anything that it comes into contack with. \ - The rapier comes with its own shielf, this is rather noticeable as only the captain is known to carry a shielf. \ - The shielf itself can be used to block melee attacks only. Its also jet black colours." + The rapier comes with its own sheath, this is rather noticeable as only the captain is known to carry a sheath. \ + The sheath itself can be used to block melee attacks only. Its also jet black colours." item = /obj/item/storage/belt/sabre/rapier cost = 8 exclude_modes = list(/datum/game_mode/nuclear/clown_ops) @@ -494,14 +510,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 25 include_modes = list(/datum/game_mode/nuclear) -/datum/uplink_item/dangerous/pistol - name = "Stechkin Pistol" - desc = "A small, easily concealable handgun that uses 10mm auto rounds in 8-round magazines and is compatible \ - with suppressors." - item = /obj/item/gun/ballistic/automatic/pistol - cost = 7 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - /datum/uplink_item/dangerous/bolt_action name = "Surplus Rifle" desc = "A horribly outdated bolt action weapon. You've got to be desperate to use this." @@ -509,14 +517,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 2 include_modes = list(/datum/game_mode/nuclear) -/datum/uplink_item/dangerous/revolver - name = "Syndicate Revolver" - desc = "A brutally simple Syndicate revolver that fires .357 Magnum rounds and has 7 chambers." - item = /obj/item/gun/ballistic/revolver/syndie - cost = 13 - surplus = 50 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - /datum/uplink_item/dangerous/foamsmg name = "Toy Submachine Gun" desc = "A fully-loaded Donksoft bullpup submachine gun that fires riot grade darts with a 20-round magazine." @@ -563,6 +563,12 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 13 surplus = 0 +/datum/uplink_item/dangerous/phantomthief + name = "Syndicate Mask" + desc = "A cheap plastic mask fitted with an adrenaline autoinjector, which can be used by simply tensing your muscles" + item = /obj/item/clothing/glasses/phantomthief/syndicate + cost = 2 + /datum/uplink_item/stealthy_weapons/dart_pistol name = "Dart Pistol" desc = "A miniaturized version of a normal syringe gun. It is very quiet when fired and can fit into any \ @@ -1307,6 +1313,19 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes /datum/uplink_item/device_tools category = "Devices and Tools" +/datum/uplink_item/device_tools/emag + name = "Cryptographic Sequencer" + desc = "The cryptographic sequencer, electromagnetic card, or emag, is a small card that unlocks hidden functions \ + in electronic devices, subverts intended functions, and easily breaks security mechanisms." + item = /obj/item/card/emag + cost = 6 + +/datum/uplink_item/device_tools/emagrecharge + name = "Electromagnet Charging Device" + desc = "A small device intended for recharging Cryptographic Sequencers. Using it will add five extra charges to the Cryptographic Sequencer." + item = /obj/item/emagrecharge + cost = 2 + /datum/uplink_item/device_tools/cutouts name = "Adaptive Cardboard Cutouts" desc = "These cardboard cutouts are coated with a thin material that prevents discoloration and makes the images on them appear more lifelike. \ @@ -1375,19 +1394,6 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes cost = 1 exclude_modes = list(/datum/game_mode/nuclear) -/datum/uplink_item/device_tools/emag - name = "Cryptographic Sequencer" - desc = "The cryptographic sequencer, electromagnetic card, or emag, is a small card that unlocks hidden functions \ - in electronic devices, subverts intended functions, and easily breaks security mechanisms." - item = /obj/item/card/emag - cost = 6 - -/datum/uplink_item/device_tools/emagrecharge - name = "Electromagnet Charging Device" - desc = "A small device intended for recharging Cryptographic Sequencers. Using it will add five extra charges to the Cryptographic Sequencer." - item = /obj/item/emagrecharge - cost = 2 - /datum/uplink_item/device_tools/fakenucleardisk name = "Decoy Nuclear Authentication Disk" desc = "It's just a normal disk. Visually it's identical to the real deal, but it won't hold up under closer scrutiny by the Captain. \ @@ -1837,6 +1843,13 @@ datum/uplink_item/stealthy_weapons/taeclowndo_shoes item = /obj/item/clothing/shoes/clown_shoes/taeclowndo restricted_roles = list("Clown") +/datum/uplink_item/role_restricted/emitter_cannon + name = "Emitter Cannon" + desc = "A small emitter fitted into a gun case, do to size constraints and safety it can only shoot about ten times when fully charged." + cost = 5 //Low ammo, and deals same as 10mm but emp-able + item = /obj/item/gun/energy/emitter + restricted_roles = list("Chief Engineer", "Station Engineer", "Atmospheric Technician") + // Pointless /datum/uplink_item/badass category = "(Pointless) Badassery" diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 5cfa454bd9..a265a4e907 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -63,6 +63,8 @@ /obj/item/clothing/suit/wizrobe/fake = 1, /obj/item/clothing/head/wizard/fake = 1, /obj/item/staff = 3, + /obj/item/clothing/under/rank/mime/skirt = 1, + /obj/item/clothing/under/gimmick/rank/captain/suit/skirt = 1, /obj/item/clothing/mask/gas/sexyclown = 1, /obj/item/clothing/under/rank/clown/sexy = 1, /obj/item/clothing/mask/gas/sexymime = 1, diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index c31c9a12a2..1497992fe8 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -31,6 +31,9 @@ /obj/item/clothing/under/pants/tan = 4, /obj/item/clothing/under/pants/track = 3, /obj/item/clothing/suit/jacket/miljacket = 5, + /obj/item/clothing/under/scratch/skirt = 2, + /obj/item/clothing/under/gimmick/rank/captain/suit/skirt = 2, + /obj/item/clothing/under/gimmick/rank/head_of_personnel/suit/skirt = 2, /obj/item/clothing/neck/tie/blue = 3, /obj/item/clothing/neck/tie/red = 3, /obj/item/clothing/neck/tie/black = 3, @@ -98,6 +101,7 @@ /obj/item/clothing/suit/apron/purple_bartender = 4, /obj/item/clothing/under/rank/bartender/purple = 4) contraband = list(/obj/item/clothing/under/syndicate/tacticool = 3, + /obj/item/clothing/under/syndicate/tacticool/skirt = 3, /obj/item/clothing/mask/balaclava = 3, /obj/item/clothing/head/ushanka = 3, /obj/item/clothing/under/soviet = 3, diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index aaa1cf3b6f..b3b21fe375 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -12,7 +12,8 @@ /obj/item/reagent_containers/food/snacks/donut = 12, /obj/item/storage/box/evidence = 6, /obj/item/flashlight/seclite = 4, - /obj/item/restraints/legcuffs/bola/energy = 7) + /obj/item/restraints/legcuffs/bola/energy = 7, + /obj/item/secbat = 5) contraband = list(/obj/item/clothing/glasses/sunglasses = 2, /obj/item/storage/fancy/donut_box = 2, /obj/item/ssword_kit = 1) diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 1bc0e242c8..e86c8521a6 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -40,6 +40,7 @@ /obj/item/clothing/suit/hooded/wintercoat/medical = 3, /obj/item/clothing/under/rank/nursesuit = 3, /obj/item/clothing/head/nursehat = 3, + /obj/item/clothing/under/rank/medical/skirt= 5, /obj/item/clothing/under/rank/medical/blue = 2, /obj/item/clothing/under/rank/medical/green = 2, /obj/item/clothing/under/rank/medical/purple = 2, @@ -67,6 +68,7 @@ /obj/item/storage/backpack/satchel/eng = 3, /obj/item/clothing/suit/hooded/wintercoat/engineering = 3, /obj/item/clothing/under/rank/engineer = 5, + /obj/item/clothing/under/rank/engineer/skirt = 5, /obj/item/clothing/suit/hazardvest = 5, /obj/item/clothing/shoes/workboots = 5, /obj/item/clothing/head/hardhat = 5) @@ -87,6 +89,7 @@ /obj/item/storage/backpack/industrial = 3, /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos = 5, /obj/item/clothing/under/rank/atmospheric_technician = 5, + /obj/item/clothing/under/rank/atmospheric_technician/skirt = 5, /obj/item/clothing/shoes/sneakers/black = 5) refill_canister = /obj/item/vending_refill/wardrobe/atmos_wardrobe @@ -101,6 +104,7 @@ vend_reply = "Thank you for using the CargoDrobe!" products = list(/obj/item/clothing/suit/hooded/wintercoat/cargo = 3, /obj/item/clothing/under/rank/cargotech = 5, + /obj/item/clothing/under/rank/cargotech/skirt = 5, /obj/item/clothing/shoes/sneakers/black = 5, /obj/item/clothing/gloves/fingerless = 5, /obj/item/clothing/head/soft = 5, @@ -118,12 +122,14 @@ vend_reply = "Thank you for using the RoboDrobe!" products = list(/obj/item/clothing/glasses/hud/diagnostic = 3, /obj/item/clothing/under/rank/roboticist = 3, + /obj/item/clothing/under/rank/roboticist/skirt = 3, /obj/item/clothing/suit/toggle/labcoat = 3, /obj/item/clothing/shoes/sneakers/black = 3, /obj/item/clothing/gloves/fingerless = 3, /obj/item/clothing/head/soft/black = 3, /obj/item/clothing/mask/bandana/skull = 2) premium = list(/obj/item/radio/headset/headset_rob = 2) //Cit change + contraband = list(/obj/item/clothing/suit/hooded/techpriest = 2) refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe /obj/item/vending_refill/wardrobe/robo_wardrobe @@ -140,6 +146,7 @@ /obj/item/storage/backpack/satchel/tox = 3, /obj/item/clothing/suit/hooded/wintercoat/science = 3, /obj/item/clothing/under/rank/scientist = 4, + /obj/item/clothing/under/rank/scientist/skirt = 4, /obj/item/clothing/suit/toggle/labcoat/science = 4, /obj/item/clothing/shoes/sneakers/white = 4, /obj/item/radio/headset/headset_sci = 4, @@ -161,6 +168,7 @@ /obj/item/clothing/suit/apron = 3, /obj/item/clothing/suit/apron/overalls = 5, /obj/item/clothing/under/rank/hydroponics = 5, + /obj/item/clothing/under/rank/hydroponics/skirt = 5, /obj/item/clothing/mask/bandana = 4) refill_canister = /obj/item/vending_refill/wardrobe/hydro_wardrobe @@ -175,6 +183,9 @@ vend_reply = "Thank you for using the CuraDrobe!" products = list(/obj/item/clothing/head/fedora/curator = 2, /obj/item/clothing/suit/curator = 2, + /obj/item/clothing/under/rank/curator/skirt = 2, + /obj/item/clothing/under/gimmick/rank/captain/suit/skirt = 2, + /obj/item/clothing/under/gimmick/rank/head_of_personnel/suit/skirt = 2, /obj/item/clothing/under/rank/curator/treasure_hunter = 2, /obj/item/clothing/shoes/workboots/mining = 2, /obj/item/storage/backpack/satchel/explorer = 2, @@ -194,6 +205,7 @@ /obj/item/radio/headset/headset_srv = 3, /obj/item/clothing/under/sl_suit = 3, /obj/item/clothing/under/rank/bartender = 3, + /obj/item/clothing/under/rank/bartender/skirt = 2, /obj/item/clothing/under/rank/bartender/purple = 2, /obj/item/clothing/accessory/waistcoat = 3, /obj/item/clothing/suit/apron/purple_bartender = 2, @@ -226,8 +238,10 @@ /obj/item/circuitboard/machine/dish_drive = 1, /obj/item/clothing/suit/toggle/chef = 2, /obj/item/clothing/under/rank/chef = 2, + /obj/item/clothing/under/rank/chef/skirt = 2, /obj/item/clothing/head/chefhat = 2, - /obj/item/reagent_containers/rag = 3) + /obj/item/reagent_containers/rag = 3, + /obj/item/book/granter/crafting_recipe/cooking_sweets_101 = 2) refill_canister = /obj/item/vending_refill/wardrobe/chef_wardrobe /obj/item/vending_refill/wardrobe/chef_wardrobe @@ -240,6 +254,7 @@ product_ads = "Come and get your janitorial clothing, now endorsed by lizard janitors everywhere!" vend_reply = "Thank you for using the JaniDrobe!" products = list(/obj/item/clothing/under/rank/janitor = 2, + /obj/item/clothing/under/rank/janitor/skirt = 2, /obj/item/cartridge/janitor = 3, /obj/item/clothing/gloves/color/black = 2, /obj/item/clothing/head/soft/purple = 2, @@ -265,10 +280,19 @@ icon_state = "lawdrobe" product_ads = "OBJECTION! Get the rule of law for yourself!" vend_reply = "Thank you for using the LawDrobe!" - products = list(/obj/item/clothing/under/lawyer/female = 3, - /obj/item/clothing/under/lawyer/black = 3, + products = list(/obj/item/clothing/under/lawyer/bluesuit/skirt = 3, + /obj/item/clothing/under/lawyer/purpsuit/skirt = 3, + /obj/item/clothing/under/lawyer/blacksuit/skirt = 3, + /obj/item/clothing/under/lawyer/female = 3, + /obj/item/clothing/under/lawyer/female/skirt = 3, + /obj/item/clothing/under/lawyer/really_black = 3, + /obj/item/clothing/under/lawyer/really_black/skirt = 3, + /obj/item/clothing/under/lawyer/blue = 3, + /obj/item/clothing/under/lawyer/blue/skirt = 3, /obj/item/clothing/under/lawyer/red = 3, - /obj/item/clothing/under/lawyer/bluesuit = 3, + /obj/item/clothing/under/lawyer/red/skirt = 3, + /obj/item/clothing/under/lawyer/black = 3, + /obj/item/clothing/under/lawyer/black/skirt = 3, /obj/item/clothing/suit/toggle/lawyer = 3, /obj/item/clothing/under/lawyer/purpsuit = 3, /obj/item/clothing/suit/toggle/lawyer/purple = 3, @@ -291,6 +315,7 @@ /obj/item/storage/backpack/cultpack = 2, /obj/item/clothing/accessory/pocketprotector/cosmetology = 2, /obj/item/clothing/under/rank/chaplain = 2, + /obj/item/clothing/under/rank/chaplain/skirt = 2, /obj/item/clothing/shoes/sneakers/black = 2, /obj/item/clothing/suit/nun = 2, /obj/item/clothing/head/nun_hood = 2, @@ -308,6 +333,7 @@ product_ads = "Our clothes are 0.5% more resistant to acid spills! Get yours now!" vend_reply = "Thank you for using the ChemDrobe!" products = list(/obj/item/clothing/under/rank/chemist = 3, + /obj/item/clothing/under/rank/chemist/skirt = 3, /obj/item/clothing/shoes/sneakers/white = 3, /obj/item/clothing/suit/toggle/labcoat/chemist = 3, /obj/item/storage/backpack/chemistry = 3, @@ -325,6 +351,7 @@ product_ads = "Perfect for the mad scientist in you!" vend_reply = "Thank you for using the GeneDrobe!" products = list(/obj/item/clothing/under/rank/geneticist = 3, + /obj/item/clothing/under/rank/geneticist/skirt = 3, /obj/item/clothing/shoes/sneakers/white = 3, /obj/item/clothing/suit/toggle/labcoat/genetics = 3, /obj/item/storage/backpack/genetics = 3, @@ -341,6 +368,7 @@ product_ads = " Viruses getting you down? Then upgrade to sterilized clothing today!" vend_reply = "Thank you for using the ViroDrobe" products = list(/obj/item/clothing/under/rank/virologist = 3, + /obj/item/clothing/under/rank/virologist/skirt = 3, /obj/item/clothing/shoes/sneakers/white = 3, /obj/item/clothing/suit/toggle/labcoat/virologist = 3, /obj/item/clothing/mask/surgical = 3, diff --git a/config/spaceRuinBlacklist.txt b/config/spaceRuinBlacklist.txt index cba9a01e73..deafa47969 100644 --- a/config/spaceRuinBlacklist.txt +++ b/config/spaceRuinBlacklist.txt @@ -49,3 +49,4 @@ #_maps/RandomRuins/SpaceRuins/bigape.dmm #_maps/RandomRuins/SpaceRuins/arcade.dmm #_maps/RandomRuins/SpaceRuins/spacehermit.dmm +#_maps/RandomRuins/SpaceRuins/advancedlab.dmm diff --git a/html/changelogs/AutoChangeLog-pr-8660.yml b/html/changelogs/AutoChangeLog-pr-8660.yml new file mode 100644 index 0000000000..710c4489ea --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8660.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - code_imp: "Changes some files to be better" diff --git a/html/changelogs/AutoChangeLog-pr-8673.yml b/html/changelogs/AutoChangeLog-pr-8673.yml new file mode 100644 index 0000000000..6ff2c7135c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8673.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - balance: "As all things are not" diff --git a/html/changelogs/AutoChangeLog-pr-8774.yml b/html/changelogs/AutoChangeLog-pr-8774.yml new file mode 100644 index 0000000000..7ba01cc6aa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8774.yml @@ -0,0 +1,4 @@ +author: "Sishen1542" +delete-after: True +changes: + - bugfix: "Removed the human check for cult conversion of captain/chaplain minds." diff --git a/html/changelogs/AutoChangeLog-pr-8795.yml b/html/changelogs/AutoChangeLog-pr-8795.yml new file mode 100644 index 0000000000..7fe2250a0b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8795.yml @@ -0,0 +1,7 @@ +author: "Sishen1542, original by @zxaber" +delete-after: True +changes: + - balance: "Utility mechs no longer automatically get beacons." + - balance: "Tracking beacons no longer delete themselves when EMPing a mech, and instead have a ten-second cooldown in-between EMPs. They also now do heavy EMP damage rather than light." + - balance: "Mechs that take EMP damage lose the use of their weapons and equipment temporarily. Movement and abilities are not effected." + - balance: "Mechs taking EMP damage no longer roll for a random malfunction." diff --git a/html/changelogs/AutoChangeLog-pr-8900.yml b/html/changelogs/AutoChangeLog-pr-8900.yml new file mode 100644 index 0000000000..cbb910c3d5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8900.yml @@ -0,0 +1,4 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "Abductor Replication Lab ruin and advanced tools" diff --git a/html/changelogs/AutoChangeLog-pr-8908.yml b/html/changelogs/AutoChangeLog-pr-8908.yml new file mode 100644 index 0000000000..d9cbd5abed --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8908.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - balance: "Improved the zelus flask to be more viable for bottle smashing than the average barman's selection." + - code_imp: "Very slight bottle smashing code clean up, stupid const vars." diff --git a/html/changelogs/AutoChangeLog-pr-8909.yml b/html/changelogs/AutoChangeLog-pr-8909.yml new file mode 100644 index 0000000000..bfb1470f71 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8909.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes krav maga gloves, wizard spells knockdowns." diff --git a/html/changelogs/AutoChangeLog-pr-8912.yml b/html/changelogs/AutoChangeLog-pr-8912.yml new file mode 100644 index 0000000000..5d5a7c38fc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8912.yml @@ -0,0 +1,6 @@ +author: "Ghommie (original PRs by ShizCalev and bobbahbrown)" +delete-after: True +changes: + - rscadd: "Headsets now dynamically show in their description how to speak on any channels they can use when held or worn." + - code_imp: "Radio channels names and keys now use defines." + - tweak: "The head arrival announcement will now be broadcast to the supply for the quartermaster." diff --git a/html/changelogs/AutoChangeLog-pr-8913.yml b/html/changelogs/AutoChangeLog-pr-8913.yml new file mode 100644 index 0000000000..ccac6aef16 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8913.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "Added new chairs" diff --git a/html/changelogs/AutoChangeLog-pr-8921.yml b/html/changelogs/AutoChangeLog-pr-8921.yml new file mode 100644 index 0000000000..9c1c456f7f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8921.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - admin: "Bugtesting zone upgrades for easy bug/game testing" diff --git a/html/changelogs/AutoChangeLog-pr-8926.yml b/html/changelogs/AutoChangeLog-pr-8926.yml new file mode 100644 index 0000000000..762318ab21 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8926.yml @@ -0,0 +1,4 @@ +author: "Fermis" +delete-after: True +changes: + - rscadd: "Added the secbat, a box to hold it and the ability to dispense it from the SecTech vendor." diff --git a/html/changelogs/AutoChangeLog-pr-8929.yml b/html/changelogs/AutoChangeLog-pr-8929.yml new file mode 100644 index 0000000000..4fed45f1d0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8929.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixing CX Shredder guns not accepting standard flechette mags." + - bugfix: "Fixing missing magpistol magazines icon states." diff --git a/html/changelogs/AutoChangeLog-pr-8931.yml b/html/changelogs/AutoChangeLog-pr-8931.yml new file mode 100644 index 0000000000..2bde1025db --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8931.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "more cargo to cargo" diff --git a/html/changelogs/AutoChangeLog-pr-8933.yml b/html/changelogs/AutoChangeLog-pr-8933.yml new file mode 100644 index 0000000000..09d318be08 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8933.yml @@ -0,0 +1,4 @@ +author: "BurgerBB" +delete-after: True +changes: + - balance: "Cloning no longer gives you positive mutations, but a chance for a negative one. Cloning has a chance to \"scramble\" your visual DNA." diff --git a/html/changelogs/AutoChangeLog-pr-8934.yml b/html/changelogs/AutoChangeLog-pr-8934.yml new file mode 100644 index 0000000000..e86e47a45f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8934.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "More loadout gear" diff --git a/html/changelogs/AutoChangeLog-pr-8939.yml b/html/changelogs/AutoChangeLog-pr-8939.yml new file mode 100644 index 0000000000..6041d66721 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8939.yml @@ -0,0 +1,9 @@ +author: "Ghommie" +delete-after: True +changes: + - rscadd: "The syndicate base's bathroom is now fitted with a shower, and a special towel." + - bugfix: "Fixed many issues with towels." + - tweak: "The dry people off with rags/towels action can only be done if the object is NOT moist with reagents now. Also cleans banana creaming." + - rscadd: "Towels deal more damage while soaked with reagents." + - rscadd: "You can now squeeze rags/towels with Alt-Click." + - rscdel: "deleted an old and crappier towel sprite that got in the way." diff --git a/html/changelogs/AutoChangeLog-pr-8942.yml b/html/changelogs/AutoChangeLog-pr-8942.yml new file mode 100644 index 0000000000..a1b80ba839 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8942.yml @@ -0,0 +1,4 @@ +author: "Chayse" +delete-after: True +changes: + - tweak: "Changed the Warden's compact combat shotgun to instead be a regular combat shotgun with a foldable stock and penalties for being folded." diff --git a/html/changelogs/AutoChangeLog-pr-8945.yml b/html/changelogs/AutoChangeLog-pr-8945.yml new file mode 100644 index 0000000000..afa9bdaa95 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8945.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes Pubby's disposal conveyor belts and lack of a second lawyer spawner." diff --git a/html/changelogs/AutoChangeLog-pr-8949.yml b/html/changelogs/AutoChangeLog-pr-8949.yml new file mode 100644 index 0000000000..83560d74f2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8949.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "Poojawa power creep" diff --git a/html/changelogs/AutoChangeLog-pr-8950.yml b/html/changelogs/AutoChangeLog-pr-8950.yml new file mode 100644 index 0000000000..62b90d2407 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8950.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "Not my work not my credit" diff --git a/html/changelogs/AutoChangeLog-pr-8952.yml b/html/changelogs/AutoChangeLog-pr-8952.yml new file mode 100644 index 0000000000..df2ff22d09 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8952.yml @@ -0,0 +1,4 @@ +author: "CdrCross" +delete-after: True +changes: + - rscadd: "Adds the ability for cloning consoles to read and write record lists to the circuit board, and provides a template for giving other machines local circuit board memory." diff --git a/html/changelogs/AutoChangeLog-pr-8953.yml b/html/changelogs/AutoChangeLog-pr-8953.yml new file mode 100644 index 0000000000..2128149556 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8953.yml @@ -0,0 +1,5 @@ +author: "Toriate" +delete-after: True +changes: + - rscadd: "RPD now has inhands" + - imageadd: "New sprites for RCDs and RPDs, inhands included" diff --git a/html/changelogs/AutoChangeLog-pr-8956.yml b/html/changelogs/AutoChangeLog-pr-8956.yml new file mode 100644 index 0000000000..d6d33b3bd2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8956.yml @@ -0,0 +1,4 @@ +author: "CameronWoof" +delete-after: True +changes: + - tweak: "Altered the icons for inventory backplates. Sleek! Stylish! New!" diff --git a/html/changelogs/AutoChangeLog-pr-8958.yml b/html/changelogs/AutoChangeLog-pr-8958.yml new file mode 100644 index 0000000000..a800b1b218 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8958.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "Emitter gun" diff --git a/html/changelogs/AutoChangeLog-pr-8959.yml b/html/changelogs/AutoChangeLog-pr-8959.yml new file mode 100644 index 0000000000..87ca24462e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8959.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "suit storage nulling anti magic item protection" diff --git a/html/changelogs/AutoChangeLog-pr-8964.yml b/html/changelogs/AutoChangeLog-pr-8964.yml new file mode 100644 index 0000000000..6675fecc50 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8964.yml @@ -0,0 +1,5 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - balance: "rebalanced steal goals restrictions" + - spellcheck: "fixed a few misleading goals" diff --git a/html/changelogs/AutoChangeLog-pr-8965.yml b/html/changelogs/AutoChangeLog-pr-8965.yml new file mode 100644 index 0000000000..138991e507 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8965.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "ports a fix" diff --git a/html/changelogs/AutoChangeLog-pr-8966.yml b/html/changelogs/AutoChangeLog-pr-8966.yml new file mode 100644 index 0000000000..2d63b8356e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8966.yml @@ -0,0 +1,4 @@ +author: "Poojawa" +delete-after: True +changes: + - imageadd: "RCL now show what color is currently in use" diff --git a/html/changelogs/AutoChangeLog-pr-8970.yml b/html/changelogs/AutoChangeLog-pr-8970.yml new file mode 100644 index 0000000000..304c9115dc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8970.yml @@ -0,0 +1,6 @@ +author: "original by @randolfthemeh and @twaticus, port by sishen1542" +delete-after: True +changes: + - rscadd: "jumpskirts" + - rscadd: "more jumpskirts" + - rscadd: "jumpskirt/suit prefs" diff --git a/html/changelogs/AutoChangeLog-pr-8971.yml b/html/changelogs/AutoChangeLog-pr-8971.yml new file mode 100644 index 0000000000..c5b5215ff9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8971.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - tweak: "slime people now enjoy eating toxic food and it will not disgust them" diff --git a/html/changelogs/AutoChangeLog-pr-8974.yml b/html/changelogs/AutoChangeLog-pr-8974.yml new file mode 100644 index 0000000000..b71dc88ecd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8974.yml @@ -0,0 +1,4 @@ +author: "EgoSumStultus" +delete-after: True +changes: + - bugfix: "Fixed blood chiller's inhand" diff --git a/html/changelogs/AutoChangeLog-pr-8976.yml b/html/changelogs/AutoChangeLog-pr-8976.yml new file mode 100644 index 0000000000..67e7bbc11a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8976.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "combat pushes will now properly stop targets from using firearms, and will disarm the firearm if performed a second time, and also slow down people by 15%, and won't push people on tables blocked by shutters or other dense object anymore." diff --git a/html/changelogs/AutoChangeLog-pr-8978.yml b/html/changelogs/AutoChangeLog-pr-8978.yml new file mode 100644 index 0000000000..56e3760e9c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8978.yml @@ -0,0 +1,4 @@ +author: "Yakumo Chen" +delete-after: True +changes: + - balance: "Made stealth implant boxes flimsier" diff --git a/html/changelogs/AutoChangeLog-pr-8979.yml b/html/changelogs/AutoChangeLog-pr-8979.yml new file mode 100644 index 0000000000..f826fcd681 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8979.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes CHECK_BITFIELD macro." diff --git a/html/changelogs/AutoChangeLog-pr-8980.yml b/html/changelogs/AutoChangeLog-pr-8980.yml new file mode 100644 index 0000000000..caba11ae69 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8980.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes hypovials being unable to transfer out liquids or be refilled by large dispensers like water tanks." + - bugfix: "Fixes chem-masters machineries not dispensing newly made pills inside loaded in pill bottles." diff --git a/html/changelogs/AutoChangeLog-pr-8982.yml b/html/changelogs/AutoChangeLog-pr-8982.yml new file mode 100644 index 0000000000..8599966d64 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8982.yml @@ -0,0 +1,6 @@ +author: "Ghommie (original PR by Skoglol)" +delete-after: True +changes: + - bugfix: "Mining bags will no longer drop ore into backpack." + - bugfix: "Mining bags in backpack no longer interferes with other mining bags." + - bugfix: "Fixes some storage size circumventions." diff --git a/html/changelogs/AutoChangeLog-pr-8984.yml b/html/changelogs/AutoChangeLog-pr-8984.yml new file mode 100644 index 0000000000..31c45cdbc6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8984.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - rscadd: "Stunswords now fit in the captain's sabre sheat." diff --git a/html/changelogs/AutoChangeLog-pr-8985.yml b/html/changelogs/AutoChangeLog-pr-8985.yml new file mode 100644 index 0000000000..37aaa4162d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8985.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - bugfix: "hos trenchcloak now properly has a sprite on digi characters" diff --git a/html/changelogs/AutoChangeLog-pr-8986.yml b/html/changelogs/AutoChangeLog-pr-8986.yml new file mode 100644 index 0000000000..810631f5f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8986.yml @@ -0,0 +1,6 @@ +author: "Ghommie" +delete-after: True +changes: + - rscadd: "reworked ninja's stealth mode. Increased invisibility, but engaging in combat, attacking or throwing things, bumping people will temporarily lower it." + - rscadd: "Ninja shoes are even stealthier." + - code_imp: "cleaned up some 2014 tier processing code horror." diff --git a/html/changelogs/AutoChangeLog-pr-8988.yml b/html/changelogs/AutoChangeLog-pr-8988.yml new file mode 100644 index 0000000000..9145d73c01 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8988.yml @@ -0,0 +1,5 @@ +author: "kiwedespars" +delete-after: True +changes: + - rscadd: "regenerative materia to hallucination sting" + - rscadd: "mindbreaker toxin as an actual chemical to hallucination sting" diff --git a/html/changelogs/AutoChangeLog-pr-8991.yml b/html/changelogs/AutoChangeLog-pr-8991.yml new file mode 100644 index 0000000000..138991e507 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8991.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "ports a fix" diff --git a/html/changelogs/AutoChangeLog-pr-8994.yml b/html/changelogs/AutoChangeLog-pr-8994.yml new file mode 100644 index 0000000000..a3a4fef0b7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8994.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - tweak: "the oxyloss fullscreen overlays now also take in consideration 1/5 of the user stamina loss." diff --git a/html/changelogs/AutoChangeLog-pr-8995.yml b/html/changelogs/AutoChangeLog-pr-8995.yml new file mode 100644 index 0000000000..76669d7821 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8995.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - rscadd: "When you're jogging, you will only slip on water if you have more than 20% staminaloss, for real this time." diff --git a/html/changelogs/AutoChangeLog-pr-8996.yml b/html/changelogs/AutoChangeLog-pr-8996.yml new file mode 100644 index 0000000000..7c631e3301 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8996.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - imageadd: "Different cuffs now come with different worn overlays instead of a generic one." diff --git a/html/changelogs/AutoChangeLog-pr-8998.yml b/html/changelogs/AutoChangeLog-pr-8998.yml new file mode 100644 index 0000000000..981e746fc9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8998.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "High luminosity eyes can now be properly deactivated and won't illuminate your surroundings again until turned back on." diff --git a/html/changelogs/AutoChangeLog-pr-8999.yml b/html/changelogs/AutoChangeLog-pr-8999.yml new file mode 100644 index 0000000000..182e3a8409 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-8999.yml @@ -0,0 +1,4 @@ +author: "BurgerBB" +delete-after: True +changes: + - balance: "Chestbursters no longer give and remove your brain. They just disembowel and kill you now." diff --git a/html/changelogs/AutoChangeLog-pr-9000.yml b/html/changelogs/AutoChangeLog-pr-9000.yml new file mode 100644 index 0000000000..3fa3e8946f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9000.yml @@ -0,0 +1,4 @@ +author: "EgoSumStultus" +delete-after: True +changes: + - bugfix: "FIXED SHIELF" diff --git a/html/changelogs/AutoChangeLog-pr-9001.yml b/html/changelogs/AutoChangeLog-pr-9001.yml new file mode 100644 index 0000000000..be2fd2b833 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9001.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - rscdel: "duplicate definition of hos and sec skirts" diff --git a/html/changelogs/AutoChangeLog-pr-9005.yml b/html/changelogs/AutoChangeLog-pr-9005.yml new file mode 100644 index 0000000000..d65017a00d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9005.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - bugfix: "QM rooms not getting Key Aunths" diff --git a/html/changelogs/AutoChangeLog-pr-9008.yml b/html/changelogs/AutoChangeLog-pr-9008.yml new file mode 100644 index 0000000000..0c73bc8ae9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9008.yml @@ -0,0 +1,4 @@ +author: "Linzolle" +delete-after: True +changes: + - bugfix: "Krav Maga leg sweep now works properly." diff --git a/html/changelogs/AutoChangeLog-pr-9009.yml b/html/changelogs/AutoChangeLog-pr-9009.yml new file mode 100644 index 0000000000..21cf0c8d85 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9009.yml @@ -0,0 +1,4 @@ +author: "BurgerBB" +delete-after: True +changes: + - bugfix: "Fixes WarOps miscalculating players." diff --git a/html/changelogs/AutoChangeLog-pr-9014.yml b/html/changelogs/AutoChangeLog-pr-9014.yml new file mode 100644 index 0000000000..f217b64afd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9014.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes freshly cloned people starting with undershirts. Fixes random characters possibly rolling with undergarments of the opposite gender (Doesn't affect preferences' freedom of choice)." diff --git a/html/changelogs/AutoChangeLog-pr-9018.yml b/html/changelogs/AutoChangeLog-pr-9018.yml new file mode 100644 index 0000000000..7acb63b426 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9018.yml @@ -0,0 +1,12 @@ +author: "Ghommie (original PRs by XDTM, optimumtact, Nichlas0010 and monster860)" +delete-after: True +changes: + - rscadd: "Added Quantum Keycards, devices that can link to a quantum pad, and can be used on any other quantum pad to teleport to its linked pad. +spellchecking: Renamed \"Bluespace Teleportation Tech\" tech node to \"Bluespace Travel\"." + - tweak: "Moved roasting sticks from the \"Bluespace Travel\" to \"Practical Bluespace\"." + - rscadd: "Spraying holy water on tiles will now prevent cult-based teleportation from using them as a destination point." + - tweak: "Quantum, wormhole and magic teleportation is no longer disrupted by bags of holding." + - bugfix: "You are now also blocked from teleporting IN to no-teleport areas, not just out of them." + - tweak: "Quantum teleportation now makes pretty rainbow sparks instead of the normal ones." + - bugfix: "Non-bluespace teleportation (spells etc.) no longer makes sparks." + - bugfix: "Fixed teleportation deleting mob spawners like golem shells and ashwalker eggs." diff --git a/html/changelogs/AutoChangeLog-pr-9019.yml b/html/changelogs/AutoChangeLog-pr-9019.yml new file mode 100644 index 0000000000..8006c134e3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9019.yml @@ -0,0 +1,6 @@ +author: "Ghommie" +delete-after: True +changes: + - balance: "MRE menu 3 has cuban nachos instead of a chili now." + - bugfix: "Removed the illustration overlay from MREs, looks pretty weird otherwise." + - rscadd: "MRE menu 4, vegetarian." diff --git a/html/changelogs/AutoChangeLog-pr-9021.yml b/html/changelogs/AutoChangeLog-pr-9021.yml new file mode 100644 index 0000000000..e8809f1d7e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9021.yml @@ -0,0 +1,4 @@ +author: "Ghommie (by Floyd / Qustinnus, Arathian)" +delete-after: True +changes: + - rscadd: "The robotocist now has robe to show his love for toasters" diff --git a/html/changelogs/AutoChangeLog-pr-9022.yml b/html/changelogs/AutoChangeLog-pr-9022.yml new file mode 100644 index 0000000000..4fb48506e4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9022.yml @@ -0,0 +1,4 @@ +author: "Ghommie (by nemvar)" +delete-after: True +changes: + - tweak: "Dwarfs are now more robust." diff --git a/html/changelogs/AutoChangeLog-pr-9024.yml b/html/changelogs/AutoChangeLog-pr-9024.yml new file mode 100644 index 0000000000..1d75959c79 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9024.yml @@ -0,0 +1,4 @@ +author: "Ghommie (by Arkatos)" +delete-after: True +changes: + - bugfix: "Fixed an issue with a Lizardwine drink crafting, where a final product would contain unwated 100u of Ethanol." diff --git a/html/changelogs/AutoChangeLog-pr-9026.yml b/html/changelogs/AutoChangeLog-pr-9026.yml new file mode 100644 index 0000000000..bf8ce9efbe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9026.yml @@ -0,0 +1,4 @@ +author: "BurgerBB" +delete-after: True +changes: + - rscadd: "The alert level is displayed at the job selection screen." diff --git a/html/changelogs/AutoChangeLog-pr-9030.yml b/html/changelogs/AutoChangeLog-pr-9030.yml new file mode 100644 index 0000000000..94c797433a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9030.yml @@ -0,0 +1,4 @@ +author: "CameronWoof" +delete-after: True +changes: + - bugfix: "Attaching a beaker that contains water to an IV stand no longer causes a visual glitch" diff --git a/html/changelogs/AutoChangeLog-pr-9033.yml b/html/changelogs/AutoChangeLog-pr-9033.yml new file mode 100644 index 0000000000..3e69bc9486 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9033.yml @@ -0,0 +1,4 @@ +author: "EgoSumStultus" +delete-after: True +changes: + - bugfix: "fixed magpistol magazine sprites" diff --git a/html/changelogs/AutoChangeLog-pr-9036.yml b/html/changelogs/AutoChangeLog-pr-9036.yml new file mode 100644 index 0000000000..afd2882fc3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9036.yml @@ -0,0 +1,5 @@ +author: "Linzolle" +delete-after: True +changes: + - rscadd: "shoes can have a different icon used for their item and mob icons" + - bugfix: "combat gloves plus having no mob icon" diff --git a/html/changelogs/AutoChangeLog-pr-9040.yml b/html/changelogs/AutoChangeLog-pr-9040.yml new file mode 100644 index 0000000000..33958a2ece --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9040.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - rscadd: "new books/cooking" diff --git a/html/changelogs/AutoChangeLog-pr-9042.yml b/html/changelogs/AutoChangeLog-pr-9042.yml new file mode 100644 index 0000000000..38c4006383 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9042.yml @@ -0,0 +1,4 @@ +author: "EgoSumStultus" +delete-after: True +changes: + - rscadd: "Added the Femur Breaker" diff --git a/html/changelogs/AutoChangeLog-pr-9043.yml b/html/changelogs/AutoChangeLog-pr-9043.yml new file mode 100644 index 0000000000..14c9331e5b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9043.yml @@ -0,0 +1,7 @@ +author: "chef" +delete-after: True +changes: + - rscadd: "Added main hallway approach to monastery" + - rscadd: "Added Maintenance hallway approach, with some maint loot" + - tweak: "moved the docking arm for the white ship" + - tweak: "changed placement of some grills and windows" diff --git a/html/changelogs/AutoChangeLog-pr-9044.yml b/html/changelogs/AutoChangeLog-pr-9044.yml new file mode 100644 index 0000000000..6133ea45e9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9044.yml @@ -0,0 +1,7 @@ +author: "Original by Citinited, port by Sishen1542" +delete-after: True +changes: + - rscadd: "You can now use an airlock electronics on a locker to add a lock, and can screwdriver an unlocked locker to remove its lock." + - rscadd: "You can now remove the locks on broken or emagged lockers." + - tweak: "Removing the lock from a personal locker now wipes that locker's ID details." + - tweak: "Broken lockers have had their appearance changed." diff --git a/html/changelogs/AutoChangeLog-pr-9045.yml b/html/changelogs/AutoChangeLog-pr-9045.yml new file mode 100644 index 0000000000..8917707ae3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9045.yml @@ -0,0 +1,8 @@ +author: "CameronWoof" +delete-after: True +changes: + - tweak: "Fluid-producing sexual organs no longer start full" + - tweak: "Sexual organ fluid capacity decreased from 50 to 15" + - tweak: "Sexual organ production rate decreased from 5u to 0.035u per two seconds." + - tweak: "Sexual fluid decals no longer contain reagents" + - tweak: "Sexual fluids cannot by synthesized (e.g., by the Odysseus)" diff --git a/html/changelogs/AutoChangeLog-pr-9046.yml b/html/changelogs/AutoChangeLog-pr-9046.yml new file mode 100644 index 0000000000..24e7035a88 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9046.yml @@ -0,0 +1,4 @@ +author: "Sishen1542" +delete-after: True +changes: + - tweak: "density = 0" diff --git a/html/changelogs/AutoChangeLog-pr-9050.yml b/html/changelogs/AutoChangeLog-pr-9050.yml new file mode 100644 index 0000000000..3b12a12f17 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9050.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "fixes a few bad touchs on combat mode pushing." diff --git a/html/changelogs/AutoChangeLog-pr-9061.yml b/html/changelogs/AutoChangeLog-pr-9061.yml new file mode 100644 index 0000000000..4fc9d10ba5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9061.yml @@ -0,0 +1,5 @@ +author: "deathride58" +delete-after: True +changes: + - tweak: "The femur breaker now uses `*scream` instead of forced speech. This means that the femur breaker will no longer spam deadchat with \"AAAAAAAAAHHHHHHHHHH!!\"" + - tweak: "The femur breaker will now guarantee that the victim falls into crit, which will make it harder to perform torture scenes with it since the victim can just succumb." diff --git a/html/changelogs/AutoChangeLog-pr-9069.yml b/html/changelogs/AutoChangeLog-pr-9069.yml new file mode 100644 index 0000000000..0439515dd3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9069.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixes clock cult Abscond scripture not dragging pulled mobs into Reebe. Also fixes blood cult tele runes teleporting you from the source turf to the source turf." diff --git a/html/changelogs/AutoChangeLog-pr-9071.yml b/html/changelogs/AutoChangeLog-pr-9071.yml new file mode 100644 index 0000000000..40ae43867f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9071.yml @@ -0,0 +1,4 @@ +author: "Yakumo Chen" +delete-after: True +changes: + - balance: "Autocloning now requires tier 4 parts" diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 29086033c8..e13ce10347 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mecha/mecha_mouse-disable.dmi b/icons/mecha/mecha_mouse-disable.dmi new file mode 100644 index 0000000000..48924c58c2 Binary files /dev/null and b/icons/mecha/mecha_mouse-disable.dmi differ diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi index c50351eef3..21238366f1 100644 Binary files a/icons/mob/alien.dmi and b/icons/mob/alien.dmi differ diff --git a/icons/mob/alienqueen.dmi b/icons/mob/alienqueen.dmi index 115bd17cb0..1176f43edd 100644 Binary files a/icons/mob/alienqueen.dmi and b/icons/mob/alienqueen.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index c98ca98c42..2a85f8a422 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index f1e2f4e85a..f5ffd262f0 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/mob/custom_w.dmi b/icons/mob/custom_w.dmi index d974d0ca6c..c22ff7f159 100644 Binary files a/icons/mob/custom_w.dmi and b/icons/mob/custom_w.dmi differ diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index aad4718cbd..6cce82b5f7 100644 Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 3ca7290a0f..ea13294dfe 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/inhands/equipment/security_lefthand.dmi b/icons/mob/inhands/equipment/security_lefthand.dmi index 6ccdfba3fc..01f8e2ca27 100644 Binary files a/icons/mob/inhands/equipment/security_lefthand.dmi and b/icons/mob/inhands/equipment/security_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/security_righthand.dmi b/icons/mob/inhands/equipment/security_righthand.dmi index e3f930a13e..d2126fe22f 100644 Binary files a/icons/mob/inhands/equipment/security_righthand.dmi and b/icons/mob/inhands/equipment/security_righthand.dmi differ diff --git a/icons/mob/inhands/equipment/tools_lefthand.dmi b/icons/mob/inhands/equipment/tools_lefthand.dmi index 5b497afe53..72b994328d 100644 Binary files a/icons/mob/inhands/equipment/tools_lefthand.dmi and b/icons/mob/inhands/equipment/tools_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/tools_righthand.dmi b/icons/mob/inhands/equipment/tools_righthand.dmi index dbed4c43d2..ef1001c438 100644 Binary files a/icons/mob/inhands/equipment/tools_righthand.dmi and b/icons/mob/inhands/equipment/tools_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi index f6ac6ca499..8978d17237 100644 Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi index 504121feba..3f8a876d43 100644 Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 1649706279..9beedfb417 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/mob/restraints.dmi b/icons/mob/restraints.dmi new file mode 100644 index 0000000000..fa7eb43aa3 Binary files /dev/null and b/icons/mob/restraints.dmi differ diff --git a/icons/mob/screen_gen.dmi b/icons/mob/screen_gen.dmi index 77450b6ac3..9ce97dfd6d 100644 Binary files a/icons/mob/screen_gen.dmi and b/icons/mob/screen_gen.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 835f3448b4..2a777b9af5 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 3d281606de..fe0a8a5c62 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/advancedtools.dmi b/icons/obj/advancedtools.dmi new file mode 100644 index 0000000000..974202dd58 Binary files /dev/null and b/icons/obj/advancedtools.dmi differ diff --git a/icons/obj/chairs.dmi b/icons/obj/chairs.dmi index 3754ff052c..9e8fb64aba 100644 Binary files a/icons/obj/chairs.dmi and b/icons/obj/chairs.dmi differ diff --git a/icons/obj/clothing/belt_overlays.dmi b/icons/obj/clothing/belt_overlays.dmi index d7bf32d7b1..717937c034 100644 Binary files a/icons/obj/clothing/belt_overlays.dmi and b/icons/obj/clothing/belt_overlays.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 34c716f5d8..5290c43073 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index e7bec8dbe4..2cdf97bd37 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 568adb69b3..4b7b67b39f 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 3e3a1cefcb..315086b4d7 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/custom.dmi b/icons/obj/custom.dmi index eb4f5813c8..bf976060c7 100644 Binary files a/icons/obj/custom.dmi and b/icons/obj/custom.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 55c33e5e83..032b0c27ad 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/femur_breaker.dmi b/icons/obj/femur_breaker.dmi new file mode 100644 index 0000000000..4b36f4b2b8 Binary files /dev/null and b/icons/obj/femur_breaker.dmi differ diff --git a/icons/obj/food/piecake.dmi b/icons/obj/food/piecake.dmi index 57dda21757..1bf5b7ee96 100644 Binary files a/icons/obj/food/piecake.dmi and b/icons/obj/food/piecake.dmi differ diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index 4dec451008..a6d5c8a5e1 100644 Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 7d44d35f55..0ac8ccf566 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index 159805d4ce..8788567b36 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ diff --git a/icons/obj/iv_drip.dmi b/icons/obj/iv_drip.dmi index 016513245e..f530688da7 100644 Binary files a/icons/obj/iv_drip.dmi and b/icons/obj/iv_drip.dmi differ diff --git a/icons/obj/library.dmi b/icons/obj/library.dmi index 140f6a4d9e..f28b8be5c5 100644 Binary files a/icons/obj/library.dmi and b/icons/obj/library.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 2a6ec3955a..066842f089 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index cfb36bb3ae..c983201d5f 100644 Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ diff --git a/modular_citadel/code/game/objects/items/handcuffs.dm b/modular_citadel/code/game/objects/items/handcuffs.dm deleted file mode 100644 index ed5e8a191e..0000000000 --- a/modular_citadel/code/game/objects/items/handcuffs.dm +++ /dev/null @@ -1,5 +0,0 @@ -/obj/item/restraints/handcuffs/fake/kinky - name = "kinky handcuffs" - desc = "Fake handcuffs meant for erotic roleplay." - icon = 'modular_citadel/icons/obj/items_and_weapons.dmi' - icon_state = "handcuffgag" diff --git a/modular_citadel/code/game/objects/items/stunsword.dm b/modular_citadel/code/game/objects/items/stunsword.dm index 1262b0018a..7a5398f7d2 100644 --- a/modular_citadel/code/game/objects/items/stunsword.dm +++ b/modular_citadel/code/game/objects/items/stunsword.dm @@ -7,6 +7,14 @@ lefthand_file = 'modular_citadel/icons/mob/inhands/stunsword_left.dmi' righthand_file = 'modular_citadel/icons/mob/inhands/stunsword_right.dmi' +/obj/item/melee/baton/stunsword/get_belt_overlay() + if(istype(loc, /obj/item/storage/belt/sabre)) + return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "stunsword") + return ..() + +/obj/item/melee/baton/stunsword/get_worn_belt_overlay(icon_file) + return mutable_appearance(icon_file, "-stunsword") + /obj/item/ssword_kit name = "stunsword kit" desc = "a modkit for making a stunbaton into a stunsword" diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm index 3545c96a50..b85f466035 100644 --- a/modular_citadel/code/modules/arousal/genitals.dm +++ b/modular_citadel/code/modules/arousal/genitals.dm @@ -11,7 +11,7 @@ var/fluid_id = null var/fluid_max_volume = 50 var/fluid_efficiency = 1 - var/fluid_rate = 1 + var/fluid_rate = CUM_RATE var/fluid_mult = 1 var/aroused_state = FALSE //Boolean used in icon_state strings var/aroused_amount = 50 //This is a num from 0 to 100 for arousal percentage for when to use arousal state icons. @@ -117,9 +117,15 @@ generate_fluid() /obj/item/organ/genital/proc/generate_fluid() + var/amount = fluid_rate + if(!reagents.total_volume && amount < 0.1) // Apparently, 0.015 gets rounded down to zero and no reagents are created if we don't start it with 0.1 in the tank. + amount += 0.1 + var/multiplier = fluid_mult + if(reagents.total_volume >= 5) + multiplier *= 0.5 if(reagents.total_volume < reagents.maximum_volume) reagents.isolate_reagent(fluid_id)//remove old reagents if it changed and just clean up generally - reagents.add_reagent(fluid_id, (fluid_mult * fluid_rate))//generate the cum + reagents.add_reagent(fluid_id, (amount * multiplier))//generate the cum return TRUE return FALSE diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm index 3c4ce225f4..9dfe811571 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/modular_citadel/code/modules/arousal/organs/womb.dm @@ -7,4 +7,4 @@ slot = ORGAN_SLOT_WOMB genital_flags = GENITAL_INTERNAL|GENITAL_FUID_PRODUCTION fluid_id = "femcum" - linked_organ_slot = ORGAN_SLOT_VAGINA \ No newline at end of file + linked_organ_slot = ORGAN_SLOT_VAGINA diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index 90172bbf43..e3dbbbd490 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -226,7 +226,7 @@ /datum/gear/darksabre name = "Dark Sabre" category = SLOT_IN_BACKPACK - path = /obj/item/toy/sword/darksabre + path = /obj/item/toy/darksabre ckeywhitelist = list("inferno707") datum/gear/darksabresheath @@ -434,3 +434,11 @@ datum/gear/darksabresheath category = SLOT_NECK path = /obj/item/bedsheet/captain ckeywhitelist = list("tikibomb") + +/datum/gear/borgplush + name = "Robot Plush" + category = SLOT_IN_BACKPACK + /obj/item/toy/plush/borgplushie + ckeywhitelist = list("nicholaiavenicci") + + diff --git a/modular_citadel/code/modules/client/loadout/backpack.dm b/modular_citadel/code/modules/client/loadout/backpack.dm index 6fa597565f..c2713b49be 100644 --- a/modular_citadel/code/modules/client/loadout/backpack.dm +++ b/modular_citadel/code/modules/client/loadout/backpack.dm @@ -23,11 +23,6 @@ category = SLOT_IN_BACKPACK path = /obj/item/toy/plush/lampplushie -/datum/gear/plushrng - name = "Random plushie" - category = SLOT_IN_BACKPACK - path = /obj/item/toy/plush/random - /datum/gear/tennis name = "Classic Tennis Ball" category = SLOT_IN_BACKPACK @@ -84,8 +79,24 @@ path = /obj/item/toy/katana cost = 3 -//datum/gear/lumeyes -// name = "Luminescent eye auto surgeon" -// category = SLOT_IN_BACKPACK -// path = /obj/item/autosurgeon/gloweyes -// cost = 4 +/datum/gear/box + name = "Spare box" + category = SLOT_IN_BACKPACK + path = /obj/item/storage/box + cost = 2 + +/datum/gear/crowbar + name = "Pocket Crowbar" + category = SLOT_IN_BACKPACK + path = /obj/item/crowbar + cost = 2 + +/datum/gear/tapeplayer + name = "Taperecorder" + category = SLOT_IN_BACKPACK + path = /obj/item/taperecorder + +/datum/gear/tape + name = "Spare cassette tape" + category = SLOT_IN_BACKPACK + path = /obj/item/tape/random \ No newline at end of file diff --git a/modular_citadel/code/modules/clothing/under/trek_under.dm b/modular_citadel/code/modules/clothing/under/trek_under.dm index 8e2b94372d..a60f7653c5 100644 --- a/modular_citadel/code/modules/clothing/under/trek_under.dm +++ b/modular_citadel/code/modules/clothing/under/trek_under.dm @@ -5,7 +5,8 @@ *////////////////////////////////////////////////////////////////////////////////// // <3 Nienhaus && Joan. // I made the Voy and DS9 stuff tho. - Poojy - +// Armor lists for even Heads of Staff is Nulled out do round start armor as well most armor going onto the suit itself rather then a armor slot - Trilby +/////////////////////////////////////////////////////////////////////////////////// /obj/item/clothing/under/rank/trek @@ -22,7 +23,7 @@ desc = "The uniform worn by command officers in the mid 2260s." icon_state = "trek_command" item_state = "trek_command" - armor = list("melee" = 10, "bullet" = 10, "laser" = 10,"energy" = 10, "bomb" = 0, "bio" = 10, "rad" = 10, "fire" = 0, "acid" = 0) // Considering only staff heads get to pick it + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) /obj/item/clothing/under/rank/trek/engsec name = "Operations Uniform" @@ -104,7 +105,7 @@ /obj/item/reagent_containers/glass/bottle/vial,/obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle, /obj/item/restraints/handcuffs,/obj/item/hypospray ) - armor = list("melee" = 10, "bullet" = 5, "laser" = 5,"energy" = 5, "bomb" = 5, "bio" = 5, "rad" = 10, "fire" = 10, "acid" = 0) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) /obj/item/clothing/suit/storage/trek/ds9/admiral // Only for adminuz name = "Admiral Overcoat" @@ -135,7 +136,6 @@ /obj/item/clothing/suit/storage/fluff/fedcoat name = "Federation Uniform Jacket" desc = "A uniform jacket from the United Federation. Set phasers to awesome." - icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' icon_state = "fedcoat" @@ -160,7 +160,7 @@ /obj/item/reagent_containers/glass/beaker, /obj/item/storage/pill_bottle, /obj/item/taperecorder) - armor = list("melee" = 10, "bullet" = 5, "laser" = 5,"energy" = 5, "bomb" = 5, "bio" = 5, "rad" = 10, "fire" = 10, "acid" = 0) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) var/unbuttoned = 0 verb/toggle() @@ -214,7 +214,7 @@ /obj/item/reagent_containers/glass/bottle/vial,/obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill,/obj/item/storage/pill_bottle, /obj/item/restraints/handcuffs,/obj/item/hypospray ) - armor = list("melee" = 10, "bullet" = 5, "laser" = 5,"energy" = 5, "bomb" = 5, "bio" = 5, "rad" = 10, "fire" = 10, "acid" = 0) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) //Variants /obj/item/clothing/suit/storage/fluff/modernfedcoat/medsci @@ -231,6 +231,7 @@ /obj/item/clothing/head/caphat/formal/fedcover name = "Federation Officer's Cap" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) desc = "An officer's cap that demands discipline from the one who wears it." icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' icon_state = "fedcapofficer" diff --git a/modular_citadel/code/modules/clothing/under/under.dm b/modular_citadel/code/modules/clothing/under/under.dm index 1796df01be..dcc6323f62 100644 --- a/modular_citadel/code/modules/clothing/under/under.dm +++ b/modular_citadel/code/modules/clothing/under/under.dm @@ -5,26 +5,6 @@ *////////////////////////////////////////////////////////////////////////////////// -/obj/item/clothing/under/rank/security/skirt - name = "security skirt" - desc = "A tactical security skirt for officers complete with Nanotrasen belt buckle." - icon = 'modular_citadel/icons/obj/clothing/cit_clothes.dmi' - icon_state = "secskirt" - alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - item_state = "r_suit" - item_color = "secskirt" - body_parts_covered = CHEST|GROIN|ARMS - -/obj/item/clothing/under/rank/head_of_security/skirt - name = "head of security's skirt" - desc = "A security skirt decorated for those few with the dedication to achieve the position of Head of Security." - icon = 'modular_citadel/icons/obj/clothing/cit_clothes.dmi' - icon_state = "hosskirt" - alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - item_state = "gy_suit" - item_color = "hosskirt" - body_parts_covered = CHEST|GROIN|ARMS - /obj/item/clothing/under/corporateuniform name = "corporate uniform" desc = "A comfortable, tight fitting jumpsuit made of premium materials. Not space-proof." diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index 0ce4fbdd78..ece673587f 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -49,7 +49,7 @@ item_color = "steele" medaltype = "medal-silver" -/obj/item/toy/sword/darksabre +/obj/item/toy/darksabre name = "Kiara's Sabre" desc = "This blade looks as dangerous as its owner." icon = 'icons/obj/custom.dmi' @@ -58,9 +58,13 @@ item_state = "darksabre" lefthand_file = 'modular_citadel/icons/mob/inhands/stunsword_left.dmi' righthand_file = 'modular_citadel/icons/mob/inhands/stunsword_right.dmi' - w_class = WEIGHT_CLASS_SMALL attack_verb = list("attacked", "struck", "hit") +/obj/item/toy/darksabre/get_belt_overlay() + return mutable_appearance('icons/obj/custom.dmi', "darksheath-darksabre") + +/obj/item/toy/darksabre/get_worn_belt_overlay(icon_file) + return mutable_appearance(icon_file, "darksheath-darksabre") /obj/item/storage/belt/sabre/darksabre name = "Ornate Sheathe" @@ -69,32 +73,8 @@ alternate_worn_icon = 'icons/mob/custom_w.dmi' icon_state = "darksheath" item_state = "darksheath" - w_class = WEIGHT_CLASS_BULKY - -/obj/item/storage/belt/sabre/darksabre/ComponentInitialize() - . = ..() - GET_COMPONENT(STR, /datum/component/storage) - STR.max_items = 1 - STR.rustle_sound = FALSE - STR.max_w_class = WEIGHT_CLASS_BULKY - STR.can_hold = typecacheof(list( - /obj/item/toy/sword/darksabre - )) - -/obj/item/storage/belt/sabre/darksabre/update_icon() - icon_state = "darksheath" - item_state = "darksheath" - if(contents.len) - icon_state += "-darksabre" - item_state += "-darksabre" - if(loc && isliving(loc)) - var/mob/living/L = loc - L.regenerate_icons() - ..() - -/obj/item/storage/belt/sabre/darksabre/PopulateContents() - new /obj/item/toy/sword/darksabre(src) - update_icon() + fitting_swords = list(/obj/item/toy/darksabre) + starting_sword = /obj/item/toy/darksabre /obj/item/clothing/suit/armor/vest/darkcarapace name = "Dark Armor" diff --git a/modular_citadel/code/modules/jobs/job_types/captain.dm b/modular_citadel/code/modules/jobs/job_types/captain.dm index 674cd9d09e..7135e86507 100644 --- a/modular_citadel/code/modules/jobs/job_types/captain.dm +++ b/modular_citadel/code/modules/jobs/job_types/captain.dm @@ -4,7 +4,6 @@ /datum/job/hop minimal_player_age = 20 - head_announce = list("Service") exp_type_department = EXP_TYPE_SERVICE access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS, diff --git a/modular_citadel/code/modules/mob/cit_emotes.dm b/modular_citadel/code/modules/mob/cit_emotes.dm index aff1739ae4..a34b7b0526 100644 --- a/modular_citadel/code/modules/mob/cit_emotes.dm +++ b/modular_citadel/code/modules/mob/cit_emotes.dm @@ -185,22 +185,6 @@ emote_type = EMOTE_AUDIBLE restraint_check = TRUE - - -/datum/emote/living/dab/run_emote(mob/living/user, params) - if (ishuman(user)) - var/def_zone = BODY_ZONE_CHEST - var/luck = (rand(1,100)) - if(luck >= 65) - user.adjustStaminaLoss(70) - if(luck >= 80) - def_zone = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM) - user.apply_damage(20, BRUTE, def_zone) - if(luck >= 95) - user.adjustBrainLoss(100) - . = ..() - - /datum/emote/living/mothsqueak key = "msqueak" key_third_person = "lets out a tiny squeak" diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species.dm b/modular_citadel/code/modules/mob/living/carbon/human/species.dm index fcc60fbe81..1c7456a8d8 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species.dm @@ -80,10 +80,23 @@ else target.Move(target_shove_turf, shove_dir) if(get_turf(target) == target_oldturf) - target_table = locate(/obj/structure/table) in target_shove_turf.contents - shove_blocked = TRUE + if(target_shove_turf.density) + shove_blocked = TRUE + else + var/thoushallnotpass = FALSE + for(var/obj/O in target_shove_turf) + if(istype(O, /obj/structure/table)) + target_table = O + else if(!O.CanPass(src, target_shove_turf)) + shove_blocked = TRUE + thoushallnotpass = TRUE + if(thoushallnotpass) + target_table = null - if(shove_blocked && !target.is_shove_knockdown_blocked()) + if(target.is_shove_knockdown_blocked()) + return + + if(shove_blocked || target_table) var/directional_blocked = FALSE if(shove_dir in GLOB.cardinals) //Directional checks to make sure that we're not shoving through a windoor or something like that var/target_turf = get_turf(target) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 0e6c12053a..efcbda5065 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -15,7 +15,6 @@ say_mod = "says" hair_color = "mutcolor" hair_alpha = 160 //a notch brighter so it blends better. - liked_food = MEAT coldmod = 3 heatmod = 1 burnmod = 1 diff --git a/modular_citadel/code/modules/mob/living/status_procs.dm b/modular_citadel/code/modules/mob/living/status_procs.dm deleted file mode 100644 index 851c7438a7..0000000000 --- a/modular_citadel/code/modules/mob/living/status_procs.dm +++ /dev/null @@ -1,10 +0,0 @@ -/mob/living/Knockdown(amount, updating = TRUE, ignore_canknockdown = FALSE, override_hardstun, override_stamdmg) //Can't go below remaining duration - if(((status_flags & CANKNOCKDOWN) && !HAS_TRAIT(src, TRAIT_STUNIMMUNE)) || ignore_canknockdown) - if(absorb_stun(isnull(override_hardstun)? amount : override_hardstun, ignore_canknockdown)) - return - var/datum/status_effect/incapacitating/knockdown/K = IsKnockdown() - if(K) - K.duration = max(world.time + (isnull(override_hardstun)? amount : override_hardstun), K.duration) - else if((amount || override_hardstun) > 0) - K = apply_status_effect(STATUS_EFFECT_KNOCKDOWN, amount, updating, override_hardstun, override_stamdmg) - return K diff --git a/modular_citadel/code/modules/projectiles/gun.dm b/modular_citadel/code/modules/projectiles/gun.dm index ea8af7c74c..317f68b4c4 100644 --- a/modular_citadel/code/modules/projectiles/gun.dm +++ b/modular_citadel/code/modules/projectiles/gun.dm @@ -9,13 +9,3 @@ return 0 else return ..() - -/obj/item/gun/proc/getinaccuracy(mob/living/user) - if(!iscarbon(user)) - return 0 - else - var/mob/living/carbon/holdingdude = user - if(istype(holdingdude) && holdingdude.combatmode) - return max((holdingdude.lastdirchange + weapon_weight * 25) - world.time,0) - else - return weapon_weight * 25 diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/flechette.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/flechette.dm deleted file mode 100644 index f70ec76f04..0000000000 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/flechette.dm +++ /dev/null @@ -1,117 +0,0 @@ -//////Flechette Launcher////// - -///projectiles/// - -/obj/item/projectile/bullet/cflechetteap //shreds armor - name = "flechette (armor piercing)" - damage = 8 - armour_penetration = 80 - -/obj/item/projectile/bullet/cflechettes //shreds flesh and forces bleeding - name = "flechette (serrated)" - damage = 15 - dismemberment = 10 - armour_penetration = -80 - -/obj/item/projectile/bullet/cflechettes/on_hit(atom/target, blocked = FALSE) - if((blocked != 100) && iscarbon(target)) - var/mob/living/carbon/C = target - C.bleed(10) - return ..() - -///ammo casings (CASELESS AMMO CASINGS WOOOOOOOO)/// - -/obj/item/ammo_casing/caseless/flechetteap - name = "flechette (armor piercing)" - desc = "A flechette made with a tungsten alloy." - projectile_type = /obj/item/projectile/bullet/cflechetteap - caliber = "flechette" - throwforce = 1 - throw_speed = 3 - -/obj/item/ammo_casing/caseless/flechettes - name = "flechette (serrated)" - desc = "A serrated flechette made of a special alloy intended to deform drastically upon penetration of human flesh." - projectile_type = /obj/item/projectile/bullet/cflechettes - caliber = "flechette" - throwforce = 2 - throw_speed = 3 - embedding = list("embedded_pain_multiplier" = 0, "embed_chance" = 40, "embedded_fall_chance" = 10) - -///magazine/// - -/obj/item/ammo_box/magazine/flechette - name = "flechette magazine (armor piercing)" - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "flechettemag" - ammo_type = /obj/item/ammo_casing/caseless/flechetteap - caliber = "flechette" - max_ammo = 40 - multiple_sprites = 2 - -/obj/item/ammo_box/magazine/flechette/s - name = "flechette magazine (serrated)" - ammo_type = /obj/item/ammo_casing/caseless/flechettes - -///the gun itself/// - -/obj/item/gun/ballistic/automatic/flechette - name = "\improper CX Flechette Launcher" - desc = "A flechette launching machine pistol with an unconventional bullpup frame." - icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "flechettegun" - item_state = "gun" - w_class = WEIGHT_CLASS_NORMAL - slot_flags = 0 - /obj/item/firing_pin/implant/pindicate - mag_type = /obj/item/ammo_box/magazine/flechette/ - fire_sound = 'sound/weapons/gunshot_smg.ogg' - can_suppress = 0 - burst_size = 5 - fire_delay = 1 - casing_ejector = 0 - spread = 10 - recoil = 0.05 - -/obj/item/gun/ballistic/automatic/flechette/update_icon() - ..() - if(magazine) - cut_overlays() - add_overlay("flechettegun-magazine") - else - cut_overlays() - icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" - -///unique variant/// - -/obj/item/projectile/bullet/cflechetteshredder - name = "flechette (shredder)" - damage = 5 - dismemberment = 40 - -/obj/item/ammo_casing/caseless/flechetteshredder - name = "flechette (shredder)" - desc = "A serrated flechette made of a special alloy that forms a monofilament edge." - projectile_type = /obj/item/projectile/bullet/cflechettes - -/obj/item/ammo_box/magazine/flechette/shredder - name = "flechette magazine (shredder)" - icon_state = "shreddermag" - ammo_type = /obj/item/ammo_casing/caseless/flechetteshredder - -/obj/item/gun/ballistic/automatic/flechette/shredder - name = "\improper CX Shredder" - desc = "A flechette launching machine pistol made of ultra-light CFRP optimized for firing serrated monofillament flechettes." - w_class = WEIGHT_CLASS_SMALL - mag_type = /obj/item/ammo_box/magazine/flechette/shredder - spread = 15 - recoil = 0.1 - -/obj/item/gun/ballistic/automatic/flechette/shredder/update_icon() - ..() - if(magazine) - cut_overlays() - add_overlay("shreddergun-magazine") - else - cut_overlays() - icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm index b3af722332..70d3bee5af 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm @@ -86,7 +86,7 @@ /obj/item/ammo_box/magazine/mmag/small name = "magpistol magazine (non-lethal disabler)" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "nlmagmag" + icon_state = "smallmagmag" ammo_type = /obj/item/ammo_casing/caseless/anlmags caliber = "mags" max_ammo = 15 diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm index 8d08937f55..8786eb6dc9 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm @@ -56,7 +56,7 @@ /obj/item/ammo_box/magazine/mmag_e/small name = "magpistol magazine (non-lethal disabler)" icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi' - icon_state = "nlmagmag" + icon_state = "smallmagmag" ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmags caliber = "mag_e" max_ammo = 16 diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm index 3df77c4951..1e0e0afc87 100644 --- a/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm +++ b/modular_citadel/code/modules/projectiles/guns/ballistic/rifles.dm @@ -123,8 +123,8 @@ item_state = "gun" w_class = WEIGHT_CLASS_NORMAL slot_flags = 0 - /obj/item/firing_pin/implant/pindicate - mag_type = /obj/item/ammo_box/magazine/flechette/ + pin = /obj/item/firing_pin/implant/pindicate + mag_type = /obj/item/ammo_box/magazine/flechette fire_sound = 'sound/weapons/gunshot_smg.ogg' can_suppress = 0 burst_size = 5 @@ -134,12 +134,9 @@ recoil = 0.05 /obj/item/gun/ballistic/automatic/flechette/update_icon() - ..() + cut_overlays() if(magazine) - cut_overlays() add_overlay("flechettegun-magazine") - else - cut_overlays() icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" ///unique variant/// @@ -163,17 +160,13 @@ name = "\improper CX Shredder" desc = "A flechette launching machine pistol made of ultra-light CFRP optimized for firing serrated monofillament flechettes." w_class = WEIGHT_CLASS_SMALL - mag_type = /obj/item/ammo_box/magazine/flechette/shredder spread = 15 recoil = 0.1 /obj/item/gun/ballistic/automatic/flechette/shredder/update_icon() - ..() + cut_overlays() if(magazine) - cut_overlays() add_overlay("shreddergun-magazine") - else - cut_overlays() icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" /*///////////////////////////////////////////////////////////// diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index ee8268128a..c4c1cff1e7 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -8,6 +8,7 @@ data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) reagent_state = LIQUID color = "#FFFFFF" // rgb: 255, 255, 255 + can_synth = FALSE nutriment_factor = 0.5 * REAGENTS_METABOLISM /datum/reagent/consumable/semen/reaction_turf(turf/T, reac_volume) @@ -19,7 +20,6 @@ var/obj/effect/decal/cleanable/semen/S = locate() in T if(!S) S = new(T) - S.reagents.add_reagent("semen", reac_volume) if(data["blood_DNA"]) S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) @@ -50,6 +50,7 @@ data = list("donor"=null,"viruses"=null,"donor_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null) reagent_state = LIQUID color = "#AAAAAA77" + can_synth = FALSE nutriment_factor = 0.5 * REAGENTS_METABOLISM /obj/effect/decal/cleanable/femcum @@ -82,7 +83,6 @@ var/obj/effect/decal/cleanable/femcum/S = locate() in T if(!S) S = new(T) - S.reagents.add_reagent("femcum", reac_volume) if(data["blood_DNA"]) S.add_blood_DNA(list(data["blood_DNA"] = data["blood_type"])) diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm index 22085d520c..c4b2fbf5b1 100644 --- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm +++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm @@ -47,7 +47,7 @@ var/tmp/next_process = 0 // Waiting for this SSbellies times_fired to process again. var/tmp/list/items_preserved = list() // Stuff that wont digest so we shouldn't process it again. var/tmp/next_emote = 0 // When we're supposed to print our next emote, as a belly controller tick # - var/tmp/recent_sound = FALSE // Prevent audio spam + var/tmp/recent_sound // Prevent audio spam var/tmp/last_hearcheck = 0 var/tmp/list/hearing_mobs @@ -167,12 +167,13 @@ to_chat(owner,"[thing] slides into your [lowertext(name)].") //Sound w/ antispam flag setting - if(is_wet && !recent_sound) - for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) - if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) - var/sound/devourments = GLOB.vore_sounds[vore_sound] - playsound(get_turf(owner),devourments,50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) - recent_sound = TRUE + if(is_wet && (world.time > recent_sound)) + var/turf/source = get_turf(owner) + var/sound/eating = GLOB.vore_sounds[vore_sound] + for(var/mob/living/M in get_hearers_in_view(3, source)) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) + SEND_SOUND(M, eating) + recent_sound = (world.time + 20 SECONDS) //Messages if it's a mob if(isliving(thing)) @@ -187,7 +188,7 @@ var/atom/destination = drop_location() //Don't bother if we don't have contents if(!contents.len) - return 0 + return FALSE var/count = 0 for(var/thing in contents) @@ -206,10 +207,10 @@ SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey) AM.forceMove(destination) // Move the belly contents into the same location as belly's owner. count++ - for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) + for(var/mob/living/M in get_hearers_in_view(2, get_turf(owner))) if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) var/sound/releasement = GLOB.release_sounds[release_sound] - playsound(get_turf(owner),releasement,50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) + SEND_SOUND(M, releasement) //Clean up our own business items_preserved.Cut() @@ -233,10 +234,10 @@ M.forceMove(drop_location()) // Move the belly contents into the same location as belly's owner. items_preserved -= M if(!silent) - for(var/mob/H in get_hearers_in_view(2, get_turf(owner))) + for(var/mob/living/H in get_hearers_in_view(2, get_turf(owner))) if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES)) var/sound/releasement = GLOB.release_sounds[release_sound] - playsound(get_turf(owner),releasement,50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) + SEND_SOUND(H, releasement) if(istype(M,/mob/living)) var/mob/living/ML = M @@ -285,10 +286,6 @@ SEND_SIGNAL(prey, COMSIG_CLEAR_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey) prey.forceMove(src) - var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE) - - if(is_wet) - prey.playsound_local(loc,preyloop,70,0, channel = CHANNEL_PREYLOOP) owner.updateVRPanel() @@ -317,10 +314,12 @@ M.cure_blind("belly_[REF(src)]") target.nom_mob(content, target.owner) if(!silent) - for(var/mob/M in get_hearers_in_view(5, get_turf(owner))) - if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) - var/sound/devourments = GLOB.vore_sounds[vore_sound] - playsound(get_turf(owner),devourments,50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) + var/turf/source = get_turf(owner) + var/sound/eating = GLOB.vore_sounds[vore_sound] + for(var/mob/living/M in get_hearers_in_view(3, source)) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) + SEND_SOUND(M, eating) + owner.updateVRPanel() for(var/mob/living/M in contents) M.updateVRPanel() @@ -524,22 +523,25 @@ struggle_outer_message = "" + struggle_outer_message + "" struggle_user_message = "" + struggle_user_message + "" + var/turf/source = get_turf(owner) + var/sound/struggle_snuggle = sound(get_sfx("struggle_sound")) + var/sound/struggle_rustle = sound(get_sfx("rustle")) + if(is_wet) - for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) - if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) - playsound(get_turf(owner),"struggle_sound",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) - R.stop_sound_channel(CHANNEL_PRED) - var/sound/prey_struggle = sound(get_sfx("prey_struggle")) - R.playsound_local(get_turf(R),prey_struggle,45,0) + for(var/mob/living/M in get_hearers_in_view(3, source)) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) + SEND_SOUND(M, struggle_snuggle) else - for(var/mob/M in get_hearers_in_view(2, get_turf(owner))) - if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) - playsound(get_turf(owner),"rustle",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED) + for(var/mob/living/M in get_hearers_in_view(3, source)) + if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) + SEND_SOUND(M, struggle_rustle) - for(var/mob/M in get_hearers_in_view(3, get_turf(owner))) + var/list/watching = hearers(3, owner) + for(var/mob/living/M in watching) if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) //Might as well censor the normies here too. M.show_message(struggle_outer_message, 1) // visible + to_chat(R,struggle_user_message) if(escapable) //If the stomach has escapable enabled. diff --git a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm index 6b6a3d30cc..9356c25f57 100644 --- a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm +++ b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm @@ -26,10 +26,13 @@ if(isbelly(M.loc)) if(world.time > M.next_preyloop) if(is_wet) + if(!M.client) + continue M.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case - var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE) - M.playsound_local(get_turf(src),preyloop,80,0, channel = CHANNEL_PREYLOOP) - M.next_preyloop = world.time + 52 SECONDS + if(M.client.prefs.cit_toggles & DIGESTION_NOISES) + var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE) + M.playsound_local(get_turf(src),preyloop, 80,0, channel = CHANNEL_PREYLOOP) + M.next_preyloop = (world.time + 52 SECONDS) /////////////////////////// Exit Early //////////////////////////// @@ -63,12 +66,12 @@ if(prob(25)) if((world.time - NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) - for(var/mob/H in get_hearers_in_view(3, source)) + for(var/mob/living/H in get_hearers_in_view(3, source)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) continue LAZYADD(hearing_mobs, H) last_hearcheck = world.time - for(var/mob/H in hearing_mobs) + for(var/mob/living/H in hearing_mobs) if(!isbelly(H.loc)) H.playsound_local(source, null, 45, falloff = 0, S = pred_digest) else if(H in contents) @@ -100,12 +103,12 @@ owner.nutrition += 400 // so eating dead mobs gives you *something*. if((world.time - NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) - for(var/mob/H in get_hearers_in_view(3, source)) + for(var/mob/living/H in get_hearers_in_view(3, source)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) continue LAZYADD(hearing_mobs, H) last_hearcheck = world.time - for(var/mob/H in hearing_mobs) + for(var/mob/living/H in hearing_mobs) if(!isbelly(H.loc)) H.playsound_local(source, null, 45, falloff = 0, S = pred_death) else if(H in contents) @@ -135,12 +138,12 @@ if(prob(25)) if((world.time - NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) - for(var/mob/H in get_hearers_in_view(3, source)) + for(var/mob/living/H in get_hearers_in_view(3, source)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) continue LAZYADD(hearing_mobs, H) last_hearcheck = world.time - for(var/mob/H in hearing_mobs) + for(var/mob/living/H in hearing_mobs) if(!isbelly(H.loc)) H.playsound_local(source, null, 45, falloff = 0, S = pred_digest) else if(H in contents) @@ -159,12 +162,12 @@ if(prob(35)) if((world.time - NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) - for(var/mob/H in get_hearers_in_view(3, source)) + for(var/mob/living/H in get_hearers_in_view(3, source)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) continue LAZYADD(hearing_mobs, H) last_hearcheck = world.time - for(var/mob/H in hearing_mobs) + for(var/mob/living/H in hearing_mobs) if(!isbelly(H.loc)) H.playsound_local(source, null, 45, falloff = 0, S = pred_digest) else if(H in contents) @@ -179,12 +182,12 @@ if(prob(10))//Less often than gurgles. People might leave this on forever. if((world.time - NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) - for(var/mob/H in get_hearers_in_view(3, source)) + for(var/mob/living/H in get_hearers_in_view(3, source)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) continue LAZYADD(hearing_mobs, H) last_hearcheck = world.time - for(var/mob/H in hearing_mobs) + for(var/mob/living/H in hearing_mobs) if(!isbelly(H.loc)) H.playsound_local(source, null, 45, falloff = 0, S = pred_digest) else if(H in contents) @@ -221,12 +224,12 @@ if(prob(55)) //if you're hearing this, you're a vore ho anyway. if((world.time - NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) - for(var/mob/H in get_hearers_in_view(3, source)) + for(var/mob/living/H in get_hearers_in_view(3, source)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) continue LAZYADD(hearing_mobs, H) last_hearcheck = world.time - for(var/mob/H in hearing_mobs) + for(var/mob/living/H in hearing_mobs) if(!isbelly(H.loc)) H.playsound_local(source, null, 45, falloff = 0, S = pred_digest) else if(H in contents) @@ -254,12 +257,12 @@ M.visible_message("You watch as [owner]'s guts loudly rumble as it finishes off a meal.") if((world.time - NORMIE_HEARCHECK) > last_hearcheck) LAZYCLEARLIST(hearing_mobs) - for(var/mob/H in get_hearers_in_view(3, source)) + for(var/mob/living/H in get_hearers_in_view(3, source)) if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES)) continue LAZYADD(hearing_mobs, H) last_hearcheck = world.time - for(var/mob/H in hearing_mobs) + for(var/mob/living/H in hearing_mobs) if(!isbelly(H.loc)) H.playsound_local(source, null, 45, falloff = 0, S = pred_death) else if(H in contents) diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/modular_citadel/code/modules/vore/eating/living_vr.dm index a8a77895c8..d9adde04d1 100644 --- a/modular_citadel/code/modules/vore/eating/living_vr.dm +++ b/modular_citadel/code/modules/vore/eating/living_vr.dm @@ -60,18 +60,6 @@ B.can_taste = 1 return TRUE -/* -// Hide vore organs in contents -// -/datum/proc/view_variables_filter_contents(list/L) - return 0 - -/mob/living/view_variables_filter_contents(list/L) - . = ..() - var/len_before = L.len - L -= vore_organs - . += len_before - L.len*/ - // Handle being clicked, perhaps with something to devour // @@ -121,21 +109,12 @@ /mob/living/proc/feed_grabbed_to_self(var/mob/living/user, var/mob/living/prey) var/belly = user.vore_selected return perform_the_nom(user, prey, user, belly) -/* -/mob/living/proc/eat_held_mob(var/mob/living/user, var/mob/living/prey, var/mob/living/pred) - var/belly - if(user != pred) - belly = input("Choose Belly") in pred.vore_organs - else - belly = pred.vore_selected - return perform_the_nom(user, prey, pred, belly)*/ /mob/living/proc/feed_self_to_grabbed(var/mob/living/user, var/mob/living/pred) var/belly = input("Choose Belly") in pred.vore_organs return perform_the_nom(user, user, pred, belly) /mob/living/proc/feed_grabbed_to_other(var/mob/living/user, var/mob/living/prey, var/mob/living/pred) -// return//disabled until I can make that toggle work var/belly = input("Choose Belly") in pred.vore_organs return perform_the_nom(user, prey, pred, belly) @@ -182,9 +161,13 @@ // If we got this far, nom successful! Announce it! user.visible_message(success_msg) - for(var/mob/M in get_hearers_in_view(5, get_turf(user))) + + // incredibly contentious eating noises time + var/turf/source = get_turf(user) + var/sound/eating = GLOB.vore_sounds[belly.vore_sound] + for(var/mob/living/M in get_hearers_in_view(3, source)) if(M.client && M.client.prefs.cit_toggles & EATING_NOISES) - playsound(get_turf(user),"[belly.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED) + SEND_SOUND(M, eating) // Actually shove prey into the belly. belly.nom_mob(prey, user) @@ -214,41 +197,7 @@ // //End vore code. -/* - //Handle case: /obj/item/holder - if(/obj/item/holder/micro) - var/obj/item/holder/H = I - if(!isliving(user)) return 0 // Return 0 to continue upper procs - var/mob/living/attacker = user // Typecast to living - - if (is_vore_predator(src)) - for (var/mob/living/M in H.contents) - attacker.eat_held_mob(attacker, M, src) - return 1 //Return 1 to exit upper procs - else - log_attack("[attacker] attempted to feed [H.contents] to [src] ([src.type]) but it failed.") - - // I just can't imagine this not being complained about - //Handle case: /obj/item/radio/beacon - if(/obj/item/radio/beacon) - var/confirm = alert(user, "[src == user ? "Eat the beacon?" : "Feed the beacon to [src]?"]", "Confirmation", "Yes!", "Cancel") - if(confirm == "Yes!") - var/bellychoice = input("Which belly?","Select A Belly") in src.vore_organs - var/datum/belly/B = src.vore_organs[bellychoice] - src.visible_message("[user] is trying to stuff a beacon into [src]'s [bellychoice]!","[user] is trying to stuff a beacon into you!") - if(do_after(user,30,src)) - user.drop_item() - I.loc = src - B.internal_contents += I - src.visible_message("[src] is fed the beacon!","You're fed the beacon!") - playsound(get_turf(src), B.vore_sound,50,0,-6,0) - return 1 - else - return 1 //You don't get to hit someone 'later' - - return 0 -*/ // // Our custom resist catches for /mob/living @@ -272,7 +221,7 @@ if(isbelly(loc)) src.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE) - src.playsound_local(get_turf(src),preyloop,80,0, channel = CHANNEL_PREYLOOP) + SEND_SOUND(src, preyloop) else to_chat(src, "You aren't inside anything, you clod.") diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm index 6f484e7a51..ae7da895a6 100644 --- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm +++ b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm @@ -57,7 +57,7 @@ /datum/vore_look/proc/gen_vui(var/mob/living/user) var/dat dat += "Remember to toggle the vore mode, it's to the left of your combat toggle. Open mouth means you're voracious!
" - dat += "Remember that your prey is blind, use audible mode subtle messages to communicate to them with posts!
" + dat += "Remember that the prey is blind, use audible mode subtle messages to communicate to them with posts!
" dat += "
" var/atom/userloc = user.loc if (isbelly(userloc)) @@ -554,7 +554,7 @@ if(href_list["b_releasesoundtest"]) var/sound/releasetest = GLOB.release_sounds[selected.release_sound] if(releasetest) - user << releasetest + SEND_SOUND(user, releasetest) if(href_list["b_sound"]) var/choice = input(user,"Currently set to [selected.vore_sound]","Select Sound") as null|anything in GLOB.vore_sounds @@ -567,7 +567,7 @@ if(href_list["b_soundtest"]) var/sound/voretest = GLOB.vore_sounds[selected.vore_sound] if(voretest) - user << voretest + SEND_SOUND(user, voretest) if(href_list["b_tastes"]) selected.can_taste = !selected.can_taste diff --git a/modular_citadel/icons/mob/muzzled_helmet.dmi b/modular_citadel/icons/mob/muzzled_helmet.dmi index e321f8ae47..a318f394f8 100644 Binary files a/modular_citadel/icons/mob/muzzled_helmet.dmi and b/modular_citadel/icons/mob/muzzled_helmet.dmi differ diff --git a/modular_citadel/icons/mob/suit_digi.dmi b/modular_citadel/icons/mob/suit_digi.dmi index 1f1f506d9f..eba761ff79 100644 Binary files a/modular_citadel/icons/mob/suit_digi.dmi and b/modular_citadel/icons/mob/suit_digi.dmi differ diff --git a/modular_citadel/icons/mob/uniform_digi.dmi b/modular_citadel/icons/mob/uniform_digi.dmi index 5ff291f400..7e00c60caf 100644 Binary files a/modular_citadel/icons/mob/uniform_digi.dmi and b/modular_citadel/icons/mob/uniform_digi.dmi differ diff --git a/modular_citadel/icons/obj/food/cake.dmi b/modular_citadel/icons/obj/food/cake.dmi deleted file mode 100644 index 840bfe714d..0000000000 Binary files a/modular_citadel/icons/obj/food/cake.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/guns/cit_guns.dmi b/modular_citadel/icons/obj/guns/cit_guns.dmi index cc04fbcb14..bd48d8edbd 100644 Binary files a/modular_citadel/icons/obj/guns/cit_guns.dmi and b/modular_citadel/icons/obj/guns/cit_guns.dmi differ diff --git a/sound/effects/femur_breaker.ogg b/sound/effects/femur_breaker.ogg new file mode 100644 index 0000000000..140dc0477e Binary files /dev/null and b/sound/effects/femur_breaker.ogg differ diff --git a/tgstation.dme b/tgstation.dme index c872760203..b8068c27d8 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -62,6 +62,7 @@ #include "code\__DEFINES\maths.dm" #include "code\__DEFINES\MC.dm" #include "code\__DEFINES\medal.dm" +#include "code\__DEFINES\melee.dm" #include "code\__DEFINES\menu.dm" #include "code\__DEFINES\misc.dm" #include "code\__DEFINES\mobs.dm" @@ -861,6 +862,7 @@ #include "code\game\objects\items\devices\pipe_painter.dm" #include "code\game\objects\items\devices\powersink.dm" #include "code\game\objects\items\devices\pressureplates.dm" +#include "code\game\objects\items\devices\quantum_keycard.dm" #include "code\game\objects\items\devices\reverse_bear_trap.dm" #include "code\game\objects\items\devices\scanners.dm" #include "code\game\objects\items\devices\sensor_device.dm" @@ -968,6 +970,7 @@ #include "code\game\objects\structures\electricchair.dm" #include "code\game\objects\structures\extinguisher.dm" #include "code\game\objects\structures\false_walls.dm" +#include "code\game\objects\structures\femur_breaker.dm" #include "code\game\objects\structures\fence.dm" #include "code\game\objects\structures\fireaxe.dm" #include "code\game\objects\structures\fireplace.dm" @@ -2881,7 +2884,6 @@ #include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\tracer.dm" #include "modular_citadel\code\game\objects\items\balls.dm" #include "modular_citadel\code\game\objects\items\boombox.dm" -#include "modular_citadel\code\game\objects\items\handcuffs.dm" #include "modular_citadel\code\game\objects\items\holy_weapons.dm" #include "modular_citadel\code\game\objects\items\honk.dm" #include "modular_citadel\code\game\objects\items\meat.dm" @@ -2923,7 +2925,6 @@ #include "modular_citadel\code\modules\arousal\toys\dildos.dm" #include "modular_citadel\code\modules\awaymissions\citadel_ghostrole_spawners.dm" #include "modular_citadel\code\modules\cargo\console.dm" -#include "modular_citadel\code\modules\cargo\packs.dm" #include "modular_citadel\code\modules\client\client_defines.dm" #include "modular_citadel\code\modules\client\client_procs.dm" #include "modular_citadel\code\modules\client\preferences.dm" @@ -2957,7 +2958,6 @@ #include "modular_citadel\code\modules\clothing\under\trek_under.dm" #include "modular_citadel\code\modules\clothing\under\turtlenecks.dm" #include "modular_citadel\code\modules\clothing\under\under.dm" -#include "modular_citadel\code\modules\crafting\recipes.dm" #include "modular_citadel\code\modules\custom_loadout\custom_items.dm" #include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm" #include "modular_citadel\code\modules\custom_loadout\read_from_file.dm" @@ -2982,14 +2982,12 @@ #include "modular_citadel\code\modules\mentor\mentorhelp.dm" #include "modular_citadel\code\modules\mentor\mentorpm.dm" #include "modular_citadel\code\modules\mentor\mentorsay.dm" -#include "modular_citadel\code\modules\mining\mine_items.dm" #include "modular_citadel\code\modules\mining\mining_ruins.dm" #include "modular_citadel\code\modules\mob\cit_emotes.dm" #include "modular_citadel\code\modules\mob\mob.dm" #include "modular_citadel\code\modules\mob\dead\new_player\sprite_accessories.dm" #include "modular_citadel\code\modules\mob\living\damage_procs.dm" #include "modular_citadel\code\modules\mob\living\living.dm" -#include "modular_citadel\code\modules\mob\living\status_procs.dm" #include "modular_citadel\code\modules\mob\living\carbon\carbon.dm" #include "modular_citadel\code\modules\mob\living\carbon\damage_procs.dm" #include "modular_citadel\code\modules\mob\living\carbon\life.dm" @@ -3019,7 +3017,6 @@ #include "modular_citadel\code\modules\projectiles\bullets\bullets\smg.dm" #include "modular_citadel\code\modules\projectiles\guns\pumpenergy.dm" #include "modular_citadel\code\modules\projectiles\guns\toys.dm" -#include "modular_citadel\code\modules\projectiles\guns\ballistic\flechette.dm" #include "modular_citadel\code\modules\projectiles\guns\ballistic\handguns.dm" #include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon.dm" #include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon_energy.dm" @@ -3042,7 +3039,6 @@ #include "modular_citadel\code\modules\research\designs\xenobio_designs.dm" #include "modular_citadel\code\modules\research\designs\weapon_designs\weapon_designs.dm" #include "modular_citadel\code\modules\research\techweb\_techweb.dm" -#include "modular_citadel\code\modules\research\techweb\all_nodes.dm" #include "modular_citadel\code\modules\research\xenobiology\xenobio_camera.dm" #include "modular_citadel\code\modules\vehicles\secway.dm" #include "modular_citadel\code\modules\vore\hook-defs_vr.dm" diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index e073e5ffe2..0dae148976 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -9,7 +9,7 @@ name:"css",extend:function(t,e,n){if(n.css){var a=Up++,r=n.noCssTransform?n.css: return t.replace(/-([a-zA-Z])/g,function(t,e){return e.toUpperCase()})};Xi?(uf={},cf=co("div").style,pf=function(t){var e,n,a;if(t=mf(t),!uf[t])if(void 0!==cf[t])uf[t]=t;else for(a=t.charAt(0).toUpperCase()+t.substring(1),e=ro.length;e--;)if(n=ro[e],void 0!==cf[n+a]){uf[t]=n+a;break}return uf[t]}):pf=null;var gf,vf,bf=pf;Xi?(vf=window.getComputedStyle||Po.getComputedStyle,gf=function(t){var e,n,a,r,o;if(e=vf(this.node),"string"==typeof t)return o=e[bf(t)],"0px"===o&&(o=0),o;if(!i(t))throw Error("Transition$getStyle must be passed a string, or an array of strings representing CSS properties");for(n={},a=t.length;a--;)r=t[a],o=e[bf(r)],"0px"===o&&(o=0),n[r]=o;return n}):gf=null;var yf=gf,_f=function(t,e){var n;if("string"==typeof t)this.node.style[bf(t)]=e;else for(n in t)t.hasOwnProperty(n)&&(this.node.style[bf(n)]=t[n]);return this},xf=function(t){var e;this.duration=t.duration,this.step=t.step,this.complete=t.complete,"string"==typeof t.easing?(e=t.root.easing[t.easing],e||(g(Io(t.easing,"easing")),e=qa)):e="function"==typeof t.easing?t.easing:qa,this.easing=e,this.start=ns(),this.end=this.start+this.duration,this.running=!0,xs.add(this)};xf.prototype={tick:function(t){var e,n;return this.running?t>this.end?(this.step&&this.step(1),this.complete&&this.complete(1),!1):(e=t-this.start,n=this.easing(e/this.duration),this.step&&this.step(n),!0):!1},stop:function(){this.abort&&this.abort(),this.running=!1}};var wf,kf,Sf,Ef,Cf,Pf,Af,Of,Tf=xf,Rf=RegExp("^-(?:"+ro.join("|")+")-"),Mf=function(t){return t.replace(Rf,"")},Lf=RegExp("^(?:"+ro.join("|")+")([A-Z])"),jf=function(t){var e;return t?(Lf.test(t)&&(t="-"+t),e=t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})):""},Df={},Nf={};Xi?(kf=co("div").style,function(){void 0!==kf.transition?(Sf="transition",Ef="transitionend",Cf=!0):void 0!==kf.webkitTransition?(Sf="webkitTransition",Ef="webkitTransitionEnd",Cf=!0):Cf=!1}(),Sf&&(Pf=Sf+"Duration",Af=Sf+"Property",Of=Sf+"TimingFunction"),wf=function(t,e,n,a,r){setTimeout(function(){var i,o,s,p,u;p=function(){o&&s&&(t.root.fire(t.name+":end",t.node,t.isIntro),r())},i=(t.node.namespaceURI||"")+t.node.tagName,t.node.style[Af]=a.map(bf).map(jf).join(","),t.node.style[Of]=jf(n.easing||"linear"),t.node.style[Pf]=n.duration/1e3+"s",u=function(e){var n;n=a.indexOf(mf(Mf(e.propertyName))),-1!==n&&a.splice(n,1),a.length||(t.node.removeEventListener(Ef,u,!1),s=!0,p())},t.node.addEventListener(Ef,u,!1),setTimeout(function(){for(var r,c,l,d,f,h=a.length,g=[];h--;)d=a[h],r=i+d,Cf&&!Nf[r]&&(t.node.style[bf(d)]=e[d],Df[r]||(c=t.getStyle(d),Df[r]=t.getStyle(d)!=e[d],Nf[r]=!Df[r],Nf[r]&&(t.node.style[bf(d)]=c))),(!Cf||Nf[r])&&(void 0===c&&(c=t.getStyle(d)),l=a.indexOf(d),-1===l?m("Something very strange happened with transitions. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!",{node:t.node}):a.splice(l,1),f=/[^\d]*$/.exec(e[d])[0],g.push({name:bf(d),interpolator:qo(parseFloat(c),parseFloat(e[d])),suffix:f}));g.length?new Tf({root:t.root,duration:n.duration,easing:mf(n.easing||""),step:function(e){var n,a;for(a=g.length;a--;)n=g[a],t.node.style[n.name]=n.interpolator(e)+n.suffix},complete:function(){o=!0,p()}}):o=!0,a.length||(t.node.removeEventListener(Ef,u,!1),s=!0,p())},0)},n.delay||0)}):wf=null;var Ff,If,Bf,qf,Uf,Vf=wf;if("undefined"!=typeof document){if(Ff="hidden",Uf={},Ff in document)Bf="";else for(qf=ro.length;qf--;)If=ro[qf],Ff=If+"Hidden",Ff in document&&(Bf=If);void 0!==Bf?(document.addEventListener(Bf+"visibilitychange",Ua),Ua()):("onfocusout"in document?(document.addEventListener("focusout",Va),document.addEventListener("focusin",Ga)):(window.addEventListener("pagehide",Va),window.addEventListener("blur",Va),window.addEventListener("pageshow",Ga),window.addEventListener("focus",Ga)),Uf.hidden=!1)}var Gf,zf,Wf,Hf=Uf;Xi?(zf=window.getComputedStyle||Po.getComputedStyle,Gf=function(t,e,n){var a,r=this;if(4===arguments.length)throw Error("t.animateStyle() returns a promise - use .then() instead of passing a callback");if(Hf.hidden)return this.setStyle(t,e),Wf||(Wf=us.resolve());"string"==typeof t?(a={},a[t]=e):(a=t,n=e),n||(g('The "%s" transition does not supply an options object to `t.animateStyle()`. This will break in a future version of Ractive. For more info see https://github.com/RactiveJS/Ractive/issues/340',this.name),n=this);var i=new us(function(t){var e,i,o,s,p,u,c;if(!n.duration)return r.setStyle(a),void t();for(e=Object.keys(a),i=[],o=zf(r.node),p={},u=e.length;u--;)c=e[u],s=o[bf(c)],"0px"===s&&(s=0),s!=a[c]&&(i.push(c),r.node.style[bf(c)]=s);return i.length?void Vf(r,a,n,i,t):void t()});return i}):Gf=null;var Kf=Gf,Qf=function(t,e){return"number"==typeof t?t={duration:t}:"string"==typeof t?t="slow"===t?{duration:600}:"fast"===t?{duration:200}:{duration:400}:t||(t={}),r({},t,e)},Yf=za,$f=function(t,e,n){this.init(t,e,n)};$f.prototype={init:hf,start:Yf,getStyle:yf,setStyle:_f,animateStyle:Kf,processParams:Qf};var Jf,Xf,Zf=$f,th=Ha;Jf=function(){var t=this.node,e=this.fragment.toString(!1);if(window&&window.appearsToBeIELessEqual8&&(t.type="text/css"),t.styleSheet)t.styleSheet.cssText=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}},Xf=function(){this.node.type&&"text/javascript"!==this.node.type||m("Script tag was updated. This does not cause the code to be re-evaluated!",{ractive:this.root}),this.node.text=this.fragment.toString(!1)};var eh=function(){var t,e;return this.template.y?"":(t="<"+this.template.e,t+=this.attributes.map(Xa).join("")+this.conditionalAttributes.map(Xa).join(""),"option"===this.name&&$a(this)&&(t+=" selected"),"input"===this.name&&Ja(this)&&(t+=" checked"),t+=">","textarea"===this.name&&void 0!==this.getAttribute("value")?t+=Se(this.getAttribute("value")):void 0!==this.getAttribute("contenteditable")&&(t+=this.getAttribute("value")||""),this.fragment&&(e="script"!==this.name&&"style"!==this.name,t+=this.fragment.toString(e)),ic.test(this.template.e)||(t+=""),t)},nh=Za,ah=tr,rh=function(t){this.init(t)};rh.prototype={bubble:Tl,detach:Rl,find:Ml,findAll:Ll,findAllComponents:jl,findComponent:Dl,findNextNode:Nl,firstNode:Fl,getAttribute:Il,init:df,rebind:ff,render:th,toString:eh,unbind:nh,unrender:ah};var ih=rh,oh=/^\s*$/,sh=/^\s*/,ph=function(t){var e,n,a,r;return e=t.split("\n"),n=e[0],void 0!==n&&oh.test(n)&&e.shift(),a=D(e),void 0!==a&&oh.test(a)&&e.pop(),r=e.reduce(nr,null),r&&(t=e.map(function(t){return t.replace(r,"")}).join("\n")),t},uh=ar,ch=function(t,e){var n;return e?n=t.split("\n").map(function(t,n){return n?e+t:t}).join("\n"):t},lh='Could not find template for partial "%s"',dh=function(t){var e,n;e=this.parentFragment=t.parentFragment,this.root=e.root,this.type=Au,this.index=t.index,this.name=t.template.r,this.rendered=!1,this.fragment=this.fragmentToRender=this.fragmentToUnrender=null,Gc.init(this,t),this.keypath||((n=uh(this.root,this.name,e))?(_c.call(this),this.isNamed=!0,this.setTemplate(n)):g(lh,this.name))};dh.prototype={bubble:function(){this.parentFragment.bubble()},detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},firstNode:function(){return this.fragment.firstNode()},findNextNode:function(){return this.parentFragment.findNextNode(this)},getPartialName:function(){return this.isNamed&&this.name?this.name:void 0===this.value?this.name:this.value},getValue:function(){return this.fragment.getValue()},rebind:function(t,e){this.isNamed||Vc.call(this,t,e),this.fragment&&this.fragment.rebind(t,e)},render:function(){return this.docFrag=document.createDocumentFragment(),this.update(),this.rendered=!0,this.docFrag},resolve:Gc.resolve,setValue:function(t){var e;(void 0===t||t!==this.value)&&(void 0!==t&&(e=uh(this.root,""+t,this.parentFragment)),!e&&this.name&&(e=uh(this.root,this.name,this.parentFragment))&&(_c.call(this),this.isNamed=!0),e||g(lh,this.name,{ractive:this.root}),this.value=t,this.setTemplate(e||[]),this.bubble(),this.rendered&&bs.addView(this))},setTemplate:function(t){this.fragment&&(this.fragment.unbind(),this.rendered&&(this.fragmentToUnrender=this.fragment)),this.fragment=new rg({template:t,root:this.root,owner:this,pElement:this.parentFragment.pElement}),this.fragmentToRender=this.fragment},toString:function(t){var e,n,a,r;return e=this.fragment.toString(t),n=this.parentFragment.items[this.index-1],n&&n.type===ku?(a=n.text.split("\n").pop(),(r=/^\s+$/.exec(a))?ch(e,r[0]):e):e},unbind:function(){this.isNamed||_c.call(this),this.fragment&&this.fragment.unbind()},unrender:function(t){this.rendered&&(this.fragment&&this.fragment.unrender(t),this.rendered=!1)},update:function(){var t,e;this.fragmentToUnrender&&(this.fragmentToUnrender.unrender(!0),this.fragmentToUnrender=null),this.fragmentToRender&&(this.docFrag.appendChild(this.fragmentToRender.render()),this.fragmentToRender=null),this.rendered&&(t=this.parentFragment.getNode(),e=this.parentFragment.findNextNode(this),t.insertBefore(this.docFrag,e))}};var fh,hh,mh,gh=dh,vh=pr,bh=ur,yh=new is("detach"),_h=cr,xh=lr,wh=dr,kh=fr,Sh=hr,Eh=mr,Ch=function(t,e,n,a){var r=t.root,i=t.keypath;a?r.viewmodel.smartUpdate(i,e,a):r.viewmodel.mark(i)},Ph=[],Ah=["pop","push","reverse","shift","sort","splice","unshift"];Ah.forEach(function(t){var e=function(){for(var e=arguments.length,n=Array(e),a=0;e>a;a++)n[a]=arguments[a];var r,i,o,s;for(r=bp(this,t,n),i=Array.prototype[t].apply(this,arguments),bs.start(),this._ractive.setting=!0,s=this._ractive.wrappers.length;s--;)o=this._ractive.wrappers[s],bs.addRactive(o.root),Ch(o,this,t,r);return bs.end(),this._ractive.setting=!1,i};Eo(Ph,t,{value:e})}),fh={},fh.__proto__?(hh=function(t){t.__proto__=Ph},mh=function(t){t.__proto__=Array.prototype}):(hh=function(t){var e,n;for(e=Ah.length;e--;)n=Ah[e],Eo(t,n,{value:Ph[n],configurable:!0})},mh=function(t){var e;for(e=Ah.length;e--;)delete t[Ah[e]]}),hh.unpatch=mh;var Oh,Th,Rh,Mh=hh;Oh={filter:function(t){return i(t)&&(!t._ractive||!t._ractive.setting)},wrap:function(t,e,n){return new Th(t,e,n)}},Th=function(t,e,n){this.root=t,this.value=e,this.keypath=S(n),e._ractive||(Eo(e,"_ractive",{value:{wrappers:[],instances:[],setting:!1},configurable:!0}),Mh(e)),e._ractive.instances[t._guid]||(e._ractive.instances[t._guid]=0,e._ractive.instances.push(t)),e._ractive.instances[t._guid]+=1,e._ractive.wrappers.push(this)},Th.prototype={get:function(){return this.value},teardown:function(){var t,e,n,a,r;if(t=this.value,e=t._ractive,n=e.wrappers,a=e.instances,e.setting)return!1;if(r=n.indexOf(this),-1===r)throw Error(Rh);if(n.splice(r,1),n.length){if(a[this.root._guid]-=1,!a[this.root._guid]){if(r=a.indexOf(this.root),-1===r)throw Error(Rh);a.splice(r,1)}}else delete t._ractive,Mh.unpatch(this.value)}},Rh="Something went wrong in a rather interesting way";var Lh,jh,Dh=Oh,Nh=/^\s*[0-9]+\s*$/,Fh=function(t){return Nh.test(t)?[]:{}};try{Object.defineProperty({},"test",{value:0}),Lh={filter:function(t,e,n){var a,r;return e?(e=S(e),(a=n.viewmodel.wrapped[e.parent.str])&&!a.magic?!1:(r=n.viewmodel.get(e.parent),i(r)&&/^[0-9]+$/.test(e.lastKey)?!1:r&&("object"==typeof r||"function"==typeof r))):!1},wrap:function(t,e,n){return new jh(t,e,n)}},jh=function(t,e,n){var a,r,i;return n=S(n),this.magic=!0,this.ractive=t,this.keypath=n,this.value=e,this.prop=n.lastKey,a=n.parent,this.obj=a.isRoot?t.viewmodel.data:t.viewmodel.get(a),r=this.originalDescriptor=Object.getOwnPropertyDescriptor(this.obj,this.prop),r&&r.set&&(i=r.set._ractiveWrappers)?void(-1===i.indexOf(this)&&i.push(this)):void gr(this,e,r)},jh.prototype={get:function(){return this.value},reset:function(t){return this.updating?void 0:(this.updating=!0,this.obj[this.prop]=t,bs.addRactive(this.ractive),this.ractive.viewmodel.mark(this.keypath,{keepExistingWrapper:!0}),this.updating=!1,!0)},set:function(t,e){this.updating||(this.obj[this.prop]||(this.updating=!0,this.obj[this.prop]=Fh(t),this.updating=!1),this.obj[this.prop][t]=e)},teardown:function(){var t,e,n,a,r;return this.updating?!1:(t=Object.getOwnPropertyDescriptor(this.obj,this.prop),e=t&&t.set,void(e&&(a=e._ractiveWrappers,r=a.indexOf(this),-1!==r&&a.splice(r,1),a.length||(n=this.obj[this.prop],Object.defineProperty(this.obj,this.prop,this.originalDescriptor||{writable:!0,enumerable:!0,configurable:!0}),this.obj[this.prop]=n))))}}}catch(Ao){Lh=!1}var Ih,Bh,qh=Lh;qh&&(Ih={filter:function(t,e,n){return qh.filter(t,e,n)&&Dh.filter(t)},wrap:function(t,e,n){return new Bh(t,e,n)}},Bh=function(t,e,n){this.value=e,this.magic=!0,this.magicWrapper=qh.wrap(t,e,n),this.arrayWrapper=Dh.wrap(t,e,n)},Bh.prototype={get:function(){return this.value},teardown:function(){this.arrayWrapper.teardown(),this.magicWrapper.teardown()},reset:function(t){return this.magicWrapper.reset(t)}});var Uh=Ih,Vh=vr,Gh={},zh=_r,Wh=xr,Hh=Sr,Kh=Or,Qh=Tr,Yh=function(t,e){this.computation=t,this.viewmodel=t.viewmodel,this.ref=e,this.root=this.viewmodel.ractive,this.parentFragment=this.root.component&&this.root.component.parentFragment};Yh.prototype={resolve:function(t){this.computation.softDeps.push(t),this.computation.unresolvedDeps[t.str]=null,this.viewmodel.register(t,this.computation,"computed")}};var $h=Yh,Jh=function(t,e){this.key=t,this.getter=e.getter,this.setter=e.setter,this.hardDeps=e.deps||[],this.softDeps=[],this.unresolvedDeps={},this.depValues={},this._dirty=this._firstRun=!0};Jh.prototype={constructor:Jh,init:function(t){var e,n=this;this.viewmodel=t,this.bypass=!0,e=t.get(this.key),t.clearCache(this.key.str),this.bypass=!1,this.setter&&void 0!==e&&this.set(e),this.hardDeps&&this.hardDeps.forEach(function(e){return t.register(e,n,"computed")})},invalidate:function(){this._dirty=!0},get:function(){var t,e,n=this,a=!1;if(this.getting){var r="The "+this.key.str+" computation indirectly called itself. This probably indicates a bug in the computation. It is commonly caused by `array.sort(...)` - if that's the case, clone the array first with `array.slice().sort(...)`";return h(r),this.value}if(this.getting=!0,this._dirty){if(this._firstRun||!this.hardDeps.length&&!this.softDeps.length?a=!0:[this.hardDeps,this.softDeps].forEach(function(t){var e,r,i;if(!a)for(i=t.length;i--;)if(e=t[i],r=n.viewmodel.get(e),!s(r,n.depValues[e.str]))return n.depValues[e.str]=r,void(a=!0)}),a){this.viewmodel.capture();try{this.value=this.getter()}catch(i){m('Failed to compute "%s"',this.key.str),d(i.stack||i),this.value=void 0}t=this.viewmodel.release(),e=this.updateDependencies(t),e&&[this.hardDeps,this.softDeps].forEach(function(t){t.forEach(function(t){n.depValues[t.str]=n.viewmodel.get(t)})})}this._dirty=!1}return this.getting=this._firstRun=!1,this.value},set:function(t){if(this.setting)return void(this.value=t);if(!this.setter)throw Error("Computed properties without setters are read-only. (This may change in a future version of Ractive!)");this.setter(t)},updateDependencies:function(t){var e,n,a,r,i;for(n=this.softDeps,e=n.length;e--;)a=n[e],-1===t.indexOf(a)&&(r=!0,this.viewmodel.unregister(a,this,"computed"));for(e=t.length;e--;)a=t[e],-1!==n.indexOf(a)||this.hardDeps&&-1!==this.hardDeps.indexOf(a)||(r=!0,Rr(this.viewmodel,a)&&!this.unresolvedDeps[a.str]?(i=new $h(this,a.str),t.splice(e,1),this.unresolvedDeps[a.str]=i,bs.addUnresolved(i)):this.viewmodel.register(a,this,"computed"));return r&&(this.softDeps=t.slice()),r}};var Xh=Jh,Zh=Mr,tm={FAILED_LOOKUP:!0},em=Lr,nm={},am=Dr,rm=Nr,im=function(t,e){this.localKey=t,this.keypath=e.keypath,this.origin=e.origin,this.deps=[],this.unresolved=[],this.resolved=!1};im.prototype={forceResolution:function(){this.keypath=this.localKey,this.setup()},get:function(t,e){return this.resolved?this.origin.get(this.map(t),e):void 0},getValue:function(){return this.keypath?this.origin.get(this.keypath):void 0},initViewmodel:function(t){this.local=t,this.setup()},map:function(t){return void 0===typeof this.keypath?this.localKey:t.replace(this.localKey,this.keypath)},register:function(t,e,n){this.deps.push({keypath:t,dep:e,group:n}),this.resolved&&this.origin.register(this.map(t),e,n)},resolve:function(t){void 0!==this.keypath&&this.unbind(!0),this.keypath=t,this.setup()},set:function(t,e){this.resolved||this.forceResolution(),this.origin.set(this.map(t),e)},setup:function(){var t=this;void 0!==this.keypath&&(this.resolved=!0,this.deps.length&&(this.deps.forEach(function(e){var n=t.map(e.keypath);if(t.origin.register(n,e.dep,e.group),e.dep.setValue)e.dep.setValue(t.origin.get(n));else{if(!e.dep.invalidate)throw Error("An unexpected error occurred. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");e.dep.invalidate()}}),this.origin.mark(this.keypath)))},setValue:function(t){if(!this.keypath)throw Error("Mapping does not have keypath, cannot set value. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");this.origin.set(this.keypath,t)},unbind:function(t){var e=this;t||delete this.local.mappings[this.localKey],this.resolved&&(this.deps.forEach(function(t){e.origin.unregister(e.map(t.keypath),t.dep,t.group)}),this.tracker&&this.origin.unregister(this.keypath,this.tracker))},unregister:function(t,e,n){var a,r;if(this.resolved){for(a=this.deps,r=a.length;r--;)if(a[r].dep===e){a.splice(r,1);break}this.origin.unregister(this.map(t),e,n)}}};var om=Fr,sm=function(t,e){var n,a,r,i;return n={},a=0,r=t.map(function(t,r){var o,s,p;s=a,p=e.length;do{if(o=e.indexOf(t,s),-1===o)return i=!0,-1;s=o+1}while(n[o]&&p>s);return o===a&&(a+=1),o!==r&&(i=!0),n[o]=!0,o})},pm=Ir,um={},cm=Ur,lm=Gr,dm=zr,fm=Wr,hm=Kr,mm={implicit:!0},gm={noCascade:!0},vm=Yr,bm=$r,ym=function(t){var e,n,a=t.adapt,r=t.data,i=t.ractive,o=t.computed,s=t.mappings;this.ractive=i,this.adaptors=a,this.onchange=t.onchange,this.cache={},this.cacheMap=So(null),this.deps={computed:So(null),"default":So(null)},this.depsMap={computed:So(null),"default":So(null)},this.patternObservers=[],this.specials=So(null),this.wrapped=So(null),this.computations=So(null),this.captureGroups=[],this.unresolvedImplicitDependencies=[],this.changes=[],this.implicitChanges={},this.noCascade={},this.data=r,this.mappings=So(null);for(e in s)this.map(S(e),s[e]);if(r)for(e in r)(n=this.mappings[e])&&void 0===n.getValue()&&n.setValue(r[e]);for(e in o)s&&e in s&&l("Cannot map to a computed property ('%s')",e),this.compute(S(e),o[e]);this.ready=!0};ym.prototype={adapt:Vh,applyChanges:Hh,capture:Kh,clearCache:Qh,compute:Zh,get:em,init:am,map:rm,mark:om,merge:pm,register:cm,release:lm,reset:dm,set:fm,smartUpdate:hm,teardown:vm,unregister:bm};var _m=ym;Xr.prototype={constructor:Xr,begin:function(t){this.inProcess[t._guid]=!0},end:function(t){var e=t.parent;e&&this.inProcess[e._guid]?Zr(this.queue,e).push(t):ti(this,t),delete this.inProcess[t._guid]}};var xm=Xr,wm=ei,km=/\$\{([^\}]+)\}/g,Sm=new is("construct"),Em=new is("config"),Cm=new xm("init"),Pm=0,Am=["adaptors","components","decorators","easing","events","interpolators","partials","transitions"],Om=ii,Tm=ci;ci.prototype={bubble:function(){this.dirty||(this.dirty=!0,bs.addView(this))},update:function(){this.callback(this.fragment.getValue()),this.dirty=!1},rebind:function(t,e){this.fragment.rebind(t,e)},unbind:function(){this.fragment.unbind()}};var Rm=function(t,e,n,r,o){var s,p,u,c,l,d,f={},h={},g={},v=[];for(p=t.parentFragment,u=t.root,o=o||{},a(f,o),o.content=r||[],f[""]=o.content,e.defaults.el&&m("The <%s/> component has a default `el` property; it has been disregarded",t.name),c=p;c;){if(c.owner.type===Mu){l=c.owner.container;break}c=c.parent}return n&&Object.keys(n).forEach(function(e){var a,r,o=n[e];if("string"==typeof o)a=dc(o),h[e]=a?a.value:o;else if(0===o)h[e]=!0;else{if(!i(o))throw Error("erm wut");di(o)?(g[e]={origin:t.root.viewmodel,keypath:void 0},r=li(t,o[0],function(t){t.isSpecial?d?s.set(e,t.value):(h[e]=t.value,delete g[e]):d?s.viewmodel.mappings[e].resolve(t):g[e].keypath=t})):r=new Tm(t,o,function(t){d?s.set(e,t):h[e]=t}),v.push(r)}}),s=So(e.prototype),Om(s,{el:null,append:!0,data:h,partials:o,magic:u.magic||e.defaults.magic,modifyArrays:u.modifyArrays,adapt:u.adapt},{parent:u,component:t,container:l,mappings:g,inlinePartials:f,cssIds:p.cssIds}),d=!0,t.resolvers=v,s},Mm=fi,Lm=function(t){var e,n;for(e=t.root;e;)(n=e._liveComponentQueries["_"+t.name])&&n.push(t.instance),e=e.parent},jm=mi,Dm=gi,Nm=vi,Fm=bi,Im=yi,Bm=new is("teardown"),qm=xi,Um=function(t,e){this.init(t,e)};Um.prototype={detach:bh,find:_h,findAll:xh,findAllComponents:wh,findComponent:kh,findNextNode:Sh,firstNode:Eh,init:jm,rebind:Dm,render:Nm,toString:Fm,unbind:Im,unrender:qm};var Vm=Um,Gm=function(t){this.type=Ou,this.value=t.template.c};Gm.prototype={detach:vc,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createComment(this.value)),this.node},toString:function(){return""},unrender:function(t){t&&this.node.parentNode.removeChild(this.node)}};var zm=Gm,Wm=function(t){var e,n;this.type=Mu,this.container=e=t.parentFragment.root,this.component=n=e.component,this.container=e,this.containerFragment=t.parentFragment,this.parentFragment=n.parentFragment;var a=this.name=t.template.n||"",r=e._inlinePartials[a];r||(m('Could not find template for partial "'+a+'"',{ractive:t.root}),r=[]),this.fragment=new rg({owner:this,root:e.parent,template:r,pElement:this.containerFragment.pElement}),i(n.yielders[a])?n.yielders[a].push(this):n.yielders[a]=[this],bs.scheduleTask(function(){if(n.yielders[a].length>1)throw Error("A component template can only have one {{yield"+(a?" "+a:"")+"}} declaration at a time")})};Wm.prototype={detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},findNextNode:function(){return this.containerFragment.findNextNode(this)},firstNode:function(){return this.fragment.firstNode()},getValue:function(t){return this.fragment.getValue(t)},render:function(){return this.fragment.render()},unbind:function(){this.fragment.unbind()},unrender:function(t){this.fragment.unrender(t),N(this.component.yielders[this.name],this)},rebind:function(t,e){this.fragment.rebind(t,e)},toString:function(){return""+this.fragment}};var Hm=Wm,Km=function(t){this.declaration=t.template.a};Km.prototype={init:ko,render:ko,unrender:ko,teardown:ko,toString:function(){return""}};var Qm=Km,Ym=wi,$m=Si,Jm=Ei,Xm=Ci,Zm=Oi,tg=Ri,eg=function(t){this.init(t)};eg.prototype={bubble:cu,detach:lu,find:du,findAll:fu,findAllComponents:hu,findComponent:mu,findNextNode:gu,firstNode:vu,getArgsList:hc,getNode:mc,getValue:gc,init:Ym,rebind:$m,registerIndexRef:function(t){var e=this.registeredIndexRefs;-1===e.indexOf(t)&&e.push(t)},render:Jm,toString:Xm,unbind:Zm,unregisterIndexRef:function(t){var e=this.registeredIndexRefs;e.splice(e.indexOf(t),1)},unrender:tg};var ng,ag,rg=eg,ig=Mi,og=["template","partials","components","decorators","events"],sg=new is("reset"),pg=function(t,e){function n(e,a,r){r&&r.partials[t]||e.forEach(function(e){e.type===Au&&e.getPartialName()===t&&a.push(e),e.fragment&&n(e.fragment.items,a,r),i(e.fragments)?n(e.fragments,a,r):i(e.items)?n(e.items,a,r):e.type===Ru&&e.instance&&n(e.instance.fragment.items,a,e.instance),e.type===Pu&&(i(e.attributes)&&n(e.attributes,a,r),i(e.conditionalAttributes)&&n(e.conditionalAttributes,a,r))})}var a,r=[];return n(this.fragment.items,r),this.partials[t]=e,a=bs.start(this,!0),r.forEach(function(e){e.value=void 0,e.setValue(t)}),bs.end(),a},ug=Li,cg=_p("reverse"),lg=ji,dg=_p("shift"),fg=_p("sort"),hg=_p("splice"),mg=Ni,gg=Fi,vg=new is("teardown"),bg=Bi,yg=qi,_g=Ui,xg=new is("unrender"),wg=_p("unshift"),kg=Vi,Sg=new is("update"),Eg=Gi,Cg={add:Zo,animate:Ss,detach:Cs,find:As,findAll:Fs,findAllComponents:Is,findComponent:Bs,findContainer:qs,findParent:Us,fire:Ws,get:Hs,insert:Qs,merge:$s,observe:lp,observeOnce:dp,off:mp,on:gp,once:vp,pop:xp,push:wp,render:Tp,reset:ig,resetPartial:pg,resetTemplate:ug,reverse:cg,set:lg,shift:dg,sort:fg,splice:hg,subtract:mg,teardown:gg,toggle:bg,toHTML:yg,toHtml:yg,unrender:_g,unshift:wg,update:kg,updateModel:Eg},Pg=function(t,e,n){return n||Wi(t,e)?function(){var n,a="_super"in this,r=this._super;return this._super=e,n=t.apply(this,arguments),a&&(this._super=r),n}:t},Ag=Hi,Og=$i,Tg=function(t){var e,n,a={};return t&&(e=t._ractive)?(a.ractive=e.root,a.keypath=e.keypath.str,a.index={},(n=Oc(e.proxy.parentFragment))&&(a.index=Oc.resolve(n)),a):a};ng=function(t){return this instanceof ng?void Om(this,t):new ng(t)},ag={DEBUG:{writable:!0,value:!0},DEBUG_PROMISES:{writable:!0,value:!0},extend:{value:Og},getNodeInfo:{value:Tg},parse:{value:Hp},Promise:{value:us},svg:{value:ao},magic:{value:eo},VERSION:{value:"0.7.3"},adaptors:{writable:!0,value:{}},components:{writable:!0,value:{}},decorators:{writable:!0,value:{}},easing:{writable:!0,value:po},events:{writable:!0,value:{}},interpolators:{writable:!0,value:Vo},partials:{writable:!0,value:{}},transitions:{writable:!0,value:{}}},Co(ng,ag),ng.prototype=a(Cg,so),ng.prototype.constructor=ng,ng.defaults=ng.prototype;var Rg="function";if(typeof Date.now!==Rg||typeof String.prototype.trim!==Rg||typeof Object.keys!==Rg||typeof Array.prototype.indexOf!==Rg||typeof Array.prototype.forEach!==Rg||typeof Array.prototype.map!==Rg||typeof Array.prototype.filter!==Rg||"undefined"!=typeof window&&typeof window.addEventListener!==Rg)throw Error("It looks like you're attempting to use Ractive.js in an older browser. You'll need to use one of the 'legacy builds' in order to continue - see http://docs.ractivejs.org/latest/legacy-builds for more information.");var Mg=ng;return Mg})},{}],342:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.observe("value",function(e,n,a){var r=t.get(),i=r.min,o=r.max,s=Math.clamp(i,o,e);t.animate("percentage",Math.round((s-i)/(o-i)*100))})}}}(r),r.exports.template={v:3,t:[" ",{p:[13,1,305],t:7,e:"div",a:{"class":"bar"},f:[{p:[14,3,326],t:7,e:"div",a:{"class":["barFill ",{t:2,r:"state",p:[14,23,346]}],style:["width: ",{t:2,r:"percentage",p:[14,48,371]},"%"]}}," ",{p:[15,3,398],t:7,e:"span",a:{"class":"barText"},f:[{t:16,p:[15,25,420]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],343:[function(t,e,n){var a=t(341),r={exports:{}};!function(e){"use strict";var n=t(482),a=t(481);e.exports={computed:{clickable:function(){return!this.get("enabled")||this.get("state")&&"toggle"!=this.get("state")?!1:!0},enabled:function(){return this.get("config.status")===n.UI_INTERACTIVE?!0:!1},styles:function(){var t="";if(this.get("class")&&(t+=" "+this.get("class")),this.get("tooltip-side")&&(t=" tooltip-"+this.get("tooltip-side")),this.get("grid")&&(t+=" gridable"),this.get("enabled")){var e=this.get("state"),n=this.get("style");return e?"inactive "+e+" "+t:"active normal "+n+" "+t}return"inactive disabled "+t}},oninit:function(){var t=this;this.on("press",function(e){var n=t.get(),r=n.action,i=n.params;(0,a.act)(t.get("config.ref"),r,i),e.node.blur()})},data:{iconStackToHTML:function(t){var e="",n=t.split(",");if(n.length){e+='';for(var a=n,r=Array.isArray(a),i=0,a=r?a:a[Symbol.iterator]();;){var o;if(r){if(i>=a.length)break;o=a[i++]}else{if(i=a.next(),i.done)break;o=i.value}var s=o,p=/([\w\-]+)\s*(\dx)/g,u=p.exec(s),c=u[1],l=u[2];e+=''}}return e&&(e+=""),e}}}}(r),r.exports.template={v:3,t:[" ",{p:[70,1,2019],t:7,e:"span",a:{"class":["button ",{t:2,r:"styles",p:[70,21,2039]}],unselectable:"on","data-tooltip":[{t:2,r:"tooltip",p:[73,17,2124]}]},m:[{t:4,f:["tabindex='0'"],r:"clickable",p:[72,3,2075]}],v:{"mouseover-mousemove":"hover",mouseleave:"unhover","click-enter":{n:[{t:4,f:["press"],r:"clickable",p:[76,19,2217]}],d:[]}},f:[{t:4,f:[{p:[78,5,2265],t:7,e:"i",a:{"class":["fa fa-",{t:2,r:"icon",p:[78,21,2281]}]}}],n:50,r:"icon",p:[77,3,2247]}," ",{t:4,f:[{t:3,x:{r:["iconStackToHTML","icon_stack"],s:"_0(_1)"},p:[81,6,2335]}],n:50,r:"icon_stack",p:[80,3,2310]}," ",{t:16,p:[83,3,2383]}]}]},e.exports=a.extend(r.exports)},{341:341,481:481,482:482}],344:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"display"},f:[{t:4,f:[{p:[3,5,44],t:7,e:"header",f:[{p:[4,7,60],t:7,e:"h3",f:[{t:2,r:"title",p:[4,11,64]}]}," ",{t:4,f:[{p:[6,9,110],t:7,e:"div",a:{"class":"buttonRight"},f:[{t:16,n:"button",p:[6,34,135]}]}],n:50,r:"button",p:[5,7,86]}]}],n:50,r:"title",p:[2,3,25]}," ",{p:[10,3,202],t:7,e:"article",f:[{t:16,p:[11,5,217]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],345:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.on("clear",function(){t.set("value",""),t.find("input").focus()})}}}(r),r.exports.template={v:3,t:[" ",{p:[12,1,170],t:7,e:"input",a:{type:"text",value:[{t:2,r:"value",p:[12,27,196]}],placeholder:[{t:2,r:"placeholder",p:[12,51,220]}]}}," ",{p:[13,1,240],t:7,e:"ui-button",a:{icon:"refresh"},v:{press:"clear"}}]},e.exports=a.extend(r.exports)},{341:341}],346:[function(t,e,n){var a=t(341),r={exports:{}};!function(e){"use strict";e.exports={data:{graph:t(338),xaccessor:function(t){return t.x},yaccessor:function(t){return t.y}},computed:{size:function(){var t=this.get("points");return t[0].length},scale:function(){var t=this.get("points");return Math.max.apply(Math,Array.map(t,function(t){return Math.max.apply(Math,Array.map(t,function(t){return t.y}))}))},xaxis:function(){var t=this.get("xinc"),e=this.get("size");return Array.from(Array(e).keys()).filter(function(e){return e&&e%t==0})},yaxis:function(){var t=this.get("yinc"),e=this.get("scale");return Array.from(Array(t).keys()).map(function(t){return Math.round(e*(++t/100)*10)})}},oninit:function(){var t=this;this.on({enter:function(t){this.set("selected",t.index.count)},exit:function(t){this.set("selected")}}),window.addEventListener("resize",function(e){t.set("width",t.el.clientWidth)})},onrender:function(){this.set("width",this.el.clientWidth)}}}(r),r.exports.template={v:3,t:[" ",{p:[47,1,1269],t:7,e:"svg",a:{"class":"linegraph",width:"100%",height:[{t:2,x:{r:["height"],s:"_0+10"},p:[47,45,1313]}]},f:[{p:[48,3,1334],t:7,e:"g",a:{transform:"translate(0, 5)"},f:[{t:4,f:[{t:4,f:[{p:[51,9,1504],t:7,e:"line",a:{x1:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[51,19,1514]}],x2:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[51,38,1533]}],y1:"0",y2:[{t:2,r:"height",p:[51,64,1559]}],stroke:"darkgray"}}," ",{t:4,f:[{p:[53,11,1635],t:7,e:"text",a:{x:[{t:2,x:{r:["xscale","."],s:"_0(_1)"},p:[53,20,1644]}],y:[{t:2,x:{r:["height"],s:"_0-5"},p:[53,38,1662]}],"text-anchor":"middle",fill:"white"},f:[{t:2,x:{r:["size",".","xfactor"],s:"(_0-_1)*_2"},p:[53,88,1712]}," ",{t:2,r:"xunit",p:[53,113,1737]}]}],n:50,x:{r:["@index"],s:"_0%2==0"},p:[52,9,1600]}],n:52,r:"xaxis",p:[50,7,1479]}," ",{t:4,f:[{p:[57,9,1820],t:7,e:"line",a:{x1:"0",x2:[{t:2,r:"width",p:[57,26,1837]}],y1:[{t:2,x:{r:["yscale","."],s:"_0(_1)"},p:[57,41,1852]}],y2:[{t:2,x:{r:["yscale","."],s:"_0(_1)"},p:[57,60,1871]}],stroke:"darkgray"}}," ",{p:[58,9,1915],t:7,e:"text",a:{x:"0",y:[{t:2,x:{r:["yscale","."],s:"_0(_1)-5"},p:[58,24,1930]}],"text-anchor":"begin",fill:"white"},f:[{t:2,x:{r:[".","yfactor"],s:"_0*_1"},p:[58,76,1982]}," ",{t:2,r:"yunit",p:[58,92,1998]}]}],n:52,r:"yaxis",p:[56,7,1795]}," ",{t:4,f:[{p:[61,9,2071],t:7,e:"path",a:{d:[{t:2,x:{r:["area.path"],s:"_0.print()"},p:[61,18,2080]}],fill:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[61,47,2109]}],opacity:"0.1"}}],n:52,i:"curve",r:"curves",p:[60,7,2039]}," ",{t:4,f:[{p:[64,9,2200],t:7,e:"path",a:{d:[{t:2,x:{r:["line.path"],s:"_0.print()"},p:[64,18,2209]}],stroke:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[64,49,2240]}],fill:"none"}}],n:52, i:"curve",r:"curves",p:[63,7,2168]}," ",{t:4,f:[{t:4,f:[{p:[68,11,2375],t:7,e:"circle",a:{transform:["translate(",{t:2,r:".",p:[68,40,2404]},")"],r:[{t:2,x:{r:["selected","count"],s:"_0==_1?10:4"},p:[68,51,2415]}],fill:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[68,89,2453]}]},v:{mouseenter:"enter",mouseleave:"exit"}}],n:52,i:"count",x:{r:["line.path"],s:"_0.points()"},p:[67,9,2329]}],n:52,i:"curve",r:"curves",p:[66,7,2297]}," ",{t:4,f:[{t:4,f:[{t:4,f:[{p:[74,13,2678],t:7,e:"text",a:{transform:["translate(",{t:2,r:".",p:[74,40,2705]},") ",{t:2,x:{r:["count","size"],s:'_0<=_1/2?"translate(15, 4)":"translate(-15, 4)"'},p:[74,47,2712]}],"text-anchor":[{t:2,x:{r:["count","size"],s:'_0<=_1/2?"start":"end"'},p:[74,126,2791]}],fill:"white"},f:[{t:2,x:{r:["count","item","yfactor"],s:"_1[_0].y*_2"},p:[75,15,2861]}," ",{t:2,r:"yunit",p:[75,43,2889]}," @ ",{t:2,x:{r:["size","count","item","xfactor"],s:"(_0-_2[_1].x)*_3"},p:[75,55,2901]}," ",{t:2,r:"xunit",p:[75,92,2938]}]}],n:50,x:{r:["selected","count"],s:"_0==_1"},p:[73,11,2638]}],n:52,i:"count",x:{r:["line.path"],s:"_0.points()"},p:[72,9,2592]}],n:52,i:"curve",r:"curves",p:[71,7,2560]}," ",{t:4,f:[{p:[81,9,3063],t:7,e:"g",a:{transform:["translate(",{t:2,x:{r:["width","curves.length","@index"],s:"(_0/(_1+1))*(_2+1)"},p:[81,33,3087]},", 10)"]},f:[{p:[82,11,3154],t:7,e:"circle",a:{r:"4",fill:[{t:2,rx:{r:"colors",m:[{t:30,n:"curve"}]},p:[82,31,3174]}]}}," ",{p:[83,11,3206],t:7,e:"text",a:{x:"8",y:"4",fill:"white"},f:[{t:2,rx:{r:"legend",m:[{t:30,n:"curve"}]},p:[83,42,3237]}]}]}],n:52,i:"curve",r:"curves",p:[80,7,3031]}],x:{r:["graph","points","xaccessor","yaccessor","width","height"],s:"_0({data:_1,xaccessor:_2,yaccessor:_3,width:_4,height:_5})"},p:[49,5,1371]}]}]}]},e.exports=a.extend(r.exports)},{338:338,341:341}],347:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"notice"},f:[{t:16,p:[2,3,24]}]}]},e.exports=a.extend(r.exports)},{341:341}],348:[function(t,e,n){var a=t(341),r={exports:{}};!function(e){"use strict";var n=t(481),a=t(483);e.exports={oninit:function(){var t=this,e=a.resize.bind(this),r=function(){return t.set({resize:!1,x:null,y:null})};this.observe("config.fancy",function(a,i,o){(0,n.winset)(t.get("config.window"),"can-resize",!a),a?(document.addEventListener("mousemove",e),document.addEventListener("mouseup",r)):(document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",r))}),this.on("resize",function(){return t.toggle("resize")})}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[28,3,766],t:7,e:"div",a:{"class":"resize"},v:{mousedown:"resize"}}],n:50,r:"config.fancy",p:[27,1,742]}]},e.exports=a.extend(r.exports)},{341:341,481:481,483:483}],349:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"section",a:{"class":[{t:4,f:["candystripe"],r:"candystripe",p:[1,17,16]}]},f:[{t:4,f:[{p:[3,5,84],t:7,e:"span",a:{"class":"label",style:[{t:4,f:["color:",{t:2,r:"labelcolor",p:[3,53,132]}],r:"labelcolor",p:[3,32,111]}]},f:[{t:2,r:"label",p:[3,84,163]},":"]}],n:50,r:"label",p:[2,3,65]}," ",{t:4,f:[{t:16,p:[6,5,215]}],n:50,r:"nowrap",p:[5,3,195]},{t:4,n:51,f:[{p:[8,5,242],t:7,e:"div",a:{"class":"content",style:[{t:4,f:["float:right;"],r:"right",p:[8,33,270]}]},f:[{t:16,p:[9,7,312]}]}],r:"nowrap"}]}]},e.exports=a.extend(r.exports)},{341:341}],350:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"subdisplay"},f:[{t:4,f:[{p:[3,5,47],t:7,e:"header",f:[{p:[4,7,63],t:7,e:"h4",f:[{t:2,r:"title",p:[4,11,67]}]}," ",{t:4,f:[{t:16,n:"button",p:[5,21,103]}],n:50,r:"button",p:[5,7,89]}]}],n:50,r:"title",p:[2,3,28]}," ",{p:[8,3,156],t:7,e:"article",f:[{t:16,p:[9,5,171]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],351:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={oninit:function(){var t=this;this.set("active",this.findComponent("tab").get("name")),this.on("switch",function(e){t.set("active",e.node.textContent.trim())}),this.observe("active",function(e,n,a){for(var r=t.findAllComponents("tab"),i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;p.set("shown",p.get("name")===e)}})}}}(r),r.exports.template={v:3,t:[" "," ",{p:[20,1,524],t:7,e:"header",f:[{t:4,f:[{p:[22,5,556],t:7,e:"ui-button",a:{pane:[{t:2,r:".",p:[22,22,573]}]},v:{press:"switch"},f:[{t:2,r:".",p:[22,47,598]}]}],n:52,r:"tabs",p:[21,3,536]}]}," ",{p:[25,1,641],t:7,e:"ui-display",f:[{t:8,r:"content",p:[26,3,657]}]}]},r.exports.components=r.exports.components||{};var i={tab:t(352)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,352:352}],352:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:16,p:[2,3,17]}],n:50,r:"shown",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{341:341}],353:[function(t,e,n){var a=t(341),r={exports:{}};!function(e){"use strict";var n=t(482),a=t(481),r=t(483);e.exports={computed:{visualStatus:function(){switch(this.get("config.status")){case n.UI_INTERACTIVE:return"good";case n.UI_UPDATE:return"average";case n.UI_DISABLED:return"bad";default:return"bad"}}},oninit:function(){var t=this,e=r.drag.bind(this),n=function(e){return t.set({drag:!1,x:null,y:null})};this.observe("config.fancy",function(r,i,o){(0,a.winset)(t.get("config.window"),"titlebar",!r&&t.get("config.titlebar")),r?(document.addEventListener("mousemove",e),document.addEventListener("mouseup",n)):(document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",n))}),this.on({drag:function(){this.toggle("drag")},close:function(){(0,a.winset)(this.get("config.window"),"is-visible",!1),window.location.href=(0,a.href)({command:"uiclose "+this.get("config.ref")},"winset")},minimize:function(){(0,a.winset)(this.get("config.window"),"is-minimized",!0)}})}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[50,3,1440],t:7,e:"header",a:{"class":"titlebar"},v:{mousedown:"drag"},f:[{p:[51,5,1491],t:7,e:"i",a:{"class":["statusicon fa fa-eye fa-2x ",{t:2,r:"visualStatus",p:[51,42,1528]}]}}," ",{p:[52,5,1556],t:7,e:"span",a:{"class":"title"},f:[{t:16,p:[52,25,1576]}]}," ",{t:4,f:[{p:[54,7,1626],t:7,e:"i",a:{"class":"minimize fa fa-minus fa-2x"},v:{click:"minimize"}}," ",{p:[55,7,1696],t:7,e:"i",a:{"class":"close fa fa-close fa-2x"},v:{click:"close"}}],n:50,r:"config.fancy",p:[53,5,1598]}]}],n:50,r:"config.titlebar",p:[49,1,1413]}]},e.exports=a.extend(r.exports)},{341:341,481:481,482:482,483:483}],354:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";var e=[11,10,9,8];t.exports={data:{userAgent:navigator.userAgent},computed:{ie:function(){if(document.documentMode)return document.documentMode;for(var t in e){var n=document.createElement("div");if(n.innerHTML="",n.getElementsByTagName("span").length)return t}}},oninit:function(){var t=this;this.on("debug",function(){return t.toggle("debug")})}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[27,3,662],t:7,e:"ui-notice",f:[{p:[28,5,679],t:7,e:"span",f:["You have an old (IE",{t:2,r:"ie",p:[28,30,704]},"), end-of-life (click 'EOL Info' for more information) version of Internet Explorer installed."]},{p:[28,137,811],t:7,e:"br"}," ",{p:[29,5,822],t:7,e:"span",f:["To upgrade, click 'Upgrade IE' to download IE11 from Microsoft."]},{p:[29,81,898],t:7,e:"br"}," ",{p:[30,5,909],t:7,e:"span",f:["If you are unable to upgrade directly, click 'IE VMs' to download a VM with IE11 or Edge from Microsoft."]},{p:[30,122,1026],t:7,e:"br"}," ",{p:[31,5,1037],t:7,e:"span",f:["Otherwise, click 'No Frills' below to disable potentially incompatible features (and this message)."]}," ",{p:[32,5,1155],t:7,e:"hr"}," ",{p:[33,5,1166],t:7,e:"ui-button",a:{icon:"close",action:"tgui:nofrills"},f:["No Frills"]}," ",{p:[34,5,1240],t:7,e:"ui-button",a:{icon:"internet-explorer",action:"tgui:link",params:'{"url": "http://windows.microsoft.com/en-us/internet-explorer/download-ie"}'},f:["Upgrade IE"]}," ",{p:[36,5,1416],t:7,e:"ui-button",a:{icon:"edge",action:"tgui:link",params:'{"url": "https://dev.windows.com/en-us/microsoft-edge/tools/vms"}'},f:["IE VMs"]}," ",{p:[38,5,1565],t:7,e:"ui-button",a:{icon:"info",action:"tgui:link",params:'{"url": "https://support.microsoft.com/en-us/lifecycle#gp/Microsoft-Internet-Explorer"}'},f:["EOL Info"]}," ",{p:[40,5,1738],t:7,e:"ui-button",a:{icon:"bug"},v:{press:"debug"},f:["Debug Info"]}," ",{t:4,f:[{p:[42,7,1826],t:7,e:"hr"}," ",{p:[43,7,1839],t:7,e:"span",f:["Detected: IE",{t:2,r:"ie",p:[43,25,1857]}]},{p:[43,38,1870],t:7,e:"br"}," ",{p:[44,7,1883],t:7,e:"span",f:["User Agent: ",{t:2,r:"userAgent",p:[44,25,1901]}]}],n:50,r:"debug",p:[41,5,1805]}]}],n:50,x:{r:["config.fancy","ie"],s:"_0&&_1&&_1<11"},p:[26,1,621]}]},e.exports=a.extend(r.exports)},{341:341}],355:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},shockState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[22,1,348],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[23,2,384],t:7,e:"ui-section",a:{label:"Main"},f:[{p:[24,3,413],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.power.main"],s:"_0(_1)"},p:[24,16,426]}]},f:[{t:2,x:{r:["data.power.main"],s:'_0?"Online":"Offline"'},p:[24,49,459]}]}," ",{t:4,f:["[ ",{p:[26,6,567],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.main_1","data.wires.main_2"],s:"!_0||!_1"},p:[25,3,512]},{t:4,n:51,f:[{t:4,f:["[ ",{t:2,r:"data.power.main_timeleft",p:[29,7,674]}," seconds left ]"],n:50,x:{r:["data.power.main_timeleft"],s:"_0>0"},p:[28,4,630]}],x:{r:["data.wires.main_1","data.wires.main_2"],s:"!_0||!_1"}}," ",{p:[32,3,744],t:7,e:"div",a:{style:"float:right"},f:[{p:[33,4,774],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"disrupt-main",state:[{t:2,x:{r:["data.power.main"],s:'_0?null:"disabled"'},p:[33,63,833]}]},f:["Disrupt"]}]}]}," ",{p:[36,2,922],t:7,e:"ui-section",a:{label:"Backup"},f:[{p:[37,3,953],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.power.backup"],s:"_0(_1)"},p:[37,16,966]}]},f:[{t:2,x:{r:["data.power.backup"],s:'_0?"Online":"Offline"'},p:[37,51,1001]}]}," ",{t:4,f:["[ ",{p:[39,6,1115],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.backup_1","data.wires.backup_2"],s:"!_0||!_1"},p:[38,3,1056]},{t:4,n:51,f:[{t:4,f:["[ ",{t:2,r:"data.power.backup_timeleft",p:[42,7,1224]}," seconds left ]"],n:50,x:{r:["data.power.backup_timeleft"],s:"_0>0"},p:[41,4,1178]}],x:{r:["data.wires.backup_1","data.wires.backup_2"],s:"!_0||!_1"}}," ",{p:[45,3,1296],t:7,e:"div",a:{style:"float:right"},f:[{p:[46,4,1326],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"disrupt-backup",state:[{t:2,x:{r:["data.power.backup"],s:'_0?null:"disabled"'},p:[46,65,1387]}]},f:["Disrupt"]}]}]}," ",{p:[49,2,1478],t:7,e:"ui-section",a:{label:"Electrify"},f:[{p:[50,3,1512],t:7,e:"span",a:{"class":[{t:2,x:{r:["shockState","data.shock"],s:"_0(_1)"},p:[50,16,1525]}]},f:[{t:2,x:{r:["data.shock"],s:'_0==2?"Safe":"Electrified"'},p:[50,44,1553]}]}," ",{t:4,f:["[ ",{p:[52,6,1640],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.shock"],s:"!_0"},p:[51,3,1608]},{t:4,n:51,f:[{t:4,f:["[ ",{p:[55,7,1742],t:7,e:"span",a:{"class":"bad"},f:[{t:2,r:"data.shock_timeleft",p:[55,25,1760]}," seconds left"]}," ]"],n:50,x:{r:["data.shock_timeleft"],s:"_0>0"},p:[54,4,1703]}," ",{t:4,f:["[ ",{p:[58,7,1863],t:7,e:"span",a:{"class":"bad"},f:["Permanent"]}," ]"],n:50,x:{r:["data.shock_timeleft"],s:"_0==-1"},p:[57,4,1822]}],x:{r:["data.wires.shock"],s:"!_0"}}," ",{p:[61,3,1926],t:7,e:"div",a:{style:"float:right"},f:[{p:[62,4,1956],t:7,e:"ui-button",a:{icon:"wrench",action:"shock-restore",state:[{t:2,x:{r:["data.wires.shock","data.shock"],s:'_0&&_1==0?null:"disabled"'},p:[62,59,2011]}]},f:["Restore"]}," ",{p:[63,4,2094],t:7,e:"ui-button",a:{icon:"bolt",action:"shock-temp",state:[{t:2,x:{r:["data.wires.shock"],s:"!_0"},p:[63,54,2144]}]},f:["Set (Temporary)"]}," ",{p:[64,4,2199],t:7,e:"ui-button",a:{icon:"bolt",action:"shock-perm",state:[{t:2,x:{r:["data.wires.shock"],s:"!_0"},p:[64,53,2248]}]},f:["Set (Permanent)"]}]}]}]}," ",{p:[68,1,2341],t:7,e:"ui-display",a:{title:"Access & Door Control"},f:[{p:[69,2,2386],t:7,e:"ui-section",a:{label:"ID Scan"},f:[{t:4,f:["[ ",{p:[71,6,2455],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.id_scanner"],s:"!_0"},p:[70,3,2418]}," ",{p:[73,3,2516],t:7,e:"div",a:{style:"float:right"},f:[{p:[74,4,2546],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.id_scanner"],s:"!_0"},p:[74,22,2564]}],icon:"power-off",action:"idscan-on",style:[{t:2,x:{r:["data.id_scanner"],s:'_0?"selected":""'},p:[74,93,2635]}]},f:["Enabled"]}," ",{p:[75,4,2698],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.id_scanner"],s:"!_0"},p:[75,22,2716]}],icon:"close",action:"idscan-off",style:[{t:2,x:{r:["data.id_scanner"],s:'_0?"":"selected"'},p:[75,90,2784]}]},f:["Disabled"]}]}]}," ",{p:[78,2,2872],t:7,e:"ui-section",a:{label:"Emergency Access"},f:[{p:[79,3,2913],t:7,e:"div",a:{style:"float:right"},f:[{p:[80,4,2943],t:7,e:"ui-button",a:{icon:"power-off",action:"emergency-on",style:[{t:2,x:{r:["data.emergency"],s:'_0?"selected":""'},p:[80,61,3e3]}]},f:["Enabled"]}," ",{p:[81,4,3062],t:7,e:"ui-button",a:{icon:"close",action:"emergency-off",style:[{t:2,x:{r:["data.emergency"],s:'_0?"":"selected"'},p:[81,58,3116]}]},f:["Disabled"]}]}]}," ",{p:[84,2,3203],t:7,e:"br"}," ",{p:[85,2,3212],t:7,e:"ui-section",a:{label:"Door bolts"},f:[{t:4,f:["[ ",{p:[87,6,3279],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.bolts"],s:"!_0"},p:[86,3,3247]}," ",{p:[89,3,3340],t:7,e:"div",a:{style:"float:right"},f:[{p:[90,4,3370],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.bolts"],s:"!_0"},p:[90,22,3388]}],icon:"unlock",action:"bolt-raise",style:[{t:2,x:{r:["data.locked"],s:'_0?"":"selected"'},p:[90,85,3451]}]},f:["Raised"]}," ",{p:[91,4,3509],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.bolts"],s:"!_0"},p:[91,22,3527]}],icon:"lock",action:"bolt-drop",style:[{t:2,x:{r:["data.locked"],s:'_0?"selected":""'},p:[91,82,3587]}]},f:["Dropped"]}]}]}," ",{p:[94,2,3670],t:7,e:"ui-section",a:{label:"Door bolt lights"},f:[{t:4,f:["[ ",{p:[96,6,3744],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.lights"],s:"!_0"},p:[95,3,3711]}," ",{p:[98,3,3805],t:7,e:"div",a:{style:"float:right"},f:[{p:[99,4,3835],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.lights"],s:"!_0"},p:[99,22,3853]}],icon:"power-off",action:"light-on",style:[{t:2,x:{r:["data.lights"],s:'_0?"selected":""'},p:[99,88,3919]}]},f:["Enabled"]}," ",{p:[100,4,3978],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.lights"],s:"!_0"},p:[100,22,3996]}],icon:"close",action:"light-off",style:[{t:2,x:{r:["data.lights"],s:'_0?"":"selected"'},p:[100,85,4059]}]},f:["Disabled"]}]}]}," ",{p:[103,2,4143],t:7,e:"ui-section",a:{label:"Door force sensors"},f:[{t:4,f:["[ ",{p:[105,6,4217],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.safe"],s:"!_0"},p:[104,3,4186]}," ",{p:[107,3,4278],t:7,e:"div",a:{style:"float:right"},f:[{p:[108,4,4308],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.safe"],s:"!_0"},p:[108,22,4326]}],icon:"power-off",action:"safe-on",style:[{t:2,x:{r:["data.safe"],s:'_0?"selected":""'},p:[108,85,4389]}]},f:["Enabled"]}," ",{p:[109,4,4446],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.safe"],s:"!_0"},p:[109,22,4464]}],icon:"close",action:"safe-off",style:[{t:2,x:{r:["data.safe"],s:'_0?"":"selected"'},p:[109,82,4524]}]},f:["Disabled"]}]}]}," ",{p:[112,2,4606],t:7,e:"ui-section",a:{label:"Door timing safety"},f:[{t:4,f:["[ ",{p:[114,6,4682],t:7,e:"span",a:{"class":"bad"},f:["Wires have been cut"]}," ]"],n:50,x:{r:["data.wires.timing"],s:"!_0"},p:[113,3,4649]}," ",{p:[116,3,4743],t:7,e:"div",a:{style:"float:right"},f:[{p:[117,4,4773],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.timing"],s:"!_0"},p:[117,22,4791]}],icon:"power-off",action:"speed-on",style:[{t:2,x:{r:["data.speed"],s:'_0?"selected":""'},p:[117,88,4857]}]},f:["Enabled"]}," ",{p:[118,4,4915],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.wires.timing"],s:"!_0"},p:[118,22,4933]}],icon:"close",action:"speed-off",style:[{t:2,x:{r:["data.speed"],s:'_0?"":"selected"'},p:[118,85,4996]}]},f:["Disabled"]}]}]}," ",{p:[121,2,5079],t:7,e:"br"}," ",{p:[122,2,5088],t:7,e:"ui-section",a:{label:"Door control"},f:[{t:4,f:["[ ",{p:[124,6,5166],t:7,e:"span",a:{"class":"bad"},f:["Door is ",{t:2,x:{r:["data.locked","data.welded"],s:'(_0?"bolted":"")+(_0&&_1?" and ":"")+(_1?"welded":"")'},p:[124,32,5192]}]}," ]"],n:50,x:{r:["data.locked","data.welded"],s:"_0||_1"},p:[123,3,5125]}," ",{p:[126,3,5327],t:7,e:"div",a:{style:"float:right"},f:[{p:[127,4,5357],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.locked","data.welded","data.opened"],s:'(_0||_1)||(_2&&"disabled")'},p:[127,22,5375]}],icon:"sign-out",action:"open-close"},f:["Open door"]}," ",{p:[128,4,5502],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.locked","data.welded","data.opened"],s:'(_0||_1)||(!_2&&"disabled")'},p:[128,22,5520]}],icon:"sign-in",action:"open-close"},f:["Close door"]}]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],356:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" "," "," "," "," ",{p:[7,1,267],t:7,e:"ui-notice",f:[{t:4,f:[{p:[9,5,312],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[10,7,355],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[10,24,372]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[10,75,423]}]}]}],n:50,r:"data.siliconUser",p:[8,3,282]},{t:4,n:51,f:[{p:[13,5,514],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,31,540]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[16,1,625],t:7,e:"status"}," ",{t:4,f:[{t:4,f:[{p:[19,7,719],t:7,e:"ui-display",a:{title:"Air Controls"},f:[{p:[20,9,762],t:7,e:"ui-section",f:[{p:[21,11,786],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"exclamation-triangle":"exclamation"'},p:[21,28,803]}],style:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"caution":null'},p:[21,98,873]}],action:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"reset":"alarm"'},p:[22,23,937]}]},f:["Area Atmosphere Alarm"]}]}," ",{p:[24,9,1045],t:7,e:"ui-section",f:[{p:[25,11,1069],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==3?"exclamation-triangle":"exclamation"'},p:[25,28,1086]}],style:[{t:2,x:{r:["data.mode"],s:'_0==3?"danger":null'},p:[25,96,1154]}],action:"mode",params:['{"mode": ',{t:2,x:{r:["data.mode"],s:"_0==3?1:3"},p:[26,44,1236]},"}"]},f:["Panic Siphon"]}]}," ",{p:[28,9,1322],t:7,e:"br"}," ",{p:[29,9,1337],t:7,e:"ui-section",f:[{p:[30,11,1361],t:7,e:"ui-button",a:{icon:"sign-out",action:"tgui:view",params:'{"screen": "vents"}'},f:["Vent Controls"]}]}," ",{p:[32,9,1494],t:7,e:"ui-section",f:[{p:[33,11,1518],t:7,e:"ui-button",a:{icon:"filter",action:"tgui:view",params:'{"screen": "scrubbers"}'},f:["Scrubber Controls"]}]}," ",{p:[35,9,1657],t:7,e:"ui-section",f:[{p:[36,11,1681],t:7,e:"ui-button",a:{icon:"cog",action:"tgui:view",params:'{"screen": "modes"}'},f:["Operating Mode"]}]}," ",{p:[38,9,1810],t:7,e:"ui-section",f:[{p:[39,11,1834],t:7,e:"ui-button",a:{icon:"bar-chart",action:"tgui:view",params:'{"screen": "thresholds"}'},f:["Alarm Thresholds"]}]}]}],n:50,x:{r:["config.screen"],s:'_0=="home"'},p:[18,3,680]},{t:4,n:51,f:[{t:4,n:50,x:{r:["config.screen"],s:'_0=="vents"'},f:[{p:[43,5,2032],t:7,e:"vents"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&(_0=="scrubbers")'},f:[" ",{p:[45,5,2089],t:7,e:"scrubbers"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&((!(_0=="scrubbers"))&&(_0=="modes"))'},f:[" ",{p:[47,5,2146],t:7,e:"modes"}]},{t:4,n:50,x:{r:["config.screen"],s:'(!(_0=="vents"))&&((!(_0=="scrubbers"))&&((!(_0=="modes"))&&(_0=="thresholds")))'},f:[" ",{p:[49,5,2204],t:7,e:"thresholds"}]}],x:{r:["config.screen"],s:'_0=="home"'}}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[17,1,636]}]},r.exports.components=r.exports.components||{};var i={vents:t(362),modes:t(358),thresholds:t(361),status:t(360),scrubbers:t(359)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,358:358,359:359,360:360,361:361,362:362}],357:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-button",a:{icon:"arrow-left",action:"tgui:view",params:'{"screen": "home"}'},f:["Back"]}]},e.exports=a.extend(r.exports)},{341:341}],358:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,115],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Operating Modes",button:0},f:[" ",{t:4,f:[{p:[8,5,168],t:7,e:"ui-section",f:[{p:[9,7,188],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["selected"],s:'_0?"check-square-o":"square-o"'},p:[9,24,205]}],state:[{t:2,x:{r:["selected","danger"],s:'_0?_1?"danger":"selected":null'},p:[10,16,267]}],action:"mode",params:['{"mode": ',{t:2,r:"mode",p:[11,40,361]},"}"]},f:[{t:2,r:"name",p:[11,51,372]}]}]}],n:52,r:"data.modes",p:[7,3,142]}]}]},r.exports.components=r.exports.components||{};var i={back:t(357)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,357:357}],359:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" "," ",{p:{button:[{p:[6,5,185],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[9,5,242],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[9,27,264]}]},f:[{p:[10,7,287],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,323],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[11,26,340]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[11,68,382]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[12,46,459]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[12,66,479]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[12,80,493]}]}]}," ",{p:[14,7,558],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[15,9,593],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[15,26,610]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[15,71,655]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[16,50,738]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[16,70,758]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[16,88,776]}]}]}," ",{p:[18,7,858],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[19,9,894],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[19,26,911]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[19,70,955]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,1036]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[20,68,1056]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[20,84,1072]}]}]}," ",{p:[22,7,1148],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[23,9,1186],t:7,e:"filters"}]}]}],n:52,r:"data.scrubbers",p:[8,3,212]},{t:4,n:51,f:[{p:[27,5,1257],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},r.exports.components=r.exports.components||{};var i={filters:t(457),back:t(357)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,357:357,457:457}],360:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Status"},f:[{t:4,f:[{t:4,f:[{p:[4,7,110],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[4,26,129]}]},f:[{p:[5,6,146],t:7,e:"span",a:{"class":[{t:2,x:{r:["danger_level"],s:'_0==2?"bad":_0==1?"average":"good"'},p:[5,19,159]}]},f:[{t:2,x:{r:["value"],s:"Math.fixed(_0,2)"},p:[6,5,237]},{t:2,r:"unit",p:[6,29,261]}]}]}],n:52,r:"adata.environment_data",p:[3,5,70]}," ",{p:[10,5,322],t:7,e:"ui-section",a:{label:"Local Status"},f:[{p:[11,7,363],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.danger_level"],s:'_0==2?"bad bold":_0==1?"average bold":"good"'},p:[11,20,376]}]},f:[{t:2,x:{r:["data.danger_level"],s:'_0==2?"Danger (Internals Required)":_0==1?"Caution":"Optimal"'},p:[12,6,475]}]}]}," ",{p:[15,5,619],t:7,e:"ui-section",a:{label:"Area Status"},f:[{p:[16,7,659],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.atmos_alarm","data.fire_alarm"],s:'_0||_1?"bad bold":"good"'},p:[16,20,672]}]},f:[{t:2,x:{r:["data.atmos_alarm","fire_alarm"],s:'_0?"Atmosphere Alarm":_1?"Fire Alarm":"Nominal"'},p:[17,8,744]}]}]}],n:50,r:"data.environment_data",p:[2,3,35]},{t:4,n:51,f:[{p:[21,5,876],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[22,7,912],t:7,e:"span",a:{"class":"bad bold"},f:["Cannot obtain air sample for analysis."]}]}],r:"data.environment_data"}," ",{t:4,f:[{p:[26,5,1040],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[27,7,1076],t:7,e:"span",a:{"class":"bad bold"},f:["Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[25,3,1014]}]}]},e.exports=a.extend(r.exports)},{341:341}],361:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.css=" th, td {\r\n padding-right: 16px;\r\n text-align: left;\r\n }",r.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,116],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Alarm Thresholds",button:0},f:[" ",{p:[7,3,143],t:7,e:"table",f:[{p:[8,5,156],t:7,e:"thead",f:[{p:[8,12,163],t:7,e:"tr",f:[{p:[9,7,175],t:7,e:"th"}," ",{p:[10,7,192],t:7,e:"th",f:[{p:[10,11,196],t:7,e:"span",a:{"class":"bad"},f:["min2"]}]}," ",{p:[11,7,238],t:7,e:"th",f:[{p:[11,11,242],t:7,e:"span",a:{"class":"average"},f:["min1"]}]}," ",{p:[12,7,288],t:7,e:"th",f:[{p:[12,11,292],t:7,e:"span",a:{"class":"average"},f:["max1"]}]}," ",{p:[13,7,338],t:7,e:"th",f:[{p:[13,11,342],t:7,e:"span",a:{"class":"bad"},f:["max2"]}]}]}]}," ",{p:[15,5,401],t:7,e:"tbody",f:[{t:4,f:[{p:[16,32,441],t:7,e:"tr",f:[{p:[17,9,455],t:7,e:"th",f:[{t:3,r:"name",p:[17,13,459]}]}," ",{t:4,f:[{p:[18,27,502],t:7,e:"td",f:[{p:[19,11,518],t:7,e:"ui-button",a:{action:"threshold",params:['{"env": "',{t:2,r:"env",p:[19,58,565]},'", "var": "',{t:2,r:"val",p:[19,76,583]},'"}']},f:[{t:2,x:{r:["selected"],s:"Math.fixed(_0,2)"},p:[19,87,594]}]}]}],n:52,r:"settings",p:[18,9,484]}]}],n:52,r:"data.thresholds",p:[16,7,416]}]}," ",{p:[23,3,697],t:7,e:"table",f:[]}]}]}," "]},r.exports.components=r.exports.components||{};var i={back:t(357)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,357:357}],362:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,113],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Vent Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,166],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,188]}]},f:[{p:[9,7,211],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,264]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,306]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,383]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,403]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,417]}]}]}," ",{p:[13,7,482],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,517],t:7,e:"span",f:[{t:2,x:{r:["direction"],s:'_0=="release"?"Pressurizing":"Siphoning"'},p:[14,15,523]}]}]}," ",{p:[16,7,616],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[17,9,665],t:7,e:"ui-button",a:{icon:"sign-in",style:[{t:2,x:{r:["incheck"],s:'_0?"selected":null'},p:[17,42,698]}],action:"incheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[18,48,779]},'", "val": ',{t:2,r:"checks",p:[18,68,799]},"}"]},f:["Internal"]}," ",{p:[19,9,842],t:7,e:"ui-button",a:{icon:"sign-out",style:[{t:2,x:{r:["excheck"],s:'_0?"selected":null'},p:[19,43,876]}],action:"excheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,957]},'", "val": ',{t:2,r:"checks",p:[20,68,977]},"}"]},f:["External"]}]}," ",{t:4,f:[{p:[23,9,1064],t:7,e:"ui-section",a:{label:"Internal Target Pressure"},f:[{p:[24,11,1121],t:7,e:"ui-button",a:{icon:"pencil",action:"set_internal_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,33,1210]},'"}']},f:[{t:2,x:{r:["internal"],s:"Math.fixed(_0)"},p:[25,47,1224]}]}," ",{p:[26,11,1272],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["intdefault"],s:'_0?"disabled":null'},p:[26,44,1305]}],action:"reset_internal_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,33,1407]},'"}']},f:["Reset"]}]}],n:50,r:"incheck",p:[22,7,1039]}," ",{t:4,f:[{p:[31,11,1511],t:7,e:"ui-section",a:{label:"External Target Pressure"},f:[{p:[32,13,1570],t:7,e:"ui-button",a:{icon:"pencil",action:"set_external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[33,35,1661]},'"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[33,49,1675]}]}," ",{p:[34,13,1725],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[34,46,1758]}],action:"reset_external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[35,35,1862]},'"}']},f:["Reset"]}]}],n:50,r:"excheck",p:[30,7,1484]}]}],n:52,r:"data.vents",p:[7,3,140]},{t:4,n:51,f:[{p:[40,5,1973],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},r.exports.components=r.exports.components||{};var i={back:t(357)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,357:357}],363:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.css=" table {\r\n width: 100%;\r\n border-spacing: 2px;\r\n }\r\n th {\r\n text-align: left;\r\n }\r\n td {\r\n vertical-align: top;\r\n }\r\n td .button {\r\n margin-top: 4px\r\n }",r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",f:[{p:[3,5,34],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oneAccess"],s:'_0?"unlock":"lock"'},p:[3,22,51]}],action:"one_access"},f:[{t:2,x:{r:["data.oneAccess"],s:'_0?"One":"All"'},p:[3,82,111]}," Required"]}," ",{p:[4,5,172],t:7,e:"ui-button",a:{icon:"refresh",action:"clear"},f:["Clear"]}]}," ",{p:[6,3,251],t:7,e:"hr"}," ",{p:[7,3,260],t:7,e:"table",f:[{p:[8,3,271],t:7,e:"thead",f:[{p:[9,4,283],t:7,e:"tr",f:[{t:4,f:[{p:[10,5,315],t:7,e:"th",f:[{p:[10,9,319],t:7,e:"span",a:{"class":"highlight bold"},f:[{t:2,r:"name",p:[10,38,348]}]}]}],n:52,r:"data.regions",p:[9,8,287]}]}]}," ",{p:[13,3,403],t:7,e:"tbody",f:[{p:[14,4,415],t:7,e:"tr",f:[{t:4,f:[{p:[15,5,447],t:7,e:"td",f:[{t:4,f:[{p:[16,11,481],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["req"],s:'_0?"check-square-o":"square-o"'},p:[16,28,498]}],style:[{t:2,x:{r:["req"],s:'_0?"selected":null'},p:[16,76,546]}],action:"set",params:['{"access": "',{t:2,r:"id",p:[17,46,621]},'"}']},f:[{t:2,r:"name",p:[17,56,631]}]}," ",{p:[18,9,661],t:7,e:"br"}],n:52,r:"accesses",p:[15,9,451]}]}],n:52,r:"data.regions",p:[14,8,419]}]}]}]}," ",{p:[23,2,731],t:7,e:"hr"}," ",{p:[24,2,739],t:7,e:"span",a:{"class":"highlight bold"},f:["Unrestricted Access:"]}," ",{p:[25,2,798],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.unres_direction"],s:'_0&1?"check-square-o":"square-o"'},p:[25,19,815]}],style:[{t:2,x:{r:["data.unres_direction"],s:'_0&1?"selected":null'},p:[25,88,884]}],action:"direc_set",params:'{"unres_direction": "1"}'},f:["North"]}," ",{p:[26,2,1007],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.unres_direction"],s:'_0&4?"check-square-o":"square-o"'},p:[26,19,1024]}],style:[{t:2,x:{r:["data.unres_direction"],s:'_0&4?"selected":null'},p:[26,88,1093]}],action:"direc_set",params:'{"unres_direction": "4"}'},f:["East"]}," ",{p:[27,2,1215],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.unres_direction"],s:'_0&2?"check-square-o":"square-o"'},p:[27,19,1232]}],style:[{t:2,x:{r:["data.unres_direction"], s:'_0&2?"selected":null'},p:[27,88,1301]}],action:"direc_set",params:'{"unres_direction": "2"}'},f:["South"]}," ",{p:[28,2,1424],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.unres_direction"],s:'_0&8?"check-square-o":"square-o"'},p:[28,19,1441]}],style:[{t:2,x:{r:["data.unres_direction"],s:'_0&8?"selected":null'},p:[28,88,1510]}],action:"direc_set",params:'{"unres_direction": "8"}'},f:["West"]}]}," "]},e.exports=a.extend(r.exports)},{341:341}],364:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}}},computed:{malfAction:function(){switch(this.get("data.malfStatus")){case 1:return"hack";case 2:return"occupy";case 3:return"deoccupy"}},malfButton:function(){switch(this.get("data.malfStatus")){case 1:return"Override Programming";case 2:case 4:return"Shunt Core Process";case 3:return"Return to Main Core"}},malfIcon:function(){switch(this.get("data.malfStatus")){case 1:return"terminal";case 2:case 4:return"caret-square-o-down";case 3:return"caret-square-o-left"}},powerCellStatusState:function(){var t=this.get("data.powerCellStatus");return t>50?"good":t>25?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[46,2,1206],t:7,e:"ui-notice",f:[{p:[47,3,1221],t:7,e:"b",f:[{p:[47,6,1224],t:7,e:"h3",f:["SYSTEM FAILURE"]}]}," ",{p:[48,3,1255],t:7,e:"i",f:["I/O regulators malfunction detected! Waiting for system reboot..."]},{p:[48,75,1327],t:7,e:"br"}," Automatic reboot in ",{t:2,r:"data.failTime",p:[49,23,1355]}," seconds... ",{p:[50,3,1387],t:7,e:"ui-button",a:{icon:"refresh",action:"reboot"},f:["Reboot Now"]},{p:[50,67,1451],t:7,e:"br"},{p:[50,71,1455],t:7,e:"br"},{p:[50,75,1459],t:7,e:"br"}]}],n:50,r:"data.failTime",p:[45,1,1182]},{t:4,n:51,f:[{p:[53,2,1491],t:7,e:"ui-notice",f:[{t:4,f:[{p:[55,3,1535],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[56,5,1576],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[56,22,1593]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[56,73,1644]}]}]}],n:50,r:"data.siliconUser",p:[54,4,1507]},{t:4,n:51,f:[{p:[59,3,1732],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[59,29,1758]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[62,2,1846],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[63,4,1884],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[65,5,1967],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[65,18,1980]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[65,57,2019]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[64,3,1921]},{t:4,n:51,f:[{p:[67,5,2079],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[67,22,2096]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[67,75,2149]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[68,21,2212]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[71,4,2293],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[72,3,2332],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[72,16,2345]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[72,52,2381]}]}]}," ",{p:[74,4,2490],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[76,5,2567],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[76,38,2600]}],state:[{t:2,r:"powerCellStatusState",p:[76,71,2633]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[76,97,2659]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[75,3,2525]},{t:4,n:51,f:[{p:[78,5,2724],t:7,e:"span",a:{"class":"bad"},f:["Removed"]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[82,3,2830],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[84,4,2913],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[84,17,2926]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[84,55,2964]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[83,5,2868]},{t:4,n:51,f:[{p:[86,4,3026],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[86,21,3043]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[86,71,3093]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[87,22,3156]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[90,6,3236],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[90,19,3249]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[90,56,3286]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[81,4,2790]}]}," ",{p:[94,2,3445],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[96,3,3517],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[96,22,3536]}],nowrap:0},f:[{p:[97,5,3560],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.powerChannels",m:[{t:30,n:"@index"},"powerLoad"]},p:[97,26,3581]}]}," ",{p:[98,5,3634],t:7,e:"div",a:{"class":"content"},f:[{p:[98,26,3655],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[98,39,3668]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[98,73,3702]}]}]}," ",{p:[99,5,3751],t:7,e:"div",a:{"class":"content"},f:["[",{p:[99,27,3773],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[99,33,3779]}]},"]"]}," ",{p:[100,5,3849],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[102,6,3942],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[102,39,3975]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[103,30,4057]}]},f:["Auto"]}," ",{p:[104,6,4102],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[104,41,4137]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[105,13,4204]}]},f:["On"]}," ",{p:[106,6,4245],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[106,37,4276]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[107,13,4343]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[101,4,3895]}]}]}],n:52,r:"data.powerChannels",p:[95,4,3485]}," ",{p:[112,4,4439],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[113,3,4474],t:7,e:"span",a:{"class":"bold"},f:[{t:2,r:"adata.totalLoad",p:[113,22,4493]}]}]}]}," ",{t:4,f:[{p:[117,4,4585],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[118,3,4626],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[120,5,4727],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[120,22,4744]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[120,43,4765]}],action:[{t:2,r:"malfAction",p:[120,97,4819]}]},f:[{t:2,r:"malfButton",p:[120,113,4835]}]}],n:50,r:"data.malfStatus",p:[119,3,4698]}]}],n:50,r:"data.siliconUser",p:[116,2,4556]}," ",{p:[124,2,4903],t:7,e:"ui-notice",f:[{p:[125,4,4919],t:7,e:"ui-section",a:{label:"Emergency Light Fallback"},f:[{t:4,f:[{p:[127,8,5020],t:7,e:"span",f:[{t:2,x:{r:["data.emergencyLights"],s:'_0?"Enabled":"Disabled"'},p:[127,14,5026]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[126,6,4971]},{t:4,n:51,f:[{p:[129,8,5106],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"emergency_lighting"},f:[{t:2,x:{r:["data.emergencyLights"],s:'_0?"Enabled":"Disabled"'},p:[129,66,5164]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}," ",{p:[133,2,5275],t:7,e:"ui-notice",f:[{p:[134,4,5291],t:7,e:"ui-section",a:{label:"Night Shift Lighting"},f:[{t:4,f:[{p:[136,8,5388],t:7,e:"span",f:[{t:2,x:{r:["data.nightshiftLights"],s:'_0?"Enabled":"Disabled"'},p:[136,14,5394]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[135,6,5339]},{t:4,n:51,f:[{p:[138,8,5475],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"toggle_nightshift"},f:[{t:2,x:{r:["data.nightshiftLights"],s:'_0?"Enabled":"Disabled"'},p:[138,65,5532]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}," ",{p:[142,2,5644],t:7,e:"ui-notice",f:[{p:[143,4,5660],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[145,5,5741],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[145,11,5747]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[144,3,5695]},{t:4,n:51,f:[{p:[147,5,5819],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[147,22,5836]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[147,79,5893]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}],r:"data.failTime"}]},e.exports=a.extend(r.exports)},{341:341}],365:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Alarms"},f:[{p:[2,3,31],t:7,e:"ul",f:[{t:4,f:[{p:[4,7,72],t:7,e:"li",f:[{p:[4,11,76],t:7,e:"ui-button",a:{icon:"close",style:"danger",action:"clear",params:['{"zone": "',{t:2,r:".",p:[4,83,148]},'"}']},f:[{t:2,r:".",p:[4,92,157]}]}]}],n:52,r:"data.priority",p:[3,5,41]},{t:4,n:51,f:[{p:[6,7,201],t:7,e:"li",f:[{p:[6,11,205],t:7,e:"span",a:{"class":"good"},f:["No Priority Alerts"]}]}],r:"data.priority"}," ",{t:4,f:[{p:[9,7,303],t:7,e:"li",f:[{p:[9,11,307],t:7,e:"ui-button",a:{icon:"close",style:"caution",action:"clear",params:['{"zone": "',{t:2,r:".",p:[9,84,380]},'"}']},f:[{t:2,r:".",p:[9,93,389]}]}]}],n:52,r:"data.minor",p:[8,5,275]},{t:4,n:51,f:[{p:[11,7,433],t:7,e:"li",f:[{p:[11,11,437],t:7,e:"span",a:{"class":"good"},f:["No Minor Alerts"]}]}],r:"data.minor"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],366:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:[{t:2,x:{r:["data.tank","data.sensors.0.long_name"],s:"_0?_1:null"},p:[1,20,19]}]},f:[{t:4,f:[{p:[3,5,102],t:7,e:"ui-subdisplay",a:{title:[{t:2,x:{r:["data.tank","long_name"],s:"!_0?_1:null"},p:[3,27,124]}]},f:[{p:[4,7,167],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[5,3,200],t:7,e:"span",f:[{t:2,x:{r:["pressure"],s:"Math.fixed(_0,2)"},p:[5,9,206]}," kPa"]}]}," ",{t:4,f:[{p:[8,9,302],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[9,11,346],t:7,e:"span",f:[{t:2,x:{r:["temperature"],s:"Math.fixed(_0,2)"},p:[9,17,352]}," K"]}]}],n:50,r:"temperature",p:[7,7,273]}," ",{t:4,f:[{p:[13,9,462],t:7,e:"ui-section",a:{label:[{t:2,r:"id",p:[13,28,481]}]},f:[{p:[14,5,495],t:7,e:"span",f:[{t:2,x:{r:["."],s:"Math.fixed(_0,2)"},p:[14,11,501]},"%"]}]}],n:52,i:"id",r:"gases",p:[12,4,434]}]}],n:52,r:"adata.sensors",p:[2,3,73]}]}," ",{t:4,f:[{p:{button:[{p:[23,5,704],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}]},t:7,e:"ui-display",a:{title:"Controls",button:0},f:[" ",{p:[25,5,792],t:7,e:"ui-section",a:{label:"Input Injector"},f:[{p:[26,7,835],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputting"],s:'_0?"power-off":"close"'},p:[26,24,852]}],style:[{t:2,x:{r:["data.inputting"],s:'_0?"selected":null'},p:[26,75,903]}],action:"input"},f:[{t:2,x:{r:["data.inputting"],s:'_0?"Injecting":"Off"'},p:[27,9,968]}]}]}," ",{p:[29,5,1044],t:7,e:"ui-section",a:{label:"Input Rate"},f:[{p:[30,7,1083],t:7,e:"span",f:[{t:2,x:{r:["adata.inputRate"],s:"Math.fixed(_0)"},p:[30,13,1089]}," L/s"]}]}," ",{p:[32,5,1156],t:7,e:"ui-section",a:{label:"Output Regulator"},f:[{p:[33,7,1201],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputting"],s:'_0?"power-off":"close"'},p:[33,24,1218]}],style:[{t:2,x:{r:["data.outputting"],s:'_0?"selected":null'},p:[33,76,1270]}],action:"output"},f:[{t:2,x:{r:["data.outputting"],s:'_0?"Open":"Closed"'},p:[34,9,1337]}]}]}," ",{p:[36,5,1412],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[37,7,1456],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure"},f:[{t:2,x:{r:["adata.outputPressure"],s:"Math.round(_0)"},p:[37,50,1499]}," kPa"]}]}]}],n:50,r:"data.tank",p:[20,1,618]}]},e.exports=a.extend(r.exports)},{341:341}],367:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[8,5,360],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,390]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,518],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[9,11,524]}," kPa"]}]}," ",{p:[11,3,586],t:7,e:"ui-section",a:{label:"Filter"},f:[{t:4,f:[{p:[13,7,654],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[13,25,672]}],action:"filter",params:['{"mode": ',{t:2,r:"id",p:[14,42,748]},"}"]},f:[{t:2,r:"name",p:[14,51,757]}]}],n:52,r:"data.filter_types",p:[12,5,619]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],368:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[8,5,360],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,390]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,522],t:7,e:"span",f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,11,528]}," kPa"]}]}," ",{p:[11,3,594],t:7,e:"ui-section",a:{label:"Node 1"},f:[{p:[12,5,627],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[12,44,666]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,783],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,39,817]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,935],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,38,968]}],action:"node1",params:'{"concentration": 0.01}'}}," ",{p:[18,5,1087],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[18,43,1125]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1243],t:7,e:"span",f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,11,1249]},"%"]}]}," ",{p:[22,3,1319],t:7,e:"ui-section",a:{label:"Node 2"},f:[{p:[23,5,1352],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[23,44,1391]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1508],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,39,1542]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1660],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,38,1693]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1812],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[29,43,1850]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,1968],t:7,e:"span",f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,11,1974]},"%"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],369:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{t:4,f:[{p:[7,5,250],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,292],t:7,e:"ui-button",a:{icon:"pencil",action:"rate",params:'{"rate": "input"}'},f:["Set"]}," ",{p:[9,7,381],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,37,411]}],action:"rate",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,525],t:7,e:"span",f:[{t:2,x:{r:["adata.rate"],s:"Math.round(_0)"},p:[10,13,531]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,605],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,649],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[15,7,746],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,37,776]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,906],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[16,13,912]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=a.extend(r.exports)},{341:341}],370:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{p:[3,3,72],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:["Rename"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"data.borg.name",p:[1,20,19]}],button:0},f:[" ",{p:[5,2,149],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[6,4,181],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.borg.emagged"],s:'_0?"check-square-o":"square-o"'},p:[6,21,198]}],style:[{t:2,x:{r:["data.borg.emagged"],s:'_0?"selected":null'},p:[6,83,260]}],action:"toggle_emagged"},f:["Emagged"]}," ",{p:[7,4,351],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.borg.lockdown"],s:'_0?"check-square-o":"square-o"'},p:[7,21,368]}],style:[{t:2,x:{r:["data.borg.lockdown"],s:'_0?"selected":null'},p:[7,84,431]}],action:"toggle_lockdown"},f:["Locked down"]}," ",{p:[8,4,528],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.borg.scrambledcodes"],s:'_0?"check-square-o":"square-o"'},p:[8,21,545]}],style:[{t:2,x:{r:["data.borg.scrambledcodes"],s:'_0?"selected":null'},p:[8,90,614]}],action:"toggle_scrambledcodes"},f:["Scrambled codes"]}]}," ",{p:[10,2,741],t:7,e:"ui-section",a:{label:"Charge"},f:[{t:4,f:[{p:[12,4,803],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.cell.maxcharge",p:[12,25,824]}],value:[{t:2,r:"data.cell.charge",p:[12,57,856]}]},f:[{t:2,x:{r:["data.cell.charge"],s:"Math.round(_0)"},p:[12,79,878]}," / ",{t:2,x:{r:["data.cell.maxcharge"],s:"Math.round(_0)"},p:[12,114,913]}]}],n:50,x:{r:["data.cell.missing"],s:"!_0"},p:[11,3,772]},{t:4,n:51,f:[{p:[14,4,974],t:7,e:"span",a:{"class":"warning"},f:["Cell missing"]},{p:[14,45,1015],t:7,e:"br"}],x:{r:["data.cell.missing"],s:"!_0"}}," ",{p:[16,3,1035],t:7,e:"ui-button",a:{icon:"pencil",action:"set_charge"},f:["Set"]},{p:[16,63,1095],t:7,e:"ui-button",a:{icon:"eject",action:"change_cell"},f:["Change"]},{p:[16,126,1158],t:7,e:"ui-button",a:{icon:"trash","class":"bad",action:"remove_cell"},f:["Remove"]}]}," ",{p:[18,2,1252],t:7,e:"ui-section",a:{label:"Radio channels"},f:[{t:4,f:[{p:[20,4,1319],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["installed"],s:'_0?"check-square-o":"square-o"'},p:[20,21,1336]}],style:[{t:2,x:{r:["installed"],s:'_0?"selected":null'},p:[20,75,1390]}],action:"toggle_radio",params:['{"channel": "',{t:2,r:"name",p:[20,154,1469]},'"}']},f:[{t:2,r:"name",p:[20,166,1481]}]}],n:52,r:"data.channels",p:[19,3,1291]}]}," ",{p:[23,2,1533],t:7,e:"ui-section",a:{label:"Module"},f:[{t:4,f:[{p:[25,4,1591],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.borg.active_module","type"],s:'_0==_1?"check-square-o":"square-o"'},p:[25,21,1608]}],style:[{t:2,x:{r:["data.borg.active_module","type"],s:'_0==_1?"selected":null'},p:[25,97,1684]}],action:"setmodule",params:['{"module": "',{t:2,r:"type",p:[25,193,1780]},'"}']},f:[{t:2,r:"name",p:[25,205,1792]}]}],n:52,r:"data.modules",p:[24,3,1564]}]}," ",{p:[28,2,1844],t:7,e:"ui-section",a:{label:"Upgrades"},f:[{t:4,f:[{p:[30,4,1905],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["installed"],s:'_0?"check-square-o":"square-o"'},p:[30,21,1922]}],style:[{t:2,x:{r:["installed"],s:'_0?"selected":null'},p:[30,75,1976]}],action:"toggle_upgrade",params:['{"upgrade": "',{t:2,r:"type",p:[30,155,2056]},'"}']},f:[{t:2,r:"name",p:[30,167,2068]}]}],n:52,r:"data.upgrades",p:[29,3,1877]}]}," ",{p:[33,2,2120],t:7,e:"ui-section",a:{label:"Master AI"},f:[{t:4,f:[{p:[35,4,2177],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["connected"],s:'_0?"check-square-o":"square-o"'},p:[35,21,2194]}],style:[{t:2,x:{r:["connected"],s:'_0?"selected":null'},p:[35,75,2248]}],action:"slavetoai",params:['{"slavetoai": "',{t:2,r:"ref",p:[35,152,2325]},'"}']},f:[{t:2,r:"name",p:[35,163,2336]}]}],n:52,r:"data.ais",p:[34,3,2154]}]}]}," ",{p:{button:[{p:[41,3,2460],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.borg.lawupdate"],s:'_0?"check-square-o":"square-o"'},p:[41,20,2477]}],style:[{t:2,x:{r:["data.borg.lawupdate"],s:'_0?"selected":null'},p:[41,84,2541]}],action:"toggle_lawupdate"},f:["Lawsync"]}]},t:7,e:"ui-display",a:{title:"Laws",button:0},f:[" ",{t:4,f:[{p:[44,3,2672],t:7,e:"p",f:[{t:2,r:".",p:[44,6,2675]}]}],n:52,r:"data.laws",p:[43,2,2649]}]}]},e.exports=a.extend(r.exports)},{341:341}],371:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"selected":null'},p:[3,38,100]}],action:[{t:2,x:{r:["data.timing"],s:'_0?"stop":"start"'},p:[3,83,145]}]},f:[{t:2,x:{r:["data.timing"],s:'_0?"Stop":"Start"'},p:[3,119,181]}]}," ",{p:[4,5,233],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"flash",style:[{t:2,x:{r:["data.flash_charging"],s:'_0?"disabled":null'},p:[4,57,285]}]},f:[{t:2,x:{r:["data.flash_charging"],s:'_0?"Recharging":"Flash"'},p:[4,102,330]}]}]},t:7,e:"ui-display",a:{title:"Cell Timer",button:0},f:[" ",{p:[6,3,410],t:7,e:"ui-section",f:[{p:[7,5,428],t:7,e:"ui-button",a:{icon:"fast-backward",action:"time",params:'{"adjust": -600}'}}," ",{p:[8,5,518],t:7,e:"ui-button",a:{icon:"backward",action:"time",params:'{"adjust": -100}'}}," ",{p:[9,5,603],t:7,e:"span",f:[{t:2,x:{r:["text","data.minutes"],s:"_0.zeroPad(_1,2)"},p:[9,11,609]},":",{t:2,x:{r:["text","data.seconds"],s:"_0.zeroPad(_1,2)"},p:[9,45,643]}]}," ",{p:[10,5,689],t:7,e:"ui-button",a:{icon:"forward",action:"time",params:'{"adjust": 100}'}}," ",{p:[11,5,772],t:7,e:"ui-button",a:{icon:"fast-forward",action:"time",params:'{"adjust": 600}'}}]}," ",{p:[13,3,875],t:7,e:"ui-section",f:[{p:[14,7,895],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "short"}'},f:["Short"]}," ",{p:[15,7,999],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "medium"}'},f:["Medium"]}," ",{p:[16,7,1105],t:7,e:"ui-button",a:{icon:"hourglass-start",action:"preset",params:'{"preset": "long"}'},f:["Long"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],372:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,23],t:7,e:"ui-notice",f:[{t:2,r:"data.notice",p:[3,5,40]}]}],n:50,r:"data.notice",p:[1,1,0]},{p:[6,1,82],t:7,e:"ui-display",a:{title:"Bluespace Artillery Control",button:0},f:[{t:4,f:[{p:[8,3,167],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,5,200],t:7,e:"ui-button",a:{icon:"crosshairs",action:"recalibrate"},f:[{t:2,r:"data.target",p:[9,55,250]}]}]}," ",{p:[11,3,298],t:7,e:"ui-section",a:{label:"Controls"},f:[{t:4,f:[{p:[13,3,356],t:7,e:"ui-notice",f:[{p:[14,4,372],t:7,e:"span",f:["Bluespace Artillery firing protocols must be globally unlocked from two keycard authentication devices first!"]}]}],n:50,x:{r:["data.unlocked"],s:"!_0"},p:[12,2,330]},{t:4,n:51,f:[{p:[17,3,525],t:7,e:"ui-button",a:{icon:"warning",state:[{t:2,x:{r:["data.ready"],s:'_0?null:"disabled"'},p:[17,36,558]}],action:"fire"},f:["FIRE!"]}],x:{r:["data.unlocked"],s:"!_0"}}]}],n:50,r:"data.connected",p:[7,3,141]}," ",{t:4,f:[{p:[22,3,694],t:7,e:"ui-section",a:{label:"Maintenance"},f:[{p:[23,7,734],t:7,e:"ui-button",a:{icon:"wrench",action:"build"},f:["Complete Deployment."]}]}],n:50,x:{r:["data.connected"],s:"!_0"},p:[21,3,667]}]}]},e.exports=a.extend(r.exports)},{341:341}],373:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,185],t:7,e:"ui-button",a:{icon:"pencil",action:"relabel"},f:["Relabel"]}]},t:7,e:"ui-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,266],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,301],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,307]}," kPa"]}]}," ",{p:[11,3,373],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,404],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,417]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,462]}]}]}," ",{t:4,f:[{p:[15,3,573],t:7,e:"ui-section",a:{label:"Access"},f:[{p:[16,7,608],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.restricted"],s:'_0?"lock":"unlock"'},p:[16,24,625]}],style:[{t:2,x:{r:[],s:'"caution"'},p:[17,14,680]}],action:"restricted"},f:[{t:2,x:{r:["data.restricted"],s:'_0?"Restricted to Engineering":"Public"'},p:[18,27,722]}]}]}],n:50,r:"data.isPrototype",p:[14,3,544]}]}," ",{p:[22,1,839],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[23,3,869],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[24,5,912],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[24,18,925]}],max:[{t:2,r:"data.maxReleasePressure",p:[24,52,959]}],value:[{t:2,r:"data.releasePressure",p:[25,14,1002]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[25,40,1028]}," kPa"]}]}," ",{p:[27,3,1099],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[28,5,1144],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[28,38,1177]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[30,5,1333],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[30,36,1364]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[32,5,1511],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[33,5,1606],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[33,35,1636]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[36,3,1798],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[37,5,1830],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[37,22,1847]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[38,14,1901]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[39,22,1995]}]}]}]}," ",{t:4,f:[{p:[42,1,2090],t:7,e:"ui-display",a:{title:"Valve Toggle Timer"},f:[{t:4,f:[{p:[44,5,2155],t:7,e:"ui-section",a:{label:"Adjust Timer"},f:[{p:[45,7,2196],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.timer_is_not_default"],s:'_0?null:"disabled"'},p:[45,40,2229]}],action:"timer",params:'{"change": "reset"}'},f:["Reset"]}," ",{p:[47,7,2358],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.timer_is_not_min"],s:'_0?null:"disabled"'},p:[47,38,2389]}],action:"timer",params:'{"change": "decrease"}'},f:["Decrease"]}," ",{p:[49,7,2520],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:[],s:'"disabled"'},p:[49,39,2552]}],action:"timer",params:'{"change": "input"}'},f:["Set"]}," ",{p:[51,7,2637],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.timer_is_not_max"],s:'_0?null:"disabled"'},p:[51,37,2667]}],action:"timer",params:'{"change": "increase"}'},f:["Increase"]}]}],n:51,r:"data.timing",p:[43,3,2133]}," ",{p:[55,3,2833],t:7,e:"ui-section",a:{label:"Timer"},f:[{p:[56,6,2866],t:7,e:"ui-button",a:{icon:"clock-o",style:[{t:2,x:{r:["data.timing"],s:'_0?"danger":"caution"'},p:[56,39,2899]}],action:"toggle_timer"},f:[{t:2,x:{r:["data.timing"],s:'_0?"On":"Off"'},p:[57,30,2969]}]}," ",{p:[59,2,3017],t:7,e:"ui-section",a:{label:"Time until Valve Toggle"},f:[{p:[60,2,3064],t:7,e:"span",f:[{t:2,x:{r:["data.timing","data.time_left","data.timer_set"],s:"_0?_1:_2"},p:[60,8,3070]}]}]}]}]}],n:50,r:"data.isPrototype",p:[41,1,2062]},{p:{button:[{t:4,f:[{p:[69,7,3277],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[69,38,3308]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[68,5,3242]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[73,3,3442],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[74,4,3473]}]}," ",{p:[76,3,3519],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[77,4,3553]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[72,3,3411]},{t:4,n:51,f:[{p:[80,3,3635],t:7,e:"ui-section",f:[{p:[81,4,3652],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=a.extend(r.exports)},{341:341}],374:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{tabs:function(){return Object.keys(this.get("data.supplies"))}}}}(r),r.exports.template={v:3,t:[" ",{p:[11,1,158],t:7,e:"ui-display",a:{title:"Cargo"},f:[{p:[12,3,188],t:7,e:"ui-section",a:{label:"Shuttle"},f:[{t:4,f:[{p:[14,7,270],t:7,e:"ui-button",a:{action:"send"},f:[{t:2,r:"data.location",p:[14,32,295]}]}],n:50,x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"},p:[13,5,222]},{t:4,n:51,f:[{p:[16,7,346],t:7,e:"span",f:[{t:2,r:"data.location",p:[16,13,352]}]}],x:{r:["data.docked","data.requestonly"],s:"_0&&!_1"}}]}," ",{p:[19,3,410],t:7,e:"ui-section",a:{label:"Credits"},f:[{p:[20,5,444],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[20,11,450]}]}]}," ",{p:[22,3,506],t:7,e:"ui-section",a:{label:"CentCom Message"},f:[{p:[23,7,550],t:7,e:"span",f:[{t:2,r:"data.message",p:[23,13,556]}]}]}," ",{t:4,f:[{p:[26,5,644],t:7,e:"ui-section",a:{label:"Loan"},f:[{t:4,f:[{p:[28,9,716],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.away","data.docked"],s:'_0&&_1?null:"disabled"'},p:[29,17,744]}],action:"loan"},f:["Loan Shuttle"]}],n:50,x:{r:["data.loan_dispatched"],s:"!_0"},p:[27,7,677]},{t:4,n:51,f:[{p:[32,9,868],t:7,e:"span",a:{"class":"bad"},f:["Loaned to CentCom"]}],x:{r:["data.loan_dispatched"],s:"!_0"}}]}],n:50,x:{r:["data.loan","data.requestonly"],s:"_0&&!_1"},p:[25,3,600]}]}," ",{t:4,f:[{p:{button:[{p:[40,7,1066],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.cart.length"],s:'_0?null:"disabled"'},p:[40,38,1097]}],action:"clear"},f:["Clear"]}]},t:7,e:"ui-display",a:{title:"Cart",button:0},f:[" ",{t:4,f:[{p:[43,7,1222],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[44,9,1263],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[44,31,1285]}]}," ",{p:[45,9,1307],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[45,30,1328]}]}," ",{p:[46,9,1354],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[46,30,1375]}," Credits"]}," ",{p:[47,9,1407],t:7,e:"div",a:{"class":"content"},f:[{p:[48,11,1440],t:7,e:"ui-button",a:{icon:"minus",action:"remove", -params:['{"id": "',{t:2,r:"id",p:[48,67,1496]},'"}']}}]}]}],n:52,r:"data.cart",p:[42,5,1195]},{t:4,n:51,f:[{p:[52,7,1566],t:7,e:"span",f:["Nothing in Cart"]}],r:"data.cart"}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[37,1,972]},{p:{button:[{t:4,f:[{p:[59,7,1735],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.requests.length"],s:'_0?null:"disabled"'},p:[59,38,1766]}],action:"denyall"},f:["Clear"]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[58,5,1702]}]},t:7,e:"ui-display",a:{title:"Requests",button:0},f:[" ",{t:4,f:[{p:[63,5,1908],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[64,7,1947],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[64,29,1969]}]}," ",{p:[65,7,1989],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[65,28,2010]}]}," ",{p:[66,7,2034],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[66,28,2055]}," Credits"]}," ",{p:[67,7,2085],t:7,e:"div",a:{"class":"content"},f:["By ",{t:2,r:"orderer",p:[67,31,2109]}]}," ",{p:[68,7,2134],t:7,e:"div",a:{"class":"content"},f:["Comment: ",{t:2,r:"reason",p:[68,37,2164]}]}," ",{t:4,f:[{p:[70,9,2223],t:7,e:"div",a:{"class":"content"},f:[{p:[71,11,2256],t:7,e:"ui-button",a:{icon:"check",action:"approve",params:['{"id": "',{t:2,r:"id",p:[71,68,2313]},'"}']}}," ",{p:[72,11,2336],t:7,e:"ui-button",a:{icon:"close",action:"deny",params:['{"id": "',{t:2,r:"id",p:[72,65,2390]},'"}']}}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[69,7,2188]}]}],n:52,r:"data.requests",p:[62,3,1879]},{t:4,n:51,f:[{p:[77,7,2473],t:7,e:"span",f:["No Requests"]}],r:"data.requests"}]}," ",{p:[80,1,2529],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"tabs",p:[80,16,2544]}]},f:[{t:4,f:[{p:[82,5,2587],t:7,e:"tab",a:{name:[{t:2,r:"name",p:[82,16,2598]}]},f:[{t:4,f:[{p:[84,9,2641],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[84,28,2660]}],candystripe:0,right:0},f:[{p:[85,11,2700],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"desc",p:[85,31,2720]}],"tooltip-side":"left",action:"add",params:['{"id": "',{t:2,r:"id",p:[85,90,2779]},'"}']},f:[{t:2,r:"cost",p:[85,100,2789]}," Credits"]}]}],n:52,r:"packs",p:[83,7,2616]}]}],n:52,r:"data.supplies",p:[81,3,2558]}]}]},e.exports=a.extend(r.exports)},{341:341}],375:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{tabs:function(){return Object.keys(this.get("data.supplies"))}}}}(r),r.exports.template={v:3,t:[" ",{p:[12,1,174],t:7,e:"ui-notice",f:[{t:4,f:[{p:[14,5,220],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[15,7,263],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[15,24,280]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[15,75,331]}]}]}],n:50,r:"data.siliconUser",p:[13,3,189]},{t:4,n:51,f:[{p:[18,5,422],t:7,e:"span",f:["Swipe a QM-Level ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[18,39,456]}," this interface."]}],r:"data.siliconUser"}]}," ",{t:4,f:[{p:[23,3,568],t:7,e:"ui-display",a:{title:"Express Cargo Console"},f:[{p:[25,5,618],t:7,e:"ui-section",a:{label:"Landing Location"},f:[{p:[26,7,663],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.usingBeacon"],s:'_0?null:"selected"'},p:[26,25,681]}],action:"LZCargo"},f:["Cargo Bay"]}," ",{p:[27,7,770],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.hasBeacon","data.usingBeacon"],s:'_0?_1?"selected":null:"disabled"'},p:[27,25,788]}],action:"LZBeacon"},f:[{t:2,r:"data.beaconzone",p:[27,116,879]}," (",{t:2,r:"data.beaconName",p:[27,137,900]},")"]}," ",{p:[28,7,940],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.canBuyBeacon"],s:'_0?null:"disabled"'},p:[28,25,958]}],action:"printBeacon"},f:[{t:2,r:"data.printMsg",p:[28,90,1023]}]}]}," ",{p:[31,5,1079],t:7,e:"ui-section",a:{label:"Credits"},f:[{p:[32,7,1115],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[32,13,1121]}]}]}," ",{p:[35,5,1183],t:7,e:"ui-section",a:{label:"Notice"},f:[{p:[36,7,1218],t:7,e:"span",f:[{t:2,r:"data.message",p:[36,13,1224]}]}]}]}," ",{p:[39,3,1287],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"tabs",p:[39,18,1302]}]},f:[{t:4,f:[{p:[41,7,1349],t:7,e:"tab",a:{name:[{t:2,r:"name",p:[41,18,1360]}]},f:[{t:4,f:[{p:[43,11,1407],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[43,30,1426]}],candystripe:0,right:0},f:[{p:[44,13,1468],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.canBeacon"],s:'_0?null:"disabled"'},p:[44,31,1486]}],tooltip:[{t:2,r:"desc",p:[44,80,1535]}],"tooltip-side":"left",action:"add",params:['{"id": "',{t:2,r:"id",p:[44,139,1594]},'"}']},f:[{t:2,r:"cost",p:[44,149,1604]}," Credits ",{t:2,r:"data.beaconError",p:[44,166,1621]}]}]}],n:52,r:"packs",p:[42,9,1380]}]}],n:52,r:"data.supplies",p:[40,5,1318]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[22,1,543]}]},e.exports=a.extend(r.exports)},{341:341}],376:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Cellular Emporium",button:0},f:[{p:[2,3,49],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.can_readapt"],s:'_0?null:"disabled"'},p:[2,36,82]}],action:"readapt"},f:["Readapt"]}," ",{p:[4,3,169],t:7,e:"ui-section",a:{label:"Genetic Points Remaining",right:0},f:[{t:2,r:"data.genetic_points_remaining",p:[5,5,226]}]}]}," ",{p:[8,1,293],t:7,e:"ui-display",f:[{t:4,f:[{p:[10,3,335],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[10,22,354]}],candystripe:0,right:0},f:[{p:[11,5,388],t:7,e:"span",f:[{t:2,r:"desc",p:[11,11,394]}]}," ",{p:[12,5,415],t:7,e:"span",f:[{t:2,r:"helptext",p:[12,11,421]}]}," ",{p:[13,5,446],t:7,e:"span",f:["Cost: ",{t:2,r:"dna_cost",p:[13,17,458]}]}," ",{p:[14,5,483],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["owned","can_purchase"],s:'_0?"selected":_1?null:"disabled"'},p:[15,14,508]}],action:"evolve",params:['{"name": "',{t:2,r:"name",p:[17,25,615]},'"}']},f:[{t:2,x:{r:["owned"],s:'_0?"Evolved":"Evolve"'},p:[18,7,635]}]}]}],n:52,r:"data.abilities",p:[9,1,307]},{t:4,f:[{p:[23,3,738],t:7,e:"span",a:{"class":"warning"},f:["No abilities available."]}],n:51,r:"data.abilities",p:[22,1,715]}]}]},e.exports=a.extend(r.exports)},{341:341}],377:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,5,17],t:7,e:"span",f:["To use this, simply spawn the atoms you want in one of the four Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."]}]}," ",{p:[5,1,304],t:7,e:"ui-display",a:{title:"Centcom Pod Customization (to be used against helen weinstein)"},f:[{p:[6,4,392],t:7,e:"ui-section",a:{label:"Which supplypod bay will you use?"},f:[{p:[7,9,458],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==1?"selected":null'},p:[7,27,476]}],action:"bay1"},f:["Bay #1"]}," ",{p:[8,9,557],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==2?"selected":null'},p:[8,27,575]}],action:"bay2"},f:["Bay #2"]}," ",{p:[9,9,656],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==3?"selected":null'},p:[9,27,674]}],action:"bay3"},f:["Bay #3"]}," ",{p:[10,9,755],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==4?"selected":null'},p:[10,27,773]}],action:"bay4"},f:["Bay #4"]}]}," ",{p:[13,5,871],t:7,e:"ui-section",a:{label:"Useful teleport tools!"},f:[{p:[14,9,926],t:7,e:"ui-button",a:{action:"teleportCentcom"},f:["Teleport to Centcom's Supplypod Loading Bay"]}," ",{p:[15,9,1027],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.oldArea"],s:'_0?null:"disabled"'},p:[15,27,1045]}],action:"teleportBack"},f:["Teleport Back to ",{t:2,x:{r:["data.oldArea"],s:'_0?_0:"where you were"'},p:[15,103,1121]}]}]}," ",{p:[18,5,1210],t:7,e:"ui-section",a:{label:"Keep stuff after launching?"},f:[{p:[19,9,1268],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.launchClone"],s:'_0?"selected":null'},p:[19,27,1286]}],action:"launchClone","tooltip-side":"left",tooltip:"Choosing this will create a duplicate of the item to be launched in Centcom, allowing you to send one type of item multiple times. Either way, the atoms are forceMoved into the supplypod after it lands (but before it opens)."},f:["Clone and Launch"]}]}," ",{p:[23,5,1668],t:7,e:"ui-section",a:{label:"Launch all at once?"},f:[{p:[24,9,1718],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.launchChoice"],s:'_0==1?"selected":null'},p:[24,27,1736]}],action:"launchOrdered","tooltip-side":"left",tooltip:'Instead of launching everything in the bay at once, this will "scan" things (one turf-full at a time) in order, left to right and top to bottom. Refreshing will reset the "scanner" to the top-leftmost position.'},f:["Ordered"]}," ",{p:[26,9,2086],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.launchChoice"],s:'_0==2?"selected":null'},p:[26,27,2104]}],action:"launchRandom","tooltip-side":"left",tooltip:"Instead of launching everything in the bay at once, this will launch one random turf of items at a time."},f:["Random"]}]}," ",{p:[30,5,2362],t:7,e:"ui-section",a:{label:"Add an explosion?"},f:[{p:[31,9,2410],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.explosionChoice"],s:'_0==1?"selected":null'},p:[31,27,2428]}],action:"explosionCustom","tooltip-side":"left",tooltip:"This will cause an explosion of whatever size you like (including flame range) to occur as soon as the supplypod lands. Dont worry, supply-pods are explosion-proof!"},f:["Custom Size"]}," ",{p:[33,9,2740],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.explosionChoice"],s:'_0==2?"selected":null'},p:[33,27,2758]}],action:"explosionBus","tooltip-side":"left",tooltip:"This will cause a maxcap explosion (dependent on server config) to occur as soon as the supplypod lands. Dont worry, supply-pods are explosion-proof!"},f:["Adminbus"]}]}," ",{p:[37,5,3066],t:7,e:"ui-section",a:{label:"Extra damage?","(default":"None)"},f:[{p:[38,9,3127],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.damageChoice"],s:'_0==1?"selected":null'},p:[38,27,3145]}],action:"damageCustom","tooltip-side":"left",tooltip:"Anyone caught under the pod when it lands will be dealt this amount of brute damage. Sucks to be them!"},f:["Custom Damage"]}," ",{p:[40,9,3392],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.damageChoice"],s:'_0==2?"selected":null'},p:[40,27,3410]}],action:"damageGib","tooltip-side":"left",tooltip:"This will attempt to gib any mob caught under the pod when it lands, as well as dealing a nice 5000 brute damage. Ya know, just to be sure!"},f:["Gib"]}]}," ",{p:[44,5,3698],t:7,e:"ui-section",a:{label:"Extra effects?"},f:[{p:[45,9,3743],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectStun"],s:'_0?"selected":null'},p:[45,27,3761]}],action:"effectStun","tooltip-side":"left",tooltip:"Anyone who is on the turf when the supplypod is launched will be stunned until the supplypod lands. They cant get away that easy!"},f:["Stun"]}," ",{p:[47,9,4017],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectLimb"],s:'_0?"selected":null'},p:[47,27,4035]}],action:"effectLimb","tooltip-side":"left",tooltip:"This will cause anyone caught under the pod to lose a limb, excluding their head."},f:["Delimb"]}," ",{p:[49,9,4245],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectBluespace"],s:'_0?"selected":null'},p:[49,27,4263]}],action:"effectBluespace","tooltip-side":"left",tooltip:"Gives the supplypod an advanced Bluespace Recyling Device. After opening, the supplypod will be warped directly to the surface of a nearby NT-designated trash planet (/r/ss13)."},f:["Bluespace"]}," ",{p:[51,9,4581],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectStealth"],s:'_0?"selected":null'},p:[51,27,4599]}],action:"effectStealth","tooltip-side":"left",tooltip:'This hides the red target icon from appearing when you launch the supplypod. Combos well with the "Invisible" style. Sneak attack, go!'},f:["Stealth"]}," ",{p:[53,9,4869],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectQuiet"],s:'_0?"selected":null'},p:[53,27,4887]}],action:"effectQuiet","tooltip-side":"left",tooltip:"This will keep the supplypod from making any sounds, except for those specifically set by admins in the Sound section."},f:["Quiet Landing"]}," ",{p:[55,9,5143],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectReverse"],s:'_0?"selected":null'},p:[55,27,5161]}],action:"effectReverse","tooltip-side":"left",tooltip:"This pod will not send any items. Instead, after landing, the supplypod will close (similar to a normal closet closing), and then launch back to the right centcom bay to drop off any new contents."},f:["Reverse Mode"]}," ",{p:[57,9,5498],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectMissile"],s:'_0?"selected":null'},p:[57,27,5516]}],action:"effectMissile","tooltip-side":"left",tooltip:"This pod will not send any items. Instead, it will immediatley delete after landing (Similar visually to setting openDelay & departDelay to 0, but this looks nicer). Useful if you just wanna fuck some shit up. Combos well with the Missile style."},f:["Missile Mode"]}," ",{p:[59,9,5902],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectCircle"],s:'_0?"selected":null'},p:[59,27,5920]}],action:"effectCircle","tooltip-side":"left",tooltip:"This will make the supplypod come in from any angle. Im not sure why this feature exists, but here it is."},f:["Any Descent Angle"]}," ",{p:[61,9,6169],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectBurst"],s:'_0?"selected":null'},p:[61,27,6187]}],action:"effectBurst","tooltip-side":"left",tooltip:"This will make each click launch 5 supplypods inaccuratly around the target turf (a 3x3 area). Combos well with the Missle Mode if you dont want shit lying everywhere after."},f:["Machine Gun Mode"]}," ",{p:[63,9,6501],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectTarget"],s:'_0?"selected":null'},p:[63,27,6519]}],action:"effectTarget","tooltip-side":"left",tooltip:"This will make the supplypod target a specific atom, instead of the mouses position. Smiting does this automatically!"},f:["Specific Target"]}," ",{p:[65,9,6778],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectName"],s:'_0?"selected":null'},p:[65,27,6796]}],action:"effectName","tooltip-side":"left",tooltip:"Allows you to add a custom name and description."},f:["Custom Name/Desc"]}]}," ",{p:[69,5,7e3],t:7,e:"ui-section",a:{label:"Sound?"},f:[{p:[70,9,7037],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.landingSound"],s:'_0?"selected":null'},p:[70,27,7055]}],action:"landingSound","tooltip-side":"left",tooltip:"Choose a sound to play when the pod lands."},f:["Custom Landing Sound"]}," ",{p:[72,10,7245],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.openingSound"],s:'_0?"selected":null'},p:[72,28,7263]}],action:"openingSound","tooltip-side":"left",tooltip:"Choose a sound to play when the pod opens."},f:["Custom Opening Sound"]}," ",{p:[74,9,7452],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.leavingSound"],s:'_0?"selected":null'},p:[74,27,7470]}],action:"leavingSound","tooltip-side":"left",tooltip:"Choose a sound to play when the pod departs (whether that be delection in the case of a bluespace pod, or leaving for centcom for a reversing pod)."},f:["Custom Leaving Sound"]}," ",{p:[76,9,7764],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.soundVolume"],s:'_0?"selected":null'},p:[76,27,7782]}],action:"soundVolume","tooltip-side":"left",tooltip:"Choose the volume for the sound to play at. Default values are between 1 and 100, but hey, do whatever. Im a tooltip, not a cop."},f:["Admin Sound Volume"]}]}," ",{p:[80,5,8070],t:7,e:"ui-section",a:{label:"Delay timers?"},f:[{p:[81,9,8114],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.landingDelay"],s:'_0!=5?"selected":null'},p:[81,27,8132]}],action:"landingDelay","tooltip-side":"left",tooltip:"Choose the amount of time it takes for the supplypod to hit the station. By default this value is 0.5 seconds."},f:["Custom Landing Time"]}," ",{p:[83,10,8394],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.openingDelay"],s:'_0!=30?"selected":null'},p:[83,28,8412]}],action:"openingDelay","tooltip-side":"left",tooltip:"Choose the amount of time it takes for the supplypod to open after landing. Useful for giving whatevers inside the pod a nice dramatic entrance! By default this value is 3 seconds."},f:["Custom Opening Time"]}," ",{p:[85,9,8744],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.departureDelay"],s:'_0!=30?"selected":null'},p:[85,27,8762]}],action:"departureDelay","tooltip-side":"left",tooltip:"Choose the amount of time it takes for the supplypod to leave after landing. By default this value is 3 seconds."},f:["Custom Leaving Time"]}]}," ",{p:[89,5,9047],t:7,e:"ui-section",a:{label:"Style?"},f:[{p:[90,9,9084],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==1?"selected":null'},p:[90,27,9102]}],action:"styleStandard","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to your standard Nanotrasen black and orange. Same color scheme as the normal station-used supplypods."},f:["Standard"]}," ",{p:[92,9,9405],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==2?"selected":null'},p:[92,27,9423]}],action:"styleBluespace","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to the same as the stations upgraded blue-and-white Bluespace Supplypods."},f:["Advanced"]}," ",{p:[94,9,9698],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==4?"selected":null'},p:[94,27,9716]}],action:"styleSyndie","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to a menacing black and blood-red. Great for sending meme-ops in style!"},f:["Syndicate"]}," ",{p:[96,9,9987],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==5?"selected":null'},p:[96,27,10005]}],action:"styleBlue","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to a menacing black and dark blue. Great for sending deathsquads in style!"},f:["Deathsquad"]}," ",{p:[98,10,10279],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==6?"selected":null'},p:[98,28,10297]}],action:"styleCult","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a blood and rune covered cult pod!"},f:["Cult Pod"]}," ",{p:[100,9,10524],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==7?"selected":null'},p:[100,27,10542]}],action:"styleMissile","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a large missile. Combos well with a missile mode, so the missile doesnt stick around after landing."},f:["Missile"]}," ",{p:[102,9,10836],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==8?"selected":null'},p:[102,27,10854]}],action:"styleSMissile","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a large blood-red missile. Combos well with missile mode, so the missile doesnt stick around after landing."},f:["Syndicate Missile"]}," ",{p:[104,9,11167],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==9?"selected":null'},p:[104,27,11185]}],action:"styleBox","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a large, dark-green military supply crate."},f:["Supply Crate"]}," ",{p:[106,9,11423],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==10?"selected":null'},p:[106,27,11441]}],action:"styleHONK","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to a colorful, clown inspired look."},f:["HONK"]}," ",{p:[108,9,11670],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==11?"selected":null'},p:[108,27,11688]}],action:"styleFruit","tooltip-side":"left",tooltip:"for when an orange is angry"},f:["Fruit~"]}," ",{p:[110,9,11851],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==12?"selected":null'},p:[110,27,11869]}],action:"styleInvisible","tooltip-side":"left",tooltip:'Makes the supplypod invisible! Useful for when you want to use this feature with a gateway or something. Combos well with the "Stealth" and "Quiet Landing" effects.'},f:["Invisible"]}," ",{p:[112,9,12175],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==13?"selected":null'},p:[112,27,12193]}],action:"styleGondola","tooltip-side":"left",tooltip:"this gondola can control when he wants to deliver his supplies if he has a smart enough mind, so offer up his body to ghosts for maximum enjoyment. (Make sure to turn off bluespace and set a arbitrarily high open-time if you do!)"},f:["Gondola (alive)"]}]}]}," ",{p:[117,1,12597],t:7,e:"ui-display",f:[{p:[118,5,12615],t:7,e:"ui-section",a:{label:[{t:2,r:"data.numObjects",p:[118,26,12636]}," turfs with launchable atoms found in Bay #",{t:2,r:"data.bay",p:[118,88,12698]}]},f:[{p:[119,9,12722],t:7,e:"ui-button",a:{action:"refresh","tooltip-side":"right",tooltip:"Manually refreshes the possible things to launch in the pod bay."},f:["Refresh Pod Bay"]}]}," ",{p:[123,5,12909],t:7,e:"ui-section",f:[{p:[124,9,12931],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.giveLauncher"],s:'_0?"selected":null'},p:[124,27,12949]}],action:"giveLauncher","tooltip-side":"right",tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN!!"},f:["Enter Launch Mode"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],378:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,64],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,85]}],value:[{t:2,r:"data.energy",p:[3,53,112]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,129]}," Units"]}]}]}," ",{p:[6,1,206],t:7,e:"ui-display",a:{title:"Saved Recipes",button:0},f:[{p:[7,3,251],t:7,e:"ui-section",f:[{p:[8,5,269],t:7,e:"ui-button",a:{icon:"plus",action:"add_recipe"},f:["Add Recipe"]}," ",{p:[9,2,337],t:7,e:"ui-button",a:{icon:"minus",action:"clear_recipes"},f:["Clear Recipes"]}," ",{t:4,f:[{p:[11,7,445],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense_recipe",params:['{"recipe": "',{t:2,r:"contents",p:[11,80,518]},'"}']},f:[{t:2,r:"recipe_name",p:[11,96,534]}]}],n:52,r:"data.recipes",p:[10,5,415]}]}]}," ",{p:{button:[{t:4,f:[{p:[18,7,719],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[18,37,749]}],action:"amount",params:['{"target": ',{t:2,r:".",p:[18,114,826]},"}"]},f:[{t:2,r:".",p:[18,122,834]}]}],n:52,r:"data.beakerTransferAmounts",p:[17,5,675]}]},t:7,e:"ui-display",a:{title:"Dispense",button:0},f:[" ",{p:[21,3,886],t:7,e:"ui-section",f:[{t:4,f:[{p:[23,7,936],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[23,74,1003]},'"}']},f:[{t:2,r:"title",p:[23,84,1013]}]}],n:52,r:"data.chemicals",p:[22,5,904]}]}]}," ",{p:{button:[{t:4,f:[{p:[30,7,1190],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[30,66,1249]},"}"]},f:[{t:2,r:".",p:[30,74,1257]}]}],n:52,r:"data.beakerTransferAmounts",p:[29,5,1146]}," ",{p:[32,5,1295],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[32,36,1326]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[34,3,1423],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[36,7,1493],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[36,13,1499]},"/",{t:2,r:"data.beakerMaxVolume",p:[36,55,1541]}," Units"]}," ",{p:[37,7,1586],t:7,e:"br"}," ",{t:4,f:[{p:[39,9,1639],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[39,52,1682]}," units of ",{t:2,r:"name",p:[39,87,1717]}]},{p:[39,102,1732],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[38,7,1599]},{t:4,n:51,f:[{p:[41,9,1763],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[35,5,1458]},{t:4,n:51,f:[{p:[44,7,1839],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],379:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,79,421]}," K"]}]}]}," ",{p:{button:[{p:[14,5,564],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,595]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,692],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,762],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,781]}," K"]}," ",{p:[19,7,831],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,885],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,928]}," units of ",{t:2,r:"name",p:[21,87,963]}]},{p:[21,102,978],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,845]},{t:4,n:51,f:[{p:[23,9,1009],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,727]},{t:4,n:51,f:[{p:[26,7,1085],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],380:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:["\ufeff",{t:4,f:[" ",{p:[2,2,33],t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[{p:[3,3,71],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"Eject":"close"'},p:[3,20,88]}],style:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"selected":null'},p:[4,11,144]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,11,200]}],action:"eject"},f:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"Eject":"No beaker"'},p:[7,5,269]}]}," ",{p:[10,3,341],t:7,e:"ui-section",f:[{t:4,f:[{t:4,f:[{p:[13,6,427],t:7,e:"ui-section",a:{label:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[13,25,446]}," units of ",{t:2,r:"name",p:[13,60,481]}],nowrap:0},f:[{p:[14,7,506],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{p:[15,8,556],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[15,61,609]},'", "amount": 1}']},f:["1"]}," ",{p:[16,8,654],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[16,61,707]},'", "amount": 5}']},f:["5"]}," ",{p:[17,8,752],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[17,61,805]},'", "amount": 10}']},f:["10"]}," ",{p:[18,8,852],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[18,61,905]},'", "amount": 1000}']},f:["All"]}," ",{p:[19,8,955],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[19,61,1008]},'", "amount": -1}']},f:["Custom"]}," ",{p:[20,8,1059],t:7,e:"ui-button",a:{action:"analyze",params:['{"id": "',{t:2,r:"id",p:[20,52,1103]},'"}']},f:["Analyze"]}]}]}],n:52,r:"data.beakerContents",p:[12,5,391]},{t:4,n:51,f:[{p:[24,5,1185],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"data.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[11,4,358]},{t:4,n:51,f:[{p:[27,5,1256],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}," ",{p:[32,2,1344],t:7,e:"ui-display",a:{title:"Buffer"},f:[{p:[33,3,1375],t:7,e:"ui-button",a:{action:"toggleMode",state:[{t:2,x:{r:["data.mode"],s:'_0?null:"selected"'},p:[33,41,1413]}]},f:["Destroy"]}," ",{p:[34,3,1471],t:7,e:"ui-button",a:{action:"toggleMode",state:[{t:2,x:{r:["data.mode"],s:'_0?"selected":null'},p:[34,41,1509]}]},f:["Transfer to Beaker"]}," ",{p:[35,3,1578],t:7,e:"ui-section",f:[{t:4,f:[{p:[37,5,1630],t:7,e:"ui-section",a:{label:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[37,24,1649]}," units of ",{t:2,r:"name",p:[37,59,1684]}],nowrap:0},f:[{p:[38,6,1708],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{p:[39,7,1757],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[39,62,1812]},'", "amount": 1}']},f:["1"]}," ",{p:[40,7,1856],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[40,62,1911]},'", "amount": 5}']},f:["5"]}," ",{p:[41,7,1955],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[41,62,2010]},'", "amount": 10}']},f:["10"]}," ",{p:[42,7,2056],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[42,62,2111]},'", "amount": 1000}']},f:["All"]}," ",{p:[43,7,2160],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[43,62,2215]},'", "amount": -1}']},f:["Custom"]}," ",{p:[44,7,2265],t:7,e:"ui-button",a:{action:"analyze",params:['{"id": "',{t:2,r:"id",p:[44,51,2309]},'"}']},f:["Analyze"]}]}]}],n:52,r:"data.bufferContents",p:[36,4,1595]}]}]}," ",{t:4,f:[{p:[52,3,2445],t:7,e:"ui-display",a:{title:"Pills, Bottles and Patches"},f:[{t:4,f:[{p:[54,5,2529],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["id","data.chosenPillStyle"],s:'_0==_1?"selected":null'},p:[54,23,2547]}],action:"pillStyle",params:['{"id": "',{t:2,r:"id",p:[54,108,2632]},'"}']},f:[{t:3,r:"htmltag",p:[54,118,2642]}]}],n:52,r:"data.pillStyles",p:[53,4,2498]}," ",{p:[56,4,2686],t:7,e:"br"}," ",{t:4,f:[{p:[58,5,2732],t:7,e:"ui-button",a:{action:"ejectp",state:[{t:2,x:{r:["data.isPillBottleLoaded"],s:'_0?null:"disabled"'},p:[58,39,2766]}]},f:[{t:2,x:{r:["data.isPillBottleLoaded"],s:'_0?"Eject":"No Pill bottle loaded"'},p:[58,88,2815]}]}," ",{p:[59,5,2896],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.pillBotContent",p:[59,27,2918]},"/",{t:2,r:"data.pillBotMaxContent",p:[59,51,2942]}]}],n:50,r:"data.isPillBottleLoaded",p:[57,4,2695]},{t:4,n:51,f:[{p:[61,5,2994],t:7,e:"span",a:{"class":"average"},f:["No Pillbottle"]}],r:"data.isPillBottleLoaded"}," ",{p:[64,4,3055],t:7,e:"br"}," ",{p:[65,4,3065],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[65,63,3124]}]},f:["Create Pill (max 50µ)"]}," ",{p:[66,4,3208],t:7,e:"br"}," ",{p:[67,4,3218],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[67,63,3277]}]},f:["Create Multiple Pills"]}," ",{p:[68,4,3361],t:7,e:"br"}," ",{p:[69,4,3371],t:7,e:"br"}," ",{p:[70,4,3381],t:7,e:"ui-button",a:{action:"createPatch",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[70,64,3441]}]},f:["Create Patch (max 40µ)"]}," ",{p:[71,4,3526],t:7,e:"br"}," ",{p:[72,4,3536],t:7,e:"ui-button",a:{action:"createPatch",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[72,64,3596]}]},f:["Create Multiple Patches"]}," ",{p:[73,4,3682],t:7,e:"br"}," ",{p:[74,4,3692],t:7,e:"br"}," ",{p:[75,4,3702],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[75,65,3763]}]},f:["Create Bottle (max 30µ)"]}," ",{p:[76,4,3849],t:7,e:"br"}," ",{p:[77,4,3859],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[77,65,3920]}]},f:["Dispense Buffer to Bottles"]}," ",{p:[78,4,4009],t:7,e:"br"}," ",{p:[79,4,4019],t:7,e:"br"}," ",{p:[80,4,4029],t:7,e:"ui-button",a:{action:"createVial",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[80,63,4088]}]},f:["Create Hypo Vial (max 30µ)"]}," ",{p:[81,4,4177],t:7,e:"br"}," ",{p:[82,4,4187],t:7,e:"ui-button",a:{action:"createVial",params:'{"many": 1}', +params:['{"id": "',{t:2,r:"id",p:[48,67,1496]},'"}']}}]}]}],n:52,r:"data.cart",p:[42,5,1195]},{t:4,n:51,f:[{p:[52,7,1566],t:7,e:"span",f:["Nothing in Cart"]}],r:"data.cart"}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[37,1,972]},{p:{button:[{t:4,f:[{p:[59,7,1735],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.requests.length"],s:'_0?null:"disabled"'},p:[59,38,1766]}],action:"denyall"},f:["Clear"]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[58,5,1702]}]},t:7,e:"ui-display",a:{title:"Requests",button:0},f:[" ",{t:4,f:[{p:[63,5,1908],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[64,7,1947],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[64,29,1969]}]}," ",{p:[65,7,1989],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"object",p:[65,28,2010]}]}," ",{p:[66,7,2034],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"cost",p:[66,28,2055]}," Credits"]}," ",{p:[67,7,2085],t:7,e:"div",a:{"class":"content"},f:["By ",{t:2,r:"orderer",p:[67,31,2109]}]}," ",{p:[68,7,2134],t:7,e:"div",a:{"class":"content"},f:["Comment: ",{t:2,r:"reason",p:[68,37,2164]}]}," ",{t:4,f:[{p:[70,9,2223],t:7,e:"div",a:{"class":"content"},f:[{p:[71,11,2256],t:7,e:"ui-button",a:{icon:"check",action:"approve",params:['{"id": "',{t:2,r:"id",p:[71,68,2313]},'"}']}}," ",{p:[72,11,2336],t:7,e:"ui-button",a:{icon:"close",action:"deny",params:['{"id": "',{t:2,r:"id",p:[72,65,2390]},'"}']}}]}],n:50,x:{r:["data.requestonly"],s:"!_0"},p:[69,7,2188]}]}],n:52,r:"data.requests",p:[62,3,1879]},{t:4,n:51,f:[{p:[77,7,2473],t:7,e:"span",f:["No Requests"]}],r:"data.requests"}]}," ",{p:[80,1,2529],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"tabs",p:[80,16,2544]}]},f:[{t:4,f:[{p:[82,5,2587],t:7,e:"tab",a:{name:[{t:2,r:"name",p:[82,16,2598]}]},f:[{t:4,f:[{p:[84,9,2641],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[84,28,2660]}],candystripe:0,right:0},f:[{p:[85,11,2700],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"desc",p:[85,31,2720]}],"tooltip-side":"left",action:"add",params:['{"id": "',{t:2,r:"id",p:[85,90,2779]},'"}']},f:[{t:2,r:"cost",p:[85,100,2789]}," Credits"]}]}],n:52,r:"packs",p:[83,7,2616]}]}],n:52,r:"data.supplies",p:[81,3,2558]}]}]},e.exports=a.extend(r.exports)},{341:341}],375:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{tabs:function(){return Object.keys(this.get("data.supplies"))}}}}(r),r.exports.template={v:3,t:[" ",{p:[12,1,174],t:7,e:"ui-notice",f:[{t:4,f:[{p:[14,5,220],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[15,7,263],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[15,24,280]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[15,75,331]}]}]}],n:50,r:"data.siliconUser",p:[13,3,189]},{t:4,n:51,f:[{p:[18,5,422],t:7,e:"span",f:["Swipe a QM-Level ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[18,39,456]}," this interface."]}],r:"data.siliconUser"}]}," ",{t:4,f:[{p:[23,3,568],t:7,e:"ui-display",a:{title:"Express Cargo Console"},f:[{p:[25,5,618],t:7,e:"ui-section",a:{label:"Landing Location"},f:[{p:[26,7,663],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.usingBeacon"],s:'_0?null:"selected"'},p:[26,25,681]}],action:"LZCargo"},f:["Cargo Bay"]}," ",{p:[27,7,770],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.hasBeacon","data.usingBeacon"],s:'_0?_1?"selected":null:"disabled"'},p:[27,25,788]}],action:"LZBeacon"},f:[{t:2,r:"data.beaconzone",p:[27,116,879]}," (",{t:2,r:"data.beaconName",p:[27,137,900]},")"]}," ",{p:[28,7,940],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.canBuyBeacon"],s:'_0?null:"disabled"'},p:[28,25,958]}],action:"printBeacon"},f:[{t:2,r:"data.printMsg",p:[28,90,1023]}]}]}," ",{p:[31,5,1079],t:7,e:"ui-section",a:{label:"Credits"},f:[{p:[32,7,1115],t:7,e:"span",f:[{t:2,x:{r:["adata.points"],s:"Math.floor(_0)"},p:[32,13,1121]}]}]}," ",{p:[35,5,1183],t:7,e:"ui-section",a:{label:"Notice"},f:[{p:[36,7,1218],t:7,e:"span",f:[{t:2,r:"data.message",p:[36,13,1224]}]}]}]}," ",{p:[39,3,1287],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"tabs",p:[39,18,1302]}]},f:[{t:4,f:[{p:[41,7,1349],t:7,e:"tab",a:{name:[{t:2,r:"name",p:[41,18,1360]}]},f:[{t:4,f:[{p:[43,11,1407],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[43,30,1426]}],candystripe:0,right:0},f:[{p:[44,13,1468],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.canBeacon"],s:'_0?null:"disabled"'},p:[44,31,1486]}],tooltip:[{t:2,r:"desc",p:[44,80,1535]}],"tooltip-side":"left",action:"add",params:['{"id": "',{t:2,r:"id",p:[44,139,1594]},'"}']},f:[{t:2,r:"cost",p:[44,149,1604]}," Credits ",{t:2,r:"data.beaconError",p:[44,166,1621]}]}]}],n:52,r:"packs",p:[42,9,1380]}]}],n:52,r:"data.supplies",p:[40,5,1318]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[22,1,543]}]},e.exports=a.extend(r.exports)},{341:341}],376:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Cellular Emporium",button:0},f:[{p:[2,3,49],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.can_readapt"],s:'_0?null:"disabled"'},p:[2,36,82]}],action:"readapt"},f:["Readapt"]}," ",{p:[4,3,169],t:7,e:"ui-section",a:{label:"Genetic Points Remaining",right:0},f:[{t:2,r:"data.genetic_points_remaining",p:[5,5,226]}]}]}," ",{p:[8,1,293],t:7,e:"ui-display",f:[{t:4,f:[{p:[10,3,335],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[10,22,354]}],candystripe:0,right:0},f:[{p:[11,5,388],t:7,e:"span",f:[{t:2,r:"desc",p:[11,11,394]}]}," ",{p:[12,5,415],t:7,e:"span",f:[{t:2,r:"helptext",p:[12,11,421]}]}," ",{p:[13,5,446],t:7,e:"span",f:["Cost: ",{t:2,r:"dna_cost",p:[13,17,458]}]}," ",{p:[14,5,483],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["owned","can_purchase"],s:'_0?"selected":_1?null:"disabled"'},p:[15,14,508]}],action:"evolve",params:['{"name": "',{t:2,r:"name",p:[17,25,615]},'"}']},f:[{t:2,x:{r:["owned"],s:'_0?"Evolved":"Evolve"'},p:[18,7,635]}]}]}],n:52,r:"data.abilities",p:[9,1,307]},{t:4,f:[{p:[23,3,738],t:7,e:"span",a:{"class":"warning"},f:["No abilities available."]}],n:51,r:"data.abilities",p:[22,1,715]}]}]},e.exports=a.extend(r.exports)},{341:341}],377:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,5,17],t:7,e:"span",f:["To use this, simply spawn the atoms you want in one of the four Centcom Supplypod Bays. Items in the bay will then be launched inside your supplypod, one turf-full at a time! You can optionally use the following buttons to configure how the supplypod acts."]}]}," ",{p:[5,1,304],t:7,e:"ui-display",a:{title:"Centcom Pod Customization (to be used against helen weinstein)"},f:[{p:[6,4,392],t:7,e:"ui-section",a:{label:"Which supplypod bay will you use?"},f:[{p:[7,9,458],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==1?"selected":null'},p:[7,27,476]}],action:"bay1"},f:["Bay #1"]}," ",{p:[8,9,557],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==2?"selected":null'},p:[8,27,575]}],action:"bay2"},f:["Bay #2"]}," ",{p:[9,9,656],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==3?"selected":null'},p:[9,27,674]}],action:"bay3"},f:["Bay #3"]}," ",{p:[10,9,755],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.bay"],s:'_0==4?"selected":null'},p:[10,27,773]}],action:"bay4"},f:["Bay #4"]}]}," ",{p:[13,5,871],t:7,e:"ui-section",a:{label:"Useful teleport tools!"},f:[{p:[14,9,926],t:7,e:"ui-button",a:{action:"teleportCentcom"},f:["Teleport to Centcom's Supplypod Loading Bay"]}," ",{p:[15,9,1027],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.oldArea"],s:'_0?null:"disabled"'},p:[15,27,1045]}],action:"teleportBack"},f:["Teleport Back to ",{t:2,x:{r:["data.oldArea"],s:'_0?_0:"where you were"'},p:[15,103,1121]}]}]}," ",{p:[18,5,1210],t:7,e:"ui-section",a:{label:"Keep stuff after launching?"},f:[{p:[19,9,1268],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.launchClone"],s:'_0?"selected":null'},p:[19,27,1286]}],action:"launchClone","tooltip-side":"left",tooltip:"Choosing this will create a duplicate of the item to be launched in Centcom, allowing you to send one type of item multiple times. Either way, the atoms are forceMoved into the supplypod after it lands (but before it opens)."},f:["Clone and Launch"]}]}," ",{p:[23,5,1668],t:7,e:"ui-section",a:{label:"Launch all at once?"},f:[{p:[24,9,1718],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.launchChoice"],s:'_0==1?"selected":null'},p:[24,27,1736]}],action:"launchOrdered","tooltip-side":"left",tooltip:'Instead of launching everything in the bay at once, this will "scan" things (one turf-full at a time) in order, left to right and top to bottom. Refreshing will reset the "scanner" to the top-leftmost position.'},f:["Ordered"]}," ",{p:[26,9,2086],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.launchChoice"],s:'_0==2?"selected":null'},p:[26,27,2104]}],action:"launchRandom","tooltip-side":"left",tooltip:"Instead of launching everything in the bay at once, this will launch one random turf of items at a time."},f:["Random"]}]}," ",{p:[30,5,2362],t:7,e:"ui-section",a:{label:"Add an explosion?"},f:[{p:[31,9,2410],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.explosionChoice"],s:'_0==1?"selected":null'},p:[31,27,2428]}],action:"explosionCustom","tooltip-side":"left",tooltip:"This will cause an explosion of whatever size you like (including flame range) to occur as soon as the supplypod lands. Dont worry, supply-pods are explosion-proof!"},f:["Custom Size"]}," ",{p:[33,9,2740],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.explosionChoice"],s:'_0==2?"selected":null'},p:[33,27,2758]}],action:"explosionBus","tooltip-side":"left",tooltip:"This will cause a maxcap explosion (dependent on server config) to occur as soon as the supplypod lands. Dont worry, supply-pods are explosion-proof!"},f:["Adminbus"]}]}," ",{p:[37,5,3066],t:7,e:"ui-section",a:{label:"Extra damage?","(default":"None)"},f:[{p:[38,9,3127],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.damageChoice"],s:'_0==1?"selected":null'},p:[38,27,3145]}],action:"damageCustom","tooltip-side":"left",tooltip:"Anyone caught under the pod when it lands will be dealt this amount of brute damage. Sucks to be them!"},f:["Custom Damage"]}," ",{p:[40,9,3392],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.damageChoice"],s:'_0==2?"selected":null'},p:[40,27,3410]}],action:"damageGib","tooltip-side":"left",tooltip:"This will attempt to gib any mob caught under the pod when it lands, as well as dealing a nice 5000 brute damage. Ya know, just to be sure!"},f:["Gib"]}]}," ",{p:[44,5,3698],t:7,e:"ui-section",a:{label:"Extra effects?"},f:[{p:[45,9,3743],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectStun"],s:'_0?"selected":null'},p:[45,27,3761]}],action:"effectStun","tooltip-side":"left",tooltip:"Anyone who is on the turf when the supplypod is launched will be stunned until the supplypod lands. They cant get away that easy!"},f:["Stun"]}," ",{p:[47,9,4017],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectLimb"],s:'_0?"selected":null'},p:[47,27,4035]}],action:"effectLimb","tooltip-side":"left",tooltip:"This will cause anyone caught under the pod to lose a limb, excluding their head."},f:["Delimb"]}," ",{p:[49,9,4245],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectBluespace"],s:'_0?"selected":null'},p:[49,27,4263]}],action:"effectBluespace","tooltip-side":"left",tooltip:"Gives the supplypod an advanced Bluespace Recyling Device. After opening, the supplypod will be warped directly to the surface of a nearby NT-designated trash planet (/r/ss13)."},f:["Bluespace"]}," ",{p:[51,9,4581],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectStealth"],s:'_0?"selected":null'},p:[51,27,4599]}],action:"effectStealth","tooltip-side":"left",tooltip:'This hides the red target icon from appearing when you launch the supplypod. Combos well with the "Invisible" style. Sneak attack, go!'},f:["Stealth"]}," ",{p:[53,9,4869],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectQuiet"],s:'_0?"selected":null'},p:[53,27,4887]}],action:"effectQuiet","tooltip-side":"left",tooltip:"This will keep the supplypod from making any sounds, except for those specifically set by admins in the Sound section."},f:["Quiet Landing"]}," ",{p:[55,9,5143],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectReverse"],s:'_0?"selected":null'},p:[55,27,5161]}],action:"effectReverse","tooltip-side":"left",tooltip:"This pod will not send any items. Instead, after landing, the supplypod will close (similar to a normal closet closing), and then launch back to the right centcom bay to drop off any new contents."},f:["Reverse Mode"]}," ",{p:[57,9,5498],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectMissile"],s:'_0?"selected":null'},p:[57,27,5516]}],action:"effectMissile","tooltip-side":"left",tooltip:"This pod will not send any items. Instead, it will immediatley delete after landing (Similar visually to setting openDelay & departDelay to 0, but this looks nicer). Useful if you just wanna fuck some shit up. Combos well with the Missile style."},f:["Missile Mode"]}," ",{p:[59,9,5902],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectCircle"],s:'_0?"selected":null'},p:[59,27,5920]}],action:"effectCircle","tooltip-side":"left",tooltip:"This will make the supplypod come in from any angle. Im not sure why this feature exists, but here it is."},f:["Any Descent Angle"]}," ",{p:[61,9,6169],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectBurst"],s:'_0?"selected":null'},p:[61,27,6187]}],action:"effectBurst","tooltip-side":"left",tooltip:"This will make each click launch 5 supplypods inaccuratly around the target turf (a 3x3 area). Combos well with the Missle Mode if you dont want shit lying everywhere after."},f:["Machine Gun Mode"]}," ",{p:[63,9,6501],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectTarget"],s:'_0?"selected":null'},p:[63,27,6519]}],action:"effectTarget","tooltip-side":"left",tooltip:"This will make the supplypod target a specific atom, instead of the mouses position. Smiting does this automatically!"},f:["Specific Target"]}," ",{p:[65,9,6778],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.effectName"],s:'_0?"selected":null'},p:[65,27,6796]}],action:"effectName","tooltip-side":"left",tooltip:"Allows you to add a custom name and description."},f:["Custom Name/Desc"]}]}," ",{p:[69,5,7e3],t:7,e:"ui-section",a:{label:"Sound?"},f:[{p:[70,9,7037],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.landingSound"],s:'_0?"selected":null'},p:[70,27,7055]}],action:"landingSound","tooltip-side":"left",tooltip:"Choose a sound to play when the pod lands."},f:["Custom Landing Sound"]}," ",{p:[72,10,7245],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.openingSound"],s:'_0?"selected":null'},p:[72,28,7263]}],action:"openingSound","tooltip-side":"left",tooltip:"Choose a sound to play when the pod opens."},f:["Custom Opening Sound"]}," ",{p:[74,9,7452],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.leavingSound"],s:'_0?"selected":null'},p:[74,27,7470]}],action:"leavingSound","tooltip-side":"left",tooltip:"Choose a sound to play when the pod departs (whether that be delection in the case of a bluespace pod, or leaving for centcom for a reversing pod)."},f:["Custom Leaving Sound"]}," ",{p:[76,9,7764],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.soundVolume"],s:'_0?"selected":null'},p:[76,27,7782]}],action:"soundVolume","tooltip-side":"left",tooltip:"Choose the volume for the sound to play at. Default values are between 1 and 100, but hey, do whatever. Im a tooltip, not a cop."},f:["Admin Sound Volume"]}]}," ",{p:[80,5,8070],t:7,e:"ui-section",a:{label:"Delay timers?"},f:[{p:[81,9,8114],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.landingDelay"],s:'_0!=5?"selected":null'},p:[81,27,8132]}],action:"landingDelay","tooltip-side":"left",tooltip:"Choose the amount of time it takes for the supplypod to hit the station. By default this value is 0.5 seconds."},f:["Custom Landing Time"]}," ",{p:[83,10,8394],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.openingDelay"],s:'_0!=30?"selected":null'},p:[83,28,8412]}],action:"openingDelay","tooltip-side":"left",tooltip:"Choose the amount of time it takes for the supplypod to open after landing. Useful for giving whatevers inside the pod a nice dramatic entrance! By default this value is 3 seconds."},f:["Custom Opening Time"]}," ",{p:[85,9,8744],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.departureDelay"],s:'_0!=30?"selected":null'},p:[85,27,8762]}],action:"departureDelay","tooltip-side":"left",tooltip:"Choose the amount of time it takes for the supplypod to leave after landing. By default this value is 3 seconds."},f:["Custom Leaving Time"]}]}," ",{p:[89,5,9047],t:7,e:"ui-section",a:{label:"Style?"},f:[{p:[90,9,9084],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==1?"selected":null'},p:[90,27,9102]}],action:"styleStandard","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to your standard Nanotrasen black and orange. Same color scheme as the normal station-used supplypods."},f:["Standard"]}," ",{p:[92,9,9405],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==2?"selected":null'},p:[92,27,9423]}],action:"styleBluespace","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to the same as the stations upgraded blue-and-white Bluespace Supplypods."},f:["Advanced"]}," ",{p:[94,9,9698],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==4?"selected":null'},p:[94,27,9716]}],action:"styleSyndie","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to a menacing black and blood-red. Great for sending meme-ops in style!"},f:["Syndicate"]}," ",{p:[96,9,9987],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==5?"selected":null'},p:[96,27,10005]}],action:"styleBlue","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to a menacing black and dark blue. Great for sending deathsquads in style!"},f:["Deathsquad"]}," ",{p:[98,10,10279],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==6?"selected":null'},p:[98,28,10297]}],action:"styleCult","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a blood and rune covered cult pod!"},f:["Cult Pod"]}," ",{p:[100,9,10524],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==7?"selected":null'},p:[100,27,10542]}],action:"styleMissile","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a large missile. Combos well with a missile mode, so the missile doesnt stick around after landing."},f:["Missile"]}," ",{p:[102,9,10836],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==8?"selected":null'},p:[102,27,10854]}],action:"styleSMissile","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a large blood-red missile. Combos well with missile mode, so the missile doesnt stick around after landing."},f:["Syndicate Missile"]}," ",{p:[104,9,11167],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==9?"selected":null'},p:[104,27,11185]}],action:"styleBox","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom style to a large, dark-green military supply crate."},f:["Supply Crate"]}," ",{p:[106,9,11423],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==10?"selected":null'},p:[106,27,11441]}],action:"styleHONK","tooltip-side":"left",tooltip:"Changes the pods style from the default Centcom color scheme to a colorful, clown inspired look."},f:["HONK"]}," ",{p:[108,9,11670],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==11?"selected":null'},p:[108,27,11688]}],action:"styleFruit","tooltip-side":"left",tooltip:"for when an orange is angry"},f:["Fruit~"]}," ",{p:[110,9,11851],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==12?"selected":null'},p:[110,27,11869]}],action:"styleInvisible","tooltip-side":"left",tooltip:'Makes the supplypod invisible! Useful for when you want to use this feature with a gateway or something. Combos well with the "Stealth" and "Quiet Landing" effects.'},f:["Invisible"]}," ",{p:[112,9,12175],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.styleChoice"],s:'_0==13?"selected":null'},p:[112,27,12193]}],action:"styleGondola","tooltip-side":"left",tooltip:"this gondola can control when he wants to deliver his supplies if he has a smart enough mind, so offer up his body to ghosts for maximum enjoyment. (Make sure to turn off bluespace and set a arbitrarily high open-time if you do!)"},f:["Gondola (alive)"]}]}]}," ",{p:[117,1,12597],t:7,e:"ui-display",f:[{p:[118,5,12615],t:7,e:"ui-section",a:{label:[{t:2,r:"data.numObjects",p:[118,26,12636]}," turfs with launchable atoms found in Bay #",{t:2,r:"data.bay",p:[118,88,12698]}]},f:[{p:[119,9,12722],t:7,e:"ui-button",a:{action:"refresh","tooltip-side":"right",tooltip:"Manually refreshes the possible things to launch in the pod bay."},f:["Refresh Pod Bay"]}]}," ",{p:[123,5,12909],t:7,e:"ui-section",f:[{p:[124,9,12931],t:7,e:"ui-button",a:{style:[{t:2,x:{r:["data.giveLauncher"],s:'_0?"selected":null'},p:[124,27,12949]}],action:"giveLauncher","tooltip-side":"right",tooltip:"THE CODEX ASTARTES CALLS THIS MANEUVER: STEEL RAIN!!"},f:["Enter Launch Mode"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],378:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,64],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,85]}],value:[{t:2,r:"data.energy",p:[3,53,112]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,129]}," Units"]}]}]}," ",{p:[6,1,206],t:7,e:"ui-display",a:{title:"Saved Recipes",button:0},f:[{p:[7,3,251],t:7,e:"ui-section",f:[{p:[8,5,269],t:7,e:"ui-button",a:{icon:"plus",action:"add_recipe"},f:["Add Recipe"]}," ",{p:[9,2,337],t:7,e:"ui-button",a:{icon:"minus",action:"clear_recipes"},f:["Clear Recipes"]}," ",{t:4,f:[{p:[11,7,445],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense_recipe",params:['{"recipe": "',{t:2,r:"contents",p:[11,80,518]},'"}']},f:[{t:2,r:"recipe_name",p:[11,96,534]}]}],n:52,r:"data.recipes",p:[10,5,415]}]}]}," ",{p:{button:[{t:4,f:[{p:[18,7,719],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[18,37,749]}],action:"amount",params:['{"target": ',{t:2,r:".",p:[18,114,826]},"}"]},f:[{t:2,r:".",p:[18,122,834]}]}],n:52,r:"data.beakerTransferAmounts",p:[17,5,675]}]},t:7,e:"ui-display",a:{title:"Dispense",button:0},f:[" ",{p:[21,3,886],t:7,e:"ui-section",f:[{t:4,f:[{p:[23,7,936],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[23,74,1003]},'"}']},f:[{t:2,r:"title",p:[23,84,1013]}]}],n:52,r:"data.chemicals",p:[22,5,904]}]}]}," ",{p:{button:[{t:4,f:[{p:[30,7,1190],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[30,66,1249]},"}"]},f:[{t:2,r:".",p:[30,74,1257]}]}],n:52,r:"data.beakerTransferAmounts",p:[29,5,1146]}," ",{p:[32,5,1295],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[32,36,1326]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[34,3,1423],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[36,7,1493],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[36,13,1499]},"/",{t:2,r:"data.beakerMaxVolume",p:[36,55,1541]}," Units"]}," ",{p:[37,7,1586],t:7,e:"br"}," ",{t:4,f:[{p:[39,9,1639],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[39,52,1682]}," units of ",{t:2,r:"name",p:[39,87,1717]}]},{p:[39,102,1732],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[38,7,1599]},{t:4,n:51,f:[{p:[41,9,1763],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[35,5,1458]},{t:4,n:51,f:[{p:[44,7,1839],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],379:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,79,421]}," K"]}]}]}," ",{p:{button:[{p:[14,5,564],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,595]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,692],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,762],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,781]}," K"]}," ",{p:[19,7,831],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,885],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,928]}," units of ",{t:2,r:"name",p:[21,87,963]}]},{p:[21,102,978],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,845]},{t:4,n:51,f:[{p:[23,9,1009],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,727]},{t:4,n:51,f:[{p:[26,7,1085],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],380:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:["\ufeff",{t:4,f:[" ",{p:[2,2,33],t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[{p:[3,3,71],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"Eject":"close"'},p:[3,20,88]}],style:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"selected":null'},p:[4,11,144]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,11,200]}],action:"eject"},f:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"Eject":"No beaker"'},p:[7,5,269]}]}," ",{p:[10,3,341],t:7,e:"ui-section",f:[{t:4,f:[{t:4,f:[{p:[13,6,427],t:7,e:"ui-section",a:{label:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[13,25,446]}," units of ",{t:2,r:"name",p:[13,60,481]}],nowrap:0},f:[{p:[14,7,506],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{p:[15,8,556],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[15,61,609]},'", "amount": 1}']},f:["1"]}," ",{p:[16,8,654],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[16,61,707]},'", "amount": 5}']},f:["5"]}," ",{p:[17,8,752],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[17,61,805]},'", "amount": 10}']},f:["10"]}," ",{p:[18,8,852],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[18,61,905]},'", "amount": 1000}']},f:["All"]}," ",{p:[19,8,955],t:7,e:"ui-button",a:{action:"transferToBuffer",params:['{"id": "',{t:2,r:"id",p:[19,61,1008]},'", "amount": -1}']},f:["Custom"]}," ",{p:[20,8,1059],t:7,e:"ui-button",a:{action:"analyze",params:['{"id": "',{t:2,r:"id",p:[20,52,1103]},'"}']},f:["Analyze"]}]}]}],n:52,r:"data.beakerContents",p:[12,5,391]},{t:4,n:51,f:[{p:[24,5,1185],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"data.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[11,4,358]},{t:4,n:51,f:[{p:[27,5,1256],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}," ",{p:[32,2,1344],t:7,e:"ui-display",a:{title:"Buffer"},f:[{p:[33,3,1375],t:7,e:"ui-button",a:{action:"toggleMode",state:[{t:2,x:{r:["data.mode"],s:'_0?null:"selected"'},p:[33,41,1413]}]},f:["Destroy"]}," ",{p:[34,3,1471],t:7,e:"ui-button",a:{action:"toggleMode",state:[{t:2,x:{r:["data.mode"],s:'_0?"selected":null'},p:[34,41,1509]}]},f:["Transfer to Beaker"]}," ",{p:[35,3,1578],t:7,e:"ui-section",f:[{t:4,f:[{p:[37,5,1630],t:7,e:"ui-section",a:{label:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[37,24,1649]}," units of ",{t:2,r:"name",p:[37,59,1684]}],nowrap:0},f:[{p:[38,6,1708],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{p:[39,7,1757],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[39,62,1812]},'", "amount": 1}']},f:["1"]}," ",{p:[40,7,1856],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[40,62,1911]},'", "amount": 5}']},f:["5"]}," ",{p:[41,7,1955],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[41,62,2010]},'", "amount": 10}']},f:["10"]}," ",{p:[42,7,2056],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[42,62,2111]},'", "amount": 1000}']},f:["All"]}," ",{p:[43,7,2160],t:7,e:"ui-button",a:{action:"transferFromBuffer",params:['{"id": "',{t:2,r:"id",p:[43,62,2215]},'", "amount": -1}']},f:["Custom"]}," ",{p:[44,7,2265],t:7,e:"ui-button",a:{action:"analyze",params:['{"id": "',{t:2,r:"id",p:[44,51,2309]},'"}']},f:["Analyze"]}]}]}],n:52,r:"data.bufferContents",p:[36,4,1595]}]}]}," ",{t:4,f:[{p:[52,3,2445],t:7,e:"ui-display",a:{title:"Pills, Bottles and Patches"},f:[{t:4,f:[{p:[54,5,2529],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["id","data.chosenPillStyle"],s:'_0==_1?"selected":null'},p:[54,23,2547]}],action:"pillStyle",params:['{"id": "',{t:2,r:"id",p:[54,108,2632]},'"}']},f:[{t:3,r:"htmltag",p:[54,118,2642]}]}],n:52,r:"data.pillStyles",p:[53,4,2498]}," ",{p:[56,4,2686],t:7,e:"br"}," ",{t:4,f:[{p:[58,5,2732],t:7,e:"ui-button",a:{action:"ejectp",state:[{t:2,x:{r:["data.isPillBottleLoaded"],s:'_0?null:"disabled"'},p:[58,39,2766]}]},f:[{t:2,x:{r:["data.isPillBottleLoaded"],s:'_0?"Eject":"No Pill bottle loaded"'},p:[58,88,2815]}]}," ",{p:[59,5,2896],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.pillBotContent",p:[59,27,2918]},"/",{t:2,r:"data.pillBotMaxContent",p:[59,51,2942]}]}],n:50,r:"data.isPillBottleLoaded",p:[57,4,2695]},{t:4,n:51,f:[{p:[61,5,2994],t:7,e:"span",a:{"class":"average"},f:["No Pillbottle"]}],r:"data.isPillBottleLoaded"}," ",{p:[64,4,3055],t:7,e:"br"}," ",{p:[65,4,3065],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[65,63,3124]}]},f:["Create Pill (max 50µ)"]}," ",{p:[66,4,3208],t:7,e:"br"}," ",{p:[67,4,3218],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[67,63,3277]}]},f:["Create Multiple Pills"]}," ",{p:[68,4,3361],t:7,e:"br"}," ",{p:[69,4,3371],t:7,e:"br"}," ",{p:[70,4,3381],t:7,e:"ui-button",a:{action:"createPatch",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[70,64,3441]}]},f:["Create Patch (max 40µ)"]}," ",{p:[71,4,3526],t:7,e:"br"}," ",{p:[72,4,3536],t:7,e:"ui-button",a:{action:"createPatch",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[72,64,3596]}]},f:["Create Multiple Patches"]}," ",{p:[73,4,3682],t:7,e:"br"}," ",{p:[74,4,3692],t:7,e:"br"}," ",{p:[75,4,3702],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[75,65,3763]}]},f:["Create Bottle (max 30µ)"]}," ",{p:[76,4,3849],t:7,e:"br"}," ",{p:[77,4,3859],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 1}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[77,65,3920]}]},f:["Dispense Buffer to Bottles"]}," ",{p:[78,4,4009],t:7,e:"br"}," ",{p:[79,4,4019],t:7,e:"br"}," ",{p:[80,4,4029],t:7,e:"ui-button",a:{action:"createVial",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[80,63,4088]}]},f:["Create Hypo Vial (max 60µ)"]}," ",{p:[81,4,4177],t:7,e:"br"}," ",{p:[82,4,4187],t:7,e:"ui-button",a:{action:"createVial",params:'{"many": 1}', state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[82,63,4246]}]},f:["Dispense Buffer to Hypo vials"]}," ",{p:[83,4,4339],t:7,e:"br"}]}],n:50,x:{r:["data.condi"],s:"!_0"},p:[51,2,2422]},{t:4,n:51,f:[{p:[88,3,4382],t:7,e:"ui-display",a:{title:"Condiments bottles and packs"},f:[{p:[89,4,4437],t:7,e:"ui-button",a:{action:"createPill",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[89,63,4496]}]},f:["Create Pack (max 10µ)"]}," ",{p:[90,4,4580],t:7,e:"br"}," ",{p:[91,4,4590],t:7,e:"br"}," ",{p:[92,4,4600],t:7,e:"ui-button",a:{action:"createBottle",params:'{"many": 0}',state:[{t:2,x:{r:["data.bufferContents"],s:'_0?null:"disabled"'},p:[92,65,4661]}]},f:["Create Bottle (max 50µ)"]}]}],x:{r:["data.condi"],s:"!_0"}}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,2,1]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:'_0=="analyze"'},f:[{p:[96,2,4809],t:7,e:"ui-display",a:{title:[{t:2,r:"data.analyzeVars.name",p:[96,20,4827]}]},f:[{p:[97,3,4858],t:7,e:"span",a:{"class":"highlight"},f:["Description:"]}," ",{p:[98,3,4906],t:7,e:"span",a:{"class":"content",style:"float:center"},f:[{t:2,r:"data.analyzeVars.description",p:[98,46,4949]}]}," ",{p:[99,3,4992],t:7,e:"br"}," ",{p:[100,3,5001],t:7,e:"span",a:{"class":"highlight"},f:["Color:"]}," ",{p:[101,3,5043],t:7,e:"span",a:{style:["color: ",{t:2,r:"data.analyzeVars.color",p:[101,23,5063]},"; background-color: ",{t:2,r:"data.analyzeVars.color",p:[101,69,5109]}]},f:[{t:2,r:"data.analyzeVars.color",p:[101,97,5137]}]}," ",{p:[102,3,5174],t:7,e:"br"}," ",{p:[103,3,5183],t:7,e:"span",a:{"class":"highlight"},f:["State:"]}," ",{p:[104,3,5225],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.state",p:[104,25,5247]}]}," ",{p:[105,3,5284],t:7,e:"br"}," ",{p:[106,3,5293],t:7,e:"span",a:{"class":"highlight"},f:["Metabolization Rate:"]}," ",{p:[107,3,5349],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.metaRate",p:[107,25,5371]},"µ/minute"]}," ",{p:[108,3,5419],t:7,e:"br"}," ",{p:[109,3,5428],t:7,e:"span",a:{"class":"highlight"},f:["Overdose Threshold:"]}," ",{p:[110,3,5483],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.overD",p:[110,25,5505]}]}," ",{p:[111,3,5542],t:7,e:"br"}," ",{p:[112,3,5551],t:7,e:"span",a:{"class":"highlight"},f:["Addiction Threshold:"]}," ",{p:[113,3,5607],t:7,e:"span",a:{"class":"content"},f:[{t:2,r:"data.analyzeVars.addicD",p:[113,25,5629]}]}," ",{p:[114,3,5667],t:7,e:"br"}," ",{p:[115,3,5676],t:7,e:"br"}," ",{p:[116,3,5685],t:7,e:"ui-button",a:{action:"goScreen",params:'{"screen": "home"}'},f:["Back"]}]}]}],x:{r:["data.screen"],s:'_0=="home"'}}]},e.exports=a.extend(r.exports)},{341:341}],381:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Recipient Contents"},f:[{p:[2,2,42],t:7,e:"ui-section",f:[{p:[3,3,58],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[3,34,89]}],action:"ejectBeaker"},f:["Eject"]}," ",{p:[4,3,176],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[4,35,208]}],action:"input"},f:["Input"]}," ",{p:[5,3,289],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,35,321]}],action:"amount"},f:[{t:2,r:"data.amount",p:[5,96,382]},"U"]}," ",{p:[6,3,414],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?"disabled":null'},p:[6,33,444]}],action:"makecup"},f:["Create Beaker"]}]}]}," ",{p:[9,1,564],t:7,e:"ui-display",a:{title:"Recipient"},f:[{p:[10,2,597],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[12,4,662],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[12,10,668]},"/",{t:2,r:"data.beakerMaxVolume",p:[12,52,710]}," Units"]}," ",{t:4,f:[{p:[14,5,788],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[14,48,831]}," units of ",{t:2,r:"name",p:[14,83,866]}]},{p:[14,98,881],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[13,4,752]},{t:4,n:51,f:[{p:[16,5,905],t:7,e:"span",a:{"class":"bad"},f:["Recipient Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[11,3,630]},{t:4,n:51,f:[{p:[19,4,976],t:7,e:"span",a:{"class":"average"},f:["No Recipient"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],382:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-button",a:{action:"toggle"},f:[{t:2,x:{r:["data.recollection"],s:'_0?"Recital":"Recollection"'},p:[2,30,43]}]}]}," ",{t:4,f:[{p:[5,3,149],t:7,e:"ui-display",f:[{t:3,r:"data.rec_text",p:[6,3,165]}," ",{t:4,f:[{p:[8,4,231],t:7,e:"br"},{p:[8,8,235],t:7,e:"ui-button",a:{action:"rec_category",params:['{"category": "',{t:2,r:"name",p:[8,63,290]},'"}']},f:[{t:3,r:"name",p:[8,75,302]}," - ",{t:3,r:"desc",p:[8,88,315]}]}],n:52,r:"data.recollection_categories",p:[7,3,188]}," ",{t:3,r:"data.rec_section",p:[10,3,354]}," ",{t:3,r:"data.rec_binds",p:[11,3,380]}]}],n:50,r:"data.recollection",p:[4,1,120]},{t:4,n:51,f:[{p:[14,2,431],t:7,e:"ui-display",a:{title:"Power",button:0},f:[{p:[15,4,469],t:7,e:"ui-section",f:[{t:3,r:"data.power",p:[16,6,488]}]}]}," ",{p:[19,2,541],t:7,e:"ui-display",f:[{p:[20,3,557],t:7,e:"ui-section",f:[{p:[21,4,574],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Driver"?"selected":null'},p:[21,22,592]}],action:"select",params:'{"category": "Driver"}'},f:["Driver"]}," ",{p:[22,4,715],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Script"?"selected":null'},p:[22,22,733]}],action:"select",params:'{"category": "Script"}'},f:["Scripts"]}," ",{p:[23,4,857],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.selected"],s:'_0=="Application"?"selected":null'},p:[23,22,875]}],action:"select",params:'{"category": "Application"}'},f:["Applications"]}," ",{p:[24,4,1014],t:7,e:"br"},{t:3,r:"data.tier_info",p:[24,8,1018]}]}," ",{p:[26,3,1059],t:7,e:"ui-section",f:[{t:3,r:"data.scripturecolors",p:[27,4,1076]}]},{p:[28,16,1119],t:7,e:"hr"}," ",{p:[29,3,1127],t:7,e:"ui-section",f:[{t:4,f:[{p:[31,4,1172],t:7,e:"div",f:[{p:[31,9,1177],t:7,e:"ui-button",a:{tooltip:[{t:3,r:"tip",p:[31,29,1197]}],"tooltip-side":"right",action:"recite",params:['{"category": "',{t:2,r:"type",p:[31,99,1267]},'"}']},f:["Recite ",{t:3,r:"required",p:[31,118,1286]}]}," ",{t:4,f:[{t:4,f:[{p:[34,6,1362],t:7,e:"ui-button",a:{action:"bind",params:['{"category": "',{t:2,r:"type",p:[34,53,1409]},'"}']},f:["Unbind ",{t:3,r:"bound",p:[34,72,1428]}]}],n:50,r:"bound",p:[33,5,1342]},{t:4,n:51,f:[{p:[36,6,1472],t:7,e:"ui-button",a:{action:"bind",params:['{"category": "',{t:2,r:"type",p:[36,53,1519]},'"}']},f:["Quickbind"]}],r:"bound"}],n:50,r:"quickbind",p:[32,6,1319]}," ",{t:3,r:"name",p:[39,6,1586]}," ",{t:3,r:"descname",p:[39,17,1597]}," ",{t:3,r:"invokers",p:[39,32,1612]}]}],n:52,r:"data.scripture",p:[30,3,1143]}]}]}],r:"data.recollection"}]},e.exports=a.extend(r.exports)},{341:341}],383:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Codex Gigas"},f:[{p:[2,2,35],t:7,e:"ui-section",f:[{t:2,r:"data.name",p:[3,3,51]}]}," ",{p:[5,5,86],t:7,e:"ui-section",a:{label:"Prefix"},f:[{p:[6,3,117],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[6,22,136]}],action:"Dark "},f:["Dark"]}," ",{p:[7,3,221],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[7,22,240]}],action:"Hellish "},f:["Hellish"]}," ",{p:[8,3,331],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[8,22,350]}],action:"Fallen "},f:["Fallen"]}," ",{p:[9,3,439],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[9,22,458]}],action:"Fiery "},f:["Fiery"]}," ",{p:[10,3,545],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[10,22,564]}],action:"Sinful "},f:["Sinful"]}," ",{p:[11,3,653],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[11,22,672]}],action:"Blood "},f:["Blood"]}," ",{p:[12,3,759],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==1?null:"disabled"'},p:[12,22,778]}],action:"Fluffy "},f:["Fluffy"]}]}," ",{p:[14,5,888],t:7,e:"ui-section",a:{label:"Title"},f:[{p:[15,3,918],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[15,22,937]}],action:"Lord "},f:["Lord"]}," ",{p:[16,3,1022],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[16,22,1041]}],action:"Prelate "},f:["Prelate"]}," ",{p:[17,3,1132],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[17,22,1151]}],action:"Count "},f:["Count"]}," ",{p:[18,3,1238],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[18,22,1257]}],action:"Viscount "},f:["Viscount"]}," ",{p:[19,3,1350],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[19,22,1369]}],action:"Vizier "},f:["Vizier"]}," ",{p:[20,3,1458],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[20,22,1477]}],action:"Elder "},f:["Elder"]}," ",{p:[21,3,1564],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=2?null:"disabled"'},p:[21,22,1583]}],action:"Adept "},f:["Adept"]}]}," ",{p:[23,5,1691],t:7,e:"ui-section",a:{label:"Name"},f:[{p:[24,3,1720],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[24,22,1739]}],action:"hal"},f:["hal"]}," ",{p:[25,3,1821],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[25,22,1840]}],action:"ve"},f:["ve"]}," ",{p:[26,3,1920],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[26,22,1939]}],action:"odr"},f:["odr"]}," ",{p:[27,3,2021],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[27,22,2040]}],action:"neit"},f:["neit"]}," ",{p:[28,3,2124],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[28,22,2143]}],action:"ci"},f:["ci"]}," ",{p:[29,3,2223],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[29,22,2242]}],action:"quon"},f:["quon"]}," ",{p:[30,3,2326],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[30,22,2345]}],action:"mya"},f:["mya"]}," ",{p:[31,3,2427],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[31,22,2446]}],action:"folth"},f:["folth"]}," ",{p:[32,3,2532],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[32,22,2551]}],action:"wren"},f:["wren"]}," ",{p:[33,3,2635],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[33,22,2654]}],action:"geyr"},f:["geyr"]}," ",{p:[34,3,2738],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[34,22,2757]}],action:"hil"},f:["hil"]}," ",{p:[35,3,2839],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[35,22,2858]}],action:"niet"},f:["niet"]}," ",{p:[36,3,2942],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[36,22,2961]}],action:"twou"},f:["twou"]}," ",{p:[37,3,3045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[37,22,3064]}],action:"phi"},f:["phi"]}," ",{p:[38,3,3146],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0<=4?null:"disabled"'},p:[38,22,3165]}],action:"coa"},f:["coa"]}]}," ",{p:[40,5,3268],t:7,e:"ui-section",a:{label:"suffix"},f:[{p:[41,3,3299],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[41,22,3318]}],action:" the Red"},f:["the Red"]}," ",{p:[42,3,3409],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[42,22,3428]}],action:" the Soulless"},f:["the Soulless"]}," ",{p:[43,3,3529],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[43,22,3548]}],action:" the Master"},f:["the Master"]}," ",{p:[44,3,3645],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[44,22,3664]}],action:", the Lord of all things"},f:["the Lord of all things"]}," ",{p:[45,3,3786],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0==4?null:"disabled"'},p:[45,22,3805]}],action:", Jr."},f:["jr"]}]}," ",{p:[47,5,3909],t:7,e:"ui-section",a:{label:"submit"},f:[{p:[48,3,3941],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.currentSection"],s:'_0>=4?null:"disabled"'},p:[48,21,3959]}],action:"search"},f:["search"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],384:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[2,1,2],t:7,e:"ui-button",a:{icon:"circle",action:"clean_order"},f:["Clear Order"]},{p:[2,70,71],t:7,e:"br"},{p:[2,74,75],t:7,e:"br"}," ",{p:[3,1,81],t:7,e:"i",f:["Your new computer device you always dreamed of is just four steps away..."]},{p:[3,81,161],t:7,e:"hr"}," ",{t:4,f:[" ",{p:[5,1,223],t:7,e:"div",a:{"class":"item"},f:[{p:[6,2,244],t:7,e:"h2",f:["Step 1: Select your device type"]}," ",{p:[7,2,287],t:7,e:"ui-button",a:{icon:"calc",action:"pick_device",params:'{"pick" : "1"}'},f:["Laptop"]}," ",{p:[8,2,377],t:7,e:"ui-button",a:{icon:"calc",action:"pick_device",params:'{"pick" : "2"}'},f:["LTablet"]}]}],n:50,x:{r:["data.state"],s:"_0==0"},p:[4,1,167]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.state"],s:"_0==1"},f:[{p:[11,1,502],t:7,e:"div",a:{"class":"item"},f:[{p:[12,2,523],t:7,e:"h2",f:["Step 2: Personalise your device"]}," ",{p:[13,2,566],t:7,e:"table",f:[{p:[14,3,577],t:7,e:"tr",f:[{p:[15,4,586],t:7,e:"td",f:[{p:[15,8,590],t:7,e:"b",f:["Current Price:"]}]},{p:[16,4,616],t:7,e:"td",f:[{t:2,r:"data.totalprice",p:[16,8,620]},"C"]}]}," ",{p:[18,3,653],t:7,e:"tr",f:[{p:[19,4,663],t:7,e:"td",f:[{p:[19,8,667],t:7,e:"b",f:["Battery:"]}]},{p:[20,4,687],t:7,e:"td",f:[{p:[20,8,691],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "1"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==1?"selected":null'},p:[20,73,756]}]},f:["Standard"]}]},{p:[21,4,827],t:7,e:"td",f:[{p:[21,8,831],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "2"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==2?"selected":null'},p:[21,73,896]}]},f:["Upgraded"]}]},{p:[22,4,967],t:7,e:"td",f:[{p:[22,8,971],t:7,e:"ui-button",a:{action:"hw_battery",params:'{"battery" : "3"}',state:[{t:2,x:{r:["data.hw_battery"],s:'_0==3?"selected":null'},p:[22,73,1036]}]},f:["Advanced"]}]}]}," ",{p:[24,3,1115],t:7,e:"tr",f:[{p:[25,4,1124],t:7,e:"td",f:[{p:[25,8,1128],t:7,e:"b",f:["Hard Drive:"]}]},{p:[26,4,1151],t:7,e:"td",f:[{p:[26,8,1155],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "1"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==1?"selected":null'},p:[26,67,1214]}]},f:["Standard"]}]},{p:[27,4,1282],t:7,e:"td",f:[{p:[27,8,1286],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "2"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==2?"selected":null'},p:[27,67,1345]}]},f:["Upgraded"]}]},{p:[28,4,1413],t:7,e:"td",f:[{p:[28,8,1417],t:7,e:"ui-button",a:{action:"hw_disk",params:'{"disk" : "3"}',state:[{t:2,x:{r:["data.hw_disk"],s:'_0==3?"selected":null'},p:[28,67,1476]}]},f:["Advanced"]}]}]}," ",{p:[30,3,1552],t:7,e:"tr",f:[{p:[31,4,1561],t:7,e:"td",f:[{p:[31,8,1565],t:7,e:"b",f:["Network Card:"]}]},{p:[32,4,1590],t:7,e:"td",f:[{p:[32,8,1594],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "0"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==0?"selected":null'},p:[32,73,1659]}]},f:["None"]}]},{p:[33,4,1726],t:7,e:"td",f:[{p:[33,8,1730],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "1"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==1?"selected":null'},p:[33,73,1795]}]},f:["Standard"]}]},{p:[34,4,1866],t:7,e:"td",f:[{p:[34,8,1870],t:7,e:"ui-button",a:{action:"hw_netcard",params:'{"netcard" : "2"}',state:[{t:2,x:{r:["data.hw_netcard"],s:'_0==2?"selected":null'},p:[34,73,1935]}]},f:["Advanced"]}]}]}," ",{p:[36,3,2014],t:7,e:"tr",f:[{p:[37,4,2023],t:7,e:"td",f:[{p:[37,8,2027],t:7,e:"b",f:["Nano Printer:"]}]},{p:[38,4,2052],t:7,e:"td",f:[{p:[38,8,2056],t:7,e:"ui-button",a:{action:"hw_nanoprint",params:'{"print" : "0"}',state:[{t:2,x:{r:["data.hw_nanoprint"],s:'_0==0?"selected":null'},p:[38,73,2121]}]},f:["None"]}]},{p:[39,4,2190],t:7,e:"td",f:[{p:[39,8,2194],t:7,e:"ui-button",a:{action:"hw_nanoprint",params:'{"print" : "1"}',state:[{t:2,x:{r:["data.hw_nanoprint"],s:'_0==1?"selected":null'},p:[39,73,2259]}]},f:["Standard"]}]}]}," ",{p:[41,3,2340],t:7,e:"tr",f:[{p:[42,4,2349],t:7,e:"td",f:[{p:[42,8,2353],t:7,e:"b",f:["Card Reader:"]}]},{p:[43,4,2377],t:7,e:"td",f:[{p:[43,8,2381],t:7,e:"ui-button",a:{action:"hw_card",params:'{"card" : "0"}',state:[{t:2,x:{r:["data.hw_card"],s:'_0==0?"selected":null'},p:[43,67,2440]}]},f:["None"]}]},{p:[44,4,2504],t:7,e:"td",f:[{p:[44,8,2508],t:7,e:"ui-button",a:{action:"hw_card",params:'{"card" : "1"}',state:[{t:2,x:{r:["data.hw_card"],s:'_0==1?"selected":null'},p:[44,67,2567]}]},f:["Standard"]}]}]}]}," ",{t:4,f:[" ",{p:[49,4,2706],t:7,e:"table",f:[{p:[50,5,2719],t:7,e:"tr",f:[{p:[51,6,2730],t:7,e:"td",f:[{p:[51,10,2734],t:7,e:"b",f:["Processor Unit:"]}]},{p:[52,6,2763],t:7,e:"td",f:[{p:[52,10,2767],t:7,e:"ui-button",a:{action:"hw_cpu",params:'{"cpu" : "1"}',state:[{t:2,x:{r:["data.hw_cpu"],s:'_0==1?"selected":null'},p:[52,67,2824]}]},f:["Standard"]}]},{p:[53,6,2893],t:7,e:"td",f:[{p:[53,10,2897],t:7,e:"ui-button",a:{action:"hw_cpu",params:'{"cpu" : "2"}',state:[{t:2,x:{r:["data.hw_cpu"],s:'_0==2?"selected":null'},p:[53,67,2954]}]},f:["Advanced"]}]}]}," ",{p:[55,5,3033],t:7,e:"tr",f:[{p:[56,6,3044],t:7,e:"td",f:[{p:[56,10,3048],t:7,e:"b",f:["Tesla Relay:"]}]},{p:[57,6,3074],t:7,e:"td",f:[{p:[57,10,3078],t:7,e:"ui-button",a:{action:"hw_tesla",params:'{"tesla" : "0"}',state:[{t:2,x:{r:["data.hw_tesla"],s:'_0==0?"selected":null'},p:[57,71,3139]}]},f:["None"]}]},{p:[58,6,3206],t:7,e:"td",f:[{p:[58,10,3210],t:7,e:"ui-button",a:{action:"hw_tesla",params:'{"tesla" : "1"}',state:[{t:2,x:{r:["data.hw_tesla"],s:'_0==1?"selected":null'},p:[58,71,3271]}]},f:["Standard"]}]}]}]}],n:50,x:{r:["data.devtype"],s:"_0!=2"},p:[48,3,2659]}," ",{p:[62,3,3374],t:7,e:"table",f:[{p:[63,4,3386],t:7,e:"tr",f:[{p:[64,5,3396],t:7,e:"td",f:[{p:[64,9,3400],t:7,e:"b",f:["Confirm Order:"]}]},{p:[65,5,3427],t:7,e:"td",f:[{p:[65,9,3431],t:7,e:"ui-button",a:{action:"confirm_order"},f:["CONFIRM"]}]}]}]}," ",{p:[69,2,3512],t:7,e:"hr"}," ",{p:[70,2,3519],t:7,e:"b",f:["Battery"]}," allows your device to operate without external utility power source. Advanced batteries increase battery life.",{p:[70,127,3644],t:7,e:"br"}," ",{p:[71,2,3651],t:7,e:"b",f:["Hard Drive"]}," stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.",{p:[71,130,3779],t:7,e:"br"}," ",{p:[72,2,3786],t:7,e:"b",f:["Network Card"]}," allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts.",{p:[72,233,4017],t:7,e:"br"}," ",{p:[73,2,4024],t:7,e:"b",f:["Processor Unit"]}," is critical for your device's functionality. It allows you to run programs from your hard drive. Advanced CPUs use more power, but allow you to run more programs on background at once.",{p:[73,208,4230],t:7,e:"br"}," ",{p:[74,2,4237],t:7,e:"b",f:["Tesla Relay"]}," is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source. This component is currently unavailable on tablet computers due to size restrictions.",{p:[74,246,4481],t:7,e:"br"}," ",{p:[75,2,4488],t:7,e:"b",f:["Nano Printer"]}," is device that allows for various paperwork manipulations, such as, scanning of documents or printing new ones. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.",{p:[75,241,4727],t:7,e:"br"}," ",{p:[76,2,4734],t:7,e:"b",f:["Card Reader"]}," adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards."]}]},{t:4,n:50,x:{r:["data.state"],s:"(!(_0==1))&&(_0==2)"},f:[" ",{p:[79,2,4981],t:7,e:"h2",f:["Step 3: Payment"]}," ",{p:[80,2,5008],t:7,e:"b",f:["Your device is now ready for fabrication.."]},{p:[80,51,5057],t:7,e:"br"}," ",{p:[81,2,5064],t:7,e:"i",f:["Please ensure the required amount of credits are in the machine, then press purchase."]},{p:[81,94,5156],t:7,e:"br"}," ",{p:[82,2,5163],t:7,e:"i",f:["Current credits: ",{p:[82,22,5183],t:7,e:"b",f:[{t:2,r:"data.credits",p:[82,25,5186]},"C"]}]},{p:[82,50,5211],t:7,e:"br"}," ",{p:[83,2,5218],t:7,e:"i",f:["Total price: ",{p:[83,18,5234],t:7,e:"b",f:[{t:2,r:"data.totalprice",p:[83,21,5237]},"C"]}]},{p:[83,49,5265],t:7,e:"br"},{p:[83,53,5269],t:7,e:"br"}," ",{p:[84,2,5276],t:7,e:"ui-button",a:{action:"purchase",state:[{t:2,x:{r:["data.credits","data.totalprice"],s:'_0>=_1?null:"disabled"'},p:[84,38,5312]}]},f:["PURCHASE"]}]},{t:4,n:50,x:{r:["data.state"],s:"(!(_0==1))&&((!(_0==2))&&(_0==3))"},f:[" ",{p:[87,2,5423],t:7,e:"h2",f:["Step 4: Thank you for your purchase"]},{p:[87,46,5467],t:7,e:"br"}," ",{p:[88,2,5474],t:7,e:"b",f:["Should you experience any issues with your new device, contact your local network admin for assistance."]}]}],x:{r:["data.state"],s:"_0==0"}}]},e.exports=a.extend(r.exports)},{341:341}],385:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,22],t:7,e:"ui-display",f:[{p:[3,2,37],t:7,e:"ui-section",a:{label:"Cap"},f:[{p:[4,3,65],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.is_capped"],s:'_0?"power-off":"close"'},p:[4,20,82]}],style:[{t:2,x:{r:["data.is_capped"],s:'_0?null:"selected"'},p:[4,71,133]}],action:"toggle_cap"},f:[{t:2,x:{r:["data.is_capped"],s:'_0?"On":"Off"'},p:[6,4,202]}]}]}]}],n:50,r:"data.has_cap",p:[1,1,0]},{p:[10,1,288],t:7,e:"ui-display",f:[{t:4,f:[{p:[14,2,419],t:7,e:"ui-section",f:[{p:[15,3,435],t:7,e:"ui-button",a:{action:"select_colour"},f:["Select New Colour"]}]}],n:50,r:"data.can_change_colour",p:[13,1,386]}]}," ",{p:[19,1,540],t:7,e:"ui-display",a:{title:"Stencil"},f:[{t:4,f:[{p:[21,2,599],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[21,21,618]}]},f:[{t:4,f:[{p:[23,7,655],t:7,e:"ui-button",a:{action:"select_stencil",params:['{"item":"',{t:2,r:"item",p:[23,59,707]},'"}'],style:[{t:2,x:{r:["item","data.selected_stencil"],s:'_0==_1?"selected":null'},p:[24,12,731]}]},f:[{t:2,r:"item",p:[25,4,791]}]}],n:52,r:"items",p:[22,3,632]}]}],n:52,r:"data.drawables",p:[20,3,572]}]}," ",{p:[31,1,874],t:7,e:"ui-display",a:{title:"Text Mode"},f:[{p:[32,2,907],t:7,e:"ui-section",a:{label:"Current Buffer"},f:[{t:2,r:"text_buffer",p:[32,37,942]}]}," ",{p:[34,2,976],t:7,e:"ui-section",f:[{p:[34,14,988],t:7,e:"ui-button",a:{action:"enter_text"},f:["New Text"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],386:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{isHead:function(t){return t%10==0},dept_class:function(t){return 0==t?"dept-cap":t>=10&&20>t?"dept-sec":t>=20&&30>t?"dept-med":t>=30&&40>t?"dept-sci":t>=40&&50>t?"dept-eng":t>=50&&60>t?"dept-cargo":t>=200&&230>t?"dept-cent":"dept-other"},health_state:function(t,e,n,a){var r=t+e+n+a;return 0>=r?"health-5":25>=r?"health-4":50>=r?"health-3":75>=r?"health-2":"health-0"}}}}(r),r.exports.css=" .health {\r\n width: 16px;\r\n height: 16px;\r\n background-color: #FFF;\r\n border: 1px solid #434343;\r\n position: relative;\r\n top: 2px;\r\n display: inline-block;\r\n }\r\n .health-5 { background-color: #17d568; }\r\n .health-4 { background-color: #2ecc71; }\r\n .health-3 { background-color: #e67e22; }\r\n .health-2 { background-color: #ed5100; }\r\n .health-1 { background-color: #e74c3c; }\r\n .health-0 { background-color: #ed2814; }\r\n\r\n .dept-cap {color : #C06616;}\r\n .dept-sec {color : #E74C3C;}\r\n .dept-med {color : #3498DB;}\r\n .dept-sci {color : #9B59B6;}\r\n .dept-eng {color : #F1C40F;}\r\n .dept-cargo {color : #F39C12;}\r\n .dept-cent {color : #00C100;}\r\n .dept-other {color: #C38312;}\r\n\r\n .oxy { color : #3498db; }\r\n .toxin { color : #2ecc71; }\r\n .burn { color : #e67e22; }\r\n .brute { color : #e74c3c; }\r\n\r\n table.crew{\r\n border-collapse: collapse;\r\n }\r\n\r\n table.crew td {\r\n padding : 0px 10px;\r\n }",r.exports.template={v:3,t:[" ",{p:[27,1,1030],t:7,e:"ui-display",f:[{p:[28,2,1045],t:7,e:"ui-section",f:[{p:[29,3,1061],t:7,e:"table",a:{"class":"crew"},f:[{p:[30,3,1085],t:7,e:"thead",f:[{p:[31,3,1096],t:7,e:"tr",f:[{p:[32,4,1105],t:7,e:"th",f:["Name"]}," ",{p:[33,4,1123],t:7,e:"th",f:["Status"]}," ",{p:[34,4,1143],t:7,e:"th",f:["Vitals"]}," ",{p:[35,4,1163],t:7,e:"th",f:["Position"]}," ",{t:4,f:[{p:[37,5,1216],t:7,e:"th",f:["Tracking"]}],n:50,r:"data.link_allowed",p:[36,4,1185]}]}]}," ",{p:[41,3,1270],t:7,e:"tbody",f:[{t:4,f:[{p:[43,4,1308],t:7,e:"tr",f:[{p:[44,5,1318],t:7,e:"td",f:[{p:[45,6,1329],t:7,e:"span",a:{"class":[{t:2,x:{r:["isHead","ijob"],s:'_0(_1)?"bold ":""'},p:[45,19,1342]},{t:2,x:{r:["dept_class","ijob"],s:"_0(_1)"},p:[45,49,1372]}]},f:[{t:2,r:"name",p:[46,7,1402]}," (",{t:2,r:"assignment",p:[46,17,1412]},") ",{p:[47,6,1434],t:7,e:"span",f:[]}]}]}," ",{p:[49,5,1457],t:7,e:"td",f:[{t:4,f:[{p:[51,7,1498],t:7,e:"span",a:{"class":["health ",{t:2,x:{r:["health_state","oxydam","toxdam","burndam","brutedam"],s:"_0(_1,_2,_3,_4)"},p:[51,27,1518]}]}}],n:50,x:{r:["oxydam"],s:"_0!=null"},p:[50,6,1468]},{t:4,n:51,f:[{t:4,f:[{p:[54,8,1626],t:7,e:"span",a:{"class":"health health-5"}}],n:50,r:"life_status",p:[53,7,1598]},{t:4,n:51,f:[{p:[56,8,1688],t:7,e:"span",a:{"class":"health health-0"}}],r:"life_status"}],x:{r:["oxydam"],s:"_0!=null"}}]}," ",{p:[60,5,1771],t:7,e:"td",f:[{t:4,f:[{p:[62,7,1812],t:7,e:"span",f:["( ",{p:[64,8,1836],t:7,e:"span",a:{"class":"oxy"},f:[{t:2,r:"oxydam",p:[64,26,1854]}]}," / ",{p:[66,8,1890],t:7,e:"span",a:{"class":"toxin"},f:[{t:2,r:"toxdam",p:[66,28,1910]}]}," / ",{p:[68,8,1946],t:7,e:"span",a:{"class":"burn"},f:[{t:2,r:"burndam",p:[68,27,1965]}]}," / ",{p:[70,8,2002],t:7,e:"span",a:{"class":"brute"},f:[{t:2,r:"brutedam",p:[70,28,2022]}]}," )"]}],n:50,x:{r:["oxydam"],s:"_0!=null"},p:[61,6,1782]},{t:4,n:51,f:[{t:4,f:[{p:[75,8,2116],t:7,e:"span",f:["Alive"]}],n:50,r:"life_status",p:[74,7,2088]},{t:4,n:51,f:[{p:[77,8,2159],t:7,e:"span",f:["Dead"]}],r:"life_status"}],x:{r:["oxydam"],s:"_0!=null"}}]}," ",{p:[81,5,2222],t:7,e:"td",f:[{t:4,f:[{p:[83,6,2260],t:7,e:"span",f:[{t:2,r:"area",p:[83,12,2266]}]}],n:50,x:{r:["pos_x"],s:"_0!=null"},p:[82,5,2232]},{t:4,n:51,f:[{p:[85,6,2302],t:7,e:"span",f:["N/A"]}],x:{r:["pos_x"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[89,6,2381],t:7,e:"td",f:[{p:[90,7,2393],t:7,e:"ui-button",a:{action:"select_person",state:[{t:2,x:{r:["can_track"],s:'_0?null:"disabled"'},p:[90,48,2434]}],params:['{"name":"',{t:2,r:"name",p:[90,100,2486]},'"}']},f:["Track"]}]}],n:50,r:"data.link_allowed",p:[88,5,2348]}]}],n:52,r:"data.sensors",p:[42,3,1281]}]}]}]}]}," "]},e.exports=a.extend(r.exports)},{341:341}],387:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,189],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,223],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,236]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,265]}]}]}," ",{p:[9,4,317],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[10,6,356],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.temperaturestatus",p:[10,19,369]}]},f:[{t:2,r:"data.occupant.bodyTemperature",p:[10,56,406]}," K"]}]}," ",{p:[12,5,472],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[13,7,507],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[13,20,520]}],max:[{t:2,r:"data.occupant.maxHealth",p:[13,54,554]}],value:[{t:2,r:"data.occupant.health",p:[13,90,590]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[14,16,632]}]},f:[{t:2,r:"data.occupant.health",p:[14,68,684]}]}]}," ",{t:4,f:[{p:[17,7,908],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[17,26,927]}]},f:[{p:[18,9,948],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[18,30,969]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[18,66,1005]}],state:"bad"},f:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[18,103,1042]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[16,5,742]}],n:50,r:"data.hasOccupant",p:[5,3,159]}]}," ",{p:[23,1,1138],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[24,3,1167],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[25,5,1199],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[25,22,1216]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[26,14,1276]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[27,14,1332]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[28,22,1391]}]}]}," ",{p:[30,3,1459],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[31,3,1495],t:7,e:"span",a:{"class":[{t:2,r:"data.temperaturestatus",p:[31,16,1508]}]},f:[{t:2,r:"data.cellTemperature",p:[31,44,1536]}," K"]}]}," ",{p:[33,2,1588],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[34,5,1619],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[34,22,1636]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[34,73,1687]}]}," ",{p:[35,5,1740],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[35,22,1757]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[35,86,1821]}]}]}]}," ",{p:{button:[{p:[40,5,1967],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[40,36,1998]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[42,3,2101],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[45,9,2211],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,r:"volume",p:[45,52,2254]}," units of ",{t:2,r:"name",p:[45,72,2274]}]},{p:[45,87,2289],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[44,7,2171]},{t:4,n:51,f:[{p:[47,9,2320],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[43,5,2136]},{t:4,n:51,f:[{p:[50,7,2396],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],388:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"ui-section",a:{label:"State"},f:[{t:4,f:[{p:[4,4,76],t:7,e:"span",a:{"class":"good"},f:["Ready"]}],n:50,r:"data.full_pressure",p:[3,3,45]},{t:4,n:51,f:[{t:4,f:[{p:[7,5,153],t:7,e:"span",a:{"class":"bad"},f:["Power Disabled"]}],n:50,r:"data.panel_open",p:[6,4,124]},{t:4,n:51,f:[{t:4,f:[{p:[10,6,248],t:7,e:"span",a:{"class":"average"},f:["Pressurizing"]}],n:50,r:"data.pressure_charging",p:[9,5,211]},{t:4,n:51,f:[{p:[12,6,310],t:7,e:"span",a:{"class":"bad"},f:["Off"]}],r:"data.pressure_charging"}],r:"data.panel_open"}],r:"data.full_pressure"}]}," ",{p:[17,2,393],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[18,3,426],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.per",p:[18,36,459]}],state:"good"},f:[{t:2,r:"data.per",p:[18,63,486]},"%"]}]}," ",{ p:[20,5,530],t:7,e:"ui-section",a:{label:"Handle"},f:[{p:[21,9,567],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.flush"],s:'_0?"toggle-on":"toggle-off"'},p:[22,10,589]}],state:[{t:2,x:{r:["data.isai","data.panel_open"],s:'_0||_1?"disabled":null'},p:[23,11,647]}],action:[{t:2,x:{r:["data.flush"],s:'_0?"handle-0":"handle-1"'},p:[24,12,714]}]},f:[{t:2,x:{r:["data.flush"],s:'_0?"Disengage":"Engage"'},p:[25,5,763]}]}]}," ",{p:[27,2,837],t:7,e:"ui-section",a:{label:"Eject"},f:[{p:[28,3,867],t:7,e:"ui-button",a:{icon:"sign-out",state:[{t:2,x:{r:["data.isai"],s:'_0?"disabled":null'},p:[28,37,901]}],action:"eject"},f:["Eject Contents"]},{p:[28,114,978],t:7,e:"br"}]}," ",{p:[30,2,1002],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[31,3,1032],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["data.panel_open"],s:'_0?"disabled":null'},p:[31,38,1067]}],action:[{t:2,x:{r:["data.pressure_charging"],s:'_0?"pump-0":"pump-1"'},p:[31,87,1116]}],style:[{t:2,x:{r:["data.pressure_charging"],s:'_0?"selected":null'},p:[31,145,1174]}]}},{p:[31,206,1235],t:7,e:"br"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],389:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"DNA Vault Database"},f:[{p:[2,3,43],t:7,e:"ui-section",a:{label:"Human DNA"},f:[{p:[3,7,81],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.dna_max",p:[3,28,102]}],value:[{t:2,r:"data.dna",p:[3,53,127]}]},f:[{t:2,r:"data.dna",p:[3,67,141]},"/",{t:2,r:"data.dna_max",p:[3,80,154]}," Samples"]}]}," ",{p:[5,3,208],t:7,e:"ui-section",a:{label:"Plant Data"},f:[{p:[6,5,245],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.plants_max",p:[6,26,266]}],value:[{t:2,r:"data.plants",p:[6,54,294]}]},f:[{t:2,r:"data.plants",p:[6,71,311]},"/",{t:2,r:"data.plants_max",p:[6,87,327]}," Samples"]}]}," ",{p:[8,3,384],t:7,e:"ui-section",a:{label:"Animal Data"},f:[{p:[9,5,422],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.animals_max",p:[9,26,443]}],value:[{t:2,r:"data.animals",p:[9,55,472]}]},f:[{t:2,r:"data.animals",p:[9,73,490]},"/",{t:2,r:"data.animals_max",p:[9,90,507]}," Samples"]}]}]}," ",{t:4,f:[{p:[13,1,616],t:7,e:"ui-display",a:{title:"Personal Gene Therapy"},f:[{p:[14,3,663],t:7,e:"ui-section",f:[{p:[15,2,678],t:7,e:"span",f:["Applicable gene therapy treatments:"]}]}," ",{p:[17,3,747],t:7,e:"ui-section",f:[{p:[18,2,762],t:7,e:"ui-button",a:{action:"gene",params:['{"choice": "',{t:2,r:"data.choiceA",p:[18,47,807]},'"}']},f:[{t:2,r:"data.choiceA",p:[18,67,827]}]}," ",{p:[19,2,858],t:7,e:"ui-button",a:{action:"gene",params:['{"choice": "',{t:2,r:"data.choiceB",p:[19,47,903]},'"}']},f:[{t:2,r:"data.choiceB",p:[19,67,923]}]}]}]}],n:50,x:{r:["data.completed","data.used"],s:"_0&&!_1"},p:[12,1,578]}]},e.exports=a.extend(r.exports)},{341:341}],390:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,183],t:7,e:"ui-section",a:{label:"Items in storage"},f:[{p:[7,4,225],t:7,e:"span",f:[{t:2,r:"data.items",p:[7,10,231]}]}]}],n:50,r:"data.items",p:[5,3,159]}," ",{t:4,f:[{p:[11,5,310],t:7,e:"ui-section",a:{label:"State"},f:[{p:[12,7,344],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[12,20,357]}]},f:[{t:2,r:"data.occupant.stat",p:[12,49,386]}]}]}," ",{p:[14,5,439],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[15,7,474],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[15,20,487]}],max:[{t:2,r:"data.occupant.maxHealth",p:[15,54,521]}],value:[{t:2,r:"data.occupant.health",p:[15,90,557]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[16,16,599]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[16,68,651]}]}]}," ",{t:4,f:[{p:[19,7,888],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[19,26,907]}]},f:[{p:[20,9,928],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[20,30,949]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[20,66,985]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[20,103,1022]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[18,5,722]}," ",{p:[23,5,1109],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[24,9,1145],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[24,22,1158]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[24,68,1204]}]}]}," ",{p:[26,5,1287],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[27,9,1323],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[27,22,1336]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[27,68,1382]}]}]}," ",{p:[29,5,1466],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[31,11,1553],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[31,54,1596]}," units of ",{t:2,r:"name",p:[31,89,1631]}]},{p:[31,104,1646],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[30,9,1508]},{t:4,n:51,f:[{p:[33,11,1681],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[10,3,283]}]}," ",{p:[38,1,1777],t:7,e:"ui-display",a:{title:"Operations"},f:[{p:[39,3,1812],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[41,7,1872],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied"],s:'_0?null:"disabled"'},p:[41,38,1903]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[41,111,1976]},'"}']},f:[{t:2,r:"name",p:[41,121,1986]}]},{p:[41,141,2006],t:7,e:"br"}],n:52,r:"data.chem",p:[40,5,1845]}]}," ",{p:[44,2,2046],t:7,e:"ui-section",a:{label:"Eject"},f:[{p:[45,6,2079],t:7,e:"ui-button",a:{icon:"sign-out",action:"eject"},f:["Eject Contents"]}]}," ",{p:[47,2,2166],t:7,e:"ui-section",a:{label:"Self Cleaning"},f:[{p:[48,3,2204],t:7,e:"ui-button",a:{icon:"recycle",action:"cleaning"},f:["Self-Clean Cycle"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],391:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,24],t:7,e:"ui-display",a:{title:[{t:2,r:"data.question",p:[2,21,42]}]},f:[{p:[3,5,66],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,9,118],t:7,e:"ui-button",a:{action:"vote",params:['{"answer": "',{t:2,r:"answer",p:[6,45,174]},'"}'],style:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[7,18,206]}]},f:[{t:2,r:"answer",p:[7,53,241]}," (",{t:2,r:"amount",p:[7,65,253]},")"]}],n:52,r:"data.answers",p:[4,7,86]}]}]}],n:50,r:"data.shaking",p:[1,1,0]},{t:4,n:51,f:[{p:[13,3,353],t:7,e:"ui-notice",f:["The eightball is not currently being shaken."]}],r:"data.shaking"}]},e.exports=a.extend(r.exports)},{341:341}],392:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,5,17],t:7,e:"span",f:["Time Until Launch: ",{t:2,r:"data.timer_str",p:[2,30,42]}]}]}," ",{p:[4,1,83],t:7,e:"ui-notice",f:[{p:[5,3,98],t:7,e:"span",f:["Engines: ",{t:2,x:{r:["data.engines_started"],s:'_0?"Online":"Idle"'},p:[5,18,113]}]}]}," ",{p:[7,1,180],t:7,e:"ui-display",a:{title:"Early Launch"},f:[{p:[8,2,216],t:7,e:"span",f:["Authorizations Remaining: ",{t:2,x:{r:["data.emagged","data.authorizations_remaining"],s:'_0?"ERROR":_1'},p:[9,2,250]}]}," ",{p:[10,2,318],t:7,e:"ui-button",a:{icon:"exclamation-triangle",action:"authorize",style:"danger",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[12,10,404]}]},f:["AUTHORIZE"]}," ",{p:[15,2,473],t:7,e:"ui-button",a:{icon:"minus",action:"repeal",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[16,10,523]}]},f:["Repeal"]}," ",{p:[19,2,589],t:7,e:"ui-button",a:{icon:"close",action:"abort",state:[{t:2,x:{r:["data.enabled"],s:'_0?null:"disabled"'},p:[20,10,638]}]},f:["Repeal All"]}]}," ",{p:[24,1,722],t:7,e:"ui-display",a:{title:"Authorizations"},f:[{t:4,f:[{p:[26,3,793],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{t:2,r:"name",p:[26,34,824]}," (",{t:2,r:"job",p:[26,44,834]},")"]}],n:52,r:"data.authorizations",p:[25,2,760]},{t:4,n:51,f:[{p:[28,3,870],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:["No authorizations."]}],r:"data.authorizations"}]}]},e.exports=a.extend(r.exports)},{341:341}],393:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Message"},f:[{t:2,r:"data.hidden_message",p:[3,5,50]}]}," ",{p:[5,3,94],t:7,e:"ui-section",a:{label:"Created On"},f:[{t:2,r:"data.realdate",p:[6,5,131]}]}," ",{p:[8,3,169],t:7,e:"ui-section",a:{label:"Approval"},f:[{p:[9,5,204],t:7,e:"ui-button",a:{icon:"arrow-up",state:[{t:2,x:{r:["data.is_creator","data.has_liked"],s:'_0?"disabled":_1?"selected":null'},p:[11,14,252]}],action:"like"},f:[{t:2,r:"data.num_likes",p:[12,21,344]}]}," ",{p:[13,5,380],t:7,e:"ui-button",a:{icon:"circle",state:[{t:2,x:{r:["data.is_creator","data.has_liked","data.has_disliked"],s:'_0?"disabled":!_1&&!_2?"selected":null'},p:[15,14,426]}],action:"neutral"}}," ",{p:[17,5,562],t:7,e:"ui-button",a:{icon:"arrow-down",state:[{t:2,x:{r:["data.is_creator","data.has_disliked"],s:'_0?"disabled":_1?"selected":null'},p:[19,14,612]}],action:"dislike"},f:[{t:2,r:"data.num_dislikes",p:[20,24,710]}]}]}]}," ",{t:4,f:[{p:[24,3,805],t:7,e:"ui-display",a:{title:"Admin Panel"},f:[{p:[25,5,843],t:7,e:"ui-section",a:{label:"Creator Ckey"},f:[{t:2,r:"data.creator_key",p:[25,38,876]}]}," ",{p:[26,5,915],t:7,e:"ui-section",a:{label:"Creator Character Name"},f:[{t:2,r:"data.creator_name",p:[26,48,958]}]}," ",{p:[27,5,998],t:7,e:"ui-button",a:{icon:"remove",action:"delete",style:"danger"},f:["Delete"]}]}],n:50,r:"data.admin_mode",p:[23,1,778]}]},e.exports=a.extend(r.exports)},{341:341}],394:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=a.extend(r.exports)},{341:341}],395:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,20],t:7,e:"ui-notice",f:["Currently syncing with the database"]}],n:50,r:"data.sync",p:[1,1,0]},{t:4,n:51,f:[{p:{button:[{p:[8,4,163],t:7,e:"ui-button",a:{icon:"eject",action:"eject_all"},f:["Eject all"]}," ",{p:[9,4,232],t:7,e:"ui-button",a:{icon:["toggle-",{t:2,x:{r:["data.show_materials"],s:'_0?"off":"on"'},p:[9,28,256]}],action:"toggle_materials_visibility"},f:[{t:2,x:{r:["data.show_materials"],s:'_0?"Hide":"Show"'},p:[10,5,339]}]}]},t:7,e:"ui-display",a:{title:"Materials",button:0},f:[" ",{t:4,f:[{p:[14,4,449],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[15,5,484],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[16,6,520],t:7,e:"section",a:{"class":"cell"}}," ",{p:[17,6,559],t:7,e:"section",a:{"class":"cell"},f:["Mineral"]}," ",{p:[20,6,620],t:7,e:"section",a:{"class":"cell"},f:["Amount"]}," ",{p:[23,6,680],t:7,e:"section",a:{"class":"cell"}}," ",{p:[24,6,719],t:7,e:"section",a:{"class":"cell"}}]}," ",{t:4,f:[{p:[27,6,808],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[28,7,845],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[29,8,876]}]}," ",{p:[31,7,910],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"amount",p:[32,8,941]}]}," ",{p:[34,7,977],t:7,e:"section",a:{"class":"cell"},f:[{p:[35,8,1008],t:7,e:"ui-button",a:{icon:"eject"},f:["Release amount"]}]}," ",{p:[37,7,1084],t:7,e:"section",a:{"class":"cell",style:"width: 40px;"},f:[{p:[38,8,1136],t:7,e:"ui-button",a:{icon:"eject"},f:["Release all"]}]}]}],n:52,r:"data.all_materials",p:[26,5,773]}]}],n:50,r:"data.show_materials",p:[13,3,417]}]}," ",{p:[45,2,1274],t:7,e:"ui-display",a:{title:"Categories"},f:[{t:4,f:[{p:[47,4,1334],t:7,e:"ui-button",f:[{t:2,r:".",p:[47,15,1345]}]}],r:"data.categories",p:[46,3,1309]}]}],r:"data.sync"}]},e.exports=a.extend(r.exports)},{341:341}],396:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,5,49],t:7,e:"ui-button",a:{action:"toggle_power",style:[{t:2,x:{r:["data.toggle"],s:'_0?"selected":null'},p:[5,18,111]}]},f:["Turn ",{t:2,x:{r:["data.toggle"],s:'_0?"off":"on"'},p:[6,16,166]}]}]}," ",{p:[9,3,235],t:7,e:"ui-display",a:{title:"Logging"},f:[{t:4,f:[{p:[11,3,292],t:7,e:"ui-section",a:{label:">"},f:[{t:2,r:".",p:[11,25,314]},{p:[11,30,319],t:7,e:"ui-section",f:[]}]}],n:52,r:"data.logs",p:[10,5,269]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],397:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{seclevelState:function(){switch(this.get("data.seclevel")){case"blue":return"average";case"red":return"bad";case"delta":return"bad bold";default:return"good"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[16,1,323],t:7,e:"ui-display",f:[{p:[17,5,341],t:7,e:"ui-section",a:{label:"Alert Level"},f:[{p:[18,9,383],t:7,e:"span",a:{"class":[{t:2,r:"seclevelState",p:[18,22,396]}]},f:[{t:2,x:{r:["text","data.seclevel"],s:"_0.titleCase(_1)"},p:[18,41,415]}]}]}," ",{p:[20,5,480],t:7,e:"ui-section",a:{label:"Controls"},f:[{p:[21,9,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.alarm"],s:'_0?"close":"bell-o"'},p:[21,26,536]}],action:[{t:2,x:{r:["data.alarm"],s:'_0?"reset":"alarm"'},p:[21,71,581]}]},f:[{t:2,x:{r:["data.alarm"],s:'_0?"Reset":"Activate"'},p:[22,13,631]}]}]}," ",{t:4,f:[{p:[25,7,733],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[26,9,771],t:7,e:"span",a:{"class":"bad bold"},f:["Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[24,5,705]}]}]},e.exports=a.extend(r.exports)},{341:341}],398:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[2,1,31],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,2,60],t:7,e:"ui-button",a:{icon:"power-off",style:[{t:2,x:{r:["data.power"],s:'_0?"selected":"danger"'},p:[3,37,95]}],action:"power"},f:[{t:2,x:{r:["data.power"],s:'_0?"Enabled":"Disabled"'},p:[3,92,150]}]}]}," ",{p:[5,1,218],t:7,e:"ui-section",a:{label:"Tag"},f:[{p:[6,2,245],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:[{t:2,r:"data.tag",p:[6,43,286]}]}]}," ",{p:[8,1,327],t:7,e:"ui-section",a:{label:"Scanning mode"},f:[{p:[9,2,364],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.updating"],s:'_0?"unlock":"lock"'},p:[9,18,380]}],style:[{t:2,x:{r:["data.updating"],s:'_0?null:"danger"'},p:[9,63,425]}],action:"updating",tooltip:"Toggle between automatic scanning or scan only when a button is pressed.","tooltip-side":"right"},f:[{t:2,x:{r:["data.updating"],s:'_0?"AUTO":"MANUAL"'},p:[9,221,583]}]}]}," ",{p:[11,1,649],t:7,e:"ui-section",a:{label:"Detection range"},f:[{p:[12,2,688],t:7,e:"ui-button",a:{icon:"refresh",style:[{t:2,x:{r:["data.globalmode"],s:'_0?null:"selected"'},p:[12,35,721]}],action:"globalmode",tooltip:"Local sector or whole region scanning.","tooltip-side":"right"},f:[{t:2,x:{r:["data.globalmode"],s:'_0?"MAXIMUM":"LOCAL"'},p:[12,165,851]}]}]}]}," ",{t:4,f:[{p:[16,2,957],t:7,e:"ui-display",a:{title:"Current Location"},f:[{p:[17,3,998],t:7,e:"span",f:[{t:2,r:"data.current",p:[17,9,1004]}]}]}," ",{p:[20,2,1048],t:7,e:"ui-display",a:{title:"Detected Signals"},f:[{t:4,f:[{p:[22,3,1114],t:7,e:"ui-section",a:{label:[{t:2,r:"entrytag",p:[22,21,1132]}]},f:[{p:[23,3,1149],t:7,e:"span",f:[{t:2,r:"area",p:[23,9,1155]}," (",{t:2,r:"coord",p:[23,19,1165]},")"]}," ",{t:4,f:[{p:[25,4,1209],t:7,e:"span",f:["Dist: ",{t:2,r:"dist",p:[25,16,1221]},"m Dir: ",{t:2,r:"degrees",p:[25,31,1236]},"° (",{t:2,r:"direction",p:[25,45,1250]},")"]}],n:50,r:"direction",p:[24,3,1187]}]}],n:52,r:"data.signals",p:[21,2,1088]}]}],n:50,r:"data.power",p:[15,1,936]}]},e.exports=a.extend(r.exports)},{341:341}],399:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Labor Camp Teleporter"},f:[{p:[2,2,45],t:7,e:"ui-section",a:{label:"Teleporter Status"},f:[{p:[3,3,87],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.teleporter"],s:'_0?"good":"bad"'},p:[3,16,100]}]},f:[{t:2,x:{r:["data.teleporter"],s:'_0?"Connected":"Not connected"'},p:[3,54,138]}]}]}," ",{t:4,f:[{p:[6,4,244],t:7,e:"ui-section",a:{label:"Location"},f:[{p:[7,5,279],t:7,e:"span",f:[{t:2,r:"data.teleporter_location",p:[7,11,285]}]}]}," ",{p:[9,4,343],t:7,e:"ui-section",a:{label:"Locked status"},f:[{p:[10,5,383],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.teleporter_lock"],s:'_0?"lock":"unlock"'},p:[10,22,400]}],action:"teleporter_lock"},f:[{t:2,x:{r:["data.teleporter_lock"],s:'_0?"Locked":"Unlocked"'},p:[10,93,471]}]}," ",{p:[11,5,537],t:7,e:"ui-button",a:{action:"toggle_open"},f:[{t:2,x:{r:["data.teleporter_state_open"],s:'_0?"Open":"Closed"'},p:[11,37,569]}]}]}],n:50,r:"data.teleporter",p:[5,3,216]},{t:4,n:51,f:[{p:[14,4,666],t:7,e:"span",f:[{p:[14,10,672],t:7,e:"ui-button",a:{action:"scan_teleporter"},f:["Scan Teleporter"]}]}],r:"data.teleporter"}]}," ",{p:[17,1,770],t:7,e:"ui-display",a:{title:"Labor Camp Beacon"},f:[{p:[18,2,811],t:7,e:"ui-section",a:{label:"Beacon Status"},f:[{p:[19,3,849],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.beacon"],s:'_0?"good":"bad"'},p:[19,16,862]}]},f:[{t:2,x:{r:["data.beacon"],s:'_0?"Connected":"Not connected"'},p:[19,50,896]}]}]}," ",{t:4,f:[{p:[22,3,992],t:7,e:"ui-section",a:{label:"Location"},f:[{p:[23,4,1026],t:7,e:"span",f:[{t:2,r:"data.beacon_location",p:[23,10,1032]}]}]}],n:50,r:"data.beacon",p:[21,2,969]},{t:4,n:51,f:[{p:[26,4,1097],t:7,e:"span",f:[{p:[26,10,1103],t:7,e:"ui-button",a:{action:"scan_beacon"},f:["Scan Beacon"]}]}],r:"data.beacon"}]}," ",{p:[29,1,1193],t:7,e:"ui-display",a:{title:"Prisoner details"},f:[{p:[30,2,1233],t:7,e:"ui-section",a:{label:"Prisoner ID"},f:[{p:[31,3,1269],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[31,33,1299]}]}]}," ",{t:4,f:[{p:[34,2,1392],t:7,e:"ui-section",a:{label:"Set ID goal"},f:[{p:[35,4,1429],t:7,e:"ui-button",a:{action:"set_goal"},f:[{t:2,r:"data.goal",p:[35,33,1458]}]}]}],n:50,r:"data.id",p:[33,2,1374]}," ",{p:[38,2,1512],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[39,3,1545],t:7,e:"span",f:[{t:2,x:{r:["data.prisoner.name"],s:'_0?_0:"No Occupant"'},p:[39,9,1551]}]}]}," ",{t:4,f:[{p:[42,3,1661],t:7,e:"ui-section",a:{label:"Criminal Status"},f:[{p:[43,4,1702],t:7,e:"span",f:[{t:2,r:"data.prisoner.crimstat",p:[43,10,1708]}]}]}],n:50,r:"data.prisoner",p:[41,2,1636]}]}," ",{p:[47,1,1785],t:7,e:"ui-display",f:[{p:[48,2,1800],t:7,e:"center",f:[{p:[48,10,1808],t:7,e:"ui-button",a:{action:"teleport",state:[{t:2,x:{r:["data.can_teleport"],s:'_0?null:"disabled"'},p:[48,45,1843]}]},f:["Process Prisoner"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],400:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,2,15],t:7,e:"center",f:[{p:[2,10,23],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[2,40,53]}]}]}]}," ",{p:[4,1,135],t:7,e:"ui-display",a:{title:"Stored Items"},f:[{t:4,f:[{p:[6,3,194],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[6,22,213]}]},f:[{p:[7,4,228],t:7,e:"ui-button",a:{action:"release_items",params:['{"mobref":',{t:2,r:"mob",p:[7,56,280]},"}"],state:[{t:2,x:{r:["data.can_reclaim"],s:'_0?null:"disabled"'},p:[7,72,296]}]},f:["Drop Items"]}]}],n:52,r:"data.mobs",p:[5,2,171]}]}]},e.exports=a.extend(r.exports)},{341:341}],401:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{p:[3,3,70],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.emagged"],s:'_0?"un":null'},p:[3,20,87]},"lock"],state:[{t:2,x:{r:["data.can_toggle_safety"],s:'_0?null:"disabled"'},p:[3,63,130]}],action:"safety"},f:["Safeties: ",{p:[4,14,209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.emagged"],s:'_0?"bad":"good"'},p:[4,27,222]}]},f:[{t:2,x:{r:["data.emagged"],s:'_0?"OFF":"ON"'},p:[4,62,257]}]}]}]},t:7,e:"ui-display",a:{title:"Default Programs",button:0},f:[" ",{t:4,f:[{p:[8,2,363],t:7,e:"ui-button",a:{action:"load_program",params:['{"type": ',{t:2,r:"type",p:[8,52,413]},"}"],style:[{t:2,x:{r:["data.program","type"],s:'_0==_1?"selected":null'},p:[8,70,431]}]},f:[{t:2,r:"name",p:[9,5,483]}," "]},{p:[10,14,506],t:7,e:"br"}],n:52,r:"data.default_programs",p:[7,2,329]}]}," ",{t:4,f:[{p:[14,2,562],t:7,e:"ui-display",a:{title:"Dangerous Programs"},f:[{t:4,f:[{p:[16,4,638],t:7,e:"ui-button",a:{icon:"warning",action:"load_program",params:['{"type": ',{t:2,r:"type",p:[16,69,703]},"}"],style:[{t:2,x:{r:["data.program","type"],s:'_0==_1?"selected":null'},p:[16,87,721]}]},f:[{t:2,r:"name",p:[17,5,773]}," "]},{p:[18,16,798],t:7,e:"br"}],n:52,r:"data.emag_programs",p:[15,3,605]}]}],n:50,r:"data.emagged",p:[13,1,539]}]},e.exports=a.extend(r.exports)},{341:341}],402:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{occupantStatState:function(){switch(this.get("data.occupant.stat")){case 0:return"good";case 1:return"average";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[15,1,280],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[16,3,313],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[17,3,346],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[17,9,352]}]}]}," ",{t:4,f:[{p:[20,5,466],t:7,e:"ui-section",a:{label:"State"},f:[{p:[21,7,500],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[21,20,513]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[21,43,536]}]}]}],n:50,r:"data.occupied",p:[19,3,439]}]}," ",{p:[25,1,680],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[26,2,712],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[27,5,743],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[27,22,760]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[27,71,809]}]}]}," ",{p:[29,3,874],t:7,e:"ui-section",a:{label:"Uses"},f:[{t:2,r:"data.ready_implants",p:[30,5,905]}," ",{t:4,f:[{p:[32,7,969],t:7,e:"span",a:{"class":"fa fa-cog fa-spin"}}],n:50,r:"data.replenishing",p:[31,5,936]}]}," ",{p:[35,3,1036],t:7,e:"ui-section",a:{label:"Activate"},f:[{p:[36,7,1073],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.occupied","data.ready_implants","data.ready"],s:'_0&&_1>0&&_2?null:"disabled"'},p:[36,25,1091]}],action:"implant"},f:[{t:2,x:{r:["data.ready","data.special_name"],s:'_0?(_1?_1:"Implant"):"Recharging"'},p:[37,9,1198]}," "]},{p:[38,19,1302],t:7,e:"br"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],403:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{t:4,f:[{p:[15,3,296],t:7,e:"ui-notice",f:[{p:[16,5,313],t:7,e:"span",f:["Wipe in progress!"]}]}],n:50,r:"data.wiping",p:[14,1,273]},{p:{button:[{t:4,f:[{p:[22,7,479],t:7,e:"ui-button",a:{icon:"trash",state:[{t:2,x:{r:["data.isDead"],s:'_0?"disabled":null'},p:[22,38,510]}],action:"wipe"},f:[{t:2,x:{r:["data.wiping"],s:'_0?"Stop Wiping":"Wipe"'},p:[22,89,561]}," AI"]}],n:50,r:"data.name",p:[21,5,454]}]},t:7,e:"ui-display",a:{title:[{t:2,x:{r:["data.name"],s:'_0||"Empty Card"'},p:[19,19,388]}],button:0},f:[" ",{t:4,f:[{p:[26,5,672],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[27,9,709],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isDead","data.isBraindead"],s:'_0||_1?"bad":"good"'},p:[27,22,722]}]},f:[{t:2,x:{r:["data.isDead","data.isBraindead"],s:'_0||_1?"Offline":"Operational"'},p:[27,76,776]}]}]}," ",{p:[29,5,871],t:7,e:"ui-section",a:{label:"Software Integrity"},f:[{p:[30,7,918],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[30,40,951]}],state:[{t:2,r:"healthState",p:[30,64,975]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[30,81,992]},"%"]}]}," ",{p:[32,5,1055],t:7,e:"ui-section",a:{label:"Laws"},f:[{t:4,f:[{p:[34,9,1117],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:".",p:[34,33,1141]}]},{p:[34,45,1153],t:7,e:"br"}],n:52,r:"data.laws",p:[33,7,1088]}]}," ",{p:[37,5,1200],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[38,7,1237],t:7,e:"ui-button",a:{icon:"signal",style:[{t:2,x:{r:["data.wireless"],s:'_0?"selected":null'},p:[38,39,1269]}],action:"wireless"},f:["Wireless Activity"]}," ",{p:[39,7,1363],t:7,e:"ui-button",a:{icon:"microphone",style:[{t:2,x:{r:["data.radio"],s:'_0?"selected":null'},p:[39,43,1399]}],action:"radio"},f:["Subspace Radio"]}]}],n:50,r:"data.name",p:[25,3,649]}]}]},e.exports=a.extend(r.exports)},{341:341}],404:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,23],t:7,e:"ui-notice",f:[{p:[3,3,38],t:7,e:"span",f:["Waiting for another device to confirm your request..."]}]}],n:50,r:"data.waiting",p:[1,1,0]},{t:4,n:51,f:[{p:[6,2,132],t:7,e:"ui-display",f:[{p:[7,3,148],t:7,e:"ui-section",f:[{t:4,f:[{p:[9,5,197],t:7,e:"ui-button",a:{icon:"check",action:"auth_swipe"},f:["Authorize ",{t:2,r:"data.auth_required",p:[9,59,251]}]}],n:50,r:"data.auth_required",p:[8,4,165]},{t:4,n:51,f:[{p:[11,5,304],t:7,e:"ui-button",a:{icon:"warning",state:[{t:2,x:{r:["data.red_alert"],s:'_0?"disabled":null'},p:[11,38,337]}],action:"red_alert"},f:["Red Alert"]}," ",{p:[12,5,423],t:7,e:"ui-button",a:{icon:"wrench",state:[{t:2,x:{r:["data.emergency_maint"],s:'_0?"disabled":null'},p:[12,37,455]}],action:"emergency_maint"},f:["Emergency Maintenance Access"]}," ",{p:[13,5,572],t:7,e:"ui-button",a:{icon:"warning",state:"null",action:"bsa_unlock"},f:["Bluespace Artillery Unlock"]}],r:"data.auth_required"}]}]}],r:"data.waiting"}]},e.exports=a.extend(r.exports)},{341:341}],405:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Ore values"},f:[{t:4,f:[{p:[3,3,57],t:7,e:"ui-section",a:{label:[{t:2,r:"ore",p:[3,22,76]}]},f:[{p:[4,4,90],t:7,e:"span",f:[{t:2,r:"value",p:[4,10,96]}]}]}],n:52,r:"data.ores",p:[2,2,34]}]}," ",{p:[8,1,158],t:7,e:"ui-display",a:{title:"Points"},f:[{p:[9,2,188],t:7,e:"ui-section",a:{label:"ID"},f:[{p:[10,3,215],t:7,e:"ui-button",a:{action:"handle_id"},f:[{t:2,x:{r:["data.id","data.id_name"],s:'_0?_1:"-------------"'},p:[10,33,245]}]}]}," ",{t:4,f:[{p:[13,3,339],t:7,e:"ui-section",a:{label:"Points collected"},f:[{p:[14,4,381],t:7,e:"span",f:[{t:2,r:"data.points",p:[14,10,387]}]}]}," ",{p:[16,3,430],t:7,e:"ui-section",a:{label:"Goal"},f:[{p:[17,4,460],t:7,e:"span",f:[{t:2,r:"data.goal",p:[17,10,466]}]}]}," ",{p:[19,3,507],t:7,e:"ui-section",a:{label:"Unclaimed points"},f:[{p:[20,4,549],t:7,e:"span",f:[{t:2,r:"data.unclaimed_points",p:[20,10,555]}]}," ",{p:[21,4,592],t:7,e:"ui-button",a:{action:"claim_points",state:[{t:2,x:{r:["data.unclaimed_points"],s:'_0?null:"disabled"'},p:[21,43,631]}]},f:["Claim points"]}]}],n:50,r:"data.id",p:[12,2,320]}]}," ",{p:[25,1,745],t:7,e:"ui-display",f:[{p:[26,2,760],t:7,e:"center",f:[{p:[27,3,772],t:7,e:"ui-button",a:{action:"move_shuttle",state:[{t:2,x:{r:["data.can_go_home"],s:'_0?null:"disabled"'},p:[27,42,811]}]},f:["Move shuttle"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],406:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Known Languages"},f:[{t:4,f:[{p:[3,5,70],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[3,23,88]}]},f:[{p:[4,7,105],t:7,e:"span",f:[{t:2,r:"desc",p:[4,13,111]}]}," ",{p:[5,7,134],t:7,e:"span",f:["Key: ,",{t:2,r:"key",p:[5,19,146]}]}," ",{t:4,f:[{p:[7,9,192],t:7,e:"span",f:["(gained from mob)"]}],n:50,r:"shadow",p:[6,7,168]}," ",{p:[9,7,245],t:7,e:"span",f:[{t:2,x:{r:["can_speak"],s:'_0?"Can Speak":"Cannot Speak"'},p:[9,13,251]}]}," ",{t:4,f:[{p:[11,9,342],t:7,e:"ui-button",a:{action:"select_default",params:['{"language_name":"',{t:2,r:"name",p:[13,37,425]},'"}'],style:[{t:2,x:{r:["is_default","can_speak"],s:'_0?"selected":_1?null:"disabled"'},p:[14,18,455]}]},f:[{t:2,x:{r:["is_default"],s:'_0?"Default Language":"Select as Default"'},p:[15,10,526]}]}],n:50,r:"data.is_living",p:[10,7,310]}," ",{t:4,f:[{t:4,f:[{p:[20,11,685],t:7,e:"ui-button",a:{action:"grant_language",params:['{"language_name":"',{t:2,r:"name",p:[20,72,746]},'"}']},f:["Grant"]}],n:50,r:"shadow",p:[19,9,659]},{t:4,n:51,f:[{p:[22,11,805],t:7,e:"ui-button",a:{action:"remove_language",params:['{"language_name":"',{t:2,r:"name",p:[22,73,867]},'"}']},f:["Remove"]}],r:"shadow"}],n:50,r:"data.admin_mode",p:[18,7,626]}]}],n:52,r:"data.languages",p:[2,3,40]}]}," ",{t:4,f:[{t:4,f:[{p:[30,5,1033],t:7,e:"ui-button",a:{action:"toggle_omnitongue",style:[{t:2,x:{r:["data.omnitongue"],s:'_0?"selected":null'},p:[32,14,1092]}]},f:["Omnitongue ",{t:2,x:{r:["data.omnitongue"],s:'_0?"Enabled":"Disabled"'},p:[33,19,1152]}]}],n:50,r:"data.is_living",p:[29,3,1005]}," ",{p:[36,3,1231],t:7,e:"ui-display",a:{title:"Unknown Languages"},f:[{t:4,f:[{p:[38,7,1315],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[38,25,1333]}]},f:[{p:[39,9,1352],t:7,e:"span",f:[{t:2,r:"desc",p:[39,15,1358]}]}," ",{p:[40,9,1383],t:7,e:"span",f:["Key: ,",{t:2,r:"key",p:[40,21,1395]}]}," ",{p:[41,9,1419],t:7,e:"ui-button",a:{action:"grant_language",params:['{"language_name":"',{t:2,r:"name",p:[43,37,1502]},'"}']},f:["Grant"]}]}],n:52,r:"data.unknown_languages",p:[37,5,1275]}]}],n:50,r:"data.admin_mode",p:[28,1,978]}]},e.exports=a.extend(r.exports)},{341:341}],407:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Controls"},f:[{t:4,f:[{t:4,f:[{p:[4,4,84],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[5,5,118],t:7,e:"span",f:["Launchpad closed."]}]}],n:50,r:"data.pad_closed",p:[3,3,56]},{t:4,n:51,f:[{p:[8,4,183],t:7,e:"ui-section",a:{label:"Launchpad"},f:[{p:[9,4,218],t:7,e:"span",f:[{p:[9,10,224],t:7,e:"b",f:[{t:2,r:"data.pad_name",p:[9,13,227]}]}]},{p:[9,41,255],t:7,e:"br"}," ",{p:[10,4,264],t:7,e:"ui-button",a:{icon:"pencil",action:"rename"},f:["Rename"]}," ",{p:[11,4,328],t:7,e:"ui-button",a:{icon:"remove",style:"danger",action:"remove"},f:["Remove"]}]}," ",{p:[14,4,427],t:7,e:"ui-section",a:{label:"Set Target"},f:[{p:[15,4,463],t:7,e:"table",f:[{p:[16,4,475],t:7,e:"tr",f:[{p:[17,5,485],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[17,38,518],t:7,e:"ui-button",a:{action:"up-left"},f:["↖"]}]}," ",{p:[18,5,570],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[18,57,622],t:7,e:"ui-button",a:{action:"up"},f:["↑"]}]}," ",{p:[19,5,669],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[19,56,720],t:7,e:"ui-button",a:{action:"up-right"},f:["↗"]}]}]}," ",{p:[21,4,782],t:7,e:"tr",f:[{p:[22,5,792],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[22,38,825],t:7,e:"ui-button",a:{action:"left",style:"width:35px!important"},f:["←"]}]}," ",{p:[23,5,903],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[23,57,955],t:7,e:"ui-button",a:{action:"reset"},f:["R"]}]}," ",{p:[24,5,1005],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[24,56,1056],t:7,e:"ui-button",a:{action:"right"},f:["→"]}]}]}," ",{p:[26,4,1115],t:7,e:"tr",f:[{p:[27,5,1125],t:7,e:"td",a:{style:"width:25px!important"},f:[{p:[27,38,1158],t:7,e:"ui-button",a:{action:"down-left"},f:["↙"]}]}," ",{p:[28,5,1212],t:7,e:"td",a:{style:"width:25px!important; text-align:center"},f:[{p:[28,57,1264],t:7,e:"ui-button",a:{action:"down"},f:["↓"]}]}," ",{p:[29,5,1313],t:7,e:"td",a:{style:"width:25px!important; text-align:right"},f:[{p:[29,56,1364],t:7,e:"ui-button",a:{action:"down-right"},f:["↘"]}]}]}]}]}," ",{p:[33,4,1459],t:7,e:"ui-section",a:{label:"Current Target"},f:[{p:[34,5,1500],t:7,e:"span",f:[{t:2,r:"data.abs_y",p:[34,11,1506]}," ",{t:2,r:"data.north_south",p:[34,26,1521]}]},{p:[34,53,1548],t:7,e:"br"}," ",{p:[35,5,1558],t:7,e:"span",f:[{t:2,r:"data.abs_x",p:[35,11,1564]}," ",{t:2,r:"data.east_west",p:[35,26,1579]}]}]}," ",{p:[37,4,1627],t:7,e:"ui-section",a:{label:"Activate"},f:[{p:[38,5,1662],t:7,e:"ui-button",a:{action:"launch",tooltip:"Teleport everything on the pad to the target.", "tooltip-side":"down"},f:["Launch"]}," ",{p:[39,5,1789],t:7,e:"ui-button",a:{action:"pull",tooltip:"Teleport everything from the target to the pad.","tooltip-side":"down"},f:["Pull"]}]}],r:"data.pad_closed"}],n:50,r:"data.has_pad",p:[2,2,32]},{t:4,n:51,f:[{p:[45,3,1956],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[46,4,1989],t:7,e:"span",f:["No launchpad found. Link the remote to a launchpad."]}]}],r:"data.has_pad"}]}]},e.exports=a.extend(r.exports)},{341:341}],408:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{mechChargeState:function(t){var e=this.get("data.recharge_port.mech.cell.maxcharge");return t>=e/1.5?"good":t>=e/3?"average":"bad"},mechHealthState:function(t){var e=this.get("data.recharge_port.mech.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[20,1,545],t:7,e:"ui-display",a:{title:"Mech Status"},f:[{t:4,f:[{t:4,f:[{p:[23,4,646],t:7,e:"ui-section",a:{label:"Integrity"},f:[{p:[24,6,683],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.recharge_port.mech.maxhealth",p:[24,27,704]}],value:[{t:2,r:"adata.recharge_port.mech.health",p:[24,74,751]}],state:[{t:2,x:{r:["mechHealthState","adata.recharge_port.mech.health"],s:"_0(_1)"},p:[24,117,794]}]},f:[{t:2,x:{r:["adata.recharge_port.mech.health"],s:"Math.round(_0)"},p:[24,171,848]},"/",{t:2,r:"adata.recharge_port.mech.maxhealth",p:[24,219,896]}]}]}," ",{t:4,f:[{t:4,f:[{p:[28,5,1061],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[28,31,1087],t:7,e:"span",a:{"class":"bad"},f:["Cell Critical Failure"]}]}],n:50,r:"data.recharge_port.mech.cell.critfail",p:[27,3,1010]},{t:4,n:51,f:[{p:[30,11,1170],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[31,13,1210],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.recharge_port.mech.cell.maxcharge",p:[31,34,1231]}],value:[{t:2,r:"adata.recharge_port.mech.cell.charge",p:[31,86,1283]}],state:[{t:2,x:{r:["mechChargeState","adata.recharge_port.mech.cell.charge"],s:"_0(_1)"},p:[31,134,1331]}]},f:[{t:2,x:{r:["adata.recharge_port.mech.cell.charge"],s:"Math.round(_0)"},p:[31,193,1390]},"/",{t:2,x:{r:["adata.recharge_port.mech.cell.maxcharge"],s:"Math.round(_0)"},p:[31,246,1443]}]}]}],r:"data.recharge_port.mech.cell.critfail"}],n:50,r:"data.recharge_port.mech.cell",p:[26,4,970]},{t:4,n:51,f:[{p:[35,3,1558],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[35,29,1584],t:7,e:"span",a:{"class":"bad"},f:["Cell Missing"]}]}],r:"data.recharge_port.mech.cell"}],n:50,r:"data.recharge_port.mech",p:[22,2,610]},{t:4,n:51,f:[{p:[38,4,1662],t:7,e:"ui-section",f:["Mech Not Found"]}],r:"data.recharge_port.mech"}],n:50,r:"data.recharge_port",p:[21,3,581]},{t:4,n:51,f:[{p:[41,5,1729],t:7,e:"ui-section",f:["Recharging Port Not Found"]}," ",{p:[42,2,1782],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}],r:"data.recharge_port"}]}]},e.exports=a.extend(r.exports)},{341:341}],409:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{t:4,f:[{p:[3,5,45],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[4,7,88],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[4,24,105]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[4,75,156]}]}]}],n:50,r:"data.siliconUser",p:[2,3,15]},{t:4,n:51,f:[{p:[7,5,247],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[7,31,273]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[10,1,358],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[11,3,389],t:7,e:"ui-section",a:{label:"Power"},f:[{t:4,f:[{p:[13,7,470],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[13,24,487]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[13,68,531]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[13,116,579]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[12,5,421]},{t:4,n:51,f:[{p:[15,7,639],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.on"],s:'_0?"good":"bad"'},p:[15,20,652]}],state:[{t:2,x:{r:["data.cell"],s:'_0?null:"disabled"'},p:[15,57,689]}]},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[15,92,724]}]}],x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"}}]}," ",{p:[18,3,791],t:7,e:"ui-section",a:{label:"Cell"},f:[{p:[19,5,822],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.cell"],s:'_0?null:"bad"'},p:[19,18,835]}]},f:[{t:2,x:{r:["data.cell","data.cellPercent"],s:'_0?_1+"%":"No Cell"'},p:[19,48,865]}]}]}," ",{p:[21,3,943],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[22,5,974],t:7,e:"span",a:{"class":[{t:2,r:"data.modeStatus",p:[22,18,987]}]},f:[{t:2,r:"data.mode",p:[22,39,1008]}]}]}," ",{p:[24,3,1049],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[25,5,1080],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.load"],s:'_0?"good":"average"'},p:[25,18,1093]}]},f:[{t:2,x:{r:["data.load"],s:'_0?_0:"None"'},p:[25,54,1129]}]}]}," ",{p:[27,3,1191],t:7,e:"ui-section",a:{label:"Destination"},f:[{p:[28,5,1229],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.destination"],s:'_0?"good":"average"'},p:[28,18,1242]}]},f:[{t:2,x:{r:["data.destination"],s:'_0?_0:"None"'},p:[28,60,1284]}]}]}]}," ",{t:4,f:[{p:{button:[{t:4,f:[{p:[35,9,1513],t:7,e:"ui-button",a:{icon:"eject",action:"unload"},f:["Unload"]}],n:50,r:"data.load",p:[34,7,1486]}," ",{t:4,f:[{p:[38,9,1623],t:7,e:"ui-button",a:{icon:"eject",action:"ejectpai"},f:["Eject PAI"]}],n:50,r:"data.haspai",p:[37,7,1594]}," ",{p:[40,7,1709],t:7,e:"ui-button",a:{icon:"pencil",action:"setid"},f:["Set ID"]}]},t:7,e:"ui-display",a:{title:"Controls",button:0},f:[" ",{p:[42,5,1791],t:7,e:"ui-section",a:{label:"Destination"},f:[{p:[43,7,1831],t:7,e:"ui-button",a:{icon:"pencil",action:"destination"},f:["Set Destination"]}," ",{p:[44,7,1912],t:7,e:"ui-button",a:{icon:"stop",action:"stop"},f:["Stop"]}," ",{p:[45,7,1973],t:7,e:"ui-button",a:{icon:"play",action:"go"},f:["Go"]}]}," ",{p:[47,5,2047],t:7,e:"ui-section",a:{label:"Home"},f:[{p:[48,7,2080],t:7,e:"ui-button",a:{icon:"home",action:"home"},f:["Go Home"]}," ",{p:[49,7,2144],t:7,e:"ui-button",a:{icon:"pencil",action:"sethome"},f:["Set Home"]}]}," ",{p:[51,5,2231],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[52,7,2268],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoReturn"],s:'_0?"check-square-o":"square-o"'},p:[52,24,2285]}],style:[{t:2,x:{r:["data.autoReturn"],s:'_0?"selected":null'},p:[52,84,2345]}],action:"autoret"},f:["Auto-Return Home"]}," ",{p:[54,7,2449],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoPickup"],s:'_0?"check-square-o":"square-o"'},p:[54,24,2466]}],style:[{t:2,x:{r:["data.autoPickup"],s:'_0?"selected":null'},p:[54,84,2526]}],action:"autopick"},f:["Auto-Pickup Crate"]}," ",{p:[56,7,2632],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.reportDelivery"],s:'_0?"check-square-o":"square-o"'},p:[56,24,2649]}],style:[{t:2,x:{r:["data.reportDelivery"],s:'_0?"selected":null'},p:[56,88,2713]}],action:"report"},f:["Report Deliveries"]}]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[31,1,1373]}]},e.exports=a.extend(r.exports)},{341:341}],410:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Nanite Chamber Console"},f:[{p:[2,1,45],t:7,e:"ui-display",a:{title:"Program Disk"},f:[{t:4,f:[{p:[4,2,104],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject Disk"]},{p:[4,63,165],t:7,e:"br"}," ",{t:4,f:[{p:[6,3,200],t:7,e:"ui-section",a:{label:"Program Name"},f:[{t:2,r:"data.disk.name",p:[6,36,233]}]}," ",{p:[7,3,268],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.disk.desc",p:[7,35,300]}]}," ",{p:[8,3,335],t:7,e:"ui-section",a:{label:"Activation Status"},f:[{t:2,x:{r:["data.disk.activated"],s:'_0?"Active":"Inactive"'},p:[8,41,373]}]}," ",{t:4,f:[{p:[10,4,477],t:7,e:"ui-section",a:{label:"Activation Delay"},f:[{t:2,r:"data.disk.activation_delay",p:[10,41,514]}]}],n:50,r:"data.disk.activation_delay",p:[9,3,438]}," ",{t:4,f:[{p:[13,4,600],t:7,e:"ui-section",a:{label:"Timer"},f:[{t:2,r:"data.disk.timer",p:[13,30,626]}]}," ",{p:[14,4,663],t:7,e:"ui-section",a:{label:"Timer Type "},f:[{t:2,r:"data.disk.timer_type",p:[14,36,695]}]}],n:50,r:"data.disk.timer",p:[12,3,572]}," ",{t:4,f:[{p:[17,4,785],t:7,e:"ui-section",a:{label:"Activation Code"},f:[{t:2,r:"data.disk.activation_code",p:[17,40,821]}]}],n:50,r:"data.disk.activation_code",p:[16,3,747]}," ",{t:4,f:[{p:[20,4,918],t:7,e:"ui-section",a:{label:"Deactivation Code"},f:[{t:2,r:"data.disk.deactivation_code",p:[20,42,956]}]}],n:50,r:"data.disk.deactivation_code",p:[19,3,878]}," ",{t:4,f:[{p:[23,4,1047],t:7,e:"ui-section",a:{label:"Kill Code"},f:[{t:2,r:"data.disk.kill_code",p:[23,34,1077]}]}],n:50,r:"data.disk.kill_code",p:[22,3,1015]}," ",{t:4,f:[{p:[26,4,1163],t:7,e:"ui-section",a:{label:"Trigger Code"},f:[{t:2,r:"data.disk.trigger_code",p:[26,37,1196]}]}],n:50,r:"data.disk.trigger_code",p:[25,3,1128]}," ",{t:4,f:[{t:4,f:[{p:[30,6,1332],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[30,25,1351]}]},f:[{t:2,r:"value",p:[30,35,1361]}]}],n:52,r:"data.disk.extra_settings",p:[29,4,1291]}],n:50,r:"data.disk.has_extra_settings",p:[28,3,1250]}],n:50,r:"data.has_program",p:[5,2,172]},{t:4,n:51,f:[{p:[34,3,1423],t:7,e:"ui-notice",f:["No program detected."]}],r:"data.has_program"}],n:50,r:"data.has_disk",p:[3,1,80]},{t:4,n:51,f:[{p:[37,2,1489],t:7,e:"ui-notice",f:["Insert disk."]}],r:"data.has_disk"}]}," ",{p:[40,1,1550],t:7,e:"br"}," ",{t:4,f:[{p:[42,2,1582],t:7,e:"ui-notice",f:[{t:2,r:"data.status_msg",p:[42,13,1593]}]}],n:50,r:"data.status_msg",p:[41,1,1556]},{t:4,n:51,f:[{p:[44,2,1637],t:7,e:"ui-display",a:{title:"Chamber"},f:[{p:[45,2,1668],t:7,e:"ui-section",f:[{p:[45,14,1680],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock-open":"lock"'},p:[45,30,1696]}],action:"toggle_lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Unlock":"Lock"'},p:[45,90,1756]}," Chamber"]},{p:[45,146,1812],t:7,e:"br"}]}," ",{p:[46,2,1832],t:7,e:"ui-section",f:[{p:[46,14,1844],t:7,e:"b",f:["Occupant:"]}," ",{t:2,r:"data.occupant_name",p:[46,31,1861]}]}," ",{t:4,f:[{p:[48,4,1929],t:7,e:"ui-section",f:[{p:[48,16,1941],t:7,e:"ui-notice",f:["No nanites detected."]}]}," ",{p:[49,4,2002],t:7,e:"ui-section",f:[{p:[49,16,2014],t:7,e:"ui-button",a:{icon:"syringe",action:"nanite_injection"},f:["Implant Nanites"]}]}],n:50,x:{r:["data.has_nanites"],s:"!_0"},p:[47,2,1899]},{t:4,n:51,f:[{p:[51,3,2121],t:7,e:"ui-display",a:{title:"Nanites"},f:[{t:4,f:[{p:[53,5,2181],t:7,e:"ui-button",a:{icon:"download",action:"add_program"},f:["Install Program From Disk"]},{p:[53,90,2266],t:7,e:"br"}," ",{p:[54,5,2276],t:7,e:"br"}],n:50,r:"data.has_disk",p:[52,4,2154]}," ",{p:[56,4,2297],t:7,e:"ui-section",f:[{p:[57,5,2315],t:7,e:"ui-section",a:{label:"Nanite Volume"},f:[{t:2,r:"data.nanite_volume",p:[57,39,2349]}]}," ",{p:[58,5,2390],t:7,e:"ui-section",a:{label:"Growth Rate"},f:[{t:2,r:"data.regen_rate",p:[58,37,2422]}]}," ",{p:[59,5,2460],t:7,e:"ui-section",a:{label:"Safety Threshold"},f:[{t:2,r:"data.safety_threshold",p:[59,42,2497]}," ",{p:[59,68,2523],t:7,e:"ui-button",a:{icon:"pencil",action:"set_safety"},f:["Set"]}]}," ",{p:[60,5,2603],t:7,e:"ui-section",a:{label:"Cloud ID"},f:[{t:2,x:{r:["data.cloud_id"],s:'_0?_0:"No Cloud"'},p:[60,34,2632]}," ",{p:[60,82,2680],t:7,e:"ui-button",a:{icon:"pencil",action:"set_cloud"},f:["Set"]}]}]}," ",{p:[62,4,2776],t:7,e:"ui-display",a:{title:"Programs"},f:[{t:4,f:[{p:[64,6,2845],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[64,25,2864]}],button:0},f:[{p:[65,6,2888],t:7,e:"ui-button",a:{icon:"minus",action:"remove_program",params:['{"program_id": "',{t:2,r:"id",p:[65,78,2960]},'"}']},f:["Uninstall"]}," ",{p:[66,6,2998],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"desc",p:[66,38,3030]}]}," ",{t:4,f:[{p:[68,7,3094],t:7,e:"ui-section",a:{label:"Activation Status"},f:[{t:2,x:{r:["activated"],s:'_0?"Active":"Inactive"'},p:[68,45,3132]}]}," ",{p:[69,7,3191],t:7,e:"ui-section",a:{label:"Nanites Consumed"},f:[{t:2,r:"use_rate",p:[69,44,3228]},"/s"]}," ",{t:4,f:[{p:[71,8,3291],t:7,e:"ui-section",a:{label:"Trigger Cost"},f:[{t:2,r:"trigger_cost",p:[71,41,3324]}]}," ",{p:[72,8,3362],t:7,e:"ui-section",a:{label:"Trigger Cooldown"},f:[{t:2,r:"trigger_cooldown",p:[72,45,3399]}," seconds"]}],n:50,r:"can_trigger",p:[70,7,3263]}," ",{t:4,f:[{t:4,f:[{p:[76,9,3534],t:7,e:"ui-section",a:{label:"Activation Delay"},f:[{t:2,r:"activation_delay",p:[76,46,3571]}]}],n:50,r:"activation_delay",p:[75,8,3500]}," ",{t:4,f:[{p:[79,9,3652],t:7,e:"ui-section",a:{label:"Timer"},f:[{t:2,r:"timer",p:[79,35,3678]}]}," ",{p:[80,9,3710],t:7,e:"ui-section",a:{label:"Timer Type"},f:[{t:2,r:"timer_type",p:[80,40,3741]}]}],n:50,r:"timer",p:[78,8,3629]}," ",{t:4,f:[{t:4,f:[{p:[84,11,3865],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[84,30,3884]}]},f:[{t:2,r:"value",p:[84,40,3894]}]}],n:52,r:"extra_settings",p:[83,9,3829]}],n:50,r:"has_extra_settings",p:[82,8,3793]}," ",{t:4,f:[{t:4,f:[{p:[89,10,4032],t:7,e:"ui-section",a:{label:"Activation Code"},f:[{t:2,r:"activation_code",p:[89,46,4068]}]}],n:50,r:"activation_code",p:[88,9,3998]}," ",{t:4,f:[{p:[92,10,4163],t:7,e:"ui-section",a:{label:"Deactivation Code"},f:[{t:2,r:"deactivation_code",p:[92,48,4201]}]}],n:50,r:"deactivation_code",p:[91,9,4127]}," ",{t:4,f:[{p:[95,10,4290],t:7,e:"ui-section",a:{label:"Kill Code"},f:[{t:2,r:"kill_code",p:[95,40,4320]}]}],n:50,r:"kill_code",p:[94,9,4262]}," ",{t:4,f:[{p:[98,10,4404],t:7,e:"ui-section",a:{label:"Trigger Code"},f:[{t:2,r:"trigger_code",p:[98,43,4437]}]}],n:50,r:"trigger_code",p:[97,9,4373]}],n:50,x:{r:["data.scan_level"],s:"_0>=4"},p:[87,8,3960]}],n:50,x:{r:["data.scan_level"],s:"_0>=3"},p:[74,7,3463]}],n:50,x:{r:["data.scan_level"],s:"_0>=2"},p:[67,6,3058]}]}],n:52,r:"data.mob_programs",p:[63,5,2811]}]}]}],x:{r:["data.has_nanites"],s:"!_0"}}]}],r:"data.status_msg"}]}]},e.exports=a.extend(r.exports)},{341:341}],411:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Nanite Cloud Console"},f:[{p:[2,1,43],t:7,e:"ui-display",a:{title:"Program Disk"},f:[{t:4,f:[{p:[4,3,104],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject Disk"]},{p:[4,64,165],t:7,e:"br"}," ",{t:4,f:[{p:[6,4,202],t:7,e:"ui-section",f:[{p:[7,5,220],t:7,e:"ui-section",a:{label:"Program Name"},f:[{t:2,r:"data.disk.name",p:[7,38,253]}]}," ",{p:[8,5,290],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.disk.desc",p:[8,37,322]}]}," ",{p:[9,5,359],t:7,e:"ui-section",a:{label:"Activation Status"},f:[{t:2,x:{r:["data.disk.activated"],s:'_0?"Active":"Inactive"'},p:[9,43,397]}]}," ",{t:4,f:[{p:[11,6,505],t:7,e:"ui-section",a:{label:"Activation Delay"},f:[{t:2,r:"data.disk.activation_delay",p:[11,43,542]}]}],n:50,r:"data.disk.activation_delay",p:[10,5,464]}," ",{t:4,f:[{p:[14,6,634],t:7,e:"ui-section",a:{label:"Timer"},f:[{t:2,r:"data.disk.timer",p:[14,32,660]}]}," ",{p:[15,6,699],t:7,e:"ui-section",a:{label:"Timer Type "},f:[{t:2,r:"data.disk.timer_type",p:[15,38,731]}]}],n:50,r:"data.disk.timer",p:[13,5,604]}," ",{t:4,f:[{p:[18,6,827],t:7,e:"ui-section",a:{label:"Activation Code"},f:[{t:2,r:"data.disk.activation_code",p:[18,42,863]}]}],n:50,r:"data.disk.activation_code",p:[17,5,787]}," ",{t:4,f:[{p:[21,6,966],t:7,e:"ui-section",a:{label:"Deactivation Code"},f:[{t:2,r:"data.disk.deactivation_code",p:[21,44,1004]}]}],n:50,r:"data.disk.deactivation_code",p:[20,5,924]}," ",{t:4,f:[{p:[24,6,1101],t:7,e:"ui-section",a:{label:"Kill Code"},f:[{t:2,r:"data.disk.kill_code",p:[24,36,1131]}]}],n:50,r:"data.disk.kill_code",p:[23,5,1067]}," ",{t:4,f:[{p:[27,6,1223],t:7,e:"ui-section",a:{label:"Trigger Code"},f:[{t:2,r:"data.disk.trigger_code",p:[27,39,1256]}]}],n:50,r:"data.disk.trigger_code",p:[26,5,1186]}," ",{t:4,f:[{t:4,f:[{p:[31,8,1400],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[31,27,1419]}]},f:[{t:2,r:"value",p:[31,37,1429]}]}],n:52,r:"data.disk.extra_settings",p:[30,6,1357]}],n:50,r:"data.disk.has_extra_settings",p:[29,5,1314]}]}],n:50,r:"data.has_program",p:[5,3,173]},{t:4,n:51,f:[{p:[36,4,1515],t:7,e:"ui-notice",f:["No program detected."]}],r:"data.has_program"}],n:50,r:"data.has_disk",p:[3,2,79]},{t:4,n:51,f:[{p:[39,3,1584],t:7,e:"ui-notice",f:["Insert disk."]}],r:"data.has_disk"}]}," ",{p:[42,1,1646],t:7,e:"ui-display",a:{title:"Cloud Storage"},f:[{t:4,f:[{p:[44,3,1713],t:7,e:"ui-button",a:{icon:"plus-circle",action:"create_backup"},f:["Create New Backup"]}," ",{p:[45,3,1799],t:7,e:"ui-display",a:{title:"Active Backups"},f:[{t:4,f:[{p:[47,5,1873],t:7,e:"ui-button",a:{action:"set_view",params:['{"view": "',{t:2,r:"cloud_id",p:[47,52,1920]},'"}']},f:["Backup #",{t:2,r:"cloud_id",p:[47,76,1944]}]}],n:52,r:"data.cloud_backups",p:[46,4,1839]}]}],n:50,x:{r:["data.current_view"],s:"!_0"},p:[43,2,1683]},{t:4,n:51,f:[{p:[51,3,2014],t:7,e:"ui-button",a:{icon:"undo",action:"set_view",params:'{"view": "0"}'},f:["Return"]}," ",{t:4,f:[{p:[53,4,2131],t:7,e:"ui-notice",f:["ERROR: Backup not found."]}],n:50,x:{r:["data.cloud_backup"],s:"!_0"},p:[52,3,2100]},{t:4,n:51,f:[{p:[55,4,2195],t:7,e:"ui-display",a:{title:["Backup #",{t:2,r:"data.current_view",p:[55,31,2222]}]},f:[{t:4,f:[{p:[57,6,2282],t:7,e:"ui-button",a:{icon:"upload",action:"upload_program",style:"selected"},f:["Upload Program From Disk"]},{p:[57,108,2384],t:7,e:"br"}],n:50,r:"data.has_program",p:[56,5,2251]}," ",{t:4,f:[{p:[60,6,2443],t:7,e:"hr"}," ",{p:[61,6,2454],t:7,e:"ui-section",f:[{p:[62,7,2474],t:7,e:"h3",f:[{t:2,r:"name",p:[62,11,2478]}]}," ",{p:[63,7,2499],t:7,e:"div",a:{style:"float:right"},f:[{p:[64,8,2533],t:7,e:"ui-button",a:{icon:"minus-circle",action:"remove_program",style:"danger",params:['{"program_id": "',{t:2,r:"id",p:[64,102,2627]},'"}']},f:["Uninstall"]}]}]}," ",{p:[67,6,2699],t:7,e:"ui-section",f:[{p:[68,7,2719],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"desc",p:[68,39,2751]}]}," ",{p:[69,7,2780],t:7,e:"ui-section",a:{label:"Activation Status"},f:[{t:2,x:{r:["activated"],s:'_0?"Active":"Inactive"'},p:[69,45,2818]}]}," ",{p:[70,7,2877],t:7,e:"ui-section",a:{label:"Nanites Consumed"},f:[{t:2,r:"use_rate",p:[70,44,2914]},"/s"]}," ",{t:4,f:[{p:[72,8,2977],t:7,e:"ui-section",a:{label:"Trigger Cost"},f:[{t:2,r:"trigger_cost",p:[72,41,3010]},"/s"]}," ",{p:[73,8,3050],t:7,e:"ui-section",a:{label:"Trigger Cooldown"},f:[{t:2,r:"trigger_cooldown",p:[73,45,3087]},"/s"]}],n:50,r:"can_trigger",p:[71,7,2949]}," ",{t:4,f:[{p:[76,8,3178],t:7,e:"ui-section",a:{label:"Activation Delay"},f:[{t:2,r:"activation_delay",p:[76,45,3215]}]}],n:50,r:"activation_delay",p:[75,7,3145]}," ",{t:4,f:[{p:[79,8,3293],t:7,e:"ui-section",a:{label:"Timer"},f:[{t:2,r:"timer",p:[79,34,3319]}]}," ",{p:[80,8,3350],t:7,e:"ui-section",a:{label:"Timer Type "},f:[{t:2,r:"timer_type",p:[80,40,3382]}]}],n:50,r:"timer",p:[78,7,3271]}," ",{t:4,f:[{p:[83,8,3464],t:7,e:"ui-section",a:{label:"Activation Code"},f:[{t:2,r:"activation_code",p:[83,44,3500]}]}],n:50,r:"activation_code",p:[82,7,3432]}," ",{t:4,f:[{p:[86,8,3589],t:7,e:"ui-section",a:{label:"Deactivation Code"},f:[{t:2,r:"deactivation_code",p:[86,46,3627]}]}],n:50,r:"deactivation_code",p:[85,7,3555]}," ",{t:4,f:[{p:[89,8,3710],t:7,e:"ui-section",a:{label:"Kill Code"},f:[{t:2,r:"kill_code",p:[89,38,3740]}]}],n:50,r:"kill_code",p:[88,7,3684]}," ",{t:4,f:[{p:[92,8,3818],t:7,e:"ui-section",a:{label:"Trigger Code"},f:[{t:2,r:"trigger_code",p:[92,41,3851]}]}],n:50,r:"trigger_code",p:[91,7,3789]}," ",{t:4,f:[{t:4,f:[{p:[96,10,3973],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[96,29,3992]}]},f:[{t:2,r:"value",p:[96,39,4002]}]}],n:52,r:"extra_settings",p:[95,8,3938]}],n:50,r:"has_extra_settings",p:[94,7,3903]}]}],n:52,r:"data.cloud_programs",p:[59,5,2407]}]}],x:{r:["data.cloud_backup"],s:"!_0"}}],x:{r:["data.current_view"],s:"!_0"}}]}]}]},e.exports=a.extend(r.exports)},{341:341}],412:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Nanite Program Hub"},f:[{t:4,f:[{p:[3,2,65],t:7,e:"ui-display",a:{title:"Program Disk"},f:[{p:[4,3,102],t:7,e:"ui-section",f:[{p:[5,4,119],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject Disk"]}," ",{p:[6,4,185],t:7,e:"ui-button",a:{icon:"minus-circle",action:"clear"},f:["Delete Program"]}]}," ",{t:4,f:[{p:[9,4,307],t:7,e:"ui-section",a:{label:"Program Name"},f:[{t:2,r:"data.disk.name",p:[9,37,340]}]}," ",{p:[10,4,376],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.disk.desc",p:[10,36,408]}]}],n:50,r:"data.has_program",p:[8,3,278]},{t:4,n:51,f:[{p:[12,4,456],t:7,e:"ui-notice",f:["No program installed."]}],r:"data.has_program"}]}],n:50,r:"data.has_disk",p:[2,1,41]},{t:4,n:51,f:[{p:[16,2,540],t:7,e:"ui-notice",f:["Insert disk."]}],r:"data.has_disk"},{p:[18,1,586],t:7,e:"br"}," ",{p:[19,1,592],t:7,e:"ui-display",a:{title:"Programs"},f:[{p:[20,2,624],t:7,e:"ui-section",f:[{p:[21,3,640],t:7,e:"ui-button",a:{icon:"undo",action:"set_category",params:'{"category": "Main"}'},f:["Return"]}," ",{p:[22,3,737],t:7,e:"ui-button",a:{icon:"align-justify ",action:"toggle_details"},f:[{t:2,x:{r:["data.detail_view"],s:'_0?"Compact View":"Detailed View"'},p:[22,60,794]}]}]}," ",{t:4,f:[{p:[25,3,916],t:7,e:"ui-display",f:[{t:4,f:[{p:[27,5,964],t:7,e:"ui-section",f:[{p:[27,17,976],t:7,e:"ui-button",a:{action:"set_category",params:['{"category": "',{t:2,r:"name",p:[27,72,1031]},'"}']},f:[{t:2,r:"name",p:[27,84,1043]}]}]}],n:52,r:"data.categories",p:[26,4,933]}]}],n:50,x:{r:["data.category"],s:'_0=="Main"'},p:[24,2,881]},{t:4,n:51,f:[{p:[31,3,1122],t:7,e:"ui-display",a:{title:[{t:2,r:"data.category",p:[31,22,1141]}]},f:[{t:4,f:[{t:4,f:[{p:[34,6,1229],t:7,e:"ui-display",f:[{p:[35,7,1249],t:7,e:"ui-section",f:[{p:[35,19,1261],t:7,e:"b",f:[{t:2,r:"name",p:[35,22,1264]}]}]}," ",{p:[36,7,1297],t:7,e:"ui-section",f:[{t:2,r:"desc",p:[36,19,1309]}]}," ",{p:[37,7,1338],t:7,e:"ui-section",f:[{p:[38,8,1359],t:7,e:"ui-button",a:{icon:"download",action:"download",params:['{"program_id": "',{t:2,r:"id",p:[38,77,1428]},'"}'],state:[{t:2,x:{r:["data.has_disk"],s:'_0?null:"disabled"'},p:[38,94,1445]}]},f:["Download"]}]}]}],n:50,r:"data.detail_view",p:[33,5,1198]},{t:4,n:51,f:[{p:[44,6,1585],t:7,e:"ui-section",f:[{p:[44,18,1597],t:7,e:"ui-button",a:{action:"download",params:['{"program_id": "',{t:2,r:"id",p:[44,71,1650]},'"}']},f:[{t:2,r:"name",p:[44,81,1660]}]}]}],r:"data.detail_view"}],n:52,r:"data.program_list",p:[32,4,1165]}]}],x:{r:["data.category"],s:'_0=="Main"'}}]}]}]},e.exports=a.extend(r.exports)},{341:341}],413:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Nanite Programming"},f:[{t:4,f:[{p:[3,3,67],t:7,e:"ui-notice",f:["Insert a nanite program disk."]}],n:50,x:{r:["data.has_disk"],s:"!_0"},p:[2,1,41]},{t:4,n:51,f:[{p:[5,3,133],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject Disk"]}," ",{t:4,f:[{p:[7,5,229],t:7,e:"ui-notice",f:["No program detected."]}],n:50,x:{r:["data.has_program"],s:"!_0"},p:[6,3,198]},{t:4,n:51,f:[{p:[9,5,290],t:7,e:"ui-section",f:[{p:[10,7,310],t:7,e:"ui-display",a:{title:[{t:2,r:"data.name",p:[10,26,329]}]},f:[{t:2,r:"data.desc",p:[11,9,354]}]}]}," ",{p:[14,5,413],t:7,e:"ui-section",f:[{p:[15,7,433],t:7,e:"ui-section",a:{label:"Program Info"},f:["Nanites Consumed: ",{t:2,r:"data.use_rate",p:[16,26,493]},{p:[16,43,510],t:7,e:"br"}," ",{t:4,f:["Trigger Cost: ",{t:2,r:"data.trigger_cost",p:[18,25,574]},"u",{p:[18,47,596],t:7,e:"br"}],n:50,r:"data.can_trigger",p:[17,9,524]}]}," ",{p:[22,7,648],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[23,9,685],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.activated"],s:'_0?"toggle-on":"toggle-off"'},p:[24,17,713]}],action:"toggle_active"},f:[{t:2,x:{r:["data.activated"],s:'_0?"Active":"Inactive"'},p:[26,11,809]}]}]}," ",{p:[30,7,905],t:7,e:"ui-section",a:{label:"Settings"},f:[{p:[31,9,944],t:7,e:"ui-button",a:{icon:"pencil",action:"set_activation_delay"}}," Activation Delay: ",{t:2,r:"data.activation_delay",p:[31,95,1030]}," ",{p:[31,121,1056],t:7,e:"br"}," ",{p:[32,9,1070],t:7,e:"ui-button",a:{icon:"pencil",action:"set_timer"}}," Timer: ",{t:2,r:"data.timer",p:[32,73,1134]}," ",{p:[32,88,1149],t:7,e:"br"}," ",{p:[33,9,1163],t:7,e:"ui-button",a:{icon:"pencil",action:"set_timer_type"}}," Timer Type: ",{t:2,r:"data.timer_type",p:[33,83,1237]}," ",{p:[33,103,1257],t:7,e:"br"}]}," ",{p:[36,7,1292],t:7,e:"ui-section",a:{label:"Codes"},f:[{p:[37,9,1328],t:7,e:"ui-button",a:{icon:"pencil",action:"set_code",params:'{"target_code": "activation"}'}}," Activation Code: ",{t:2,r:"data.activation_code",p:[37,121,1440]}," ",{p:[37,146,1465],t:7,e:"br"}," ",{p:[38,9,1479],t:7,e:"ui-button",a:{icon:"pencil",action:"set_code",params:'{"target_code": "deactivation"}'}}," Deactivation Code: ",{t:2,r:"data.deactivation_code",p:[38,125,1595]}," ",{p:[38,152,1622],t:7,e:"br"}," ",{p:[39,9,1636],t:7,e:"ui-button",a:{icon:"pencil",action:"set_code",params:'{"target_code": "kill"}'}}," Kill Code: ",{t:2,r:"data.kill_code",p:[39,109,1736]}," ",{p:[39,128,1755],t:7,e:"br"}," ",{t:4,f:[{p:[41,11,1805],t:7,e:"ui-button",a:{icon:"pencil",action:"set_code",params:'{"target_code": "trigger"}'}}," Trigger Code: ",{t:2,r:"data.trigger_code",p:[41,117,1911]}," ",{p:[41,139,1933],t:7,e:"br"}],n:50,r:"data.can_trigger",p:[40,9,1769]}]}," ",{t:4,f:[{p:[46,9,2026],t:7,e:"ui-section",a:{label:"Special"},f:[{t:4,f:[{p:[48,13,2109],t:7,e:"ui-button",a:{icon:"pencil",action:"set_extra_setting",params:['{"target_setting": "',{t:2,r:"name",p:[48,93,2189]},'"}']}}," ",{t:2,r:"name",p:[48,118,2214]},": ",{t:2,r:"value",p:[48,128,2224]}," ",{p:[48,138,2234],t:7,e:"br"}],n:52,r:"data.extra_settings",p:[47,11,2066]}]}],n:50,r:"data.has_extra_settings",p:[45,7,1985]}]}],x:{r:["data.has_program"],s:"!_0"}}],x:{r:["data.has_disk"],s:"!_0"}}]}]},e.exports=a.extend(r.exports)},{341:341}],414:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Nanite Control"},f:[{t:4,f:[{p:[3,3,60],t:7,e:"ui-notice",f:["The interface is locked."]}],n:50,r:"data.locked",p:[2,1,37]},{t:4,n:51,f:[{p:[5,3,121],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock Interface"]}," ",{p:[6,3,188],t:7,e:"ui-button",a:{icon:"save",action:"save"},f:["Save Current Setting"]}," ",{p:[7,3,261],t:7,e:"ui-section",a:{label:"Signal Code"},f:[{p:[8,5,299],t:7,e:"span",f:[{t:2,r:"data.code",p:[8,11,305]}]}," ",{p:[9,4,330],t:7,e:"ui-button",a:{icon:"pencil",action:"set_code"},f:["Set"]}]}," ",{t:4,f:[{p:[12,5,443],t:7,e:"ui-section",a:{label:"Relay Code"},f:[{p:[13,7,482],t:7,e:"span",f:[{t:2,r:"data.relay_code",p:[13,13,488]}]}," ",{p:[14,5,520],t:7,e:"ui-button",a:{icon:"pencil",action:"set_relay_code"},f:["Set"]}]}],n:50,x:{r:["data.mode"],s:'_0=="Relay"'},p:[11,3,409]}," ",{p:[17,3,618],t:7,e:"ui-section",a:{label:"Signal Mode"},f:[{p:[18,5,656],t:7,e:"span",f:[{t:2,r:"data.mode",p:[18,11,662]}]}," ",{p:[19,5,688],t:7,e:"br"}," ",{p:[20,4,697],t:7,e:"ui-button",a:{action:"select_mode",params:'{"mode": "Off"}'},f:["Off"]}," ",{p:[21,5,775],t:7,e:"ui-button",a:{action:"select_mode",params:'{"mode": "Local"}'},f:["Local"]}," ",{p:[22,5,857],t:7,e:"ui-button",a:{action:"select_mode",params:'{"mode": "Targeted"}'},f:["Targeted"]}," ",{p:[23,5,945],t:7,e:"ui-button",a:{action:"select_mode",params:'{"mode": "Area"}'},f:["Area"]}," ",{p:[24,5,1025],t:7,e:"ui-button",a:{action:"select_mode",params:'{"mode": "Relay"}'},f:["Relay"]}]}],r:"data.locked"}]}," ",{p:[28,1,1144],t:7,e:"ui-display",a:{title:"Saved Settings"},f:[{t:4,f:[{p:[30,3,1215],t:7,e:"ui-button",a:{icon:"load",action:"load",params:['{"save_id": "',{t:2,r:"id",p:[30,61,1273]},'"}']},f:[{t:2,r:"name",p:[30,71,1283]}]}," ",{t:4,f:[{p:[32,4,1332],t:7,e:"ui-button",a:{icon:"remove",action:"remove_save",params:['{"save_id": "',{t:2,r:"id",p:[32,71,1399]},'"}']},f:["Remove"]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[31,3,1307]}," ",{p:[34,3,1442],t:7,e:"br"}],n:52,r:"data.saved_settings",p:[29,2,1182]}]}]},e.exports=a.extend(r.exports)},{341:341}],415:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Ghost roles"},f:[{p:[2,2,35],t:7,e:"ui-section",a:{label:"Ignored roles"},f:[{t:4,f:[{p:[4,4,99],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["enabled"],s:'_0?"check-square-o":"square-o"'},p:[4,21,116]}],style:[{t:2,x:{r:["enabled"],s:'_0?"danger":null'},p:[4,73,168]}],action:"toggle_ignore",params:['{"key": "',{t:2,r:"key",p:[4,144,239]},'"}']},f:[{t:2,r:"desc",p:[4,155,250]}]}],n:52,r:"data.ignore",p:[3,3,73]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],416:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Relay"},f:[{t:4,f:[{p:[3,3,57],t:7,e:"h2",f:["NETWORK BUFFERS OVERLOADED"]}," ",{p:[4,3,96],t:7,e:"h3",f:["Overload Recovery Mode"]}," ",{p:[5,3,131],t:7,e:"i",f:["This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue."]}," ",{p:[6,3,484],t:7,e:"h3",f:["ADMINISTRATIVE OVERRIDE"]}," ",{p:[7,3,520],t:7,e:"b",f:["CAUTION - Data loss may occur"]}," ",{p:[8,3,562],t:7,e:"ui-button",a:{icon:"signal",action:"restart"},f:["Purge buffered traffic"]}],n:50,r:"data.dos_crashed",p:[2,2,29]},{t:4,n:51,f:[{p:[12,3,663],t:7,e:"ui-section",a:{label:"Relay status"},f:[{p:[13,4,701],t:7,e:"ui-button",a:{icon:"power-off",action:"toggle"},f:[{t:2,x:{r:["data.enabled"],s:'_0?"ENABLED":"DISABLED"'},p:[14,6,752]}]}]}," ",{p:[18,3,836],t:7,e:"ui-section",a:{label:"Network buffer status"},f:[{t:2,r:"data.dos_overload",p:[19,4,883]}," / ",{t:2,r:"data.dos_capacity",p:[19,28,907]}," GQ"]}],r:"data.dos_crashed"}]}]},e.exports=a.extend(r.exports)},{341:341}],417:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{healthState:function(){var t=this.get("data.health");return t>70?"good":t>50?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" "," ",{p:[15,1,320],t:7,e:"ntosheader"}," ",{t:4,f:[{p:[18,3,363],t:7,e:"ui-notice",f:[{p:[19,5,380],t:7,e:"span",f:["Reconstruction in progress!"]}]}],n:50,r:"data.restoring",p:[17,1,337]},{p:[24,1,451],t:7,e:"ui-display",f:[{p:[26,1,467],t:7,e:"div",a:{"class":"item"},f:[{p:[27,3,489],t:7,e:"div",a:{"class":"itemLabel"},f:["Inserted AI:"]}," ",{p:[30,3,541],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[31,2,569],t:7,e:"ui-button",a:{icon:"eject",action:"PRG_eject",state:[{t:2,x:{r:["data.nocard"],s:'_0?"disabled":null'},p:[31,52,619]}]},f:[{t:2,x:{r:["data.name"],s:'_0?_0:"---"'},p:[31,89,656]}]}]}]}," ",{t:4,f:[{p:[36,2,744],t:7,e:"b",f:["ERROR: ",{t:2,r:"data.error",p:[36,12,754]}]}],n:50,r:"data.error",p:[35,1,723]},{t:4,n:51,f:[{p:[38,2,785],t:7,e:"h2",f:["System Status"]}," ",{p:[39,2,810],t:7,e:"div",a:{"class":"item"},f:[{p:[40,3,832],t:7,e:"div",a:{"class":"itemLabel"},f:["Current AI:"]}," ",{p:[43,3,885],t:7,e:"div",a:{"class":"itemContent"},f:[{t:2,r:"data.name",p:[44,4,915]}]}," ",{p:[46,3,942],t:7,e:"div",a:{"class":"itemLabel"},f:["Status:"]}," ",{p:[49,3,991],t:7,e:"div",a:{"class":"itemContent"},f:[{t:4,f:["Nonfunctional"],n:50,r:"data.isDead",p:[50,4,1021]},{t:4,n:51,f:["Functional"],r:"data.isDead"}]}," ",{p:[56,3,1114],t:7,e:"div",a:{"class":"itemLabel"},f:["System Integrity:"]}," ",{p:[59,3,1173],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[60,4,1203],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.health",p:[60,37,1236]}],state:[{t:2,r:"healthState",p:[61,11,1264]}]},f:[{t:2,x:{r:["adata.health"],s:"Math.round(_0)"},p:[61,28,1281]},"%"]}]}," ",{p:[63,3,1336],t:7,e:"div",a:{"class":"itemLabel"},f:["Active Laws:"]}," ",{p:[66,3,1390],t:7,e:"div",a:{"class":"itemContent"},f:[{p:[67,4,1420],t:7,e:"table",f:[{t:4,f:[{p:[69,6,1462],t:7,e:"tr",f:[{p:[69,10,1466],t:7,e:"td",f:[{p:[69,14,1470],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:".",p:[69,38,1494]}]}]}]}],n:52,r:"data.ai_laws",p:[68,5,1433]}]}]}," ",{p:[73,2,1547],t:7,e:"ui-section",a:{label:"Operations" @@ -18,4 +18,4 @@ params:'{"id": "1"}'},f:["TOGGLE"]}]}]},{p:[40,3,1051],t:7,e:"tr",f:[" ",{p:[41, }," ",{p:[10,4,358],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.has_beaker"],s:'_0?null:"disabled"'},p:[10,35,389]}],action:"eject_beaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[15,4,528],t:7,e:"ui-section",f:[{t:4,f:[{p:[17,6,578],t:7,e:"span",a:{"class":"bad"},f:["The beaker is empty!"]}],n:50,r:"data.beaker_empty",p:[16,5,546]},{t:4,n:51,f:[{p:[19,6,644],t:7,e:"ui-subdisplay",a:{title:"Blood"},f:[{t:4,f:[{p:[21,8,712],t:7,e:"ui-section",a:{label:"Blood DNA"},f:[{t:2,r:"data.blood.dna",p:[21,38,742]}]}," ",{p:[22,8,782],t:7,e:"ui-section",a:{label:"Blood type"},f:[{t:2,r:"data.blood.type",p:[22,39,813]}]}],n:50,r:"data.has_blood",p:[20,7,681]},{t:4,n:51,f:[{p:[24,8,870],t:7,e:"ui-section",f:[{p:[25,9,892],t:7,e:"span",a:{"class":"average"},f:["No blood sample detected."]}]}],r:"data.has_blood"}]}],r:"data.beaker_empty"}]}],n:50,r:"data.has_beaker",p:[14,3,500]},{t:4,n:51,f:[{p:[32,4,1054],t:7,e:"ui-section",f:[{p:[33,5,1072],t:7,e:"span",a:{"class":"bad"},f:["No beaker loaded."]}]}],r:"data.has_beaker"}]}," ",{t:4,f:[{p:[38,3,1188],t:7,e:"ui-display",a:{title:"Diseases"},f:[{t:4,f:[{p:{button:[{t:4,f:[{p:[43,8,1343],t:7,e:"ui-button",a:{icon:"pencil",action:"rename_disease",state:[{t:2,x:{r:["can_rename"],s:'_0?"":"disabled"'},p:[43,64,1399]}],params:['{"index": ',{t:2,r:"index",p:[43,116,1451]},"}"]},f:["Name advanced disease"]}],n:50,r:"is_adv",p:[42,7,1320]}," ",{p:[47,7,1538],t:7,e:"ui-button",a:{icon:"flask",action:"create_culture_bottle",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[47,69,1600]}],params:['{"index": ',{t:2,r:"index",p:[47,124,1655]},"}"]},f:["Create virus culture bottle"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[40,24,1269]}],button:0},f:[" ",{p:[51,6,1749],t:7,e:"ui-section",a:{label:"Disease agent"},f:[{t:2,r:"agent",p:[51,40,1783]}]}," ",{p:[52,6,1812],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[52,38,1844]}]}," ",{p:[53,6,1879],t:7,e:"ui-section",a:{label:"Spread"},f:[{t:2,r:"spread",p:[53,33,1906]}]}," ",{p:[54,6,1936],t:7,e:"ui-section",a:{label:"Possible cure"},f:[{t:2,r:"cure",p:[54,40,1970]}]}," ",{t:4,f:[{p:[56,7,2021],t:7,e:"ui-section",a:{label:"Symptoms"},f:[{t:4,f:[{p:[58,9,2087],t:7,e:"ui-button",a:{action:"symptom_details",state:"",params:['{"picked_symptom": ',{t:2,r:"sym_index",p:[58,81,2159]},', "index": ',{t:2,r:"index",p:[58,105,2183]},"}"]},f:[{t:2,r:"name",p:[59,10,2206]}," "]},{p:[60,21,2236],t:7,e:"br"}],n:52,r:"symptoms",p:[57,8,2059]}]}," ",{p:[63,7,2289],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[63,38,2320]}]}," ",{p:[64,7,2355],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[64,35,2383]}]}," ",{p:[65,7,2415],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[65,39,2447]}]}," ",{p:[66,7,2483],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[66,44,2520]}]}],n:50,r:"is_adv",p:[55,6,1999]}]}],n:52,r:"data.viruses",p:[39,4,1222]},{t:4,n:51,f:[{p:[70,5,2601],t:7,e:"ui-section",f:[{p:[71,6,2620],t:7,e:"span",a:{"class":"average"},f:["No detectable virus in the blood sample."]}]}],r:"data.viruses"}]}," ",{p:[75,3,2743],t:7,e:"ui-display",a:{title:"Antibodies"},f:[{t:4,f:[{p:[77,5,2811],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[77,24,2830]}]},f:[{p:[78,7,2848],t:7,e:"ui-button",a:{icon:"eyedropper",state:[{t:2,x:{r:["data.is_ready"],s:'_0?"":"disabled"'},p:[78,43,2884]}],action:"create_vaccine_bottle",params:['{"index": ',{t:2,r:"id",p:[78,129,2970]},"}"]},f:["Create vaccine bottle"]}]}],n:52,r:"data.resistances",p:[76,4,2779]},{t:4,n:51,f:[{p:[83,5,3067],t:7,e:"ui-section",f:[{p:[84,6,3086],t:7,e:"span",a:{"class":"average"},f:["No antibodies detected in the blood sample."]}]}],r:"data.resistances"}]}],n:50,r:"data.has_blood",p:[37,2,1162]}],n:50,x:{r:["data.mode"],s:"_0==1"},p:[1,1,0]},{t:4,n:51,f:[{p:[90,2,3231],t:7,e:"ui-button",a:{icon:"undo",state:"",action:"back"},f:["Back"]}," ",{t:4,f:[{p:[94,4,3330],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[94,23,3349]}]},f:[{p:[95,4,3364],t:7,e:"ui-section",f:[{t:2,r:"desc",p:[96,5,3382]}," ",{t:4,f:[{p:[98,5,3417],t:7,e:"br"}," ",{p:[99,5,3428],t:7,e:"b",f:["This symptom has been neutered, and has no effect. It will still affect the virus' statistics."]}],n:50,r:"neutered",p:[97,4,3395]}]}," ",{p:[102,4,3564],t:7,e:"ui-section",f:[{p:[103,5,3582],t:7,e:"ui-section",a:{label:"Level"},f:[{t:2,r:"level",p:[103,31,3608]}]}," ",{p:[104,5,3636],t:7,e:"ui-section",a:{label:"Resistance"},f:[{t:2,r:"resistance",p:[104,36,3667]}]}," ",{p:[105,5,3700],t:7,e:"ui-section",a:{label:"Stealth"},f:[{t:2,r:"stealth",p:[105,33,3728]}]}," ",{p:[106,5,3758],t:7,e:"ui-section",a:{label:"Stage speed"},f:[{t:2,r:"stage_speed",p:[106,37,3790]}]}," ",{p:[107,5,3824],t:7,e:"ui-section",a:{label:"Transmittability"},f:[{t:2,r:"transmission",p:[107,42,3861]}]}]}," ",{p:[109,4,3913],t:7,e:"ui-subdisplay",a:{title:"Effect Thresholds"},f:[{p:[110,5,3960],t:7,e:"ui-section",f:[{t:3,r:"threshold_desc",p:[110,17,3972]}]}]}]}],n:53,r:"data.symptom",p:[93,2,3303]}],x:{r:["data.mode"],s:"_0==1"}}]},e.exports=a.extend(r.exports)},{341:341}],436:[function(t,e,n){var a=t(341),r={exports:{}};!function(e){"use strict";var n=t(484);e.exports={data:{filter:"",tooltiptext:function(t,e,n){var a="";return t&&(a+="REQUIREMENTS: "+t+" "),e&&(a+="CATALYSTS: "+e+" "),n&&(a+="TOOLS: "+n),a}},oninit:function(){var t=this;this.on({hover:function(t){this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}}),this.observe("filter",function(e,a,r){var i=null;i=t.get("data.display_compact")?t.findAll(".section"):t.findAll(".display:not(:first-child)"),(0,n.filterMulti)(i,t.get("filter").toLowerCase())},{init:!1})}}}(r),r.exports.template={v:3,t:[" ",{p:[48,1,1342],t:7,e:"ui-display",a:{title:[{t:2,r:"data.category",p:[48,20,1361]},{t:4,f:[" : ",{t:2,r:"data.subcategory",p:[48,64,1405]}],n:50,r:"data.subcategory",p:[48,37,1378]}]},f:[{t:4,f:[{p:[50,3,1459],t:7,e:"ui-section",f:["Crafting... ",{p:[51,16,1488],t:7,e:"i",a:{"class":"fa-spin fa fa-spinner"}}]}],n:50,r:"data.busy",p:[49,2,1438]},{t:4,n:51,f:[{p:[54,3,1557],t:7,e:"ui-section",f:[{p:[55,4,1574],t:7,e:"table",a:{style:"width:100%"},f:[{p:[56,5,1606],t:7,e:"tr",f:[{p:[57,6,1617],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[58,7,1659],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardCat"},f:[{t:2,r:"data.prev_cat",p:[59,8,1718]}]}]}," ",{p:[62,6,1774],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[63,7,1816],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardCat"},f:[{t:2,r:"data.next_cat",p:[64,7,1874]}]}]}," ",{p:[67,6,1930],t:7,e:"td",a:{style:"float:right!important"},f:[{t:4,f:[{p:[69,7,2014],t:7,e:"ui-button",a:{icon:"lock",action:"toggle_recipes"},f:["Showing Craftable Recipes"]}],n:50,r:"data.display_craftable_only",p:[68,6,1971]},{t:4,n:51,f:[{p:[73,7,2138],t:7,e:"ui-button",a:{icon:"unlock",action:"toggle_recipes"},f:["Showing All Recipes"]}],r:"data.display_craftable_only"}]}," ",{p:[78,6,2268],t:7,e:"td",a:{style:"float:right!important"},f:[{p:[79,7,2310],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.display_compact"],s:'_0?"check-square-o":"square-o"'},p:[79,24,2327]}],action:"toggle_compact"},f:["Compact"]}]}]}," ",{p:[84,5,2474],t:7,e:"tr",f:[{t:4,f:[{p:[86,6,2515],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[87,7,2557],t:7,e:"ui-button",a:{icon:"arrow-left",action:"backwardSubCat"},f:[{t:2,r:"data.prev_subcat",p:[88,8,2619]}]}]}," ",{p:[91,6,2678],t:7,e:"td",a:{style:"width:150px!important"},f:[{p:[92,7,2720],t:7,e:"ui-button",a:{icon:"arrow-right",action:"forwardSubCat"},f:[{t:2,r:"data.next_subcat",p:[93,8,2782]}]}]}],n:50,r:"data.subcategory",p:[85,5,2484]}]}]}," ",{t:4,f:[{t:4,f:[" ",{p:[101,6,2992],t:7,e:"ui-input",a:{value:[{t:2,r:"filter",p:[101,23,3009]}],placeholder:"Filter.."}}],n:51,r:"data.display_compact",p:[100,5,2902]}],n:50,r:"config.fancy",p:[99,4,2876]}]}," ",{t:4,f:[{p:[106,5,3144],t:7,e:"ui-display",f:[{t:4,f:[{p:[108,6,3193],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[108,25,3212]}]},f:[{p:[109,7,3230],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[109,27,3250]}],"tooltip-side":"right",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[109,135,3358]},'"}'],icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.can_craft",p:[107,5,3162]}," ",{t:4,f:[{t:4,f:[{p:[116,7,3567],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[116,26,3586]}]},f:[{p:[117,8,3605],t:7,e:"ui-button",a:{tooltip:[{t:2,x:{r:["tooltiptext","req_text","catalyst_text","tool_text"],s:"_0(_1,_2,_3)"},p:[117,28,3625]}],"tooltip-side":"right",state:"disabled",icon:"gears"},v:{hover:"hover",unhover:"unhover"},f:["Craft"]}]}],n:52,r:"data.cant_craft",p:[115,6,3534]}],n:51,r:"data.display_craftable_only",p:[114,5,3495]}]}],n:50,r:"data.display_compact",p:[105,4,3110]},{t:4,n:51,f:[{t:4,f:[{p:[126,6,3947],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[126,25,3966]}]},f:[{t:4,f:[{p:[128,8,4009],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[129,9,4052]}]}],n:50,r:"req_text",p:[127,7,3984]}," ",{t:4,f:[{p:[133,8,4139],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[134,9,4179]}]}],n:50,r:"catalyst_text",p:[132,7,4109]}," ",{t:4,f:[{p:[138,8,4267],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[139,9,4303]}]}],n:50,r:"tool_text",p:[137,7,4241]}," ",{p:[142,7,4361],t:7,e:"ui-section",f:[{p:[143,8,4382],t:7,e:"ui-button",a:{icon:"gears",action:"make",params:['{"recipe": "',{t:2,r:"ref",p:[143,66,4440]},'"}']},f:["Craft"]}]}]}],n:52,r:"data.can_craft",p:[125,5,3916]}," ",{t:4,f:[{t:4,f:[{p:[151,7,4621],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[151,26,4640]}]},f:[{t:4,f:[{p:[153,9,4685],t:7,e:"ui-section",a:{label:"Requirements"},f:[{t:2,r:"req_text",p:[154,10,4729]}]}],n:50,r:"req_text",p:[152,8,4659]}," ",{t:4,f:[{p:[158,9,4820],t:7,e:"ui-section",a:{label:"Catalysts"},f:[{t:2,r:"catalyst_text",p:[159,10,4861]}]}],n:50,r:"catalyst_text",p:[157,8,4789]}," ",{t:4,f:[{p:[163,9,4953],t:7,e:"ui-section",a:{label:"Tools"},f:[{t:2,r:"tool_text",p:[164,10,4990]}]}],n:50,r:"tool_text",p:[162,8,4926]}]}],n:52,r:"data.cant_craft",p:[150,6,4588]}],n:51,r:"data.display_craftable_only",p:[149,5,4549]}],r:"data.display_compact"}],r:"data.busy"}]}]},e.exports=a.extend(r.exports)},{341:341,484:484}],437:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:[4,1,113],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[5,3,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,5,186],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[6,11,192]}," kPa"]}]}," ",{p:[8,3,254],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[9,5,285],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[9,18,298]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[9,59,339]}]}]}]}," ",{p:[12,1,430],t:7,e:"ui-display",a:{title:"Pump"},f:[{p:[13,3,459],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,491],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,508]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[15,14,559]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,616]}]}]}," ",{p:[18,3,675],t:7,e:"ui-section",a:{label:"Direction"},f:[{p:[19,5,711],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"sign-out":"sign-in"'},p:[19,22,728]}],action:"direction"},f:[{t:2,x:{r:["data.direction"],s:'_0=="out"?"Out":"In"'},p:[20,26,808]}]}]}," ",{p:[22,3,883],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,5,925],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.min_pressure",p:[23,18,938]}],max:[{t:2,r:"data.max_pressure",p:[23,46,966]}],value:[{t:2,r:"data.target_pressure",p:[24,14,1003]}]},f:[{t:2,x:{r:["adata.target_pressure"],s:"Math.round(_0)"},p:[24,40,1029]}," kPa"]}]}," ",{p:[26,3,1100],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,1145],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.target_pressure","data.default_pressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,1178]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1328],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.target_pressure","data.min_pressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1359]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1500],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1595],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.target_pressure","data.max_pressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1625]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}," ",{p:{button:[{t:4,f:[{p:[39,7,1891],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[39,38,1922]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[38,5,1863]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[43,3,2042],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[44,4,2073]}]}," ",{p:[46,3,2115],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[47,4,2149]}," kPa"]}],n:50,r:"data.holding",p:[42,3,2018]},{t:4,n:51,f:[{p:[50,3,2223],t:7,e:"ui-section",f:[{p:[51,4,2240],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}]},e.exports=a.extend(r.exports)},{341:341}],438:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" ",{p:[3,1,69],t:7,e:"ui-notice",f:[{p:[4,3,84],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.holding"],s:'_0?"is":"is not"'},p:[4,23,104]}," connected to a tank."]}]}," ",{p:[6,1,182],t:7,e:"ui-display",a:{title:"Status",button:0},f:[{p:[7,3,220],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[8,5,255],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.round(_0)"},p:[8,11,261]}," kPa"]}]}," ",{p:[10,3,323],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[11,5,354],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected"],s:'_0?"good":"average"'},p:[11,18,367]}]},f:[{t:2,x:{r:["data.connected"],s:'_0?"Connected":"Not Connected"'},p:[11,59,408]}]}]}]}," ",{p:[14,1,499],t:7,e:"ui-display",a:{title:"Filter"},f:[{p:[15,3,530],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[16,5,562],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[16,22,579]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":"null"'},p:[17,14,630]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[18,22,687]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[24,7,856],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.on"],s:'_0?"danger":null'},p:[24,38,887]}],action:"eject"},f:["Eject"]}],n:50,r:"data.holding",p:[23,5,828]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[28,3,1007],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holding.name",p:[29,4,1038]}]}," ",{p:[31,3,1080],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holding.pressure"],s:"Math.round(_0)"},p:[32,4,1114]}," kPa"]}],n:50,r:"data.holding",p:[27,3,983]},{t:4,n:51,f:[{p:[35,3,1188],t:7,e:"ui-section",f:[{p:[36,4,1205],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.holding"}]}," ",{p:[40,1,1293],t:7,e:"ui-display",a:{title:"Filters"},f:[{t:4,f:[{p:[42,5,1345],t:7,e:"filters"}],n:53,r:"data",p:[41,3,1325]}]}]},r.exports.components=r.exports.components||{};var i={filters:t(457)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,457:457}],439:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{chargingState:function(t){switch(t){case 2:return"good";case 1:return"average";default:return"bad"}},chargingMode:function(t){return 2==t?"Full":1==t?"Charging":"Draining"},channelState:function(t){return t>=2?"good":"bad"},channelPower:function(t){return t>=2?"On":"Off"},channelMode:function(t){return 1==t||3==t?"Auto":"Manual"}},computed:{graphData:function(){var t=this.get("data.history");return Object.keys(t).map(function(e){return t[e].map(function(t,e){return{x:e,y:t}})})}}}}(r),r.exports.template={v:3,t:[" ",{p:[42,1,1035],t:7,e:"ui-display",a:{title:"Network"},f:[{t:4,f:[{p:[44,5,1093],t:7,e:"ui-linegraph",a:{points:[{t:2,r:"graphData",p:[44,27,1115]}],height:"500",legend:'["Available", "Load"]',colors:'["rgb(0, 102, 0)", "rgb(153, 0, 0)"]',xunit:"seconds ago",xfactor:[{t:2,r:"data.interval",p:[46,38,1267]}],yunit:"W",yfactor:"1",xinc:[{t:2,x:{r:["data.stored"],s:"_0/10"},p:[47,15,1323]}],yinc:"9"}}],n:50,r:"config.fancy",p:[43,3,1067]},{t:4,n:51,f:[{p:[49,5,1373],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[50,7,1411],t:7,e:"span",f:[{t:2,r:"data.supply",p:[50,13,1417]}]}]}," ",{p:[52,5,1464],t:7,e:"ui-section",a:{label:"Load"},f:[{p:[53,9,1499],t:7,e:"span",f:[{t:2,r:"data.demand",p:[53,15,1505]}]}]}],r:"config.fancy"}]}," ",{p:[57,1,1574],t:7,e:"ui-display",a:{title:"Areas"},f:[{p:[58,3,1604],t:7,e:"ui-section",a:{nowrap:0},f:[{p:[59,5,1629],t:7,e:"div",a:{"class":"content"},f:["Area"]}," ",{p:[60,5,1666],t:7,e:"div",a:{"class":"content"},f:["Charge"]}," ",{p:[61,5,1705],t:7,e:"div",a:{"class":"content"},f:["Load"]}," ",{p:[62,5,1742],t:7,e:"div",a:{"class":"content"},f:["Status"]}," ",{p:[63,5,1781],t:7,e:"div",a:{"class":"content"},f:["Equipment"]}," ",{p:[64,5,1823],t:7,e:"div",a:{"class":"content"},f:["Lighting"]}," ",{p:[65,5,1864],t:7,e:"div",a:{"class":"content"},f:["Environment"]}]}," ",{t:4,f:[{p:[68,5,1949],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[68,24,1968]}],nowrap:0},f:[{p:[69,7,1993],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.areas"],s:"Math.round(_1[_0].charge)"},p:[69,28,2014]}," %"]}," ",{p:[70,7,2072],t:7,e:"div",a:{"class":"content"},f:[{t:2,rx:{r:"adata.areas",m:[{t:30,n:"@index"},"load"]},p:[70,28,2093]}]}," ",{p:[71,7,2135],t:7,e:"div",a:{"class":"content"},f:[{p:[71,28,2156],t:7,e:"span",a:{"class":[{t:2,x:{r:["chargingState","charging"],s:"_0(_1)"},p:[71,41,2169]}]},f:[{t:2,x:{r:["chargingMode","charging"],s:"_0(_1)"},p:[71,70,2198]}]}]}," ",{p:[72,7,2245],t:7,e:"div",a:{"class":"content"},f:[{p:[72,28,2266],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","eqp"],s:"_0(_1)"},p:[72,41,2279]}]},f:[{t:2,x:{r:["channelPower","eqp"],s:"_0(_1)"},p:[72,64,2302]}," [",{p:[72,87,2325],t:7,e:"span",f:[{t:2,x:{r:["channelMode","eqp"],s:"_0(_1)"},p:[72,93,2331]}]},"]"]}]}," ",{p:[73,7,2380],t:7,e:"div",a:{"class":"content"},f:[{p:[73,28,2401],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","lgt"],s:"_0(_1)"},p:[73,41,2414]}]},f:[{t:2,x:{r:["channelPower","lgt"],s:"_0(_1)"},p:[73,64,2437]}," [",{p:[73,87,2460],t:7,e:"span",f:[{t:2,x:{r:["channelMode","lgt"],s:"_0(_1)"},p:[73,93,2466]}]},"]"]}]}," ",{p:[74,7,2515],t:7,e:"div",a:{"class":"content"},f:[{p:[74,28,2536],t:7,e:"span",a:{"class":[{t:2,x:{r:["channelState","env"],s:"_0(_1)"},p:[74,41,2549]}]},f:[{t:2,x:{r:["channelPower","env"],s:"_0(_1)"},p:[74,64,2572]}," [",{p:[74,87,2595],t:7,e:"span",f:[{t:2,x:{r:["channelMode","env"],s:"_0(_1)"},p:[74,93,2601]}]},"]"]}]}]}],n:52,r:"data.areas",p:[67,3,1923]}]}]},e.exports=a.extend(r.exports)},{341:341}],440:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{readableFrequency:function(){return Math.round(this.get("adata.frequency"))/10}}}}(r),r.exports.template={v:3,t:[" ",{p:[11,1,177],t:7,e:"ui-display",a:{title:"Settings"},f:[{t:4,f:[{p:[13,5,236],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,7,270],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[14,24,287]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[14,75,338]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"On":"Off"'},p:[16,9,413]}]}]}],n:50,r:"data.headset",p:[12,3,210]},{t:4,n:51,f:[{p:[19,5,494],t:7,e:"ui-section",a:{label:"Microphone"},f:[{p:[20,7,533],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.broadcasting"],s:'_0?"power-off":"close"'},p:[20,24,550]}],style:[{t:2,x:{r:["data.broadcasting"],s:'_0?"selected":null'},p:[20,78,604]}],action:"broadcast"},f:[{t:2,x:{r:["data.broadcasting"],s:'_0?"Engaged":"Disengaged"'},p:[22,9,685]}]}]}," ",{p:[24,5,769],t:7,e:"ui-section",a:{label:"Speaker"},f:[{p:[25,7,805],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.listening"],s:'_0?"power-off":"close"'},p:[25,24,822]}],style:[{t:2,x:{r:["data.listening"],s:'_0?"selected":null'},p:[25,75,873]}],action:"listen"},f:[{t:2,x:{r:["data.listening"],s:'_0?"Engaged":"Disengaged"'},p:[27,9,948]}]}]}],r:"data.headset"}," ",{t:4,f:[{p:[31,5,1064],t:7,e:"ui-section",a:{label:"High Volume"},f:[{p:[32,7,1104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.useCommand"],s:'_0?"power-off":"close"'},p:[32,24,1121]}],style:[{t:2,x:{r:["data.useCommand"],s:'_0?"selected":null'},p:[32,76,1173]}],action:"command"},f:[{t:2,x:{r:["data.useCommand"],s:'_0?"On":"Off"'},p:[34,9,1250]}]}]}],n:50,r:"data.command",p:[30,3,1038]}]}," ",{p:[38,1,1342],t:7,e:"ui-display",a:{title:"Channel"},f:[{p:[39,3,1374],t:7,e:"ui-section",a:{label:"Frequency"},f:[{t:4,f:[{p:[41,7,1439],t:7,e:"span",f:[{t:2,r:"readableFrequency",p:[41,13,1445]}]}],n:50,r:"data.freqlock",p:[40,5,1410]},{t:4,n:51,f:[{p:[43,7,1495],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[43,46,1534]}],action:"frequency",params:'{"adjust": -1}'}}," ",{p:[44,7,1646],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.frequency","data.minFrequency"],s:'_0==_1?"disabled":null'},p:[44,41,1680]}],action:"frequency",params:'{"adjust": -.2}'}}," ",{p:[45,7,1793],t:7,e:"ui-button",a:{icon:"pencil",action:"frequency",params:'{"tune": "input"}'},f:[{t:2,r:"readableFrequency",p:[45,78,1864]}]}," ",{p:[46,7,1905],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[46,40,1938]}],action:"frequency",params:'{"adjust": .2}'}}," ",{p:[47,7,2050],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.frequency","data.maxFrequency"],s:'_0==_1?"disabled":null'},p:[47,45,2088]}],action:"frequency",params:'{"adjust": 1}'}}],r:"data.freqlock"}]}," ",{t:4,f:[{p:[51,5,2262],t:7,e:"ui-section",a:{label:"Subspace Transmission"},f:[{p:[52,7,2312],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.subspace"],s:'_0?"power-off":"close"'},p:[52,24,2329]}],style:[{t:2,x:{r:["data.subspace"],s:'_0?"selected":null'},p:[52,74,2379]}],action:"subspace"},f:[{t:2,x:{r:["data.subspace"],s:'_0?"Active":"Inactive"'},p:[53,29,2447]}]}]}],n:50,r:"data.subspaceSwitchable",p:[50,3,2225]}," ",{t:4,f:[{p:[57,5,2578],t:7,e:"ui-section",a:{label:"Channels"},f:[{t:4,f:[{p:[59,9,2656],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["."],s:'_0?"check-square-o":"square-o"'},p:[59,26,2673]}],style:[{t:2,x:{r:["."],s:'_0?"selected":null'},p:[60,18,2730]}],action:"channel",params:['{"channel": "',{t:2,r:"channel",p:[61,49,2806]},'"}']},f:[{t:2,r:"channel",p:[62,11,2833]}]},{p:[62,34,2856],t:7,e:"br"}],n:52,i:"channel",r:"data.channels",p:[58,7,2615]}]}],n:50,x:{r:["data.subspace","data.channels"],s:"_0&&_1"},p:[56,3,2534]}]}]},e.exports=a.extend(r.exports)},{341:341}],441:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" "," "," "," "," "," "," "," "," "," ",{p:[11,1,560],t:7,e:"rdheader"}," ",{t:4,f:[{p:[13,2,595],t:7,e:"ui-display",a:{title:"CONSOLE LOCKED"},f:[{p:[14,3,634],t:7,e:"ui-button",a:{action:"Unlock"},f:["Unlock"]}]}],n:50,r:"data.locked",p:[12,1,573]},{t:4,f:[{p:[18,2,729],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.tabs",p:[18,17,744]}]},f:[{p:[19,3,763],t:7,e:"tab",a:{name:"Technology"},f:[{p:[20,4,791],t:7,e:"techweb"}]}," ",{p:[22,3,815],t:7,e:"tab",a:{name:"View Node"},f:[{p:[23,4,842],t:7,e:"nodeview"}]}," ",{p:[25,3,867],t:7,e:"tab",a:{name:"View Design"},f:[{p:[26,4,896],t:7,e:"designview"}]}," ",{p:[28,3,923],t:7,e:"tab",a:{name:"Disk Operations - Design"},f:[{p:[29,4,965],t:7,e:"diskopsdesign"}]}," ",{p:[31,3,995],t:7,e:"tab",a:{name:"Disk Operations - Technology"},f:[{p:[32,4,1041],t:7,e:"diskopstech"}]}," ",{p:[34,3,1069],t:7,e:"tab",a:{name:"Deconstructive Analyzer"},f:[{p:[35,4,1110],t:7,e:"destruct"}]}," ",{p:[37,3,1135],t:7,e:"tab",a:{name:"Protolathe"},f:[{p:[38,4,1163],t:7,e:"protolathe"}]}," ",{p:[40,3,1190],t:7,e:"tab",a:{name:"Circuit Imprinter"},f:[{p:[41,4,1225],t:7,e:"circuit"}]}," ",{p:[43,3,1249],t:7,e:"tab",a:{name:"Settings"},f:[{p:[44,4,1275],t:7,e:"settings"}]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[17,1,706]}]},r.exports.components=r.exports.components||{};var i={settings:t(450),circuit:t(442),protolathe:t(448),destruct:t(444),diskopsdesign:t(445),diskopstech:t(446),designview:t(443),nodeview:t(447),techweb:t(451),rdheader:t(449)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,442:442,443:443,444:444,445:445,446:446,447:447,448:448,449:449,450:450,451:451}],442:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[3,3,58],t:7,e:"ui-display",a:{title:"Circuit Imprinter Busy!"}}],n:50,r:"data.circuitbusy",p:[2,2,30]},{t:4,n:51,f:[{p:[5,3,130],t:7,e:"ui-display",f:[{p:[6,4,147],t:7,e:"ui-section",f:["Search Available Designs: ",{p:[7,4,189],t:7,e:"input",a:{value:[{t:2,r:"textsearch",p:[7,17,202]}],placeholder:"Type Here","class":"text"}}," ",{p:[8,5,261],t:7,e:"ui-button",a:{action:"textSearch",params:['{"latheType" : "circuit", "inputText" : ',{t:2,r:"textsearch",p:[8,84,340]},"}"]},f:["Search"]}]}," ",{p:[10,4,398],t:7,e:"ui-section",f:["Materials: ",{t:2,r:"data.circuitmats",p:[10,27,421]}," / ",{t:2,r:"data.circuitmaxmats",p:[10,50,444]}]}," ",{p:[11,4,485],t:7,e:"ui-section",f:["Reagents: ",{t:2,r:"data.circuitchems",p:[11,26,507]}," / ",{t:2,r:"data.circuitmaxchems",p:[11,50,531]}]}," ",{p:[12,3,572],t:7,e:"ui-display",f:[{p:[14,3,590],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.lathe_tabs",p:[14,18,605]}]},f:[{p:[15,4,631],t:7,e:"tab",a:{name:"Category List"},f:[{t:4,f:[{p:[17,6,696],t:7,e:"ui-button",a:{action:"switchcat",state:[{t:2,x:{r:["data.circuitcat"],s:'_0=="{{name}}"?"selected":null'},p:[17,43,733]}],params:['{"type" : "circuit", "cat" : "',{t:2,r:"name",p:[17,135,825]},'"}']},f:[{t:2,r:"name",p:[17,147,837]}]}],n:52,r:"data.circuitcats",p:[16,5,663]}]}," ",{p:[20,4,888],t:7,e:"tab",a:{name:"Selected Category"},f:[{t:4,f:[{p:[22,6,956],t:7,e:"ui-section",f:[{t:2,r:"name",p:[22,18,968]},{t:2,r:"matstring",p:[22,26,976]}," ",{p:[23,7,997],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[23,40,1030]}],params:['{"latheType" : "circuit", "id" : "',{t:2,r:"id",p:[23,119,1109]},'"}']},f:["Print"]}]}],n:52,r:"data.circuitdes",p:[21,5,924]}]}," ",{p:[27,4,1187],t:7,e:"tab",a:{name:"Search Results"},f:[{t:4,f:[{p:[29,6,1254],t:7,e:"ui-section",f:[{t:2,r:"name",p:[29,18,1266]},{t:2,r:"matstring",p:[29,26,1274]}," ",{p:[30,7,1295],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[30,40,1328]}],params:['{"latheType" : "circuit", "id" : "',{t:2,r:"id",p:[30,119,1407]},'"}']},f:["Print"]}]}],n:52,r:"data.circuitmatch",p:[28,5,1220]}]}," ",{p:[34,4,1485],t:7,e:"tab",a:{name:"Materials"},f:[{t:4,f:[{p:[36,6,1550],t:7,e:"ui-section",f:[{t:2,r:"name",p:[36,18,1562]}," : ",{t:2,r:"amount",p:[36,29,1573]}," cm3 - ",{t:4,f:[{p:[38,7,1623],t:7,e:"input",a:{value:[{t:2,r:"number",p:[38,20,1636]}],placeholder:["1-",{t:2,r:"sheets",p:[38,46,1662]}],"class":"number"}}," ",{p:[39,7,1698],t:7,e:"ui-button",a:{action:"releasemats",params:['{"latheType" : "circuit", "mat_id" : ',{t:2,r:"mat_id",p:[39,84,1775]},', "sheets" : ',{t:2,r:"number",p:[39,107,1798]},"}"]},f:["Release"]}],n:50,x:{r:["sheets"],s:"_0>0"},p:[37,6,1597]}]}],n:52,r:"data.circuitmat_list",p:[35,5,1513]}]}," ",{p:[44,4,1895],t:7,e:"tab",a:{name:"Chemicals"},f:[{t:4,f:[{p:[46,6,1961],t:7,e:"ui-section",f:[{t:2,r:"name",p:[46,18,1973]}," : ",{t:2,r:"amount",p:[46,29,1984]}," - ",{p:[47,7,2005],t:7,e:"ui-button",a:{action:"purgechem",params:['{"latheType" : "circuit", "name" : ',{t:2,r:"name",p:[47,80,2078]},', "id" : ',{t:2,r:"reagentid",p:[47,97,2095]},"}"]},f:["Purge"]}]}],n:52,r:"data.circuitchem_list",p:[45,5,1923]}]}]}]}]}],r:"data.circuitbusy"}],n:50,r:"data.circuit_linked",p:[1,1,0]},{t:4,n:51,f:[{p:[55,2,2216],t:7,e:"ui-display",a:{title:"No Linked Circuit Imprinter"}}],r:"data.circuit_linked"}]},e.exports=a.extend(r.exports)},{341:341}],443:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,31],t:7,e:"ui-display",a:{title:[{t:2,r:"data.sdesign_name",p:[2,21,50]}]},f:[{p:[3,3,77],t:7,e:"ui-section",a:{title:"Description"},f:[{t:2,r:"data.sdesign_desc",p:[3,35,109]}]}]}," ",{p:[5,2,162],t:7,e:"ui-display",a:{title:"Lathe Types"},f:[{t:4,f:[{p:[7,4,239],t:7,e:"ui-section",a:{title:"Circuit Imprinter"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&1"},p:[6,3,198]}," ",{t:4,f:[{p:[10,4,346],t:7,e:"ui-section",a:{title:"Protolathe"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&2"},p:[9,3,305]}," ",{t:4,f:[{p:[13,4,446],t:7,e:"ui-section",a:{title:"Autolathe"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&4"},p:[12,3,405]}," ",{t:4,f:[{p:[16,4,545],t:7,e:"ui-section",a:{title:"Crafting Fabricator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&8"},p:[15,3,504]}," ",{t:4,f:[{p:[19,4,655],t:7,e:"ui-section",a:{title:"Exosuit Fabricator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&16"},p:[18,3,613]}," ",{t:4,f:[{p:[22,4,764],t:7,e:"ui-section",a:{title:"Biogenerator"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&32"},p:[21,3,722]}," ",{t:4,f:[{p:[25,4,867],t:7,e:"ui-section",a:{title:"Limb Grower"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&64"},p:[24,3,825]}," ",{t:4,f:[{p:[28,4,970],t:7,e:"ui-section",a:{title:"Ore Smelter"}}],n:50,x:{r:["data.sdesign_buildtype"],s:"_0&128"},p:[27,3,927]}]}," ",{p:[31,2,1045],t:7,e:"ui-display",a:{title:"Materials"},f:[{t:4,f:[{p:[33,4,1116],t:7,e:"ui-section",a:{title:[{t:2,r:"matname",p:[33,23,1135]}]},f:[{t:2,r:"matamt",p:[33,36,1148]}," cm^3"]}],n:52,r:"data.sdesign_materials",p:[32,3,1079]}]}],n:50,r:"data.design_selected",p:[1,1,0]},{t:4,f:[{p:[38,2,1248],t:7,e:"ui-display",a:{title:"No Design Selected."}}],n:50,x:{r:["data.design_selected"],s:"!_0"},p:[37,1,1216]}]},e.exports=a.extend(r.exports)},{341:341}],444:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[4,3,60],t:7,e:"ui-display",a:{title:"Destructive Analyzer Busy!"}}],n:50,r:"data.destroybusy",p:[3,2,32]},{t:4,n:51,f:[{t:4,f:[{p:[7,4,168],t:7,e:"ui-display",a:{title:"Destructive Analyzer Unloaded"}}],n:50,x:{r:["data.destroy_loaded"],s:"!_0"},p:[6,3,135]},{t:4,n:51,f:[{p:[9,4,248],t:7,e:"ui-display",a:{title:"Loaded Item"},f:[{p:[10,4,285],t:7,e:"ui-section",a:{title:"Name"},f:[{t:2,r:"data.destroy_name",p:[10,29,310]}]}]}," ",{p:[12,4,367],t:7,e:"ui-display",a:{title:"Boost Nodes"},f:[{t:4,f:[{p:[14,6,438],t:7,e:"ui-section",a:{title:[{t:2,r:"name",p:[14,25,457]}," | ",{t:2,r:"value",p:[14,36,468]}]},f:[{p:[15,7,487],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["allow"],s:'_0?null:"disabled"'},p:[15,25,505]}],action:"deconstruct",params:['{"id":',{t:2,r:"id",p:[15,90,570]},"}"]},f:["Deconstruct and Boost"]}]}],n:52,r:"data.boost_paths",p:[13,5,405]}]}," ",{p:[19,4,670],t:7,e:"ui-button",a:{action:"eject_da"},f:["Eject Item"]}],x:{r:["data.destroy_loaded"],s:"!_0"}}],r:"data.destroybusy"}],n:50,r:"data.destroy_linked",p:[2,1,2]},{t:4,n:51,f:[{p:[23,2,755],t:7,e:"ui-display",a:{title:"No Linked Destructive Analyzer"}}],r:"data.destroy_linked"}]},e.exports=a.extend(r.exports)},{341:341}],445:[function(t,e,n){var a=t(341),r={exports:{} };r.exports.template={v:3,t:[{t:4,f:[{p:[3,2,24],t:7,e:"ui-display",a:{title:"No Design Disk Loaded"}}],n:50,x:{r:["data.ddisk"],s:"!_0"},p:[2,1,2]},{t:4,n:51,f:[{t:4,f:[{p:[6,3,121],t:7,e:"ui-display",a:{title:"Design Disk Updating"}}],n:50,r:"data.ddisk_update",p:[5,2,92]},{t:4,n:51,f:[{t:4,f:[{p:[9,4,221],t:7,e:"ui-display",a:{title:"Design Disk"},f:[{p:[10,5,259],t:7,e:"ui-section",a:{title:"Disk Space"},f:["Disk Capacity: ",{t:2,r:"data.ddisk_size",p:[10,51,305]}," blueprints."]}," ",{p:[11,5,355],t:7,e:"ui-section",a:{title:"Disk IO"},f:[{p:[11,33,383],t:7,e:"ui-button",a:{action:"ddisk_upall"},f:["Upload all designs"]}]}," ",{p:[12,5,464],t:7,e:"ui-section",a:{title:"Clear Disk"},f:[{p:[12,36,495],t:7,e:"ui-button",a:{action:"clear_designdisk",style:"danger"},f:["WIPE ALL DATA"]}]}," ",{p:[13,5,591],t:7,e:"ui-section",a:{title:"Eject Disk"},f:[{p:[13,36,622],t:7,e:"ui-button",a:{action:"eject_designdisk"},f:["Eject Disk"]}]}]}," ",{p:[15,4,717],t:7,e:"ui-display",a:{title:"Disk Contents"},f:[{t:4,f:[{p:[17,6,792],t:7,e:"ui-section",a:{title:"Number"},f:["#",{t:2,r:"pos",p:[17,34,820]},": ",{t:4,f:[{p:[19,8,866],t:7,e:"ui-button",a:{action:"upload_empty_ddisk_slot",params:['{"slot": "',{t:2,r:"pos",p:[19,70,928]},'"}']},f:["Upload to Empty Slot"]}],n:50,x:{r:["id"],s:'_0=="null"'},p:[18,7,837]},{t:4,n:51,f:[{p:[21,8,996],t:7,e:"ui-button",a:{action:"select_design",params:['{"id": "',{t:2,r:"id",p:[21,58,1046]},'"}'],state:[{t:2,x:{r:["data.sdesign_id","id"],s:'_0==_1?"selected":null'},p:[21,75,1063]}]},f:[{t:2,r:"name",p:[21,122,1110]}]}," ",{p:[22,8,1139],t:7,e:"ui-button",a:{action:"ddisk_erasepos",style:"danger",params:['{"id": "',{t:2,r:"id",p:[22,74,1205]},'"}'],state:[{t:2,x:{r:["id"],s:'_0=="null"?"disabled":null'},p:[22,91,1222]}]},f:["Delete Slot"]}],x:{r:["id"],s:'_0=="null"'}}]}],n:52,r:"data.ddisk_designs",p:[16,5,757]}]}],n:50,x:{r:["data.ddisk_upload"],s:"!_0"},p:[8,3,190]},{t:4,n:51,f:[{p:[28,4,1367],t:7,e:"ui-display",a:{title:"Upload Design to Disk"},f:[{p:[28,46,1409],t:7,e:"ui-section",f:["Available Designs:"]}]}," ",{t:4,f:[{p:[30,5,1513],t:7,e:"ui-section",f:[{p:[30,17,1525],t:7,e:"ui-button",a:{action:"ddisk_uploaddesign",params:['{"id": "',{t:2,r:"id",p:[30,72,1580]},'"}']},f:[{t:2,r:"name",p:[30,82,1590]}]}]}],n:52,r:"data.ddisk_possible_designs",p:[29,4,1470]}],x:{r:["data.ddisk_upload"],s:"!_0"}}],r:"data.ddisk_update"}],x:{r:["data.ddisk"],s:"!_0"}}]},e.exports=a.extend(r.exports)},{341:341}],446:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[3,2,24],t:7,e:"ui-display",a:{title:"No Technology Disk Loaded"}}],n:50,x:{r:["data.tdisk"],s:"!_0"},p:[2,1,2]},{t:4,n:51,f:[{t:4,f:[{p:[6,3,125],t:7,e:"ui-display",a:{title:"Technology Disk Updating"}}],n:50,r:"data.tdisk_update",p:[5,2,96]},{t:4,n:51,f:[{p:[8,3,198],t:7,e:"ui-display",a:{title:"Technology Disk"},f:[{p:[9,4,239],t:7,e:"ui-section",a:{title:"Disk IO"},f:[{p:[9,32,267],t:7,e:"ui-button",a:{action:"tdisk_down"},f:["Download Research to Disk"]},{p:[9,100,335],t:7,e:"ui-button",a:{action:"tdisk_up"},f:["Upload Research from Disk"]}," ",{p:[10,4,406],t:7,e:"ui-section",a:{title:"Clear Disk"},f:[{p:[10,35,437],t:7,e:"ui-button",a:{action:"clear_techdisk",style:"danger"},f:["WIPE ALL DATA"]}]}," ",{p:[11,4,530],t:7,e:"ui-section",a:{title:"Eject Disk"},f:[{p:[11,35,561],t:7,e:"ui-button",a:{action:"eject_techdisk"},f:["Eject Disk"]}]}]}]}," ",{p:[13,3,652],t:7,e:"ui-display",a:{title:"Disk Contents"},f:[{t:4,f:[{p:[15,5,723],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[15,53,771]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[15,70,788]}]},f:[{t:2,r:"display_name",p:[15,115,833]}]}],n:52,r:"data.tdisk_nodes",p:[14,4,691]}]}],r:"data.tdisk_update"}],x:{r:["data.tdisk"],s:"!_0"}}]},e.exports=a.extend(r.exports)},{341:341}],447:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,2,29],t:7,e:"ui-display",a:{title:[{t:2,r:"data.snode_name",p:[2,21,48]}]},f:[{p:[3,3,73],t:7,e:"ui-section",a:{title:"Description"},f:["Description: ",{t:2,r:"data.snode_desc",p:[3,48,118]}]}," ",{p:[4,3,154],t:7,e:"ui-section",a:{title:"Point Cost"},f:["Point Cost: ",{t:2,r:"data.snode_cost",p:[4,46,197]}]}," ",{p:[5,3,233],t:7,e:"ui-section",a:{title:"Export Price"},f:["Export Price: ",{t:2,r:"data.snode_export",p:[5,50,280]}]}," ",{p:[6,3,318],t:7,e:"ui-button",a:{action:"research_node",params:['{"id"="',{t:2,r:"id",p:[6,52,367]},'"}'],state:[{t:2,x:{r:["data.snode_researched"],s:'_0?"disabled":null'},p:[6,69,384]}]},f:[{t:2,x:{r:["data.snode_researched"],s:'_0?"Researched":"Research Node"'},p:[6,115,430]}]}]}," ",{p:[8,2,518],t:7,e:"ui-display",a:{title:"Prerequisites"},f:[{t:4,f:[{p:[10,4,588],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[10,52,636]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[10,69,653]}]},f:[{t:2,r:"display_name",p:[10,114,698]}]}],n:52,r:"data.node_prereqs",p:[9,3,556]}]}," ",{p:[13,2,759],t:7,e:"ui-display",a:{title:"Unlocks"},f:[{t:4,f:[{p:[15,4,823],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[15,52,871]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[15,69,888]}]},f:[{t:2,r:"display_name",p:[15,114,933]}]}],n:52,r:"data.node_unlocks",p:[14,3,791]}]}," ",{p:[18,2,994],t:7,e:"ui-display",a:{title:"Designs"},f:[{t:4,f:[{p:[20,4,1058],t:7,e:"ui-button",a:{action:"select_design",params:['{"id": "',{t:2,r:"id",p:[20,54,1108]},'"}'],state:[{t:2,x:{r:["data.sdesign_id","id"],s:'_0==_1?"selected":null'},p:[20,71,1125]}]},f:[{t:2,r:"name",p:[20,118,1172]}]}],n:52,r:"data.node_designs",p:[19,3,1026]}]}],n:50,r:"data.node_selected",p:[1,1,0]},{t:4,f:[{p:[25,2,1263],t:7,e:"ui-display",a:{title:"No Node Selected."}}],n:50,x:{r:["data.node_selected"],s:"!_0"},p:[24,1,1233]}]},e.exports=a.extend(r.exports)},{341:341}],448:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{t:4,f:[{p:[3,3,59],t:7,e:"ui-display",a:{title:"Protolathe Busy!"}}],n:50,r:"data.protobusy",p:[2,2,33]},{t:4,n:51,f:[{p:[5,3,124],t:7,e:"ui-display",f:[{p:[6,4,141],t:7,e:"ui-section",f:["Search Available Designs: ",{p:[7,4,183],t:7,e:"input",a:{value:[{t:2,r:"textsearch",p:[7,17,196]}],placeholder:"Type Here","class":"text"}}," ",{p:[8,5,255],t:7,e:"ui-button",a:{action:"textSearch",params:['{"latheType" : "proto", "inputText" : ',{t:2,r:"textsearch",p:[8,82,332]},"}"]},f:["Search"]}]}," ",{p:[10,4,390],t:7,e:"ui-section",f:["Materials: ",{t:2,r:"data.protomats",p:[10,27,413]}," / ",{t:2,r:"data.protomaxmats",p:[10,48,434]}]}," ",{p:[11,4,473],t:7,e:"ui-section",f:["Reagents: ",{t:2,r:"data.protochems",p:[11,26,495]}," / ",{t:2,r:"data.protomaxchems",p:[11,48,517]}]}," ",{p:[12,3,556],t:7,e:"ui-display",f:[{p:[14,3,574],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.lathe_tabs",p:[14,18,589]}]},f:[{p:[15,4,615],t:7,e:"tab",a:{name:"Category List"},f:[{t:4,f:[{p:[17,6,678],t:7,e:"ui-button",a:{action:"switchcat",state:[{t:2,x:{r:["data.protocat","name"],s:'_0==_1?"selected":null'},p:[17,43,715]}],params:['{"type" : "proto", "cat" : "',{t:2,r:"name",p:[17,125,797]},'"}']},f:[{t:2,r:"name",p:[17,137,809]}]}],n:52,r:"data.protocats",p:[16,5,647]}]}," ",{p:[20,4,860],t:7,e:"tab",a:{name:"Selected Category"},f:[{t:4,f:[{p:[22,6,926],t:7,e:"ui-section",f:[{t:2,r:"name",p:[22,18,938]},{t:2,r:"matstring",p:[22,26,946]}," ",{t:4,f:[{p:[24,8,996],t:7,e:"input",a:{value:[{t:2,r:"number",p:[24,21,1009]}],placeholder:["1-",{t:2,x:{r:["canprint"],s:"_0>10?10:_0"},p:[24,47,1035]}],"class":"number"}}],n:50,x:{r:["canprint"],s:"_0>1"},p:[23,7,967]}," ",{p:[26,7,1108],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[26,40,1141]}],params:['{"latheType" : "proto", "id" : "',{t:2,r:"id",p:[26,117,1218]},'", "amount" : "',{t:2,r:"number",p:[26,138,1239]},'"}']},f:["Print"]}]}],n:52,r:"data.protodes",p:[21,5,896]}]}," ",{p:[30,4,1321],t:7,e:"tab",a:{name:"Search Results"},f:[{t:4,f:[{p:[32,6,1386],t:7,e:"ui-section",f:[{t:2,r:"name",p:[32,18,1398]},{t:2,r:"matstring",p:[32,26,1406]}," ",{t:4,f:[{p:[34,8,1456],t:7,e:"input",a:{value:[{t:2,r:"number",p:[34,21,1469]}],placeholder:["1-",{t:2,x:{r:["canprint"],s:"_0>10?10:_0"},p:[34,47,1495]}],"class":"number"}}],n:50,x:{r:["canprint"],s:"_0>1"},p:[33,7,1427]}," ",{p:[36,7,1568],t:7,e:"ui-button",a:{action:"print",state:[{t:2,x:{r:["canprint"],s:'_0>1?null:"disabled"'},p:[36,40,1601]}],params:['{"latheType" : "proto", "id" : "',{t:2,r:"id",p:[36,117,1678]},'", "amount" : "',{t:2,r:"number",p:[36,138,1699]},'"}']},f:["Print"]}]}],n:52,r:"data.protomatch",p:[31,5,1354]}]}," ",{p:[40,4,1781],t:7,e:"tab",a:{name:"Materials"},f:[{t:4,f:[{p:[42,6,1844],t:7,e:"ui-section",f:[{t:2,r:"name",p:[42,18,1856]}," : ",{t:2,r:"amount",p:[42,29,1867]}," cm3 - ",{t:4,f:[{p:[44,7,1917],t:7,e:"input",a:{value:[{t:2,r:"number",p:[44,20,1930]}],placeholder:["1-",{t:2,r:"sheets",p:[44,46,1956]}],"class":"number"}}," ",{p:[45,7,1992],t:7,e:"ui-button",a:{action:"releasemats",params:['{"latheType" : "proto", "mat_id" : ',{t:2,r:"mat_id",p:[45,82,2067]},', "sheets" : ',{t:2,r:"number",p:[45,105,2090]},"}"]},f:["Release"]}],n:50,x:{r:["sheets"],s:"_0>0"},p:[43,6,1891]}]}],n:52,r:"data.protomat_list",p:[41,5,1809]}]}," ",{p:[50,4,2187],t:7,e:"tab",a:{name:"Chemicals"},f:[{t:4,f:[{p:[52,6,2251],t:7,e:"ui-section",f:[{t:2,r:"name",p:[52,18,2263]}," : ",{t:2,r:"amount",p:[52,29,2274]}," - ",{p:[53,7,2295],t:7,e:"ui-button",a:{action:"purgechem",params:['{"latheType" : "proto", "name" : ',{t:2,r:"name",p:[53,78,2366]},', "id" : ',{t:2,r:"reagentid",p:[53,95,2383]},"}"]},f:["Purge"]}]}],n:52,r:"data.protochem_list",p:[51,5,2215]}]}]}]}]}],r:"data.protobusy"}],n:50,r:"data.protolathe_linked",p:[1,1,0]},{t:4,n:51,f:[{p:[61,2,2504],t:7,e:"ui-display",a:{title:"No Linked Protolathe"}}],r:"data.protolathe_linked"}]},e.exports=a.extend(r.exports)},{341:341}],449:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,1,14],t:7,e:"span",a:{"class":"memoedit"},f:["Nanotrasen R&D Console"]},{p:[2,53,66],t:7,e:"br"}," Available Points: ",{p:[3,19,91],t:7,e:"ui-section",a:{title:"Research Points"},f:[{t:2,r:"data.research_points_stored",p:[3,55,127]}]}," ",{p:[4,1,173],t:7,e:"ui-section",a:{title:["Page Selection - ",{t:2,r:"page",p:[4,37,209]}]},f:[{p:[4,47,219],t:7,e:"input",a:{value:[{t:2,r:"pageselect",p:[4,60,232]}],placeholder:"1","class":"number"}}," Select Page: ",{p:[5,14,294],t:7,e:"ui-button",a:{action:"page",params:['{"num" : "',{t:2,r:"pageselect",p:[5,57,337]},'"}']},f:["[Go]"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],450:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"span",a:{"class":"bad"},f:["Settings"]},{p:[1,34,33],t:7,e:"br"},{p:[1,39,38],t:7,e:"br"}," ",{p:[2,1,45],t:7,e:"ui-button",a:{action:"Resync"},f:["RESYNC MACHINERY"]},{p:[2,56,100],t:7,e:"br"}," ",{p:[3,1,107],t:7,e:"ui-button",a:{action:"Lock"},f:["LOCK"]}," ",{p:[4,1,150],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "destroy"}',state:[{t:2,x:{r:["data.destroy_linked"],s:'_0?null:"disabled"'},p:[4,71,220]}]},f:["Disconnect Destructive Analyzer"]}," ",{p:[5,1,309],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "lathe"}',state:[{t:2,x:{r:["data.protolathe_linked"],s:'_0?null:"disabled"'},p:[5,69,377]}]},f:["Disconnect Protolathe"]}," ",{p:[6,1,459],t:7,e:"ui-button",a:{action:"disconnect",params:'{"type" : "imprinter"}',state:[{t:2,x:{r:["data.circuit_linked"],s:'_0?null:"disabled"'},p:[6,73,531]}]},f:["Disconnect Circuit Imprinter"]}]},e.exports=a.extend(r.exports)},{341:341}],451:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Available for Research"},f:[{t:4,f:[{p:[3,3,78],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[3,51,126]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[3,68,143]}]},f:[{t:2,r:"display_name",p:[3,113,188]}]}],n:52,r:"data.techweb_avail",p:[2,2,46]}]}," ",{p:[6,1,245],t:7,e:"ui-display",a:{title:"Locked Nodes"},f:[{t:4,f:[{p:[8,3,314],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[8,51,362]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[8,68,379]}]},f:[{t:2,r:"display_name",p:[8,113,424]}]}],n:52,r:"data.techweb_locked",p:[7,2,281]}]}," ",{p:[11,1,482],t:7,e:"ui-display",a:{title:"Researched Nodes"},f:[{t:4,f:[{p:[13,3,559],t:7,e:"ui-button",a:{action:"select_node",params:['{"id": "',{t:2,r:"id",p:[13,51,607]},'"}'],state:[{t:2,x:{r:["data.snode_id","id"],s:'_0==_1?"selected":null'},p:[13,68,624]}]},f:[{t:2,r:"display_name",p:[13,113,669]}]}],n:52,r:"data.techweb_researched",p:[12,2,522]}]}]},e.exports=a.extend(r.exports)},{341:341}],452:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,1,25],t:7,e:"ui-notice",f:[{p:[3,3,40],t:7,e:"span",f:["The grinder is currently processing and cannot be used."]}]}],n:50,r:"data.processing",p:[1,1,0]},{p:{button:[{p:[8,5,208],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[8,36,239]}],action:"eject"},f:["Eject Contents"]}]},t:7,e:"ui-display",a:{title:"Processing Chamber",button:0},f:[" ",{p:[10,3,364],t:7,e:"ui-section",a:{label:"Grinding"},f:[{p:[11,5,399],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.operating"],s:'_0?"average":"good"'},p:[11,18,412]}]},f:[{t:2,x:{r:["data.operating"],s:'_0?"Busy":"Ready"'},p:[11,59,453]}]}," ",{p:[12,2,500],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.operating","data.contents"],s:'(_0==0)&&_1?null:"disabled"'},p:[12,35,533]}],action:"grind"},f:["Activate"]}]}," ",{p:[14,3,653],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[17,9,755],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:["The ",{t:2,r:"name",p:[17,56,802]}]},{p:[17,71,817],t:7,e:"br"}],n:52,r:"adata.contentslist",p:[16,7,717]},{t:4,n:51,f:[{p:[19,9,848],t:7,e:"span",f:["No Contents"]}],r:"adata.contentslist"}],n:50,r:"data.contents",p:[15,5,688]},{t:4,n:51,f:[{p:[22,7,911],t:7,e:"span",f:["No Contents"]}],r:"data.contents"}]}]}," ",{p:{button:[{p:[28,5,1047],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.operating","data.isBeakerLoaded"],s:'(_0==0)&&_1?null:"disabled"'},p:[28,36,1078]}],action:"detach"},f:["Detach"]}]},t:7,e:"ui-display",a:{title:"Container",button:0},f:[" ",{p:[30,3,1202],t:7,e:"ui-section",a:{label:"Reagents"},f:[{t:4,f:[{p:[32,7,1272],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[32,13,1278]},"/",{t:2,r:"data.beakerMaxVolume",p:[32,55,1320]}," Units"]}," ",{p:[33,7,1365],t:7,e:"br"}," ",{t:4,f:[{p:[35,9,1418],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[35,52,1461]}," units of ",{t:2,r:"name",p:[35,87,1496]}]},{p:[35,102,1511],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[34,7,1378]},{t:4,n:51,f:[{p:[37,9,1542],t:7,e:"span",a:{"class":"bad"},f:["Container Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[31,5,1237]},{t:4,n:51,f:[{p:[40,7,1621],t:7,e:"span",a:{"class":"average"},f:["No Container"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],453:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Direction"},f:[{t:4,f:[{p:[3,3,64],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,5,105],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[5,23,123]}],action:"setdir",params:['{"dir": ',{t:2,r:"dir",p:[6,22,195]},', "flipped": ',{t:2,r:"flipped",p:[6,42,215]},"}"]},f:[{p:[6,56,229],t:7,e:"span",a:{"class":["pipes32x32 ",{t:2,r:"dir",p:[6,80,253]},"-",{t:2,r:"icon_state",p:[6,88,261]}],title:[{t:2,r:"dir_name",p:[6,111,284]}]}}]}],n:52,r:"previews",p:[4,4,81]}]}],n:52,r:"data.preview_rows",p:[2,2,33]}]}," ",{t:4,f:[{p:[12,2,406],t:7,e:"ui-display",a:{title:"Color"},f:[{t:4,f:[{p:[14,4,468],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["@key","data.selected_color"],s:'_0==_1?"selected":null'},p:[14,22,486]}],action:"color",params:['{"paint_color": ',{t:2,r:"@key",p:[15,44,583]},"}"]},f:[{t:2,r:"@key",p:[15,55,594]}]}],n:52,r:"data.paint_colors",p:[13,3,436]}]}],n:50,x:{r:["data.category"],s:"_0==0"},p:[11,1,377]},{p:[19,1,654],t:7,e:"ui-display",a:{title:"Utilities"},f:[{p:[20,2,687],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0&1?"check-square-o":"square-o"'},p:[20,19,704]}],action:"mode",params:'{"mode": 1}'},f:["Build"]}," ",{p:[22,2,813],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0&2?"check-square-o":"square-o"'},p:[22,19,830]}],action:"mode",params:'{"mode": 2}'},f:["Wrench"]}," ",{p:[24,2,940],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0&4?"check-square-o":"square-o"'},p:[24,19,957]}],action:"mode",params:'{"mode": 4}'},f:["Destroy"]}," ",{t:4,f:[{p:[27,3,1098],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0&8?"check-square-o":"square-o"'},p:[27,20,1115]}],action:"mode",params:'{"mode": 8}'},f:["Paint"]}],n:50,x:{r:["data.category"],s:"_0==0"},p:[26,2,1068]}]}," ",{p:[31,1,1249],t:7,e:"ui-display",a:{title:"Category"},f:[{p:[32,2,1281],t:7,e:"ui-section",f:[{p:[33,3,1297],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.category"],s:'_0==0?"check-square-o":"square-o"'},p:[33,20,1314]}],state:[{t:2,x:{r:["data.category"],s:'_0<=0?"selected":null'},p:[33,83,1377]}],action:"category",params:'{"category": 0}'},f:["Atmospherics"]}," ",{p:[35,3,1496],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.category"],s:'_0==1?"check-square-o":"square-o"'},p:[35,20,1513]}],state:[{t:2,x:{r:["data.category"],s:'_0==1?"selected":null'},p:[35,83,1576]}],action:"category",params:'{"category": 1}'},f:["Disposals"]}," ",{p:[37,3,1692],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.category"],s:'_0==2?"check-square-o":"square-o"'},p:[37,20,1709]}],state:[{t:2,x:{r:["data.category"],s:'_0==2?"selected":null'},p:[37,83,1772]}],action:"category",params:'{"category": 2}'},f:["Transit Tubes"]}]}," ",{t:4,f:[{p:[41,3,1937],t:7,e:"ui-section",a:{label:"Piping Layer"},f:[{p:[42,4,1975],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==1?"selected":null'},p:[42,22,1993]}],action:"piping_layer",params:'{"piping_layer": 1}'},f:["1"]}," ",{p:[44,4,2115],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==2?"selected":null'},p:[44,22,2133]}],action:"piping_layer",params:'{"piping_layer": 2}'},f:["2"]}," ",{p:[46,4,2255],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.piping_layer"],s:'_0==3?"selected":null'},p:[46,22,2273]}],action:"piping_layer",params:'{"piping_layer": 3}'},f:["3"]}]}],n:50,x:{r:["data.category"],s:"_0==0"},p:[40,2,1907]}]}," ",{t:4,f:[{p:[52,2,2462],t:7,e:"ui-display",a:{title:[{t:2,r:"cat_name",p:[52,21,2481]}]},f:[{t:4,f:[{p:[54,4,2521],t:7,e:"ui-section",f:[{p:[55,5,2539],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[55,23,2557]}],action:"pipe_type",params:['{"pipe_type": ',{t:2,r:"pipe_index",p:[56,28,2638]},', "category": ',{t:2,r:"cat_name",p:[56,56,2666]},"}"]},f:[{t:2,r:"pipe_name",p:[56,71,2681]}]}]}],n:52,r:"recipes",p:[53,3,2499]}]}],n:52,r:"data.categories",p:[51,1,2434]}]},e.exports=a.extend(r.exports)},{341:341}],454:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Color"},f:[{t:4,f:[{p:[3,3,60],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[3,21,78]}],action:"color",params:['{"paint_color": ',{t:2,r:"color_name",p:[4,28,155]},"}"]},f:[{t:2,r:"color_name",p:[4,45,172]}]}],n:52,r:"data.paint_colors",p:[2,2,29]}]}]},e.exports=a.extend(r.exports)},{341:341}],455:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Direction"},f:[{t:4,f:[{p:[3,3,64],t:7,e:"ui-section",f:[{t:4,f:[{p:[5,5,105],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["selected"],s:'_0?"selected":null'},p:[5,23,123]}],action:"setdir",params:['{"dir": ',{t:2,r:"dir",p:[6,22,195]},', "flipped": ',{t:2,r:"flipped",p:[6,42,215]},"}"]},f:[{p:[6,56,229],t:7,e:"img",a:{src:["pipe.",{t:2,r:"dir",p:[6,71,244]},".",{t:2,r:"icon_state",p:[6,79,252]},".png"],title:[{t:2,r:"dir_name",p:[6,106,279]}]}}]}],n:52,r:"previews",p:[4,4,81]}]}],n:52,r:"data.preview_rows",p:[2,2,33]}]}]},e.exports=a.extend(r.exports)},{341:341}],456:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,23],t:7,e:"ui-notice",f:[{t:2,r:"data.notice",p:[3,5,40]}]}],n:50,r:"data.notice",p:[1,1,0]},{p:[6,1,82],t:7,e:"ui-display",a:{title:"Satellite Network Control",button:0},f:[{t:4,f:[{p:[8,4,168],t:7,e:"ui-section",a:{candystripe:0,nowrap:0},f:[{p:[9,9,209],t:7,e:"div",a:{"class":"content"},f:["#",{t:2,r:"id",p:[9,31,231]}]}," ",{p:[10,9,253],t:7,e:"div",a:{"class":"content"},f:[{t:2,r:"mode",p:[10,30,274]}]}," ",{p:[11,9,298],t:7,e:"div",a:{"class":"content"},f:[{p:[12,11,331],t:7,e:"ui-button",a:{action:"toggle",params:['{"id": "',{t:2,r:"id",p:[12,54,374]},'"}']},f:[{t:2,x:{r:["active"],s:'_0?"Deactivate":"Activate"'},p:[12,64,384]}]}]}]}],n:52,r:"data.satellites",p:[7,2,138]}]}," ",{t:4,f:[{p:[18,1,528],t:7,e:"ui-display",a:{title:"Station Shield Coverage"},f:[{p:[19,3,576],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.meteor_shield_coverage_max",p:[19,24,597]}],value:[{t:2,r:"data.meteor_shield_coverage",p:[19,68,641]}]},f:[{t:2,x:{r:["data.meteor_shield_coverage","data.meteor_shield_coverage_max"],s:"100*_0/_1"},p:[19,101,674]}," %"]}," ",{p:[20,1,758],t:7,e:"ui-display",f:[]}]}],n:50,r:"data.meteor_shield",p:[17,1,500]}]},e.exports=a.extend(r.exports)},{341:341}],457:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,26],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["enabled"],s:'_0?"check-square-o":"square-o"'},p:[2,20,43]}],style:[{t:2,x:{r:["enabled"],s:'_0?"selected":null'},p:[2,72,95]}],action:"toggle_filter",params:['{"id_tag": "',{t:2,r:"id_tag",p:[3,48,176]},'", "val": ',{t:2,r:"gas_id",p:[3,68,196]},"}"]},f:[{t:2,r:"gas_name",p:[3,81,209]}]}],n:52,r:"filter_types",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{341:341}],458:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[" "," "," ",{p:[5,1,200],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.tabs",p:[5,16,215]}]},f:[{p:[6,2,233],t:7,e:"tab",a:{name:"Status"},f:[{p:[7,3,256],t:7,e:"status"}]}," ",{p:[9,2,277],t:7,e:"tab",a:{name:"Templates"},f:[{p:[10,3,303],t:7,e:"templates"}]}," ",{p:[12,2,327],t:7,e:"tab",a:{name:"Modification"},f:[{t:4,f:[{p:[14,3,381],t:7,e:"modification"}],n:50,r:"data.selected",p:[13,3,356]}," ",{t:4,f:[{p:[17,3,437],t:7,e:"span",a:{"class":"bad"},f:["No shuttle selected."]}],n:50,x:{r:["data.selected"],s:"!_0"},p:[16,3,411]}]}]}]},r.exports.components=r.exports.components||{};var i={modification:t(459),templates:t(461),status:t(460)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{341:341,459:459,460:460,461:461}],459:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:["Selected: ",{t:2,r:"data.selected.name",p:[1,30,29]}]},f:[{t:4,f:[{p:[3,5,96],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"data.selected.description",p:[3,37,128]}]}],n:50,r:"data.selected.description",p:[2,3,57]}," ",{t:4,f:[{p:[6,5,224],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"data.selected.admin_notes",p:[6,37,256]}]}],n:50,r:"data.selected.admin_notes",p:[5,3,185]}]}," ",{t:4,f:[{p:[11,3,361],t:7,e:"ui-display",a:{title:["Existing Shuttle: ",{t:2,r:"data.existing_shuttle.name",p:[11,40,398]}]},f:["Status: ",{t:2,r:"data.existing_shuttle.status",p:[12,13,444]}," ",{t:4,f:["(",{t:2,r:"data.existing_shuttle.timeleft",p:[14,8,526]},")"],n:50,r:"data.existing_shuttle.timer",p:[13,5,482]}," ",{p:[16,5,580],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"data.existing_shuttle.id",p:[17,41,649]},'"}']},f:["Jump To"]}]}],n:50,r:"data.existing_shuttle",p:[10,1,328]},{t:4,f:[{p:[24,3,778],t:7,e:"ui-display",a:{title:"Existing Shuttle: None"}}],n:50,x:{r:["data.existing_shuttle"],s:"!_0"},p:[23,1,744]},{p:[27,1,847],t:7,e:"ui-button",a:{action:"preview",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[28,27,902]},'"}']},f:["Preview"]}," ",{p:[31,1,961],t:7,e:"ui-button",a:{action:"load",params:['{"shuttle_id": "',{t:2,r:"data.selected.shuttle_id",p:[32,27,1013]},'"}'],style:"danger"},f:["Load"]}," ",{p:[37,1,1089],t:7,e:"ui-display",a:{title:"Status"},f:[]}]},e.exports=a.extend(r.exports)},{341:341}],460:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"table",a:{width:"100%"},f:[{t:4,f:[{p:[3,3,49],t:7,e:"tr",f:[{p:[4,5,59],t:7,e:"td",f:[{p:[5,7,71],t:7,e:"ui-button",a:{action:"jump_to",params:['{"type": "mobile", "id": "',{t:2,r:"id",p:[5,69,133]},'"}']},f:["JMP"]}]}," ",{p:[9,5,193],t:7,e:"td",f:[{p:[10,7,205],t:7,e:"ui-button",a:{action:"fly",params:['{"id": "',{t:2,r:"id",p:[10,47,245]},'"}'],state:[{t:2,x:{r:["can_fly"],s:'_0?null:"disabled"'},p:[10,64,262]}]},f:["Fly"]}]}," ",{p:[14,5,345],t:7,e:"td",f:[{t:2,r:"name",p:[15,7,357]}," (",{p:[15,17,367],t:7,e:"code",f:[{t:2,r:"id",p:[15,23,373]}]},")"]}," ",{p:[17,5,404],t:7,e:"td",f:[{t:2,r:"status",p:[18,7,416]}]}," ",{p:[20,5,443],t:7,e:"td",f:[{t:4,f:[{t:2,r:"mode",p:[22,9,477]}],n:50,r:"mode",p:[21,7,455]}," ",{t:4,f:["(",{t:2,r:"timeleft",p:[25,10,532]},") ",{p:[26,9,555],t:7,e:"ui-button",a:{action:"fast_travel",params:['{"id": "',{t:2,r:"id",p:[26,57,603]},'"}'],state:[{t:2,x:{r:["can_fast_travel"],s:'_0?null:"disabled"'},p:[26,74,620]}]},f:["Fast Travel"]}],n:50,r:"timer",p:[24,7,508]}]}]}],n:52,r:"data.shuttles",p:[2,1,22]}]}]},e.exports=a.extend(r.exports)},{341:341}],461:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-tabs",a:{tabs:[{t:2,r:"data.templates_tabs",p:[1,16,15]}]},f:[{t:4,f:[{p:[3,5,74],t:7,e:"tab",a:{name:[{t:2,r:"port_id",p:[3,16,85]}]},f:[{t:4,f:[{p:[5,9,135],t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[5,28,154]}]},f:[{t:4,f:[{p:[7,13,209],t:7,e:"ui-section",a:{label:"Description"},f:[{t:2,r:"description",p:[7,45,241]}]}],n:50,r:"description",p:[6,11,176]}," ",{t:4,f:[{p:[10,13,333],t:7,e:"ui-section",a:{label:"Admin Notes"},f:[{t:2,r:"admin_notes",p:[10,45,365]}]}],n:50,r:"admin_notes",p:[9,11,300]}," ",{p:[13,11,426],t:7,e:"ui-button",a:{action:"select_template",params:['{"shuttle_id": "',{t:2,r:"shuttle_id",p:[14,37,499]},'"}'],state:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"selected":null'},p:[15,20,537]}]},f:[{t:2,x:{r:["data.selected.shuttle_id","shuttle_id"],s:'_0==_1?"Selected":"Select"'},p:[17,13,630]}]}]}],n:52,r:"templates",p:[4,7,106]}]}],n:52,r:"data.templates",p:[2,3,44]}]}]},e.exports=a.extend(r.exports)},{341:341}],462:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[2,3,33],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[3,3,66],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[3,9,72]}]}]}," ",{t:4,f:[{p:[6,5,186],t:7,e:"ui-section",a:{label:"State"},f:[{p:[7,7,220],t:7,e:"span",a:{"class":[{t:2,r:"data.occupant.statstate",p:[7,20,233]}]},f:[{t:2,r:"data.occupant.stat",p:[7,49,262]}]}]}," ",{p:[9,5,315],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[10,7,350],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[10,20,363]}],max:[{t:2,r:"data.occupant.maxHealth",p:[10,54,397]}],value:[{t:2,r:"data.occupant.health",p:[10,90,433]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[11,16,475]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[11,68,527]}]}]}," ",{t:4,f:[{p:[14,7,764],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[14,26,783]}]},f:[{p:[15,9,804],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[15,30,825]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[15,66,861]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[15,103,898]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[13,5,598]}," ",{t:4,f:[{p:[19,7,1020],t:7,e:"ui-section",a:{label:"Blood"},f:[{p:[20,9,1056],t:7,e:"ui-section",a:{label:"Volume"},f:[{p:[21,11,1095],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.blood.maxBloodVolume",p:[21,32,1116]}],value:[{t:2,r:"data.occupant.blood.currentBloodVolume",p:[21,79,1163]}],state:[{t:2,x:{r:["data.occupant.blood.currentBloodVolume","data.occupant.blood.dangerBloodVolume"],s:'_0<=_1?"bad":"good"'},p:[21,130,1214]}]},f:[{t:3,x:{r:["data.occupant.blood.currentBloodVolume","data.occupant.blood.dangerBloodVolume"],s:'_0<=_1?"LOW":"OK"'},p:[21,232,1316]}," - ",{t:2,x:{r:["data.occupant.blood.currentBloodVolume"],s:"Math.round(_0)"},p:[21,342,1426]}," cl"]}]}," ",{p:[23,9,1525],t:7,e:"ui-section",a:{label:"Type"},f:[{p:[24,11,1562],t:7,e:"span",a:{"class":"highlight"},f:[{t:2,r:"data.occupant.blood.bloodType",p:[24,35,1586]}]}]}]}],n:50,r:"data.occupant.blood",p:[18,5,985]}," ",{p:[28,5,1689],t:7,e:"ui-section",a:{label:"Cells"},f:[{p:[29,9,1725],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"bad":"good"'},p:[29,22,1738]}]},f:[{t:2,x:{r:["data.occupant.cloneLoss"],s:'_0?"Damaged":"Healthy"'},p:[29,68,1784]}]}]}," ",{p:[31,5,1867],t:7,e:"ui-section",a:{label:"Brain"},f:[{p:[32,9,1903],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"bad":"good"'},p:[32,22,1916]}]},f:[{t:2,x:{r:["data.occupant.brainLoss"],s:'_0?"Abnormal":"Healthy"'},p:[32,68,1962]}]}]}," ",{p:[34,5,2046],t:7,e:"ui-section",a:{label:"Bloodstream"},f:[{t:4,f:[{p:[36,11,2133],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,1)"},p:[36,54,2176]}," units of ",{t:2,r:"name",p:[36,89,2211]}]},{p:[36,104,2226],t:7,e:"br"}],n:52,r:"adata.occupant.reagents",p:[35,9,2088]},{t:4,n:51,f:[{p:[38,11,2261],t:7,e:"span",a:{"class":"good"},f:["Pure"]}],r:"adata.occupant.reagents"}]}],n:50,r:"data.occupied",p:[5,3,159]}]}," ",{p:[43,1,2357],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[44,2,2389],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[45,5,2420],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"unlock":"lock"'},p:[45,22,2437]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Open":"Closed"'},p:[45,71,2486]}]}]}," ",{p:[47,3,2551],t:7,e:"ui-section",a:{label:"Inject"},f:[{t:4,f:[{p:[49,7,2612],t:7,e:"ui-button",a:{icon:"flask",state:[{t:2,x:{r:["data.occupied","allowed"],s:'_0&&_1?null:"disabled"'},p:[49,38,2643]}],action:"inject",params:['{"chem": "',{t:2,r:"id",p:[49,122,2727]},'"}']},f:[{t:2,r:"name",p:[49,132,2737]}]},{p:[49,152,2757],t:7,e:"br"}],n:52,r:"data.chems",p:[48,5,2584]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],463:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,25],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[2,22,44]}],labelcolor:[{t:2,r:"htmlcolor",p:[2,44,66]}],candystripe:0,right:0},f:[{p:[3,5,105],t:7,e:"ui-section",a:{label:"Status"},f:[{p:[3,32,132],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0=="Dead"?"bad bold":_0=="Unconscious"?"average bold":"good"'},p:[3,45,145]}]},f:[{t:2,r:"status",p:[3,132,232]}]}]}," ",{p:[4,5,268],t:7,e:"ui-section",a:{label:"Jelly"},f:[{t:2,r:"exoticblood",p:[4,31,294]}]}," ",{p:[5,5,328],t:7,e:"ui-section",a:{label:"Location"},f:[{t:2,r:"area",p:[5,34,357]}]}," ",{p:[7,5,386],t:7,e:"ui-button",a:{state:[{t:2,r:"swap_button_state",p:[8,14,411]}],action:"swap",params:['{"ref": "',{t:2,r:"ref",p:[9,38,472]},'"}']},f:[{t:4,f:["You Are Here"],n:50,x:{r:["occupied"],s:'_0=="owner"'},p:[10,7,491]},{t:4,n:51,f:[{t:4, f:["Occupied"],n:50,x:{r:["occupied"],s:'_0=="stranger"'},p:[13,9,566]},{t:4,n:51,f:["Swap"],x:{r:["occupied"],s:'_0=="stranger"'}}],x:{r:["occupied"],s:'_0=="owner"'}}]}]}],n:52,r:"data.bodies",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{341:341}],464:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,23,82],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.drying"],s:'_0?"stop":"tint"'},p:[4,40,99]}],action:"Dry"},f:[{t:2,x:{r:["data.drying"],s:'_0?"Stop drying":"Dry"'},p:[4,88,147]}]}],n:50,r:"data.isdryer",p:[4,3,62]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[7,3,258],t:7,e:"ui-notice",f:[{p:[8,5,275],t:7,e:"span",f:["Unfortunately, this ",{t:2,r:"data.name",p:[8,31,301]}," is empty."]}]}],n:50,x:{r:["data.contents.length"],s:"_0==0"},p:[6,1,221]},{t:4,n:51,f:[{p:[11,1,359],t:7,e:"div",a:{"class":"display tabular"},f:[{p:[12,2,391],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[13,4,425],t:7,e:"section",a:{"class":"cell bold"},f:["Item"]}," ",{p:[16,4,482],t:7,e:"section",a:{"class":"cell bold"},f:["Quantity"]}," ",{p:[19,4,543],t:7,e:"section",a:{"class":"cell bold",align:"center"},f:[{t:4,f:[{t:2,r:"data.verb",p:[20,22,608]}],n:50,r:"data.verb",p:[20,5,591]},{t:4,n:51,f:["Dispense"],r:"data.verb"}]}]}," ",{t:4,f:[{p:[24,3,703],t:7,e:"section",a:{"class":"candystripe"},f:[{p:[25,4,737],t:7,e:"section",a:{"class":"cell"},f:[{t:2,r:"name",p:[26,5,765]}]}," ",{p:[28,4,793],t:7,e:"section",a:{"class":"cell",align:"right"},f:[{t:2,r:"amount",p:[29,5,835]}]}," ",{p:[31,4,865],t:7,e:"section",a:{"class":"table",alight:"right"},f:[{p:[32,5,909],t:7,e:"section",a:{"class":"cell"}}," ",{p:[33,5,947],t:7,e:"section",a:{"class":"cell"},f:[{p:[34,6,976],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>=1)?null:"disabled"'},p:[34,45,1015]}],params:['{ "name" : ',{t:2,r:"name",p:[34,102,1072]},', "amount" : 1 }']},f:["One"]}]}," ",{p:[38,5,1151],t:7,e:"section",a:{"class":"cell"},f:[{p:[39,6,1180],t:7,e:"ui-button",a:{grid:0,action:"Release",state:[{t:2,x:{r:["amount"],s:'(_0>1)?null:"disabled"'},p:[39,45,1219]}],params:['{ "name" : ',{t:2,r:"name",p:[39,101,1275]}," }"]},f:["Many"]}]}]}]}],n:52,r:"data.contents",p:[23,2,676]}]}],x:{r:["data.contents.length"],s:"_0==0"}}]}]},e.exports=a.extend(r.exports)},{341:341}],465:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{capacityPercentState:function(){var t=this.get("data.capacityPercent");return t>50?"good":t>15?"average":"bad"},inputState:function(){return this.get("data.capacityPercent")>=100?"good":this.get("data.inputting")?"average":"bad"},outputState:function(){return this.get("data.outputting")?"good":this.get("data.charge")>0?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[24,1,663],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[25,3,695],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[26,5,735],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[26,38,768]}],state:[{t:2,r:"capacityPercentState",p:[26,71,801]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[26,97,827]},"%"]}]}]}," ",{p:[29,1,908],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[30,3,938],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[31,5,976],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[31,22,993]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[31,74,1045]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[32,25,1113]}]},"   [",{p:[34,6,1182],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[34,19,1195]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[34,35,1211]}]},"]"]}," ",{p:[36,3,1335],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[37,5,1374],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[37,26,1395]}],value:[{t:2,r:"data.inputLevel",p:[37,57,1426]}]},f:[{t:2,r:"adata.inputLevel_text",p:[37,78,1447]}]}]}," ",{p:[39,3,1501],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[40,5,1540],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,44,1579]}],action:"input",params:'{"target": "min"}'}}," ",{p:[41,5,1674],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[41,39,1708]}],action:"input",params:'{"adjust": -10000}'}}," ",{p:[42,5,1804],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"target": "input"}'},f:["Set"]}," ",{p:[43,5,1894],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,38,1927]}],action:"input",params:'{"adjust": 10000}'}}," ",{p:[44,5,2039],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[44,43,2077]}],action:"input",params:'{"target": "max"}'}}]}," ",{p:[46,3,2204],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[47,3,2238],t:7,e:"span",f:[{t:2,r:"adata.inputAvailable",p:[47,9,2244]}]}]}]}," ",{p:[50,1,2308],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[51,3,2339],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[52,5,2377],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[52,22,2394]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[52,77,2449]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[53,26,2519]}]},"   [",{p:[55,6,2587],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[55,19,2600]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[55,36,2617]}]},"]"]}," ",{p:[57,3,2724],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[58,5,2764],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[58,26,2785]}],value:[{t:2,r:"data.outputLevel",p:[58,58,2817]}]},f:[{t:2,r:"adata.outputLevel_text",p:[58,80,2839]}]}]}," ",{p:[60,3,2894],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[61,5,2934],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,44,2973]}],action:"output",params:'{"target": "min"}'}}," ",{p:[62,5,3070],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[62,39,3104]}],action:"output",params:'{"adjust": -10000}'}}," ",{p:[63,5,3202],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"target": "input"}'},f:["Set"]}," ",{p:[64,5,3293],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,38,3326]}],action:"output",params:'{"adjust": 10000}'}}," ",{p:[65,5,3441],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[65,43,3479]}],action:"output",params:'{"target": "max"}'}}]}," ",{p:[67,3,3609],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[68,3,3644],t:7,e:"span",f:[{t:2,r:"adata.outputUsed",p:[68,9,3650]}]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],466:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:["\ufeff",{t:4,f:[" ",{p:[2,2,33],t:7,e:"ui-display",a:{title:"Dispersal Tank"},f:[{p:[3,3,73],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[4,4,104],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.active"],s:'_0?"power-off":"close"'},p:[4,21,121]}],style:[{t:2,x:{r:["data.active"],s:'_0?"selected":null'},p:[5,12,174]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[6,12,223]}],action:"power"},f:[{t:2,x:{r:["data.active"],s:'_0?"On":"Off"'},p:[7,20,286]}]}]}," ",{p:[10,3,354],t:7,e:"ui-section",a:{label:"Smoke Radius Setting"},f:[{p:[11,5,401],t:7,e:"div",a:{"class":"content",style:"float:left"},f:[{p:[12,6,448],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=1?null:"disabled"'},p:[12,36,478]}],style:[{t:2,x:{r:["data.setting"],s:'_0==1?"selected":null'},p:[12,89,531]}],action:"setting",params:'{"amount": 1}'},f:["3"]}," ",{p:[13,6,634],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=2?null:"disabled"'},p:[13,36,664]}],style:[{t:2,x:{r:["data.setting"],s:'_0==2?"selected":null'},p:[13,89,717]}],action:"setting",params:'{"amount": 2}'},f:["6"]}," ",{p:[14,6,820],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=3?null:"disabled"'},p:[14,36,850]}],style:[{t:2,x:{r:["data.setting"],s:'_0==3?"selected":null'},p:[14,89,903]}],action:"setting",params:'{"amount": 3}'},f:["9"]}," ",{p:[15,6,1006],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=4?null:"disabled"'},p:[15,36,1036]}],style:[{t:2,x:{r:["data.setting"],s:'_0==4?"selected":null'},p:[15,89,1089]}],action:"setting",params:'{"amount": 4}'},f:["12"]}," ",{p:[16,6,1193],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.maxSetting"],s:'_0>=5?null:"disabled"'},p:[16,36,1223]}],style:[{t:2,x:{r:["data.setting"],s:'_0==5?"selected":null'},p:[16,89,1276]}],action:"setting",params:'{"amount": 5}'},f:["15"]}]}]}," ",{p:[19,3,1410],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[21,6,1476],t:7,e:"span",f:[{t:2,x:{r:["adata.TankCurrentVolume"],s:"Math.round(_0)"},p:[21,12,1482]},"/",{t:2,r:"data.TankMaxVolume",p:[21,52,1522]}," Units"]}," ",{p:[22,6,1564],t:7,e:"br"}," ",{p:[23,5,1575],t:7,e:"br"}," ",{t:4,f:[{p:[25,7,1623],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[25,50,1666]}," units of ",{t:2,r:"name",p:[25,85,1701]}]},{p:[25,100,1716],t:7,e:"br"}],n:52,r:"adata.TankContents",p:[24,6,1587]}],n:50,r:"data.isTankLoaded",p:[20,4,1444]},{t:4,n:51,f:[{p:[28,6,1757],t:7,e:"span",a:{"class":"bad"},f:["Tank Empty"]}],r:"data.isTankLoaded"}," ",{p:[30,4,1809],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Eject":"Close"'},p:[30,21,1826]}],style:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"selected":null'},p:[31,12,1881]}],state:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?null:"disabled"'},p:[32,12,1936]}],action:"purge"},f:[{t:2,x:{r:["data.isTankLoaded"],s:'_0?"Purge Contents":"No chemicals detected"'},p:[33,20,1999]}]}]}]}],n:50,x:{r:["data.screen"],s:'_0=="home"'},p:[1,2,1]}]},e.exports=a.extend(r.exports)},{341:341}],467:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"angle",params:'{"adjust": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"angle",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"angle",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"angle",params:'{"adjust": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"rate",params:'{"adjust": -180}'},f:["180°"]}," ",{p:[29,5,1535],t:7,e:"ui-button",a:{icon:"step-backward",action:"rate",params:'{"adjust": -30}'},f:["30°"]}," ",{p:[30,5,1631],t:7,e:"ui-button",a:{icon:"backward",action:"rate",params:'{"adjust": -5}'},f:["5°"]}," ",{p:[31,5,1720],t:7,e:"ui-button",a:{icon:"forward",action:"rate",params:'{"adjust": 5}'},f:["5°"]}," ",{p:[32,5,1807],t:7,e:"ui-button",a:{icon:"step-forward",action:"rate",params:'{"adjust": 30}'},f:["30°"]}," ",{p:[33,5,1901],t:7,e:"ui-button",a:{icon:"fast-forward",action:"rate",params:'{"adjust": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2088],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2169],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2209],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2222]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2267]},"Found"]}]}," ",{p:[43,2,2338],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2375],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2388]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2432]}," Panels Connected"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],468:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:{button:[{t:4,f:[{p:[4,7,87],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[4,38,118]}],action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[3,5,62]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[7,3,226],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[8,5,258],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[8,22,275]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[9,14,326]}],state:[{t:2,x:{r:["data.hasPowercell"],s:'_0?null:"disabled"'},p:[9,54,366]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[10,22,431]}]}]}," ",{p:[12,3,490],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[14,7,554],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[14,40,587]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[14,61,608]},"%"]}],n:50,r:"data.hasPowercell",p:[13,5,521]},{t:4,n:51,f:[{p:[16,4,667],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[20,1,744],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[21,3,779],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[22,3,823],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[22,9,829]},"°C"]}]}," ",{p:[24,2,894],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[25,3,937],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[25,9,943]},"°C"]}]}," ",{t:4,f:[{p:[28,5,1031],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[29,7,1073],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[29,46,1112]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[30,7,1218],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[30,41,1252]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[31,7,1357],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:["Set"]}," ",{p:[32,7,1450],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[32,40,1483]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[33,7,1587],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[33,45,1625]}],action:"target",params:'{"adjust": 20}'}}]}],n:50,r:"data.open",p:[27,3,1008]}," ",{p:[36,3,1754],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[38,7,1808],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[38,46,1847]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[39,7,1956],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[39,48,1997]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[40,7,2106],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[40,41,2140]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[37,3,1783]},{t:4,n:51,f:[{p:[42,4,2258],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[42,10,2264]}]}],r:"data.open"}]}]}]},e.exports=a.extend(r.exports)},{341:341}],469:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:{button:[{p:[4,8,97],t:7,e:"ui-button",a:{action:"jump",params:['{"name" : ',{t:2,r:"name",p:[4,51,140]},"}"]},f:["Jump"]}," ",{p:[7,9,195],t:7,e:"ui-button",a:{action:"spawn",params:['{"name" : ',{t:2,r:"name",p:[7,53,239]},"}"]},f:["Spawn"]}]},t:7,e:"ui-display",a:{title:[{t:2,r:"name",p:[2,22,46]}],button:0},f:[" ",{p:[11,3,308],t:7,e:"ui-section",a:{label:"Description"},f:[{p:[12,5,346],t:7,e:"span",f:[{t:3,r:"desc",p:[12,11,352]}]}]}," ",{p:[14,3,390],t:7,e:"ui-section",a:{label:"Spawners left"},f:[{p:[15,5,430],t:7,e:"span",f:[{t:2,r:"amount_left",p:[15,11,436]}]}]}]}],n:52,r:"data.spawners",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{341:341}],470:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,31],t:7,e:"ui-display",a:{title:[{t:2,r:"class",p:[2,22,50]}," Alarms"]},f:[{p:[3,5,74],t:7,e:"ul",f:[{t:4,f:[{p:[5,9,107],t:7,e:"li",f:[{t:2,r:".",p:[5,13,111]}]}],n:52,r:".",p:[4,7,86]},{t:4,n:51,f:[{p:[7,9,147],t:7,e:"li",f:["System Nominal"]}],r:"."}]}]}],n:52,i:"class",r:"data.alarms",p:[1,1,0]}]},e.exports=a.extend(r.exports)},{341:341}],471:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{t:4,f:[{p:[2,3,42],t:7,e:"ui-notice",f:[{p:[3,5,59],t:7,e:"span",f:["Biological entity detected in contents. Please remove."]}]}],n:50,x:{r:["data.occupied","data.safeties"],s:"_0&&_1"},p:[1,1,0]},{t:4,f:[{p:[7,3,179],t:7,e:"ui-notice",f:[{p:[8,5,196],t:7,e:"span",f:["Contents are being disinfected. Please wait."]}]}],n:50,r:"data.uv_active",p:[6,1,153]},{t:4,n:51,f:[{p:{button:[{t:4,f:[{p:[13,25,369],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[13,42,386]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Unlock":"Lock"'},p:[13,93,437]}]}],n:50,x:{r:["data.open"],s:"!_0"},p:[13,7,351]}," ",{t:4,f:[{p:[14,27,519],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.open"],s:'_0?"sign-out":"sign-in"'},p:[14,44,536]}],action:"door"},f:[{t:2,x:{r:["data.open"],s:'_0?"Close":"Open"'},p:[14,98,590]}]}],n:50,x:{r:["data.locked"],s:"!_0"},p:[14,7,499]}]},t:7,e:"ui-display",a:{title:"Storage",button:0},f:[" ",{t:4,f:[{p:[17,7,692],t:7,e:"ui-notice",f:[{p:[18,9,713],t:7,e:"span",f:["Unit Locked"]}]}],n:50,r:"data.locked",p:[16,5,665]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.open"],s:"_0"},f:[{p:[21,9,793],t:7,e:"ui-section",a:{label:"Helmet"},f:[{p:[22,11,832],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.helmet"],s:'_0?"square":"square-o"'},p:[22,28,849]}],state:[{t:2,x:{r:["data.helmet"],s:'_0?null:"disabled"'},p:[22,75,896]}],action:"dispense",params:'{"item": "helmet"}'},f:[{t:2,x:{r:["data.helmet"],s:'_0||"Empty"'},p:[23,59,992]}]}]}," ",{p:[25,9,1063],t:7,e:"ui-section",a:{label:"Suit"},f:[{p:[26,11,1100],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.suit"],s:'_0?"square":"square-o"'},p:[26,28,1117]}],state:[{t:2,x:{r:["data.suit"],s:'_0?null:"disabled"'},p:[26,74,1163]}],action:"dispense",params:'{"item": "suit"}'},f:[{t:2,x:{r:["data.suit"],s:'_0||"Empty"'},p:[27,57,1255]}]}]}," ",{p:[29,9,1324],t:7,e:"ui-section",a:{label:"Mask"},f:[{p:[30,11,1361],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mask"],s:'_0?"square":"square-o"'},p:[30,28,1378]}],state:[{t:2,x:{r:["data.mask"],s:'_0?null:"disabled"'},p:[30,74,1424]}],action:"dispense",params:'{"item": "mask"}'},f:[{t:2,x:{r:["data.mask"],s:'_0||"Empty"'},p:[31,57,1516]}]}]}," ",{p:[33,9,1585],t:7,e:"ui-section",a:{label:"Storage"},f:[{p:[34,11,1625],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.storage"],s:'_0?"square":"square-o"'},p:[34,28,1642]}],state:[{t:2,x:{r:["data.storage"],s:'_0?null:"disabled"'},p:[34,77,1691]}],action:"dispense",params:'{"item": "storage"}'},f:[{t:2,x:{r:["data.storage"],s:'_0||"Empty"'},p:[35,60,1789]}]}]}]},{t:4,n:50,x:{r:["data.open"],s:"!(_0)"},f:[" ",{p:[38,7,1873],t:7,e:"ui-button",a:{icon:"recycle",state:[{t:2,x:{r:["data.occupied","data.safeties"],s:'_0&&_1?"disabled":null'},p:[38,40,1906]}],action:"uv"},f:["Disinfect"]}]}],r:"data.locked"}]}],r:"data.uv_active"}]},e.exports=a.extend(r.exports)},{341:341}],472:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,5,18],t:7,e:"ui-section",a:{label:"Dispense"},f:[{p:[3,9,57],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.plasma"],s:'_0?"square":"square-o"'},p:[3,26,74]}],state:[{t:2,x:{r:["data.plasma"],s:'_0?null:"disabled"'},p:[3,74,122]}],action:"plasma"},f:["Plasma (",{t:2,x:{r:["adata.plasma"],s:"Math.round(_0)"},p:[4,37,196]},")"]}," ",{p:[5,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oxygen"],s:'_0?"square":"square-o"'},p:[5,26,264]}],state:[{t:2,x:{r:["data.oxygen"],s:'_0?null:"disabled"'},p:[5,74,312]}],action:"oxygen"},f:["Oxygen (",{t:2,x:{r:["adata.oxygen"],s:"Math.round(_0)"},p:[6,37,386]},")"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],473:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={computed:{tankPressureState:function(){var t=this.get("data.tankPressure");return t>=200?"good":t>=100?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,295],t:7,e:"ui-notice",f:[{p:[15,3,310],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.connected"],s:'_0?"is":"is not"'},p:[15,23,330]}," connected to a mask."]}]}," ",{p:[17,1,409],t:7,e:"ui-display",f:[{p:[18,3,425],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[19,7,467],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[19,41,501]}],state:[{t:2,r:"tankPressureState",p:[20,16,540]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[20,39,563]}," kPa"]}]}," ",{p:[22,3,631],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[23,5,674],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[23,18,687]}],max:[{t:2,r:"data.maxReleasePressure",p:[23,52,721]}],value:[{t:2,r:"data.releasePressure",p:[24,14,764]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[24,40,790]}," kPa"]}]}," ",{p:[26,3,861],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[27,5,906],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[27,38,939]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[29,5,1095],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[29,36,1126]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[31,5,1273],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "input"}'},f:["Set"]}," ",{p:[32,5,1368],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[32,35,1398]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],474:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,5,33],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[3,9,75],t:7,e:"span",f:[{t:2,x:{r:["adata.temperature"],s:"Math.fixed(_0,2)"},p:[3,15,81]}," K"]}]}," ",{p:[5,5,151],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[6,9,190],t:7,e:"span",f:[{t:2,x:{r:["adata.pressure"],s:"Math.fixed(_0,2)"},p:[6,15,196]}," kPa"]}]}]}," ",{p:[9,1,276],t:7,e:"ui-display",a:{title:"Controls"},f:[{p:[10,5,311],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[11,9,347],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[11,26,364]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[11,70,408]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[12,28,469]}]}]}," ",{p:[14,5,531],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[15,9,580],t:7,e:"ui-button",a:{icon:"fast-backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[15,48,619]}],action:"target",params:'{"adjust": -20}'}}," ",{p:[17,9,733],t:7,e:"ui-button",a:{icon:"backward",style:[{t:2,x:{r:["data.target","data.min"],s:'_0==_1?"disabled":null'},p:[17,43,767]}],action:"target",params:'{"adjust": -5}'}}," ",{p:[19,9,880],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "input"}'},f:[{t:2,x:{r:["adata.target"],s:"Math.fixed(_0,2)"},p:[19,79,950]}]}," ",{p:[20,9,1003],t:7,e:"ui-button",a:{icon:"forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[20,42,1036]}],action:"target",params:'{"adjust": 5}'}}," ",{p:[22,9,1148],t:7,e:"ui-button",a:{icon:"fast-forward",style:[{t:2,x:{r:["data.target","data.max"],s:'_0==_1?"disabled":null'},p:[22,47,1186]}],action:"target",params:'{"adjust": 20}'}}]}]}]},e.exports=a.extend(r.exports)},{341:341}],475:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{powerState:function(t){switch(t){case 1:return"good";default:return"bad"}}}}}(r),r.exports.template={v:3,t:[" ",{p:[13,1,173],t:7,e:"ui-notice",f:[{p:[14,2,187],t:7,e:"ui-section",a:{label:"Reconnect"},f:[{p:[15,3,221],t:7,e:"div",a:{style:"float:right"},f:[{p:[16,4,251],t:7,e:"ui-button",a:{icon:"refresh",action:"reconnect"},f:["Reconnect"]}]}]}]}," ",{p:[20,1,359],t:7,e:"ui-display",a:{title:"Turbine Controller"},f:[{p:[21,2,401],t:7,e:"ui-section",a:{label:"Status"},f:[{t:4,f:[{p:[23,4,456],t:7,e:"span",a:{"class":"bad"},f:["Broken"]}],n:50,r:"data.broken",p:[22,3,432]},{t:4,n:51,f:[{p:[25,4,504],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.online"],s:"_0(_1)"},p:[25,17,517]}]},f:[{t:2,x:{r:["data.online","data.compressor_broke","data.turbine_broke"],s:'_0&&!(_1||_2)?"Online":"Offline"'},p:[25,46,546]}]}],r:"data.broken"}," ",{p:[27,3,656],t:7,e:"div",a:{style:"float:right"},f:[{p:[28,4,686],t:7,e:"ui-button",a:{icon:"power-off",action:"power-on",state:[{t:2,r:"data.broken",p:[28,57,739]}],style:[{t:2,x:{r:["data.online"],s:'_0?"selected":""'},p:[28,81,763]}]},f:["On"]}," ",{p:[29,4,817],t:7,e:"ui-button",a:{icon:"close",action:"power-off",state:[{t:2,r:"data.broken",p:[29,54,867]}],style:[{t:2,x:{r:["data.online"],s:'_0?"":"selected"'},p:[29,78,891]}]},f:["Off"]}]}," ",{t:4,f:[{p:[32,4,989],t:7,e:"br"}," [ ",{p:[33,6,1e3],t:7,e:"span",a:{"class":"bad"},f:["Compressor is inoperable"]}," ]"],n:50,r:"data.compressor_broke",p:[31,3,955]}," ",{t:4,f:[{p:[36,4,1097],t:7,e:"br"}," [ ",{p:[37,6,1108],t:7,e:"span",a:{"class":"bad"},f:["Turbine is inoperable"]}," ]"],n:50,r:"data.turbine_broke",p:[35,3,1066]}]}]}," ",{p:[41,1,1200],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[42,2,1230],t:7,e:"ui-section",a:{label:"Turbine Speed"},f:[{p:[43,3,1268],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.rpm"],s:'_0?"--":_1'},p:[43,9,1274]}," RPM"]}]}," ",{p:[45,2,1337],t:7,e:"ui-section",a:{label:"Internal Temp"},f:[{p:[46,3,1375],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.temp"],s:'_0?"--":_1'},p:[46,9,1381]}," K"]}]}," ",{p:[48,2,1443],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{p:[49,3,1483],t:7,e:"span",f:[{t:2,x:{r:["data.broken","data.power"],s:'_0?"--":_1'},p:[49,9,1489]}]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],476:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{},oninit:function(){this.on({hover:function(t){var e=this.get("data.telecrystals");e>=t.context.params.cost&&this.set("hovered",t.context.params)},unhover:function(t){this.set("hovered")}})}}}(r),r.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[23,7,482],t:7,e:"ui-button",a:{icon:"lock",action:"lock"},f:["Lock"]}],n:50,r:"data.lockable",p:[22,5,453]}]},t:7,e:"ui-display",a:{title:"Uplink",button:0},f:[" ",{p:[26,3,568],t:7,e:"ui-section",a:{label:"Telecrystals",right:0},f:[{p:[27,5,613],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.telecrystals"],s:'_0>0?"good":"bad"'},p:[27,18,626]}]},f:[{t:2,r:"data.telecrystals",p:[27,62,670]}," TC"]}]}]}," ",{t:4,f:[{p:[31,3,764],t:7,e:"ui-display",f:[{p:[32,2,779],t:7,e:"ui-button",a:{action:"select",params:['{"category": "',{t:2,r:"name",p:[32,51,828]},'"}']},f:[{t:2,r:"name",p:[32,63,840]}]}," ",{t:4,f:[{p:[34,4,883],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[34,23,902]}],candystripe:0,right:0},f:[{p:[35,3,934],t:7,e:"ui-button",a:{tooltip:[{t:2,r:"name",p:[35,23,954]},": ",{t:2,r:"desc",p:[35,33,964]}],"tooltip-side":"left",state:[{t:2,x:{r:["data.telecrystals","hovered.cost","cost","hovered.item","name"],s:'_0<_2||(_0-_1<_2&&_3!=_4)?"disabled":null'},p:[36,12,1006]}],action:"buy",params:['{"category": "',{t:2,r:"category",p:[37,40,1165]},'", "item": ',{t:2,r:"name",p:[37,63,1188]},', "cost": ',{t:2,r:"cost",p:[37,81,1206]},"}"]},v:{hover:"hover",unhover:"unhover"},f:[{t:2,r:"cost",p:[38,43,1260]}," TC"]}]}],n:52,r:"items",p:[33,2,863]}]}],n:52,r:"data.categories",p:[30,1,735]}]},e.exports=a.extend(r.exports)},{341:341}],477:[function(t,e,n){var a=t(341),r={exports:{}};!function(t){"use strict";t.exports={data:{healthState:function(t){var e=this.get("data.vr_avatar.maxhealth");return t>e/1.5?"good":t>e/3?"average":"bad"}}}}(r),r.exports.template={v:3,t:[" ",{p:[14,1,292],t:7,e:"ui-display",f:[{t:4,f:[{p:[16,3,331],t:7,e:"ui-notice",f:[{p:[17,4,347],t:7,e:"span",f:["Safety restraints disabled."]}]}],n:50,r:"data.emagged",p:[15,2,307]}," ",{t:4,f:[{p:[21,3,442],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:[{p:[22,4,482],t:7,e:"ui-section",a:{label:"Name"},f:[{t:2,r:"data.vr_avatar.name",p:[23,5,513]}]}," ",{p:[25,4,559],t:7,e:"ui-section",a:{label:"Status"},f:[{t:2,r:"data.vr_avatar.status",p:[26,5,592]}]}," ",{p:[28,4,640],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[29,5,673],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"adata.vr_avatar.maxhealth",p:[29,26,694]}],value:[{t:2,r:"adata.vr_avatar.health",p:[29,64,732]}],state:[{t:2,x:{r:["healthState","adata.vr_avatar.health"],s:"_0(_1)"},p:[29,99,767]}]},f:[{t:2,x:{r:["adata.vr_avatar.health"],s:"Math.round(_0)"},p:[29,140,808]},"/",{t:2,r:"adata.vr_avatar.maxhealth",p:[29,179,847]}]}]}]}],n:50,r:"data.vr_avatar",p:[20,2,416]},{t:4,n:51,f:[{p:[33,3,935],t:7,e:"ui-display",a:{title:"Virtual Avatar"},f:["No Virtual Avatar detected"]}],r:"data.vr_avatar"}," ",{p:[37,2,1031],t:7,e:"ui-display",a:{title:"VR Commands"},f:[{p:[38,3,1067],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.toggle_open"],s:'_0?"times":"plus"'},p:[38,20,1084]}],action:"toggle_open"},f:[{t:2,x:{r:["data.toggle_open"],s:'_0?"Close":"Open"'},p:[39,4,1151]}," the VR Sleeper"]}," ",{t:4,f:[{p:[42,4,1253],t:7,e:"ui-button",a:{icon:"signal",action:"vr_connect"},f:["Connect to VR"]}],n:50,r:"data.isoccupant",p:[41,3,1225]}," ",{t:4,f:[{p:[47,4,1376],t:7,e:"ui-button",a:{icon:"ban",action:"delete_avatar"},f:["Delete Virtual Avatar"]}],n:50,r:"data.vr_avatar",p:[46,3,1349]}]}]}]},e.exports=a.extend(r.exports)},{341:341}],478:[function(t,e,n){var a=t(341),r={exports:{}};r.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{t:4, -f:[{p:[3,5,42],t:7,e:"ui-section",a:{label:[{t:2,r:"color",p:[3,24,61]},{t:2,x:{r:["wire"],s:'_0?" ("+_0+")":""'},p:[3,33,70]}],labelcolor:[{t:2,r:"color",p:[3,80,117]}],candystripe:0,right:0},f:[{p:[4,7,154],t:7,e:"ui-button",a:{action:"cut",params:['{"wire":"',{t:2,r:"color",p:[4,48,195]},'"}']},f:[{t:2,x:{r:["cut"],s:'_0?"Mend":"Cut"'},p:[4,61,208]}]}," ",{p:[5,7,252],t:7,e:"ui-button",a:{action:"pulse",params:['{"wire":"',{t:2,r:"color",p:[5,50,295]},'"}']},f:["Pulse"]}," ",{p:[6,7,333],t:7,e:"ui-button",a:{action:"attach",params:['{"wire":"',{t:2,r:"color",p:[6,51,377]},'"}']},f:[{t:2,x:{r:["attached"],s:'_0?"Detach":"Attach"'},p:[6,64,390]}]}]}],n:52,r:"data.wires",p:[2,3,16]}]}," ",{t:4,f:[{p:[11,3,508],t:7,e:"ui-display",f:[{t:4,f:[{p:[13,7,555],t:7,e:"ui-section",f:[{t:2,r:".",p:[13,19,567]}]}],n:52,r:"data.status",p:[12,5,526]}]}],n:50,r:"data.status",p:[10,1,485]}]},e.exports=a.extend(r.exports)},{341:341}],479:[function(t,e,n){(function(e){"use strict";var n=t(341),a=e.interopRequireDefault(n);t(331),t(1),t(327),t(330);var r=t(480),i=e.interopRequireDefault(r),o=t(481),s=t(328),p=t(329),u=e.interopRequireDefault(p);a["default"].DEBUG=/minified/.test(function(){}),Object.assign(Math,t(485)),window.initialize=function(e){window.tgui=window.tgui||new i["default"]({el:"#container",data:function(){var n=JSON.parse(e);return{constants:t(482),text:t(486),config:n.config,data:n.data,adata:n.data}}})};var c=document.getElementById("data"),l=c.textContent,d=c.getAttribute("data-ref");"{}"!==l&&(window.initialize(l),c.remove()),(0,o.act)(d,"tgui:initialize"),(0,s.loadCSS)("font-awesome.min.css");var f=new u["default"]("FontAwesome");f.check("").then(function(){return document.body.classList.add("icons")})["catch"](function(){return document.body.classList.add("no-icons")})}).call(this,t("babel/external-helpers"))},{1:1,327:327,328:328,329:329,330:330,331:331,341:341,480:480,481:481,482:482,485:485,486:486,"babel/external-helpers":"babel/external-helpers"}],480:[function(t,e,n){var a=t(341),r={exports:{}};!function(e){"use strict";var n=t(481),a=t(483);e.exports={components:{"ui-bar":t(342),"ui-button":t(343),"ui-display":t(344),"ui-input":t(345),"ui-linegraph":t(346),"ui-notice":t(347),"ui-section":t(349),"ui-subdisplay":t(350),"ui-tabs":t(351)},events:{enter:t(339).enter,space:t(339).space},transitions:{fade:t(340)},onconfig:function(){var e=this.get("config.interface"),n={ai_airlock:t(355),airalarm:t(356),"airalarm/back":t(357),"airalarm/modes":t(358),"airalarm/scrubbers":t(359),"airalarm/status":t(360),"airalarm/thresholds":t(361),"airalarm/vents":t(362),airlock_electronics:t(363),apc:t(364),atmos_alert:t(365),atmos_control:t(366),atmos_filter:t(367),atmos_mixer:t(368),atmos_pump:t(369),borgopanel:t(370),brig_timer:t(371),bsa:t(372),canister:t(373),cargo:t(374),cargo_express:t(375),cellular_emporium:t(376),centcom_podlauncher:t(377),chem_dispenser:t(378),chem_heater:t(379),chem_master:t(380),chem_synthesizer:t(381),clockwork_slab:t(382),codex_gigas:t(383),computer_fabricator:t(384),crayon:t(385),crew:t(386),cryo:t(387),disposal_unit:t(388),dna_vault:t(389),dogborg_sleeper:t(390),eightball:t(391),emergency_shuttle_console:t(392),engraved_message:t(393),error:t(394),"exofab - Copia":t(395),exonet_node:t(396),firealarm:t(397),gps:t(398),gulag_console:t(399),gulag_item_reclaimer:t(400),holodeck:t(401),implantchair:t(402),intellicard:t(403),keycard_auth:t(404),labor_claim_console:t(405),language_menu:t(406),launchpad_remote:t(407),mech_bay_power_console:t(408),mulebot:t(409),nanite_chamber_control:t(410),nanite_cloud_control:t(411),nanite_program_hub:t(412),nanite_programmer:t(413),nanite_remote:t(414),notificationpanel:t(415),ntnet_relay:t(416),ntos_ai_restorer:t(417),ntos_card:t(418),ntos_configuration:t(419),ntos_file_manager:t(420),ntos_main:t(421),ntos_net_chat:t(422),ntos_net_dos:t(423),ntos_net_downloader:t(424),ntos_net_monitor:t(425),ntos_net_transfer:t(426),ntos_power_monitor:t(427),ntos_revelation:t(428),ntos_station_alert:t(429),ntos_supermatter_monitor:t(430),ntosheader:t(431),nuclear_bomb:t(432),operating_computer:t(433),ore_redemption_machine:t(434),pandemic:t(435),personal_crafting:t(436),portable_pump:t(437),portable_scrubber:t(438),power_monitor:t(439),radio:t(440),rdconsole:t(441),"rdconsole/circuit":t(442),"rdconsole/designview":t(443),"rdconsole/destruct":t(444),"rdconsole/diskopsdesign":t(445),"rdconsole/diskopstech":t(446),"rdconsole/nodeview":t(447),"rdconsole/protolathe":t(448),"rdconsole/rdheader":t(449),"rdconsole/settings":t(450),"rdconsole/techweb":t(451),reagentgrinder:t(452),rpd:t(453),"rpd/colorsel":t(454),"rpd/dirsel":t(455),sat_control:t(456),scrubbing_types:t(457),shuttle_manipulator:t(458),"shuttle_manipulator/modification":t(459),"shuttle_manipulator/status":t(460),"shuttle_manipulator/templates":t(461),sleeper:t(462),slime_swap_body:t(463),smartvend:t(464),smes:t(465),smoke_machine:t(466),solar_control:t(467),space_heater:t(468),spawners_menu:t(469),station_alert:t(470),suit_storage_unit:t(471),tank_dispenser:t(472),tanks:t(473),thermomachine:t(474),turbine_computer:t(475),uplink:t(476),vr_sleeper:t(477),wires:t(478)};e in n?this.components["interface"]=n[e]:this.components["interface"]=n.error},oninit:function(){this.observe("config.style",function(t,e,n){t&&document.body.classList.add(t),e&&document.body.classList.remove(e)})},oncomplete:function(){if(this.get("config.locked")){var t=(0,a.lock)(window.screenLeft,window.screenTop),e=t.x,r=t.y;(0,n.winset)(this.get("config.window"),"pos",e+","+r)}(0,n.winset)("mapwindow.map","focus",!0)}}}(r),r.exports.template={v:3,t:[" "," "," "," ",{p:[56,1,1874],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[56,11,1884]}]}," ",{p:[57,1,1915],t:7,e:"main",f:[{p:[58,3,1925],t:7,e:"warnings"}," ",{p:[59,3,1940],t:7,e:"interface"}]}," ",{t:4,f:[{p:[62,3,1990],t:7,e:"resize"}],n:50,r:"config.titlebar",p:[61,1,1963]}]},r.exports.components=r.exports.components||{};var i={warnings:t(354),titlebar:t(353),resize:t(348)};for(var o in i)i.hasOwnProperty(o)&&(r.exports.components[o]=i[o]);e.exports=a.extend(r.exports)},{339:339,340:340,341:341,342:342,343:343,344:344,345:345,346:346,347:347,348:348,349:349,350:350,351:351,353:353,354:354,355:355,356:356,357:357,358:358,359:359,360:360,361:361,362:362,363:363,364:364,365:365,366:366,367:367,368:368,369:369,370:370,371:371,372:372,373:373,374:374,375:375,376:376,377:377,378:378,379:379,380:380,381:381,382:382,383:383,384:384,385:385,386:386,387:387,388:388,389:389,390:390,391:391,392:392,393:393,394:394,395:395,396:396,397:397,398:398,399:399,400:400,401:401,402:402,403:403,404:404,405:405,406:406,407:407,408:408,409:409,410:410,411:411,412:412,413:413,414:414,415:415,416:416,417:417,418:418,419:419,420:420,421:421,422:422,423:423,424:424,425:425,426:426,427:427,428:428,429:429,430:430,431:431,432:432,433:433,434:434,435:435,436:436,437:437,438:438,439:439,440:440,441:441,442:442,443:443,444:444,445:445,446:446,447:447,448:448,449:449,450:450,451:451,452:452,453:453,454:454,455:455,456:456,457:457,458:458,459:459,460:460,461:461,462:462,463:463,464:464,465:465,466:466,467:467,468:468,469:469,470:470,471:471,472:472,473:473,474:474,475:475,476:476,477:477,478:478,481:481,483:483}],481:[function(t,e,n){"use strict";function a(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function r(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};window.location.href=a(Object.assign({src:t,action:e},n))}function i(t,e,n){var r;window.location.href=a((r={},r[t+"."+e]=n,r),"winset")}n.__esModule=!0,n.href=a,n.act=r,n.winset=i;var o=encodeURIComponent},{}],482:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],483:[function(t,e,n){"use strict";function a(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function r(t){if(t.preventDefault(),this.get("drag")){if(this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var r=a(e,n);e=r.x,n=r.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}function i(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("resize")){if(this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,a=i(e,n);e=a.x,n=a.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}n.__esModule=!0,n.lock=a,n.drag=r,n.sane=i,n.resize=o;var s=t(481)},{481:481}],484:[function(t,e,n){"use strict";function a(t,e){for(var n=t,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var o;if(a){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",r(s,e)):s.style.display="none"}}function r(t,e){for(var n=t.queryAll("section"),a=t.query("header").textContent.toLowerCase().includes(e),r=n,i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;a||p.textContent.toLowerCase().includes(e)?p.style.display="":p.style.display="none"}}n.__esModule=!0,n.filterMulti=a,n.filter=r},{}],485:[function(t,e,n){"use strict";function a(t,e,n){return Math.max(t,Math.min(n,e))}function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=a,n.fixed=r},{}],486:[function(t,e,n){"use strict";function a(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function r(t){return t.replace(/\w\S*/g,a)}function i(t,e){for(t=""+t;t.length1){for(var p=Array(o),u=0;o>u;u++)p[u]=arguments[u+3];n.children=p}return{$$typeof:t,type:e,key:void 0===a?null:""+a,ref:null,props:n,_owner:null}}}(),e.asyncIterator=function(t){if("function"==typeof Symbol){if(Symbol.asyncIterator){var e=t[Symbol.asyncIterator];if(null!=e)return e.call(t)}if(Symbol.iterator)return t[Symbol.iterator]()}throw new TypeError("Object is not async iterable")},e.asyncGenerator=function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,r){var s={key:t,arg:e,resolve:n,reject:r,next:null};o?o=o.next=s:(i=o=s,a(t,e))})}function a(n,i){try{var o=e[n](i),s=o.value;s instanceof t?Promise.resolve(s.value).then(function(t){a("next",t)},function(t){a("throw",t)}):r(o.done?"return":"normal",o.value)}catch(p){r("throw",p)}}function r(t,e){switch(t){case"return":i.resolve({value:e,done:!0});break;case"throw":i.reject(e);break;default:i.resolve({value:e,done:!1})}i=i.next,i?a(i.key,i.arg):o=null}var i,o;this._invoke=n,"function"!=typeof e["return"]&&(this["return"]=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype["throw"]=function(t){return this._invoke("throw",t)},e.prototype["return"]=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),e.asyncGeneratorDelegate=function(t,e){function n(n,a){return r=!0,a=new Promise(function(e){e(t[n](a))}),{done:!1,value:e(a)}}var a={},r=!1;return"function"==typeof Symbol&&Symbol.iterator&&(a[Symbol.iterator]=function(){return this}),a.next=function(t){return r?(r=!1,t):n("next",t)},"function"==typeof t["throw"]&&(a["throw"]=function(t){if(r)throw r=!1,t;return n("throw",t)}),"function"==typeof t["return"]&&(a["return"]=function(t){return n("return",t)}),a},e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function a(r,i){try{var o=e[r](i),s=o.value}catch(p){return void n(p)}return o.done?void t(s):Promise.resolve(s).then(function(t){a("next",t)},function(t){a("throw",t)})}return a("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function a(t,e,n,r){var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);null!==o&&a(o,e,n,r)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(r,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,a=[],r=t[Symbol.iterator]();!(n=r.next()).done&&(a.push(n.value),!e||a.length!==e););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"byond://"+e+"?"+Object.keys(t).map(function(e){return o(e)+"="+o(t[e])}).join("&")}function r(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};window.location.href=a(Object.assign({src:t,action:e},n))}function i(t,e,n){var r;window.location.href=a((r={},r[t+"."+e]=n,r),"winset")}n.__esModule=!0,n.href=a,n.act=r,n.winset=i;var o=encodeURIComponent},{}],482:[function(t,e,n){"use strict";n.__esModule=!0;n.UI_INTERACTIVE=2,n.UI_UPDATE=1,n.UI_DISABLED=0,n.UI_CLOSE=-1},{}],483:[function(t,e,n){"use strict";function a(t,e){return 0>t?t=0:t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth),0>e?e=0:e+window.innerHeight>window.screen.availHeight&&(e=window.screen.availHeight-window.innerHeight),{x:t,y:e}}function r(t){if(t.preventDefault(),this.get("drag")){if(this.get("x")){var e=t.screenX-this.get("x")+window.screenLeft,n=t.screenY-this.get("y")+window.screenTop;if(this.get("config.locked")){var r=a(e,n);e=r.x,n=r.y}(0,s.winset)(this.get("config.window"),"pos",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}function i(t,e){return t=Math.clamp(100,window.screen.width,t),e=Math.clamp(100,window.screen.height,e),{x:t,y:e}}function o(t){if(t.preventDefault(),this.get("resize")){if(this.get("x")){var e=t.screenX-this.get("x")+window.innerWidth,n=t.screenY-this.get("y")+window.innerHeight,a=i(e,n);e=a.x,n=a.y,(0,s.winset)(this.get("config.window"),"size",e+","+n)}this.set({x:t.screenX,y:t.screenY})}}n.__esModule=!0,n.lock=a,n.drag=r,n.sane=i,n.resize=o;var s=t(481)},{481:481}],484:[function(t,e,n){"use strict";function a(t,e){for(var n=t,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var o;if(a){if(i>=n.length)break;o=n[i++]}else{if(i=n.next(),i.done)break;o=i.value}var s=o;s.textContent.toLowerCase().includes(e)?(s.style.display="",r(s,e)):s.style.display="none"}}function r(t,e){for(var n=t.queryAll("section"),a=t.query("header").textContent.toLowerCase().includes(e),r=n,i=Array.isArray(r),o=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(o>=r.length)break;s=r[o++]}else{if(o=r.next(),o.done)break;s=o.value}var p=s;a||p.textContent.toLowerCase().includes(e)?p.style.display="":p.style.display="none"}}n.__esModule=!0,n.filterMulti=a,n.filter=r},{}],485:[function(t,e,n){"use strict";function a(t,e,n){return Math.max(t,Math.min(n,e))}function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return+(Math.round(t+"e"+e)+"e-"+e)}n.__esModule=!0,n.clamp=a,n.fixed=r},{}],486:[function(t,e,n){"use strict";function a(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()}function r(t){return t.replace(/\w\S*/g,a)}function i(t,e){for(t=""+t;t.length1){for(var p=Array(o),u=0;o>u;u++)p[u]=arguments[u+3];n.children=p}return{$$typeof:t,type:e,key:void 0===a?null:""+a,ref:null,props:n,_owner:null}}}(),e.asyncIterator=function(t){if("function"==typeof Symbol){if(Symbol.asyncIterator){var e=t[Symbol.asyncIterator];if(null!=e)return e.call(t)}if(Symbol.iterator)return t[Symbol.iterator]()}throw new TypeError("Object is not async iterable")},e.asyncGenerator=function(){function t(t){this.value=t}function e(e){function n(t,e){return new Promise(function(n,r){var s={key:t,arg:e,resolve:n,reject:r,next:null};o?o=o.next=s:(i=o=s,a(t,e))})}function a(n,i){try{var o=e[n](i),s=o.value;s instanceof t?Promise.resolve(s.value).then(function(t){a("next",t)},function(t){a("throw",t)}):r(o.done?"return":"normal",o.value)}catch(p){r("throw",p)}}function r(t,e){switch(t){case"return":i.resolve({value:e,done:!0});break;case"throw":i.reject(e);break;default:i.resolve({value:e,done:!1})}i=i.next,i?a(i.key,i.arg):o=null}var i,o;this._invoke=n,"function"!=typeof e["return"]&&(this["return"]=void 0)}return"function"==typeof Symbol&&Symbol.asyncIterator&&(e.prototype[Symbol.asyncIterator]=function(){return this}),e.prototype.next=function(t){return this._invoke("next",t)},e.prototype["throw"]=function(t){return this._invoke("throw",t)},e.prototype["return"]=function(t){return this._invoke("return",t)},{wrap:function(t){return function(){return new e(t.apply(this,arguments))}},await:function(e){return new t(e)}}}(),e.asyncGeneratorDelegate=function(t,e){function n(n,a){return r=!0,a=new Promise(function(e){e(t[n](a))}),{done:!1,value:e(a)}}var a={},r=!1;return"function"==typeof Symbol&&Symbol.iterator&&(a[Symbol.iterator]=function(){return this}),a.next=function(t){return r?(r=!1,t):n("next",t)},"function"==typeof t["throw"]&&(a["throw"]=function(t){if(r)throw r=!1,t;return n("throw",t)}),"function"==typeof t["return"]&&(a["return"]=function(t){return n("return",t)}),a},e.asyncToGenerator=function(t){return function(){var e=t.apply(this,arguments);return new Promise(function(t,n){function a(r,i){try{var o=e[r](i),s=o.value}catch(p){return void n(p)}return o.done?void t(s):Promise.resolve(s).then(function(t){a("next",t)},function(t){a("throw",t)})}return a("next")})}},e.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.createClass=function(){function t(t,e){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);return n},e.possibleConstructorReturn=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},e.selfGlobal=void 0===t?self:t,e.set=function a(t,e,n,r){var i=Object.getOwnPropertyDescriptor(t,e);if(void 0===i){var o=Object.getPrototypeOf(t);null!==o&&a(o,e,n,r)}else if("value"in i&&i.writable)i.value=n;else{var s=i.set;void 0!==s&&s.call(r,n)}return n},e.slicedToArray=function(){function t(t,e){var n=[],a=!0,r=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(n.push(o.value),!e||n.length!==e);a=!0);}catch(p){r=!0,i=p}finally{try{!a&&s["return"]&&s["return"]()}finally{if(r)throw i}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),e.slicedToArrayLoose=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t)){for(var n,a=[],r=t[Symbol.iterator]();!(n=r.next()).done&&(a.push(n.value),!e||a.length!==e););return a}throw new TypeError("Invalid attempt to destructure non-iterable instance")},e.taggedTemplateLiteral=function(t,e){return Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))},e.taggedTemplateLiteralLoose=function(t,e){return t.raw=e,t},e.temporalRef=function(t,e,n){if(t===n)throw new ReferenceError(e+" is not defined - temporal dead zone");return t},e.temporalUndefined={},e.toArray=function(t){return Array.isArray(t)?t:Array.from(t)},e.toConsumableArray=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);eDispense Buffer to Bottles

- Create Hypo Vial (max 30µ) + Create Hypo Vial (max 60µ)
Dispense Buffer to Hypo vials