initial commit - game folder + maps + dme
This commit is contained in:
@@ -229,7 +229,7 @@
|
||||
/area/ruin/powered/beach)
|
||||
"aV" = (
|
||||
/obj/effect/mob_spawn/human/beach/alive{
|
||||
flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?";
|
||||
flavour_text = "<span class='big bold'>You're, like, totally a dudebro, bruh.</span><b> Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?</b>";
|
||||
l_pocket = /obj/item/reagent_containers/food/snacks/pizzaslice/dank;
|
||||
uniform = /obj/item/clothing/under/pants/youngfolksjeans
|
||||
},
|
||||
@@ -349,7 +349,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/mob_spawn/human/beach/alive{
|
||||
flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff.";
|
||||
flavour_text = "<span class='big bold'>You're a spunky lifeguard!</span><b> It's up to you to make sure nobody drowns or gets eaten by sharks and stuff.</b>";
|
||||
id = /obj/item/card/id;
|
||||
id_access = "Medical Doctor";
|
||||
id_job = "Lifeguard";
|
||||
|
||||
@@ -544,7 +544,7 @@
|
||||
"bN" = (
|
||||
/obj/effect/mob_spawn/cow{
|
||||
dir = 4;
|
||||
flavour_text = "<font size=3><b>Y</b></font><b>ou're a cow. You've lived a pampered life as a prized show heifer, a real blue-ribbon winner. After showing signs of a minor respiratory infection, your master took you to the hospital right away. He'd better come back soon. You're getting quite impatient.</b>";
|
||||
flavour_text = "<span class='big bold'>You're a cow.</span><b> You've lived a pampered life as a prized show heifer, a real blue-ribbon winner. After showing signs of a minor respiratory infection, your master took you to the hospital right away. He'd better come back soon. You're getting quite impatient.</b>";
|
||||
mob_name = "Flossie"
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
triggerer_only = 1
|
||||
},
|
||||
/obj/effect/step_trigger/message{
|
||||
message = "<span class='cultitalic'><b><span class='big'>You've made a grave mistake, haven't you?</span></b></span>";
|
||||
message = "<span class='cult italic'><b><span class='big'>You've made a grave mistake, haven't you?</span></b></span>";
|
||||
name = "ohfuck"
|
||||
},
|
||||
/turf/open/floor/engine/cult{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -498,7 +498,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/ruin/space/has_grav/derelictoutpost/cargobay)
|
||||
"by" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
id_tag = "innerbrig";
|
||||
name = "Security Checkpoint";
|
||||
req_access_txt = "63"
|
||||
|
||||
@@ -494,7 +494,7 @@
|
||||
/area/ruin/space/has_grav/ancientstation/comm)
|
||||
"bB" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Bridge"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
@@ -1408,7 +1408,7 @@
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
/area/ruin/space/has_grav/ancientstation/deltacorridor)
|
||||
"ef" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
name = "Medical Bay"
|
||||
},
|
||||
/turf/open/floor/plasteel/floorgrime,
|
||||
@@ -3222,7 +3222,7 @@
|
||||
},
|
||||
/area/ruin/space/has_grav/ancientstation/rnd)
|
||||
"is" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
name = "Chemical Storage";
|
||||
req_access_txt = "200"
|
||||
},
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
},
|
||||
/area/ruin/space/has_grav/onehalf/hallway)
|
||||
"aV" = (
|
||||
/obj/machinery/door/airlock/glass_medical,
|
||||
/obj/machinery/door/airlock/medical/glass,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
@@ -984,7 +984,7 @@
|
||||
/turf/template_noop,
|
||||
/area/ruin/space/has_grav/onehalf/hallway)
|
||||
"cE" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Bridge"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -998,7 +998,7 @@
|
||||
id = "bridge_onehalf";
|
||||
name = "bridge blast door"
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Bridge"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
|
||||
@@ -3447,7 +3447,7 @@
|
||||
/turf/closed/wall,
|
||||
/area/ruin/space/has_grav/hotel/security)
|
||||
"jq" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Hotel Security Checkpoint";
|
||||
req_access_txt = "203"
|
||||
},
|
||||
@@ -4197,7 +4197,7 @@
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/ruin/unpowered/no_grav)
|
||||
"lF" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Hotel Security Checkpoint";
|
||||
req_access_txt = "203"
|
||||
},
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
uniform = /obj/item/clothing/under/rank/bartender;
|
||||
death = 0;
|
||||
desc = "Looks secure.";
|
||||
flavour_text = "You are a bartender for the beach!";
|
||||
flavour_text = "<span class='big bold'>You are a bartender for the beach!</span>";
|
||||
icon = 'icons/obj/machines/sleeper.dmi';
|
||||
icon_state = "sleeper";
|
||||
mob_name = "Jerry Thomas";
|
||||
|
||||
@@ -1513,7 +1513,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/awaymission/centcomAway/courtroom)
|
||||
"fG" = (
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "Engineering";
|
||||
req_access_txt = "32"
|
||||
},
|
||||
@@ -1803,7 +1803,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/centcomAway/hangar)
|
||||
"gF" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Bridge";
|
||||
req_access_txt = "19"
|
||||
},
|
||||
|
||||
@@ -3204,7 +3204,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"gk" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Security Post";
|
||||
req_access_txt = "201"
|
||||
},
|
||||
@@ -4009,7 +4009,7 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"hG" = (
|
||||
/obj/machinery/door/airlock/glass_research{
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
name = "Research Storage";
|
||||
req_access_txt = "201"
|
||||
},
|
||||
@@ -4244,11 +4244,9 @@
|
||||
},
|
||||
/area/awaymission/moonoutpost19/research)
|
||||
"ie" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
glass = 0;
|
||||
/obj/machinery/door/airlock/medical{
|
||||
id_tag = "";
|
||||
name = "Research Division";
|
||||
opacity = 1;
|
||||
req_access_txt = "201";
|
||||
req_one_access_txt = "0"
|
||||
},
|
||||
|
||||
@@ -1596,7 +1596,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/awaymission/research/interior/security)
|
||||
"eS" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
id_tag = "outerbrig";
|
||||
name = "Brig";
|
||||
req_access_txt = "63"
|
||||
@@ -1913,7 +1913,7 @@
|
||||
},
|
||||
/area/awaymission/research/interior)
|
||||
"fS" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
id_tag = "outerbrig";
|
||||
name = "Brig";
|
||||
req_access_txt = "63"
|
||||
@@ -2323,7 +2323,7 @@
|
||||
},
|
||||
/area/awaymission/research/interior)
|
||||
"hb" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
id_tag = "outerbrig";
|
||||
name = "Brig";
|
||||
req_access_txt = "63"
|
||||
|
||||
@@ -160,7 +160,7 @@
|
||||
/area/awaymission/snowdin/base)
|
||||
"aC" = (
|
||||
/obj/structure/barricade/wooden,
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Security Office";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
@@ -2181,7 +2181,7 @@
|
||||
/area/awaymission/snowdin/post)
|
||||
"ha" = (
|
||||
/obj/structure/barricade/wooden,
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Security Office";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
@@ -2570,7 +2570,7 @@
|
||||
/turf/open/floor/plasteel/darkred,
|
||||
/area/awaymission/snowdin/post)
|
||||
"is" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Security Office";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
@@ -3306,7 +3306,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/awaymission/snowdin/sekret)
|
||||
"kJ" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Security Office";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
|
||||
@@ -7380,7 +7380,7 @@
|
||||
},
|
||||
/area/awaymission/undergroundoutpost45/research)
|
||||
"oE" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Security Office";
|
||||
req_access_txt = "201"
|
||||
},
|
||||
@@ -8008,7 +8008,7 @@
|
||||
/turf/closed/wall/rust,
|
||||
/area/awaymission/undergroundoutpost45/research)
|
||||
"pM" = (
|
||||
/obj/machinery/door/airlock/glass_research{
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
name = "Research Storage";
|
||||
req_access_txt = "201"
|
||||
},
|
||||
@@ -8159,7 +8159,7 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "SMES Room";
|
||||
req_access_txt = "201";
|
||||
req_one_access_txt = "0"
|
||||
@@ -8622,7 +8622,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Server Room";
|
||||
req_access_txt = "201"
|
||||
},
|
||||
@@ -9318,7 +9318,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "Engineering Reception";
|
||||
req_access_txt = "0"
|
||||
},
|
||||
@@ -9760,7 +9760,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "Engineering Reception";
|
||||
req_access_txt = "0"
|
||||
},
|
||||
@@ -10793,7 +10793,7 @@
|
||||
/turf/closed/wall,
|
||||
/area/awaymission/undergroundoutpost45/engineering)
|
||||
"uF" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Security Office";
|
||||
req_access_txt = "201"
|
||||
},
|
||||
@@ -11382,7 +11382,7 @@
|
||||
"vN" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Mining Foyer";
|
||||
req_access_txt = "201"
|
||||
},
|
||||
@@ -11396,7 +11396,7 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Mining Foyer";
|
||||
req_access_txt = "201"
|
||||
},
|
||||
@@ -11682,7 +11682,7 @@
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Chief Engineer";
|
||||
req_access_txt = "201"
|
||||
},
|
||||
@@ -12448,7 +12448,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Mining EVA";
|
||||
req_access_txt = "201"
|
||||
},
|
||||
|
||||
+1911
-5332
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -111,6 +111,7 @@
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/clothing/glasses/meson,
|
||||
/obj/item/device/mining_scanner,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/laborcamp)
|
||||
"av" = (
|
||||
@@ -119,6 +120,7 @@
|
||||
/obj/item/device/flashlight,
|
||||
/obj/item/pickaxe,
|
||||
/obj/item/clothing/glasses/meson,
|
||||
/obj/item/device/mining_scanner,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/laborcamp)
|
||||
"aw" = (
|
||||
@@ -144,7 +146,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/laborcamp)
|
||||
"aB" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Infirmary";
|
||||
req_access_txt = "0"
|
||||
@@ -286,7 +288,7 @@
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/lavaland/surface/outdoors/explored)
|
||||
"aY" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
cyclelinkeddir = 4;
|
||||
name = "Labor Camp Shuttle Security Airlock";
|
||||
req_access_txt = "2"
|
||||
@@ -450,7 +452,7 @@
|
||||
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
|
||||
/area/mine/eva)
|
||||
"bx" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
cyclelinkeddir = 4;
|
||||
name = "Labor Camp Shuttle Prisoner Airlock";
|
||||
req_access_txt = "0"
|
||||
@@ -470,7 +472,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/laborcamp)
|
||||
"bA" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Labor Camp Backroom";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
@@ -557,7 +559,7 @@
|
||||
/turf/open/floor/plasteel/purple/corner,
|
||||
/area/mine/eva)
|
||||
"bL" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Labor Camp Monitoring";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
@@ -617,7 +619,7 @@
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Mining Station EVA";
|
||||
req_access_txt = "54"
|
||||
},
|
||||
@@ -1371,7 +1373,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/mine/living_quarters)
|
||||
"dR" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Infirmary";
|
||||
req_access_txt = "0"
|
||||
@@ -1511,7 +1513,7 @@
|
||||
/turf/open/floor/plasteel/purple/corner,
|
||||
/area/mine/living_quarters)
|
||||
"el" = (
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Processing Area";
|
||||
req_access_txt = "48"
|
||||
},
|
||||
@@ -1614,7 +1616,7 @@
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Mining Station Bridge";
|
||||
req_access_txt = "48"
|
||||
},
|
||||
@@ -1647,7 +1649,7 @@
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Mining Station Bridge";
|
||||
req_access_txt = "48"
|
||||
},
|
||||
@@ -1689,7 +1691,7 @@
|
||||
},
|
||||
/area/mine/production)
|
||||
"eF" = (
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Processing Area";
|
||||
req_access_txt = "48"
|
||||
},
|
||||
@@ -3328,7 +3330,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/laborcamp)
|
||||
"WB" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
cyclelinkeddir = 8;
|
||||
name = "Labor Camp Shuttle Security Airlock";
|
||||
req_access_txt = "2"
|
||||
@@ -3336,7 +3338,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/mine/laborcamp)
|
||||
"WC" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
cyclelinkeddir = 8;
|
||||
name = "Labor Camp Shuttle Prisoner Airlock";
|
||||
req_access_txt = "0"
|
||||
@@ -21563,7 +21565,7 @@ am
|
||||
am
|
||||
am
|
||||
am
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -22070,7 +22072,7 @@ am
|
||||
am
|
||||
am
|
||||
am
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ai
|
||||
@@ -22854,7 +22856,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -24644,7 +24646,7 @@ am
|
||||
am
|
||||
am
|
||||
am
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -24901,7 +24903,7 @@ am
|
||||
am
|
||||
am
|
||||
am
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -25178,7 +25180,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ao
|
||||
ai
|
||||
am
|
||||
am
|
||||
ai
|
||||
@@ -25422,7 +25424,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ai
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -25672,7 +25674,7 @@ am
|
||||
am
|
||||
am
|
||||
am
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -25956,7 +25958,7 @@ am
|
||||
am
|
||||
am
|
||||
am
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -26199,7 +26201,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ao
|
||||
ai
|
||||
am
|
||||
am
|
||||
am
|
||||
@@ -26213,7 +26215,7 @@ am
|
||||
am
|
||||
am
|
||||
am
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -26972,7 +26974,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ao
|
||||
ai
|
||||
am
|
||||
am
|
||||
am
|
||||
@@ -28511,7 +28513,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ai
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -29021,7 +29023,7 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ai
|
||||
@@ -29030,13 +29032,13 @@ am
|
||||
am
|
||||
am
|
||||
am
|
||||
ao
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ao
|
||||
ao
|
||||
ai
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -29278,8 +29280,8 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ao
|
||||
ao
|
||||
ai
|
||||
ai
|
||||
ab
|
||||
ai
|
||||
am
|
||||
@@ -30060,8 +30062,8 @@ ab
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
ao
|
||||
ao
|
||||
ai
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ab
|
||||
@@ -30573,7 +30575,7 @@ ai
|
||||
ai
|
||||
ab
|
||||
ab
|
||||
ao
|
||||
ai
|
||||
am
|
||||
am
|
||||
am
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -202,7 +202,7 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/machinery/door/firedoor/heavy,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "AI Core";
|
||||
req_access_txt = "65"
|
||||
},
|
||||
@@ -241,7 +241,7 @@
|
||||
/area/ai_monitored/turret_protected/ai)
|
||||
"act" = (
|
||||
/obj/machinery/door/firedoor/heavy,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "AI Core";
|
||||
req_access_txt = "65"
|
||||
},
|
||||
@@ -502,7 +502,7 @@
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "AI Core";
|
||||
req_access_txt = "65"
|
||||
},
|
||||
@@ -2136,7 +2136,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/execution/transfer)
|
||||
"ahm" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Long-Term Cell 2";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
@@ -2156,7 +2156,7 @@
|
||||
/turf/closed/wall,
|
||||
/area/security/prison)
|
||||
"ahp" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Long-Term Cell 1";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
@@ -2864,7 +2864,6 @@
|
||||
"aiY" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/device/flashlight/lamp,
|
||||
/obj/item/storage/box/mousetraps,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/security/brig)
|
||||
"aiZ" = (
|
||||
@@ -2908,7 +2907,7 @@
|
||||
/area/security/prison)
|
||||
"ajd" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Prison Wing";
|
||||
req_access_txt = "1"
|
||||
},
|
||||
@@ -2925,7 +2924,7 @@
|
||||
/area/security/prison)
|
||||
"ajf" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Prison Wing";
|
||||
req_access_txt = "1"
|
||||
},
|
||||
@@ -3137,19 +3136,19 @@
|
||||
/area/maintenance/department/crew_quarters/dorms)
|
||||
"ajA" = (
|
||||
/obj/docking_port/stationary{
|
||||
dheight = 9;
|
||||
dir = 2;
|
||||
dwidth = 5;
|
||||
height = 24;
|
||||
dheight = 1;
|
||||
dir = 8;
|
||||
dwidth = 12;
|
||||
height = 17;
|
||||
id = "syndicate_ne";
|
||||
name = "northeast of station";
|
||||
turf_type = /turf/open/space;
|
||||
width = 18
|
||||
width = 23
|
||||
},
|
||||
/turf/open/space,
|
||||
/area/space/nearstation)
|
||||
"ajB" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/obj/item/storage/box/mousetraps,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/security/brig)
|
||||
"ajC" = (
|
||||
@@ -4407,7 +4406,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/main)
|
||||
"amt" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Head of Security";
|
||||
req_access_txt = "58"
|
||||
},
|
||||
@@ -5810,7 +5809,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/security/warden)
|
||||
"apM" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Brig Control";
|
||||
req_access_txt = "3"
|
||||
},
|
||||
@@ -6393,7 +6392,7 @@
|
||||
/area/security/brig)
|
||||
"arj" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Labor Camp Shuttle Airlock";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
@@ -7453,7 +7452,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/security/brig)
|
||||
"atE" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
cyclelinkeddir = 2;
|
||||
id_tag = "innerbrig";
|
||||
name = "Brig";
|
||||
@@ -7478,7 +7477,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/security/brig)
|
||||
"atG" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
cyclelinkeddir = 2;
|
||||
id_tag = "innerbrig";
|
||||
name = "Brig";
|
||||
@@ -7490,7 +7489,7 @@
|
||||
},
|
||||
/area/security/brig)
|
||||
"atH" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Brig Desk";
|
||||
req_access_txt = "1"
|
||||
},
|
||||
@@ -8781,7 +8780,7 @@
|
||||
/area/shuttle/labor)
|
||||
"awH" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Labor Camp Shuttle Airlock";
|
||||
req_access_txt = "0"
|
||||
},
|
||||
@@ -8828,7 +8827,7 @@
|
||||
/area/security/brig)
|
||||
"awL" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
cyclelinkeddir = 1;
|
||||
id_tag = "outerbrig";
|
||||
name = "Brig";
|
||||
@@ -8856,7 +8855,7 @@
|
||||
/area/security/brig)
|
||||
"awN" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
cyclelinkeddir = 1;
|
||||
id_tag = "outerbrig";
|
||||
name = "Brig";
|
||||
@@ -10634,7 +10633,7 @@
|
||||
/area/crew_quarters/heads/captain)
|
||||
"aBq" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
cyclelinkeddir = 2;
|
||||
name = "Bridge";
|
||||
req_access_txt = "19"
|
||||
@@ -10648,7 +10647,7 @@
|
||||
"aBr" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
cyclelinkeddir = 2;
|
||||
name = "Bridge";
|
||||
req_access_txt = "19"
|
||||
@@ -10711,7 +10710,7 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
cyclelinkeddir = 2;
|
||||
name = "Bridge";
|
||||
req_access_txt = "19"
|
||||
@@ -13145,7 +13144,7 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
cyclelinkeddir = 1;
|
||||
name = "Bridge";
|
||||
req_access_txt = "19"
|
||||
@@ -13159,7 +13158,7 @@
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
cyclelinkeddir = 1;
|
||||
name = "Bridge";
|
||||
req_access_txt = "19"
|
||||
@@ -13181,7 +13180,7 @@
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
cyclelinkeddir = 1;
|
||||
name = "Bridge";
|
||||
req_access_txt = "19"
|
||||
@@ -14830,7 +14829,7 @@
|
||||
/area/storage/eva)
|
||||
"aLb" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "EVA Storage";
|
||||
req_access_txt = "18"
|
||||
},
|
||||
@@ -14847,7 +14846,7 @@
|
||||
"aLd" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Teleporter";
|
||||
req_access_txt = "17"
|
||||
},
|
||||
@@ -14926,7 +14925,7 @@
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/escape)
|
||||
"aLs" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Holding Area";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
@@ -16435,7 +16434,7 @@
|
||||
},
|
||||
/area/security/checkpoint/supply)
|
||||
"aOR" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Cargo Security Post";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
@@ -17396,7 +17395,7 @@
|
||||
/area/security/checkpoint/supply)
|
||||
"aRg" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Cargo Security Post";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
@@ -17821,7 +17820,7 @@
|
||||
/area/quartermaster/office)
|
||||
"aSg" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Mailroom";
|
||||
req_access_txt = "0";
|
||||
req_one_access_txt = "48;50"
|
||||
@@ -18751,7 +18750,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/office)
|
||||
"aUo" = (
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Cargo Bay";
|
||||
req_access_txt = "0";
|
||||
req_one_access_txt = "31;48"
|
||||
@@ -20921,7 +20920,7 @@
|
||||
/area/quartermaster/office)
|
||||
"aZl" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Cargo Office";
|
||||
req_access_txt = "50"
|
||||
},
|
||||
@@ -21872,7 +21871,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/quartermaster/qm)
|
||||
"bbG" = (
|
||||
/obj/machinery/door/airlock/glass_mining{
|
||||
/obj/machinery/door/airlock/mining/glass{
|
||||
name = "Quartermaster";
|
||||
req_access_txt = "41"
|
||||
},
|
||||
@@ -26578,7 +26577,7 @@
|
||||
/area/medical/genetics)
|
||||
"bnw" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Cloning";
|
||||
req_access_txt = "0";
|
||||
@@ -26636,7 +26635,7 @@
|
||||
/area/security/checkpoint/medical)
|
||||
"bnB" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Medbay Security Post";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
@@ -26776,7 +26775,7 @@
|
||||
/area/science/server)
|
||||
"bnU" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Server Room";
|
||||
req_access_txt = "30"
|
||||
},
|
||||
@@ -28155,7 +28154,7 @@
|
||||
/area/medical/genetics)
|
||||
"bra" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = "GeneticsDoor";
|
||||
name = "Cloning";
|
||||
req_access_txt = "0";
|
||||
@@ -29796,7 +29795,7 @@
|
||||
/area/science/explab)
|
||||
"buA" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_research{
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
name = "Experimentation Lab";
|
||||
req_access_txt = "47"
|
||||
},
|
||||
@@ -30020,7 +30019,7 @@
|
||||
/area/science/xenobiology)
|
||||
"buV" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_research{
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
name = "Kill Room";
|
||||
req_access_txt = "55"
|
||||
},
|
||||
@@ -30071,7 +30070,7 @@
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/medical/genetics)
|
||||
"bvd" = (
|
||||
/obj/machinery/door/airlock/glass_research{
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
name = "Genetics";
|
||||
req_access_txt = "9"
|
||||
},
|
||||
@@ -30168,7 +30167,7 @@
|
||||
/turf/open/floor/plasteel/whiteblue/corner,
|
||||
/area/medical/medbay/central)
|
||||
"bvq" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Chemistry Lab";
|
||||
req_access_txt = "5; 33"
|
||||
@@ -31710,7 +31709,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/medical/sleeper)
|
||||
"byp" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Sleepers";
|
||||
req_access_txt = "5"
|
||||
@@ -31722,7 +31721,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/sleeper)
|
||||
"byq" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Sleepers";
|
||||
req_access_txt = "5"
|
||||
@@ -32986,7 +32985,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/sleeper)
|
||||
"bBd" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = "MedbaySleepers";
|
||||
name = "Sleepers";
|
||||
req_access_txt = "5"
|
||||
@@ -33532,7 +33531,7 @@
|
||||
},
|
||||
/area/medical/medbay/central)
|
||||
"bCq" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Chief Medical Office";
|
||||
req_access_txt = "40"
|
||||
},
|
||||
@@ -34149,7 +34148,7 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_research{
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
name = "Toxins Storage";
|
||||
req_access_txt = "8"
|
||||
},
|
||||
@@ -34190,7 +34189,7 @@
|
||||
/area/science/research)
|
||||
"bDU" = (
|
||||
/obj/machinery/door/firedoor/heavy,
|
||||
/obj/machinery/door/airlock/glass_research{
|
||||
/obj/machinery/door/airlock/research/glass{
|
||||
name = "Toxins Lab";
|
||||
req_access_txt = "8"
|
||||
},
|
||||
@@ -34432,6 +34431,10 @@
|
||||
pixel_x = -3;
|
||||
pixel_y = -3
|
||||
},
|
||||
/obj/structure/window/reinforced,
|
||||
/obj/structure/window/reinforced{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/whiteblue/side{
|
||||
dir = 1
|
||||
},
|
||||
@@ -34447,6 +34450,10 @@
|
||||
pixel_x = -3;
|
||||
pixel_y = -3
|
||||
},
|
||||
/obj/machinery/door/window/southleft{
|
||||
name = "First-Aid Supplies";
|
||||
req_access_txt = "5"
|
||||
},
|
||||
/turf/open/floor/plasteel/whiteblue/side{
|
||||
dir = 1
|
||||
},
|
||||
@@ -34462,6 +34469,10 @@
|
||||
pixel_x = -3;
|
||||
pixel_y = -3
|
||||
},
|
||||
/obj/machinery/door/window/southright{
|
||||
name = "First-Aid Supplies";
|
||||
req_access_txt = "5"
|
||||
},
|
||||
/turf/open/floor/plasteel/whiteblue/side{
|
||||
dir = 1
|
||||
},
|
||||
@@ -34477,6 +34488,7 @@
|
||||
pixel_x = -3;
|
||||
pixel_y = -3
|
||||
},
|
||||
/obj/structure/window/reinforced,
|
||||
/turf/open/floor/plasteel/whiteblue/side{
|
||||
dir = 1
|
||||
},
|
||||
@@ -35159,7 +35171,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/medbay/central)
|
||||
"bFR" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Medbay Storage";
|
||||
req_access_txt = "45"
|
||||
@@ -35243,7 +35255,7 @@
|
||||
/turf/closed/wall,
|
||||
/area/hallway/primary/aft)
|
||||
"bGb" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Research Security Post";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
@@ -35611,7 +35623,7 @@
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/medbay/central)
|
||||
"bGY" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Medbay Storage";
|
||||
req_access_txt = "45"
|
||||
@@ -36619,7 +36631,7 @@
|
||||
},
|
||||
/area/medical/medbay/central)
|
||||
"bJq" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Recovery Room";
|
||||
req_access_txt = "0"
|
||||
@@ -37044,7 +37056,7 @@
|
||||
/area/medical/virology)
|
||||
"bKo" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_virology{
|
||||
/obj/machinery/door/airlock/virology/glass{
|
||||
name = "Isolation B";
|
||||
req_access_txt = "39"
|
||||
},
|
||||
@@ -37053,7 +37065,7 @@
|
||||
/area/medical/virology)
|
||||
"bKp" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_virology{
|
||||
/obj/machinery/door/airlock/virology/glass{
|
||||
name = "Isolation A";
|
||||
req_access_txt = "39"
|
||||
},
|
||||
@@ -37739,7 +37751,7 @@
|
||||
"bLX" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/obj/machinery/door/airlock/glass_atmos{
|
||||
/obj/machinery/door/airlock/atmos/glass{
|
||||
cyclelinkeddir = 0;
|
||||
name = "Atmospherics";
|
||||
req_access_txt = "24"
|
||||
@@ -38189,7 +38201,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/door/firedoor/heavy,
|
||||
/obj/machinery/door/airlock/glass_atmos{
|
||||
/obj/machinery/door/airlock/atmos/glass{
|
||||
name = "Atmospherics Monitoring";
|
||||
req_access_txt = "24"
|
||||
},
|
||||
@@ -38618,7 +38630,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/door/firedoor/heavy,
|
||||
/obj/machinery/door/airlock/glass_atmos{
|
||||
/obj/machinery/door/airlock/atmos/glass{
|
||||
name = "Atmospherics Monitoring";
|
||||
req_access_txt = "24"
|
||||
},
|
||||
@@ -40514,7 +40526,7 @@
|
||||
/area/hallway/primary/aft)
|
||||
"bSQ" = (
|
||||
/obj/machinery/door/firedoor/heavy,
|
||||
/obj/machinery/door/airlock/glass_atmos{
|
||||
/obj/machinery/door/airlock/atmos/glass{
|
||||
cyclelinkeddir = 0;
|
||||
name = "Atmospherics Monitoring";
|
||||
req_access_txt = "24"
|
||||
@@ -41457,7 +41469,7 @@
|
||||
},
|
||||
/area/security/checkpoint/engineering)
|
||||
"bUY" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Engineering Security Post";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
@@ -42725,7 +42737,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/crew_quarters/heads/chief)
|
||||
"bYa" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Chief Engineer";
|
||||
req_access_txt = "56"
|
||||
},
|
||||
@@ -42772,7 +42784,7 @@
|
||||
/area/engine/engine_smes)
|
||||
"bYh" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "Power Storage";
|
||||
req_access_txt = "11";
|
||||
req_one_access_txt = "0"
|
||||
@@ -47230,7 +47242,7 @@
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/library)
|
||||
"clm" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/obj/structure/closet/crate/bin,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/library)
|
||||
"cln" = (
|
||||
@@ -47545,7 +47557,7 @@
|
||||
},
|
||||
/area/tcommsat/computer)
|
||||
"cmj" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Control Room";
|
||||
req_access_txt = "19; 61"
|
||||
},
|
||||
@@ -47674,7 +47686,7 @@
|
||||
},
|
||||
/area/tcommsat/computer)
|
||||
"cmw" = (
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
cyclelinkeddir = 2;
|
||||
name = "Server Room";
|
||||
req_access_txt = "61"
|
||||
@@ -47749,7 +47761,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/tcommsat/computer)
|
||||
"cmF" = (
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
cyclelinkeddir = 1;
|
||||
name = "Server Room";
|
||||
req_access_txt = "61"
|
||||
@@ -51358,18 +51370,6 @@
|
||||
/obj/machinery/vending/games,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/library)
|
||||
"cCX" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/crew_quarters/dorms)
|
||||
"cCY" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/engine)
|
||||
"cCZ" = (
|
||||
/obj/machinery/vending/kink,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/department/engine)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaa
|
||||
@@ -73874,7 +73874,7 @@ bvb
|
||||
bDj
|
||||
bEo
|
||||
bva
|
||||
cCY
|
||||
bva
|
||||
bHQ
|
||||
bJg
|
||||
bKl
|
||||
@@ -74130,7 +74130,7 @@ bnv
|
||||
bnv
|
||||
bDi
|
||||
bmf
|
||||
bva
|
||||
bsn
|
||||
bva
|
||||
bHS
|
||||
bJh
|
||||
@@ -79029,7 +79029,7 @@ cCF
|
||||
cCH
|
||||
bTn
|
||||
bPB
|
||||
cCZ
|
||||
bDi
|
||||
bVC
|
||||
bQj
|
||||
bPA
|
||||
@@ -88702,7 +88702,7 @@ aaa
|
||||
aaa
|
||||
aaa
|
||||
aiU
|
||||
cCX
|
||||
ajv
|
||||
aju
|
||||
ajt
|
||||
alQ
|
||||
|
||||
@@ -310,7 +310,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/engine/engineering)
|
||||
"aU" = (
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "Gravity Generator";
|
||||
req_access_txt = "11";
|
||||
req_one_access_txt = "0"
|
||||
@@ -339,7 +339,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/gravity_generator)
|
||||
"aX" = (
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "Gravity Generator";
|
||||
req_access_txt = "11";
|
||||
req_one_access_txt = "0"
|
||||
|
||||
@@ -9446,7 +9446,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/centcom/ferry)
|
||||
"zk" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
name = "Infirmary"
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"aP" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Emergency Shuttle Brig";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
@@ -297,7 +297,7 @@
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/escape)
|
||||
"bg" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Emergency Shuttle Cockpit";
|
||||
req_access_txt = "19"
|
||||
},
|
||||
@@ -355,7 +355,7 @@
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"bq" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Escape Shuttle Infirmary";
|
||||
req_access_txt = "5"
|
||||
@@ -363,7 +363,7 @@
|
||||
/turf/open/floor/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"br" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Escape Shuttle Infirmary";
|
||||
req_access_txt = "0"
|
||||
|
||||
@@ -387,7 +387,7 @@
|
||||
/turf/open/floor/plasteel/freezer,
|
||||
/area/shuttle/escape)
|
||||
"bq" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
name = "Medbay"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium,
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/escape)
|
||||
"as" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "bridge door";
|
||||
req_access_txt = "19"
|
||||
},
|
||||
@@ -134,7 +134,7 @@
|
||||
/turf/open/floor/mineral/plastitanium/brig,
|
||||
/area/shuttle/escape)
|
||||
"az" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "security airlock";
|
||||
req_access_txt = "63"
|
||||
},
|
||||
|
||||
@@ -399,7 +399,7 @@
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"bn" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Emergency Shuttle Brig";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
@@ -717,7 +717,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/escape)
|
||||
"ce" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
name = "Emergency Shuttle Medbay"
|
||||
},
|
||||
/turf/open/floor/plasteel/whiteblue,
|
||||
@@ -986,7 +986,7 @@
|
||||
},
|
||||
/area/shuttle/escape)
|
||||
"cP" = (
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "Engine Room";
|
||||
req_one_access_txt = "10;24"
|
||||
},
|
||||
|
||||
@@ -306,7 +306,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/escape)
|
||||
"aF" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Escape Shuttle Infirmary";
|
||||
req_access_txt = "0"
|
||||
@@ -422,7 +422,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/escape)
|
||||
"aV" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Escape Shuttle Infirmary";
|
||||
req_access_txt = "0"
|
||||
@@ -649,14 +649,14 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/shuttle/escape)
|
||||
"bt" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Holding Area";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/brig,
|
||||
/area/shuttle/escape)
|
||||
"bu" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Cockpit";
|
||||
req_access_txt = "19"
|
||||
},
|
||||
|
||||
@@ -260,7 +260,7 @@
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/escape)
|
||||
"aH" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Cockpit";
|
||||
req_access_txt = "19"
|
||||
},
|
||||
@@ -377,14 +377,14 @@
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"aY" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Brig";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium/brig,
|
||||
/area/shuttle/escape)
|
||||
"aZ" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Escape Shuttle Infirmary";
|
||||
req_access_txt = "0"
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
dwidth = 20;
|
||||
height = 40;
|
||||
movement_force = list("KNOCKDOWN" = 3, "THROW" = 6);
|
||||
name = "a meteor with engines strapped to it";
|
||||
name = "\proper a meteor with engines strapped to it";
|
||||
timid = 1;
|
||||
width = 40
|
||||
},
|
||||
|
||||
@@ -82,14 +82,14 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/shuttle/escape)
|
||||
"o" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Escape Shuttle Cell";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
/turf/open/floor/mineral/titanium/blue,
|
||||
/area/shuttle/escape)
|
||||
"p" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Escape Shuttle Infirmary";
|
||||
req_access_txt = "0"
|
||||
@@ -214,7 +214,7 @@
|
||||
/turf/closed/wall/mineral/titanium,
|
||||
/area/shuttle/escape)
|
||||
"I" = (
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Escape Shuttle Cockpit";
|
||||
req_access_txt = "19"
|
||||
},
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
/turf/open/floor/mineral/plastitanium/brig,
|
||||
/area/shuttle/escape)
|
||||
"aI" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Emergency Shuttle Brig";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
@@ -231,7 +231,7 @@
|
||||
/turf/open/floor/engine,
|
||||
/area/shuttle/escape)
|
||||
"aO" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Emergency Shuttle Airlock";
|
||||
req_access_txt = "2"
|
||||
},
|
||||
@@ -280,7 +280,7 @@
|
||||
name = "Box emergency shuttle";
|
||||
timid = 1
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Emergency Shuttle Airlock"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
@@ -418,7 +418,7 @@
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/escape)
|
||||
"br" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Emergency Shuttle Airlock"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
@@ -438,7 +438,7 @@
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
/area/shuttle/escape)
|
||||
"bu" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Emergency Shuttle Cargo"
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
@@ -448,7 +448,7 @@
|
||||
/turf/closed/wall,
|
||||
/area/shuttle/escape)
|
||||
"bw" = (
|
||||
/obj/machinery/door/airlock/glass_security{
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Emergency Shuttle Infirmary"
|
||||
},
|
||||
/turf/open/floor/mineral/plastitanium,
|
||||
|
||||
@@ -201,7 +201,7 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_maintenance{
|
||||
/obj/machinery/door/airlock/maintenance/glass{
|
||||
name = "Maintenance"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -252,7 +252,7 @@
|
||||
},
|
||||
/area/shuttle/abandoned)
|
||||
"aA" = (
|
||||
/obj/machinery/door/airlock/glass_maintenance{
|
||||
/obj/machinery/door/airlock/maintenance/glass{
|
||||
name = "Maintenance"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -1014,7 +1014,7 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
id_tag = null;
|
||||
name = "Infirmary";
|
||||
req_access_txt = "0"
|
||||
@@ -1295,7 +1295,7 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_engineering{
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "Engineering Storage"
|
||||
},
|
||||
/turf/open/floor/plasteel/neutral/side{
|
||||
@@ -1614,7 +1614,7 @@
|
||||
desc = "A thin layer of dust coating the floor.";
|
||||
name = "dust"
|
||||
},
|
||||
/obj/machinery/door/airlock/glass_command{
|
||||
/obj/machinery/door/airlock/command/glass{
|
||||
name = "Bridge";
|
||||
welded = 1
|
||||
},
|
||||
|
||||
@@ -538,7 +538,7 @@
|
||||
/turf/open/floor/pod/dark,
|
||||
/area/shuttle/pirate/vault)
|
||||
"bs" = (
|
||||
/obj/machinery/door/airlock/glass_medical{
|
||||
/obj/machinery/door/airlock/medical/glass{
|
||||
name = "Medbay"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
|
||||
@@ -78,6 +78,7 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances)
|
||||
QDEL_NULL(ghost_appearance)
|
||||
|
||||
/datum/atom_hud/alternate_appearance/basic/add_to_hud(atom/A)
|
||||
LAZYINITLIST(A.hud_list)
|
||||
A.hud_list[appearance_key] = theImage
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -28,4 +28,4 @@
|
||||
for(var/X in motioncameras)
|
||||
var/obj/machinery/camera/cam = X
|
||||
cam.lostTargetRef(WEAKREF(O))
|
||||
return
|
||||
return
|
||||
@@ -123,4 +123,4 @@
|
||||
|
||||
/area/holodeck/rec_center/thunderdome1218
|
||||
name = "Holodeck - 1218 AD"
|
||||
restricted = 1
|
||||
restricted = 1
|
||||
|
||||
@@ -32,9 +32,44 @@
|
||||
/area/ruin/powered/seedvault
|
||||
icon_state = "dk_yellow"
|
||||
|
||||
/area/ruin/powered/syndicate_lava_base
|
||||
/area/ruin/unpowered/syndicate_lava_base
|
||||
name = "Secret Base"
|
||||
icon_state = "dk_yellow"
|
||||
ambientsounds = HIGHSEC
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/engineering
|
||||
name = "Syndicate Lavaland Engineering"
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/medbay
|
||||
name = "Syndicate Lavaland Medbay"
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/arrivals
|
||||
name = "Syndicate Lavaland Arrivals"
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/bar
|
||||
name = "Syndicate Lavaland Bar"
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/main
|
||||
name = "Syndicate Lavaland Primary Hallway"
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/cargo
|
||||
name = "Syndicate Lavaland Cargo Bay"
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/chemistry
|
||||
name = "Syndicate Lavaland Chemistry"
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/virology
|
||||
name = "Syndicate Lavaland Virology"
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/testlab
|
||||
name = "Syndicate Lavaland Experimentation Lab"
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/dormitories
|
||||
name = "Syndicate Lavaland Dormitories"
|
||||
|
||||
/area/ruin/unpowered/syndicate_lava_base/telecomms
|
||||
name = "Syndicate Lavaland Telecommunications"
|
||||
|
||||
|
||||
//Xeno Nest
|
||||
|
||||
|
||||
@@ -132,44 +132,12 @@
|
||||
if (orbiting)
|
||||
orbiting.Check()
|
||||
|
||||
if(flags_1 & CLEAN_ON_MOVE_1)
|
||||
clean_on_move()
|
||||
|
||||
var/datum/proximity_monitor/proximity_monitor = src.proximity_monitor
|
||||
if(proximity_monitor)
|
||||
proximity_monitor.HandleMove()
|
||||
|
||||
return 1
|
||||
|
||||
/atom/movable/proc/clean_on_move()
|
||||
var/turf/tile = loc
|
||||
if(isturf(tile))
|
||||
tile.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
|
||||
for(var/A in tile)
|
||||
if(is_cleanable(A))
|
||||
qdel(A)
|
||||
else if(istype(A, /obj/item))
|
||||
var/obj/item/cleaned_item = A
|
||||
cleaned_item.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
|
||||
else if(ishuman(A))
|
||||
var/mob/living/carbon/human/cleaned_human = A
|
||||
if(cleaned_human.lying)
|
||||
if(cleaned_human.head)
|
||||
cleaned_human.head.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
|
||||
cleaned_human.update_inv_head()
|
||||
if(cleaned_human.wear_suit)
|
||||
cleaned_human.wear_suit.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
|
||||
cleaned_human.update_inv_wear_suit()
|
||||
else if(cleaned_human.w_uniform)
|
||||
cleaned_human.w_uniform.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
|
||||
cleaned_human.update_inv_w_uniform()
|
||||
if(cleaned_human.shoes)
|
||||
cleaned_human.shoes.SendSignal(COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
|
||||
cleaned_human.update_inv_shoes()
|
||||
cleaned_human.clean_blood()
|
||||
cleaned_human.wash_cream()
|
||||
to_chat(cleaned_human, "<span class='danger'>[src] cleans your face!</span>")
|
||||
|
||||
/atom/movable/Destroy(force)
|
||||
var/inform_admins = (flags_2 & INFORM_ADMINS_ON_RELOCATE_2)
|
||||
var/stationloving = (flags_2 & STATIONLOVING_2)
|
||||
@@ -712,4 +680,4 @@
|
||||
return FALSE
|
||||
if(anchored || throwing)
|
||||
return FALSE
|
||||
return TRUE
|
||||
return TRUE
|
||||
|
||||
+43
-153
@@ -86,109 +86,55 @@ GLOBAL_LIST_EMPTY(all_radios)
|
||||
for(var/freq in GLOB.all_radios)
|
||||
GLOB.all_radios["[freq]"] -= radio
|
||||
|
||||
/*
|
||||
Frequency range: 1200 to 1600
|
||||
Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency, even during mapmaking)
|
||||
|
||||
Radio:
|
||||
1459 - standard radio chat
|
||||
1351 - Science
|
||||
1353 - Command
|
||||
1355 - Medical
|
||||
1357 - Engineering
|
||||
1359 - Security
|
||||
1337 - death squad
|
||||
1443 - Confession Intercom
|
||||
1349 - Miners
|
||||
1347 - Cargo techs
|
||||
1447 - AI Private
|
||||
|
||||
Devices:
|
||||
1451 - tracking implant
|
||||
1457 - RSD default
|
||||
|
||||
On the map:
|
||||
1311 for prison shuttle console (in fact, it is not used)
|
||||
1435 for status displays
|
||||
1437 for atmospherics/fire alerts
|
||||
1439 for engine components
|
||||
1439 for air pumps, air scrubbers, atmo control
|
||||
1441 for atmospherics - supply tanks
|
||||
1443 for atmospherics - distribution loop/mixed air tank
|
||||
1445 for bot nav beacons
|
||||
1447 for mulebot, secbot and ed209 control
|
||||
1449 for airlock controls, electropack, magnets
|
||||
1451 for toxin lab access
|
||||
1453 for engineering access
|
||||
1455 for AI access
|
||||
*/
|
||||
// For information on what objects or departments use what frequencies,
|
||||
// see __DEFINES/radio.dm. Mappers may also select additional frequencies for
|
||||
// use in maps, such as in intercoms.
|
||||
|
||||
GLOBAL_LIST_INIT(radiochannels, list(
|
||||
"Common" = 1459,
|
||||
"Science" = 1351,
|
||||
"Command" = 1353,
|
||||
"Medical" = 1355,
|
||||
"Engineering" = 1357,
|
||||
"Security" = 1359,
|
||||
"CentCom" = 1337,
|
||||
"Syndicate" = 1213,
|
||||
"Supply" = 1347,
|
||||
"Service" = 1349,
|
||||
"AI Private" = 1447,
|
||||
"Red Team" = 1215,
|
||||
"Blue Team" = 1217
|
||||
"Common" = FREQ_COMMON,
|
||||
"Science" = FREQ_SCIENCE,
|
||||
"Command" = FREQ_COMMAND,
|
||||
"Medical" = FREQ_MEDICAL,
|
||||
"Engineering" = FREQ_ENGINEERING,
|
||||
"Security" = FREQ_SECURITY,
|
||||
"CentCom" = FREQ_CENTCOM,
|
||||
"Syndicate" = FREQ_SYNDICATE,
|
||||
"Supply" = FREQ_SUPPLY,
|
||||
"Service" = FREQ_SERVICE,
|
||||
"AI Private" = FREQ_AI_PRIVATE,
|
||||
"Red Team" = FREQ_CTF_RED,
|
||||
"Blue Team" = FREQ_CTF_BLUE
|
||||
))
|
||||
|
||||
GLOBAL_LIST_INIT(reverseradiochannels, list(
|
||||
"1459" = "Common",
|
||||
"1351" = "Science",
|
||||
"1353" = "Command",
|
||||
"1355" = "Medical",
|
||||
"1357" = "Engineering",
|
||||
"1359" = "Security",
|
||||
"1337" = "CentCom",
|
||||
"1213" = "Syndicate",
|
||||
"1347" = "Supply",
|
||||
"1349" = "Service",
|
||||
"1447" = "AI Private",
|
||||
"1215" = "Red Team",
|
||||
"1217" = "Blue Team"
|
||||
"[FREQ_COMMON]" = "Common",
|
||||
"[FREQ_SCIENCE]" = "Science",
|
||||
"[FREQ_COMMAND]" = "Command",
|
||||
"[FREQ_MEDICAL]" = "Medical",
|
||||
"[FREQ_ENGINEERING]" = "Engineering",
|
||||
"[FREQ_SECURITY]" = "Security",
|
||||
"[FREQ_CENTCOM]" = "CentCom",
|
||||
"[FREQ_SYNDICATE]" = "Syndicate",
|
||||
"[FREQ_SUPPLY]" = "Supply",
|
||||
"[FREQ_SERVICE]" = "Service",
|
||||
"[FREQ_AI_PRIVATE]" = "AI Private",
|
||||
"[FREQ_CTF_RED]" = "Red Team",
|
||||
"[FREQ_CTF_BLUE]" = "Blue Team"
|
||||
))
|
||||
|
||||
//depenging helpers
|
||||
GLOBAL_VAR_CONST(SYND_FREQ, 1213) //nuke op frequency, coloured dark brown in chat window
|
||||
GLOBAL_VAR_CONST(SUPP_FREQ, 1347) //supply, coloured light brown in chat window
|
||||
GLOBAL_VAR_CONST(SERV_FREQ, 1349) //service, coloured green in chat window
|
||||
GLOBAL_VAR_CONST(SCI_FREQ, 1351) //science, coloured plum in chat window
|
||||
GLOBAL_VAR_CONST(COMM_FREQ, 1353) //command, colored gold in chat window
|
||||
GLOBAL_VAR_CONST(MED_FREQ, 1355) //medical, coloured blue in chat window
|
||||
GLOBAL_VAR_CONST(ENG_FREQ, 1357) //engineering, coloured orange in chat window
|
||||
GLOBAL_VAR_CONST(SEC_FREQ, 1359) //security, coloured red in chat window
|
||||
GLOBAL_VAR_CONST(CENTCOM_FREQ, 1337) //centcom frequency, coloured grey in chat window
|
||||
GLOBAL_VAR_CONST(AIPRIV_FREQ, 1447) //AI private, colored magenta in chat window
|
||||
GLOBAL_VAR_CONST(REDTEAM_FREQ, 1215) // red team (CTF) frequency, coloured red
|
||||
GLOBAL_VAR_CONST(BLUETEAM_FREQ, 1217) // blue team (CTF) frequency, coloured blue
|
||||
|
||||
#define TRANSMISSION_WIRE 0
|
||||
#define TRANSMISSION_RADIO 1
|
||||
|
||||
/* filters */
|
||||
GLOBAL_VAR_INIT(RADIO_TO_AIRALARM, "1")
|
||||
GLOBAL_VAR_INIT(RADIO_FROM_AIRALARM, "2")
|
||||
GLOBAL_VAR_INIT(RADIO_CHAT, "3") //deprecated
|
||||
GLOBAL_VAR_INIT(RADIO_ATMOSIA, "4")
|
||||
GLOBAL_VAR_INIT(RADIO_NAVBEACONS, "5")
|
||||
GLOBAL_VAR_INIT(RADIO_AIRLOCK, "6")
|
||||
GLOBAL_VAR_INIT(RADIO_MAGNETS, "9")
|
||||
|
||||
/datum/radio_frequency
|
||||
|
||||
var/frequency as num
|
||||
var/list/list/obj/devices = list()
|
||||
|
||||
/datum/radio_frequency/New(freq)
|
||||
frequency = freq
|
||||
|
||||
//If range > 0, only post to devices on the same z_level and within range
|
||||
//Use range = -1, to restrain to the same z_level without limiting range
|
||||
/datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, filter = null as text|null, range = null as num|null)
|
||||
// Ensure the signal's data is fully filled
|
||||
signal.source = source
|
||||
signal.frequency = frequency
|
||||
|
||||
//Apply filter to the signal. If none supply, broadcast to every devices
|
||||
//_default channel is always checked
|
||||
@@ -217,7 +163,7 @@ GLOBAL_VAR_INIT(RADIO_MAGNETS, "9")
|
||||
continue
|
||||
if(start_point.z != end_point.z || (range > 0 && get_dist(start_point, end_point) > range))
|
||||
continue
|
||||
device.receive_signal(signal, TRANSMISSION_RADIO, frequency)
|
||||
device.receive_signal(signal)
|
||||
|
||||
/datum/radio_frequency/proc/add_listener(obj/device, filter as text|null)
|
||||
if (!filter)
|
||||
@@ -225,8 +171,7 @@ GLOBAL_VAR_INIT(RADIO_MAGNETS, "9")
|
||||
|
||||
var/list/devices_line = devices[filter]
|
||||
if(!devices_line)
|
||||
devices_line = list()
|
||||
devices[filter] = devices_line
|
||||
devices[filter] = devices_line = list()
|
||||
devices_line += device
|
||||
|
||||
|
||||
@@ -240,70 +185,15 @@ GLOBAL_VAR_INIT(RADIO_MAGNETS, "9")
|
||||
devices -= devices_filter
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/client/proc/print_pointers()
|
||||
set name = "Debug Signals"
|
||||
set category = "Debug"
|
||||
|
||||
if(!holder)
|
||||
return
|
||||
|
||||
var/datum/signal/S
|
||||
to_chat(src, "There are [S.pointers.len] pointers:")
|
||||
for(var/p in S.pointers)
|
||||
to_chat(src, p)
|
||||
S = locate(p)
|
||||
if(istype(S))
|
||||
to_chat(src, S.debug_print())
|
||||
|
||||
/obj/proc/receive_signal(datum/signal/signal, receive_method, receive_param)
|
||||
/obj/proc/receive_signal(datum/signal/signal)
|
||||
return
|
||||
|
||||
/datum/signal
|
||||
var/obj/source
|
||||
|
||||
var/transmission_method = 0
|
||||
//0 = wire
|
||||
//1 = radio transmission
|
||||
//2 = subspace transmission
|
||||
|
||||
var/data = list()
|
||||
var/encryption
|
||||
|
||||
var/frequency = 0
|
||||
var/static/list/pointers = list()
|
||||
var/transmission_method
|
||||
var/list/data
|
||||
|
||||
/datum/signal/New()
|
||||
..()
|
||||
pointers += "[REF(src)]"
|
||||
|
||||
/datum/signal/Destroy()
|
||||
pointers -= "[REF(src)]"
|
||||
return ..()
|
||||
|
||||
/datum/signal/proc/copy_from(datum/signal/model)
|
||||
source = model.source
|
||||
transmission_method = model.transmission_method
|
||||
data = model.data
|
||||
encryption = model.encryption
|
||||
frequency = model.frequency
|
||||
|
||||
/datum/signal/proc/debug_print()
|
||||
if (source)
|
||||
. = "signal = {source = '[source]' [COORD(source)]\n"
|
||||
else
|
||||
. = "signal = {source = '[source]' ()\n"
|
||||
for (var/i in data)
|
||||
. += "data\[\"[i]\"\] = \"[data[i]]\"\n"
|
||||
if(islist(data[i]))
|
||||
var/list/L = data[i]
|
||||
for(var/t in L)
|
||||
. += "data\[\"[i]\"\] list has: [t]"
|
||||
|
||||
/datum/signal/proc/sanitize_data()
|
||||
for(var/d in data)
|
||||
var/val = data[d]
|
||||
if(istext(val))
|
||||
data[d] = html_encode(val)
|
||||
/datum/signal/New(data, transmission_method = TRANSMISSION_RADIO)
|
||||
src.data = data || list()
|
||||
src.transmission_method = transmission_method
|
||||
|
||||
@@ -48,4 +48,6 @@
|
||||
newhud.join_hud(current)
|
||||
|
||||
/datum/mind/proc/leave_all_antag_huds()
|
||||
for(var/datum/atom_hud/antag/hud in GLOB.huds)
|
||||
for(var/datum/atom_hud/antag/hud in GLOB.huds)
|
||||
if(hud.hudusers[current])
|
||||
hud.leave_hud(current)
|
||||
@@ -125,7 +125,7 @@
|
||||
return
|
||||
used = TRUE
|
||||
var/mob/dead/observer/theghost = pick(nuke_candidates)
|
||||
spawn_antag(theghost.client, get_turf(src), "syndieborg")
|
||||
spawn_antag(theghost.client, get_turf(src), "syndieborg", user.mind)
|
||||
do_sparks(4, TRUE, src)
|
||||
qdel(src)
|
||||
else
|
||||
@@ -219,7 +219,7 @@
|
||||
return
|
||||
used = 1
|
||||
var/mob/dead/observer/theghost = pick(demon_candidates)
|
||||
spawn_antag(theghost.client, get_turf(src), initial(demon_type.name))
|
||||
spawn_antag(theghost.client, get_turf(src), initial(demon_type.name),user.mind)
|
||||
to_chat(user, shatter_msg)
|
||||
to_chat(user, veil_msg)
|
||||
playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, 1)
|
||||
@@ -237,15 +237,15 @@
|
||||
S.mind.special_role = S.name
|
||||
SSticker.mode.traitors += S.mind
|
||||
var/datum/objective/assassinate/new_objective
|
||||
if(usr)
|
||||
if(user)
|
||||
new_objective = new /datum/objective/assassinate
|
||||
new_objective.owner = S.mind
|
||||
new_objective.target = usr.mind
|
||||
new_objective.explanation_text = "[objective_verb] [usr.real_name], the one who summoned you."
|
||||
new_objective.target = user
|
||||
new_objective.explanation_text = "[objective_verb] [user.name], the one who summoned you."
|
||||
S.mind.objectives += new_objective
|
||||
var/datum/objective/new_objective2 = new /datum/objective
|
||||
new_objective2.owner = S.mind
|
||||
new_objective2.explanation_text = "[objective_verb] everyone[usr ? " else while you're at it":""]."
|
||||
new_objective2.explanation_text = "[objective_verb] everyone[user ? " else while you're at it":""]."
|
||||
S.mind.objectives += new_objective2
|
||||
S.mind.add_antag_datum(/datum/antagonist/auto_custom)
|
||||
to_chat(S, S.playstyle_string)
|
||||
|
||||
@@ -30,4 +30,4 @@
|
||||
name = initial(name)
|
||||
desc = initial(desc)
|
||||
atmosblock = TRUE
|
||||
air_update_turf(1)
|
||||
air_update_turf(1)
|
||||
|
||||
@@ -59,7 +59,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
|
||||
/mob/camera/blob/proc/validate_location()
|
||||
var/turf/T = get_turf(src)
|
||||
var/area/A = get_area(T)
|
||||
if(((A && !A.blob_allowed) || !T || !(T.z in GLOB.station_z_levels)) && LAZYLEN(GLOB.blobstart))
|
||||
if(((A && !A.blob_allowed) || !T || !is_station_level(T.z)) && LAZYLEN(GLOB.blobstart))
|
||||
T = get_turf(pick(GLOB.blobstart))
|
||||
if(!T)
|
||||
CRASH("No blobspawnpoints and blob spawned in nullspace.")
|
||||
@@ -83,7 +83,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
|
||||
max_blob_points = INFINITY
|
||||
blob_points = INFINITY
|
||||
addtimer(CALLBACK(src, .proc/victory), 450)
|
||||
|
||||
|
||||
if(!victory_in_progress && max_count < blobs_legit.len)
|
||||
max_count = blobs_legit.len
|
||||
..()
|
||||
@@ -95,7 +95,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
|
||||
for(var/i in GLOB.mob_living_list)
|
||||
var/mob/living/L = i
|
||||
var/turf/T = get_turf(L)
|
||||
if(!T || !(T.z in GLOB.station_z_levels))
|
||||
if(!T || !is_station_level(T.z))
|
||||
continue
|
||||
|
||||
if(L in GLOB.overminds || (L.pass_flags & PASSBLOB))
|
||||
|
||||
@@ -348,4 +348,4 @@
|
||||
icon_state = "blob"
|
||||
name = "blob"
|
||||
desc = "A thick wall of writhing tendrils."
|
||||
brute_resist = 0.25
|
||||
brute_resist = 0.25
|
||||
|
||||
@@ -10,17 +10,6 @@
|
||||
/obj/effect/proc_holder/changeling/panacea/sting_action(mob/user)
|
||||
to_chat(user, "<span class='notice'>We cleanse impurities from our form.</span>")
|
||||
|
||||
|
||||
var/mob/living/simple_animal/borer/B = user.has_brain_worms()
|
||||
if(B)
|
||||
if(B.controlling)
|
||||
B.detatch()
|
||||
B.leave_victim()
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
C.vomit(0, toxic = TRUE)
|
||||
to_chat(user, "<span class='notice'>A parasite exits our form.</span>")
|
||||
|
||||
var/list/bad_organs = list(
|
||||
user.getorgan(/obj/item/organ/body_egg),
|
||||
user.getorgan(/obj/item/organ/zombie_infection))
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
/obj/effect/proc_holder/changeling/sting/blind/sting_action(mob/user, mob/living/carbon/target)
|
||||
add_logs(user, target, "stung", "blind sting")
|
||||
to_chat(target, "<span class='danger'>Your eyes burn horrifically!</span>")
|
||||
target.become_nearsighted()
|
||||
target.become_nearsighted(EYE_DAMAGE)
|
||||
target.blind_eyes(20)
|
||||
target.blur_eyes(40)
|
||||
return TRUE
|
||||
|
||||
@@ -196,7 +196,7 @@ Credit where due:
|
||||
/datum/game_mode/clockwork_cult/proc/check_clockwork_victory()
|
||||
return main_clockcult.check_clockwork_victory()
|
||||
|
||||
/datum/game_mode/clock_cult/set_round_result()
|
||||
/datum/game_mode/clockwork_cult/set_round_result()
|
||||
..()
|
||||
if(GLOB.clockwork_gateway_activated)
|
||||
SSticker.news_report = CLOCK_SUMMON
|
||||
|
||||
@@ -98,12 +98,12 @@
|
||||
if(severity == 1 && uses)
|
||||
uses = 0
|
||||
visible_message("<span class='warning'>[src] is disrupted!</span>")
|
||||
animate(src, alpha = 0, transform = matrix()*2, time = 10, flags_1 = ANIMATION_END_NOW)
|
||||
animate(src, alpha = 0, transform = matrix()*2, time = 10, flags = ANIMATION_END_NOW)
|
||||
deltimer(timerid)
|
||||
timerid = QDEL_IN(src, 10)
|
||||
linked_gateway.uses = 0
|
||||
linked_gateway.visible_message("<span class='warning'>[linked_gateway] is disrupted!</span>")
|
||||
animate(linked_gateway, alpha = 0, transform = matrix()*2, time = 10, flags_1 = ANIMATION_END_NOW)
|
||||
animate(linked_gateway, alpha = 0, transform = matrix()*2, time = 10, flags = ANIMATION_END_NOW)
|
||||
deltimer(linked_gateway.timerid)
|
||||
linked_gateway.timerid = QDEL_IN(linked_gateway, 10)
|
||||
return TRUE
|
||||
@@ -144,13 +144,13 @@
|
||||
uses = max(0, uses - 1)
|
||||
linked_gateway.uses = max(0, linked_gateway.uses - 1)
|
||||
if(!uses)
|
||||
animate(src, transform = matrix() * 0.1, time = 10, flags_1 = ANIMATION_END_NOW)
|
||||
animate(linked_gateway, transform = matrix() * 0.1, time = 10, flags_1 = ANIMATION_END_NOW)
|
||||
animate(src, transform = matrix() * 0.1, time = 10, flags = ANIMATION_END_NOW)
|
||||
animate(linked_gateway, transform = matrix() * 0.1, time = 10, flags = ANIMATION_END_NOW)
|
||||
density = FALSE
|
||||
linked_gateway.density = FALSE
|
||||
else
|
||||
animate(src, transform = matrix() / 1.5, time = 10, flags_1 = ANIMATION_END_NOW)
|
||||
animate(linked_gateway, transform = matrix() / 1.5, time = 10, flags_1 = ANIMATION_END_NOW)
|
||||
animate(src, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW)
|
||||
animate(linked_gateway, transform = matrix() / 1.5, time = 10, flags = ANIMATION_END_NOW)
|
||||
addtimer(CALLBACK(src, .proc/check_uses), 10)
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
var/doortype = /obj/machinery/door/airlock/clockwork
|
||||
if(glass)
|
||||
doortype = /obj/machinery/door/airlock/clockwork/brass
|
||||
return list("operation_time" = 60, "new_obj_type" = doortype, "power_cost" = POWER_WALL_TOTAL, "spawn_dir" = dir)
|
||||
return list("operation_time" = 60, "new_obj_type" = doortype, "power_cost" = POWER_WALL_TOTAL, "spawn_dir" = dir, "transfer_name" = TRUE)
|
||||
|
||||
/obj/machinery/door/airlock/clockwork/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
|
||||
return FALSE
|
||||
@@ -188,7 +188,7 @@
|
||||
|
||||
//Windoor conversion
|
||||
/obj/machinery/door/window/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
|
||||
return list("operation_time" = 30, "new_obj_type" = /obj/machinery/door/window/clockwork, "power_cost" = POWER_STANDARD, "spawn_dir" = dir, "dir_in_new" = TRUE)
|
||||
return list("operation_time" = 30, "new_obj_type" = /obj/machinery/door/window/clockwork, "power_cost" = POWER_STANDARD, "spawn_dir" = dir, "dir_in_new" = TRUE, "transfer_name" = TRUE)
|
||||
|
||||
/obj/machinery/door/window/clockwork/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent)
|
||||
return FALSE
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
construct_type = /mob/living/simple_animal/drone/cogscarab
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/infinite_resources = TRUE
|
||||
var/static/obj/item/seasonal_hat //Share it with all other scarabs, since we're from the same cult!
|
||||
|
||||
/obj/item/clockwork/construct_chassis/cogscarab/Initialize()
|
||||
. = ..()
|
||||
@@ -96,6 +97,12 @@
|
||||
if(infinite_resources)
|
||||
//During rounds where they can't interact with the station, let them experiment with builds
|
||||
construct_type = /mob/living/simple_animal/drone/cogscarab/ratvar
|
||||
if(!seasonal_hat)
|
||||
var/obj/item/drone_shell/D = locate() in GLOB.poi_list
|
||||
if(D && D.possible_seasonal_hats.len)
|
||||
seasonal_hat = pick(D.possible_seasonal_hats)
|
||||
else
|
||||
seasonal_hat = "none"
|
||||
|
||||
/obj/item/clockwork/construct_chassis/cogscarab/post_spawn(mob/living/construct)
|
||||
if(infinite_resources) //Allow them to build stuff and recite scripture
|
||||
@@ -104,3 +111,6 @@
|
||||
F.uses_power = FALSE
|
||||
for(var/obj/item/clockwork/slab/S in cached_stuff)
|
||||
S.no_cost = TRUE
|
||||
if(seasonal_hat && seasonal_hat != "none")
|
||||
var/obj/item/hat = new seasonal_hat(construct)
|
||||
construct.equip_to_slot_or_del(hat, slot_head)
|
||||
|
||||
@@ -144,10 +144,14 @@
|
||||
else
|
||||
if(new_thing_type)
|
||||
if(fabrication_values["dir_in_new"])
|
||||
new new_thing_type(get_turf(target), fabrication_values["spawn_dir"]) //please verify that your new object actually wants to get a dir in New()
|
||||
var/atom/A = new new_thing_type(get_turf(target), fabrication_values["spawn_dir"]) //please verify that your new object actually wants to get a dir in New()
|
||||
if(fabrication_values["transfer_name"])
|
||||
A.name = target.name
|
||||
else
|
||||
var/atom/A = new new_thing_type(get_turf(target))
|
||||
A.setDir(fabrication_values["spawn_dir"])
|
||||
if(fabrication_values["transfer_name"])
|
||||
A.name = target.name
|
||||
if(!fabrication_values["no_target_deletion"]) //for some cases where fabrication_vals() modifies the object but doesn't want it deleted
|
||||
qdel(target)
|
||||
adjust_clockwork_power(-fabrication_values["power_cost"])
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
to_chat(victim, "<span class='heavy_brass'>\"It looks like Nar-Sie's dogs really don't value their eyes.\"</span>")
|
||||
to_chat(victim, "<span class='userdanger'>Your eyes explode with horrific pain!</span>")
|
||||
victim.emote("scream")
|
||||
victim.become_blind()
|
||||
victim.become_blind(EYE_DAMAGE)
|
||||
victim.adjust_blurriness(30)
|
||||
victim.adjust_blindness(30)
|
||||
return TRUE
|
||||
@@ -142,8 +142,8 @@
|
||||
apply_eye_damage(H)
|
||||
else
|
||||
if(GLOB.ratvar_awakens)
|
||||
H.cure_nearsighted()
|
||||
H.cure_blind()
|
||||
H.cure_nearsighted(list(EYE_DAMAGE))
|
||||
H.cure_blind(list(EYE_DAMAGE))
|
||||
H.adjust_eye_damage(-eye_damage_done)
|
||||
eye_damage_done = 0
|
||||
else if(prob(50) && eye_damage_done)
|
||||
@@ -166,5 +166,7 @@
|
||||
if(eye_damage_done >= blind_breakpoint)
|
||||
if(!H.has_disability(DISABILITY_BLIND))
|
||||
to_chat(H, "<span class='nzcrentr_large'>A piercing white light floods your vision. Suddenly, all goes dark!</span>")
|
||||
H.become_blind(EYE_DAMAGE)
|
||||
|
||||
if(prob(min(20, 5 + eye_damage_done)))
|
||||
to_chat(H, "<span class='nzcrentr_small'><i>Your eyes continue to burn.</i></span>")
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
//Helper proc to get an Eminence mob if it exists
|
||||
/proc/get_eminence()
|
||||
return locate(/mob/camera/eminence) in servants_and_ghosts()
|
||||
|
||||
//The Eminence is a unique mob that functions like the leader of the cult. It's incorporeal but can interact with the world in several ways.
|
||||
/mob/camera/eminence
|
||||
name = "\the Emininence"
|
||||
@@ -12,6 +16,7 @@
|
||||
layer = FLY_LAYER
|
||||
faction = list("ratvar")
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
var/turf/last_failed_turf
|
||||
var/static/superheated_walls = 0
|
||||
|
||||
/mob/camera/eminence/CanPass(atom/movable/mover, turf/target)
|
||||
@@ -20,25 +25,38 @@
|
||||
/mob/camera/eminence/Move(NewLoc, direct)
|
||||
var/OldLoc = loc
|
||||
if(NewLoc && !istype(NewLoc, /turf/open/indestructible/reebe_void))
|
||||
forceMove(get_turf(NewLoc))
|
||||
var/turf/T = get_turf(NewLoc)
|
||||
if(T.flags_1 & NOJAUNT_1)
|
||||
if(last_failed_turf != T)
|
||||
T.visible_message("<span class='warning'>[T] suddenly emits a ringing sound!</span>", ignore_mob = src)
|
||||
playsound(T, 'sound/machines/clockcult/ark_damage.ogg', 75, FALSE)
|
||||
last_failed_turf = T
|
||||
to_chat(src, "<span class='warning'>This turf is consecrated and can't be crossed!</span>")
|
||||
return
|
||||
if(!GLOB.ratvar_awakens && istype(get_area(T), /area/chapel))
|
||||
to_chat(src, "<span class='warning'>The Chapel is hallowed ground under a heretical deity, and can't be accessed!</span>")
|
||||
return
|
||||
forceMove(T)
|
||||
Moved(OldLoc, direct)
|
||||
if(GLOB.ratvar_awakens)
|
||||
for(var/turf/T in range(5, src))
|
||||
if(prob(166 - (get_dist(src, T) * 33)))
|
||||
T.ratvar_act() //Causes moving to leave a swath of proselytized area behind the Eminence
|
||||
|
||||
/mob/camera/eminence/Process_Spacemove(movement_dir = 0)
|
||||
return TRUE
|
||||
|
||||
/mob/camera/eminence/Login()
|
||||
..()
|
||||
add_servant_of_ratvar(src, TRUE)
|
||||
var/datum/antagonist/clockcult/C = mind.has_antag_datum(/datum/antagonist/clockcult,TRUE)
|
||||
if(!C)
|
||||
add_servant_of_ratvar(src, TRUE)
|
||||
C = mind.has_antag_datum(/datum/antagonist/clockcult,TRUE)
|
||||
if(C && C.clock_team)
|
||||
if(C.clock_team.eminence)
|
||||
remove_servant_of_ratvar(src,TRUE)
|
||||
qdel(src)
|
||||
else
|
||||
C.clock_team.eminence = src
|
||||
if(C && C.clock_team)
|
||||
if(C.clock_team.eminence && C.clock_team.eminence != src)
|
||||
remove_servant_of_ratvar(src,TRUE)
|
||||
qdel(src)
|
||||
return
|
||||
else
|
||||
C.clock_team.eminence = src
|
||||
to_chat(src, "<span class='bold large_brass'>You have been selected as the Eminence!</span>")
|
||||
to_chat(src, "<span class='brass'>As the Eminence, you lead the servants. Anything you say will be heard by the entire cult.</span>")
|
||||
to_chat(src, "<span class='brass'>Though you can move through walls, you're also incorporeal, and largely can't interact with the world except for a few ways.</span>")
|
||||
@@ -53,6 +71,12 @@
|
||||
E.Grant(src)
|
||||
|
||||
/mob/camera/eminence/say(message)
|
||||
if(client)
|
||||
if(client.prefs.muted & MUTE_IC)
|
||||
to_chat(src, "You cannot send IC messages (muted).")
|
||||
return
|
||||
if(client.handle_spam_prevention(message,MUTE_IC))
|
||||
return
|
||||
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
|
||||
if(!message)
|
||||
return
|
||||
@@ -60,7 +84,13 @@
|
||||
if(GLOB.ratvar_awakens)
|
||||
visible_message("<span class='brass'><b>You feel light slam into your mind and form words:</b> \"[capitalize(message)]\"</span>")
|
||||
playsound(src, 'sound/machines/clockcult/ark_scream.ogg', 50, FALSE)
|
||||
hierophant_message("<span class='large_brass'><b>The Eminence:</b> \"[message]\"</span>")
|
||||
message = "<span class='big brass'><b>The [GLOB.ratvar_awakens ? "Radiance" : "Eminence"]:</b> \"[message]\"</span>"
|
||||
for(var/mob/M in servants_and_ghosts())
|
||||
if(isobserver(M))
|
||||
var/link = FOLLOW_LINK(M, src)
|
||||
to_chat(M, "[link] [message]")
|
||||
else
|
||||
to_chat(M, message)
|
||||
|
||||
/mob/camera/eminence/Hear(message, atom/movable/speaker, datum/language/message_language, raw_message, radio_freq, list/spans, message_mode)
|
||||
if(is_reebe(z) || is_servant_of_ratvar(speaker) || GLOB.ratvar_approaches || GLOB.ratvar_awakens) //Away from Reebe, the Eminence can't hear anything
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
loot = list(/obj/item/clockwork/component/geis_capacitor/fallen_armor)
|
||||
light_range = 2
|
||||
light_power = 1.1
|
||||
playstyle_string = "<b><span class='neovgre'>You are a clockwork marauder,</span> a well-rounded frontline construct of Ratvar. Although you have no \
|
||||
playstyle_string = "<span class='big bold'><span class='neovgre'>You are a clockwork marauder,</span></span><b> a well-rounded frontline construct of Ratvar. Although you have no \
|
||||
unique abilities, you're a fearsome fighter in one-on-one combat, and your shield protects from projectiles!<br><br>Obey the Servants and do as they \
|
||||
tell you. Your primary goal is to defend the Ark from destruction; they are your allies in this, and should be protected from harm.</b>"
|
||||
empower_string = "<span class='neovgre'>The Anima Bulwark's power flows through you! Your weapon will strike harder, your armor is sturdier, and your shield is more durable.</span>"
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/mass_recall()
|
||||
for(var/V in SSticker.mode.servants_of_ratvar)
|
||||
var/datum/mind/M = V
|
||||
if(!M.current.stat)
|
||||
if(M.current.stat != DEAD)
|
||||
M.current.forceMove(get_turf(src))
|
||||
M.current.overlay_fullscreen("flash", /obj/screen/fullscreen/flash)
|
||||
M.current.clear_fullscreen("flash", 5)
|
||||
|
||||
@@ -38,7 +38,6 @@
|
||||
/obj/structure/destructible/clockwork/eminence_spire/attack_ghost(mob/user)
|
||||
if(!IsAdminGhost(user))
|
||||
return
|
||||
|
||||
var/datum/antagonist/clockcult/random_cultist = locate() in GLOB.antagonists //if theres no cultists new team without eminence will be created anyway.
|
||||
if(random_cultist && random_cultist.clock_team && random_cultist.clock_team.eminence)
|
||||
to_chat(user, "<span class='warning'>There's already an Eminence - too late!</span>")
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
|
||||
/obj/item/twohanded/required/cult_bastard/afterattack(atom/target, mob/user, proximity, click_parameters)
|
||||
. = ..()
|
||||
if(dash_toggled && jaunt.IsAvailable())
|
||||
if(dash_toggled)
|
||||
jaunt.Teleport(user, target)
|
||||
return
|
||||
if(!proximity)
|
||||
@@ -577,21 +577,21 @@
|
||||
if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated())
|
||||
return
|
||||
if(!cultist_to_receive)
|
||||
to_chat(user, "<span class='cultitalic'>You require a destination!</span>")
|
||||
to_chat(user, "<span class='cult italic'>You require a destination!</span>")
|
||||
log_game("Void torch failed - no target")
|
||||
return
|
||||
if(cultist_to_receive.stat == DEAD)
|
||||
to_chat(user, "<span class='cultitalic'>[cultist_to_receive] has died!</span>")
|
||||
to_chat(user, "<span class='cult italic'>[cultist_to_receive] has died!</span>")
|
||||
log_game("Void torch failed - target died")
|
||||
return
|
||||
if(!iscultist(cultist_to_receive))
|
||||
to_chat(user, "<span class='cultitalic'>[cultist_to_receive] is not a follower of the Geometer!</span>")
|
||||
to_chat(user, "<span class='cult italic'>[cultist_to_receive] is not a follower of the Geometer!</span>")
|
||||
log_game("Void torch failed - target was deconverted")
|
||||
return
|
||||
if(A in user.GetAllContents())
|
||||
to_chat(user, "<span class='cultitalic'>[A] must be on a surface in order to teleport it!</span>")
|
||||
to_chat(user, "<span class='cult italic'>[A] must be on a surface in order to teleport it!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='cultitalic'>You ignite [A] with \the [src], turning it to ash, but through the torch's flames you see that [A] has reached [cultist_to_receive]!")
|
||||
to_chat(user, "<span class='cult italic'>You ignite [A] with \the [src], turning it to ash, but through the torch's flames you see that [A] has reached [cultist_to_receive]!")
|
||||
cultist_to_receive.put_in_hands(A)
|
||||
charges--
|
||||
to_chat(user, "\The [src] now has [charges] charge\s.")
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>\The [src] is [anchored ? "":"not "]secured to the floor.</span>")
|
||||
if((iscultist(user) || isobserver(user)) && cooldowntime > world.time)
|
||||
to_chat(user, "<span class='cultitalic'>The magic in [src] is too weak, [p_they()] will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
|
||||
to_chat(user, "<span class='cult italic'>The magic in [src] is too weak, [p_they()] will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
|
||||
|
||||
/obj/structure/destructible/cult/examine_status(mob/user)
|
||||
if(iscultist(user) || isobserver(user))
|
||||
@@ -62,10 +62,10 @@
|
||||
to_chat(user, "<span class='warning'>You're pretty sure you know exactly what this is used for and you can't seem to touch it.</span>")
|
||||
return
|
||||
if(!anchored)
|
||||
to_chat(user, "<span class='cultitalic'>You need to anchor [src] to the floor with a tome first.</span>")
|
||||
to_chat(user, "<span class='cult italic'>You need to anchor [src] to the floor with a tome first.</span>")
|
||||
return
|
||||
if(cooldowntime > world.time)
|
||||
to_chat(user, "<span class='cultitalic'>The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
|
||||
to_chat(user, "<span class='cult italic'>The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
|
||||
return
|
||||
var/choice = alert(user,"You study the schematics etched into the forge...",,"Eldritch Whetstone","Zealot's Blindfold","Flask of Unholy Water")
|
||||
var/pickedtype
|
||||
@@ -79,7 +79,7 @@
|
||||
if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
|
||||
cooldowntime = world.time + 2400
|
||||
var/obj/item/N = new pickedtype(get_turf(src))
|
||||
to_chat(user, "<span class='cultitalic'>You kneel before the altar and your faith is rewarded with an [N]!</span>")
|
||||
to_chat(user, "<span class='cult italic'>You kneel before the altar and your faith is rewarded with an [N]!</span>")
|
||||
|
||||
|
||||
/obj/structure/destructible/cult/forge
|
||||
@@ -95,15 +95,14 @@
|
||||
to_chat(user, "<span class='warning'>The heat radiating from [src] pushes you back.</span>")
|
||||
return
|
||||
if(!anchored)
|
||||
to_chat(user, "<span class='cultitalic'>You need to anchor [src] to the floor with a tome first.</span>")
|
||||
to_chat(user, "<span class='cult italic'>You need to anchor [src] to the floor with a tome first.</span>")
|
||||
return
|
||||
if(cooldowntime > world.time)
|
||||
to_chat(user, "<span class='cultitalic'>The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
|
||||
to_chat(user, "<span class='cult italic'>The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
|
||||
return
|
||||
var/option = "Shielded Robe"
|
||||
option = input(user, "You study the schematics etched into the forge...", "[src]", option) as null|anything in list("Shielded Robe", "Flagellant's Robe", "Bastard Sword", "Nar-Sien Hardsuit")
|
||||
var/choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Bastard Sword")
|
||||
var/pickedtype
|
||||
switch(option)
|
||||
switch(choice)
|
||||
if("Shielded Robe")
|
||||
pickedtype = /obj/item/clothing/suit/hooded/cultrobes/cult_shield
|
||||
if("Flagellant's Robe")
|
||||
@@ -113,16 +112,13 @@
|
||||
pickedtype = /obj/item/twohanded/required/cult_bastard
|
||||
else
|
||||
cooldowntime = 12000 - (world.time - SSticker.round_start_time)
|
||||
to_chat(user, "<span class='cultitalic'>The forge fires are not yet hot enough for this weapon, give it another [DisplayTimeText(cooldowntime)].</span>")
|
||||
to_chat(user, "<span class='cult italic'>The forge fires are not yet hot enough for this weapon, give it another [DisplayTimeText(cooldowntime)].</span>")
|
||||
cooldowntime = 0
|
||||
return
|
||||
if("Nar-Sien Hardsuit")
|
||||
pickedtype = /obj/item/clothing/suit/space/hardsuit/cult
|
||||
|
||||
if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time)
|
||||
cooldowntime = world.time + 2400
|
||||
var/obj/item/N = new pickedtype(get_turf(src))
|
||||
to_chat(user, "<span class='cultitalic'>You work the forge as dark knowledge guides your hands, creating [N]!</span>")
|
||||
to_chat(user, "<span class='cult italic'>You work the forge as dark knowledge guides your hands, creating [N]!</span>")
|
||||
|
||||
|
||||
|
||||
@@ -212,10 +208,10 @@
|
||||
to_chat(user, "<span class='warning'>All of these books seem to be gibberish.</span>")
|
||||
return
|
||||
if(!anchored)
|
||||
to_chat(user, "<span class='cultitalic'>You need to anchor [src] to the floor with a tome first.</span>")
|
||||
to_chat(user, "<span class='cult italic'>You need to anchor [src] to the floor with a tome first.</span>")
|
||||
return
|
||||
if(cooldowntime > world.time)
|
||||
to_chat(user, "<span class='cultitalic'>The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
|
||||
to_chat(user, "<span class='cult italic'>The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].</span>")
|
||||
return
|
||||
var/choice = alert(user,"You flip through the black pages of the archives...",,"Supply Talisman","Shuttle Curse","Veil Walker Set")
|
||||
var/list/pickedtype = list()
|
||||
@@ -231,7 +227,7 @@
|
||||
cooldowntime = world.time + 2400
|
||||
for(var/N in pickedtype)
|
||||
var/obj/item/D = new N(get_turf(src))
|
||||
to_chat(user, "<span class='cultitalic'>You summon [D] from the archives!</span>")
|
||||
to_chat(user, "<span class='cult italic'>You summon [D] from the archives!</span>")
|
||||
|
||||
/obj/effect/gateway
|
||||
name = "gateway"
|
||||
|
||||
@@ -265,6 +265,7 @@ This file contains the arcane tome files.
|
||||
if(locate(/obj/effect/rune) in T)
|
||||
to_chat(user, "<span class='cult'>There is already a rune here.</span>")
|
||||
return FALSE
|
||||
|
||||
if(!is_station_level(T.z) && !is_mining_level(T.z))
|
||||
to_chat(user, "<span class='warning'>The veil is not weak enough here.</span>")
|
||||
return FALSE
|
||||
|
||||
@@ -140,7 +140,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
L.say(invocation, language = /datum/language/common, ignore_spam = TRUE)
|
||||
if(invoke_damage)
|
||||
L.apply_damage(invoke_damage, BRUTE)
|
||||
to_chat(L, "<span class='cultitalic'>[src] saps your strength!</span>")
|
||||
to_chat(L, "<span class='cult italic'>[src] saps your strength!</span>")
|
||||
do_invoke_glow()
|
||||
|
||||
/obj/effect/rune/proc/do_invoke_glow()
|
||||
@@ -201,12 +201,12 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
var/obj/item/paper/talisman/talisman_type
|
||||
var/list/possible_talismans = list()
|
||||
if(!papers_on_rune.len)
|
||||
to_chat(user, "<span class='cultitalic'>There must be a blank paper on top of [src]!</span>")
|
||||
to_chat(user, "<span class='cult italic'>There must be a blank paper on top of [src]!</span>")
|
||||
fail_invoke()
|
||||
log_game("Talisman Creation rune failed - no blank papers on rune")
|
||||
return
|
||||
if(rune_in_use)
|
||||
to_chat(user, "<span class='cultitalic'>[src] can only support one ritual at a time!</span>")
|
||||
to_chat(user, "<span class='cult italic'>[src] can only support one ritual at a time!</span>")
|
||||
fail_invoke()
|
||||
log_game("Talisman Creation rune failed - already in use")
|
||||
return
|
||||
@@ -222,7 +222,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
return
|
||||
papers_on_rune = checkpapers()
|
||||
if(!papers_on_rune.len)
|
||||
to_chat(user, "<span class='cultitalic'>There must be a blank paper on top of [src]!</span>")
|
||||
to_chat(user, "<span class='cult italic'>There must be a blank paper on top of [src]!</span>")
|
||||
fail_invoke()
|
||||
log_game("Talisman Creation rune failed - no blank papers on rune")
|
||||
return
|
||||
@@ -394,9 +394,9 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
SSticker.mode.add_cultist(convertee.mind, 1)
|
||||
new /obj/item/tome(get_turf(src))
|
||||
convertee.mind.special_role = "Cultist"
|
||||
to_chat(convertee, "<span class='cultitalic'><b>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \
|
||||
to_chat(convertee, "<span class='cult italic'><b>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \
|
||||
and something evil takes root.</b></span>")
|
||||
to_chat(convertee, "<span class='cultitalic'><b>Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.\
|
||||
to_chat(convertee, "<span class='cult italic'><b>Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.\
|
||||
</b></span>")
|
||||
return 1
|
||||
|
||||
@@ -412,7 +412,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
var/big_sac = FALSE
|
||||
if((((ishuman(sacrificial) || iscyborg(sacrificial)) && sacrificial.stat != DEAD) || C.cult_team.is_sacrifice_target(sacrificial.mind)) && invokers.len < 3)
|
||||
for(var/M in invokers)
|
||||
to_chat(M, "<span class='cultitalic'>[sacrificial] is too greatly linked to the world! You need three acolytes!</span>")
|
||||
to_chat(M, "<span class='cult italic'>[sacrificial] is too greatly linked to the world! You need three acolytes!</span>")
|
||||
log_game("Offer rune failed - not enough acolytes and target is living or sac target")
|
||||
return FALSE
|
||||
if(sacrificial.mind)
|
||||
@@ -515,10 +515,10 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
message_admins("[key_name_admin(user)] erased a Narsie rune with a null rod")
|
||||
..()
|
||||
|
||||
//Rite of Resurrection: Requires the corpse of a cultist and that there have been less revives than the number of people GLOB.sacrificed
|
||||
//Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every sacrifice your cult has carried out.
|
||||
/obj/effect/rune/raise_dead
|
||||
cultist_name = "Resurrect Cultist"
|
||||
cultist_desc = "requires the corpse of a cultist placed upon the rune. Provided there have been sufficient sacrifices, they will be revived."
|
||||
cultist_name = "Revive Cultist"
|
||||
cultist_desc = "requires a dead, mindless, or inactive cultist placed upon the rune. Provided there have been sufficient sacrifices, they will be given a new life."
|
||||
invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below
|
||||
icon_state = "1"
|
||||
color = RUNE_COLOR_MEDIUMRED
|
||||
@@ -539,16 +539,11 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
return
|
||||
rune_in_use = TRUE
|
||||
for(var/mob/living/M in T.contents)
|
||||
if(iscultist(M) && M.stat == DEAD)
|
||||
if(iscultist(M) && (M.stat == DEAD || !M.client || M.client.is_afk()))
|
||||
potential_revive_mobs |= M
|
||||
if(!potential_revive_mobs.len)
|
||||
to_chat(user, "<span class='cultitalic'>There are no dead cultists on the rune!</span>")
|
||||
log_game("Raise Dead rune failed - no corpses to revive")
|
||||
fail_invoke()
|
||||
rune_in_use = FALSE
|
||||
return
|
||||
if(LAZYLEN(GLOB.sacrificed) <= revives_used)
|
||||
to_chat(user, "<span class='warning'>You have sacrificed too few people to revive a cultist!</span>")
|
||||
to_chat(user, "<span class='cult italic'>There are no dead cultists on the rune!</span>")
|
||||
log_game("Raise Dead rune failed - no cultists to revive")
|
||||
fail_invoke()
|
||||
rune_in_use = FALSE
|
||||
return
|
||||
@@ -564,9 +559,25 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
else
|
||||
invocation = initial(invocation)
|
||||
..()
|
||||
revives_used++
|
||||
mob_to_revive.revive(1, 1) //This does remove disabilities and such, but the rune might actually see some use because of it!
|
||||
mob_to_revive.grab_ghost()
|
||||
if(mob_to_revive.stat == DEAD)
|
||||
if(LAZYLEN(GLOB.sacrificed) <= revives_used)
|
||||
to_chat(user, "<span class='warning'>Your cult must carry out another sacrifice before it can revive a cultist!</span>")
|
||||
fail_invoke()
|
||||
rune_in_use = FALSE
|
||||
return
|
||||
revives_used++
|
||||
mob_to_revive.revive(1, 1) //This does remove disabilities and such, but the rune might actually see some use because of it!
|
||||
mob_to_revive.grab_ghost()
|
||||
else if(!mob_to_revive.client || mob_to_revive.client.is_afk())
|
||||
set waitfor = FALSE
|
||||
var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [mob_to_revive.name], an inactive blood cultist?", "[name]", null, "Blood Cultist", 50, mob_to_revive)
|
||||
var/mob/dead/observer/theghost = null
|
||||
if(candidates.len)
|
||||
theghost = pick(candidates)
|
||||
to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.")
|
||||
message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.")
|
||||
mob_to_revive.ghostize(0)
|
||||
mob_to_revive.key = theghost.key
|
||||
to_chat(mob_to_revive, "<span class='cultlarge'>\"PASNAR SAVRAE YAM'TOTH. Arise.\"</span>")
|
||||
mob_to_revive.visible_message("<span class='warning'>[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes.</span>", \
|
||||
"<span class='cultlarge'>You awaken suddenly from the void. You're alive!</span>")
|
||||
@@ -582,13 +593,13 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
fail_invoke()
|
||||
return FALSE
|
||||
if(!(target_mob in T.contents))
|
||||
to_chat(user, "<span class='cultitalic'>The cultist to revive has been moved!</span>")
|
||||
to_chat(user, "<span class='cult italic'>The cultist to revive has been moved!</span>")
|
||||
fail_invoke()
|
||||
log_game("Raise Dead rune failed - revival target moved")
|
||||
return FALSE
|
||||
var/mob/dead/observer/ghost = target_mob.get_ghost(TRUE)
|
||||
if(!ghost && (!target_mob.mind || !target_mob.mind.active))
|
||||
to_chat(user, "<span class='cultitalic'>The corpse to revive has no spirit!</span>")
|
||||
to_chat(user, "<span class='cult italic'>The corpse to revive has no spirit!</span>")
|
||||
fail_invoke()
|
||||
log_game("Raise Dead rune failed - revival target has no ghost")
|
||||
return FALSE
|
||||
@@ -655,16 +666,16 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
/obj/effect/rune/spirit/examine(mob/user)
|
||||
..()
|
||||
if(affecting)
|
||||
to_chat(user, "<span class='cultitalic'>A translucent field encases [affecting] above the rune!</span>")
|
||||
to_chat(user, "<span class='cult italic'>A translucent field encases [affecting] above the rune!</span>")
|
||||
|
||||
/obj/effect/rune/spirit/can_invoke(mob/living/user)
|
||||
if(rune_in_use)
|
||||
to_chat(user, "<span class='cultitalic'>[src] cannot support more than one body!</span>")
|
||||
to_chat(user, "<span class='cult italic'>[src] cannot support more than one body!</span>")
|
||||
log_game("Spirit Sight rune failed - more than one user")
|
||||
return list()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!(user in T))
|
||||
to_chat(user, "<span class='cultitalic'>You must be standing on top of [src]!</span>")
|
||||
to_chat(user, "<span class='cult italic'>You must be standing on top of [src]!</span>")
|
||||
log_game("Spirit Sight rune failed - user not standing on rune")
|
||||
return list()
|
||||
return ..()
|
||||
@@ -694,11 +705,11 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
if(affecting.stat == UNCONSCIOUS)
|
||||
if(prob(1))
|
||||
var/mob/dead/observer/G = affecting.get_ghost()
|
||||
to_chat(G, "<span class='cultitalic'>You feel the link between you and your body weakening... you must hurry!</span>")
|
||||
to_chat(G, "<span class='cult italic'>You feel the link between you and your body weakening... you must hurry!</span>")
|
||||
else if(affecting.stat == DEAD)
|
||||
affecting.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED)
|
||||
var/mob/dead/observer/G = affecting.get_ghost()
|
||||
to_chat(G, "<span class='cultitalic'><b>You suddenly feel your physical form pass on. [src]'s exertion has killed you!</b></span>")
|
||||
to_chat(G, "<span class='cult italic'><b>You suddenly feel your physical form pass on. [src]'s exertion has killed you!</b></span>")
|
||||
break
|
||||
sleep(1)
|
||||
affecting = null
|
||||
@@ -722,7 +733,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
/obj/effect/rune/wall/examine(mob/user)
|
||||
..()
|
||||
if(density)
|
||||
to_chat(user, "<span class='cultitalic'>There is a barely perceptible shimmering of the air above [src].</span>")
|
||||
to_chat(user, "<span class='cult italic'>There is a barely perceptible shimmering of the air above [src].</span>")
|
||||
|
||||
/obj/effect/rune/wall/Destroy()
|
||||
density = FALSE
|
||||
@@ -744,7 +755,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
spread_density()
|
||||
var/carbon_user = iscarbon(user)
|
||||
user.visible_message("<span class='warning'>[user] [carbon_user ? "places [user.p_their()] hands on":"stares intently at"] [src], and [density ? "the air above it begins to shimmer" : "the shimmer above it fades"].</span>", \
|
||||
"<span class='cultitalic'>You channel [carbon_user ? "your life ":""]energy into [src], [density ? "temporarily preventing" : "allowing"] passage above it.</span>")
|
||||
"<span class='cult italic'>You channel [carbon_user ? "your life ":""]energy into [src], [density ? "temporarily preventing" : "allowing"] passage above it.</span>")
|
||||
if(carbon_user)
|
||||
var/mob/living/carbon/C = user
|
||||
C.apply_damage(2, BRUTE, pick("l_arm", "r_arm"))
|
||||
@@ -806,17 +817,17 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated())
|
||||
return
|
||||
if(!cultist_to_summon)
|
||||
to_chat(user, "<span class='cultitalic'>You require a summoning target!</span>")
|
||||
to_chat(user, "<span class='cult italic'>You require a summoning target!</span>")
|
||||
fail_invoke()
|
||||
log_game("Summon Cultist rune failed - no target")
|
||||
return
|
||||
if(cultist_to_summon.stat == DEAD)
|
||||
to_chat(user, "<span class='cultitalic'>[cultist_to_summon] has died!</span>")
|
||||
to_chat(user, "<span class='cult italic'>[cultist_to_summon] has died!</span>")
|
||||
fail_invoke()
|
||||
log_game("Summon Cultist rune failed - target died")
|
||||
return
|
||||
if(!iscultist(cultist_to_summon))
|
||||
to_chat(user, "<span class='cultitalic'>[cultist_to_summon] is not a follower of the Geometer!</span>")
|
||||
to_chat(user, "<span class='cult italic'>[cultist_to_summon] is not a follower of the Geometer!</span>")
|
||||
fail_invoke()
|
||||
log_game("Summon Cultist rune failed - target was deconverted")
|
||||
return
|
||||
@@ -826,7 +837,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
log_game("Summon Cultist rune failed - target in away mission")
|
||||
return
|
||||
cultist_to_summon.visible_message("<span class='warning'>[cultist_to_summon] suddenly disappears in a flash of red light!</span>", \
|
||||
"<span class='cultitalic'><b>Overwhelming vertigo consumes you as you are hurled through the air!</b></span>")
|
||||
"<span class='cult italic'><b>Overwhelming vertigo consumes you as you are hurled through the air!</b></span>")
|
||||
..()
|
||||
visible_message("<span class='warning'>A foggy shape materializes atop [src] and solidifes into [cultist_to_summon]!</span>")
|
||||
cultist_to_summon.forceMove(get_turf(src))
|
||||
@@ -914,17 +925,17 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
|
||||
/obj/effect/rune/manifest/can_invoke(mob/living/user)
|
||||
if(!(user in get_turf(src)))
|
||||
to_chat(user, "<span class='cultitalic'>You must be standing on [src]!</span>")
|
||||
to_chat(user, "<span class='cult italic'>You must be standing on [src]!</span>")
|
||||
fail_invoke()
|
||||
log_game("Manifest rune failed - user not standing on rune")
|
||||
return list()
|
||||
if(user.has_status_effect(STATUS_EFFECT_SUMMONEDGHOST))
|
||||
to_chat(user, "<span class='cultitalic'>Ghosts can't summon more ghosts!</span>")
|
||||
to_chat(user, "<span class='cult italic'>Ghosts can't summon more ghosts!</span>")
|
||||
fail_invoke()
|
||||
log_game("Manifest rune failed - user is a ghost")
|
||||
return list()
|
||||
if(ghosts >= ghost_limit)
|
||||
to_chat(user, "<span class='cultitalic'>You are sustaining too many ghosts to summon more!</span>")
|
||||
to_chat(user, "<span class='cult italic'>You are sustaining too many ghosts to summon more!</span>")
|
||||
fail_invoke()
|
||||
log_game("Manifest rune failed - too many summoned ghosts")
|
||||
return list()
|
||||
@@ -933,7 +944,7 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
if(O.client && !jobban_isbanned(O, ROLE_CULTIST))
|
||||
ghosts_on_rune += O
|
||||
if(!ghosts_on_rune.len)
|
||||
to_chat(user, "<span class='cultitalic'>There are no spirits near [src]!</span>")
|
||||
to_chat(user, "<span class='cult italic'>There are no spirits near [src]!</span>")
|
||||
fail_invoke()
|
||||
log_game("Manifest rune failed - no nearby ghosts")
|
||||
return list()
|
||||
@@ -955,13 +966,13 @@ structure_check() searches for nearby cultist structures required for the invoca
|
||||
ghosts++
|
||||
playsound(src, 'sound/magic/exit_blood.ogg', 50, 1)
|
||||
visible_message("<span class='warning'>A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.</span>")
|
||||
to_chat(user, "<span class='cultitalic'>Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...</span>")
|
||||
to_chat(user, "<span class='cult italic'>Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...</span>")
|
||||
var/turf/T = get_turf(src)
|
||||
var/obj/structure/emergency_shield/invoker/N = new(T)
|
||||
|
||||
new_human.key = ghost_to_spawn.key
|
||||
SSticker.mode.add_cultist(new_human.mind, 0)
|
||||
to_chat(new_human, "<span class='cultitalic'><b>You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs.</b></span>")
|
||||
to_chat(new_human, "<span class='cult italic'><b>You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs.</b></span>")
|
||||
|
||||
while(!QDELETED(src) && !QDELETED(user) && !QDELETED(new_human) && (user in T))
|
||||
if(user.stat || new_human.InCritical())
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
invocation = "Ra'sha yoka!"
|
||||
|
||||
/obj/item/paper/talisman/malformed/invoke(mob/living/user, successfuluse = 1)
|
||||
to_chat(user, "<span class='cultitalic'>You feel a pain in your head. The Geometer is displeased.</span>")
|
||||
to_chat(user, "<span class='cult italic'>You feel a pain in your head. The Geometer is displeased.</span>")
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
C.apply_damage(10, BRUTE, "head")
|
||||
@@ -79,7 +79,7 @@
|
||||
to_chat(user, "<span class='warning'>The target rune is blocked. Attempting to teleport to it would be massively unwise.</span>")
|
||||
return ..(user, 0)
|
||||
user.visible_message("<span class='warning'>Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!</span>", \
|
||||
"<span class='cultitalic'>You speak the words of the talisman and find yourself somewhere else!</span>", "<i>You hear a sharp crack.</i>")
|
||||
"<span class='cult italic'>You speak the words of the talisman and find yourself somewhere else!</span>", "<i>You hear a sharp crack.</i>")
|
||||
user.forceMove(target)
|
||||
target.visible_message("<span class='warning'>There is a boom of outrushing air as something appears above the rune!</span>", null, "<i>You hear a boom.</i>")
|
||||
return ..()
|
||||
@@ -96,10 +96,10 @@
|
||||
/obj/item/paper/talisman/summon_tome/invoke(mob/living/user, successfuluse = 1)
|
||||
. = ..()
|
||||
user.visible_message("<span class='warning'>[user]'s hand glows red for a moment.</span>", \
|
||||
"<span class='cultitalic'>You speak the words of the talisman!</span>")
|
||||
"<span class='cult italic'>You speak the words of the talisman!</span>")
|
||||
new /obj/item/tome(get_turf(user))
|
||||
user.visible_message("<span class='warning'>A tome appears at [user]'s feet!</span>", \
|
||||
"<span class='cultitalic'>An arcane tome materializes at your feet.</span>")
|
||||
"<span class='cult italic'>An arcane tome materializes at your feet.</span>")
|
||||
|
||||
/obj/item/paper/talisman/true_sight
|
||||
cultist_name = "Talisman of Veiling"
|
||||
@@ -115,14 +115,14 @@
|
||||
. = ..()
|
||||
if(!revealing)
|
||||
user.visible_message("<span class='warning'>Thin grey dust falls from [user]'s hand!</span>", \
|
||||
"<span class='cultitalic'>You speak the words of the talisman, hiding nearby runes.</span>")
|
||||
"<span class='cult italic'>You speak the words of the talisman, hiding nearby runes.</span>")
|
||||
invocation = "Nikt'o barada kla'atu!"
|
||||
revealing = TRUE
|
||||
for(var/obj/effect/rune/R in range(4,user))
|
||||
R.talismanhide()
|
||||
else
|
||||
user.visible_message("<span class='warning'>A flash of light shines from [user]'s hand!</span>", \
|
||||
"<span class='cultitalic'>You speak the words of the talisman, revealing nearby runes.</span>")
|
||||
"<span class='cult italic'>You speak the words of the talisman, revealing nearby runes.</span>")
|
||||
for(var/obj/effect/rune/R in range(3,user))
|
||||
R.talismanreveal()
|
||||
|
||||
@@ -137,7 +137,7 @@
|
||||
/obj/item/paper/talisman/emp/invoke(mob/living/user, successfuluse = 1)
|
||||
. = ..()
|
||||
user.visible_message("<span class='warning'>[user]'s hand flashes a bright blue!</span>", \
|
||||
"<span class='cultitalic'>You speak the words of the talisman, emitting an EMP blast.</span>")
|
||||
"<span class='cult italic'>You speak the words of the talisman, emitting an EMP blast.</span>")
|
||||
empulse(src, 4, 8)
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
if(iscultist(user))
|
||||
invoke(user, 1)
|
||||
user.visible_message("<span class='warning'>[user] holds up [src], which explodes in a flash of red light!</span>", \
|
||||
"<span class='cultitalic'>You stun [target] with the talisman!</span>")
|
||||
"<span class='cult italic'>You stun [target] with the talisman!</span>")
|
||||
var/obj/item/nullrod/N = locate() in target
|
||||
if(N)
|
||||
target.visible_message("<span class='warning'>[target]'s holy weapon absorbs the talisman's light!</span>", \
|
||||
@@ -197,7 +197,7 @@
|
||||
/obj/item/paper/talisman/armor/invoke(mob/living/user, successfuluse = 1)
|
||||
. = ..()
|
||||
user.visible_message("<span class='warning'>Otherworldly armor suddenly appears on [user]!</span>", \
|
||||
"<span class='cultitalic'>You speak the words of the talisman, arming yourself!</span>")
|
||||
"<span class='cult italic'>You speak the words of the talisman, arming yourself!</span>")
|
||||
user.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head)
|
||||
user.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit)
|
||||
user.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes)
|
||||
@@ -226,7 +226,7 @@
|
||||
/obj/item/paper/talisman/horror/afterattack(mob/living/target, mob/living/user)
|
||||
if(iscultist(user) && (get_dist(user, target) < 7))
|
||||
if(iscarbon(target))
|
||||
to_chat(user, "<span class='cultitalic'>You disturb [target] with visions of madness!</span>")
|
||||
to_chat(user, "<span class='cult italic'>You disturb [target] with visions of madness!</span>")
|
||||
var/mob/living/carbon/H = target
|
||||
H.reagents.add_reagent("mindbreaker", 12)
|
||||
if(is_servant_of_ratvar(target))
|
||||
@@ -254,7 +254,7 @@
|
||||
|
||||
/obj/item/paper/talisman/construction/attack(obj/M,mob/living/user)
|
||||
if(iscultist(user))
|
||||
to_chat(user, "<span class='cultitalic'>This talisman will only work on a stack of metal or plasteel sheets!</span>")
|
||||
to_chat(user, "<span class='cult italic'>This talisman will only work on a stack of metal or plasteel sheets!</span>")
|
||||
log_game("Construct talisman failed - not a valid target")
|
||||
else
|
||||
..()
|
||||
@@ -306,7 +306,7 @@
|
||||
/obj/item/paper/talisman/shackle/attack(mob/living/carbon/target, mob/living/user)
|
||||
if(iscultist(user) && istype(target))
|
||||
if(target.stat == DEAD)
|
||||
user.visible_message("<span class='cultitalic'>This talisman's magic does not affect the dead!</span>")
|
||||
user.visible_message("<span class='cult italic'>This talisman's magic does not affect the dead!</span>")
|
||||
return
|
||||
CuffAttack(target, user)
|
||||
return
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
var/boost = 0
|
||||
bloodcrawl = BLOODCRAWL_EAT
|
||||
var/list/consumed_mobs = list()
|
||||
var/playstyle_string = "<B><font size=3 color='red'>You are an imp,</font> a mischevious creature from hell. You are the lowest rank on the hellish totem pole \
|
||||
var/playstyle_string = "<span class='big bold'>You are an imp,</span><B> a mischevious creature from hell. You are the lowest rank on the hellish totem pole \
|
||||
Though you are not obligated to help, perhaps by aiding a higher ranking devil, you might just get a promotion. However, you are incapable \
|
||||
of intentionally harming a fellow devil.</B>"
|
||||
|
||||
|
||||
@@ -304,7 +304,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
sleep(30)
|
||||
if(!owner || QDELETED(owner))
|
||||
return
|
||||
priority_announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/AI/aimalf.ogg')
|
||||
priority_announce("Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.", "Anomaly Alert", 'sound/ai/aimalf.ogg')
|
||||
set_security_level("delta")
|
||||
var/obj/machinery/doomsday_device/DOOM = new(owner_AI)
|
||||
owner_AI.nuking = TRUE
|
||||
@@ -367,12 +367,12 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
|
||||
var/sec_left = seconds_remaining()
|
||||
if(!sec_left)
|
||||
timing = FALSE
|
||||
detonate(T.z)
|
||||
detonate()
|
||||
else if(world.time >= next_announce)
|
||||
minor_announce("[sec_left] SECONDS UNTIL DOOMSDAY DEVICE ACTIVATION!", "ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4", TRUE)
|
||||
next_announce += DOOMSDAY_ANNOUNCE_INTERVAL
|
||||
|
||||
/obj/machinery/doomsday_device/proc/detonate(z_level = ZLEVEL_STATION_PRIMARY)
|
||||
/obj/machinery/doomsday_device/proc/detonate()
|
||||
sound_to_playing_players('sound/machines/alarm.ogg')
|
||||
sleep(100)
|
||||
for(var/i in GLOB.mob_living_list)
|
||||
|
||||
@@ -105,7 +105,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
/obj/effect/meteor/Move()
|
||||
if(z != z_original || loc == dest)
|
||||
qdel(src)
|
||||
return
|
||||
return FALSE
|
||||
|
||||
. = ..() //process movement...
|
||||
|
||||
@@ -317,7 +317,6 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
|
||||
|
||||
/obj/effect/meteor/meaty/xeno/New()
|
||||
meteordrop += subtypesof(/obj/item/organ/alien)
|
||||
meteordrop -= /obj/item/organ/alien/eggsac
|
||||
..()
|
||||
|
||||
/obj/effect/meteor/meaty/xeno/ram_turf(turf/T)
|
||||
|
||||
@@ -300,11 +300,10 @@
|
||||
|
||||
/obj/item/organ/heart/gland/plasma/activate()
|
||||
to_chat(owner, "<span class='warning'>You feel bloated.</span>")
|
||||
sleep(150)
|
||||
if(!owner)
|
||||
return
|
||||
to_chat(owner, "<span class='userdanger'>A massive stomachache overcomes you.</span>")
|
||||
sleep(50)
|
||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, owner, "<span class='userdanger'>A massive stomachache overcomes you.</span>"), 150)
|
||||
addtimer(CALLBACK(src, .proc/vomit_plasma), 200)
|
||||
|
||||
/obj/item/organ/heart/gland/plasma/proc/vomit_plasma()
|
||||
if(!owner)
|
||||
return
|
||||
owner.visible_message("<span class='danger'>[owner] vomits a cloud of plasma!</span>")
|
||||
|
||||
@@ -322,10 +322,6 @@
|
||||
to_chat(S, "<span class='warning'>This communications relay should be preserved, it will be a useful resource to our masters in the future. Aborting.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/message_server/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
to_chat(S, "<span class='warning'>This communications relay should be preserved, it will be a useful resource to our masters in the future. Aborting.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/machinery/deepfryer/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
|
||||
to_chat(S, "<span class='warning'>This kitchen appliance should be preserved, it will make delicious unhealthy snacks for our masters in the future. Aborting.</span>")
|
||||
return FALSE
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/datum/round_event_control/spawn_swarmer
|
||||
name = "Spawn Swarmer Shell"
|
||||
typepath = /datum/round_event/spawn_swarmer
|
||||
weight = 0
|
||||
max_occurrences = 0 //Only once okay fam
|
||||
weight = 7
|
||||
max_occurrences = 1 //Only once okay fam
|
||||
earliest_start = 18000 //30 minutes
|
||||
min_players = 15
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
return 0
|
||||
new /obj/effect/mob_spawn/swarmer(get_turf(GLOB.the_gateway))
|
||||
if(prob(25)) //25% chance to announce it to the crew
|
||||
var/swarmer_report = "<font size=3><b>[command_name()] High-Priority Update</b></span>"
|
||||
var/swarmer_report = "<span class='big bold'>[command_name()] High-Priority Update</span>"
|
||||
swarmer_report += "<br><br>Our long-range sensors have detected an odd signal emanating from your station's gateway. We recommend immediate investigation of your gateway, as something may have come through."
|
||||
print_command_report(swarmer_report, announce=TRUE)
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
/mob/living/simple_animal/hostile/morph,
|
||||
/obj/effect))
|
||||
|
||||
var/playstyle_string = "<b><font size=3 color='red'>You are a morph,</font> an abomination of science created primarily with changeling cells. \
|
||||
var/playstyle_string = "<span class='big bold'>You are a morph,</span></b> an abomination of science created primarily with changeling cells. \
|
||||
You may take the form of anything nearby by shift-clicking it. This process will alert any nearby \
|
||||
observers, and can only be performed once every five seconds. While morphed, you move faster, but do \
|
||||
less damage. In addition, anyone within three tiles will note an uncanny wrongness if examining you. \
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
/mob/living/simple_animal/revenant/Login()
|
||||
..()
|
||||
to_chat(src, "<span class='deadsay'><font size=3><b>You are a revenant.</b></font></span>")
|
||||
to_chat(src, "<span class='deadsay'><span class='big bold'>You are a revenant.</span></span>")
|
||||
to_chat(src, "<b>Your formerly mundane spirit has been infused with alien energies and empowered into a revenant.</b>")
|
||||
to_chat(src, "<b>You are not dead, not alive, but somewhere in between. You are capable of limited interaction with both worlds.</b>")
|
||||
to_chat(src, "<b>You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable.</b>")
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
var/boost = 0
|
||||
bloodcrawl = BLOODCRAWL_EAT
|
||||
var/playstyle_string = "<B><font size=3 color='red'>You are a slaughter demon,</font> a terrible creature from another realm. You have a single desire: To kill. \
|
||||
var/playstyle_string = "<span class='big bold'>You are a slaughter demon,</span><B> a terrible creature from another realm. You have a single desire: To kill. \
|
||||
You may use the \"Blood Crawl\" ability near blood pools to travel through them, appearing and disappearing from the station at will. \
|
||||
Pulling a dead or unconscious mob while you enter a pool will pull them in with you, allowing you to feast and regain your health. \
|
||||
You move quickly upon leaving a pool of blood, but the material world will soon sap your strength and leave you sluggish. </B>"
|
||||
@@ -136,8 +136,8 @@
|
||||
// Keep the people we hug!
|
||||
var/list/consumed_mobs = list()
|
||||
|
||||
playstyle_string = "<B><font size=3 color='red'>You are a laughter \
|
||||
demon,</font> a wonderful creature from another realm. You have a single \
|
||||
playstyle_string = "<span class='big bold'>You are a laughter \
|
||||
demon,</span><B> a wonderful creature from another realm. You have a single \
|
||||
desire: <span class='clown'>To hug and tickle.</span><BR>\
|
||||
You may use the \"Blood Crawl\" ability near blood pools to travel \
|
||||
through them, appearing and disappearing from the station at will. \
|
||||
|
||||
@@ -141,8 +141,8 @@
|
||||
|
||||
/datum/outfit/syndicate/post_equip(mob/living/carbon/human/H)
|
||||
var/obj/item/device/radio/R = H.ears
|
||||
R.set_frequency(GLOB.SYND_FREQ)
|
||||
R.freqlock = 1
|
||||
R.set_frequency(FREQ_SYNDICATE)
|
||||
R.freqlock = TRUE
|
||||
if(command_radio)
|
||||
R.command = TRUE
|
||||
|
||||
|
||||
@@ -572,4 +572,4 @@ This is here to make the tiles around the station mininuke change when it's arme
|
||||
user.visible_message("<span class='suicide'>[user] is pretending to go delta! It looks like [user.p_theyre()] trying to commit suicide!</span>")
|
||||
playsound(src, 'sound/machines/alarm.ogg', 30, -1, 1)
|
||||
addtimer(CALLBACK(src, .proc/manual_suicide, user), 101)
|
||||
return MANUAL_SUICIDE
|
||||
return MANUAL_SUICIDE
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/objective
|
||||
var/datum/mind/owner //The primary owner of the objective. !!SOMEWHAT DEPRECATED!! Prefer using 'team' for new code.
|
||||
var/datum/objective_team/team //An alternative to 'owner': a team. Use this when writing new code.
|
||||
var/datum/team/team //An alternative to 'owner': a team. Use this when writing new code.
|
||||
var/explanation_text = "Nothing" //What that person is supposed to do.
|
||||
var/team_explanation_text //For when there are multiple owners.
|
||||
var/datum/mind/target = null //If they are focused on a particular person.
|
||||
@@ -47,9 +47,9 @@
|
||||
. = list()
|
||||
for(var/V in GLOB.data_core.locked)
|
||||
var/datum/data/record/R = V
|
||||
var/mob/M = R.fields["reference"]
|
||||
if(M && M.mind)
|
||||
. += M.mind
|
||||
var/datum/mind/M = R.fields["mindref"]
|
||||
if(M)
|
||||
. += M
|
||||
|
||||
/datum/objective/proc/find_target()
|
||||
var/list/datum/mind/owners = get_owners()
|
||||
@@ -524,7 +524,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
var/list/otherwise = M.GetAllContents()
|
||||
for(var/obj/item/disk/tech_disk/TD in otherwise)
|
||||
TD.stored_research.copy_research_to(checking)
|
||||
return checking.researched_nodes.len >= target
|
||||
return checking.researched_nodes.len >= target_amount
|
||||
|
||||
/datum/objective/capture
|
||||
|
||||
@@ -537,25 +537,25 @@ GLOBAL_LIST_EMPTY(possible_items_special)
|
||||
var/captured_amount = 0
|
||||
var/area/centcom/holding/A = locate() in GLOB.sortedAreas
|
||||
for(var/mob/living/carbon/human/M in A)//Humans.
|
||||
if(M.stat==2)//Dead folks are worth less.
|
||||
if(M.stat == DEAD)//Dead folks are worth less.
|
||||
captured_amount+=0.5
|
||||
continue
|
||||
captured_amount+=1
|
||||
for(var/mob/living/carbon/monkey/M in A)//Monkeys are almost worthless, you failure.
|
||||
captured_amount+=0.1
|
||||
for(var/mob/living/carbon/alien/larva/M in A)//Larva are important for research.
|
||||
if(M.stat==2)
|
||||
if(M.stat == DEAD)
|
||||
captured_amount+=0.5
|
||||
continue
|
||||
captured_amount+=1
|
||||
for(var/mob/living/carbon/alien/humanoid/M in A)//Aliens are worth twice as much as humans.
|
||||
if(istype(M, /mob/living/carbon/alien/humanoid/royal/queen))//Queens are worth three times as much as humans.
|
||||
if(M.stat==2)
|
||||
if(M.stat == DEAD)
|
||||
captured_amount+=1.5
|
||||
else
|
||||
captured_amount+=3
|
||||
continue
|
||||
if(M.stat==2)
|
||||
if(M.stat == DEAD)
|
||||
captured_amount+=1
|
||||
continue
|
||||
captured_amount+=2
|
||||
|
||||
@@ -27,7 +27,7 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE)
|
||||
//items that shouldn't spawn on the floor because they would bug or act weird
|
||||
var/global/list/spawn_forbidden = list(
|
||||
/obj/item/tk_grab, /obj/item/implant, // not implanter, the actual thing that is inside you
|
||||
/obj/item/assembly, /obj/item/device/onetankbomb, /obj/item/radio, /obj/item/device/pda/ai,
|
||||
/obj/item/assembly, /obj/item/device/onetankbomb, /obj/item/device/pda/ai,
|
||||
/obj/item/smallDelivery, /obj/item/projectile,
|
||||
/obj/item/borg/sight, /obj/item/borg/stun, /obj/item/robot_module)
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
for(var/datum/mind/wizard in wizards)
|
||||
if(isliving(wizard.current) && wizard.current.stat!=DEAD)
|
||||
return FALSE
|
||||
|
||||
|
||||
for(var/obj/item/phylactery/P in GLOB.poi_list) //TODO : IsProperlyDead()
|
||||
if(P.mind && P.mind.has_antag_datum(/datum/antagonist/wizard))
|
||||
return FALSE
|
||||
@@ -55,7 +55,7 @@
|
||||
if(SSevents.wizardmode) //If summon events was active, turn it off
|
||||
SSevents.toggleWizardmode()
|
||||
SSevents.resetFrequency()
|
||||
|
||||
|
||||
return TRUE
|
||||
|
||||
/datum/game_mode/wizard/set_round_result()
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
state_open = TRUE
|
||||
circuit = /obj/item/circuitboard/machine/sleeper
|
||||
var/efficiency = 1
|
||||
var/min_health = 30
|
||||
var/min_health = -25
|
||||
var/list/available_chems
|
||||
var/controls_inside = FALSE
|
||||
var/list/possible_chems = list(
|
||||
@@ -42,7 +42,7 @@
|
||||
I += M.rating
|
||||
|
||||
efficiency = initial(efficiency)* E
|
||||
min_health = initial(min_health) - (10*E)
|
||||
min_health = initial(min_health) - (10*(E-1)) // CIT CHANGE - changes min health equation to be min_health - (matterbin rating * 10)
|
||||
available_chems = list()
|
||||
for(var/i in 1 to I)
|
||||
available_chems |= possible_chems[i]
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/receive_signal(datum/signal/signal)
|
||||
if(!signal || signal.encryption)
|
||||
if(!signal)
|
||||
return
|
||||
|
||||
if(id_tag != signal.data["tag"] || !signal.data["command"])
|
||||
@@ -52,15 +52,13 @@
|
||||
|
||||
/obj/machinery/door/airlock/proc/send_status()
|
||||
if(radio_connection)
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.data["tag"] = id_tag
|
||||
signal.data["timestamp"] = world.time
|
||||
|
||||
signal.data["door_status"] = density?("closed"):("open")
|
||||
signal.data["lock_status"] = locked?("locked"):("unlocked")
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = GLOB.RADIO_AIRLOCK)
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = id_tag,
|
||||
"timestamp" = world.time,
|
||||
"door_status" = density ? "closed" : "open",
|
||||
"lock_status" = locked ? "locked" : "unlocked"
|
||||
))
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/open(surpress_send)
|
||||
@@ -79,10 +77,10 @@
|
||||
SSradio.remove_object(src, frequency)
|
||||
if(new_frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_AIRLOCK)
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK)
|
||||
|
||||
/obj/machinery/door/airlock/Destroy()
|
||||
if(frequency && SSradio)
|
||||
if(frequency)
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
|
||||
@@ -97,7 +95,7 @@
|
||||
|
||||
var/id_tag
|
||||
var/master_tag
|
||||
var/frequency = 1449
|
||||
var/frequency = FREQ_AIRLOCK_CONTROL
|
||||
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
@@ -115,36 +113,34 @@
|
||||
icon_state = "airlock_sensor_off"
|
||||
|
||||
/obj/machinery/airlock_sensor/attack_hand(mob/user)
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.data["tag"] = master_tag
|
||||
signal.data["command"] = "cycle"
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = master_tag,
|
||||
"command" = "cycle"
|
||||
))
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = GLOB.RADIO_AIRLOCK)
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
flick("airlock_sensor_cycle", src)
|
||||
|
||||
/obj/machinery/airlock_sensor/process()
|
||||
if(on)
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.data["tag"] = id_tag
|
||||
signal.data["timestamp"] = world.time
|
||||
|
||||
var/datum/gas_mixture/air_sample = return_air()
|
||||
|
||||
var/pressure = round(air_sample.return_pressure(),0.1)
|
||||
alert = (pressure < ONE_ATMOSPHERE*0.8)
|
||||
|
||||
signal.data["pressure"] = num2text(pressure)
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = id_tag,
|
||||
"timestamp" = world.time,
|
||||
"pressure" = num2text(pressure)
|
||||
))
|
||||
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = GLOB.RADIO_AIRLOCK)
|
||||
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_AIRLOCK)
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK)
|
||||
|
||||
/obj/machinery/airlock_sensor/Initialize()
|
||||
. = ..()
|
||||
@@ -152,4 +148,4 @@
|
||||
|
||||
/obj/machinery/airlock_sensor/Destroy()
|
||||
SSradio.remove_object(src,frequency)
|
||||
return ..()
|
||||
return ..()
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
radio = new(src)
|
||||
radio.keyslot = new radio_key
|
||||
radio.subspace_transmission = 1
|
||||
radio.subspace_transmission = TRUE
|
||||
radio.canhear_range = 0
|
||||
radio.recalculateChannels()
|
||||
|
||||
|
||||
@@ -44,8 +44,7 @@
|
||||
/obj/item/grenade/chem_grenade/glitter/blue = 1,
|
||||
/obj/item/grenade/chem_grenade/glitter/white = 1,
|
||||
/obj/item/toy/eightball = 2,
|
||||
/obj/item/toy/windupToolbox = 2,
|
||||
/obj/item/toy/sword/cx = 2)
|
||||
/obj/item/toy/windupToolbox = 2)
|
||||
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
|
||||
@@ -418,17 +417,17 @@
|
||||
dat += "<br>You ran out of food and starved."
|
||||
if(emagged)
|
||||
user.nutrition = 0 //yeah you pretty hongry
|
||||
to_chat(user, "<span class='userdanger'><font size=3>Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.</span>")
|
||||
to_chat(user, "<span class='userdanger'>Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.</span>")
|
||||
if(fuel <= 0)
|
||||
dat += "<br>You ran out of fuel, and drift, slowly, into a star."
|
||||
if(emagged)
|
||||
var/mob/living/M = user
|
||||
M.adjust_fire_stacks(5)
|
||||
M.IgniteMob() //flew into a star, so you're on fire
|
||||
to_chat(user, "<span class='userdanger'><font size=3>You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames.</span>")
|
||||
to_chat(user, "<span class='userdanger'>You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames.</span>")
|
||||
|
||||
if(emagged)
|
||||
to_chat(user, "<span class='userdanger'><font size=3>You're never going to make it to Orion...</span></font>")
|
||||
to_chat(user, "<span class='userdanger'>You're never going to make it to Orion...</span>")
|
||||
user.death()
|
||||
emagged = FALSE //removes the emagged status after you lose
|
||||
gameStatus = ORION_STATUS_START
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_keyboard = "atmos_key"
|
||||
var/list/priority_alarms = list()
|
||||
var/list/minor_alarms = list()
|
||||
var/receive_frequency = 1437
|
||||
var/receive_frequency = FREQ_ATMOS_ALARMS
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
light_color = LIGHT_COLOR_CYAN
|
||||
@@ -57,10 +57,10 @@
|
||||
/obj/machinery/computer/atmos_alert/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, receive_frequency)
|
||||
receive_frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, receive_frequency, GLOB.RADIO_ATMOSIA)
|
||||
radio_connection = SSradio.add_object(src, receive_frequency, RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal)
|
||||
if(!signal || signal.encryption)
|
||||
if(!signal)
|
||||
return
|
||||
|
||||
var/zone = signal.data["zone"]
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
var/on = TRUE
|
||||
|
||||
var/id_tag
|
||||
var/frequency = 1441
|
||||
var/frequency = FREQ_ATMOS_STORAGE
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
/obj/machinery/air_sensor/update_icon()
|
||||
@@ -19,31 +19,29 @@
|
||||
|
||||
/obj/machinery/air_sensor/process_atmos()
|
||||
if(on)
|
||||
var/datum/signal/signal = new
|
||||
var/datum/gas_mixture/air_sample = return_air()
|
||||
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.data = list(
|
||||
var/datum/signal/signal = new(list(
|
||||
"sigtype" = "status",
|
||||
"id_tag" = id_tag,
|
||||
"timestamp" = world.time,
|
||||
"pressure" = air_sample.return_pressure(),
|
||||
"temperature" = air_sample.temperature,
|
||||
"gases" = list()
|
||||
)
|
||||
))
|
||||
var/total_moles = air_sample.total_moles()
|
||||
if(total_moles)
|
||||
for(var/gas_id in air_sample.gases)
|
||||
var/gas_name = air_sample.gases[gas_id][GAS_META][META_GAS_NAME]
|
||||
signal.data["gases"][gas_name] = air_sample.gases[gas_id][MOLES] / total_moles * 100
|
||||
|
||||
radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
|
||||
|
||||
/obj/machinery/air_sensor/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_ATMOSIA)
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/air_sensor/Initialize()
|
||||
. = ..()
|
||||
@@ -66,7 +64,7 @@
|
||||
icon_keyboard = "atmos_key"
|
||||
circuit = /obj/item/circuitboard/computer/atmos_control
|
||||
|
||||
var/frequency = 1441
|
||||
var/frequency = FREQ_ATMOS_STORAGE
|
||||
var/list/sensors = list(
|
||||
"n2_sensor" = "Nitrogen Tank",
|
||||
"o2_sensor" = "Oxygen Tank",
|
||||
@@ -117,7 +115,7 @@
|
||||
return data
|
||||
|
||||
/obj/machinery/computer/atmos_control/receive_signal(datum/signal/signal)
|
||||
if(!signal || signal.encryption)
|
||||
if(!signal)
|
||||
return
|
||||
|
||||
var/id_tag = signal.data["id_tag"]
|
||||
@@ -129,7 +127,7 @@
|
||||
/obj/machinery/computer/atmos_control/proc/set_frequency(new_frequency)
|
||||
SSradio.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
radio_connection = SSradio.add_object(src, frequency, GLOB.RADIO_ATMOSIA)
|
||||
radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA)
|
||||
|
||||
/////////////////////////////////////////////////////////////
|
||||
// LARGE TANK CONTROL
|
||||
@@ -138,7 +136,7 @@
|
||||
/obj/machinery/computer/atmos_control/tank
|
||||
var/input_tag
|
||||
var/output_tag
|
||||
frequency = 1441
|
||||
frequency = FREQ_ATMOS_STORAGE
|
||||
circuit = /obj/item/circuitboard/computer/atmos_control/tank
|
||||
|
||||
var/list/input_info
|
||||
@@ -147,7 +145,7 @@
|
||||
// This hacky madness is the evidence of the fact that a lot of machines were never meant to be constructable, im so sorry you had to see this
|
||||
/obj/machinery/computer/atmos_control/tank/proc/reconnect(mob/user)
|
||||
var/list/IO = list()
|
||||
var/datum/radio_frequency/freq = SSradio.return_frequency(1441)
|
||||
var/datum/radio_frequency/freq = SSradio.return_frequency(FREQ_ATMOS_STORAGE)
|
||||
var/list/devices = freq.devices["_default"]
|
||||
for(var/obj/machinery/atmospherics/components/unary/vent_pump/U in devices)
|
||||
var/list/text = splittext(U.id_tag, "_")
|
||||
@@ -194,10 +192,7 @@
|
||||
/obj/machinery/computer/atmos_control/tank/ui_act(action, params)
|
||||
if(..() || !radio_connection)
|
||||
return
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1
|
||||
signal.source = src
|
||||
signal.data = list("sigtype" = "command")
|
||||
var/datum/signal/signal = new(list("sigtype" = "command"))
|
||||
switch(action)
|
||||
if("reconnect")
|
||||
reconnect(usr)
|
||||
@@ -214,10 +209,10 @@
|
||||
target = CLAMP(target, 0, 50 * ONE_ATMOSPHERE)
|
||||
signal.data += list("tag" = output_tag, "set_internal_pressure" = target)
|
||||
. = TRUE
|
||||
radio_connection.post_signal(src, signal, filter = GLOB.RADIO_ATMOSIA)
|
||||
radio_connection.post_signal(src, signal, filter = RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/computer/atmos_control/tank/receive_signal(datum/signal/signal)
|
||||
if(!signal || signal.encryption)
|
||||
if(!signal)
|
||||
return
|
||||
|
||||
var/id_tag = signal.data["tag"]
|
||||
@@ -227,4 +222,4 @@
|
||||
else if(output_tag == id_tag)
|
||||
output_info = signal.data
|
||||
else
|
||||
..(signal)
|
||||
..(signal)
|
||||
|
||||
@@ -311,6 +311,9 @@
|
||||
else if(isspaceturf(T))
|
||||
to_chat(user, "<span class='sevtug_small'>[prob(1) ? "Servant cannot into space." : "You can't teleport into space."]</span>")
|
||||
return
|
||||
else if(T.flags_1 & NOJAUNT_1)
|
||||
to_chat(user, "<span class='sevtug_small'>This tile is blessed by holy water and deflects the warp.</span>")
|
||||
return
|
||||
var/area/AR = get_area(T)
|
||||
if(!AR.clockwork_warp_allowed)
|
||||
to_chat(user, "<span class='sevtug_small'>[AR.clockwork_warp_fail]</span>")
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
var/const/STATE_TOGGLE_EMERGENCY = 10
|
||||
var/const/STATE_PURCHASE = 11
|
||||
|
||||
var/status_display_freq = "1435"
|
||||
var/stat_msg1
|
||||
var/stat_msg2
|
||||
|
||||
@@ -136,6 +135,7 @@
|
||||
to_chat(usr, "<span class='warning'>Arrays recycling. Please stand by.</span>")
|
||||
playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0)
|
||||
return
|
||||
|
||||
var/input = stripped_multiline_input(usr, "Please choose a message to transmit to allied stations. Please be aware that this process is very expensive, and abuse will lead to... termination.", "Send a message to an allied station.", "")
|
||||
if(!input || !(usr in view(1,src)))
|
||||
return
|
||||
@@ -228,7 +228,7 @@
|
||||
log_game("[key_name(usr)] answered [currmsg.title] comm message. Answer : [currmsg.answered]")
|
||||
if(currmsg)
|
||||
currmsg.answer_callback.Invoke()
|
||||
|
||||
|
||||
state = STATE_VIEWMESSAGE
|
||||
if("status")
|
||||
state = STATE_STATUSDISPLAY
|
||||
@@ -464,8 +464,9 @@
|
||||
if (authenticated==2)
|
||||
dat += "<BR><BR><B>Captain Functions</B>"
|
||||
dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=announce'>Make a Captain's Announcement</A> \]"
|
||||
if(CONFIG_GET(string/cross_server_address))
|
||||
dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=crossserver'>Send a message to an allied station</A> \]"
|
||||
var/cross_servers_count = length(CONFIG_GET(keyed_string_list/cross_server))
|
||||
if(cross_servers_count)
|
||||
dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=crossserver'>Send a message to [cross_servers_count == 1 ? "an " : ""]allied station[cross_servers_count > 1 ? "s" : ""]</A> \]"
|
||||
if(SSmapping.config.allow_custom_shuttles)
|
||||
dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=purchase_menu'>Purchase Shuttle</A> \]"
|
||||
dat += "<BR>\[ <A HREF='?src=[REF(src)];operation=changeseclevel'>Change Alert Level</A> \]"
|
||||
@@ -693,16 +694,12 @@
|
||||
|
||||
/obj/machinery/computer/communications/proc/post_status(command, data1, data2)
|
||||
|
||||
var/datum/radio_frequency/frequency = SSradio.return_frequency(1435)
|
||||
var/datum/radio_frequency/frequency = SSradio.return_frequency(FREQ_STATUS_DISPLAYS)
|
||||
|
||||
if(!frequency)
|
||||
return
|
||||
|
||||
var/datum/signal/status_signal = new
|
||||
status_signal.source = src
|
||||
status_signal.transmission_method = 1
|
||||
status_signal.data["command"] = command
|
||||
|
||||
var/datum/signal/status_signal = new(list("command" = command))
|
||||
switch(command)
|
||||
if("message")
|
||||
status_signal.data["msg1"] = data1
|
||||
|
||||
@@ -108,9 +108,9 @@
|
||||
else
|
||||
scanner_status = "Closed"
|
||||
if(connected.locked)
|
||||
scanner_status += " <span class='bad'>(Locked)</span>"
|
||||
scanner_status += "<span class='bad'>(Locked)</span>"
|
||||
else
|
||||
scanner_status += " <span class='good'>(Unlocked)</span>"
|
||||
scanner_status += "<span class='good'>(Unlocked)</span>"
|
||||
|
||||
|
||||
else
|
||||
@@ -143,27 +143,27 @@
|
||||
status += "<div class='line'><div class='statusLabel'>Pulse Duration:</div><div class='statusValue'>[radduration]</div></div>"
|
||||
status += "<div class='line'><div class='statusLabel'> \> Accuracy:</div><div class='statusValue'>[chance_to_hit]</div></div>"
|
||||
status += "<br></div>" // Close statusDisplay div
|
||||
var/list/buttons = list("<a href='?src=[REF(src)];'>Scan</a> ")
|
||||
var/list/buttons = list("<a href='?src=[REF(src)];'>Scan</a>")
|
||||
if(connected)
|
||||
buttons += " <a href='?src=[REF(src)];task=toggleopen;'>[connected.state_open ? "Close" : "Open"] Scanner</a> "
|
||||
buttons += "<a href='?src=[REF(src)];task=toggleopen;'>[connected.state_open ? "Close" : "Open"] Scanner</a>"
|
||||
if (connected.state_open)
|
||||
buttons += "<span class='linkOff'>[connected.locked ? "Unlock" : "Lock"] Scanner</span> "
|
||||
buttons += "<span class='linkOff'>[connected.locked ? "Unlock" : "Lock"] Scanner</span>"
|
||||
else
|
||||
buttons += "<a href='?src=[REF(src)];task=togglelock;'>[connected.locked ? "Unlock" : "Lock"] Scanner</a> "
|
||||
buttons += "<a href='?src=[REF(src)];task=togglelock;'>[connected.locked ? "Unlock" : "Lock"] Scanner</a>"
|
||||
else
|
||||
buttons += "<span class='linkOff'>Open Scanner</span> <span class='linkOff'>Lock Scanner</span> "
|
||||
buttons += "<span class='linkOff'>Open Scanner</span> <span class='linkOff'>Lock Scanner</span>"
|
||||
if(viable_occupant)
|
||||
buttons += "<a href='?src=[REF(src)];task=rejuv'>Inject Rejuvenators</a> "
|
||||
buttons += "<a href='?src=[REF(src)];task=rejuv'>Inject Rejuvenators</a>"
|
||||
else
|
||||
buttons += "<span class='linkOff'>Inject Rejuvenators</span> "
|
||||
buttons += "<span class='linkOff'>Inject Rejuvenators</span>"
|
||||
if(diskette)
|
||||
buttons += "<a href='?src=[REF(src)];task=ejectdisk'>Eject Disk</a> "
|
||||
buttons += "<a href='?src=[REF(src)];task=ejectdisk'>Eject Disk</a>"
|
||||
else
|
||||
buttons += "<span class='linkOff'>Eject Disk</span> "
|
||||
buttons += "<span class='linkOff'>Eject Disk</span>"
|
||||
if(current_screen == "buffer")
|
||||
buttons += "<a href='?src=[REF(src)];task=screen;text=mainmenu;'>Radiation Emitter Menu</a> "
|
||||
buttons += "<a href='?src=[REF(src)];task=screen;text=mainmenu;'>Radiation Emitter Menu</a>"
|
||||
else
|
||||
buttons += "<a href='?src=[REF(src)];task=screen;text=buffer;'>Buffer Menu</a> "
|
||||
buttons += "<a href='?src=[REF(src)];task=screen;text=buffer;'>Buffer Menu</a>"
|
||||
|
||||
switch(current_screen)
|
||||
if("working")
|
||||
@@ -182,15 +182,15 @@
|
||||
if( !buffer_slot || !buffer_slot.len || !buffer_slot["name"] || !((buffer_slot["UI"] && buffer_slot["UE"]) || buffer_slot["SE"]) )
|
||||
temp_html += "<br>\tNo Data"
|
||||
if(viable_occupant)
|
||||
temp_html += "<br><a href='?src=[REF(src)];task=setbuffer;num=[i];'>Save to Buffer</a> "
|
||||
temp_html += "<br><a href='?src=[REF(src)];task=setbuffer;num=[i];'>Save to Buffer</a>"
|
||||
else
|
||||
temp_html += "<br><span class='linkOff'>Save to Buffer</span> "
|
||||
temp_html += "<span class='linkOff'>Clear Buffer</span> "
|
||||
temp_html += "<br><span class='linkOff'>Save to Buffer</span>"
|
||||
temp_html += "<span class='linkOff'>Clear Buffer</span>"
|
||||
if(diskette)
|
||||
temp_html += "<a href='?src=[REF(src)];task=loaddisk;num=[i];'>Load from Disk</a> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=loaddisk;num=[i];'>Load from Disk</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Load from Disk</span> "
|
||||
temp_html += "<span class='linkOff'>Save to Disk</span> "
|
||||
temp_html += "<span class='linkOff'>Load from Disk</span>"
|
||||
temp_html += "<span class='linkOff'>Save to Disk</span>"
|
||||
else
|
||||
var/ui = buffer_slot["UI"]
|
||||
var/se = buffer_slot["SE"]
|
||||
@@ -204,10 +204,10 @@
|
||||
temp_html += "<br>\tBlood Type: [blood_type]"
|
||||
temp_html += "<br>\tUE: [ue] "
|
||||
if(viable_occupant)
|
||||
temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=ue'>Occupant</a> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=ue'>Occupant</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Occupant</span>"
|
||||
temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_UE]'>Occupant:Delayed</a> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_UE]'>Occupant:Delayed</a>"
|
||||
if(injectorready < world.time)
|
||||
temp_html += "<a href='?src=[REF(src)];task=injector;num=[i];text=ue'>Injector</a>"
|
||||
else
|
||||
@@ -218,10 +218,10 @@
|
||||
if(ui)
|
||||
temp_html += "<br>\tUI: [ui] "
|
||||
if(viable_occupant)
|
||||
temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=ui'>Occupant</a> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=ui'>Occupant</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Occupant</span>"
|
||||
temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_UI]'>Occupant:Delayed</a> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_UI]'>Occupant:Delayed</a>"
|
||||
if(injectorready < world.time)
|
||||
temp_html += "<a href='?src=[REF(src)];task=injector;num=[i];text=ui'>Injector</a>"
|
||||
else
|
||||
@@ -231,10 +231,10 @@
|
||||
if(ue && name && blood_type && ui)
|
||||
temp_html += "<br>\tUI+UE: [ui]/[ue] "
|
||||
if(viable_occupant)
|
||||
temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=mixed'>Occupant</a> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=mixed'>Occupant</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Occupant</span>"
|
||||
temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_MIXED]'>Occupant:Delayed</a> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_MIXED]'>Occupant:Delayed</a>"
|
||||
if(injectorready < world.time)
|
||||
temp_html += "<a href='?src=[REF(src)];task=injector;num=[i];text=mixed'>UI+UE Injector</a>"
|
||||
else
|
||||
@@ -242,10 +242,10 @@
|
||||
if(se)
|
||||
temp_html += "<br>\tSE: [se] "
|
||||
if(viable_occupant)
|
||||
temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=se'>Occupant</a> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=transferbuffer;num=[i];text=se'>Occupant</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Occupant</span> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_SE]'>Occupant:Delayed</a> "
|
||||
temp_html += "<span class='linkOff'>Occupant</span>"
|
||||
temp_html += "<a href='?src=[REF(src)];task=setdelayed;num=[i];delayaction=[SCANNER_ACTION_SE]'>Occupant:Delayed</a>"
|
||||
if(injectorready < world.time )
|
||||
temp_html += "<a href='?src=[REF(src)];task=injector;num=[i];text=se'>Injector</a>"
|
||||
else
|
||||
@@ -253,18 +253,18 @@
|
||||
else
|
||||
temp_html += "<br>\tSE: No Data"
|
||||
if(viable_occupant)
|
||||
temp_html += "<br><a href='?src=[REF(src)];task=setbuffer;num=[i];'>Save to Buffer</a> "
|
||||
temp_html += "<br><a href='?src=[REF(src)];task=setbuffer;num=[i];'>Save to Buffer</a>"
|
||||
else
|
||||
temp_html += "<br><span class='linkOff'>Save to Buffer</span> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=clearbuffer;num=[i];'>Clear Buffer</a> "
|
||||
temp_html += "<br><span class='linkOff'>Save to Buffer</span>"
|
||||
temp_html += "<a href='?src=[REF(src)];task=clearbuffer;num=[i];'>Clear Buffer</a>"
|
||||
if(diskette)
|
||||
temp_html += "<a href='?src=[REF(src)];task=loaddisk;num=[i];'>Load from Disk</a> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=loaddisk;num=[i];'>Load from Disk</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Load from Disk</span> "
|
||||
temp_html += "<span class='linkOff'>Load from Disk</span>"
|
||||
if(diskette && !diskette.read_only)
|
||||
temp_html += "<a href='?src=[REF(src)];task=savedisk;num=[i];'>Save to Disk</a> "
|
||||
temp_html += "<a href='?src=[REF(src)];task=savedisk;num=[i];'>Save to Disk</a>"
|
||||
else
|
||||
temp_html += "<span class='linkOff'>Save to Disk</span> "
|
||||
temp_html += "<span class='linkOff'>Save to Disk</span>"
|
||||
else
|
||||
temp_html += status
|
||||
temp_html += buttons
|
||||
@@ -528,7 +528,7 @@
|
||||
var/mob/living/carbon/viable_occupant = null
|
||||
if(connected)
|
||||
viable_occupant = connected.occupant
|
||||
if(!istype(viable_occupant) || !viable_occupant.dna || (viable_occupant.has_disability(DISABILITY_NOCLONE)))
|
||||
if(!istype(viable_occupant) || !viable_occupant.dna || (RADIMMUNE in viable_occupant.dna.species.species_traits) || (viable_occupant.has_disability(DISABILITY_NOCLONE)))
|
||||
viable_occupant = null
|
||||
return viable_occupant
|
||||
|
||||
|
||||
@@ -156,8 +156,6 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E
|
||||
..()
|
||||
var/list/nukeops = get_antagonists(/datum/antagonist/nukeop)
|
||||
var/danger = GLOB.joined_player_list.len - nukeops.len
|
||||
// var/list/nukeops = get_antagonists(/datum/antagonist/nukeop)
|
||||
// var/danger = GLOB.joined_player_list.len - nukeops.len
|
||||
danger = CEILING(danger, 10)
|
||||
scaleTC(danger)
|
||||
|
||||
|
||||
@@ -173,12 +173,8 @@
|
||||
if(M.stat == DEAD)
|
||||
if(M.timeofdeath + 6000 < world.time)
|
||||
continue
|
||||
var/turf/T = get_turf(M)
|
||||
if(!T)
|
||||
continue
|
||||
if(T.z == ZLEVEL_CENTCOM)
|
||||
continue
|
||||
L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = I
|
||||
if(is_eligible(I))
|
||||
L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = I
|
||||
|
||||
var/desc = input("Please select a location to lock in.", "Locking Computer") as null|anything in L
|
||||
target = L[desc]
|
||||
|
||||
@@ -257,4 +257,5 @@
|
||||
for(var/X in components)
|
||||
var/obj/item/I = X
|
||||
I.forceMove(loc)
|
||||
|
||||
..()
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
#define AIRLOCK_INTEGRITY_N 300 // Normal airlock integrity
|
||||
#define AIRLOCK_INTEGRITY_MULTIPLIER 1.5 // How much reinforced doors health increases
|
||||
#define AIRLOCK_DAMAGE_DEFLECTION_N 20 // Normal airlock damage deflection
|
||||
#define AIRLOCK_DAMAGE_DEFLECTION_N 20 // Normal airlock damage deflection // CIT CHANGE - CHANGES DEFAULT AIRLOCK DEFLECTION FROM 21 TO 20
|
||||
#define AIRLOCK_DAMAGE_DEFLECTION_R 30 // Reinforced airlock damage deflection
|
||||
|
||||
#define NOT_ELECTRIFIED 0
|
||||
@@ -209,23 +209,27 @@
|
||||
/obj/machinery/door/airlock/narsie_act()
|
||||
var/turf/T = get_turf(src)
|
||||
var/runed = prob(20)
|
||||
var/obj/machinery/door/airlock/cult/A
|
||||
if(glass)
|
||||
if(runed)
|
||||
new/obj/machinery/door/airlock/cult/glass(T)
|
||||
A = new/obj/machinery/door/airlock/cult/glass(T)
|
||||
else
|
||||
new/obj/machinery/door/airlock/cult/unruned/glass(T)
|
||||
A = new/obj/machinery/door/airlock/cult/unruned/glass(T)
|
||||
else
|
||||
if(runed)
|
||||
new/obj/machinery/door/airlock/cult(T)
|
||||
A = new/obj/machinery/door/airlock/cult(T)
|
||||
else
|
||||
new/obj/machinery/door/airlock/cult/unruned(T)
|
||||
A = new/obj/machinery/door/airlock/cult/unruned(T)
|
||||
A.name = name
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/door/airlock/ratvar_act() //Airlocks become pinion airlocks that only allow servants
|
||||
var/obj/machinery/door/airlock/clockwork/A
|
||||
if(glass)
|
||||
new/obj/machinery/door/airlock/clockwork/brass(get_turf(src))
|
||||
A = new/obj/machinery/door/airlock/clockwork/brass(get_turf(src))
|
||||
else
|
||||
new/obj/machinery/door/airlock/clockwork(get_turf(src))
|
||||
A = new/obj/machinery/door/airlock/clockwork(get_turf(src))
|
||||
A.name = name
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/door/airlock/Destroy()
|
||||
@@ -251,16 +255,13 @@
|
||||
note = null
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/door/airlock/proc/unzap() //for addtimer
|
||||
justzap = FALSE
|
||||
|
||||
/obj/machinery/door/airlock/bumpopen(mob/living/user) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite
|
||||
if(!issilicon(usr))
|
||||
if(isElectrified())
|
||||
if(!justzap)
|
||||
if(shock(user, 100))
|
||||
justzap = TRUE
|
||||
addtimer(CALLBACK(src, .proc/unzap), 10)
|
||||
addtimer(VARSET_CALLBACK(src, justzap, FALSE) , 10)
|
||||
return
|
||||
else
|
||||
return
|
||||
@@ -568,6 +569,8 @@
|
||||
|
||||
/obj/machinery/door/airlock/examine(mob/user)
|
||||
..()
|
||||
if(emagged)
|
||||
to_chat(user, "<span class='warning'>Its access panel is smoking slightly.</span>")
|
||||
if(charge && !panel_open && in_range(user, src))
|
||||
to_chat(user, "<span class='warning'>The maintenance panel seems haphazardly fastened.</span>")
|
||||
if(charge && panel_open)
|
||||
@@ -1231,7 +1234,6 @@
|
||||
if(!open())
|
||||
update_icon(AIRLOCK_CLOSED, 1)
|
||||
emagged = TRUE
|
||||
desc = "<span class='warning'>Its access panel is smoking slightly.</span>"
|
||||
lights = FALSE
|
||||
locked = TRUE
|
||||
loseMainPower()
|
||||
|
||||
@@ -79,69 +79,49 @@
|
||||
opacity = 0
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/glass_command
|
||||
icon = 'icons/obj/doors/airlocks/station/command.dmi'
|
||||
/obj/machinery/door/airlock/command/glass
|
||||
opacity = 0
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_com
|
||||
glass = TRUE
|
||||
normal_integrity = 400
|
||||
|
||||
/obj/machinery/door/airlock/glass_engineering
|
||||
icon = 'icons/obj/doors/airlocks/station/engineering.dmi'
|
||||
/obj/machinery/door/airlock/engineering/glass
|
||||
opacity = 0
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_eng
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/glass_security
|
||||
icon = 'icons/obj/doors/airlocks/station/security.dmi'
|
||||
/obj/machinery/door/airlock/security/glass
|
||||
opacity = 0
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_sec
|
||||
glass = TRUE
|
||||
normal_integrity = 400
|
||||
|
||||
/obj/machinery/door/airlock/glass_security/abandoned
|
||||
/obj/machinery/door/airlock/security/glass/abandoned
|
||||
abandoned = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/glass_medical
|
||||
icon = 'icons/obj/doors/airlocks/station/medical.dmi'
|
||||
/obj/machinery/door/airlock/medical/glass
|
||||
opacity = 0
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_med
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/glass_research
|
||||
icon = 'icons/obj/doors/airlocks/station/research.dmi'
|
||||
/obj/machinery/door/airlock/research/glass
|
||||
opacity = 0
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_research
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/glass_mining
|
||||
icon = 'icons/obj/doors/airlocks/station/mining.dmi'
|
||||
/obj/machinery/door/airlock/mining/glass
|
||||
opacity = 0
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_min
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/glass_atmos
|
||||
icon = 'icons/obj/doors/airlocks/station/atmos.dmi'
|
||||
/obj/machinery/door/airlock/atmos/glass
|
||||
opacity = 0
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_atmo
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/glass_science
|
||||
icon = 'icons/obj/doors/airlocks/station/science.dmi'
|
||||
/obj/machinery/door/airlock/science/glass
|
||||
opacity = 0
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_science
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/glass_virology
|
||||
icon = 'icons/obj/doors/airlocks/station/virology.dmi'
|
||||
/obj/machinery/door/airlock/virology/glass
|
||||
opacity = 0
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_viro
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/glass_maintenance
|
||||
icon = 'icons/obj/doors/airlocks/station/maintenance.dmi'
|
||||
/obj/machinery/door/airlock/maintenance/glass
|
||||
opacity = 0
|
||||
assemblytype = /obj/structure/door_assembly/door_assembly_mai
|
||||
glass = TRUE
|
||||
|
||||
/obj/machinery/door/airlock/maintenance/external/glass
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
glass = TRUE
|
||||
|
||||
var/datum/radio_frequency/air_connection
|
||||
var/air_frequency = 1437
|
||||
var/air_frequency = FREQ_ATMOS_ALARMS
|
||||
autoclose = FALSE
|
||||
|
||||
/obj/machinery/door/airlock/alarmlock/New()
|
||||
@@ -22,7 +22,7 @@
|
||||
/obj/machinery/door/airlock/alarmlock/Initialize()
|
||||
. = ..()
|
||||
SSradio.remove_object(src, air_frequency)
|
||||
air_connection = SSradio.add_object(src, air_frequency, GLOB.RADIO_TO_AIRALARM)
|
||||
air_connection = SSradio.add_object(src, air_frequency, RADIO_TO_AIRALARM)
|
||||
open()
|
||||
|
||||
/obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal)
|
||||
@@ -41,4 +41,4 @@
|
||||
close()
|
||||
if("minor", "clear")
|
||||
autoclose = FALSE
|
||||
open()
|
||||
open()
|
||||
@@ -112,8 +112,8 @@
|
||||
return 0
|
||||
|
||||
if(!forced)
|
||||
Radio.set_frequency(GLOB.SEC_FREQ)
|
||||
Radio.talk_into(src, "Timer has expired. Releasing prisoner.", GLOB.SEC_FREQ, get_default_language())
|
||||
Radio.set_frequency(FREQ_SECURITY)
|
||||
Radio.talk_into(src, "Timer has expired. Releasing prisoner.", FREQ_SECURITY)
|
||||
|
||||
timing = FALSE
|
||||
activation_time = null
|
||||
|
||||
@@ -32,11 +32,27 @@
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
var/damage_deflection = 10
|
||||
var/real_explosion_block //ignore this, just use explosion_block
|
||||
var/red_alert_access = FALSE //if TRUE, this door will always open on red alert
|
||||
|
||||
/obj/machinery/door/examine(mob/user)
|
||||
..()
|
||||
if(red_alert_access)
|
||||
if(GLOB.security_level >= SEC_LEVEL_RED)
|
||||
to_chat(user, "<span class='notice'>Due to a security threat, its access requirements have been lifted!</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>In the event of a red alert, its access requirements will automatically lift.</span>")
|
||||
to_chat(user, "<span class='notice'>Its maintenance panel is <b>screwed</b> in place.</span>")
|
||||
|
||||
/obj/machinery/door/check_access(access)
|
||||
if(red_alert_access && GLOB.security_level >= SEC_LEVEL_RED)
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/check_access_list(list/access_list)
|
||||
if(red_alert_access && GLOB.security_level >= SEC_LEVEL_RED)
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/New()
|
||||
..()
|
||||
if(density)
|
||||
@@ -96,7 +112,7 @@
|
||||
|
||||
/obj/machinery/door/Move()
|
||||
var/turf/T = loc
|
||||
..()
|
||||
. = ..()
|
||||
move_update_air(T)
|
||||
|
||||
/obj/machinery/door/CanPass(atom/movable/mover, turf/target)
|
||||
@@ -195,7 +211,7 @@
|
||||
/obj/machinery/door/emp_act(severity)
|
||||
if(prob(20/severity) && (istype(src, /obj/machinery/door/airlock) || istype(src, /obj/machinery/door/window)) )
|
||||
INVOKE_ASYNC(src, .proc/open)
|
||||
if(prob(40/severity))
|
||||
if(prob(severity*10 - 20))
|
||||
if(secondsElectrified == 0)
|
||||
secondsElectrified = -1
|
||||
shockedby += "\[[time_stamp()]\]EM Pulse"
|
||||
|
||||
@@ -26,4 +26,4 @@
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/close(ignorepower = 0)
|
||||
..()
|
||||
layer = CLOSED_DOOR_LAYER
|
||||
layer = CLOSED_DOOR_LAYER
|
||||
@@ -1,25 +1,25 @@
|
||||
/obj/machinery/door/unpowered
|
||||
|
||||
/obj/machinery/door/unpowered
|
||||
|
||||
/obj/machinery/door/unpowered/CollidedWith(atom/movable/AM)
|
||||
if(src.locked)
|
||||
return
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/door/unpowered/attackby(obj/item/I, mob/user, params)
|
||||
if(locked)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/unpowered/emag_act()
|
||||
return
|
||||
|
||||
/obj/machinery/door/unpowered/shuttle
|
||||
icon = 'icons/turf/shuttle.dmi'
|
||||
name = "door"
|
||||
icon_state = "door1"
|
||||
opacity = 1
|
||||
if(src.locked)
|
||||
return
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/door/unpowered/attackby(obj/item/I, mob/user, params)
|
||||
if(locked)
|
||||
return
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/door/unpowered/emag_act()
|
||||
return
|
||||
|
||||
/obj/machinery/door/unpowered/shuttle
|
||||
icon = 'icons/turf/shuttle.dmi'
|
||||
name = "door"
|
||||
icon_state = "door1"
|
||||
opacity = 1
|
||||
density = TRUE
|
||||
explosion_block = 1
|
||||
@@ -192,7 +192,8 @@
|
||||
add_atom_colour("#7D1919", FIXED_COLOUR_PRIORITY)
|
||||
|
||||
/obj/machinery/door/window/ratvar_act()
|
||||
new/obj/machinery/door/window/clockwork(src.loc, dir)
|
||||
var/obj/machinery/door/window/clockwork/C = new(loc, dir)
|
||||
C.name = name
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/door/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
|
||||
|
||||
@@ -19,6 +19,10 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
|
||||
GLOB.doppler_arrays -= src
|
||||
return ..()
|
||||
|
||||
/obj/machinery/doppler_array/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>Its dish is facing to the [dir2text(dir)].</span>")
|
||||
|
||||
/obj/machinery/doppler_array/process()
|
||||
return PROCESS_KILL
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
var/target_state = AIRLOCK_STATE_CLOSED
|
||||
var/sensor_pressure = null
|
||||
|
||||
/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal, receive_method, receive_param)
|
||||
/datum/computer/file/embedded_program/airlock_controller/receive_signal(datum/signal/signal)
|
||||
var/receive_tag = signal.data["tag"]
|
||||
if(!receive_tag)
|
||||
return
|
||||
@@ -68,19 +68,17 @@
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else
|
||||
var/datum/signal/signal = new
|
||||
signal.data["tag"] = interior_door_tag
|
||||
signal.data["command"] = "secure_close"
|
||||
post_signal(signal)
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = interior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
else
|
||||
if(memory["pump_status"] != "off")
|
||||
var/datum/signal/signal = new
|
||||
signal.data = list(
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"power" = 0,
|
||||
"sigtype"="command"
|
||||
)
|
||||
post_signal(signal)
|
||||
"sigtype" = "command"
|
||||
)))
|
||||
|
||||
if(AIRLOCK_STATE_PRESSURIZE)
|
||||
if(target_state < state)
|
||||
@@ -89,16 +87,15 @@
|
||||
state = AIRLOCK_STATE_INOPEN
|
||||
process_again = 1
|
||||
else
|
||||
var/datum/signal/signal = new
|
||||
signal.data["tag"] = interior_door_tag
|
||||
signal.data["command"] = "secure_open"
|
||||
post_signal(signal)
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = interior_door_tag,
|
||||
"command" = "secure_open"
|
||||
)))
|
||||
else
|
||||
var/datum/signal/signal = new
|
||||
signal.data = list(
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype"="command"
|
||||
)
|
||||
"sigtype" = "command"
|
||||
))
|
||||
if(memory["pump_status"] == "siphon")
|
||||
signal.data["stabalize"] = 1
|
||||
else if(memory["pump_status"] != "release")
|
||||
@@ -114,29 +111,27 @@
|
||||
state = AIRLOCK_STATE_DEPRESSURIZE
|
||||
process_again = 1
|
||||
else
|
||||
var/datum/signal/signal = new
|
||||
signal.data["tag"] = interior_door_tag
|
||||
signal.data["command"] = "secure_close"
|
||||
post_signal(signal)
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = interior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
else if(target_state < state)
|
||||
if(memory["exterior_status"] == "closed")
|
||||
state = AIRLOCK_STATE_PRESSURIZE
|
||||
process_again = 1
|
||||
else
|
||||
var/datum/signal/signal = new
|
||||
signal.data["tag"] = exterior_door_tag
|
||||
signal.data["command"] = "secure_close"
|
||||
post_signal(signal)
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = exterior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
|
||||
else
|
||||
if(memory["pump_status"] != "off")
|
||||
var/datum/signal/signal = new
|
||||
signal.data = list(
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"power" = 0,
|
||||
"sigtype"="command"
|
||||
)
|
||||
post_signal(signal)
|
||||
"sigtype" = "command"
|
||||
)))
|
||||
|
||||
if(AIRLOCK_STATE_DEPRESSURIZE)
|
||||
var/target_pressure = ONE_ATMOSPHERE*0.05
|
||||
@@ -148,10 +143,10 @@
|
||||
if(memory["exterior_status"] == "open")
|
||||
state = AIRLOCK_STATE_OUTOPEN
|
||||
else
|
||||
var/datum/signal/signal = new
|
||||
signal.data["tag"] = exterior_door_tag
|
||||
signal.data["command"] = "secure_open"
|
||||
post_signal(signal)
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = exterior_door_tag,
|
||||
"command" = "secure_open"
|
||||
)))
|
||||
else if(target_state < state)
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
@@ -159,12 +154,10 @@
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.data = list(
|
||||
var/datum/signal/signal = new(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype"="command"
|
||||
)
|
||||
"sigtype" = "command"
|
||||
))
|
||||
if(memory["pump_status"] == "release")
|
||||
signal.data["purge"] = 1
|
||||
else if(memory["pump_status"] != "siphon")
|
||||
@@ -181,19 +174,17 @@
|
||||
state = AIRLOCK_STATE_CLOSED
|
||||
process_again = 1
|
||||
else
|
||||
var/datum/signal/signal = new
|
||||
signal.data["tag"] = exterior_door_tag
|
||||
signal.data["command"] = "secure_close"
|
||||
post_signal(signal)
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = exterior_door_tag,
|
||||
"command" = "secure_close"
|
||||
)))
|
||||
else
|
||||
if(memory["pump_status"] != "off")
|
||||
var/datum/signal/signal = new
|
||||
signal.data = list(
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"power" = 0,
|
||||
"sigtype"="command"
|
||||
)
|
||||
post_signal(signal)
|
||||
"sigtype" = "command"
|
||||
)))
|
||||
|
||||
memory["sensor_pressure"] = sensor_pressure
|
||||
memory["processing"] = state != target_state
|
||||
@@ -209,7 +200,7 @@
|
||||
name = "airlock console"
|
||||
density = FALSE
|
||||
|
||||
frequency = 1449
|
||||
frequency = FREQ_AIRLOCK_CONTROL
|
||||
power_channel = ENVIRON
|
||||
|
||||
// Setup parameters only
|
||||
@@ -293,4 +284,4 @@
|
||||
</div>
|
||||
[state_options]"}
|
||||
|
||||
return output
|
||||
return output
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
/datum/computer/file/embedded_program/proc/receive_user_command(command)
|
||||
|
||||
/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal, receive_method, receive_param)
|
||||
/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal)
|
||||
return null
|
||||
|
||||
/datum/computer/file/embedded_program/process()
|
||||
@@ -43,13 +43,9 @@
|
||||
/obj/machinery/embedded_controller/proc/post_signal(datum/signal/signal, comm_line)
|
||||
return 0
|
||||
|
||||
/obj/machinery/embedded_controller/receive_signal(datum/signal/signal, receive_method, receive_param)
|
||||
if(!signal || signal.encryption)
|
||||
return
|
||||
|
||||
if(program)
|
||||
program.receive_signal(signal, receive_method, receive_param)
|
||||
//spawn(5) program.process() //no, program.process sends some signals and machines respond and we here again and we lag -rastaf0
|
||||
/obj/machinery/embedded_controller/receive_signal(datum/signal/signal)
|
||||
if(istype(signal) && program)
|
||||
program.receive_signal(signal)
|
||||
|
||||
/obj/machinery/embedded_controller/Topic(href, href_list)
|
||||
if(..())
|
||||
|
||||
@@ -5,34 +5,27 @@
|
||||
/datum/computer/file/embedded_program/simple_vent_controller/receive_user_command(command)
|
||||
switch(command)
|
||||
if("vent_inactive")
|
||||
var/datum/signal/signal = new
|
||||
signal.data = list(
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype"="command"
|
||||
)
|
||||
signal.data["power"] = 0
|
||||
post_signal(signal)
|
||||
"sigtype" = "command",
|
||||
"power" = 0
|
||||
)))
|
||||
|
||||
if("vent_pump")
|
||||
var/datum/signal/signal = new
|
||||
signal.data = list(
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype"="command"
|
||||
)
|
||||
signal.data["stabalize"] = 1
|
||||
signal.data["power"] = 1
|
||||
post_signal(signal)
|
||||
"sigtype" = "command",
|
||||
"stabalize" = 1,
|
||||
"power" = 1
|
||||
)))
|
||||
|
||||
if("vent_clear")
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 1 //radio signal
|
||||
signal.data = list(
|
||||
post_signal(new /datum/signal(list(
|
||||
"tag" = airpump_tag,
|
||||
"sigtype"="command"
|
||||
)
|
||||
signal.data["purge"] = 1
|
||||
signal.data["power"] = 1
|
||||
post_signal(signal)
|
||||
"sigtype" = "command",
|
||||
"purge" = 1,
|
||||
"power" = 1
|
||||
)))
|
||||
|
||||
/datum/computer/file/embedded_program/simple_vent_controller/process()
|
||||
return 0
|
||||
@@ -45,7 +38,7 @@
|
||||
name = "vent controller"
|
||||
density = FALSE
|
||||
|
||||
frequency = 1229
|
||||
frequency = FREQ_ATMOS_CONTROL
|
||||
power_channel = ENVIRON
|
||||
|
||||
// Setup parameters only
|
||||
|
||||
@@ -213,4 +213,4 @@
|
||||
to_chat(user, "<span class='notice'>[attached ? attached : "No one"] is attached.</span>")
|
||||
|
||||
#undef IV_TAKING
|
||||
#undef IV_INJECTING
|
||||
#undef IV_INJECTING
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user