mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Contents_explosion() tweaks (#20934)
* When any object is hit by an explosion, we no longer always call ex_act() on all its contents indiscriminately. The default contents_explosion() does nothing and it's overriden for certain objects only like storage items, machines with occupants, mechs. I've also overriden handle_atom_del() for many objects so that any sudden deletion of an object referenced in an object var of its container properly nullifies such references, avoiding potential runtime and updating the container's icon_state (e.g. admin-delete a mixer's beaker and the mixer's sprite updates immediately). I've tweaked bomb effect on worn clothes, having some armor but not 100% now still protects your clothes somewhat. Fixes some arguments of ex_act in living/ex_act() and other mobs. * derp and map fixes. * dem map fixes, man. * More work on code that use implants, simplified now that we can use the "implants" carbon var. * some fixes * more typos and fixes.
This commit is contained in:
@@ -1838,7 +1838,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"aeI" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ai_monitored/turret_protected/tcomeast{
|
||||
name = "\improper Telecommunications Chamber"
|
||||
@@ -8385,7 +8385,7 @@
|
||||
/obj/structure/cable/cyan{
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/mob/living/simple_animal/bot/ed209{
|
||||
name = "Officer Pingsky II";
|
||||
radio_channel = "AI Private"
|
||||
@@ -12329,7 +12329,7 @@
|
||||
/obj/structure/cable/cyan{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/fore{
|
||||
name = "\improper Command Hallway"
|
||||
@@ -14045,7 +14045,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit)
|
||||
"aIR" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"aIS" = (
|
||||
@@ -14676,7 +14676,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/maintenance/fsmaint)
|
||||
"aKw" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/teleporter{
|
||||
name = "\improper Teleporter Room"
|
||||
@@ -15285,13 +15285,13 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/bridge)
|
||||
"aLS" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ai_monitored/storage/eva{
|
||||
name = "E.V.A. Storage"
|
||||
})
|
||||
"aLT" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/primary{
|
||||
name = "Tool Storage"
|
||||
@@ -15300,7 +15300,7 @@
|
||||
/obj/effect/landmark{
|
||||
name = "lightsout"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/bridge)
|
||||
"aLV" = (
|
||||
@@ -15317,7 +15317,7 @@
|
||||
/turf/open/floor/engine,
|
||||
/area/toxins/xenobiology)
|
||||
"aLX" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/mob/living/simple_animal/pet/dog/corgi/Ian,
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/heads)
|
||||
@@ -18550,7 +18550,7 @@
|
||||
name = "\improper South Hallway"
|
||||
})
|
||||
"aTG" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/storage)
|
||||
"aTH" = (
|
||||
@@ -18573,7 +18573,7 @@
|
||||
name = "\improper South Hallway"
|
||||
})
|
||||
"aTL" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/sleep)
|
||||
"aTM" = (
|
||||
@@ -21087,7 +21087,7 @@
|
||||
},
|
||||
/area/shuttle/arrival)
|
||||
"aZP" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/theatre)
|
||||
"aZQ" = (
|
||||
@@ -21227,7 +21227,7 @@
|
||||
id = "kitchen shutter";
|
||||
name = "kitchen shutter"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/newscaster{
|
||||
pixel_y = 32
|
||||
},
|
||||
@@ -21320,7 +21320,7 @@
|
||||
/turf/closed/wall,
|
||||
/area/medical/morgue)
|
||||
"bav" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
|
||||
icon_state = "intact";
|
||||
dir = 4
|
||||
@@ -21389,7 +21389,7 @@
|
||||
/obj/structure/cable/cyan{
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit)
|
||||
"baA" = (
|
||||
@@ -21672,7 +21672,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"bbc" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/fitness)
|
||||
"bbd" = (
|
||||
@@ -22723,7 +22723,7 @@
|
||||
/obj/structure/cable/cyan{
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/genetics_cloning)
|
||||
"bdL" = (
|
||||
@@ -22792,11 +22792,11 @@
|
||||
/obj/structure/cable/cyan{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/brig)
|
||||
"bdS" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/medical/robotics)
|
||||
"bdT" = (
|
||||
@@ -22929,7 +22929,7 @@
|
||||
/obj/structure/cable/cyan{
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/security/warden)
|
||||
"bed" = (
|
||||
@@ -22995,11 +22995,11 @@
|
||||
icon_state = "intact";
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/toxins/misc_lab)
|
||||
"bem" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/medbay)
|
||||
"ben" = (
|
||||
|
||||
@@ -583,7 +583,7 @@
|
||||
name = "AI Core Door";
|
||||
req_access_txt = "16"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/bluegrid,
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
"abj" = (
|
||||
@@ -1547,7 +1547,7 @@
|
||||
tag = "icon-2-8";
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/darkblue/side{
|
||||
tag = "icon-darkblue (NORTH)";
|
||||
dir = 1
|
||||
@@ -2519,7 +2519,7 @@
|
||||
tag = "icon-1-8";
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/aisat)
|
||||
"aeP" = (
|
||||
@@ -4940,7 +4940,7 @@
|
||||
tag = "icon-2-8";
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 10
|
||||
},
|
||||
@@ -5359,7 +5359,7 @@
|
||||
/turf/open/floor/plasteel/neutral/side,
|
||||
/area/hallway/secondary/entry)
|
||||
"alz" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -6609,7 +6609,7 @@
|
||||
dir = 4;
|
||||
icon_state = "pipe-c"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/engine/engineering)
|
||||
"aoF" = (
|
||||
@@ -13409,7 +13409,7 @@
|
||||
d1 = 1;
|
||||
d2 = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/engine/engine_smes)
|
||||
"aCj" = (
|
||||
@@ -13579,7 +13579,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/atmos)
|
||||
"aCz" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/light,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Atmospherics";
|
||||
@@ -17244,7 +17244,7 @@
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/medical/cmo)
|
||||
"aKp" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/medical/cmo)
|
||||
@@ -18497,7 +18497,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/genetics)
|
||||
"aNg" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/whitebot,
|
||||
/area/medical/genetics)
|
||||
"aNh" = (
|
||||
@@ -19476,7 +19476,7 @@
|
||||
icon_state = "pipe-j1s";
|
||||
sortType = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/engine/engineering)
|
||||
"aOW" = (
|
||||
@@ -20004,7 +20004,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/genetics)
|
||||
"aQb" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -20962,7 +20962,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/chiefs_office)
|
||||
"aSj" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/light_switch{
|
||||
pixel_y = 24;
|
||||
tag = "n"
|
||||
@@ -22828,7 +22828,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/asmaint)
|
||||
"aVK" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Medbay Surgery";
|
||||
dir = 4;
|
||||
@@ -24520,7 +24520,7 @@
|
||||
},
|
||||
/area/crew_quarters/courtroom)
|
||||
"aZf" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/crew_quarters/courtroom)
|
||||
@@ -24941,7 +24941,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/locker)
|
||||
"aZU" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/locker)
|
||||
"aZV" = (
|
||||
@@ -25122,7 +25122,7 @@
|
||||
tag = "icon-2-8";
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
@@ -26376,7 +26376,7 @@
|
||||
tag = "icon-1-2";
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -26690,7 +26690,7 @@
|
||||
tag = "icon-1-2";
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/engine/break_room)
|
||||
@@ -27582,7 +27582,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/lawoffice)
|
||||
"bfp" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
|
||||
tag = "icon-manifold-r-f (EAST)";
|
||||
dir = 4
|
||||
@@ -30177,7 +30177,7 @@
|
||||
tag = "icon-1-8";
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/navbeacon{
|
||||
codes_txt = "patrol;next_patrol=Security";
|
||||
location = "EVA2"
|
||||
@@ -30314,7 +30314,7 @@
|
||||
tag = "icon-4-8";
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/hallway/primary/fore{
|
||||
name = "Fore Starboard Hallway"
|
||||
@@ -34881,7 +34881,7 @@
|
||||
d1 = 4;
|
||||
d2 = 8
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/warning,
|
||||
/area/engine/gravity_generator)
|
||||
"btk" = (
|
||||
@@ -34956,7 +34956,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/crew_quarters/heads)
|
||||
"btu" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 8
|
||||
},
|
||||
@@ -38595,7 +38595,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/eva)
|
||||
"bAD" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/storage/eva)
|
||||
"bAE" = (
|
||||
@@ -40761,7 +40761,7 @@
|
||||
},
|
||||
/area/hallway/secondary/exit)
|
||||
"bEi" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/hallway/secondary/exit)
|
||||
@@ -40807,7 +40807,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit)
|
||||
"bEo" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/carpet,
|
||||
/area/library)
|
||||
@@ -41040,7 +41040,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bar,
|
||||
/area/crew_quarters/bar)
|
||||
"bEO" = (
|
||||
@@ -41246,7 +41246,7 @@
|
||||
},
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bFi" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable/white{
|
||||
tag = "icon-4-8";
|
||||
icon_state = "4-8"
|
||||
@@ -41320,7 +41320,7 @@
|
||||
tag = "icon-2-4";
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 8
|
||||
},
|
||||
@@ -41595,7 +41595,7 @@
|
||||
tag = "icon-4-8";
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/bridge)
|
||||
"bFL" = (
|
||||
@@ -41819,7 +41819,7 @@
|
||||
icon_state = "1-2";
|
||||
pixel_y = 0
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/mob/living/simple_animal/bot/secbot/beepsky{
|
||||
@@ -41925,7 +41925,7 @@
|
||||
pixel_x = 0;
|
||||
tag = ""
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 8
|
||||
@@ -42271,7 +42271,7 @@
|
||||
pixel_x = 0;
|
||||
tag = ""
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 9
|
||||
},
|
||||
@@ -46045,7 +46045,7 @@
|
||||
icon_state = "1-2";
|
||||
pixel_y = 0
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 8;
|
||||
icon_state = "pipe-c"
|
||||
@@ -48490,7 +48490,7 @@
|
||||
tag = "icon-2-4";
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 8
|
||||
},
|
||||
@@ -48574,7 +48574,7 @@
|
||||
tag = "icon-1-2";
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/captain)
|
||||
"bSz" = (
|
||||
@@ -52540,7 +52540,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/chapel/main)
|
||||
"bZJ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/chapel/main)
|
||||
"bZK" = (
|
||||
@@ -54211,7 +54211,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/sleep)
|
||||
"cdE" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -55039,7 +55039,7 @@
|
||||
/turf/open/floor/plasteel/delivery,
|
||||
/area/storage/primary)
|
||||
"cfv" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/primary)
|
||||
"cfw" = (
|
||||
@@ -55248,7 +55248,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/assembly/robotics)
|
||||
"cfS" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/assembly/robotics)
|
||||
"cfT" = (
|
||||
@@ -55344,7 +55344,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/office)
|
||||
"cge" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/quartermaster/office)
|
||||
"cgf" = (
|
||||
@@ -56067,7 +56067,7 @@
|
||||
/turf/open/floor/bluegrid,
|
||||
/area/assembly/chargebay)
|
||||
"chA" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable/pink{
|
||||
tag = "icon-1-4";
|
||||
icon_state = "1-4"
|
||||
@@ -56992,7 +56992,7 @@
|
||||
tag = "icon-1-8";
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/security/nuke_storage)
|
||||
"cjr" = (
|
||||
@@ -57629,7 +57629,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/lab)
|
||||
"ckJ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -61344,7 +61344,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/office)
|
||||
"csd" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/office)
|
||||
@@ -66128,7 +66128,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/explab)
|
||||
"cBr" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/whitebot,
|
||||
/area/toxins/explab)
|
||||
"cBs" = (
|
||||
@@ -66492,7 +66492,7 @@
|
||||
},
|
||||
/area/crew_quarters/fitness)
|
||||
"cCa" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 5
|
||||
},
|
||||
@@ -66807,7 +66807,7 @@
|
||||
tag = "icon-1-8";
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/storage)
|
||||
"cCJ" = (
|
||||
@@ -68086,7 +68086,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/mixing)
|
||||
"cFr" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable/pink{
|
||||
tag = "icon-1-2";
|
||||
icon_state = "1-2"
|
||||
@@ -72929,7 +72929,7 @@
|
||||
tag = "icon-1-4";
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/whitebot,
|
||||
/area/toxins/xenobiology)
|
||||
"cOB" = (
|
||||
|
||||
@@ -1444,7 +1444,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
"ada" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/door/window{
|
||||
name = "Primary AI Core Access";
|
||||
pixel_y = -2;
|
||||
@@ -2270,7 +2270,7 @@
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable{
|
||||
d1 = 2;
|
||||
d2 = 4;
|
||||
@@ -2342,7 +2342,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/effect/landmark/start{
|
||||
name = "Cyborg"
|
||||
},
|
||||
@@ -2426,7 +2426,7 @@
|
||||
d2 = 8;
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/AIsatextFP{
|
||||
name = "AI Satellite Service"
|
||||
@@ -3660,7 +3660,7 @@
|
||||
/area/ai_monitored/turret_protected/aisat_interior)
|
||||
"agX" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plating,
|
||||
/area/ai_monitored/turret_protected/aisat_interior)
|
||||
"agY" = (
|
||||
@@ -4843,7 +4843,7 @@
|
||||
name = "Medical Maintenance"
|
||||
})
|
||||
"ajs" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/effect/landmark{
|
||||
name = "xeno_spawn";
|
||||
pixel_x = -1
|
||||
@@ -5088,7 +5088,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/xenobiology)
|
||||
"ajU" = (
|
||||
@@ -8949,7 +8949,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/toxins/misc_lab)
|
||||
"aqG" = (
|
||||
@@ -9113,7 +9113,7 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/effect/landmark{
|
||||
name = "blobstart"
|
||||
},
|
||||
@@ -13015,7 +13015,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/xenobiology)
|
||||
"ayA" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
@@ -13394,7 +13394,7 @@
|
||||
name = "\improper Toxins Lab"
|
||||
})
|
||||
"azo" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/effect/landmark/start{
|
||||
name = "Scientist"
|
||||
@@ -13812,7 +13812,7 @@
|
||||
name = "Medbay Central"
|
||||
})
|
||||
"aAa" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/medical/medbay{
|
||||
@@ -13973,7 +13973,7 @@
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/crew_quarters/hor)
|
||||
"aAs" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
@@ -14495,7 +14495,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/genetics)
|
||||
"aBx" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 6
|
||||
},
|
||||
@@ -14847,7 +14847,7 @@
|
||||
name = "Research Division"
|
||||
})
|
||||
"aCe" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -15652,7 +15652,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/atmos)
|
||||
"aDH" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/atmos)
|
||||
"aDI" = (
|
||||
@@ -18355,7 +18355,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/genetics)
|
||||
"aIO" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/genetics)
|
||||
"aIP" = (
|
||||
@@ -18566,7 +18566,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/explab)
|
||||
"aJk" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/explab)
|
||||
"aJl" = (
|
||||
@@ -18885,7 +18885,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/cryo)
|
||||
"aJT" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/cryo)
|
||||
"aJU" = (
|
||||
@@ -19483,7 +19483,7 @@
|
||||
name = "Medbay Central"
|
||||
})
|
||||
"aLa" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/medbay{
|
||||
name = "Medbay Central"
|
||||
@@ -20242,7 +20242,7 @@
|
||||
},
|
||||
/area/toxins/lab)
|
||||
"aMN" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/warnwhite/corner{
|
||||
dir = 4
|
||||
},
|
||||
@@ -20285,7 +20285,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/assembly/robotics)
|
||||
"aMS" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 1;
|
||||
icon_state = "pipe-c"
|
||||
@@ -20354,7 +20354,7 @@
|
||||
/turf/open/floor/mech_bay_recharge_floor,
|
||||
/area/assembly/chargebay)
|
||||
"aNa" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 8
|
||||
},
|
||||
@@ -21868,7 +21868,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/atmos)
|
||||
"aQb" = (
|
||||
@@ -22010,7 +22010,7 @@
|
||||
/turf/open/floor/plasteel/barber,
|
||||
/area/medical/cmo)
|
||||
"aQn" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable{
|
||||
d1 = 2;
|
||||
d2 = 4;
|
||||
@@ -22168,7 +22168,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/chemistry)
|
||||
"aQB" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
@@ -24521,7 +24521,7 @@
|
||||
name = "Medbay Central"
|
||||
})
|
||||
"aVH" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/medbay{
|
||||
@@ -24610,7 +24610,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/warning{
|
||||
dir = 1
|
||||
},
|
||||
@@ -24642,7 +24642,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"aVZ" = (
|
||||
@@ -25953,7 +25953,7 @@
|
||||
},
|
||||
/area/hallway/primary/central)
|
||||
"aYy" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
@@ -26773,7 +26773,7 @@
|
||||
name = "\improper Maltese Falcon"
|
||||
})
|
||||
"aZW" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bar,
|
||||
/area/crew_quarters/bar{
|
||||
name = "\improper Maltese Falcon"
|
||||
@@ -29543,7 +29543,7 @@
|
||||
},
|
||||
/area/library)
|
||||
"bgn" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/library)
|
||||
"bgo" = (
|
||||
@@ -29878,7 +29878,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/break_room)
|
||||
"bgZ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/break_room)
|
||||
"bha" = (
|
||||
@@ -33981,7 +33981,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/neutral,
|
||||
/area/engine/chiefs_office)
|
||||
"bpV" = (
|
||||
@@ -35300,7 +35300,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/sleep)
|
||||
"bsG" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/sleep)
|
||||
"bsH" = (
|
||||
@@ -35514,7 +35514,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/storage)
|
||||
"btf" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/storage)
|
||||
"btg" = (
|
||||
@@ -37490,7 +37490,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"bwZ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"bxa" = (
|
||||
@@ -37646,7 +37646,7 @@
|
||||
d2 = 4;
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 6
|
||||
},
|
||||
@@ -38006,7 +38006,7 @@
|
||||
/area/crew_quarters/sleep)
|
||||
"byc" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/neutral/corner{
|
||||
dir = 1
|
||||
},
|
||||
@@ -40940,7 +40940,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/qm)
|
||||
"bDO" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/qm)
|
||||
"bDP" = (
|
||||
@@ -41979,7 +41979,7 @@
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/heads)
|
||||
"bFQ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/heads)
|
||||
"bFR" = (
|
||||
@@ -43286,7 +43286,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/security/warden)
|
||||
@@ -44715,7 +44715,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/captain{
|
||||
name = "\improper Captain's Quarters"
|
||||
@@ -45962,7 +45962,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/bridge)
|
||||
"bNj" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/aft{
|
||||
name = "Aft Starboard Primary Hallway"
|
||||
@@ -46999,7 +46999,7 @@
|
||||
"bPl" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/main)
|
||||
"bPm" = (
|
||||
@@ -50009,7 +50009,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/bridge)
|
||||
"bVB" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/bridge)
|
||||
"bVC" = (
|
||||
@@ -51191,7 +51191,7 @@
|
||||
name = "Arrivals"
|
||||
})
|
||||
"bXY" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry{
|
||||
name = "Arrivals"
|
||||
@@ -52952,7 +52952,7 @@
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/security/prison)
|
||||
"cbz" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/security/prison)
|
||||
"cbA" = (
|
||||
@@ -53773,7 +53773,7 @@
|
||||
/turf/open/space,
|
||||
/area/space)
|
||||
"cdA" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit{
|
||||
name = "\improper Departure Lounge"
|
||||
@@ -54709,7 +54709,7 @@
|
||||
name = "\improper Telecoms Control Room"
|
||||
})
|
||||
"cfw" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 8;
|
||||
@@ -55453,7 +55453,7 @@
|
||||
},
|
||||
/area/tcommsat/server)
|
||||
"cht" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/bluegrid{
|
||||
name = "Mainframe Base";
|
||||
initial_gas_mix = "n2=100;TEMP=80"
|
||||
@@ -56461,7 +56461,7 @@
|
||||
name = "Chapel Maintenance"
|
||||
})
|
||||
"cjz" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/security/hos)
|
||||
"cjA" = (
|
||||
|
||||
@@ -1150,7 +1150,7 @@
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/security/prison)
|
||||
"acx" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable/yellow{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
@@ -3929,7 +3929,7 @@
|
||||
},
|
||||
/area/ai_monitored/security/armory)
|
||||
"agY" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 8
|
||||
},
|
||||
@@ -3995,7 +3995,7 @@
|
||||
/turf/open/floor/carpet,
|
||||
/area/security/hos)
|
||||
"ahf" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/chair{
|
||||
dir = 1
|
||||
},
|
||||
@@ -5617,7 +5617,7 @@
|
||||
})
|
||||
"akc" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/fitness{
|
||||
name = "\improper Recreation Area"
|
||||
@@ -8319,7 +8319,7 @@
|
||||
/turf/open/floor/plasteel/red,
|
||||
/area/security/main)
|
||||
"aoM" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4;
|
||||
icon_state = "pipe-c"
|
||||
@@ -9791,7 +9791,7 @@
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/security/warden)
|
||||
"arq" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/cable/yellow{
|
||||
d1 = 1;
|
||||
@@ -10123,7 +10123,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 9
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/warning{
|
||||
dir = 2
|
||||
},
|
||||
@@ -13850,7 +13850,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/red/corner{
|
||||
dir = 4
|
||||
},
|
||||
@@ -14929,7 +14929,7 @@
|
||||
},
|
||||
/area/security/brig)
|
||||
"aAa" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/red/side{
|
||||
dir = 1
|
||||
},
|
||||
@@ -15907,7 +15907,7 @@
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/security/detectives_office)
|
||||
"aBC" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/security/detectives_office)
|
||||
"aBD" = (
|
||||
@@ -16294,7 +16294,7 @@
|
||||
})
|
||||
"aCm" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/miningdock{
|
||||
name = "\improper Mining Office"
|
||||
@@ -16736,7 +16736,7 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/sleep)
|
||||
"aCX" = (
|
||||
@@ -21652,7 +21652,7 @@
|
||||
},
|
||||
/area/engine/engineering)
|
||||
"aLo" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
@@ -22791,7 +22791,7 @@
|
||||
},
|
||||
/area/crew_quarters/courtroom)
|
||||
"aNH" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/crew_quarters/courtroom)
|
||||
"aNI" = (
|
||||
@@ -23387,7 +23387,7 @@
|
||||
dir = 2;
|
||||
network = list("SS13")
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 10
|
||||
},
|
||||
@@ -23522,7 +23522,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"aPe" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"aPf" = (
|
||||
@@ -23648,7 +23648,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/lawoffice)
|
||||
"aPs" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/wood,
|
||||
/area/lawoffice)
|
||||
"aPt" = (
|
||||
@@ -23861,7 +23861,7 @@
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/construction{
|
||||
name = "\improper Garden"
|
||||
@@ -24965,7 +24965,7 @@
|
||||
},
|
||||
/area/storage/primary)
|
||||
"aRG" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/primary)
|
||||
"aRH" = (
|
||||
@@ -25939,7 +25939,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/locker)
|
||||
"aTr" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/locker)
|
||||
"aTs" = (
|
||||
@@ -28883,7 +28883,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/quartermaster/storage)
|
||||
"aYC" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/storage)
|
||||
"aYD" = (
|
||||
@@ -29504,7 +29504,7 @@
|
||||
dir = 1;
|
||||
pixel_y = 1
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/construction/hallway{
|
||||
name = "\improper MiniSat Exterior"
|
||||
@@ -30185,7 +30185,7 @@
|
||||
d2 = 4;
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"baE" = (
|
||||
@@ -30688,7 +30688,7 @@
|
||||
/turf/open/floor/greengrid,
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
"bbq" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/flasher{
|
||||
id = "AI";
|
||||
pixel_x = -25;
|
||||
@@ -30758,7 +30758,7 @@
|
||||
/turf/open/floor/bluegrid,
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
"bbw" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/flasher{
|
||||
id = "AI";
|
||||
pixel_x = 25;
|
||||
@@ -31374,7 +31374,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"bcs" = (
|
||||
@@ -31718,7 +31718,7 @@
|
||||
},
|
||||
/area/engine/chiefs_office)
|
||||
"bcU" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/neutral{
|
||||
dir = 8
|
||||
},
|
||||
@@ -32243,7 +32243,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/tools)
|
||||
"bdT" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/tools)
|
||||
"bdU" = (
|
||||
@@ -32328,7 +32328,7 @@
|
||||
},
|
||||
/area/storage/tech)
|
||||
"bec" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/vault{
|
||||
dir = 8
|
||||
},
|
||||
@@ -35342,7 +35342,7 @@
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/captain{
|
||||
name = "\improper Captain's Quarters"
|
||||
@@ -35809,7 +35809,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
"bkb" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
@@ -36644,7 +36644,7 @@
|
||||
dir = 4;
|
||||
initialize_directions = 11
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/break_room)
|
||||
"blx" = (
|
||||
@@ -37026,7 +37026,7 @@
|
||||
})
|
||||
"bme" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/brown{
|
||||
dir = 2
|
||||
},
|
||||
@@ -37064,7 +37064,7 @@
|
||||
/area/hallway/primary/port)
|
||||
"bmh" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/brown/corner{
|
||||
dir = 8
|
||||
},
|
||||
@@ -39022,7 +39022,7 @@
|
||||
},
|
||||
/area/ai_monitored/turret_protected/aisat_interior)
|
||||
"bpx" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -40229,7 +40229,7 @@
|
||||
name = "\improper MiniSat Exterior"
|
||||
})
|
||||
"brD" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "4-8";
|
||||
d1 = 4;
|
||||
@@ -40306,7 +40306,7 @@
|
||||
d1 = 4;
|
||||
d2 = 8
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/tcomfoyer{
|
||||
name = "\improper MiniSat Foyer"
|
||||
@@ -40560,7 +40560,7 @@
|
||||
name = "Arrivals"
|
||||
})
|
||||
"bsa" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable/yellow{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
@@ -40611,7 +40611,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad{
|
||||
/obj/machinery/holopad{
|
||||
pixel_y = -16
|
||||
},
|
||||
/turf/open/floor/carpet,
|
||||
@@ -42464,7 +42464,7 @@
|
||||
/turf/open/floor/carpet,
|
||||
/area/bridge)
|
||||
"buZ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/bridge)
|
||||
"bva" = (
|
||||
@@ -43287,7 +43287,7 @@
|
||||
d2 = 8;
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/heads)
|
||||
"bwu" = (
|
||||
@@ -43411,7 +43411,7 @@
|
||||
name = "\improper Captain's Quarters"
|
||||
})
|
||||
"bwJ" = (
|
||||
/obj/machinery/hologram/holopad{
|
||||
/obj/machinery/holopad{
|
||||
pixel_x = 9;
|
||||
pixel_y = -9
|
||||
},
|
||||
@@ -44420,7 +44420,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/bridge)
|
||||
"byx" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/status_display{
|
||||
density = 0;
|
||||
layer = 4;
|
||||
@@ -46176,7 +46176,7 @@
|
||||
name = "\improper Telecoms Control Room"
|
||||
})
|
||||
"bBu" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -47616,7 +47616,7 @@
|
||||
/turf/open/floor/plasteel/bar,
|
||||
/area/crew_quarters/bar)
|
||||
"bDZ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bar,
|
||||
/area/crew_quarters/bar)
|
||||
"bEa" = (
|
||||
@@ -48624,7 +48624,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/bar)
|
||||
"bFP" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/theatre)
|
||||
@@ -48666,7 +48666,7 @@
|
||||
},
|
||||
/area/atmos)
|
||||
"bFU" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/atmos)
|
||||
@@ -49280,7 +49280,7 @@
|
||||
name = "\improper Command Hallway"
|
||||
})
|
||||
"bGX" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable/yellow{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
@@ -50009,7 +50009,7 @@
|
||||
},
|
||||
/area/atmos)
|
||||
"bHS" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/caution{
|
||||
dir = 8
|
||||
},
|
||||
@@ -50939,7 +50939,7 @@
|
||||
},
|
||||
/area/tcommsat/server)
|
||||
"bJL" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable/yellow{
|
||||
d1 = 1;
|
||||
d2 = 4;
|
||||
@@ -51111,7 +51111,7 @@
|
||||
/turf/open/floor/wood,
|
||||
/area/library)
|
||||
"bKb" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/wood,
|
||||
/area/library)
|
||||
"bKc" = (
|
||||
@@ -53393,7 +53393,7 @@
|
||||
})
|
||||
"bOh" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable/yellow{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
@@ -53519,7 +53519,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/atmos)
|
||||
"bOv" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/atmos)
|
||||
"bOw" = (
|
||||
@@ -54800,7 +54800,7 @@
|
||||
name = "E.V.A. Storage"
|
||||
})
|
||||
"bQB" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/warning{
|
||||
dir = 8
|
||||
},
|
||||
@@ -55150,7 +55150,7 @@
|
||||
},
|
||||
/area/crew_quarters/kitchen)
|
||||
"bRh" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/cafeteria{
|
||||
dir = 5
|
||||
},
|
||||
@@ -55828,7 +55828,7 @@
|
||||
})
|
||||
"bSw" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/assembly/showroom{
|
||||
name = "\improper Corporate Showroom"
|
||||
@@ -56374,7 +56374,7 @@
|
||||
name = "Port Maintenance"
|
||||
})
|
||||
"bTs" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_x = -27;
|
||||
pixel_y = 0
|
||||
@@ -60453,7 +60453,7 @@
|
||||
/obj/effect/landmark/start{
|
||||
name = "Botanist"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hydroponics)
|
||||
"cat" = (
|
||||
@@ -62681,7 +62681,7 @@
|
||||
name = "Medbay Storage"
|
||||
})
|
||||
"cdZ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/effect/landmark/start{
|
||||
name = "Medical Doctor"
|
||||
},
|
||||
@@ -62813,7 +62813,7 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 2
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/medbay{
|
||||
name = "Medbay Central"
|
||||
@@ -62903,7 +62903,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 5
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/research{
|
||||
@@ -67302,7 +67302,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 6
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/sleeper{
|
||||
name = "Sleepers"
|
||||
@@ -68035,7 +68035,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/medical/surgery)
|
||||
"cni" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/medical/surgery)
|
||||
"cnj" = (
|
||||
@@ -68401,7 +68401,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/lab)
|
||||
"cnP" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/warnwhite{
|
||||
dir = 4
|
||||
},
|
||||
@@ -68959,7 +68959,7 @@
|
||||
d2 = 4;
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/chemistry)
|
||||
@@ -69228,7 +69228,7 @@
|
||||
/area/toxins/explab)
|
||||
"cpj" = (
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/construction/hallway{
|
||||
name = "\improper MiniSat Exterior"
|
||||
@@ -70009,7 +70009,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/explab)
|
||||
"cqC" = (
|
||||
@@ -71051,7 +71051,7 @@
|
||||
/obj/effect/landmark/start{
|
||||
name = "Medical Doctor"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/surgery)
|
||||
"csm" = (
|
||||
@@ -71995,7 +71995,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/barber{
|
||||
dir = 8
|
||||
},
|
||||
@@ -74706,7 +74706,7 @@
|
||||
},
|
||||
/area/crew_quarters/hor)
|
||||
"cyg" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/cafeteria{
|
||||
dir = 5
|
||||
},
|
||||
@@ -75051,7 +75051,7 @@
|
||||
/obj/effect/landmark/start{
|
||||
name = "Geneticist"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 6
|
||||
},
|
||||
@@ -77580,7 +77580,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/effect/landmark/start{
|
||||
name = "Scientist"
|
||||
},
|
||||
@@ -77757,7 +77757,7 @@
|
||||
})
|
||||
"cDg" = (
|
||||
/obj/item/weapon/cigbutt,
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/cafeteria{
|
||||
dir = 5
|
||||
},
|
||||
@@ -81029,7 +81029,7 @@
|
||||
/obj/effect/landmark{
|
||||
name = "lightsout"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/virology)
|
||||
"cIL" = (
|
||||
@@ -82522,7 +82522,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/assembly/robotics)
|
||||
"cKW" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/assembly/robotics)
|
||||
"cKX" = (
|
||||
@@ -87322,7 +87322,7 @@
|
||||
name = "\improper Departure Lounge"
|
||||
})
|
||||
"cTf" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/delivery,
|
||||
/area/hallway/secondary/exit{
|
||||
name = "\improper Departure Lounge"
|
||||
@@ -87611,7 +87611,7 @@
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/chapel/main)
|
||||
"cTK" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/vault,
|
||||
/area/chapel/main)
|
||||
"cTL" = (
|
||||
@@ -88371,7 +88371,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/xenobiology)
|
||||
"cUY" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable/yellow{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
@@ -90339,7 +90339,7 @@
|
||||
/obj/effect/landmark{
|
||||
name = "lightsout"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/xenobiology)
|
||||
"cYH" = (
|
||||
@@ -92751,7 +92751,7 @@
|
||||
pixel_x = 32;
|
||||
pixel_y = 0
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/escape)
|
||||
"dds" = (
|
||||
|
||||
@@ -13899,7 +13899,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tcommsat/computer)
|
||||
"FQ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/effect/landmark/start{
|
||||
name = "Cyborg"
|
||||
|
||||
@@ -371,7 +371,7 @@
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/security/transfer)
|
||||
"abh" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/security/prison)
|
||||
"abi" = (
|
||||
@@ -948,7 +948,7 @@
|
||||
/turf/open/floor/carpet,
|
||||
/area/security/hos)
|
||||
"act" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/security/hos)
|
||||
"acu" = (
|
||||
@@ -3031,7 +3031,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/main)
|
||||
"agC" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
@@ -3206,7 +3206,7 @@
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/security/warden)
|
||||
"agV" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
@@ -5353,7 +5353,7 @@
|
||||
},
|
||||
/area/crew_quarters/courtroom)
|
||||
"ald" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/crew_quarters/courtroom)
|
||||
"ale" = (
|
||||
@@ -6645,7 +6645,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/fore)
|
||||
"anS" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/fore)
|
||||
"anT" = (
|
||||
@@ -10280,7 +10280,7 @@
|
||||
icon_state = "1-2";
|
||||
pixel_y = 0
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/fitness)
|
||||
@@ -10455,7 +10455,7 @@
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -10860,7 +10860,7 @@
|
||||
/turf/closed/wall,
|
||||
/area/maintenance/fpmaint2)
|
||||
"axL" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/crew_quarters/sleep)
|
||||
@@ -12458,7 +12458,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ai_monitored/storage/eva)
|
||||
"aBo" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -17712,7 +17712,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/secondary/exit)
|
||||
"aNb" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"aNc" = (
|
||||
@@ -20872,7 +20872,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/bridge)
|
||||
"aVk" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
@@ -21040,7 +21040,7 @@
|
||||
/turf/open/floor/plasteel/bar,
|
||||
/area/crew_quarters/bar)
|
||||
"aVx" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/bar,
|
||||
/area/crew_quarters/bar)
|
||||
"aVy" = (
|
||||
@@ -22179,7 +22179,7 @@
|
||||
/turf/open/floor/carpet,
|
||||
/area/library)
|
||||
"aXV" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/library)
|
||||
"aXW" = (
|
||||
@@ -22732,7 +22732,7 @@
|
||||
},
|
||||
/area/hallway/secondary/exit)
|
||||
"aZk" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit)
|
||||
@@ -23866,7 +23866,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/ai_upload)
|
||||
"bcf" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable{
|
||||
d1 = 1;
|
||||
d2 = 2;
|
||||
@@ -24543,7 +24543,7 @@
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/crew_quarters/locker/locker_toilet)
|
||||
"bdK" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -25870,7 +25870,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/captain)
|
||||
"bgX" = (
|
||||
@@ -27206,7 +27206,7 @@
|
||||
},
|
||||
/area/medical/chemistry)
|
||||
"bjS" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/medbay)
|
||||
@@ -28018,7 +28018,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/assembly/chargebay)
|
||||
"blt" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 8
|
||||
},
|
||||
@@ -28193,7 +28193,7 @@
|
||||
},
|
||||
/area/toxins/lab)
|
||||
"blL" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/lab)
|
||||
"blM" = (
|
||||
@@ -28206,7 +28206,7 @@
|
||||
},
|
||||
/area/assembly/robotics)
|
||||
"blN" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/assembly/robotics)
|
||||
"blO" = (
|
||||
@@ -30442,7 +30442,7 @@
|
||||
/turf/open/floor/plasteel/bot,
|
||||
/area/quartermaster/office)
|
||||
"bqt" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/office)
|
||||
"bqu" = (
|
||||
@@ -30486,7 +30486,7 @@
|
||||
},
|
||||
/area/crew_quarters/heads)
|
||||
"bqB" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/carpet,
|
||||
/area/crew_quarters/heads)
|
||||
"bqC" = (
|
||||
@@ -30532,7 +30532,7 @@
|
||||
d2 = 8;
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/gravity_generator)
|
||||
"bqF" = (
|
||||
@@ -31603,7 +31603,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/explab)
|
||||
"bsG" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
|
||||
dir = 1
|
||||
},
|
||||
@@ -32100,7 +32100,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/teleporter)
|
||||
"btK" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/cable{
|
||||
d1 = 4;
|
||||
d2 = 8;
|
||||
@@ -32358,7 +32358,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/genetics)
|
||||
"bum" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/genetics)
|
||||
"bun" = (
|
||||
@@ -32917,7 +32917,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/medical/sleeper)
|
||||
"bvm" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/sleeper)
|
||||
"bvn" = (
|
||||
@@ -33794,7 +33794,7 @@
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/medical/sleeper)
|
||||
"bxc" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 8
|
||||
@@ -34423,7 +34423,7 @@
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/crew_quarters/hor)
|
||||
"byr" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/crew_quarters/hor)
|
||||
"bys" = (
|
||||
@@ -34501,7 +34501,7 @@
|
||||
},
|
||||
/area/quartermaster/qm)
|
||||
"byC" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/brown{
|
||||
dir = 1
|
||||
},
|
||||
@@ -35207,7 +35207,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"bAf" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"bAg" = (
|
||||
@@ -38242,7 +38242,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/toxins/mixing)
|
||||
"bGA" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 6
|
||||
},
|
||||
@@ -38500,7 +38500,7 @@
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/toxins/storage)
|
||||
"bGZ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/barber,
|
||||
/area/medical/cmo)
|
||||
"bHa" = (
|
||||
@@ -39488,7 +39488,7 @@
|
||||
icon_state = "1-2";
|
||||
pixel_y = 0
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -41346,7 +41346,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/aft)
|
||||
"bMH" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
|
||||
dir = 8
|
||||
},
|
||||
@@ -42339,7 +42339,7 @@
|
||||
},
|
||||
/area/atmos)
|
||||
"bOU" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -44230,7 +44230,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/break_room)
|
||||
"bTh" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/break_room)
|
||||
@@ -44457,7 +44457,7 @@
|
||||
/turf/open/floor/plasteel/red/side,
|
||||
/area/security/checkpoint/engineering)
|
||||
"bTI" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tcommsat/computer)
|
||||
@@ -49757,7 +49757,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/research{
|
||||
name = "Research Division"
|
||||
@@ -50045,7 +50045,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
"cfE" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/neutral{
|
||||
dir = 2
|
||||
},
|
||||
@@ -51403,7 +51403,7 @@
|
||||
},
|
||||
/area/engine/chiefs_office)
|
||||
"cip" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"ciq" = (
|
||||
@@ -54381,7 +54381,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/engineering)
|
||||
"coM" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -56567,7 +56567,7 @@
|
||||
/turf/open/floor/plasteel/grimy,
|
||||
/area/ai_monitored/turret_protected/aisat_interior)
|
||||
"ctJ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/structure/cable{
|
||||
d1 = 2;
|
||||
@@ -57061,7 +57061,7 @@
|
||||
name = "AI Satellite Atmospherics"
|
||||
})
|
||||
"cuC" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/AIsatextAS{
|
||||
@@ -57125,7 +57125,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
@@ -57161,7 +57161,7 @@
|
||||
name = "AI Satellite Service"
|
||||
})
|
||||
"cuJ" = (
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
@@ -57899,7 +57899,7 @@
|
||||
d2 = 2;
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/AIsatextFS{
|
||||
@@ -58229,7 +58229,7 @@
|
||||
d2 = 8;
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 9;
|
||||
pixel_y = 0
|
||||
@@ -60175,7 +60175,7 @@
|
||||
icon_state = "alarm0";
|
||||
pixel_y = -22
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel/black,
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
"cBf" = (
|
||||
|
||||
@@ -302,7 +302,7 @@
|
||||
pixel_x = 32;
|
||||
pixel_y = 0
|
||||
},
|
||||
/obj/machinery/hologram/holopad,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/escape)
|
||||
"aO" = (
|
||||
|
||||
@@ -45,13 +45,10 @@
|
||||
if(affected_mob.notransform)
|
||||
return
|
||||
affected_mob.notransform = 1
|
||||
for(var/obj/item/W in affected_mob)
|
||||
if(istype(W, /obj/item/weapon/implant))
|
||||
qdel(W)
|
||||
continue
|
||||
W.layer = initial(W.layer)
|
||||
W.loc = affected_mob.loc
|
||||
W.dropped(affected_mob)
|
||||
for(var/obj/item/W in affected_mob.get_equipped_items())
|
||||
affected_mob.unEquip(W)
|
||||
for(var/obj/item/I in affected_mob.held_items)
|
||||
affected_mob.unEquip(I)
|
||||
var/mob/living/new_mob = new new_form(affected_mob.loc)
|
||||
if(istype(new_mob))
|
||||
new_mob.a_intent = "harm"
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
text += " <a href='?src=\ref[src];revolution=reequip'>Reequip</a> (gives traitor uplink)."
|
||||
if (objectives.len==0)
|
||||
text += "<br>Objectives are empty! <a href='?src=\ref[src];revolution=autoobjectives'>Set to kill all heads</a>."
|
||||
else if(isloyal(current))
|
||||
else if(current.isloyal())
|
||||
text += "head|<b>LOYAL</b>|employee|<a href='?src=\ref[src];revolution=headrev'>headrev</a>|rev"
|
||||
else if (src in ticker.mode.revolutionaries)
|
||||
text += "head|loyal|<a href='?src=\ref[src];revolution=clear'>employee</a>|<a href='?src=\ref[src];revolution=headrev'>headrev</a>|<b>REV</b>"
|
||||
@@ -316,7 +316,7 @@
|
||||
if (ticker.mode.config_tag=="gang")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
text += "[isloyal(current) ? "<B>LOYAL</B>" : "loyal"]|"
|
||||
text += "[current.isloyal() ? "<B>LOYAL</B>" : "loyal"]|"
|
||||
if(src in ticker.mode.get_all_gangsters())
|
||||
text += "<a href='?src=\ref[src];gang=clear'>none</a>"
|
||||
else
|
||||
@@ -423,7 +423,7 @@
|
||||
text += "loyal|<a href='?src=\ref[src];cult=clear'>employee</a>|<b>CULTIST</b>"
|
||||
text += "<br>Give <a href='?src=\ref[src];cult=tome'>tome</a>|<a href='?src=\ref[src];cult=amulet'>amulet</a>."
|
||||
|
||||
else if(isloyal(current))
|
||||
else if(current.isloyal())
|
||||
text += "<b>LOYAL</b>|employee|<a href='?src=\ref[src];cult=cultist'>cultist</a>"
|
||||
else if(is_convertable_to_cult(current))
|
||||
text += "loyal|<b>EMPLOYEE</b>|<a href='?src=\ref[src];cult=cultist'>cultist</a>"
|
||||
@@ -445,7 +445,7 @@
|
||||
if(is_servant_of_ratvar(current))
|
||||
text += "loyal|<a href='?src=\ref[src];clockcult=clear'>employee</a>|<b>SERVANT</b>"
|
||||
text += "<br><a href='?src=\ref[src];clockcult=slab'>Give slab</a>"
|
||||
else if(isloyal(current))
|
||||
else if(current.isloyal())
|
||||
text += "<b>LOYAL</b>|employee|<a href='?src=\ref[src];clockcult=servant'>servant</a>"
|
||||
else if(is_eligible_servant(current))
|
||||
text += "loyal|<b>EMPLOYEE</b>|<a href='?src=\ref[src];clockcult=servant'>servant</a>"
|
||||
|
||||
@@ -201,9 +201,7 @@
|
||||
return
|
||||
|
||||
/atom/proc/contents_explosion(severity, target)
|
||||
for(var/atom/A in contents)
|
||||
A.ex_act(severity, target)
|
||||
CHECK_TICK
|
||||
return
|
||||
|
||||
/atom/proc/ex_act(severity, target)
|
||||
contents_explosion(severity, target)
|
||||
|
||||
@@ -198,23 +198,22 @@
|
||||
for(var/i in list(IMPTRACK_HUD, IMPLOYAL_HUD, IMPCHEM_HUD))
|
||||
holder = hud_list[i]
|
||||
holder.icon_state = null
|
||||
for(var/obj/item/weapon/implant/I in src)
|
||||
if(I.implanted)
|
||||
if(istype(I,/obj/item/weapon/implant/tracking))
|
||||
holder = hud_list[IMPTRACK_HUD]
|
||||
var/icon/IC = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = IC.Height() - world.icon_size
|
||||
holder.icon_state = "hud_imp_tracking"
|
||||
else if(istype(I,/obj/item/weapon/implant/mindshield))
|
||||
holder = hud_list[IMPLOYAL_HUD]
|
||||
var/icon/IC = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = IC.Height() - world.icon_size
|
||||
holder.icon_state = "hud_imp_loyal"
|
||||
else if(istype(I,/obj/item/weapon/implant/chem))
|
||||
holder = hud_list[IMPCHEM_HUD]
|
||||
var/icon/IC = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = IC.Height() - world.icon_size
|
||||
holder.icon_state = "hud_imp_chem"
|
||||
for(var/obj/item/weapon/implant/I in implants)
|
||||
if(istype(I,/obj/item/weapon/implant/tracking))
|
||||
holder = hud_list[IMPTRACK_HUD]
|
||||
var/icon/IC = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = IC.Height() - world.icon_size
|
||||
holder.icon_state = "hud_imp_tracking"
|
||||
else if(istype(I,/obj/item/weapon/implant/mindshield))
|
||||
holder = hud_list[IMPLOYAL_HUD]
|
||||
var/icon/IC = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = IC.Height() - world.icon_size
|
||||
holder.icon_state = "hud_imp_loyal"
|
||||
else if(istype(I,/obj/item/weapon/implant/chem))
|
||||
holder = hud_list[IMPCHEM_HUD]
|
||||
var/icon/IC = icon(icon, icon_state, dir)
|
||||
holder.pixel_y = IC.Height() - world.icon_size
|
||||
holder.icon_state = "hud_imp_chem"
|
||||
|
||||
/mob/living/carbon/human/proc/sec_hud_set_security_status()
|
||||
var/image/holder = hud_list[WANTED_HUD]
|
||||
|
||||
@@ -55,7 +55,7 @@ Credit where due:
|
||||
return 0
|
||||
else
|
||||
return 0
|
||||
if(iscultist(M) || isconstruct(M) || isloyal(M))
|
||||
if(iscultist(M) || isconstruct(M) || M.isloyal())
|
||||
return 0
|
||||
if(ishuman(M) || isbrain(M) || isguardian(M) || issilicon(M) || isclockmob(M) || istype(M, /mob/living/simple_animal/drone/cogscarab))
|
||||
return 1
|
||||
|
||||
@@ -1086,7 +1086,7 @@ Judgement: 10 servants, 100 CV, and any existing AIs are converted or destroyed
|
||||
H << "<span class='sevtug'>[text2ratvar("Oh, a void weapon. How annoying, I may as well not bother.")]</span>\n\
|
||||
<span class='warning'>Your holy weapon glows a faint orange in an attempt to defend your mind!</span>"
|
||||
messaged = TRUE
|
||||
if(isloyal(H))
|
||||
if(H.isloyal())
|
||||
visualsdistance = round(visualsdistance * 0.5) //half effect for shielded targets
|
||||
minordistance = round(minordistance * 0.5)
|
||||
majordistance = round(majordistance * 0.5)
|
||||
|
||||
@@ -827,13 +827,13 @@
|
||||
resist_string = "glows bright orange"
|
||||
|
||||
/obj/effect/clockwork/sigil/submission/accession/post_channel(mob/living/L)
|
||||
if(isloyal(L))
|
||||
if(L.isloyal())
|
||||
var/mob/living/carbon/C = L
|
||||
delete_on_finish = TRUE
|
||||
L.visible_message("<span class='warning'>[L] visibly trembles!</span>", \
|
||||
C.visible_message("<span class='warning'>[C] visibly trembles!</span>", \
|
||||
"<span class='sevtug'>[text2ratvar("You will be mine and his. This puny trinket will not stop me.")]</span>")
|
||||
for(var/obj/item/weapon/implant/mindshield/M in L)
|
||||
if(M.implanted)
|
||||
qdel(M)
|
||||
for(var/obj/item/weapon/implant/mindshield/M in C.implants)
|
||||
qdel(M)
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission
|
||||
name = "suspicious sigil"
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
return 0
|
||||
else
|
||||
return 0
|
||||
if(isloyal(M) || issilicon(M) || isbot(M) || isdrone(M) || is_servant_of_ratvar(M))
|
||||
if(M.isloyal() || issilicon(M) || isbot(M) || isdrone(M) || is_servant_of_ratvar(M))
|
||||
return 0 //can't convert machines, shielded, or ratvar's dogs
|
||||
return 1
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple"
|
||||
/datum/game_mode/proc/add_gangster(datum/mind/gangster_mind, datum/gang/G, check = 1)
|
||||
if(!G || (gangster_mind in get_all_gangsters()) || (gangster_mind.enslaved_to && !is_gangster(gangster_mind.enslaved_to)))
|
||||
return 0
|
||||
if(check && isloyal(gangster_mind.current)) //Check to see if the potential gangster is implanted
|
||||
if(check && gangster_mind.current.isloyal()) //Check to see if the potential gangster is implanted
|
||||
return 1
|
||||
G.gangsters += gangster_mind
|
||||
gangster_mind.gang_datum = G
|
||||
|
||||
@@ -57,64 +57,3 @@
|
||||
icon_state = "pen"
|
||||
var/mob/M = get(src, /mob)
|
||||
M << "<span class='notice'>\icon[src] [src][(src.loc == M)?(""):(" in your [src.loc]")] vibrates softly. It is ready to be used again.</span>"
|
||||
|
||||
|
||||
//////////////
|
||||
// IMPLANTS //
|
||||
//////////////
|
||||
|
||||
/obj/item/weapon/implant/gang
|
||||
name = "gang implant"
|
||||
desc = "Makes you a gangster or such."
|
||||
activated = 0
|
||||
origin_tech = "materials=2;biotech=4;programming=4;syndicate=3"
|
||||
var/datum/gang/gang
|
||||
|
||||
/obj/item/weapon/implant/gang/New(loc,var/setgang)
|
||||
..()
|
||||
gang = setgang
|
||||
|
||||
/obj/item/weapon/implant/gang/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Criminal brainwash implant<BR>
|
||||
<b>Life:</b> A few seconds after injection.<BR>
|
||||
<b>Important Notes:</b> Illegal<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Contains a small pod of nanobots that change the host's brain to be loyal to a certain organization.<BR>
|
||||
<b>Special Features:</b> This device will also emit a small EMP pulse, destroying any other implants within the host's brain.<BR>
|
||||
<b>Integrity:</b> Implant's EMP function will destroy itself in the process."}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/gang/implant(mob/target)
|
||||
if(..())
|
||||
for(var/obj/item/weapon/implant/I in target)
|
||||
if(I != src)
|
||||
qdel(I)
|
||||
|
||||
if(!target.mind || target.stat == DEAD)
|
||||
return 0
|
||||
|
||||
var/success
|
||||
if(target.mind in ticker.mode.get_gangsters())
|
||||
if(ticker.mode.remove_gangster(target.mind,0,1))
|
||||
success = 1 //Was not a gang boss, convert as usual
|
||||
else
|
||||
success = 1
|
||||
|
||||
if(ishuman(target))
|
||||
if(!success)
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the influence of your enemies try to invade your mind!</span>")
|
||||
|
||||
qdel(src)
|
||||
return -1
|
||||
|
||||
/obj/item/weapon/implanter/gang
|
||||
name = "implanter (gang)"
|
||||
|
||||
/obj/item/weapon/implanter/gang/New(loc, var/gang)
|
||||
if(!gang)
|
||||
qdel(src)
|
||||
return
|
||||
imp = new /obj/item/weapon/implant/gang(src,gang)
|
||||
..()
|
||||
|
||||
@@ -243,54 +243,6 @@
|
||||
if(!istype(I,/obj/item/device/radio/headset))
|
||||
r.broadcasting = 0 //goddamned headset hacks
|
||||
|
||||
|
||||
/obj/item/weapon/implant/abductor
|
||||
name = "recall implant"
|
||||
desc = "Returns you to the mothership."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "implant"
|
||||
activated = 1
|
||||
origin_tech = "materials=2;biotech=7;magnets=4;bluespace=4;abductor=5"
|
||||
var/obj/machinery/abductor/pad/home
|
||||
var/cooldown = 30
|
||||
|
||||
/obj/item/weapon/implant/abductor/activate()
|
||||
if(cooldown == initial(cooldown))
|
||||
home.Retrieve(imp_in,1)
|
||||
cooldown = 0
|
||||
START_PROCESSING(SSobj, src)
|
||||
else
|
||||
imp_in << "<span class='warning'>You must wait [30 - cooldown] seconds to use [src] again!</span>"
|
||||
|
||||
/obj/item/weapon/implant/abductor/process()
|
||||
if(cooldown < initial(cooldown))
|
||||
cooldown++
|
||||
if(cooldown == initial(cooldown))
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/weapon/implant/abductor/implant(var/mob/source, var/mob/user)
|
||||
if(..())
|
||||
var/obj/machinery/abductor/console/console
|
||||
if(ishuman(source))
|
||||
var/mob/living/carbon/human/H = source
|
||||
if(H.dna.species.id == "abductor")
|
||||
var/datum/species/abductor/S = H.dna.species
|
||||
console = get_team_console(S.team)
|
||||
home = console.pad
|
||||
|
||||
if(!home)
|
||||
console = get_team_console(pick(1, 2, 3, 4))
|
||||
home = console.pad
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/implant/abductor/proc/get_team_console(var/team)
|
||||
var/obj/machinery/abductor/console/console
|
||||
for(var/obj/machinery/abductor/console/c in machines)
|
||||
if(c.team == team)
|
||||
console = c
|
||||
break
|
||||
return console
|
||||
|
||||
/obj/item/device/firing_pin/abductor
|
||||
name = "alien firing pin"
|
||||
icon_state = "firing_pin_ayy"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.dna.species.id == "abductor")
|
||||
return 1
|
||||
if((locate(/obj/item/weapon/implant/abductor) in H))
|
||||
for(var/obj/item/weapon/implant/abductor/A in H.implants)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
@@ -238,7 +238,7 @@
|
||||
if(rev_mind.assigned_role in command_positions)
|
||||
return 0
|
||||
var/mob/living/carbon/human/H = rev_mind.current//Check to see if the potential rev is implanted
|
||||
if(isloyal(H))
|
||||
if(H.isloyal())
|
||||
return 0
|
||||
if((rev_mind in revolutionaries) || (rev_mind in head_revolutionaries))
|
||||
return 0
|
||||
|
||||
@@ -416,10 +416,10 @@ var/global/list/multiverse = list()
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_store)
|
||||
M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store)
|
||||
M.put_in_hands_or_del(sword)
|
||||
for(var/obj/item/carried_item in M.contents)
|
||||
if(!istype(carried_item, /obj/item/weapon/implant))
|
||||
carried_item.add_mob_blood(M)
|
||||
|
||||
for(var/obj/item/carried_item in M.get_equipped_items())
|
||||
carried_item.add_mob_blood(M)
|
||||
for(var/obj/item/I in M.held_items)
|
||||
I.add_mob_blood(M)
|
||||
if("pirate")
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(M), slot_shoes)
|
||||
|
||||
@@ -41,6 +41,25 @@
|
||||
|
||||
src.colorlist += D
|
||||
|
||||
/obj/machinery/pdapainter/Destroy()
|
||||
if(storedpda)
|
||||
qdel(storedpda)
|
||||
storedpda = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/pdapainter/on_deconstruction()
|
||||
if(storedpda)
|
||||
storedpda.forceMove(loc)
|
||||
storedpda = null
|
||||
|
||||
/obj/machinery/pdapainter/contents_explosion(severity, target)
|
||||
if(storedpda)
|
||||
storedpda.ex_act(severity, target)
|
||||
|
||||
/obj/machinery/pdapainter/handle_atom_del(atom/A)
|
||||
if(A == storedpda)
|
||||
storedpda = null
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/pdapainter/attackby(obj/item/O, mob/user, params)
|
||||
if(default_unfasten_wrench(user, O))
|
||||
|
||||
@@ -98,23 +98,6 @@
|
||||
..()
|
||||
user << "The write-protect tab is set to [read_only ? "protected" : "unprotected"]."
|
||||
|
||||
//Health Tracker Implant
|
||||
|
||||
/obj/item/weapon/implant/health
|
||||
name = "health implant"
|
||||
activated = 0
|
||||
var/healthstring = ""
|
||||
|
||||
/obj/item/weapon/implant/health/proc/sensehealth()
|
||||
if (!implanted)
|
||||
return "ERROR"
|
||||
else
|
||||
if(isliving(implanted))
|
||||
var/mob/living/L = implanted
|
||||
healthstring = "<small>Oxygen Deprivation Damage => [round(L.getOxyLoss())]<br />Fire Damage => [round(L.getFireLoss())]<br />Toxin Damage => [round(L.getToxLoss())]<br />Brute Force Damage => [round(L.getBruteLoss())]</small>"
|
||||
if (!healthstring)
|
||||
healthstring = "ERROR"
|
||||
return healthstring
|
||||
|
||||
//Clonepod
|
||||
|
||||
@@ -377,6 +360,13 @@
|
||||
/obj/machinery/clonepod/ex_act(severity, target)
|
||||
..()
|
||||
if(!qdeleted(src))
|
||||
locked = FALSE
|
||||
go_out()
|
||||
|
||||
/obj/machinery/clonepod/handle_atom_del(atom/A)
|
||||
if(A == occupant)
|
||||
occupant = null
|
||||
locked = FALSE
|
||||
go_out()
|
||||
|
||||
/obj/machinery/clonepod/deconstruct(disassembled = TRUE)
|
||||
|
||||
@@ -67,6 +67,32 @@ var/time_last_changed_position = 0
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/card/Destroy()
|
||||
if(scan)
|
||||
qdel(scan)
|
||||
scan = null
|
||||
if(modify)
|
||||
qdel(modify)
|
||||
modify = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/computer/card/handle_atom_del(atom/A)
|
||||
..()
|
||||
if(A == scan)
|
||||
scan = null
|
||||
updateUsrDialog()
|
||||
if(A == modify)
|
||||
modify = null
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/computer/card/on_deconstruction()
|
||||
if(scan)
|
||||
scan.forceMove(loc)
|
||||
scan = null
|
||||
if(modify)
|
||||
modify.forceMove(loc)
|
||||
modify = null
|
||||
|
||||
//Check if you can't open a new position for a certain job
|
||||
/obj/machinery/computer/card/proc/job_blacklisted(jobtitle)
|
||||
return (jobtitle in blacklisted)
|
||||
|
||||
@@ -384,15 +384,16 @@
|
||||
R.fields["blood_type"] = subject.dna.blood_type
|
||||
R.fields["features"] = subject.dna.features
|
||||
R.fields["factions"] = subject.faction
|
||||
|
||||
//Add an implant if needed
|
||||
var/obj/item/weapon/implant/health/imp = locate(/obj/item/weapon/implant/health, subject)
|
||||
var/obj/item/weapon/implant/health/imp
|
||||
for(var/obj/item/weapon/implant/health/HI in subject.implants)
|
||||
imp = HI
|
||||
break
|
||||
if(!imp)
|
||||
imp = new /obj/item/weapon/implant/health(subject)
|
||||
imp.implanted = subject
|
||||
R.fields["imp"] = "\ref[imp]"
|
||||
//Update it if needed
|
||||
else
|
||||
R.fields["imp"] = "\ref[imp]"
|
||||
imp.implant(subject)
|
||||
R.fields["imp"] = "\ref[imp]"
|
||||
|
||||
if (!isnull(subject.mind)) //Save that mind so traitors can continue traitoring after cloning.
|
||||
R.fields["mind"] = "\ref[subject.mind]"
|
||||
|
||||
@@ -169,6 +169,12 @@ var/list/airlock_overlays = list()
|
||||
/obj/machinery/door/airlock/Destroy()
|
||||
qdel(wires)
|
||||
wires = null
|
||||
if(charge)
|
||||
qdel(charge)
|
||||
charge = null
|
||||
if(electronics)
|
||||
qdel(electronics)
|
||||
electronics = null
|
||||
if (cyclelinkedairlock)
|
||||
if (cyclelinkedairlock.cyclelinkedairlock == src)
|
||||
cyclelinkedairlock.cyclelinkedairlock = null
|
||||
@@ -882,7 +888,7 @@ var/list/airlock_overlays = list()
|
||||
user.drop_item()
|
||||
panel_open = 0
|
||||
update_icon()
|
||||
C.loc = src
|
||||
C.forceMove(src)
|
||||
charge = C
|
||||
else
|
||||
return ..()
|
||||
@@ -921,7 +927,7 @@ var/list/airlock_overlays = list()
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] removes [charge] from [src].</span>", \
|
||||
"<span class='notice'>You gently pry out [charge] from [src] and unhook its wires.</span>")
|
||||
charge.loc = get_turf(user)
|
||||
charge.forceMove(get_turf(user))
|
||||
charge = null
|
||||
return
|
||||
if( beingcrowbarred && (density && welded && !operating && src.panel_open && (!hasPower()) && !src.locked) )
|
||||
|
||||
@@ -31,7 +31,7 @@ Possible to do for anyone motivated enough:
|
||||
|
||||
var/const/HOLOPAD_MODE = RANGE_BASED
|
||||
|
||||
/obj/machinery/hologram/holopad
|
||||
/obj/machinery/holopad
|
||||
name = "\improper AI holopad"
|
||||
desc = "It's a floor-mounted device for projecting holographic images. It is activated remotely."
|
||||
icon_state = "holopad0"
|
||||
@@ -39,6 +39,10 @@ var/const/HOLOPAD_MODE = RANGE_BASED
|
||||
flags = HEAR
|
||||
languages_spoken = ROBOT | HUMAN
|
||||
languages_understood = ROBOT | HUMAN
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 5
|
||||
active_power_usage = 100
|
||||
obj_integrity = 300
|
||||
max_integrity = 300
|
||||
armor = list(melee = 50, bullet = 20, laser = 20, energy = 20, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 0)
|
||||
@@ -47,25 +51,29 @@ var/const/HOLOPAD_MODE = RANGE_BASED
|
||||
var/holo_range = 5 // Change to change how far the AI can move away from the holopad before deactivating.
|
||||
var/temp = ""
|
||||
|
||||
/obj/machinery/hologram/holopad/New()
|
||||
/obj/machinery/holopad/New()
|
||||
..()
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/holopad(null)
|
||||
B.apply_default_parts(src)
|
||||
|
||||
/obj/item/weapon/circuitboard/machine/holopad
|
||||
name = "circuit board (AI Holopad)"
|
||||
build_path = /obj/machinery/hologram/holopad
|
||||
origin_tech = "programming=1"
|
||||
req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
|
||||
/obj/machinery/holopad/Destroy()
|
||||
for (var/mob/living/silicon/ai/master in masters)
|
||||
clear_holo(master)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/holo_pad/power_change()
|
||||
if (powered())
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
stat |= ~NOPOWER
|
||||
|
||||
/obj/machinery/hologram/holopad/RefreshParts()
|
||||
/obj/machinery/holopad/RefreshParts()
|
||||
var/holograph_range = 4
|
||||
for(var/obj/item/weapon/stock_parts/capacitor/B in component_parts)
|
||||
holograph_range += 1 * B.rating
|
||||
holo_range = holograph_range
|
||||
|
||||
/obj/machinery/hologram/holopad/attackby(obj/item/P, mob/user, params)
|
||||
/obj/machinery/holopad/attackby(obj/item/P, mob/user, params)
|
||||
if(default_deconstruction_screwdriver(user, "holopad_open", "holopad0", P))
|
||||
return
|
||||
|
||||
@@ -82,11 +90,10 @@ var/const/HOLOPAD_MODE = RANGE_BASED
|
||||
return
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/hologram/holopad/AltClick(mob/living/carbon/human/user)
|
||||
/obj/machinery/holopad/AltClick(mob/living/carbon/human/user)
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/hologram/holopad/interact(mob/living/carbon/human/user) //Carn: Hologram requests.
|
||||
/obj/machinery/holopad/interact(mob/living/carbon/human/user) //Carn: Hologram requests.
|
||||
if(!istype(user))
|
||||
return
|
||||
if(user.stat || stat & (NOPOWER|BROKEN))
|
||||
@@ -103,7 +110,7 @@ var/const/HOLOPAD_MODE = RANGE_BASED
|
||||
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
|
||||
popup.open()
|
||||
|
||||
/obj/machinery/hologram/holopad/Topic(href, href_list)
|
||||
/obj/machinery/holopad/Topic(href, href_list)
|
||||
if(..())
|
||||
return
|
||||
if (href_list["AIrequest"])
|
||||
@@ -126,7 +133,7 @@ var/const/HOLOPAD_MODE = RANGE_BASED
|
||||
updateDialog()
|
||||
add_fingerprint(usr)
|
||||
|
||||
/obj/machinery/hologram/holopad/attack_ai(mob/living/silicon/ai/user)
|
||||
/obj/machinery/holopad/attack_ai(mob/living/silicon/ai/user)
|
||||
if (!istype(user))
|
||||
return
|
||||
/*There are pretty much only three ways to interact here.
|
||||
@@ -138,55 +145,8 @@ var/const/HOLOPAD_MODE = RANGE_BASED
|
||||
activate_holo(user)
|
||||
else//If there is a hologram, remove it.
|
||||
clear_holo(user)
|
||||
return
|
||||
|
||||
/obj/machinery/hologram/holopad/proc/activate_holo(mob/living/silicon/ai/user)
|
||||
if(!(stat & NOPOWER) && user.eyeobj.loc == src.loc)//If the projector has power and client eye is on it
|
||||
if (istype(user.current, /obj/machinery/hologram/holopad))
|
||||
user << "<span class='danger'>ERROR:</span> \black Image feed in progress."
|
||||
return
|
||||
create_holo(user)//Create one.
|
||||
src.visible_message("A holographic image of [user] flicks to life right before your eyes!")
|
||||
else
|
||||
user << "<span class='danger'>ERROR:</span> \black Unable to project hologram."
|
||||
return
|
||||
|
||||
/*This is the proc for special two-way communication between AI and holopad/people talking near holopad.
|
||||
For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
/obj/machinery/hologram/holopad/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||
if(speaker && masters.len && !radio_freq)//Master is mostly a safety in case lag hits or something. Radio_freq so AIs dont hear holopad stuff through radios.
|
||||
for(var/mob/living/silicon/ai/master in masters)
|
||||
if(masters[master] && speaker != master)
|
||||
master.relay_speech(message, speaker, message_langs, raw_message, radio_freq, spans)
|
||||
|
||||
/obj/machinery/hologram/holopad/proc/create_holo(mob/living/silicon/ai/A, turf/T = loc)
|
||||
var/obj/effect/overlay/holo_pad_hologram/h = new(T)//Spawn a blank effect at the location.
|
||||
h.icon = A.holo_icon
|
||||
h.mouse_opacity = 0//So you can't click on it.
|
||||
h.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them.
|
||||
h.anchored = 1//So space wind cannot drag it.
|
||||
h.name = "[A.name] (Hologram)"//If someone decides to right click.
|
||||
h.SetLuminosity(2) //hologram lighting
|
||||
masters[A] = h
|
||||
SetLuminosity(2) //pad lighting
|
||||
icon_state = "holopad1"
|
||||
A.current = src
|
||||
use_power += HOLOGRAM_POWER_USAGE
|
||||
return 1
|
||||
|
||||
/obj/machinery/hologram/holopad/proc/clear_holo(mob/living/silicon/ai/user)
|
||||
if(user.current == src)
|
||||
user.current = null
|
||||
qdel(masters[user])//Get rid of user's hologram
|
||||
masters -= user //Discard AI from the list of those who use holopad
|
||||
use_power = max(HOLOPAD_PASSIVE_POWER_USAGE, use_power - HOLOGRAM_POWER_USAGE)//Reduce power usage
|
||||
if (!masters.len)//If no users left
|
||||
SetLuminosity(0) //pad lighting (hologram lighting will be handled automatically since its owner was deleted)
|
||||
icon_state = "holopad0"
|
||||
use_power = HOLOPAD_PASSIVE_POWER_USAGE
|
||||
return 1
|
||||
|
||||
/obj/machinery/hologram/holopad/process()
|
||||
/obj/machinery/holopad/process()
|
||||
if(masters.len)//If there is a hologram.
|
||||
for (var/mob/living/silicon/ai/master in masters)
|
||||
if(master && !master.stat && master.client && master.eyeobj)//If there is an AI attached, it's not incapacitated, it has a client, and the client eye is centered on the projector.
|
||||
@@ -205,7 +165,52 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
clear_holo(master)//If not, we want to get rid of the hologram.
|
||||
return 1
|
||||
|
||||
/obj/machinery/hologram/holopad/proc/move_hologram(mob/living/silicon/ai/user)
|
||||
/obj/machinery/holopad/proc/activate_holo(mob/living/silicon/ai/user)
|
||||
if(!(stat & NOPOWER) && user.eyeobj.loc == src.loc)//If the projector has power and client eye is on it
|
||||
if (istype(user.current, /obj/machinery/holopad))
|
||||
user << "<span class='danger'>ERROR:</span> \black Image feed in progress."
|
||||
return
|
||||
create_holo(user)//Create one.
|
||||
src.visible_message("A holographic image of [user] flicks to life right before your eyes!")
|
||||
else
|
||||
user << "<span class='danger'>ERROR:</span> \black Unable to project hologram."
|
||||
|
||||
/*This is the proc for special two-way communication between AI and holopad/people talking near holopad.
|
||||
For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
/obj/machinery/holopad/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans)
|
||||
if(speaker && masters.len && !radio_freq)//Master is mostly a safety in case lag hits or something. Radio_freq so AIs dont hear holopad stuff through radios.
|
||||
for(var/mob/living/silicon/ai/master in masters)
|
||||
if(masters[master] && speaker != master)
|
||||
master.relay_speech(message, speaker, message_langs, raw_message, radio_freq, spans)
|
||||
|
||||
/obj/machinery/holopad/proc/create_holo(mob/living/silicon/ai/A, turf/T = loc)
|
||||
var/obj/effect/overlay/holo_pad_hologram/h = new(T)//Spawn a blank effect at the location.
|
||||
h.icon = A.holo_icon
|
||||
h.mouse_opacity = 0//So you can't click on it.
|
||||
h.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them.
|
||||
h.anchored = 1//So space wind cannot drag it.
|
||||
h.name = "[A.name] (Hologram)"//If someone decides to right click.
|
||||
h.SetLuminosity(2) //hologram lighting
|
||||
masters[A] = h
|
||||
SetLuminosity(2) //pad lighting
|
||||
icon_state = "holopad1"
|
||||
A.current = src
|
||||
use_power += HOLOGRAM_POWER_USAGE
|
||||
return 1
|
||||
|
||||
/obj/machinery/holopad/proc/clear_holo(mob/living/silicon/ai/user)
|
||||
if(user.current == src)
|
||||
user.current = null
|
||||
qdel(masters[user])//Get rid of user's hologram
|
||||
masters -= user //Discard AI from the list of those who use holopad
|
||||
use_power = max(HOLOPAD_PASSIVE_POWER_USAGE, use_power - HOLOGRAM_POWER_USAGE)//Reduce power usage
|
||||
if (!masters.len)//If no users left
|
||||
SetLuminosity(0) //pad lighting (hologram lighting will be handled automatically since its owner was deleted)
|
||||
icon_state = "holopad0"
|
||||
use_power = HOLOPAD_PASSIVE_POWER_USAGE
|
||||
return 1
|
||||
|
||||
/obj/machinery/holopad/proc/move_hologram(mob/living/silicon/ai/user)
|
||||
if(masters[user])
|
||||
step_to(masters[user], user.eyeobj) // So it turns.
|
||||
var/obj/effect/overlay/holo_pad_hologram/H = masters[user]
|
||||
@@ -213,45 +218,14 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
|
||||
masters[user] = H
|
||||
return 1
|
||||
|
||||
|
||||
/obj/effect/overlay/holo_pad_hologram/Process_Spacemove(movement_dir = 0)
|
||||
return 1
|
||||
|
||||
/*
|
||||
* Hologram
|
||||
*/
|
||||
|
||||
/obj/machinery/hologram
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 5
|
||||
active_power_usage = 100
|
||||
|
||||
/obj/machinery/hologram/power_change()
|
||||
if (powered())
|
||||
stat &= ~NOPOWER
|
||||
else
|
||||
stat |= ~NOPOWER
|
||||
|
||||
//Destruction procs.
|
||||
/obj/machinery/hologram/ex_act(severity, target)
|
||||
switch(severity)
|
||||
if(1)
|
||||
qdel(src)
|
||||
if(2)
|
||||
if (prob(50))
|
||||
qdel(src)
|
||||
if(3)
|
||||
if (prob(5))
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/machinery/hologram/holopad/Destroy()
|
||||
for (var/mob/living/silicon/ai/master in masters)
|
||||
clear_holo(master)
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/weapon/circuitboard/machine/holopad
|
||||
name = "circuit board (AI Holopad)"
|
||||
build_path = /obj/machinery/holopad
|
||||
origin_tech = "programming=1"
|
||||
req_components = list(/obj/item/weapon/stock_parts/capacitor = 1)
|
||||
|
||||
#undef RANGE_BASED
|
||||
#undef AREA_BASED
|
||||
|
||||
@@ -322,6 +322,16 @@ Class Procs:
|
||||
if(!(flags & NODECONSTRUCT))
|
||||
stat |= BROKEN
|
||||
|
||||
/obj/machinery/contents_explosion(severity, target)
|
||||
if(occupant)
|
||||
occupant.ex_act(severity, target)
|
||||
|
||||
/obj/machinery/handle_atom_del(atom/A)
|
||||
if(A == occupant)
|
||||
occupant = null
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/proc/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/weapon/screwdriver/S)
|
||||
if(istype(S) && !(flags & NODECONSTRUCT))
|
||||
playsound(loc, S.usesound, 50, 1)
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
icon_state = "mecha_equip"
|
||||
force = 5
|
||||
origin_tech = "materials=2;engineering=2"
|
||||
obj_integrity = 300
|
||||
max_integrity = 300
|
||||
var/equip_cooldown = 0 // cooldown after use
|
||||
var/equip_ready = 1 //whether the equipment is ready for use. (or deactivated/activated for static stuff)
|
||||
var/energy_drain = 0
|
||||
|
||||
@@ -58,6 +58,7 @@
|
||||
var/obj/machinery/atmospherics/components/unary/portables_connector/connected_port = null
|
||||
|
||||
var/obj/item/device/radio/radio = null
|
||||
var/list/trackers = list()
|
||||
|
||||
var/max_temperature = 25000
|
||||
var/internal_damage_threshold = 50 //health percentage below which internal damage is possible
|
||||
@@ -608,10 +609,10 @@
|
||||
//Allows the Malf to scan a mech's status and loadout, helping it to decide if it is a worthy chariot.
|
||||
if(user.can_dominate_mechs)
|
||||
examine(user) //Get diagnostic information!
|
||||
var/obj/item/mecha_parts/mecha_tracking/B = locate(/obj/item/mecha_parts/mecha_tracking) in src
|
||||
if(B) //Beacons give the AI more detailed mech information.
|
||||
for(var/obj/item/mecha_parts/mecha_tracking/B in trackers)
|
||||
user << "<span class='danger'>Warning: Tracking Beacon detected. Enter at your own risk. Beacon Data:"
|
||||
user << "[B.get_mecha_info()]"
|
||||
break
|
||||
//Nothing like a big, red link to make the player feel powerful!
|
||||
user << "<a href='?src=\ref[user];ai_take_control=\ref[src]'><span class='userdanger'>ASSUME DIRECT CONTROL?</span></a><br>"
|
||||
|
||||
|
||||
@@ -16,7 +16,10 @@
|
||||
var/dat = "<html><head><title>[src.name]</title><style>h3 {margin: 0px; padding: 0px;}</style></head><body>"
|
||||
if(screen == 0)
|
||||
dat += "<h3>Tracking beacons data</h3>"
|
||||
for(var/obj/item/mecha_parts/mecha_tracking/TR in world)
|
||||
var/list/trackerlist = list()
|
||||
for(var/obj/mecha/MC in mechas_list)
|
||||
trackerlist += MC.trackers
|
||||
for(var/obj/item/mecha_parts/mecha_tracking/TR in trackerlist)
|
||||
var/answer = TR.get_mecha_info()
|
||||
if(answer)
|
||||
dat += {"<hr>[answer]<br/>
|
||||
@@ -86,11 +89,13 @@
|
||||
|
||||
/obj/item/mecha_parts/mecha_tracking/emp_act()
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/item/mecha_parts/mecha_tracking/ex_act()
|
||||
qdel(src)
|
||||
return
|
||||
/obj/item/mecha_parts/mecha_tracking/Destroy()
|
||||
if(istype(loc, /obj/mecha))
|
||||
var/obj/mecha/M = loc
|
||||
if(src in M.trackers)
|
||||
M.trackers -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/mecha_parts/mecha_tracking/proc/in_mecha()
|
||||
if(istype(src.loc, /obj/mecha))
|
||||
@@ -104,7 +109,7 @@
|
||||
qdel(src)
|
||||
|
||||
/obj/item/mecha_parts/mecha_tracking/proc/get_mecha_log()
|
||||
if(!src.in_mecha())
|
||||
if(!istype(loc, /obj/mecha))
|
||||
return 0
|
||||
var/obj/mecha/M = src.loc
|
||||
return M.get_log_html()
|
||||
|
||||
@@ -117,7 +117,24 @@
|
||||
if(prob(deflect_chance))
|
||||
severity++
|
||||
log_append_to_last("Armor saved, changing severity to [severity].")
|
||||
. = ..(severity, target)
|
||||
. = ..()
|
||||
|
||||
/obj/mecha/contents_explosion(severity, target)
|
||||
severity++
|
||||
for(var/X in equipment)
|
||||
var/obj/item/mecha_parts/mecha_equipment/ME = X
|
||||
ME.ex_act(severity,target)
|
||||
for(var/Y in trackers)
|
||||
var/obj/item/mecha_parts/mecha_tracking/MT = Y
|
||||
MT.ex_act(severity, target)
|
||||
if(occupant)
|
||||
occupant.ex_act(severity,target)
|
||||
|
||||
/obj/mecha/handle_atom_del(atom/A)
|
||||
if(A == occupant)
|
||||
occupant = null
|
||||
icon_state = initial(icon_state)+"-open"
|
||||
setDir(dir_in)
|
||||
|
||||
/obj/mecha/emp_act(severity)
|
||||
if(get_charge())
|
||||
@@ -245,6 +262,7 @@
|
||||
user << "<span class='warning'>\the [W] is stuck to your hand, you cannot put it in \the [src]!</span>"
|
||||
return
|
||||
W.forceMove(src)
|
||||
trackers += W
|
||||
user.visible_message("[user] attaches [W] to [src].", "<span class='notice'>You attach [W] to [src].</span>")
|
||||
return
|
||||
else
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/obj/mecha/medical/New()
|
||||
..()
|
||||
new /obj/item/mecha_parts/mecha_tracking(src)
|
||||
return
|
||||
trackers += new /obj/item/mecha_parts/mecha_tracking(src)
|
||||
|
||||
|
||||
/obj/mecha/medical/mechturn(direction)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
for(var/i=1, i <= hides, i++)
|
||||
new /obj/item/stack/sheet/animalhide/goliath_hide(loc) //If a goliath-plated ripley gets killed, all the plates drop
|
||||
for(var/atom/movable/A in cargo)
|
||||
A.loc = loc
|
||||
A.forceMove(loc)
|
||||
step_rand(A)
|
||||
cargo.Cut()
|
||||
return ..()
|
||||
@@ -112,7 +112,7 @@
|
||||
//Attach hydraulic clamp
|
||||
var/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp/HC = new /obj/item/mecha_parts/mecha_equipment/hydraulic_clamp
|
||||
HC.attach(src)
|
||||
for(var/obj/item/mecha_parts/mecha_tracking/B in src.contents)//Deletes the beacon so it can't be found easily
|
||||
for(var/obj/item/mecha_parts/mecha_tracking/B in trackers)//Deletes the beacon so it can't be found easily
|
||||
qdel(B)
|
||||
|
||||
var/obj/item/mecha_parts/mecha_equipment/mining_scanner/scanner = new /obj/item/mecha_parts/mecha_equipment/mining_scanner
|
||||
@@ -129,12 +129,19 @@
|
||||
var/obj/O = locate(href_list["drop_from_cargo"])
|
||||
if(O && O in src.cargo)
|
||||
src.occupant_message("<span class='notice'>You unload [O].</span>")
|
||||
O.loc = loc
|
||||
O.forceMove(loc)
|
||||
src.cargo -= O
|
||||
src.log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - src.cargo.len]")
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/working/ripley/contents_explosion(severity, target)
|
||||
for(var/X in cargo)
|
||||
var/obj/O = X
|
||||
if(prob(30/severity))
|
||||
cargo -= O
|
||||
O.forceMove(loc)
|
||||
. = ..()
|
||||
|
||||
/obj/mecha/working/ripley/get_stats_part()
|
||||
var/output = ..()
|
||||
|
||||
@@ -3,5 +3,4 @@
|
||||
|
||||
/obj/mecha/working/New()
|
||||
..()
|
||||
new /obj/item/mecha_parts/mecha_tracking(src)
|
||||
return
|
||||
trackers += new /obj/item/mecha_parts/mecha_tracking(src)
|
||||
|
||||
@@ -25,6 +25,13 @@
|
||||
if(prob(25))
|
||||
ex_act(1)
|
||||
|
||||
/obj/item/device/doorCharge/Destroy()
|
||||
if(istype(loc, /obj/machinery/door/airlock))
|
||||
var/obj/machinery/door/airlock/A = loc
|
||||
if(A.charge == src)
|
||||
A.charge = null
|
||||
return ..()
|
||||
|
||||
/obj/item/device/doorCharge/examine(mob/user)
|
||||
..()
|
||||
if(user.mind in ticker.mode.traitors) //No nuke ops because the device is excluded from nuclear
|
||||
|
||||
@@ -202,13 +202,13 @@ MASS SPECTROMETER
|
||||
else
|
||||
user << "<span class='info'>Blood level [blood_percent] %, [C.blood_volume] cl, type: [blood_type]</span>"
|
||||
|
||||
var/implant_detect
|
||||
var/cyberimp_detect
|
||||
for(var/obj/item/organ/cyberimp/CI in C.internal_organs)
|
||||
if(CI.status == ORGAN_ROBOTIC)
|
||||
implant_detect += "[C.name] is modified with a [CI.name].<br>"
|
||||
if(implant_detect)
|
||||
cyberimp_detect += "[C.name] is modified with a [CI.name].<br>"
|
||||
if(cyberimp_detect)
|
||||
user << "<span class='notice'>Detected cybernetic modifications:</span>"
|
||||
user << "<span class='notice'>[implant_detect]</span>"
|
||||
user << "<span class='notice'>[cyberimp_detect]</span>"
|
||||
|
||||
/proc/chemscan(mob/living/user, mob/living/M)
|
||||
if(ishuman(M))
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
actions_types = list(/datum/action/item_action/hands_free/activate)
|
||||
var/activated = 1 //1 for implant types that can be activated, 0 for ones that are "always on" like mindshield implants
|
||||
var/implanted = null
|
||||
var/mob/living/imp_in = null
|
||||
var/mob/living/carbon/imp_in = null
|
||||
item_color = "b"
|
||||
var/allow_multiple = 0
|
||||
var/uses = -1
|
||||
flags = DROPDEL
|
||||
|
||||
|
||||
/obj/item/weapon/implant/proc/trigger(emote, mob/source)
|
||||
/obj/item/weapon/implant/proc/trigger(emote, mob/living/carbon/source)
|
||||
return
|
||||
|
||||
/obj/item/weapon/implant/proc/activate()
|
||||
@@ -27,21 +27,24 @@
|
||||
//return 1 if the implant injects
|
||||
//return -1 if the implant fails to inject
|
||||
//return 0 if there is no room for implant
|
||||
/obj/item/weapon/implant/proc/implant(var/mob/source, var/mob/user)
|
||||
var/obj/item/weapon/implant/imp_e = locate(src.type) in source
|
||||
if(!allow_multiple && imp_e && imp_e != src)
|
||||
if(imp_e.uses < initial(imp_e.uses)*2)
|
||||
if(uses == -1)
|
||||
imp_e.uses = -1
|
||||
else
|
||||
imp_e.uses = min(imp_e.uses + uses, initial(imp_e.uses)*2)
|
||||
qdel(src)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
/obj/item/weapon/implant/proc/implant(mob/living/carbon/source, mob/user, silent = 0)
|
||||
for(var/X in source.implants)
|
||||
if(istype(X, type))
|
||||
var/obj/item/weapon/implant/imp_e = X
|
||||
if(!allow_multiple)
|
||||
if(imp_e.uses < initial(imp_e.uses)*2)
|
||||
if(uses == -1)
|
||||
imp_e.uses = -1
|
||||
else
|
||||
imp_e.uses = min(imp_e.uses + uses, initial(imp_e.uses)*2)
|
||||
qdel(src)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
|
||||
src.loc = source
|
||||
imp_in = source
|
||||
source.implants += src
|
||||
implanted = 1
|
||||
if(activated)
|
||||
for(var/X in actions)
|
||||
@@ -56,10 +59,11 @@
|
||||
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/implant/proc/removed(var/mob/source)
|
||||
/obj/item/weapon/implant/proc/removed(mob/living/carbon/source, silent = 0, special = 0)
|
||||
src.loc = null
|
||||
imp_in = null
|
||||
implanted = 0
|
||||
source.implants -= src
|
||||
for(var/X in actions)
|
||||
var/datum/action/A = X
|
||||
A.Grant(source)
|
||||
|
||||
47
code/game/objects/items/weapons/implants/implant_abductor.dm
Normal file
47
code/game/objects/items/weapons/implants/implant_abductor.dm
Normal file
@@ -0,0 +1,47 @@
|
||||
|
||||
/obj/item/weapon/implant/abductor
|
||||
name = "recall implant"
|
||||
desc = "Returns you to the mothership."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "implant"
|
||||
activated = 1
|
||||
origin_tech = "materials=2;biotech=7;magnets=4;bluespace=4;abductor=5"
|
||||
var/obj/machinery/abductor/pad/home
|
||||
var/cooldown = 30
|
||||
|
||||
/obj/item/weapon/implant/abductor/activate()
|
||||
if(cooldown == initial(cooldown))
|
||||
home.Retrieve(imp_in,1)
|
||||
cooldown = 0
|
||||
START_PROCESSING(SSobj, src)
|
||||
else
|
||||
imp_in << "<span class='warning'>You must wait [30 - cooldown] seconds to use [src] again!</span>"
|
||||
|
||||
/obj/item/weapon/implant/abductor/process()
|
||||
if(cooldown < initial(cooldown))
|
||||
cooldown++
|
||||
if(cooldown == initial(cooldown))
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
/obj/item/weapon/implant/abductor/implant(var/mob/source, var/mob/user)
|
||||
if(..())
|
||||
var/obj/machinery/abductor/console/console
|
||||
if(ishuman(source))
|
||||
var/mob/living/carbon/human/H = source
|
||||
if(H.dna.species.id == "abductor")
|
||||
var/datum/species/abductor/S = H.dna.species
|
||||
console = get_team_console(S.team)
|
||||
home = console.pad
|
||||
|
||||
if(!home)
|
||||
console = get_team_console(pick(1, 2, 3, 4))
|
||||
home = console.pad
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/implant/abductor/proc/get_team_console(var/team)
|
||||
var/obj/machinery/abductor/console/console
|
||||
for(var/obj/machinery/abductor/console/c in machines)
|
||||
if(c.team == team)
|
||||
console = c
|
||||
break
|
||||
return console
|
||||
30
code/game/objects/items/weapons/implants/implant_exile.dm
Normal file
30
code/game/objects/items/weapons/implants/implant_exile.dm
Normal file
@@ -0,0 +1,30 @@
|
||||
//Exile implants will allow you to use the station gate, but not return home.
|
||||
//This will allow security to exile badguys/for badguys to exile their kill targets
|
||||
|
||||
/obj/item/weapon/implant/exile
|
||||
name = "exile implant"
|
||||
desc = "Prevents you from returning from away missions"
|
||||
origin_tech = "materials=2;biotech=3;magnets=2;bluespace=3"
|
||||
activated = 0
|
||||
|
||||
/obj/item/weapon/implant/exile/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Nanotrasen Employee Exile Implant<BR>
|
||||
<b>Implant Details:</b> The onboard gateway system has been modified to reject entry by individuals containing this implant<BR>"}
|
||||
return dat
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/exile
|
||||
name = "implanter (exile)"
|
||||
|
||||
/obj/item/weapon/implanter/exile/New()
|
||||
imp = new /obj/item/weapon/implant/exile( src )
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implantcase/exile
|
||||
name = "implant case - 'Exile'"
|
||||
desc = "A glass case containing an exile implant."
|
||||
|
||||
/obj/item/weapon/implantcase/exile/New()
|
||||
imp = new /obj/item/weapon/implant/exile(src)
|
||||
..()
|
||||
@@ -45,15 +45,16 @@
|
||||
return
|
||||
timed_explosion()
|
||||
|
||||
/obj/item/weapon/implant/explosive/implant(mob/source)
|
||||
var/obj/item/weapon/implant/explosive/imp_e = locate(src.type) in source
|
||||
if(imp_e && imp_e != src)
|
||||
imp_e.heavy += heavy
|
||||
imp_e.medium += medium
|
||||
imp_e.weak += weak
|
||||
imp_e.delay += delay
|
||||
qdel(src)
|
||||
return 1
|
||||
/obj/item/weapon/implant/explosive/implant(mob/living/carbon/source)
|
||||
for(var/X in source.implants)
|
||||
if(istype(X, type))
|
||||
var/obj/item/weapon/implant/explosive/imp_e = X
|
||||
imp_e.heavy += heavy
|
||||
imp_e.medium += medium
|
||||
imp_e.weak += weak
|
||||
imp_e.delay += delay
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -85,17 +86,20 @@
|
||||
heavy = 4
|
||||
delay = 70
|
||||
|
||||
/obj/item/weapon/implant/explosive/macro/implant(mob/source)
|
||||
var/obj/item/weapon/implant/explosive/imp_e = locate(src.type) in source
|
||||
if(imp_e && imp_e != src)
|
||||
return 0
|
||||
imp_e = locate(/obj/item/weapon/implant/explosive) in source
|
||||
if(imp_e && imp_e != src)
|
||||
heavy += imp_e.heavy
|
||||
medium += imp_e.medium
|
||||
weak += imp_e.weak
|
||||
delay += imp_e.delay
|
||||
qdel(imp_e)
|
||||
/obj/item/weapon/implant/explosive/macro/implant(mob/living/carbon/source)
|
||||
for(var/X in source.implants)
|
||||
if(istype(X, type))
|
||||
return 0
|
||||
|
||||
for(var/Y in source.implants)
|
||||
if(istype(Y, /obj/item/weapon/implant/explosive))
|
||||
var/obj/item/weapon/implant/explosive/imp_e = Y
|
||||
heavy += imp_e.heavy
|
||||
medium += imp_e.medium
|
||||
weak += imp_e.weak
|
||||
delay += imp_e.delay
|
||||
qdel(imp_e)
|
||||
break
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
56
code/game/objects/items/weapons/implants/implant_gang.dm
Normal file
56
code/game/objects/items/weapons/implants/implant_gang.dm
Normal file
@@ -0,0 +1,56 @@
|
||||
|
||||
/obj/item/weapon/implant/gang
|
||||
name = "gang implant"
|
||||
desc = "Makes you a gangster or such."
|
||||
activated = 0
|
||||
origin_tech = "materials=2;biotech=4;programming=4;syndicate=3"
|
||||
var/datum/gang/gang
|
||||
|
||||
/obj/item/weapon/implant/gang/New(loc,var/setgang)
|
||||
..()
|
||||
gang = setgang
|
||||
|
||||
/obj/item/weapon/implant/gang/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Criminal brainwash implant<BR>
|
||||
<b>Life:</b> A few seconds after injection.<BR>
|
||||
<b>Important Notes:</b> Illegal<BR>
|
||||
<HR>
|
||||
<b>Implant Details:</b><BR>
|
||||
<b>Function:</b> Contains a small pod of nanobots that change the host's brain to be loyal to a certain organization.<BR>
|
||||
<b>Special Features:</b> This device will also emit a small EMP pulse, destroying any other implants within the host's brain.<BR>
|
||||
<b>Integrity:</b> Implant's EMP function will destroy itself in the process."}
|
||||
return dat
|
||||
|
||||
/obj/item/weapon/implant/gang/implant(mob/living/carbon/target, mob/user, silent = 0)
|
||||
if(..())
|
||||
for(var/obj/item/weapon/implant/I in target.implants)
|
||||
if(I != src)
|
||||
qdel(I)
|
||||
|
||||
if(!target.mind || target.stat == DEAD)
|
||||
return 0
|
||||
|
||||
var/success
|
||||
if(target.mind in ticker.mode.get_gangsters())
|
||||
if(ticker.mode.remove_gangster(target.mind,0,1))
|
||||
success = 1 //Was not a gang boss, convert as usual
|
||||
else
|
||||
success = 1
|
||||
|
||||
if(ishuman(target))
|
||||
if(!success)
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the influence of your enemies try to invade your mind!</span>")
|
||||
|
||||
qdel(src)
|
||||
return -1
|
||||
|
||||
/obj/item/weapon/implanter/gang
|
||||
name = "implanter (gang)"
|
||||
|
||||
/obj/item/weapon/implanter/gang/New(loc, gang)
|
||||
if(!gang)
|
||||
qdel(src)
|
||||
return
|
||||
imp = new /obj/item/weapon/implant/gang(src,gang)
|
||||
..()
|
||||
@@ -17,29 +17,32 @@
|
||||
return dat
|
||||
|
||||
|
||||
/obj/item/weapon/implant/mindshield/implant(mob/target)
|
||||
/obj/item/weapon/implant/mindshield/implant(mob/living/carbon/target, mob/user, silent = 0)
|
||||
if(..())
|
||||
if((target.mind in (ticker.mode.head_revolutionaries | ticker.mode.get_gang_bosses())))
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
if(!silent)
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
removed(target, 1)
|
||||
qdel(src)
|
||||
return -1
|
||||
if(target.mind in ticker.mode.get_gangsters())
|
||||
ticker.mode.remove_gangster(target.mind)
|
||||
target.visible_message("<span class='warning'>[src] was destroyed in the process!</span>", "<span class='notice'>You feel a sense of peace and security. You are now protected from brainwashing.</span>")
|
||||
if(!silent)
|
||||
target.visible_message("<span class='warning'>[src] was destroyed in the process!</span>", "<span class='notice'>You feel a sense of peace and security. You are now protected from brainwashing.</span>")
|
||||
removed(target, 1)
|
||||
qdel(src)
|
||||
return -1
|
||||
if(target.mind in ticker.mode.revolutionaries)
|
||||
ticker.mode.remove_revolutionary(target.mind)
|
||||
if(target.mind in ticker.mode.cult)
|
||||
target << "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>"
|
||||
else
|
||||
target << "<span class='notice'>You feel a sense of peace and security. You are now protected from brainwashing.</span>"
|
||||
if(!silent)
|
||||
if(target.mind in ticker.mode.cult)
|
||||
target << "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>"
|
||||
else
|
||||
target << "<span class='notice'>You feel a sense of peace and security. You are now protected from brainwashing.</span>"
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/implant/mindshield/removed(mob/target, var/silent = 0)
|
||||
/obj/item/weapon/implant/mindshield/removed(mob/target, silent = 0, special = 0)
|
||||
if(..())
|
||||
if(target.stat != DEAD && !silent)
|
||||
target << "<span class='boldnotice'>Your mind suddenly feels terribly vulnerable. You are no longer safe from brainwashing.</span>"
|
||||
|
||||
@@ -61,3 +61,22 @@
|
||||
empulse(imp_in, 3, 5)
|
||||
if(!uses)
|
||||
qdel(src)
|
||||
|
||||
|
||||
//Health Tracker Implant
|
||||
|
||||
/obj/item/weapon/implant/health
|
||||
name = "health implant"
|
||||
activated = 0
|
||||
var/healthstring = ""
|
||||
|
||||
/obj/item/weapon/implant/health/proc/sensehealth()
|
||||
if (!implanted)
|
||||
return "ERROR"
|
||||
else
|
||||
if(isliving(implanted))
|
||||
var/mob/living/L = implanted
|
||||
healthstring = "<small>Oxygen Deprivation Damage => [round(L.getOxyLoss())]<br />Fire Damage => [round(L.getFireLoss())]<br />Toxin Damage => [round(L.getToxLoss())]<br />Brute Force Damage => [round(L.getBruteLoss())]</small>"
|
||||
if (!healthstring)
|
||||
healthstring = "ERROR"
|
||||
return healthstring
|
||||
@@ -21,25 +21,27 @@
|
||||
/obj/item/weapon/implant/storage/activate()
|
||||
storage.MouseDrop(imp_in)
|
||||
|
||||
/obj/item/weapon/implant/storage/removed(source)
|
||||
/obj/item/weapon/implant/storage/removed(source, silent = 0, special = 0)
|
||||
if(..())
|
||||
storage.close_all()
|
||||
for(var/obj/item/I in storage)
|
||||
storage.remove_from_storage(I, get_turf(source))
|
||||
if(!special)
|
||||
storage.close_all()
|
||||
for(var/obj/item/I in storage)
|
||||
storage.remove_from_storage(I, get_turf(source))
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/implant/storage/implant(mob/source)
|
||||
var/obj/item/weapon/implant/storage/imp_e = locate(src.type) in source
|
||||
if(imp_e)
|
||||
imp_e.storage.storage_slots += storage.storage_slots
|
||||
imp_e.storage.max_combined_w_class += storage.max_combined_w_class
|
||||
imp_e.storage.contents += storage.contents
|
||||
/obj/item/weapon/implant/storage/implant(mob/living/carbon/source, mob/user, silent = 0)
|
||||
for(var/X in source.implants)
|
||||
if(istype(X, type))
|
||||
var/obj/item/weapon/implant/storage/imp_e = X
|
||||
imp_e.storage.storage_slots += storage.storage_slots
|
||||
imp_e.storage.max_combined_w_class += storage.max_combined_w_class
|
||||
imp_e.storage.contents += storage.contents
|
||||
|
||||
storage.close_all()
|
||||
storage.show_to(source)
|
||||
storage.close_all()
|
||||
storage.show_to(source)
|
||||
|
||||
qdel(src)
|
||||
return 1
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -10,12 +10,13 @@
|
||||
hidden_uplink.telecrystals = 10
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implant/uplink/implant(mob/user)
|
||||
var/obj/item/weapon/implant/imp_e = locate(src.type) in user
|
||||
if(imp_e && imp_e != src)
|
||||
imp_e.hidden_uplink.telecrystals += hidden_uplink.telecrystals
|
||||
qdel(src)
|
||||
return 1
|
||||
/obj/item/weapon/implant/uplink/implant(mob/living/carbon/source, mob/user, silent = 0)
|
||||
for(var/X in source.implants)
|
||||
if(istype(X, type))
|
||||
var/obj/item/weapon/implant/imp_e = X
|
||||
imp_e.hidden_uplink.telecrystals += hidden_uplink.telecrystals
|
||||
qdel(src)
|
||||
return 1
|
||||
|
||||
if(..())
|
||||
hidden_uplink.owner = "[user.key]"
|
||||
|
||||
@@ -516,3 +516,8 @@
|
||||
if(A in contents)
|
||||
usr = null
|
||||
remove_from_storage(A, loc)
|
||||
|
||||
/obj/item/weapon/storage/contents_explosion(severity, target)
|
||||
for(var/atom/A in contents)
|
||||
A.ex_act(severity, target)
|
||||
CHECK_TICK
|
||||
@@ -418,3 +418,9 @@
|
||||
req_access = list()
|
||||
req_access += pick(get_all_accesses())
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/closet/contents_explosion(severity, target)
|
||||
for(var/atom/A in contents)
|
||||
A.ex_act(severity, target)
|
||||
CHECK_TICK
|
||||
@@ -22,6 +22,15 @@
|
||||
showpiece = new start_showpiece_type (src)
|
||||
update_icon()
|
||||
|
||||
/obj/structure/displaycase/Destroy()
|
||||
if(electronics)
|
||||
qdel(electronics)
|
||||
electronics = null
|
||||
if(showpiece)
|
||||
qdel(showpiece)
|
||||
showpiece = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/displaycase/examine(mob/user)
|
||||
..()
|
||||
if(showpiece)
|
||||
@@ -32,7 +41,7 @@
|
||||
|
||||
/obj/structure/displaycase/proc/dump()
|
||||
if (showpiece)
|
||||
showpiece.loc = src.loc
|
||||
showpiece.forceMove(loc)
|
||||
showpiece = null
|
||||
|
||||
/obj/structure/displaycase/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||
|
||||
@@ -28,6 +28,15 @@
|
||||
stored_extinguisher = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/extinguisher_cabinet/contents_explosion(severity, target)
|
||||
if(stored_extinguisher)
|
||||
stored_extinguisher.ex_act(severity, target)
|
||||
|
||||
/obj/structure/extinguisher_cabinet/handle_atom_del(atom/A)
|
||||
if(A == stored_extinguisher)
|
||||
stored_extinguisher = null
|
||||
update_icon()
|
||||
|
||||
/obj/structure/extinguisher_cabinet/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/wrench) && !stored_extinguisher)
|
||||
user << "<span class='notice'>You start unsecuring [name]...</span>"
|
||||
@@ -47,6 +56,7 @@
|
||||
return
|
||||
contents += I
|
||||
stored_extinguisher = I
|
||||
update_icon()
|
||||
user << "<span class='notice'>You place [I] in [src].</span>"
|
||||
else
|
||||
toggle_cabinet(user)
|
||||
|
||||
@@ -86,6 +86,14 @@
|
||||
O.forceMove(get_turf(src))
|
||||
update_icon()
|
||||
|
||||
/obj/structure/guncase/handle_atom_del(atom/A)
|
||||
update_icon()
|
||||
|
||||
/obj/structure/guncase/contents_explosion(severity, target)
|
||||
for(var/atom/A in contents)
|
||||
A.ex_act(severity++, target)
|
||||
CHECK_TICK
|
||||
|
||||
/obj/structure/guncase/shotgun
|
||||
name = "shotgun locker"
|
||||
desc = "A locker that holds shotguns."
|
||||
|
||||
@@ -45,18 +45,6 @@
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/obj/structure/plasticflaps/ex_act(severity)
|
||||
..()
|
||||
switch(severity)
|
||||
if (1)
|
||||
qdel(src)
|
||||
if (2)
|
||||
if (prob(50))
|
||||
qdel(src)
|
||||
if (3)
|
||||
if (prob(5))
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/plasticflaps/mining //A specific type for mining that doesn't allow airflow because of them damn crates
|
||||
name = "airtight plastic flaps"
|
||||
desc = "Heavy duty, airtight, plastic flaps."
|
||||
|
||||
@@ -151,7 +151,7 @@ FLOOR SAFES
|
||||
if(!user.drop_item())
|
||||
user << "<span class='warning'>\The [I] is stuck to your hand, you cannot put it in the safe!</span>"
|
||||
return
|
||||
I.loc = src
|
||||
I.forceMove(src)
|
||||
user << "<span class='notice'>You put [I] in [src].</span>"
|
||||
updateUsrDialog()
|
||||
return
|
||||
@@ -164,10 +164,13 @@ FLOOR SAFES
|
||||
return ..()
|
||||
|
||||
|
||||
obj/structure/safe/blob_act(obj/structure/blob/B)
|
||||
/obj/structure/safe/handle_atom_del(atom/A)
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/structure/safe/blob_act(obj/structure/blob/B)
|
||||
return
|
||||
|
||||
obj/structure/safe/ex_act(severity, target)
|
||||
/obj/structure/safe/ex_act(severity, target)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -25,12 +25,15 @@
|
||||
return !density
|
||||
|
||||
// When destroyed by explosions, properly handle contents.
|
||||
obj/structure/transit_tube/ex_act(severity, target)
|
||||
if(3 - severity >= 0)
|
||||
var/oldloc = loc
|
||||
..(severity + 1)
|
||||
/obj/structure/transit_tube/ex_act(severity, target)
|
||||
..()
|
||||
if(!qdeleted(src))
|
||||
for(var/atom/movable/AM in contents)
|
||||
AM.loc = oldloc
|
||||
AM.forceMove(loc)
|
||||
|
||||
/obj/structure/transit_tube/contents_explosion(severity, target)
|
||||
for(var/atom/movable/AM in contents)
|
||||
AM.ex_act(severity, target)
|
||||
|
||||
/obj/structure/transit_tube/New(loc)
|
||||
..(loc)
|
||||
@@ -38,6 +41,11 @@ obj/structure/transit_tube/ex_act(severity, target)
|
||||
if(tube_dirs == null)
|
||||
init_dirs()
|
||||
|
||||
/obj/structure/transit_tube/Destroy()
|
||||
for(var/atom/movable/AM in contents)
|
||||
AM.forceMove(loc)
|
||||
return ..()
|
||||
|
||||
/obj/structure/transit_tube/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
if(copytext(icon_state, 1, 3) != "D-") //decorative diagonals cannot be unwrenched directly
|
||||
|
||||
@@ -21,9 +21,7 @@
|
||||
follow_tube()
|
||||
|
||||
/obj/structure/transit_tube_pod/Destroy()
|
||||
for(var/atom/movable/AM in contents)
|
||||
AM.loc = loc
|
||||
|
||||
empty()
|
||||
return ..()
|
||||
|
||||
/obj/structure/transit_tube_pod/attackby(obj/item/I, mob/user, params)
|
||||
@@ -31,9 +29,9 @@
|
||||
if(!moving)
|
||||
for(var/obj/structure/transit_tube/station/T in loc)
|
||||
return
|
||||
if(src.contents.len)
|
||||
if(contents.len)
|
||||
user.visible_message("[user] empties \the [src].", "<span class='notice'>You empty \the [src].</span>")
|
||||
src.empty()
|
||||
empty()
|
||||
return
|
||||
else
|
||||
user << "<span class='notice'>You free \the [src].</span>"
|
||||
@@ -44,6 +42,16 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/transit_tube_pod/ex_act(severity, target)
|
||||
..()
|
||||
if(!qdeleted(src))
|
||||
for(var/atom/movable/AM in contents)
|
||||
AM.forceMove(loc)
|
||||
|
||||
/obj/structure/transit_tube_pod/contents_explosion(severity, target)
|
||||
for(var/atom/movable/AM in contents)
|
||||
AM.ex_act(severity, target)
|
||||
|
||||
/obj/structure/transit_tube_pod/container_resist()
|
||||
var/mob/living/user = usr
|
||||
if(!moving)
|
||||
@@ -56,7 +64,7 @@
|
||||
|
||||
/obj/structure/transit_tube_pod/proc/empty()
|
||||
for(var/atom/movable/M in src.contents)
|
||||
M.loc = src.loc
|
||||
M.forceMove(loc)
|
||||
|
||||
/obj/structure/transit_tube_pod/Process_Spacemove()
|
||||
if(moving) //No drifting while moving in the tubes
|
||||
|
||||
@@ -44,8 +44,7 @@
|
||||
if(istype(O,/obj/structure/sign/poster))
|
||||
var/obj/structure/sign/poster/P = O
|
||||
P.roll_and_drop(src)
|
||||
else
|
||||
O.loc = src
|
||||
|
||||
ChangeTurf(/turf/open/floor/plating)
|
||||
|
||||
/turf/closed/wall/proc/break_wall()
|
||||
@@ -75,10 +74,9 @@
|
||||
if(3)
|
||||
if (prob(hardness))
|
||||
dismantle_wall(0,1)
|
||||
else
|
||||
if(!density)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/turf/closed/wall/blob_act(obj/structure/blob/B)
|
||||
if(prob(50))
|
||||
|
||||
@@ -368,3 +368,9 @@
|
||||
if(T.dir != dir)
|
||||
T.setDir(dir)
|
||||
return T
|
||||
|
||||
/turf/contents_explosion(severity, target)
|
||||
for(var/atom/A in contents)
|
||||
A.ex_act(severity, target)
|
||||
CHECK_TICK
|
||||
|
||||
|
||||
@@ -605,9 +605,7 @@ var/global/list/g_fancy_list_of_types = null
|
||||
return
|
||||
|
||||
feedback_add_details("admin_verb","SEQ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
for (var/obj/item/I in M)
|
||||
if (istype(I, /obj/item/weapon/implant))
|
||||
continue
|
||||
for (var/obj/item/I in M.get_equipped_items())
|
||||
qdel(I)
|
||||
switch(dresscode)
|
||||
if ("Naked")
|
||||
|
||||
@@ -30,7 +30,8 @@
|
||||
var/obj/item/organ/I = X
|
||||
organs["[I.name] ([I.type])"] = I
|
||||
|
||||
for(var/obj/item/weapon/implant/I in C)
|
||||
for(var/X in C.implants)
|
||||
var/obj/item/weapon/implant/I = X
|
||||
organs["[I.name] ([I.type])"] = I
|
||||
|
||||
var/obj/item/organ = input("Select organ/implant:", "Organ Manipulation", null) in organs
|
||||
|
||||
@@ -37,9 +37,9 @@ var/highlander = FALSE
|
||||
|
||||
mind.announce_objectives()
|
||||
|
||||
for(var/obj/item/I in src)
|
||||
if(istype(I, /obj/item/weapon/implant))
|
||||
continue
|
||||
for(var/obj/item/I in get_equipped_items())
|
||||
qdel(I)
|
||||
for(var/obj/item/I in held_items)
|
||||
qdel(I)
|
||||
equip_to_slot_or_del(new /obj/item/clothing/under/kilt/highlander(src), slot_w_uniform)
|
||||
equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(src), slot_ears)
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
if(M.stat == CONSCIOUS)
|
||||
M.mind_initialize() //give them a mind datum if they don't have one.
|
||||
var/resisted
|
||||
if(!isloyal(M))
|
||||
if(!M.isloyal())
|
||||
if(user.mind in ticker.mode.head_revolutionaries)
|
||||
if(ticker.mode.add_revolutionary(M.mind))
|
||||
M.Stun(3)
|
||||
|
||||
@@ -58,6 +58,17 @@
|
||||
beaker = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/contents_explosion(severity, target)
|
||||
..()
|
||||
if(beaker)
|
||||
beaker.ex_act(severity, target)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/handle_atom_del(atom/A)
|
||||
..()
|
||||
if(A == beaker)
|
||||
beaker = null
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/on_deconstruction()
|
||||
if(beaker)
|
||||
beaker.forceMove(loc)
|
||||
|
||||
@@ -1,34 +1,3 @@
|
||||
//Exile implants will allow you to use the station gate, but not return home.
|
||||
//This will allow security to exile badguys/for badguys to exile their kill targets
|
||||
|
||||
/obj/item/weapon/implant/exile
|
||||
name = "exile implant"
|
||||
desc = "Prevents you from returning from away missions"
|
||||
origin_tech = "materials=2;biotech=3;magnets=2;bluespace=3"
|
||||
activated = 0
|
||||
|
||||
/obj/item/weapon/implant/exile/get_data()
|
||||
var/dat = {"<b>Implant Specifications:</b><BR>
|
||||
<b>Name:</b> Nanotrasen Employee Exile Implant<BR>
|
||||
<b>Implant Details:</b> The onboard gateway system has been modified to reject entry by individuals containing this implant<BR>"}
|
||||
return dat
|
||||
|
||||
|
||||
/obj/item/weapon/implanter/exile
|
||||
name = "implanter (exile)"
|
||||
|
||||
/obj/item/weapon/implanter/exile/New()
|
||||
imp = new /obj/item/weapon/implant/exile( src )
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implantcase/exile
|
||||
name = "implant case - 'Exile'"
|
||||
desc = "A glass case containing an exile implant."
|
||||
|
||||
/obj/item/weapon/implantcase/exile/New()
|
||||
imp = new /obj/item/weapon/implant/exile(src)
|
||||
..()
|
||||
|
||||
|
||||
/obj/structure/closet/secure_closet/exile
|
||||
name = "exile implants"
|
||||
|
||||
@@ -253,10 +253,10 @@ var/obj/machinery/gateway/centerstation/the_gateway = null
|
||||
if(!stationgate || qdeleted(stationgate))
|
||||
return
|
||||
if(istype(AM, /mob/living/carbon))
|
||||
for(var/obj/item/weapon/implant/exile/E in AM)//Checking that there is an exile implant in the contents
|
||||
if(E.imp_in == AM)//Checking that it's actually implanted vs just in their pocket
|
||||
AM << "\black The station gate has detected your exile implant and is blocking your entry."
|
||||
return
|
||||
var/mob/living/carbon/C = AM
|
||||
for(var/obj/item/weapon/implant/exile/E in C.implants)//Checking that there is an exile implant
|
||||
AM << "\black The station gate has detected your exile implant and is blocking your entry."
|
||||
return
|
||||
AM.forceMove(get_step(stationgate.loc, SOUTH))
|
||||
AM.setDir(SOUTH)
|
||||
if (ismob(AM))
|
||||
|
||||
@@ -11,9 +11,7 @@
|
||||
return
|
||||
|
||||
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
L.implant(H, null, 1)
|
||||
|
||||
var/obj/item/device/radio/R = H.ears
|
||||
R.set_frequency(CENTCOM_FREQ)
|
||||
|
||||
@@ -133,9 +133,10 @@
|
||||
r_hand = /obj/item/weapon/twohanded/fireaxe
|
||||
|
||||
/datum/outfit/psycho/post_equip(mob/living/carbon/human/H)
|
||||
for(var/obj/item/carried_item in H.contents)
|
||||
if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant.
|
||||
carried_item.add_mob_blood(H)//Oh yes, there will be blood...
|
||||
for(var/obj/item/carried_item in H.get_equipped_items())
|
||||
carried_item.add_mob_blood(H)//Oh yes, there will be blood...
|
||||
for(var/obj/item/I in H.held_items)
|
||||
I.add_mob_blood(H)
|
||||
H.regenerate_icons()
|
||||
|
||||
/datum/outfit/assassin
|
||||
@@ -358,9 +359,7 @@
|
||||
R.freqlock = 1
|
||||
|
||||
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)//Here you go Deuryn
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
L.implant(H, null, 1)
|
||||
|
||||
|
||||
var/obj/item/weapon/card/id/W = H.wear_id
|
||||
|
||||
@@ -64,7 +64,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
qdel(src)
|
||||
return ..()
|
||||
|
||||
/obj/effect/immovablerod/ex_act(test)
|
||||
/obj/effect/immovablerod/ex_act(severity, target)
|
||||
return 0
|
||||
|
||||
/obj/effect/immovablerod/Bump(atom/clong)
|
||||
|
||||
@@ -98,6 +98,7 @@
|
||||
return
|
||||
|
||||
/turf/open/floor/vines/ex_act(severity, target)
|
||||
..()
|
||||
if(severity < 3 || target == src)
|
||||
ChangeTurf(src.baseturf)
|
||||
|
||||
@@ -227,10 +228,10 @@
|
||||
quality = NEGATIVE
|
||||
|
||||
/datum/spacevine_mutation/aggressive_spread/on_spread(obj/structure/spacevine/holder, turf/target)
|
||||
target.ex_act(severity, src) // vine immunity handled at /mob/ex_act
|
||||
target.ex_act(severity, null, src) // vine immunity handled at /mob/ex_act
|
||||
|
||||
/datum/spacevine_mutation/aggressive_spread/on_buckle(obj/structure/spacevine/holder, mob/living/buckled)
|
||||
buckled.ex_act(severity, src)
|
||||
buckled.ex_act(severity, null, src)
|
||||
|
||||
/datum/spacevine_mutation/transparency
|
||||
name = "transparent"
|
||||
|
||||
@@ -25,6 +25,24 @@
|
||||
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/biogenerator(null)
|
||||
B.apply_default_parts(src)
|
||||
|
||||
/obj/machinery/biogenerator/Destroy()
|
||||
if(beaker)
|
||||
qdel(beaker)
|
||||
beaker = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/biogenerator/contents_explosion(severity, target)
|
||||
..()
|
||||
if(beaker)
|
||||
beaker.ex_act(severity, target)
|
||||
|
||||
/obj/machinery/biogenerator/handle_atom_del(atom/A)
|
||||
..()
|
||||
if(A == beaker)
|
||||
beaker = null
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/item/weapon/circuitboard/machine/biogenerator
|
||||
name = "circuit board (Biogenerator)"
|
||||
build_path = /obj/machinery/biogenerator
|
||||
|
||||
@@ -51,9 +51,7 @@ Captain
|
||||
return
|
||||
|
||||
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
L.implant(H, null, 1)
|
||||
|
||||
minor_announce("Captain [H.real_name] on deck!")
|
||||
|
||||
|
||||
@@ -53,8 +53,7 @@ Clown
|
||||
return
|
||||
|
||||
var/obj/item/weapon/implant/sad_trombone/S = new/obj/item/weapon/implant/sad_trombone(H)
|
||||
S.imp_in = H
|
||||
S.implanted = 1
|
||||
S.implant(H, null, 1)
|
||||
|
||||
H.dna.add_mutation(CLOWNMUT)
|
||||
H.rename_self("clown")
|
||||
|
||||
@@ -60,9 +60,7 @@ Head of Security
|
||||
return
|
||||
|
||||
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
L.implant(H, null, 1)
|
||||
|
||||
announce_head(H, list("Security")) //tell underlings (security radio) they have a head
|
||||
/*
|
||||
@@ -119,9 +117,7 @@ Warden
|
||||
return
|
||||
|
||||
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
L.implant(H, null, 1)
|
||||
|
||||
/*
|
||||
Detective
|
||||
@@ -170,9 +166,7 @@ Detective
|
||||
return
|
||||
|
||||
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
L.implant(H, null, 1)
|
||||
|
||||
/*
|
||||
Security Officer
|
||||
@@ -271,9 +265,7 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science")
|
||||
return
|
||||
|
||||
var/obj/item/weapon/implant/mindshield/L = new/obj/item/weapon/implant/mindshield(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
H.sec_hud_set_implants()
|
||||
L.implant(H, null, 1)
|
||||
|
||||
var/obj/item/weapon/card/id/W = H.wear_id
|
||||
W.access |= dep_access
|
||||
|
||||
@@ -255,14 +255,7 @@
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(5, 1, src)
|
||||
s.start()
|
||||
if(severity == 1)
|
||||
if(prob(50))
|
||||
empty_content()
|
||||
qdel(src)
|
||||
else if(severity == 2)
|
||||
if(prob(25))
|
||||
empty_content()
|
||||
qdel(src)
|
||||
..()
|
||||
|
||||
//empty the redemption machine by stacks of at most max_amount (50 at this time) size
|
||||
/obj/machinery/mineral/ore_redemption/proc/empty_content()
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
if (istype(W, /obj/item/weapon/ore))
|
||||
if(!user.drop_item())
|
||||
return
|
||||
W.loc = src
|
||||
W.forceMove(src)
|
||||
else if (istype(W, /obj/item/weapon/storage))
|
||||
var/obj/item/weapon/storage/S = W
|
||||
for(var/obj/item/weapon/ore/O in S.contents)
|
||||
@@ -25,11 +25,7 @@
|
||||
var/time = 50
|
||||
if(do_after(user, time/C.toolspeed, target = src))
|
||||
user.visible_message("[user] pries \the [src] apart.", "<span class='notice'>You pry apart \the [src].</span>", "<span class='italics'>You hear splitting wood.</span>")
|
||||
// If you change the amount of wood returned, remember
|
||||
// to change the construction costs
|
||||
var/obj/item/stack/sheet/mineral/wood/wo = new (loc, 4)
|
||||
wo.add_fingerprint(user)
|
||||
deconstruct()
|
||||
deconstruct(TRUE, user)
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -52,10 +48,9 @@
|
||||
dat += text("<br><br><A href='?src=\ref[src];removeall=1'>Empty box</A>")
|
||||
user << browse("[dat]", "window=orebox")
|
||||
|
||||
/obj/structure/ore_box/proc/dump_contents()
|
||||
for (var/obj/item/weapon/ore/O in contents)
|
||||
contents -= O
|
||||
O.loc = src.loc
|
||||
/obj/structure/ore_box/proc/dump_box_contents()
|
||||
for(var/obj/item/weapon/ore/O in contents)
|
||||
O.forceMove(loc)
|
||||
|
||||
/obj/structure/ore_box/Topic(href, href_list)
|
||||
if(..())
|
||||
@@ -66,16 +61,14 @@
|
||||
usr.set_machine(src)
|
||||
src.add_fingerprint(usr)
|
||||
if(href_list["removeall"])
|
||||
dump_contents()
|
||||
dump_box_contents()
|
||||
usr << "<span class='notice'>You empty the box.</span>"
|
||||
src.updateUsrDialog()
|
||||
return
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/structure/ore_box/ex_act(severity, target)
|
||||
if(prob(100 / severity) && severity < 3)
|
||||
qdel(src) //nothing but ores can get inside unless its a bug and ores just return nothing on ex_act, not point in calling it on them
|
||||
|
||||
/obj/structure/ore_box/Destroy()
|
||||
dump_contents()
|
||||
return ..()
|
||||
|
||||
/obj/structure/ore_box/deconstruct(disassembled = TRUE, mob/user)
|
||||
var/obj/item/stack/sheet/mineral/wood/WD = new (loc, 4)
|
||||
if(user)
|
||||
WD.add_fingerprint(user)
|
||||
dump_box_contents()
|
||||
qdel(src)
|
||||
@@ -104,7 +104,9 @@ In all, this is a lot like the monkey code. /N
|
||||
add_logs(M, src, "attacked")
|
||||
updatehealth()
|
||||
|
||||
/mob/living/carbon/alien/ex_act(severity, target)
|
||||
/mob/living/carbon/alien/ex_act(severity, target, origin)
|
||||
if(origin && istype(origin, /datum/spacevine_mutation) && isvineimmune(src))
|
||||
return
|
||||
..()
|
||||
switch (severity)
|
||||
if (1)
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
qdel(food)
|
||||
for(var/BP in bodyparts)
|
||||
qdel(BP)
|
||||
for(var/imp in implants)
|
||||
qdel(imp)
|
||||
bodyparts = list()
|
||||
remove_from_all_data_huds()
|
||||
if(dna)
|
||||
|
||||
@@ -43,6 +43,7 @@ mob/living/carbon/bullet_act(obj/item/projectile/P, def_zone)
|
||||
send_item_attack_message(I, user, affecting.name)
|
||||
if(I.force)
|
||||
apply_damage(I.force, I.damtype, affecting)
|
||||
damage_clothes(I.force, I.damtype, "melee", affecting.body_zone)
|
||||
if(I.damtype == BRUTE && affecting.status == BODYPART_ORGANIC)
|
||||
if(prob(33))
|
||||
I.add_mob_blood(src)
|
||||
@@ -289,12 +290,16 @@ mob/living/carbon/bullet_act(obj/item/projectile/P, def_zone)
|
||||
|
||||
|
||||
/mob/living/carbon/damage_clothes(damage_amount, damage_type = BRUTE, damage_flag = 0, def_zone)
|
||||
if(damage_type != BRUTE && damage_type != BURN)
|
||||
return
|
||||
var/bodypart_bit = 0
|
||||
if(damage_flag != "bomb")
|
||||
damage_amount *= 0.5 //0.5 multiplier for balance reason, we don't want clothes to be too easily destroyed
|
||||
if(def_zone)
|
||||
bodypart_bit = body_zone2body_parts_covered(def_zone)
|
||||
for(var/X in get_equipped_items())
|
||||
var/obj/item/I = X
|
||||
if(I.body_parts_covered & bodypart_bit)
|
||||
I.take_damage(0.5*damage_amount, damage_type, damage_flag, 0)
|
||||
//0.5 multiplier for balance reason, we don't want clothes to be too easily destroyed
|
||||
if(!bodypart_bit || (I.body_parts_covered & bodypart_bit))
|
||||
I.take_damage(damage_amount, damage_type, damage_flag, 0)
|
||||
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
var/list/internal_organs = list() //List of /obj/item/organ in the mob. They don't go in the contents for some reason I don't want to know.
|
||||
var/list/internal_organs_slot = list() //Same as above, but stores "slot ID" - "organ" pairs for easy access.
|
||||
|
||||
var/list/implants = list()
|
||||
|
||||
var/silent = 0 //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/obj/item/handcuffed = null //Whether or not the mob is handcuffed
|
||||
|
||||
@@ -13,9 +13,8 @@
|
||||
var/muzzled = is_muzzled()
|
||||
//var/m_type = 1
|
||||
|
||||
for (var/obj/item/weapon/implant/I in src)
|
||||
if (I.implanted)
|
||||
I.trigger(act, src)
|
||||
for (var/obj/item/weapon/implant/I in implants)
|
||||
I.trigger(act, src)
|
||||
|
||||
var/miming=0
|
||||
if(mind)
|
||||
|
||||
@@ -298,13 +298,13 @@
|
||||
msg += "<a href='?src=\ref[src];hud=1;photo_front=1'>\[Front photo\]</a> "
|
||||
msg += "<a href='?src=\ref[src];hud=1;photo_side=1'>\[Side photo\]</a><br>"
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(CIH,/obj/item/organ/cyberimp/eyes/hud/medical))
|
||||
var/implant_detect
|
||||
var/cyberimp_detect
|
||||
for(var/obj/item/organ/cyberimp/CI in internal_organs)
|
||||
if(CI.status == ORGAN_ROBOTIC)
|
||||
implant_detect += "[name] is modified with a [CI.name].<br>"
|
||||
if(implant_detect)
|
||||
cyberimp_detect += "[name] is modified with a [CI.name].<br>"
|
||||
if(cyberimp_detect)
|
||||
msg += "Detected cybernetic modifications:<br>"
|
||||
msg += implant_detect
|
||||
msg += cyberimp_detect
|
||||
if(R)
|
||||
var/health_r = R.fields["p_stat"]
|
||||
msg += "<a href='?src=\ref[src];hud=m;p_stat=1'>\[[health_r]\]</a>"
|
||||
|
||||
@@ -588,7 +588,7 @@
|
||||
threatcount += 1
|
||||
|
||||
//mindshield implants imply trustworthyness
|
||||
if(isloyal(src))
|
||||
if(isloyal())
|
||||
threatcount -= 1
|
||||
|
||||
//Agent cards lower threatlevel.
|
||||
|
||||
@@ -339,10 +339,11 @@
|
||||
..()
|
||||
|
||||
|
||||
/mob/living/carbon/human/ex_act(severity, ex_target)
|
||||
/mob/living/carbon/human/ex_act(severity, target, origin)
|
||||
|
||||
if(istype(ex_target, /datum/spacevine_mutation) && isvineimmune(src))
|
||||
if(origin && istype(origin, /datum/spacevine_mutation) && isvineimmune(src))
|
||||
return
|
||||
..()
|
||||
var/b_loss = 0
|
||||
var/f_loss = 0
|
||||
var/bomb_armor = getarmor(null, "bomb")
|
||||
@@ -351,8 +352,9 @@
|
||||
if (1)
|
||||
if(prob(bomb_armor))
|
||||
b_loss = 500
|
||||
var/atom/target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src)))
|
||||
throw_at(target, 200, 4)
|
||||
var/atom/throw_target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src)))
|
||||
throw_at(throw_target, 200, 4)
|
||||
damage_clothes(400 - bomb_armor, BRUTE, "bomb")
|
||||
else
|
||||
gib()
|
||||
return
|
||||
@@ -363,7 +365,7 @@
|
||||
if(bomb_armor)
|
||||
b_loss = 30*(2 - round(bomb_armor*0.01, 0.05))
|
||||
f_loss = b_loss
|
||||
|
||||
damage_clothes(200 - bomb_armor, BRUTE, "bomb")
|
||||
if (!istype(ears, /obj/item/clothing/ears/earmuffs))
|
||||
adjustEarDamage(30, 120)
|
||||
if (prob(70))
|
||||
@@ -373,16 +375,13 @@
|
||||
b_loss = 30
|
||||
if(bomb_armor)
|
||||
b_loss = 15*(2 - round(bomb_armor*0.01, 0.05))
|
||||
|
||||
damage_clothes(max(50 - bomb_armor, 0), BRUTE, "bomb")
|
||||
if (!istype(ears, /obj/item/clothing/ears/earmuffs))
|
||||
adjustEarDamage(15,60)
|
||||
if (prob(50))
|
||||
Paralyse(8)
|
||||
|
||||
take_overall_damage(b_loss,f_loss)
|
||||
if(bomb_armor == 100) //full bomb armor set, we don't call contents_explosion
|
||||
flash_act()
|
||||
return
|
||||
|
||||
//attempt to dismember bodyparts
|
||||
if(severity <= 2 || !bomb_armor)
|
||||
@@ -395,7 +394,7 @@
|
||||
max_limb_loss--
|
||||
if(!max_limb_loss)
|
||||
break
|
||||
..()
|
||||
|
||||
|
||||
/mob/living/carbon/human/blob_act(obj/structure/blob/B)
|
||||
if(stat == DEAD)
|
||||
|
||||
@@ -1086,7 +1086,7 @@
|
||||
|
||||
var/weakness = H.check_weakness(I, user)
|
||||
apply_damage(I.force * weakness, I.damtype, def_zone, armor_block, H)
|
||||
H.damage_clothes(I.force, BRUTE, "melee", affecting.body_zone)
|
||||
H.damage_clothes(I.force, I.damtype, "melee", affecting.body_zone)
|
||||
|
||||
H.send_item_attack_message(I, user, hit_area)
|
||||
|
||||
|
||||
@@ -114,3 +114,4 @@
|
||||
if(I.flags_inv & HIDEMASK || forced)
|
||||
update_inv_wear_mask()
|
||||
update_inv_head()
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
threatcount += 4
|
||||
|
||||
//mindshield implants imply trustworthyness
|
||||
if(isloyal(src))
|
||||
if(isloyal())
|
||||
threatcount -= 1
|
||||
|
||||
return threatcount
|
||||
|
||||
@@ -179,7 +179,9 @@
|
||||
take_bodypart_damage(acidpwr * min(0.6, acid_volume*0.1))
|
||||
|
||||
|
||||
/mob/living/carbon/monkey/ex_act(severity, target)
|
||||
/mob/living/carbon/monkey/ex_act(severity, target, origin)
|
||||
if(origin && istype(origin, /datum/spacevine_mutation) && isvineimmune(src))
|
||||
return
|
||||
..()
|
||||
|
||||
switch (severity)
|
||||
@@ -189,12 +191,14 @@
|
||||
|
||||
if (2)
|
||||
take_overall_damage(60, 60)
|
||||
damage_clothes(200, BRUTE, "bomb")
|
||||
adjustEarDamage(30, 120)
|
||||
if(prob(70))
|
||||
Paralyse(10)
|
||||
|
||||
if(3)
|
||||
take_overall_damage(30, 0)
|
||||
damage_clothes(50, BRUTE, "bomb")
|
||||
adjustEarDamage(15,60)
|
||||
if (prob(50))
|
||||
Paralyse(8)
|
||||
|
||||
@@ -268,8 +268,8 @@
|
||||
M.do_attack_animation(src)
|
||||
return 1
|
||||
|
||||
/mob/living/ex_act(severity, origin)
|
||||
if(istype(origin, /datum/spacevine_mutation) && isvineimmune(src))
|
||||
/mob/living/ex_act(severity, target, origin)
|
||||
if(origin && istype(origin, /datum/spacevine_mutation) && isvineimmune(src))
|
||||
return
|
||||
..()
|
||||
flash_act()
|
||||
|
||||
@@ -376,7 +376,7 @@ var/list/ai_list = list()
|
||||
src << browse(last_paper_seen, "window=show_paper")
|
||||
//Carn: holopad requests
|
||||
if(href_list["jumptoholopad"])
|
||||
var/obj/machinery/hologram/holopad/H = locate(href_list["jumptoholopad"])
|
||||
var/obj/machinery/holopad/H = locate(href_list["jumptoholopad"])
|
||||
if(stat == CONSCIOUS)
|
||||
if(H)
|
||||
H.attack_ai(src) //may as well recycle
|
||||
|
||||
@@ -31,8 +31,6 @@
|
||||
..()
|
||||
|
||||
/mob/living/silicon/ai/ex_act(severity, target)
|
||||
..()
|
||||
|
||||
switch(severity)
|
||||
if(1)
|
||||
gib()
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
if(ai.client)
|
||||
ai.client.eye = src
|
||||
//Holopad
|
||||
if(istype(ai.current, /obj/machinery/hologram/holopad))
|
||||
var/obj/machinery/hologram/holopad/H = ai.current
|
||||
if(istype(ai.current, /obj/machinery/holopad))
|
||||
var/obj/machinery/holopad/H = ai.current
|
||||
H.move_hologram(ai)
|
||||
|
||||
/mob/camera/aiEye/Move()
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
if (!message)
|
||||
return
|
||||
|
||||
var/obj/machinery/hologram/holopad/T = current
|
||||
var/obj/machinery/holopad/T = current
|
||||
if(istype(T) && T.masters[src])//If there is a hologram and its master is the user.
|
||||
send_speech(message, 7, T, "robot", get_spans())
|
||||
src << "<i><span class='game say'>Holopad transmitted, <span class='name'>[real_name]</span> <span class='message robot'>\"[message]\"</span></span></i>"//The AI can "hear" its own message.
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
src << "<span class='notice'>You feel an electric surge run through your circuitry and become acutely aware at how lucky you are that you can still feel at all.</span>"
|
||||
|
||||
/mob/living/silicon/pai/ex_act(severity, target)
|
||||
..()
|
||||
|
||||
switch(severity)
|
||||
if(1)
|
||||
|
||||
@@ -99,7 +99,9 @@
|
||||
Proj.on_hit(src)
|
||||
return 0
|
||||
|
||||
/mob/living/simple_animal/ex_act(severity, target)
|
||||
/mob/living/simple_animal/ex_act(severity, target, origin)
|
||||
if(origin && istype(origin, /datum/spacevine_mutation) && isvineimmune(src))
|
||||
return
|
||||
..()
|
||||
var/bomb_armor = getarmor(null, "bomb")
|
||||
switch (severity)
|
||||
|
||||
@@ -53,17 +53,17 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/components/unary
|
||||
if(!client)
|
||||
return
|
||||
|
||||
if(iscarbon(src) && contents.len && ventcrawler < 2)//It must have atleast been 1 to get this far
|
||||
for(var/obj/item/I in contents)
|
||||
var/failed = 0
|
||||
if(istype(I, /obj/item/weapon/implant))
|
||||
continue
|
||||
else
|
||||
failed++
|
||||
|
||||
if(failed)
|
||||
src << "<span class='warning'>You can't crawl around in the ventilation ducts with items!</span>"
|
||||
return
|
||||
if(iscarbon(src) && ventcrawler < 2)//It must have atleast been 1 to get this far
|
||||
var/failed = 0
|
||||
var/list/items_list = get_equipped_items()
|
||||
if(items_list.len)
|
||||
failed = 1
|
||||
for(var/obj/item/I in held_items)
|
||||
failed = 1
|
||||
break
|
||||
if(failed)
|
||||
src << "<span class='warning'>You can't crawl around in the ventilation ducts with items!</span>"
|
||||
return
|
||||
|
||||
visible_message("<span class='notice'>[src] scrambles into the ventilation ducts!</span>","<span class='notice'>You climb into the ventilation ducts.</span>")
|
||||
forceMove(vent_found)
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
|
||||
// see _DEFINES/is_helpers.dm for mob type checks
|
||||
|
||||
/proc/isloyal(A) //Checks to see if the person contains a mindshield implant, then checks that the implant is actually inside of them
|
||||
for(var/obj/item/weapon/implant/mindshield/L in A)
|
||||
if(L && L.implanted)
|
||||
return 1
|
||||
/mob/proc/isloyal() //Checks to see if the person contains a mindshield implant, then checks that the implant is actually inside of them
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/isloyal()
|
||||
for(var/obj/item/weapon/implant/mindshield/L in implants)
|
||||
return 1
|
||||
|
||||
|
||||
/proc/check_zone(zone)
|
||||
if(!zone)
|
||||
return "chest"
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
//Handle items on mob
|
||||
|
||||
//first implants & organs
|
||||
var/list/implants = list()
|
||||
var/list/stored_implants = list()
|
||||
var/list/int_organs = list()
|
||||
|
||||
|
||||
|
||||
if (tr_flags & TR_KEEPIMPLANTS)
|
||||
for(var/obj/item/weapon/implant/W in src)
|
||||
implants += W
|
||||
for(var/X in implants)
|
||||
var/obj/item/weapon/implant/IMP = X
|
||||
stored_implants += IMP
|
||||
IMP.removed(src, 1, 1)
|
||||
|
||||
if (tr_flags & TR_KEEPORGANS)
|
||||
for(var/X in internal_organs)
|
||||
@@ -29,10 +29,11 @@
|
||||
CH.cavity_item = null
|
||||
|
||||
if(tr_flags & TR_KEEPITEMS)
|
||||
for(var/obj/item/W in (contents-implants-cavity_object))
|
||||
var/Itemlist = get_equipped_items()
|
||||
Itemlist += held_items
|
||||
for(var/obj/item/W in Itemlist)
|
||||
unEquip(W)
|
||||
|
||||
|
||||
//Make mob invisible and spawn animation
|
||||
notransform = 1
|
||||
canmove = 0
|
||||
@@ -84,9 +85,9 @@
|
||||
|
||||
//re-add implants to new mob
|
||||
if (tr_flags & TR_KEEPIMPLANTS)
|
||||
for(var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
for(var/Y in implants)
|
||||
var/obj/item/weapon/implant/IMP = Y
|
||||
IMP.implant(O, null, 1)
|
||||
|
||||
//re-add organs to new mob
|
||||
if(tr_flags & TR_KEEPORGANS)
|
||||
@@ -141,12 +142,14 @@
|
||||
//Handle items on mob
|
||||
|
||||
//first implants & organs
|
||||
var/list/implants = list()
|
||||
var/list/stored_implants = list()
|
||||
var/list/int_organs = list()
|
||||
|
||||
if (tr_flags & TR_KEEPIMPLANTS)
|
||||
for(var/obj/item/weapon/implant/W in src)
|
||||
implants += W
|
||||
for(var/X in implants)
|
||||
var/obj/item/weapon/implant/IMP = X
|
||||
stored_implants += IMP
|
||||
IMP.removed(src, 1, 1)
|
||||
|
||||
if (tr_flags & TR_KEEPORGANS)
|
||||
for(var/X in internal_organs)
|
||||
@@ -165,7 +168,9 @@
|
||||
|
||||
//now the rest
|
||||
if (tr_flags & TR_KEEPITEMS)
|
||||
for(var/obj/item/W in (contents-implants-cavity_object))
|
||||
var/Itemlist = get_equipped_items()
|
||||
Itemlist += held_items
|
||||
for(var/obj/item/W in Itemlist)
|
||||
unEquip(W)
|
||||
if (client)
|
||||
client.screen -= W
|
||||
@@ -231,10 +236,9 @@
|
||||
|
||||
//re-add implants to new mob
|
||||
if (tr_flags & TR_KEEPIMPLANTS)
|
||||
for(var/obj/item/weapon/implant/I in implants)
|
||||
I.loc = O
|
||||
I.implanted = O
|
||||
O.sec_hud_set_implants()
|
||||
for(var/Y in implants)
|
||||
var/obj/item/weapon/implant/IMP = Y
|
||||
IMP.implant(O, null, 1)
|
||||
|
||||
if(tr_flags & TR_KEEPORGANS)
|
||||
for(var/X in O.internal_organs)
|
||||
|
||||
@@ -155,6 +155,13 @@
|
||||
disconnect_terminal()
|
||||
. = ..()
|
||||
|
||||
/obj/machinery/power/apc/handle_atom_del(atom/A)
|
||||
if(A == cell)
|
||||
cell = null
|
||||
update_icon()
|
||||
update_icon()
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/power/apc/proc/make_terminal()
|
||||
// create a terminal object at the same position as original turf loc
|
||||
// wires will attach to this
|
||||
|
||||
@@ -95,9 +95,11 @@
|
||||
var/obj/item/weapon/implant/req_implant = null
|
||||
|
||||
/obj/item/device/firing_pin/implant/pin_auth(mob/living/user)
|
||||
for(var/obj/item/weapon/implant/I in user)
|
||||
if(req_implant && I.imp_in == user && I.type == req_implant)
|
||||
return 1
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
for(var/obj/item/weapon/implant/I in C.implants)
|
||||
if(req_implant && I.type == req_implant)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/item/device/firing_pin/implant/mindshield
|
||||
|
||||
@@ -85,9 +85,16 @@
|
||||
if(severity < 3)
|
||||
..()
|
||||
|
||||
/obj/machinery/chem_dispenser/blob_act(obj/structure/blob/B)
|
||||
if(prob(50))
|
||||
qdel(src)
|
||||
/obj/machinery/chem_dispenser/contents_explosion(severity, target)
|
||||
..()
|
||||
if(beaker)
|
||||
beaker.ex_act(severity, target)
|
||||
|
||||
/obj/machinery/chem_dispenser/handle_atom_del(atom/A)
|
||||
..()
|
||||
if(A == beaker)
|
||||
beaker = null
|
||||
cut_overlays()
|
||||
|
||||
/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = default_state)
|
||||
@@ -154,7 +161,7 @@
|
||||
. = TRUE
|
||||
if("eject")
|
||||
if(beaker)
|
||||
beaker.loc = loc
|
||||
beaker.forceMove(loc)
|
||||
beaker = null
|
||||
cut_overlays()
|
||||
. = TRUE
|
||||
|
||||
@@ -55,6 +55,23 @@
|
||||
if(severity < 3)
|
||||
..()
|
||||
|
||||
/obj/machinery/chem_master/contents_explosion(severity, target)
|
||||
..()
|
||||
if(beaker)
|
||||
beaker.ex_act(severity, target)
|
||||
if(bottle)
|
||||
bottle.ex_act(severity, target)
|
||||
|
||||
/obj/machinery/chem_master/handle_atom_del(atom/A)
|
||||
..()
|
||||
if(A == beaker)
|
||||
beaker = null
|
||||
reagents.clear_reagents()
|
||||
icon_state = "mixer0"
|
||||
else if(A == bottle)
|
||||
bottle = null
|
||||
|
||||
|
||||
/obj/machinery/chem_master/blob_act(obj/structure/blob/B)
|
||||
if (prob(50))
|
||||
qdel(src)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user