wind and fire
This commit is contained in:
kappa-sama
2019-10-24 13:29:34 -04:00
committed by GitHub
235 changed files with 6246 additions and 3840 deletions
@@ -167,7 +167,7 @@
/area/ruin/unpowered/xenonest)
"aM" = (
/obj/structure/alien/weeds,
/obj/effect/decal/cleanable/xenoblood,
/obj/effect/decal/cleanable/blood/xeno,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/unpowered/xenonest)
"aQ" = (
@@ -260,7 +260,7 @@
/obj/structure/stone_tile/cracked{
dir = 1
},
/obj/effect/decal/cleanable/xenoblood,
/obj/effect/decal/cleanable/blood/xeno,
/turf/open/indestructible/boss/air,
/area/ruin/unpowered/xenonest)
"be" = (
@@ -381,7 +381,7 @@
/obj/structure/stone_tile{
dir = 1
},
/obj/effect/decal/cleanable/xenoblood,
/obj/effect/decal/cleanable/blood/xeno,
/turf/open/indestructible/boss/air,
/area/ruin/unpowered/xenonest)
"bs" = (
@@ -439,7 +439,7 @@
/obj/structure/stone_tile{
dir = 8
},
/obj/effect/decal/cleanable/xenoblood,
/obj/effect/decal/cleanable/blood/xeno,
/turf/open/indestructible/boss/air,
/area/ruin/unpowered/xenonest)
"by" = (
@@ -279,6 +279,7 @@
},
/turf/open/floor/plasteel/freezer,
/area/ruin/powered/seedvault)
(1,1,1) = {"
a
a
@@ -1288,7 +1288,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/derelictoutpost/cargobay)
"cV" = (
/obj/effect/decal/cleanable/xenoblood/xsplatter,
/obj/effect/decal/cleanable/blood/splatter/xeno,
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/derelictoutpost/cargobay)
"cW" = (
@@ -1525,7 +1525,7 @@
/turf/open/floor/plasteel,
/area/ruin/space/has_grav/derelictoutpost/cargobay)
"dq" = (
/obj/effect/decal/cleanable/xenoblood/xsplatter,
/obj/effect/decal/cleanable/blood/splatter/xeno,
/obj/structure/alien/weeds{
color = "#4BAE56";
desc = "A thick gelatinous surface covers the floor. Someone get the golashes.";
+1 -1
View File
@@ -3830,7 +3830,7 @@
/turf/open/floor/engine/cult,
/area/awaymission/academy/academycellar)
"kY" = (
/obj/effect/decal/cleanable/xenoblood,
/obj/effect/decal/cleanable/blood/xeno,
/turf/open/floor/engine/cult,
/area/awaymission/academy/academycellar)
"kZ" = (
+3 -3
View File
@@ -873,7 +873,7 @@
/obj/structure/window/reinforced{
dir = 4
},
/obj/effect/decal/cleanable/xenoblood,
/obj/effect/decal/cleanable/blood/xeno,
/turf/open/floor/plating{
initial_gas_mix = "n2=23;o2=14"
},
@@ -945,7 +945,7 @@
/area/awaymission/caves/research)
"cN" = (
/obj/machinery/door/window/eastleft,
/obj/effect/decal/cleanable/xenoblood/xgibs,
/obj/effect/decal/cleanable/blood/gibs/xeno,
/turf/open/floor/plating{
initial_gas_mix = "n2=23;o2=14"
},
@@ -1015,7 +1015,7 @@
},
/area/awaymission/caves/BMP_asteroid/level_two)
"cV" = (
/obj/effect/decal/cleanable/xenoblood/xgibs,
/obj/effect/decal/cleanable/blood/gibs/xeno,
/turf/open/floor/plating{
initial_gas_mix = "n2=23;o2=14"
},
+3 -3
View File
@@ -5597,8 +5597,8 @@
},
/area/awaymission/moonoutpost19/arrivals)
"kK" = (
/obj/effect/decal/cleanable/xenoblood,
/obj/effect/decal/cleanable/xenoblood/xgibs,
/obj/effect/decal/cleanable/blood/xeno,
/obj/effect/decal/cleanable/blood/gibs/xeno,
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
@@ -5608,7 +5608,7 @@
},
/area/awaymission/moonoutpost19/arrivals)
"kL" = (
/obj/effect/decal/cleanable/xenoblood,
/obj/effect/decal/cleanable/blood/xeno,
/obj/effect/decal/remains/xeno{
desc = "They look like the remains of something... alien. The front of skull appears to have been completely obliterated."
},
+6 -6
View File
@@ -34753,12 +34753,7 @@
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bCO" = (
/obj/structure/table,
/obj/item/storage/box/bodybags{
pixel_x = 3;
pixel_y = 3
},
/obj/item/storage/box/rxglasses,
/obj/machinery/bloodbankgen,
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bCP" = (
@@ -36538,6 +36533,11 @@
"bGR" = (
/obj/structure/table,
/obj/item/hand_labeler,
/obj/item/storage/box/rxglasses,
/obj/item/storage/box/bodybags{
pixel_x = 3;
pixel_y = 3
},
/obj/item/gun/syringe,
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
@@ -89232,7 +89232,7 @@
/area/maintenance/port)
"cTz" = (
/obj/effect/decal/remains/xeno,
/obj/effect/decal/cleanable/xenoblood,
/obj/effect/decal/cleanable/blood/xeno,
/turf/open/floor/circuit/green,
/area/science/xenobiology)
"cTA" = (
@@ -93013,10 +93013,10 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cZK" = (
/obj/item/twohanded/required/kirbyplants/random,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/machinery/bloodbankgen,
/turf/open/floor/plasteel/white,
/area/medical/medbay/central)
"cZL" = (
@@ -127842,8 +127842,7 @@
icon_state = "airlock_control_standby";
id = "chapelgun";
name = "Mass Driver Controller";
pixel_x = -24;
pixel_y = 0
pixel_x = -24
},
/turf/open/floor/plasteel/dark,
/area/chapel/office)
+1 -5
View File
@@ -56605,11 +56605,6 @@
/turf/open/floor/plasteel/dark,
/area/medical/sleeper)
"cfK" = (
/obj/structure/table,
/obj/item/paper_bin{
pixel_x = -2;
pixel_y = 4
},
/obj/machinery/light_switch{
pixel_x = 11;
pixel_y = 23
@@ -56624,6 +56619,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/bloodbankgen,
/turf/open/floor/plasteel/dark,
/area/medical/sleeper)
"cfL" = (
@@ -30073,10 +30073,8 @@
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone3)
"bbs" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21"
},
/obj/effect/turf_decal/tile/blue,
/obj/machinery/bloodbankgen,
/turf/open/floor/plasteel/white,
/area/medical/medbay/zone3)
"bbt" = (
@@ -43077,7 +43075,7 @@
/turf/open/floor/plasteel,
/area/engine/atmos)
"vsf" = (
/obj/effect/decal/cleanable/xenoblood/xgibs,
/obj/effect/decal/cleanable/blood/gibs/xeno,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
@@ -24138,8 +24138,7 @@
dir = 8
},
/obj/machinery/keycard_auth{
pixel_x = -23;
pixel_y = 0
pixel_x = -23
},
/turf/open/floor/plasteel,
/area/quartermaster/qm)
@@ -31872,14 +31871,11 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
pixel_y = 3
},
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/machinery/bloodbankgen,
/turf/open/floor/plasteel/white,
/area/medical/sleeper)
"bwG" = (
+7 -2
View File
@@ -9,6 +9,7 @@
/obj/machinery/door/airlock/titanium{
name = "Arrivals Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/arrival)
"d" = (
@@ -150,17 +151,21 @@
},
/turf/open/floor/plating/airless,
/area/shuttle/arrival)
"B" = (
/obj/machinery/porta_turret/centcom_shuttle,
/turf/closed/wall/mineral/titanium,
/area/shuttle/arrival)
"S" = (
/turf/open/floor/mineral/titanium,
/area/shuttle/arrival)
(1,1,1) = {"
a
b
B
o
d
d
b
B
a
"}
(2,1,1) = {"
+7 -2
View File
@@ -165,6 +165,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel/white,
/area/shuttle/arrival)
"o" = (
@@ -449,6 +450,10 @@
},
/turf/open/floor/plasteel,
/area/shuttle/arrival)
"T" = (
/obj/machinery/porta_turret/centcom_shuttle,
/turf/closed/wall/mineral/plastitanium,
/area/shuttle/arrival)
"U" = (
/obj/machinery/computer{
dir = 1;
@@ -480,7 +485,7 @@
(1,1,1) = {"
a
d
T
f
g
n
@@ -632,7 +637,7 @@ a
"}
(9,1,1) = {"
a
d
T
f
g
n
+1
View File
@@ -87,6 +87,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/arrival)
"k" = (
+7 -2
View File
@@ -9,6 +9,7 @@
/obj/machinery/door/airlock/titanium{
name = "Arrivals Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/arrival)
"d" = (
@@ -139,16 +140,20 @@
},
/turf/open/floor/plating/airless,
/area/shuttle/arrival)
"w" = (
/obj/machinery/porta_turret/centcom_shuttle,
/turf/closed/wall/mineral/titanium,
/area/shuttle/arrival)
"C" = (
/turf/open/floor/mineral/titanium,
/area/shuttle/arrival)
(1,1,1) = {"
a
b
w
m
m
b
w
a
"}
(2,1,1) = {"
+65 -52
View File
@@ -28,7 +28,7 @@
/turf/closed/wall,
/area/shuttle/escape)
"f" = (
/turf/open/floor/plating/airless,
/turf/open/floor/plating,
/area/shuttle/escape)
"g" = (
/obj/docking_port/mobile/emergency/shuttle_build{
@@ -39,32 +39,45 @@
preferred_direction = 2;
width = 30
},
/turf/open/floor/plating/airless,
/obj/machinery/door/airlock,
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"h" = (
/obj/machinery/computer/emergency_shuttle{
dir = 1
},
/turf/open/floor/plating,
/area/shuttle/escape)
"K" = (
/obj/machinery/door/airlock,
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
(1,1,1) = {"
a
c
e
f
f
f
f
f
f
f
f
e
e
e
e
e
e
K
e
g
f
f
f
f
f
f
f
f
f
f
e
e
e
e
e
K
e
K
e
e
e
e
a
@@ -128,7 +141,7 @@ f
f
f
f
f
e
a
a
a
@@ -192,8 +205,8 @@ f
f
e
e
f
f
e
e
e
e
"}
@@ -257,7 +270,7 @@ f
f
f
f
f
e
"}
(8,1,1) = {"
c
@@ -288,7 +301,7 @@ f
f
f
f
f
e
"}
(9,1,1) = {"
b
@@ -318,8 +331,8 @@ f
f
f
f
f
f
h
e
"}
(10,1,1) = {"
b
@@ -350,7 +363,7 @@ f
f
f
f
f
e
"}
(11,1,1) = {"
c
@@ -381,7 +394,7 @@ f
f
f
f
f
e
"}
(12,1,1) = {"
b
@@ -412,7 +425,7 @@ f
f
f
f
f
e
"}
(13,1,1) = {"
b
@@ -471,8 +484,8 @@ f
f
e
e
f
f
e
e
e
e
"}
@@ -531,7 +544,7 @@ f
f
f
f
f
e
a
a
a
@@ -573,25 +586,25 @@ a
a
c
e
f
f
f
f
f
f
f
f
f
f
f
f
f
f
f
f
f
f
f
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
a
+15 -13
View File
@@ -2,6 +2,13 @@
"aa" = (
/turf/template_noop,
/area/template_noop)
"ab" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"ac" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
@@ -16,17 +23,7 @@
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"ah" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating,
/area/shuttle/escape)
"ai" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"aj" = (
"af" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
@@ -37,8 +34,13 @@
name = "Asteroid emergency shuttle";
width = 28
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"ah" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating,
/area/shuttle/escape)
"al" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock";
@@ -618,7 +620,7 @@ aa
aa
"}
(12,1,1) = {"
ai
ab
at
at
at
@@ -708,7 +710,7 @@ aa
aa
"}
(18,1,1) = {"
aj
af
at
at
at
+3 -2
View File
@@ -5,9 +5,10 @@
},
/turf/open/floor/mineral/titanium,
/area/shuttle/escape/backup)
"c" = (
"b" = (
/obj/machinery/door/airlock/titanium,
/obj/docking_port/mobile/emergency/backup,
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape/backup)
"f" = (
@@ -55,7 +56,7 @@
(1,1,1) = {"
m
m
c
b
m
m
m
+232 -196
View File
@@ -10,15 +10,8 @@
/turf/open/floor/plating,
/area/shuttle/escape)
"ad" = (
/obj/structure/table,
/obj/machinery/chem_dispenser/drinks/beer{
dir = 8
},
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/obj/effect/spawner/structure/window/shuttle,
/turf/open/space/basic,
/area/shuttle/escape)
"ae" = (
/turf/closed/wall/mineral/titanium/nodiagonal,
@@ -45,19 +38,10 @@
pixel_x = -4;
pixel_y = 6
},
/obj/item/reagent_containers/food/drinks/bottle/whiskey,
/obj/item/storage/box/drinkingglasses,
/turf/open/floor/carpet,
/area/shuttle/escape)
"aj" = (
/obj/structure/table,
/obj/machinery/chem_dispenser/drinks{
dir = 8
},
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"ak" = (
/obj/structure/extinguisher_cabinet{
pixel_y = 30
@@ -88,12 +72,6 @@
},
/turf/open/floor/carpet,
/area/shuttle/escape)
"ap" = (
/obj/machinery/computer/security{
dir = 8
},
/turf/open/floor/carpet,
/area/shuttle/escape)
"aq" = (
/obj/machinery/computer/crew{
dir = 4
@@ -122,17 +100,53 @@
pixel_x = 6;
pixel_y = -24
},
/obj/structure/table/wood/poker,
/obj/item/storage/box/drinkingglasses,
/obj/item/reagent_containers/food/drinks/bottle/whiskey,
/obj/machinery/light,
/turf/open/floor/carpet,
/area/shuttle/escape)
"au" = (
/obj/machinery/computer/communications{
dir = 8
/obj/structure/table,
/obj/item/storage/backpack/duffelbag/med/surgery,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"av" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/turf/open/floor/carpet,
/obj/structure/fans/tiny,
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"aw" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
name = "The Emergency Escape Bar"
},
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel,
/area/shuttle/escape)
"ax" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel,
/area/shuttle/escape)
"ay" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"az" = (
/obj/machinery/door/airlock/public/glass{
@@ -145,6 +159,12 @@
/obj/machinery/status_display/evac,
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"aB" = (
/obj/machinery/computer/security{
dir = 8
},
/turf/open/floor/carpet,
/area/shuttle/escape)
"aC" = (
/obj/structure/chair/comfy/shuttle,
/turf/open/floor/mineral/plastitanium/red/brig,
@@ -183,10 +203,10 @@
/turf/open/floor/plasteel/grimy,
/area/shuttle/escape)
"aG" = (
/obj/structure/chair/stool{
can_buckle = 1
/obj/machinery/computer/communications{
dir = 8
},
/turf/open/floor/plasteel/grimy,
/turf/open/floor/carpet,
/area/shuttle/escape)
"aH" = (
/obj/machinery/flasher{
@@ -220,11 +240,10 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aK" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
/obj/structure/chair/stool{
can_buckle = 1
},
/turf/open/floor/mineral/plastitanium/red/brig,
/turf/open/floor/plasteel/grimy,
/area/shuttle/escape)
"aL" = (
/obj/structure/extinguisher_cabinet{
@@ -267,6 +286,12 @@
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aQ" = (
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/plasteel/grimy,
/area/shuttle/escape)
"aR" = (
/obj/structure/table/wood/bar{
boot_dir = 8
@@ -278,6 +303,15 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aS" = (
/obj/structure/table/wood/bar,
/obj/item/instrument/guitar,
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aT" = (
/obj/structure/extinguisher_cabinet{
pixel_x = 27
},
@@ -290,19 +324,6 @@
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aT" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
name = "The Emergency Escape Bar"
},
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aU" = (
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
@@ -311,6 +332,17 @@
/mob/living/simple_animal/hostile/alien/maid/barmaid,
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aV" = (
/obj/structure/table,
/obj/machinery/chem_dispenser/drinks/beer{
dir = 8
},
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"aW" = (
/obj/structure/chair/wood/normal,
/turf/open/floor/plasteel/grimy,
@@ -341,6 +373,17 @@
/obj/effect/spawner/lootdrop/gambling,
/turf/open/floor/plasteel/grimy,
/area/shuttle/escape)
"bb" = (
/obj/structure/table,
/obj/machinery/chem_dispenser/drinks{
dir = 8
},
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bc" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
@@ -369,10 +412,29 @@
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bg" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
"bf" = (
/obj/structure/table,
/obj/item/storage/box/drinkingglasses,
/obj/item/reagent_containers/food/drinks/shaker,
/obj/item/storage/fancy/cigarettes/cigars/havana,
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bg" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bh" = (
/obj/machinery/vending/cigarette,
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
@@ -382,13 +444,24 @@
"bi" = (
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"bj" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"bk" = (
/obj/machinery/vending/cigarette,
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
/obj/machinery/sleeper{
dir = 8
},
/turf/open/floor/plasteel,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"bl" = (
/obj/machinery/sleeper{
dir = 8
},
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"bm" = (
/obj/machinery/door/airlock{
@@ -402,10 +475,13 @@
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"bo" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
/obj/structure/table,
/obj/item/storage/firstaid/fire,
/obj/item/storage/firstaid/brute{
pixel_x = 4;
pixel_y = 4
},
/turf/open/floor/plasteel/freezer,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"bp" = (
/turf/open/floor/plasteel/freezer,
@@ -417,10 +493,8 @@
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"br" = (
/obj/machinery/sleeper{
dir = 8
},
/turf/open/floor/mineral/titanium,
/obj/machinery/computer/card,
/turf/open/floor/carpet,
/area/shuttle/escape)
"bs" = (
/obj/machinery/door/airlock{
@@ -442,7 +516,6 @@
/area/shuttle/escape)
"bw" = (
/obj/structure/table/optable,
/obj/item/surgical_drapes,
/obj/machinery/light/small{
brightness = 3;
dir = 8
@@ -465,15 +538,12 @@
},
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"bz" = (
/obj/structure/table,
/obj/item/circular_saw,
/obj/item/hemostat,
/obj/item/retractor,
/obj/item/scalpel,
/obj/item/surgicaldrill,
/obj/item/cautery,
/turf/open/floor/mineral/titanium,
"bA" = (
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/obj/effect/turf_decal/tile/bar,
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bC" = (
/obj/structure/window/reinforced{
@@ -486,10 +556,6 @@
/obj/structure/shuttle/engine/propulsion,
/turf/open/floor/plating/airless,
/area/shuttle/escape)
"bF" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"bG" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-21";
@@ -505,15 +571,6 @@
"bH" = (
/turf/open/floor/plasteel/grimy,
/area/shuttle/escape)
"bI" = (
/obj/structure/table/wood/bar,
/obj/item/instrument/guitar,
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bJ" = (
/obj/structure/table/wood/bar,
/obj/item/storage/fancy/donut_box,
@@ -535,17 +592,6 @@
},
/turf/open/floor/plasteel/grimy,
/area/shuttle/escape)
"bN" = (
/obj/structure/table,
/obj/item/storage/box/drinkingglasses,
/obj/item/reagent_containers/food/drinks/shaker,
/obj/item/storage/fancy/cigarettes/cigars/havana,
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bO" = (
/obj/structure/table/wood/bar,
/obj/item/folder/red,
@@ -584,25 +630,6 @@
},
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"bT" = (
/obj/item/twohanded/required/kirbyplants{
icon_state = "plant-10"
},
/obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{
dir = 1
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bU" = (
/obj/structure/table,
/obj/item/storage/firstaid/fire,
/obj/item/storage/firstaid/brute{
pixel_x = 4;
pixel_y = 4
},
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"bV" = (
/obj/structure/table/wood/bar{
boot_dir = 8
@@ -616,12 +643,6 @@
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bW" = (
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/plasteel/grimy,
/area/shuttle/escape)
"bX" = (
/obj/machinery/light{
dir = 8
@@ -658,15 +679,6 @@
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"cb" = (
/obj/machinery/sleeper{
dir = 8
},
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
(1,1,1) = {"
aa
@@ -676,17 +688,17 @@ aa
ab
ab
ab
aK
av
ab
aT
aw
ab
ac
ac
ac
ab
bg
ax
ab
bo
ay
ab
ab
ab
@@ -703,11 +715,11 @@ aH
aL
ab
bY
bH
aZ
bc
aZ
bH
bA
bA
bA
bA
bA
bZ
ab
bp
@@ -727,11 +739,11 @@ aI
aM
ab
aE
aW
ba
bL
bO
bQ
bH
aZ
bc
aZ
bH
bR
ab
bp
@@ -752,9 +764,9 @@ aM
ab
aE
aW
bJ
bM
bP
ba
bL
bO
bQ
aE
ab
@@ -775,11 +787,11 @@ aJ
ac
ae
aE
bH
bK
bH
bK
bH
aW
bJ
bM
bP
bQ
aE
aA
bp
@@ -799,11 +811,11 @@ aE
aE
bX
aE
aE
aE
aE
aE
aE
bH
bK
bH
bK
bH
aE
bm
bp
@@ -814,10 +826,34 @@ bE
"}
(7,1,1) = {"
ac
ag
br
an
an
az
bA
bA
bA
bA
bA
bA
bA
bA
bA
bA
bA
ae
ae
ab
ab
bC
bE
"}
(8,1,1) = {"
ad
ag
an
an
ab
aE
aE
aN
@@ -830,13 +866,13 @@ aN
aE
ca
ae
ab
ab
ab
bw
bi
au
bC
bE
"}
(8,1,1) = {"
(9,1,1) = {"
ac
ai
ao
@@ -855,16 +891,16 @@ aN
aE
bn
bi
bw
bz
bi
bi
bC
bE
"}
(9,1,1) = {"
(10,1,1) = {"
ab
ae
ap
au
aB
aG
ab
aF
bH
@@ -884,32 +920,32 @@ bS
bC
bE
"}
(10,1,1) = {"
aa
ab
ab
ab
ab
aG
bW
bI
aS
ad
aY
aj
bN
be
bT
bk
bF
br
cb
bU
ab
ab
"}
(11,1,1) = {"
aa
ab
ab
ab
ab
aK
aQ
aS
aT
aV
aY
bb
bf
be
bg
bh
bj
bk
bl
bo
ab
ab
"}
(12,1,1) = {"
aa
aa
aa
aa
+7 -1
View File
@@ -112,6 +112,11 @@
/obj/machinery/light,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"w" = (
/obj/machinery/door/airlock/titanium,
/obj/structure/fans/tiny,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"x" = (
/obj/structure/table,
/obj/machinery/recharger{
@@ -197,6 +202,7 @@
width = 14;
name = "Birdboat emergency escape shuttle"
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"L" = (
@@ -574,7 +580,7 @@ p
u
b
b
G
w
K
b
b
+40 -28
View File
@@ -2,6 +2,14 @@
"aa" = (
/turf/template_noop,
/area/template_noop)
"ab" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"ac" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating,
@@ -37,6 +45,23 @@
/obj/item/storage/firstaid/fire,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aj" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
name = "Box emergency shuttle"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"ak" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"al" = (
/obj/machinery/computer/atmos_alert{
dir = 4
@@ -171,13 +196,6 @@
},
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"aI" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"aJ" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
@@ -192,15 +210,6 @@
/obj/structure/table,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aP" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
name = "Box emergency shuttle"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"aQ" = (
/obj/structure/extinguisher_cabinet{
pixel_x = -5;
@@ -235,12 +244,6 @@
},
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aV" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"aW" = (
/obj/structure/extinguisher_cabinet{
pixel_y = -30
@@ -362,10 +365,19 @@
"ga" = (
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"gJ" = (
/obj/structure/table/optable,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"XC" = (
/obj/structure/closet/emcloset,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"ZQ" = (
/obj/item/storage/backpack/duffelbag/med/surgery,
/obj/structure/table,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
(1,1,1) = {"
aa
@@ -375,17 +387,17 @@ aa
ad
ad
ad
aI
ab
ad
aP
aj
ad
ac
ac
ac
ad
aV
ak
ad
aV
ak
ad
ad
ad
@@ -531,7 +543,7 @@ aC
ac
XC
bs
XC
gJ
bi
bk
"}
@@ -555,7 +567,7 @@ aC
aZ
ga
ga
ga
ZQ
bi
bk
"}
+41 -49
View File
@@ -507,6 +507,35 @@
/obj/item/book/manual/wiki/security_space_law,
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"aW" = (
/obj/machinery/door/airlock/shuttle{
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aX" = (
/obj/machinery/door/airlock/shuttle{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
dheight = 0;
dwidth = 15;
height = 20;
name = "Cere emergency shuttle";
width = 42
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aY" = (
/obj/machinery/door/airlock/shuttle{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aZ" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -639,13 +668,6 @@
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bv" = (
/obj/machinery/door/airlock/shuttle{
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"bw" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
@@ -696,19 +718,6 @@
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bE" = (
/obj/machinery/door/airlock/shuttle{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
dheight = 0;
dwidth = 15;
height = 20;
name = "Cere emergency shuttle";
width = 42
},
/turf/open/floor/plating,
/area/shuttle/escape)
"bF" = (
/obj/structure/closet/crate/bin,
/obj/effect/turf_decal/tile/neutral{
@@ -936,12 +945,6 @@
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bY" = (
/obj/machinery/door/airlock/shuttle{
name = "Emergency Shuttle Airlock"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"bZ" = (
/obj/structure/extinguisher_cabinet{
pixel_x = -28
@@ -1291,26 +1294,17 @@
/obj/structure/window/reinforced{
dir = 4
},
/obj/item/circular_saw,
/obj/item/scalpel{
pixel_y = 12
},
/obj/item/hemostat,
/obj/item/surgicaldrill,
/obj/item/cautery{
pixel_x = 4
},
/obj/item/retractor,
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/effect/turf_decal/tile/blue,
/obj/item/storage/backpack/duffelbag/med/surgery,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/effect/turf_decal/tile/blue,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"cG" = (
@@ -1361,15 +1355,13 @@
/obj/item/clothing/suit/apron/surgical,
/obj/item/clothing/gloves/color/latex,
/obj/item/clothing/mask/surgical,
/obj/item/surgical_drapes,
/obj/item/razor,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 1
},
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
@@ -1762,17 +1754,17 @@ ab
ab
ab
ab
bv
aW
ab
bE
aX
ab
aa
aa
aa
ab
bY
aY
ab
bY
aY
ab
aa
aa
+28 -19
View File
@@ -117,6 +117,23 @@
},
/turf/open/floor/mineral/bananium,
/area/shuttle/escape)
"aw" = (
/obj/machinery/door/airlock/bananium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
name = "Snappop(tm)!"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"ax" = (
/obj/machinery/door/airlock/bananium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"ay" = (
/obj/structure/table,
/obj/item/storage/firstaid/fire,
@@ -137,6 +154,8 @@
/obj/machinery/door/airlock/bananium/glass{
name = "Emergency Shuttle Greentext"
},
/obj/structure/fans/tiny,
/obj/structure/barricade/wooden/crude,
/turf/open/floor/bluespace,
/area/shuttle/escape)
"aC" = (
@@ -170,15 +189,6 @@
/obj/item/toy/sword,
/turf/open/floor/mineral/bananium,
/area/shuttle/escape)
"aI" = (
/obj/machinery/door/airlock/bananium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
name = "Snappop(tm)!"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"aJ" = (
/obj/item/toy/snappop/phoenix,
/obj/machinery/light/small{
@@ -233,12 +243,6 @@
},
/turf/open/floor/mineral/bananium,
/area/shuttle/escape)
"aQ" = (
/obj/machinery/door/airlock/bananium{
name = "Emergency Shuttle Airlock"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"aR" = (
/obj/item/toy/snappop/phoenix,
/obj/machinery/light/small,
@@ -338,6 +342,11 @@
/obj/structure/shuttle/engine/propulsion,
/turf/open/floor/plating/airless,
/area/shuttle/escape)
"bL" = (
/obj/item/toy/snappop/phoenix,
/obj/item/pneumatic_cannon/pie/selfcharge,
/turf/open/floor/bluespace,
/area/shuttle/escape)
"Zf" = (
/obj/structure/closet/emcloset,
/obj/item/toy/sword,
@@ -354,15 +363,15 @@ ab
ab
ab
ab
aI
aw
ab
ac
ac
ac
ab
aQ
ax
ab
aQ
ax
ab
ab
ab
@@ -467,7 +476,7 @@ bg
(6,1,1) = {"
ac
ag
ak
bL
aq
ab
av
+3
View File
@@ -11,6 +11,7 @@
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"d" = (
@@ -64,6 +65,7 @@
name = "Secure Transport Vessel 5";
width = 14
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"l" = (
@@ -97,6 +99,7 @@
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"r" = (
+5 -15
View File
@@ -147,7 +147,6 @@
/area/shuttle/escape)
"al" = (
/obj/structure/table/optable,
/obj/item/surgical_drapes,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
@@ -157,18 +156,7 @@
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"am" = (
/obj/item/scalpel{
pixel_y = 12
},
/obj/item/circular_saw,
/obj/item/retractor{
pixel_x = 4
},
/obj/item/hemostat{
pixel_x = -4
},
/obj/item/clothing/gloves/color/latex,
/obj/item/clothing/mask/surgical,
/obj/item/storage/backpack/duffelbag/med/surgery,
/obj/structure/table/reinforced,
/obj/effect/turf_decal/tile/blue{
dir = 4
@@ -176,8 +164,6 @@
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/item/surgicaldrill,
/obj/item/cautery,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"an" = (
@@ -490,6 +476,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"aP" = (
@@ -562,6 +549,7 @@
preferred_direction = 2;
port_direction = 4
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aX" = (
@@ -796,6 +784,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"bw" = (
@@ -908,6 +897,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bM" = (
+23 -15
View File
@@ -83,6 +83,7 @@
/obj/machinery/door/airlock/gold{
req_access_txt = "19"
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/gold,
/area/shuttle/escape)
"q" = (
@@ -110,6 +111,7 @@
heat_proof = 1;
resistance_flags = 2
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/plasma,
/area/shuttle/escape)
"v" = (
@@ -118,6 +120,7 @@
/area/shuttle/escape)
"w" = (
/obj/machinery/door/airlock/gold,
/obj/structure/fans/tiny,
/turf/open/floor/wood,
/area/shuttle/escape)
"x" = (
@@ -220,6 +223,11 @@
"O" = (
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/shuttle/escape)
"P" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/obj/structure/fans/tiny,
/turf/open/floor/plasteel/elevatorshaft,
/area/shuttle/escape)
(1,1,1) = {"
a
@@ -262,7 +270,7 @@ r
r
r
q
c
P
x
C
I
@@ -274,7 +282,7 @@ b
b
h
m
c
P
r
r
r
@@ -286,7 +294,7 @@ r
r
r
r
c
P
x
D
D
@@ -298,7 +306,7 @@ c
d
i
i
c
P
r
r
r
@@ -310,7 +318,7 @@ j
r
r
r
c
P
x
x
x
@@ -322,7 +330,7 @@ c
e
j
j
c
P
r
r
s
@@ -334,7 +342,7 @@ j
s
r
r
c
P
y
E
y
@@ -346,7 +354,7 @@ c
f
j
n
c
P
r
j
j
@@ -358,7 +366,7 @@ t
j
j
r
c
P
z
F
J
@@ -382,7 +390,7 @@ j
s
r
r
c
P
y
G
y
@@ -394,7 +402,7 @@ c
g
k
k
c
P
r
r
r
@@ -406,7 +414,7 @@ j
r
r
r
c
P
x
x
x
@@ -418,7 +426,7 @@ b
b
l
o
c
P
r
r
r
@@ -430,7 +438,7 @@ r
r
r
r
c
P
A
x
K
@@ -454,7 +462,7 @@ r
r
r
q
c
P
B
H
L
+12 -11
View File
@@ -28,6 +28,7 @@
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"h" = (
@@ -41,6 +42,7 @@
name = "NES Port";
width = 19
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"l" = (
@@ -67,9 +69,7 @@
/turf/open/floor/plating,
/area/shuttle/escape)
"q" = (
/obj/machinery/sleeper{
dir = 4
},
/obj/machinery/sleeper,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"r" = (
@@ -93,11 +93,6 @@
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"v" = (
/obj/structure/table,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"w" = (
/obj/machinery/door/airlock/public/glass{
name = "Emergency Shuttle Infirmary"
@@ -186,12 +181,18 @@
/obj/structure/window/reinforced,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"P" = (
/obj/structure/table/optable,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"Q" = (
/obj/machinery/light,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"R" = (
/obj/machinery/light/small,
/obj/structure/table,
/obj/item/storage/backpack/duffelbag/med/surgery,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"S" = (
@@ -272,8 +273,8 @@ X
c
d
q
v
q
n
P
d
H
H
@@ -284,7 +285,7 @@ Y
(4,1,1) = {"
d
l
n
q
n
R
d
+630
View File
@@ -0,0 +1,630 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/turf/template_noop,
/area/template_noop)
"ab" = (
/turf/closed/wall/rust,
/area/shuttle/escape)
"ac" = (
/obj/effect/spawner/structure/window/plasma/reinforced,
/turf/open/floor/plasteel/elevatorshaft,
/area/shuttle/escape)
"ad" = (
/turf/closed/wall,
/area/shuttle/escape)
"ae" = (
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"af" = (
/obj/machinery/computer/emergency_shuttle,
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"ag" = (
/obj/effect/decal/cleanable/cobweb/cobweb2,
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"ah" = (
/obj/machinery/computer/atmos_alert{
dir = 4
},
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"ai" = (
/obj/structure/chair/office/dark,
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"aj" = (
/obj/structure/chair/comfy/brown{
dir = 1
},
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"ak" = (
/obj/item/chair,
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"al" = (
/obj/machinery/computer/security{
dir = 8
},
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"am" = (
/obj/machinery/computer/crew{
dir = 4
},
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"an" = (
/obj/machinery/light,
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"ao" = (
/obj/machinery/computer/communications{
dir = 8
},
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"ap" = (
/obj/machinery/status_display/evac,
/turf/closed/wall/rust,
/area/shuttle/escape)
"aq" = (
/obj/machinery/door/airlock/gold{
req_access_txt = "19"
},
/turf/open/floor/holofloor/wood,
/area/shuttle/escape)
"ar" = (
/obj/structure/urinal{
pixel_y = 31
},
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"as" = (
/obj/structure/chair/comfy/shuttle,
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"at" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/shuttle/escape)
"au" = (
/obj/machinery/deepfryer,
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"av" = (
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"aw" = (
/obj/structure/closet/crate/freezer/blood,
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"ax" = (
/turf/open/floor/plating,
/area/shuttle/escape)
"ay" = (
/obj/machinery/flasher{
id = "shuttle_flasher";
pixel_x = -24;
pixel_y = 6
},
/obj/machinery/button/flasher{
id = "shuttle_flasher";
pixel_x = -24;
pixel_y = -6
},
/obj/machinery/light/small{
brightness = 3;
dir = 8
},
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"az" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"aA" = (
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"aB" = (
/obj/machinery/door/airlock/security/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/escape)
"aC" = (
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"aD" = (
/obj/structure/closet,
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"aE" = (
/obj/machinery/door/airlock/security/glass{
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aF" = (
/obj/structure/chair/comfy/shuttle{
dir = 1
},
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"aG" = (
/obj/effect/decal/cleanable/blood/splatter,
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"aH" = (
/obj/structure/noticeboard,
/turf/closed/wall/rust,
/area/shuttle/escape)
"aI" = (
/obj/docking_port/mobile/emergency{
height = 15;
name = "Gorilla Emergency Shuttle"
},
/obj/machinery/door/airlock/security/glass{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aJ" = (
/obj/structure/extinguisher_cabinet{
pixel_x = -5;
pixel_y = 30
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/shuttle/escape)
"aK" = (
/obj/structure/closet/crate/trashcart,
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"aL" = (
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"aM" = (
/obj/structure/reagent_dispensers/keg/mead,
/turf/open/floor/plating,
/area/shuttle/escape)
"aN" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/shuttle/escape)
"aO" = (
/obj/effect/decal/cleanable/glass,
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"aP" = (
/obj/structure/fluff/broken_flooring,
/turf/open/floor/plating,
/area/shuttle/escape)
"aQ" = (
/obj/structure/closet/crate/freezer,
/turf/open/floor/plating,
/area/shuttle/escape)
"aR" = (
/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"aS" = (
/obj/effect/decal/cleanable/vomit/old,
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"aT" = (
/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"aU" = (
/obj/machinery/door/airlock/security/glass{
name = "Emergency Shuttle Airlock"
},
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"aV" = (
/obj/effect/decal/cleanable/blood/innards,
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"aW" = (
/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/open/floor/plating,
/area/shuttle/escape)
"aX" = (
/obj/structure/closet/crate/freezer/surplus_limbs,
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"aY" = (
/obj/effect/decal/cleanable/oil,
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"aZ" = (
/obj/structure/closet/crate/freezer,
/turf/open/floor/plasteel/freezer,
/area/shuttle/escape)
"ba" = (
/obj/structure/chair/comfy/shuttle{
dir = 4
},
/obj/machinery/light/small{
brightness = 3;
dir = 8
},
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"bb" = (
/obj/machinery/door/airlock/security/glass{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"bc" = (
/obj/structure/extinguisher_cabinet{
pixel_y = -30
},
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"bd" = (
/obj/structure/closet/toolcloset,
/turf/open/floor/plating,
/area/shuttle/escape)
"be" = (
/obj/machinery/light/small{
dir = 1
},
/obj/structure/chair/sofa/right,
/turf/open/floor/plating,
/area/shuttle/escape)
"bf" = (
/obj/structure/chair/sofa,
/mob/living/simple_animal/hostile/gorilla,
/turf/open/floor/plating,
/area/shuttle/escape)
"bg" = (
/obj/structure/chair/sofa,
/turf/open/floor/plating,
/area/shuttle/escape)
"bh" = (
/obj/structure/chair/sofa,
/mob/living/simple_animal/hostile/gorilla,
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"bi" = (
/obj/structure/chair/sofa/left,
/mob/living/simple_animal/hostile/gorilla,
/turf/open/floor/plating,
/area/shuttle/escape)
"bj" = (
/obj/effect/decal/cleanable/glass,
/turf/open/floor/plating,
/area/shuttle/escape)
"bk" = (
/obj/machinery/door/airlock/security/glass{
name = "Emergency Shuttle Brig";
req_access_txt = "2"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"bl" = (
/mob/living/simple_animal/hostile/gorilla,
/turf/open/floor/plating,
/area/shuttle/escape)
"bm" = (
/obj/effect/decal/cleanable/blood/gibs/limb,
/mob/living/simple_animal/hostile/gorilla,
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"bn" = (
/obj/structure/reagent_dispensers/keg/semen,
/turf/open/floor/plating,
/area/shuttle/escape)
"bo" = (
/obj/structure/closet/crate/freezer/surplus_limbs,
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"bp" = (
/obj/structure/closet/crate/freezer/surplus_limbs,
/turf/open/floor/plating,
/area/shuttle/escape)
"bq" = (
/mob/living/simple_animal/hostile/gorilla,
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"br" = (
/obj/effect/decal/cleanable/blood/old,
/turf/open/floor/plasteel/shuttle,
/area/shuttle/escape)
"bs" = (
/obj/structure/shuttle/engine/heater,
/obj/structure/window/plasma/reinforced{
dir = 1
},
/turf/open/floor/plating/airless,
/area/shuttle/escape)
"bt" = (
/turf/template_noop,
/area/space)
"bu" = (
/obj/structure/shuttle/engine/propulsion,
/turf/open/floor/plating/airless,
/area/shuttle/escape)
(1,1,1) = {"
aa
aa
aa
aa
ab
ab
ab
aE
ab
aI
ab
at
at
at
ab
bb
ab
bb
ab
ad
ad
bt
"}
(2,1,1) = {"
aa
ad
ab
ad
ab
ar
ay
aA
aH
ax
aN
aR
aW
aR
ba
av
ad
ax
ax
bo
ab
ab
"}
(3,1,1) = {"
ab
ab
ah
am
ap
as
az
aF
ab
aJ
av
aS
av
ax
av
bc
ab
bd
bj
bp
bs
bu
"}
(4,1,1) = {"
ac
ae
ai
ae
ab
as
aA
aF
ad
aK
av
aP
av
av
ax
ab
ad
ab
bk
ab
bs
bu
"}
(5,1,1) = {"
ac
ae
ae
ak
ab
at
aB
at
ab
aL
av
aT
aT
aT
aT
ac
ac
be
aN
bl
bs
bu
"}
(6,1,1) = {"
ac
af
aj
an
ad
au
av
av
av
av
aO
ab
ab
ad
ab
ad
ad
bf
bl
bq
bs
bu
"}
(7,1,1) = {"
ac
ae
ae
ae
aq
av
ax
av
av
aM
aP
aU
aC
aX
aD
ad
ad
bg
bm
bn
bs
bu
"}
(8,1,1) = {"
ac
ag
ak
ae
ab
ab
ad
ad
ab
ad
ab
ab
aC
aY
aX
ad
ad
bh
aP
bq
bs
bu
"}
(9,1,1) = {"
ab
ad
al
ao
ab
aw
aC
ax
aG
aC
aD
aC
ax
aZ
ax
ac
ac
bg
bl
br
bs
bu
"}
(10,1,1) = {"
aa
ad
ab
ad
ab
ax
aD
aG
aD
aC
aQ
aV
aC
aX
aD
ad
ab
bi
bn
bl
ab
ab
"}
(11,1,1) = {"
aa
aa
aa
aa
ab
ab
ad
ab
ab
ad
ab
ad
ab
ad
ad
ab
ad
ab
ab
ad
ad
aa
"}
File diff suppressed because it is too large Load Diff
+28 -32
View File
@@ -2,6 +2,13 @@
"aa" = (
/turf/template_noop,
/area/template_noop)
"ab" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"ac" = (
/obj/effect/spawner/structure/window/shuttle,
/turf/open/floor/plating,
@@ -9,17 +16,7 @@
"ad" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"af" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"ag" = (
/obj/structure/sign/warning/nosmoking,
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"ah" = (
"ae" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
@@ -30,8 +27,21 @@
name = "Meta emergency shuttle";
width = 25
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"af" = (
/obj/machinery/door/airlock/external{
name = "Emergency Recovery Airlock"
},
/obj/effect/decal/cleanable/dirt,
/obj/structure/fans/tiny,
/turf/open/floor/plasteel,
/area/shuttle/escape)
"ag" = (
/obj/structure/sign/warning/nosmoking,
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"al" = (
/obj/structure/table,
/obj/item/phone{
@@ -513,7 +523,6 @@
/area/shuttle/escape)
"bz" = (
/obj/structure/table/optable,
/obj/item/surgical_drapes,
/obj/machinery/light{
dir = 8
},
@@ -576,25 +585,12 @@
/area/shuttle/escape)
"bH" = (
/obj/structure/table,
/obj/item/scalpel{
pixel_y = 12
},
/obj/item/circular_saw,
/obj/item/retractor{
pixel_x = 4
},
/obj/item/hemostat{
pixel_x = -4
},
/obj/item/clothing/gloves/color/latex,
/obj/item/clothing/mask/surgical,
/obj/item/storage/backpack/duffelbag/med/surgery,
/obj/item/radio/intercom{
dir = 2;
name = "Station Intercom (General)";
pixel_x = -27
},
/obj/item/surgicaldrill,
/obj/item/cautery,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"bI" = (
@@ -939,7 +935,7 @@ be
cc
be
be
bf
af
"}
(6,1,1) = {"
ac
@@ -955,7 +951,7 @@ bf
bT
be
be
bf
af
"}
(7,1,1) = {"
ac
@@ -1038,7 +1034,7 @@ bF
ac
"}
(12,1,1) = {"
af
ab
LY
LY
aE
@@ -1070,7 +1066,7 @@ ad
ad
"}
(14,1,1) = {"
af
ab
LY
LY
aE
@@ -1166,7 +1162,7 @@ bM
ad
"}
(20,1,1) = {"
ah
ae
LY
LY
aE
@@ -1198,7 +1194,7 @@ bO
ac
"}
(22,1,1) = {"
af
ab
LY
LY
LY
+16 -14
View File
@@ -113,6 +113,21 @@
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"v" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
dir = 8;
dwidth = 8;
height = 9;
name = "Mini emergency shuttle";
width = 21
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"x" = (
@@ -145,19 +160,6 @@
},
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"B" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
dir = 8;
dwidth = 8;
height = 9;
name = "Mini emergency shuttle";
width = 21
},
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"D" = (
/obj/structure/table,
/obj/item/storage/firstaid/fire,
@@ -453,7 +455,7 @@ b
n
b
b
B
v
b
b
b
+32 -30
View File
@@ -6,7 +6,8 @@
/turf/closed/wall/mineral/cult,
/area/shuttle/escape)
"c" = (
/obj/effect/forcefield/cult,
/obj/machinery/door/airlock/cult/friendly,
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"d" = (
@@ -125,6 +126,10 @@
/area/shuttle/escape)
"x" = (
/obj/machinery/door/airlock/cult/friendly,
/obj/docking_port/mobile/emergency{
name = "shuttle 667"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"y" = (
@@ -156,13 +161,6 @@
/obj/effect/decal/remains/human,
/turf/open/floor/plasteel/cult,
/area/shuttle/escape)
"E" = (
/obj/machinery/door/airlock/cult/friendly,
/obj/docking_port/mobile/emergency{
name = "shuttle 667"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"F" = (
/obj/effect/decal/cleanable/blood/gibs/down,
/turf/open/floor/plasteel/cult,
@@ -262,6 +260,10 @@
/obj/structure/shuttle/engine/propulsion,
/turf/open/floor/plating/airless,
/area/shuttle/escape)
"W" = (
/obj/effect/spawner/structure/window/plastitanium,
/turf/open/floor/plating,
/area/shuttle/escape)
(1,1,1) = {"
a
@@ -271,17 +273,17 @@ a
b
b
b
x
b
E
b
c
c
c
b
x
b
x
W
W
W
b
c
b
c
b
b
b
@@ -336,7 +338,7 @@ U
V
"}
(4,1,1) = {"
c
W
d
i
n
@@ -360,7 +362,7 @@ U
V
"}
(5,1,1) = {"
c
W
e
j
o
@@ -384,7 +386,7 @@ U
V
"}
(6,1,1) = {"
c
W
f
j
j
@@ -408,7 +410,7 @@ U
V
"}
(7,1,1) = {"
c
W
e
j
j
@@ -424,7 +426,7 @@ j
j
K
L
c
W
t
j
t
@@ -432,7 +434,7 @@ U
V
"}
(8,1,1) = {"
c
W
g
k
k
@@ -472,7 +474,7 @@ A
j
j
j
c
W
j
j
j
@@ -496,7 +498,7 @@ j
j
j
M
c
W
P
Q
P
@@ -509,21 +511,21 @@ a
a
a
b
c
W
b
c
W
b
b
b
c
c
c
W
W
W
b
b
b
c
W
b
c
W
b
a
"}
+11 -22
View File
@@ -185,6 +185,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"ar" = (
@@ -287,6 +288,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"az" = (
@@ -509,6 +511,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
/obj/structure/fans/tiny,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"aQ" = (
@@ -782,41 +785,27 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bn" = (
/obj/item/scalpel{
pixel_y = 12
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/item/circular_saw,
/obj/item/retractor{
pixel_x = 4
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/item/hemostat{
pixel_x = -4
},
/obj/item/clothing/gloves/color/latex,
/obj/item/clothing/mask/surgical,
/obj/structure/table/reinforced,
/obj/structure/extinguisher_cabinet{
pixel_x = -24
},
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/item/cautery,
/obj/item/surgicaldrill,
/obj/item/storage/backpack/duffelbag/med/surgery,
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"bo" = (
/obj/structure/table/optable,
/obj/item/surgical_drapes,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"bp" = (
+68 -58
View File
@@ -58,6 +58,29 @@
},
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"am" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"an" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
dir = 8;
dwidth = 27;
height = 8;
name = "PubbyStation emergency shuttle";
port_direction = 4;
preferred_direction = 1;
width = 46
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"ap" = (
/obj/structure/chair/comfy,
/obj/machinery/computer/security/telescreen/entertainment{
@@ -133,12 +156,6 @@
"ax" = (
/turf/open/floor/mineral/plastitanium/red/brig,
/area/shuttle/escape)
"ay" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"az" = (
/obj/structure/chair/comfy{
dir = 1
@@ -440,14 +457,12 @@
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"aZ" = (
/obj/structure/table/glass,
/obj/machinery/sleeper,
/obj/machinery/light{
dir = 1
},
/obj/item/storage/firstaid/regular,
/obj/structure/window/reinforced{
dir = 4;
layer = 2.9
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 4
@@ -487,13 +502,18 @@
/turf/open/floor/plasteel/cafeteria,
/area/shuttle/escape)
"be" = (
/obj/structure/chair/comfy/shuttle,
/obj/effect/turf_decal/tile/blue{
dir = 4
/obj/structure/table,
/obj/item/storage/firstaid,
/obj/item/storage/firstaid/fire{
pixel_x = -3;
pixel_y = 3
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"bf" = (
@@ -509,30 +529,12 @@
/turf/open/floor/plating,
/area/shuttle/escape)
"bh" = (
/obj/structure/window/reinforced,
/obj/structure/table/glass,
/obj/item/defibrillator/loaded,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"bi" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 4
},
/obj/structure/table/glass,
/obj/item/storage/firstaid/regular,
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"bj" = (
@@ -551,11 +553,8 @@
/turf/open/floor/plating,
/area/shuttle/escape)
"bn" = (
/obj/structure/closet/crate{
icon_state = "crateopen"
},
/obj/structure/reagent_dispensers/fueltank,
/obj/machinery/light,
/obj/item/storage/toolbox/mechanical,
/turf/open/floor/plating,
/area/shuttle/escape)
"bo" = (
@@ -675,21 +674,6 @@
},
/turf/open/floor/plating,
/area/shuttle/escape)
"bL" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
dir = 8;
dwidth = 27;
height = 8;
name = "PubbyStation emergency shuttle";
port_direction = 4;
preferred_direction = 1;
width = 46
},
/turf/open/floor/plating,
/area/shuttle/escape)
"bO" = (
/obj/machinery/door/airlock/public/glass{
name = "Cockpit";
@@ -710,6 +694,21 @@
},
/turf/open/floor/plating,
/area/shuttle/escape)
"sI" = (
/obj/structure/window/reinforced,
/obj/structure/window/reinforced{
dir = 4
},
/obj/item/storage/backpack/duffelbag/med/surgery,
/obj/structure/table,
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"xt" = (
/obj/structure/window/reinforced{
dir = 8;
@@ -717,6 +716,17 @@
},
/turf/open/floor/plating,
/area/shuttle/escape)
"Jw" = (
/obj/structure/window/reinforced,
/obj/structure/table/optable,
/obj/effect/turf_decal/tile/blue{
dir = 8
},
/obj/effect/turf_decal/tile/blue{
dir = 4
},
/turf/open/floor/plasteel/white,
/area/shuttle/escape)
"Uu" = (
/obj/structure/window/reinforced{
dir = 4
@@ -804,9 +814,9 @@ aX
bb
be
bh
Jw
bg
bl
bg
bg
ab
aa
bs
@@ -851,8 +861,8 @@ ab
aZ
bb
bb
bi
bl
bh
sI
bg
bn
ab
@@ -1071,17 +1081,17 @@ ab
ab
ab
ab
ay
am
ab
ay
am
ab
ab
aa
ab
ab
bL
an
ab
ay
am
ab
ac
ab
+23 -29
View File
@@ -149,9 +149,6 @@
/area/shuttle/escape)
"as" = (
/obj/structure/table/optable,
/obj/item/surgical_drapes,
/obj/item/clothing/gloves/color/latex,
/obj/item/clothing/mask/surgical,
/obj/effect/turf_decal/tile/purple{
dir = 1
},
@@ -228,18 +225,13 @@
/area/shuttle/escape)
"aB" = (
/obj/structure/table/reinforced,
/obj/item/scalpel,
/obj/item/circular_saw,
/obj/item/retractor,
/obj/item/hemostat,
/obj/item/storage/backpack/duffelbag/med/surgery,
/obj/effect/turf_decal/tile/purple{
dir = 1
},
/obj/effect/turf_decal/tile/purple{
dir = 8
},
/obj/item/surgicaldrill,
/obj/item/cautery,
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"aC" = (
@@ -427,6 +419,22 @@
"aW" = (
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/escape)
"aX" = (
/obj/machinery/door/airlock/hatch,
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aY" = (
/obj/docking_port/mobile/emergency{
dwidth = 14;
height = 18;
name = "CentCom Raven Battlecruiser";
width = 32
},
/obj/machinery/door/airlock/hatch,
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aZ" = (
/obj/effect/turf_decal/tile/green,
/obj/effect/turf_decal/tile/green{
@@ -761,16 +769,6 @@
},
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"bE" = (
/obj/docking_port/mobile/emergency{
dwidth = 14;
height = 18;
name = "CentCom Raven Battlecruiser";
width = 32
},
/obj/machinery/door/airlock/hatch,
/turf/open/floor/plating,
/area/shuttle/escape)
"bF" = (
/obj/effect/turf_decal/tile/green{
dir = 1
@@ -1331,10 +1329,6 @@
"eP" = (
/turf/closed/wall/mineral/plastitanium/nodiagonal,
/area/shuttle/escape)
"UQ" = (
/obj/machinery/door/airlock/hatch,
/turf/open/floor/plating,
/area/shuttle/escape)
(1,1,1) = {"
aa
@@ -1349,17 +1343,17 @@ bJ
cs
bJ
bJ
UQ
aX
cs
bE
aY
bJ
bJ
cs
ad
aa
UQ
aX
bJ
UQ
aX
cs
bJ
cs
@@ -1893,7 +1887,7 @@ bJ
bJ
bJ
cs
cs
en
ad
ad
ad
@@ -1909,7 +1903,7 @@ ab
bJ
bJ
cs
cs
en
ad
ad
ad
+148 -84
View File
@@ -235,6 +235,7 @@
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aP" = (
@@ -282,6 +283,7 @@
/obj/machinery/door/airlock/security/glass{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aX" = (
@@ -375,7 +377,9 @@
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/escape)
"bk" = (
/obj/structure/kitchenspike,
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/escape)
"bl" = (
@@ -420,6 +424,7 @@
/obj/machinery/door/airlock/security/glass{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"bs" = (
@@ -460,13 +465,10 @@
/turf/open/floor/plating,
/area/shuttle/escape)
"bz" = (
/obj/structure/extinguisher_cabinet{
pixel_x = 27
},
/turf/open/floor/plating,
/turf/open/floor/mineral/plastitanium,
/area/shuttle/escape)
"bA" = (
/obj/structure/closet/emcloset,
/obj/machinery/sleeper,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/shuttle/escape)
@@ -487,17 +489,12 @@
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bD" = (
/obj/machinery/sleeper{
dir = 8
},
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/obj/structure/closet/emcloset,
/turf/open/floor/mineral/plastitanium/red,
/area/shuttle/escape)
"bE" = (
/obj/machinery/sleeper{
dir = 4
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/sleeper,
/turf/open/floor/plasteel,
/area/shuttle/escape)
"bF" = (
@@ -567,13 +564,6 @@
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/escape)
"bP" = (
/obj/structure/kitchenspike,
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/mineral/plastitanium,
/area/shuttle/escape)
"bQ" = (
/obj/machinery/light,
/turf/open/floor/mineral/plastitanium/red,
@@ -584,6 +574,56 @@
},
/turf/open/floor/plating,
/area/shuttle/escape)
"bS" = (
/obj/structure/kitchenspike,
/turf/open/floor/plating,
/area/shuttle/escape)
"bT" = (
/obj/structure/extinguisher_cabinet{
pixel_x = 27
},
/obj/structure/kitchenspike,
/turf/open/floor/plating,
/area/shuttle/escape)
"bU" = (
/obj/machinery/vending/sovietsoda,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"ca" = (
/obj/structure/shuttle/engine/heater,
/obj/structure/window/reinforced{
dir = 1
},
/turf/open/floor/plating,
/area/shuttle/escape)
"cb" = (
/obj/structure/shuttle/engine/propulsion,
/turf/open/floor/plating,
/area/shuttle/escape)
"cd" = (
/obj/structure/closet/emcloset,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/shuttle/escape)
"ce" = (
/obj/structure/table/optable,
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/shuttle/escape)
"cf" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/table,
/obj/item/storage/backpack/duffelbag/med/surgery,
/turf/open/floor/plasteel,
/area/shuttle/escape)
"cg" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/light/small{
brightness = 3;
dir = 8
},
/turf/open/floor/plasteel,
/area/shuttle/escape)
(1,1,1) = {"
aa
@@ -712,7 +752,7 @@ aj
ao
ad
aw
ax
aR
ax
aR
ax
@@ -721,9 +761,9 @@ ax
aR
ax
bj
ax
aR
ab
by
bS
bx
bI
bK
@@ -736,6 +776,30 @@ ak
ak
at
ax
aR
ax
ax
ax
aR
aR
aR
aR
aR
ax
ab
bT
bx
bI
ca
cb
"}
(8,1,1) = {"
ac
ag
ak
ap
ab
ax
aJ
aJ
aJ
@@ -745,30 +809,6 @@ ax
bc
bc
bc
ax
ab
bz
bx
bI
bK
bL
"}
(8,1,1) = {"
ac
ag
ak
ap
ab
ay
ay
ay
aS
aY
bf
ax
ax
ax
ax
bQ
bv
ad
@@ -783,6 +823,30 @@ af
al
aq
au
ay
ay
ay
aS
aY
bf
ax
ax
ax
ax
ax
ad
bA
cg
ce
bK
bL
"}
(10,1,1) = {"
ac
bU
ak
aq
au
az
aK
aQ
@@ -792,16 +856,16 @@ ax
ax
bl
ax
ax
bD
ax
ad
bA
bE
bA
bB
bJ
bK
bL
"}
(10,1,1) = {"
(11,1,1) = {"
ac
ah
ak
@@ -821,16 +885,16 @@ ax
ac
bB
bB
bJ
cf
bK
bL
"}
(11,1,1) = {"
(12,1,1) = {"
ad
ab
am
ar
au
ac
aB
aA
aA
@@ -849,12 +913,12 @@ bB
bK
bL
"}
(12,1,1) = {"
(13,1,1) = {"
aa
ad
ab
ad
as
bv
aC
aK
bM
@@ -869,11 +933,11 @@ ax
ac
bB
bB
bD
bF
ad
ad
"}
(13,1,1) = {"
(14,1,1) = {"
aa
aa
aa
@@ -892,41 +956,41 @@ ax
ax
ad
bC
bF
cd
ad
ad
aa
"}
(14,1,1) = {"
aa
aa
aa
aa
ab
aE
aN
aN
aV
aD
bi
bk
bk
bk
bP
bt
ab
bD
ab
ad
aa
aa
"}
(15,1,1) = {"
aa
aa
aa
aa
ad
aE
aN
aN
aV
aD
bi
bz
bz
bz
bk
bt
ab
cd
ab
ad
aa
aa
"}
(16,1,1) = {"
aa
aa
aa
aa
aa
aD
aE
aE
+4
View File
@@ -106,6 +106,7 @@
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/obj/structure/fans/tiny,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"at" = (
@@ -174,6 +175,7 @@
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aD" = (
@@ -227,6 +229,7 @@
/obj/docking_port/mobile/emergency{
name = "Scrapheap Challenge"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aL" = (
@@ -309,6 +312,7 @@
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"ba" = (
+30 -27
View File
@@ -2,6 +2,13 @@
"aa" = (
/turf/template_noop,
/area/template_noop)
"ab" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"ac" = (
/obj/structure/sign/warning/radiation,
/turf/closed/wall/mineral/titanium,
@@ -13,6 +20,16 @@
"ae" = (
/turf/closed/wall/mineral/titanium,
/area/shuttle/escape)
"af" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
name = "Hyperfractal Gigashuttle"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"ag" = (
/obj/structure/closet/radiation{
anchored = 1
@@ -33,6 +50,14 @@
},
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"ak" = (
/obj/machinery/door/airlock/external{
name = "Emergency Launch Catwalk";
req_access_txt = "10;13"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"al" = (
/obj/machinery/shower{
dir = 8
@@ -101,12 +126,6 @@
"ax" = (
/turf/closed/wall/mineral/titanium/interior,
/area/shuttle/escape)
"aA" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"aB" = (
/obj/machinery/power/supermatter_crystal/shard/hugbox/fakecrystal,
/turf/open/floor/plating,
@@ -125,26 +144,10 @@
/obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/mineral/titanium/yellow,
/area/shuttle/escape)
"aF" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/docking_port/mobile/emergency{
name = "Hyperfractal Gigashuttle"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"aI" = (
/obj/structure/sign/warning/radiation,
/turf/closed/wall/mineral/titanium/nodiagonal,
/area/shuttle/escape)
"aL" = (
/obj/machinery/door/airlock/external{
name = "Emergency Launch Catwalk";
req_access_txt = "10;13"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"aM" = (
/turf/open/floor/plating/airless,
/area/shuttle/escape)
@@ -348,9 +351,9 @@ aa
aa
aa
aw
aA
ab
ac
aF
af
aw
aa
aa
@@ -472,7 +475,7 @@ aB
bf
at
at
aL
ak
aM
aM
hD
@@ -588,9 +591,9 @@ aa
aa
aa
aw
aA
ab
ac
aA
ab
aw
aa
aa
+17 -35
View File
@@ -116,7 +116,6 @@
id = "shuttleshutters";
name = "Bridge Blast Shutters";
pixel_x = -26;
pixel_y = 0;
req_access_txt = "19"
},
/obj/effect/turf_decal/tile/neutral{
@@ -199,8 +198,7 @@
/obj/item/radio/intercom{
dir = 4;
name = "Station Intercom (General)";
pixel_x = 27;
pixel_y = 0
pixel_x = 27
},
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
@@ -309,8 +307,7 @@
/obj/item/radio/intercom{
dir = 4;
name = "Station Intercom (General)";
pixel_x = -27;
pixel_y = 0
pixel_x = -27
},
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
@@ -408,7 +405,6 @@
id = "smindicate";
name = "external door control";
pixel_x = 26;
pixel_y = 0;
req_access_txt = "150"
},
/obj/structure/fans/tiny,
@@ -420,8 +416,7 @@
/obj/item/radio/intercom{
dir = 4;
name = "Station Intercom (General)";
pixel_x = 27;
pixel_y = 0
pixel_x = 27
},
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
@@ -878,6 +873,7 @@
/area/shuttle/escape)
"bz" = (
/obj/machinery/door/airlock/hatch,
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"bA" = (
@@ -991,6 +987,7 @@
/obj/docking_port/mobile/emergency{
name = "Syndicate Battlecruiser"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"bL" = (
@@ -1064,10 +1061,7 @@
/area/shuttle/escape)
"bR" = (
/obj/structure/table/reinforced,
/obj/item/storage/box/drinkingglasses{
pixel_x = 0;
pixel_y = 0
},
/obj/item/storage/box/drinkingglasses,
/obj/item/storage/box/drinkingglasses{
pixel_x = -3;
pixel_y = 3
@@ -1499,8 +1493,7 @@
/obj/item/radio/intercom{
dir = 4;
name = "Station Intercom (General)";
pixel_x = 27;
pixel_y = 0
pixel_x = 27
},
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
@@ -1606,8 +1599,7 @@
/obj/item/radio/intercom{
dir = 4;
name = "Station Intercom (General)";
pixel_x = 27;
pixel_y = 0
pixel_x = 27
},
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
@@ -1634,10 +1626,7 @@
pixel_x = 3;
pixel_y = -3
},
/obj/item/storage/toolbox/emergency{
pixel_x = 0;
pixel_y = 0
},
/obj/item/storage/toolbox/emergency,
/obj/item/storage/toolbox/syndicate{
pixel_x = -3;
pixel_y = 3
@@ -1717,38 +1706,31 @@
/obj/structure/window/reinforced{
dir = 8
},
/obj/item/retractor,
/obj/item/hemostat,
/obj/item/cautery,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/item/storage/backpack/duffelbag/med/surgery,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"cI" = (
/obj/structure/table/reinforced,
/obj/item/circular_saw,
/obj/item/surgicaldrill,
/obj/item/scalpel{
pixel_y = 15
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel/dark,
/area/shuttle/escape)
"cJ" = (
+52 -91
View File
@@ -119,12 +119,7 @@
/area/shuttle/escape)
"ar" = (
/obj/structure/table,
/obj/item/storage/firstaid/fire,
/obj/item/storage/firstaid/regular{
pixel_x = 2;
pixel_y = 3
},
/obj/item/crowbar,
/obj/item/storage/toolbox/mechanical,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"as" = (
@@ -166,6 +161,7 @@
name = "Emergency Shuttle Airlock";
req_access_txt = "2"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"ay" = (
@@ -206,22 +202,23 @@
/obj/docking_port/mobile/emergency{
name = "NT Lepton Violet"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aF" = (
/obj/machinery/door/window/eastleft,
/turf/open/floor/mineral/titanium,
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/obj/structure/fans/tiny,
/turf/open/floor/plating,
/area/shuttle/escape)
"aG" = (
/obj/machinery/sleeper{
dir = 8
},
/obj/structure/extinguisher_cabinet{
pixel_x = 27
},
/obj/structure/table/glass,
/obj/item/storage/box/syringes{
pixel_x = 3;
pixel_y = 3
},
/obj/item/storage/box/beakers,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"aH" = (
@@ -244,72 +241,36 @@
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aK" = (
/obj/machinery/sleeper{
dir = 4
/obj/structure/table,
/obj/item/storage/firstaid/regular{
pixel_x = 2;
pixel_y = 3
},
/obj/item/storage/firstaid/fire,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"aL" = (
/obj/structure/table/reinforced,
/turf/open/floor/mineral/titanium,
/obj/structure/table,
/obj/item/storage/backpack/duffelbag/med/surgery,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"aM" = (
/obj/machinery/chem_dispenser,
/obj/machinery/light/small{
/obj/structure/chair/comfy/shuttle{
dir = 4
},
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"aN" = (
/obj/structure/table,
/obj/item/storage/toolbox/mechanical,
/obj/item/storage/firstaid/regular{
pixel_x = -1;
pixel_y = 1
},
/obj/item/wrench/medical,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"aO" = (
/turf/open/floor/plating,
/area/shuttle/escape)
"aP" = (
/obj/structure/chair/office/light{
/obj/structure/window/reinforced{
dir = 8
},
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"aQ" = (
/obj/machinery/chem_heater,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"aR" = (
/obj/machinery/chem_master,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"aS" = (
/obj/machinery/door/window/eastright,
/turf/open/floor/mineral/titanium,
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"aT" = (
/obj/structure/table/glass,
/obj/item/reagent_containers/glass/bottle/epinephrine{
pixel_x = 2;
pixel_y = 2
},
/obj/item/reagent_containers/glass/bottle/charcoal,
/obj/structure/table/optable,
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"aU" = (
/obj/machinery/door/airlock/public/glass,
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"aV" = (
/obj/machinery/door/airlock/titanium{
name = "Emergency Shuttle Airlock"
},
/turf/open/floor/plating,
/area/shuttle/escape)
"aW" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -517,21 +478,21 @@
},
/turf/open/floor/mineral/titanium,
/area/shuttle/escape)
"cF" = (
/obj/machinery/sleeper{
dir = 8
},
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"ji" = (
/obj/structure/chair/comfy/shuttle{
dir = 8
},
/turf/open/floor/mineral/titanium/blue,
/area/shuttle/escape)
"Ec" = (
/obj/structure/chair/comfy/shuttle{
dir = 8
},
/obj/structure/window/reinforced{
dir = 4
},
/turf/open/floor/mineral/titanium/white,
/area/shuttle/escape)
"MK" = (
/obj/structure/chair/comfy/shuttle,
/turf/open/floor/mineral/titanium/blue,
@@ -553,9 +514,9 @@ as
as
as
ab
aV
aF
ab
aV
aF
ab
ab
ab
@@ -644,9 +605,9 @@ ab
ab
ab
aq
aK
aN
aK
aM
aM
aM
aq
ab
ji
@@ -673,10 +634,10 @@ aq
aq
bn
aH
ab
ab
ab
ab
as
as
as
as
be
bf
bg
@@ -691,11 +652,11 @@ ao
au
az
ab
aF
Ec
aq
Ec
aS
aJ
aJ
aJ
aq
as
aI
aI
@@ -716,9 +677,9 @@ av
aA
ab
aq
aL
aO
aL
aM
aM
aM
aq
aU
aq
@@ -741,7 +702,7 @@ aq
aC
aq
aq
aP
aq
aq
aq
as
@@ -764,9 +725,9 @@ aw
aw
ab
aG
aM
aQ
aR
aK
cF
aL
aT
as
MK
+3
View File
@@ -11,6 +11,7 @@
/area/shuttle/transport)
"d" = (
/obj/machinery/door/airlock/external,
/obj/structure/fans/tiny,
/turf/open/floor/pod/dark,
/area/shuttle/transport)
"e" = (
@@ -74,6 +75,7 @@
preferred_direction = 4;
width = 5
},
/obj/structure/fans/tiny,
/turf/open/floor/pod/light,
/area/shuttle/transport)
"o" = (
@@ -98,6 +100,7 @@
/area/shuttle/transport)
"r" = (
/obj/machinery/door/airlock/external,
/obj/structure/fans/tiny,
/turf/open/floor/pod/light,
/area/shuttle/transport)
+3 -1
View File
@@ -6,7 +6,7 @@
#define ACCESS_MORGUE 6
#define ACCESS_TOX 7 //R&D department, R&D console, burn chamber on some maps
#define ACCESS_TOX_STORAGE 8 //Toxins storage, burn chamber on some maps
#define ACCESS_GENETICS 9
#define ACCESS_GENETICS 9
#define ACCESS_ENGINE 10 //Engineering area, power monitor, power flow control console
#define ACCESS_ENGINE_EQUIP 11 //APCs, EngiVend/YouTool, engineering equipment lockers
#define ACCESS_MAINT_TUNNELS 12
@@ -64,6 +64,8 @@
#define ACCESS_WEAPONS 66 //Weapon authorization for secbots
#define ACCESS_NETWORK 67 //NTnet diagnostics/monitoring software
#define ACCESS_CLONING 68 //Cloning room and clone pod ejection
#define ACCESS_ENTER_GENPOP 69
#define ACCESS_LEAVE_GENPOP 70
//BEGIN CENTCOM ACCESS
/*Should leave plenty of room if we need to add more access levels.
-6
View File
@@ -93,12 +93,6 @@
#define isgenital(A) (istype(A, /obj/item/organ/genital))
#define isborer(A) (istype(A, /mob/living/simple_animal/borer))
#define isipcperson(A) (is_species(A, /datum/species/ipc))
#define ismammal(A) (is_species(A, /datum/species/mammal))
#define isavian(A) (is_species(A, /datum/species/avian))
#define isaquatic(A) (is_species(A, /datum/species/aquatic))
#define isinsect(A) (is_species(A, /datum/species/insect))
#define isxenoperson(A) (is_species(A, /datum/species/xeno))
#define CITADEL_MENTOR_OOC_COLOUR "#224724"
-5
View File
@@ -5,8 +5,3 @@
#define CLEAN_STRONG 4 // Industrial strength
#define CLEAN_IMPRESSIVE 5 // Cleaning strong enough your granny would be proud
#define CLEAN_GOD 6 // Cleans things spotless down to the atomic structure
//How strong things have to be to wipe forensic evidence...
#define CLEAN_STRENGTH_FINGERPRINTS CLEAN_IMPRESSIVE
#define CLEAN_STRENGTH_BLOOD CLEAN_WEAK
#define CLEAN_STRENGTH_FIBERS CLEAN_IMPRESSIVE
+1
View File
@@ -8,6 +8,7 @@
GLOBAL_VAR_INIT(clockwork_construction_value, 0) //The total value of all structures built by the clockwork cult
GLOBAL_VAR_INIT(clockwork_vitality, 0) //How much Vitality is stored, total
GLOBAL_VAR_INIT(clockwork_power, 0) //How many watts of power are globally available to the clockwork cult
GLOBAL_VAR_INIT(neovgre_exists, 0) //Does neovgre exist?
GLOBAL_LIST_EMPTY(all_clockwork_objects) //All clockwork items, structures, and effects in existence
GLOBAL_LIST_EMPTY(all_clockwork_mobs) //All clockwork SERVANTS (not creatures) in existence
+3
View File
@@ -7,6 +7,7 @@
#define GET_COMPONENT(varname, path) GET_COMPONENT_FROM(varname, path, src)
#define COMPONENT_INCOMPATIBLE 1
#define COMPONENT_NOTRANSFER 2
// How multiple components of the exact same type are handled in the same datum
@@ -225,6 +226,8 @@
#define COMSIG_TURF_MAKE_DRY "make_turf_try" //(max_strength, immediate, duration_decrease = INFINITY): Returns bool.
#define COMSIG_COMPONENT_CLEAN_ACT "clean_act" //called on an object to clean it of cleanables. Usualy with soap: (num/strength)
//Blood color
#define COMSIG_BLOOD_COLOR "blood_DNA_to_color" //RGB blood stuff
//Food
#define COMSIG_FOOD_EATEN "food_eaten" //from base of obj/item/reagent_containers/food/snacks/attack(): (mob/living/eater, mob/feeder)
+9
View File
@@ -15,6 +15,15 @@
//misc footstep sounds
#define FOOTSTEP_GENERIC_HEAVY "heavy"
#define FOOTPRINT_SHOE "shoe"
#define FOOTPRINT_FOOT "foot"
#define FOOTPRINT_PAW "paw"
#define FOOTPRINT_CLAW "claw"
#define FOOTPRINT_WHEEL "wheels"
#define FOOTPRINT_TRAIL "trails_"
#define FOOTPRINT_SNAKE "snake"
#define FOOTPRINT_DRAG "drag"
/*
id = list(
-2
View File
@@ -1,2 +0,0 @@
#define IF_HAS_BLOOD_DNA(__thing) GET_COMPONENT_FROM(__FR##__thing, /datum/component/forensics, __thing); if(__FR##__thing && length(__FR##__thing.blood_DNA))
#define IF_HAS_BLOOD_DNA_AND(__thing, __conditions...) GET_COMPONENT_FROM(__FR##__thing, /datum/component/forensics, __thing); if(__FR##__thing && length(__FR##__thing.blood_DNA) && (##__conditions))
+11
View File
@@ -61,6 +61,15 @@
#define iscatperson(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/felinid) )
#define isdwarf(A) (is_species(A, /datum/species/dwarf))
// Citadel specific species
#define isipcperson(A) (is_species(A, /datum/species/ipc))
#define ismammal(A) (is_species(A, /datum/species/mammal))
#define isavian(A) (is_species(A, /datum/species/avian))
#define isaquatic(A) (is_species(A, /datum/species/aquatic))
#define isinsect(A) (is_species(A, /datum/species/insect))
#define isxenoperson(A) (is_species(A, /datum/species/xeno))
#define isstartjelly(A) (is_species(A, /datum/species/jelly/roundstartslime))
//more carbon mobs
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))
@@ -176,6 +185,8 @@ GLOBAL_LIST_INIT(heavyfootmob, typecacheof(list(
#define iscameramob(A) (istype(A, /mob/camera))
#define isaicamera(A) (istype(A, /mob/camera/aiEye))
#define iseminence(A) (istype(A, /mob/camera/eminence))
//Footstep helpers
+12 -2
View File
@@ -171,12 +171,22 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
#define BLOOD_LOSS_IN_SPREAD 20
//Bloody shoe blood states
#define BLOOD_STATE_HUMAN "blood"
#define BLOOD_STATE_XENO "xeno"
#define BLOOD_STATE_BLOOD "blood"
#define BLOOD_STATE_OIL "oil"
#define BLOOD_STATE_NOT_BLOODY "no blood whatsoever"
#define BLOOD_AMOUNT_PER_DECAL 20
//Blood Decal Colors
#define BLOOD_COLOR_HUMAN "#dc0000"
#define BLOOD_COLOR_XENO "#94a83c"
#define BLOOD_COLOR_OIL "#301d02"
#define BLOOD_COLOR_SYNTHETIC "#3f48aa"
#define BLOOD_COLOR_SLIME "#00ff90"
#define BLOOD_COLOR_LIZARD "#db004D"
#define BLOOD_COLOR_UNIVERSAL "#db3300"
#define BLOOD_COLOR_BUG "#a37c0f"
//suit sensors: sensor_mode defines
#define SENSOR_OFF 0
+10 -37
View File
@@ -31,41 +31,14 @@
#define STIMULUM_RESEARCH_AMOUNT 50
//Plasma fusion properties
#define FUSION_ENERGY_THRESHOLD 3e9 //Amount of energy it takes to start a fusion reaction
#define FUSION_TEMPERATURE_THRESHOLD 1000 //Temperature required to start a fusion reaction
#define FUSION_MOLE_THRESHOLD 250 //Mole count required (tritium/plasma) to start a fusion reaction
#define FUSION_RELEASE_ENERGY_SUPER 3e9 //Amount of energy released in the fusion process, super tier
#define FUSION_RELEASE_ENERGY_HIGH 1e9 //Amount of energy released in the fusion process, high tier
#define FUSION_RELEASE_ENERGY_MID 5e8 //Amount of energy released in the fusion process, mid tier
#define FUSION_RELEASE_ENERGY_LOW 1e8 //Amount of energy released in the fusion process, low tier
#define FUSION_MEDIATION_FACTOR 80 //Arbitrary
#define FUSION_SUPER_TIER_THRESHOLD 50 //anything above this is super tier
#define FUSION_HIGH_TIER_THRESHOLD 20 //anything above this and below 50 is high tier
#define FUSION_MID_TIER_THRESHOLD 5 //anything above this and below 20 is mid tier - below this is low tier, but that doesnt need a define
#define FUSION_ENERGY_DIVISOR_SUPER 25 //power_ratio is divided by this during energy calculations
#define FUSION_ENERGY_DIVISOR_HIGH 20
#define FUSION_ENERGY_DIVISOR_MID 10
#define FUSION_ENERGY_DIVISOR_LOW 2
#define FUSION_GAS_CREATION_FACTOR_TRITIUM 0.40 //trit - one gas rather than two, so think about that when calculating stuff - 40% in total
#define FUSION_GAS_CREATION_FACTOR_STIM 0.05 //stim percentage creation from high tier - 5%, 60% in total with pluox
#define FUSION_GAS_CREATION_FACTOR_PLUOX 0.55 //pluox percentage creation from high tier - 55%, 60% in total with stim
#define FUSION_GAS_CREATION_FACTOR_NITRYL 0.20 //nitryl and N2O - 80% in total
#define FUSION_GAS_CREATION_FACTOR_N2O 0.60 //nitryl and N2O - 80% in total
#define FUSION_GAS_CREATION_FACTOR_BZ 0.05 //BZ - 5% - 90% in total with CO2
#define FUSION_GAS_CREATION_FACTOR_CO2 0.85 //CO2 - 85% - 90% in total with BZ
#define FUSION_MID_TIER_RAD_PROB_FACTOR 2 //probability of radpulse is power ratio * this for whatever tier
#define FUSION_LOW_TIER_RAD_PROB_FACTOR 5
#define FUSION_EFFICIENCY_BASE 60 //used in the fusion efficiency calculations
#define FUSION_EFFICIENCY_DIVISOR 0.6 //ditto
#define FUSION_RADIATION_FACTOR 15000 //horizontal asymptote
#define FUSION_RADIATION_CONSTANT 30 //equation is form of (ax) / (x + b), where a = radiation factor and b = radiation constant and x = power ratio (https://www.desmos.com/calculator/4i1f296phl)
#define FUSION_ZAP_POWER_ASYMPTOTE 50000 //maximum value - not enough to instacrit but it'll still hurt like shit
#define FUSION_ZAP_POWER_CONSTANT 75 //equation is of from [ax / (x + b)] + c, where a = zap power asymptote, b = zap power constant, c = zap power base and x = power ratio
#define FUSION_ZAP_POWER_BASE 1000 //(https://www.desmos.com/calculator/vvbmhf4unm)
#define FUSION_ZAP_RANGE_SUPER 9 //range of the tesla zaps that occur from fusion
#define FUSION_ZAP_RANGE_HIGH 7
#define FUSION_ZAP_RANGE_MID 5
#define FUSION_ZAP_RANGE_LOW 3
#define FUSION_PARTICLE_FACTOR_SUPER 4 //# of particles fired out is equal to rand(3,6) * this for whatever tier
#define FUSION_PARTICLE_FACTOR_HIGH 3
#define FUSION_PARTICLE_FACTOR_MID 2
#define FUSION_PARTICLE_FACTOR_LOW 1
#define FUSION_TRITIUM_CONVERSION_COEFFICIENT (1e-10)
#define INSTABILITY_GAS_POWER_FACTOR 0.003
#define FUSION_TRITIUM_MOLES_USED 1
#define PLASMA_BINDING_ENERGY 20000000
#define TOROID_VOLUME_BREAKEVEN 1000
#define FUSION_TEMPERATURE_THRESHOLD 10000
#define PARTICLE_CHANCE_CONSTANT (-20000000)
#define FUSION_RAD_MAX 2000
#define FUSION_RAD_COEFFICIENT (-1000)
#define FUSION_INSTABILITY_ENDOTHERMALITY 2
-1
View File
@@ -756,7 +756,6 @@ Turf and target are separate in case you want to teleport some distance from a t
loc = loc.loc
return null
//For objects that should embed, but make no sense being is_sharp or is_pointed()
//e.g: rods
GLOBAL_LIST_INIT(can_embed_types, typecacheof(list(
+61
View File
@@ -58,3 +58,64 @@ GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traito
for(var/i in GLOB.mob_list)
var/mob/M = i
M.update_config_movespeed()
GLOBAL_LIST_INIT(noodle_taurs, list(
"Naga",
"Tentacle"
))
GLOBAL_LIST_INIT(paw_taurs, list(
"Fox",
"Wolf",
"Otie",
"Drake",
"Lab",
"Shepherd",
"Husky",
"Eevee",
"Panther",
"Horse",
"Cow",
"Tiger"
))
//blood types
GLOBAL_LIST_INIT(regular_bloods,list(
"O-",
"O+",
"A-",
"A+",
"B-",
"B+",
"AB-",
"AB+"
))
GLOBAL_LIST_INIT(all_types_bloods,list(
"O-",
"O+",
"A-",
"A+",
"B-",
"B+",
"AB-",
"AB+",
"SY",
"X*",
"HF",
"L",
"U",
"GEL",
"BUG"
))
GLOBAL_LIST_INIT(blood_types, list(
"blood",
"jellyblood"
))
GLOBAL_LIST_INIT(blood_id_types, list(
"blood" = /datum/reagent/blood,
"jellyblood" = /datum/reagent/blood/jellyblood
))
+17 -8
View File
@@ -2,6 +2,10 @@
var/dupe_mode = COMPONENT_DUPE_HIGHLANDER
var/dupe_type
var/datum/parent
//only set to true if you are able to properly transfer this component
//At a minimum RegisterWithParent and UnregisterFromParent should be used
//Make sure you also implement PostTransfer for any post transfer handling
var/can_transfer = FALSE
/datum/component/New(datum/P, ...)
parent = P
@@ -154,7 +158,7 @@
return
/datum/component/proc/PostTransfer()
return
return COMPONENT_INCOMPATIBLE //Do not support transfer by default as you must properly support it
/datum/component/proc/_GetInverseTypeList(our_type = type)
//we can do this one simple trick
@@ -285,10 +289,12 @@
if(target.parent)
target.RemoveComponent()
target.parent = src
if(target.PostTransfer() == COMPONENT_INCOMPATIBLE)
var/c_type = target.type
qdel(target)
CRASH("Incompatible [c_type] transfer attempt to a [type]!")
var/result = target.PostTransfer()
switch(result)
if(COMPONENT_INCOMPATIBLE)
var/c_type = target.type
qdel(target)
CRASH("Incompatible [c_type] transfer attempt to a [type]!")
if(target == AddComponent(target))
target._JoinParent()
@@ -298,10 +304,13 @@
return
var/comps = dc[/datum/component]
if(islist(comps))
for(var/I in comps)
target.TakeComponent(I)
for(var/datum/component/I in comps)
if(I.can_transfer)
target.TakeComponent(I)
else
target.TakeComponent(comps)
var/datum/component/C = comps
if(C.can_transfer)
target.TakeComponent(comps)
/datum/component/ui_host()
return parent
+24 -17
View File
@@ -8,32 +8,39 @@
/datum/component/cleaning/proc/Clean()
var/atom/movable/AM = parent
var/turf/tile = AM.loc
if(!isturf(tile))
return
SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
for(var/A in tile)
var/turf/T = AM.loc
SEND_SIGNAL(T, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
for(var/A in T)
if(is_cleanable(A))
qdel(A)
else if(istype(A, /obj/item))
var/obj/item/I = A
SEND_SIGNAL(I, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
if(ismob(I.loc))
var/mob/M = I.loc
else if(isitem(A))
var/obj/item/cleaned_item = A
SEND_SIGNAL(cleaned_item, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
cleaned_item.clean_blood()
if(ismob(cleaned_item.loc))
var/mob/M = cleaned_item.loc
M.regenerate_icons()
else if(ishuman(A))
var/mob/living/carbon/human/cleaned_human = A
if(cleaned_human.lying)
if(cleaned_human.head)
SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(cleaned_human.head, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
cleaned_human.head.clean_blood()
cleaned_human.update_inv_head()
if(cleaned_human.wear_suit)
SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(cleaned_human.wear_suit, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
cleaned_human.wear_suit.clean_blood()
cleaned_human.update_inv_wear_suit()
else if(cleaned_human.w_uniform)
SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(cleaned_human.w_uniform, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
cleaned_human.w_uniform.clean_blood()
cleaned_human.update_inv_w_uniform()
if(cleaned_human.shoes)
SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(cleaned_human.shoes, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
cleaned_human.shoes.clean_blood()
cleaned_human.update_inv_shoes()
SEND_SIGNAL(cleaned_human, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
cleaned_human.clean_blood()
cleaned_human.wash_cream()
cleaned_human.regenerate_icons()
to_chat(cleaned_human, "<span class='danger'>[AM] cleans your face!</span>")
to_chat(cleaned_human, "<span class='danger'>[src] cleans your face!</span>")
+1 -1
View File
@@ -1,6 +1,6 @@
/datum/component/decal
dupe_mode = COMPONENT_DUPE_ALLOWED
can_transfer = TRUE
var/cleanable
var/description
var/mutable_appearance/pic
+13 -39
View File
@@ -1,39 +1,13 @@
/datum/component/decal/blood
dupe_mode = COMPONENT_DUPE_UNIQUE
/datum/component/decal/blood/Initialize(_icon, _icon_state, _dir, _cleanable=CLEAN_STRENGTH_BLOOD, _color, _layer=ABOVE_OBJ_LAYER)
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
. = ..()
RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name)
/datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color)
var/obj/item/I = parent
if(!_icon)
_icon = 'icons/effects/blood.dmi'
if(!_icon_state)
_icon_state = "itemblood"
var/icon = initial(I.icon)
var/icon_state = initial(I.icon_state)
if(!icon || !icon_state)
// It's something which takes on the look of other items, probably
icon = I.icon
icon_state = I.icon_state
var/static/list/blood_splatter_appearances = list()
//try to find a pre-processed blood-splatter. otherwise, make a new one
var/index = "[REF(icon)]-[icon_state]"
pic = blood_splatter_appearances[index]
if(!pic)
var/icon/blood_splatter_icon = icon(initial(I.icon), initial(I.icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object
blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent)
blood_splatter_icon.Blend(icon(_icon, _icon_state), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant
pic = mutable_appearance(blood_splatter_icon, initial(I.icon_state))
blood_splatter_appearances[index] = pic
return TRUE
/datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override)
var/atom/A = parent
override[EXAMINE_POSITION_ARTICLE] = A.gender == PLURAL? "some" : "a"
override[EXAMINE_POSITION_BEFORE] = " blood-stained "
return COMPONENT_EXNAME_CHANGED
/datum/component/decal/blood
dupe_mode = COMPONENT_DUPE_UNIQUE
/datum/component/decal/blood/Initialize(_icon, _icon_state, _dir, _cleanable=CLEAN_STRENGTH_BLOOD, _color, _layer=ABOVE_OBJ_LAYER)
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
. = ..()
RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name)
/datum/component/decal/blood/proc/get_examine_name(datum/source, mob/user, list/override)
var/atom/A = parent
return COMPONENT_EXNAME_CHANGED
-159
View File
@@ -1,159 +0,0 @@
/datum/component/forensics
dupe_mode = COMPONENT_DUPE_UNIQUE
var/list/fingerprints //assoc print = print
var/list/hiddenprints //assoc ckey = realname/gloves/ckey
var/list/blood_DNA //assoc dna = bloodtype
var/list/fibers //assoc print = print
/datum/component/forensics/InheritComponent(datum/component/forensics/F, original) //Use of | and |= being different here is INTENTIONAL.
fingerprints = fingerprints | F.fingerprints
hiddenprints = hiddenprints | F.hiddenprints
blood_DNA = blood_DNA | F.blood_DNA
fibers = fibers | F.fibers
check_blood()
return ..()
/datum/component/forensics/Initialize(new_fingerprints, new_hiddenprints, new_blood_DNA, new_fibers)
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
fingerprints = new_fingerprints
hiddenprints = new_hiddenprints
blood_DNA = new_blood_DNA
fibers = new_fibers
check_blood()
RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act)
/datum/component/forensics/proc/wipe_fingerprints()
fingerprints = null
return TRUE
/datum/component/forensics/proc/wipe_hiddenprints()
return //no.
/datum/component/forensics/proc/wipe_blood_DNA()
blood_DNA = null
if(isitem(parent))
qdel(parent.GetComponent(/datum/component/decal/blood))
return TRUE
/datum/component/forensics/proc/wipe_fibers()
fibers = null
return TRUE
/datum/component/forensics/proc/clean_act(datum/source, strength)
if(strength >= CLEAN_STRENGTH_FINGERPRINTS)
wipe_fingerprints()
if(strength >= CLEAN_STRENGTH_BLOOD)
wipe_blood_DNA()
if(strength >= CLEAN_STRENGTH_FIBERS)
wipe_fibers()
/datum/component/forensics/proc/add_fingerprint_list(list/_fingerprints) //list(text)
if(!length(_fingerprints))
return
LAZYINITLIST(fingerprints)
for(var/i in _fingerprints) //We use an associative list, make sure we don't just merge a non-associative list into ours.
fingerprints[i] = i
return TRUE
/datum/component/forensics/proc/add_fingerprint(mob/living/M, ignoregloves = FALSE)
if(!M)
return
add_hiddenprint(M)
if(ishuman(M))
var/mob/living/carbon/human/H = M
add_fibers(H)
if(H.gloves) //Check if the gloves (if any) hide fingerprints
var/obj/item/clothing/gloves/G = H.gloves
if(G.transfer_prints)
ignoregloves = TRUE
if(!ignoregloves)
H.gloves.add_fingerprint(H, TRUE) //ignoregloves = 1 to avoid infinite loop.
return
var/full_print = md5(H.dna.uni_identity)
LAZYSET(fingerprints, full_print, full_print)
return TRUE
/datum/component/forensics/proc/add_fiber_list(list/_fibertext) //list(text)
if(!length(_fibertext))
return
LAZYINITLIST(fibers)
for(var/i in _fibertext) //We use an associative list, make sure we don't just merge a non-associative list into ours.
fibers[i] = i
return TRUE
/datum/component/forensics/proc/add_fibers(mob/living/carbon/human/M)
var/fibertext
var/item_multiplier = isitem(src)?1.2:1
if(M.wear_suit)
fibertext = "Material from \a [M.wear_suit]."
if(prob(10*item_multiplier) && !LAZYACCESS(fibers, fibertext))
LAZYSET(fibers, fibertext, fibertext)
if(!(M.wear_suit.body_parts_covered & CHEST))
if(M.w_uniform)
fibertext = "Fibers from \a [M.w_uniform]."
if(prob(12*item_multiplier) && !LAZYACCESS(fibers, fibertext)) //Wearing a suit means less of the uniform exposed.
LAZYSET(fibers, fibertext, fibertext)
if(!(M.wear_suit.body_parts_covered & HANDS))
if(M.gloves)
fibertext = "Material from a pair of [M.gloves.name]."
if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext))
LAZYSET(fibers, fibertext, fibertext)
else if(M.w_uniform)
fibertext = "Fibers from \a [M.w_uniform]."
if(prob(15*item_multiplier) && !LAZYACCESS(fibers, fibertext))
// "Added fibertext: [fibertext]"
LAZYSET(fibers, fibertext, fibertext)
if(M.gloves)
fibertext = "Material from a pair of [M.gloves.name]."
if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext))
LAZYSET(fibers, fibertext, fibertext)
else if(M.gloves)
fibertext = "Material from a pair of [M.gloves.name]."
if(prob(20*item_multiplier) && !LAZYACCESS(fibers, fibertext))
LAZYSET(fibers, fibertext, fibertext)
return TRUE
/datum/component/forensics/proc/add_hiddenprint_list(list/_hiddenprints) //list(ckey = text)
if(!length(_hiddenprints))
return
LAZYINITLIST(hiddenprints)
for(var/i in _hiddenprints) //We use an associative list, make sure we don't just merge a non-associative list into ours.
hiddenprints[i] = _hiddenprints[i]
return TRUE
/datum/component/forensics/proc/add_hiddenprint(mob/living/M)
if(!M || !M.key)
return
var/hasgloves = ""
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.gloves)
hasgloves = "(gloves)"
var/current_time = TIME_STAMP("hh:mm:ss", FALSE)
if(!LAZYACCESS(hiddenprints, M.key))
LAZYSET(hiddenprints, M.key, "First: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]")
else
var/laststamppos = findtext(LAZYACCESS(hiddenprints, M.key), " Last: ")
if(laststamppos)
LAZYSET(hiddenprints, M.key, copytext(hiddenprints[M.key], 1, laststamppos))
hiddenprints[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]. Ckey: [M.ckey]" //made sure to be existing by if(!LAZYACCESS);else
var/atom/A = parent
A.fingerprintslast = M.ckey
return TRUE
/datum/component/forensics/proc/add_blood_DNA(list/dna) //list(dna_enzymes = type)
if(!length(dna))
return
LAZYINITLIST(blood_DNA)
for(var/i in dna)
blood_DNA[i] = dna[i]
check_blood()
return TRUE
/datum/component/forensics/proc/check_blood()
if(!isitem(parent))
return
if(!length(blood_DNA))
return
parent.LoadComponent(/datum/component/decal/blood)
-3
View File
@@ -237,6 +237,3 @@
LOCKON_RANGING_BREAK_CHECK
cd++
CHECK_TICK
/datum/component/lockon_aiming/PostTransfer(datum/new_parent)
return COMPONENT_INCOMPATIBLE
+1
View File
@@ -1,4 +1,5 @@
/datum/component/mirage_border
can_transfer = TRUE
var/obj/effect/abstract/mirage_holder/holder
/datum/component/mirage_border/Initialize(turf/target, direction, range=world.view)
+28 -7
View File
@@ -44,19 +44,21 @@
if(src.rotation_flags & ROTATION_CLOCKWISE)
default_rotation_direction = ROTATION_CLOCKWISE
if(src.rotation_flags & ROTATION_ALTCLICK)
/datum/component/simple_rotation/proc/add_signals()
if(rotation_flags & ROTATION_ALTCLICK)
RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/HandRot)
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/ExamineMessage)
if(src.rotation_flags & ROTATION_WRENCH)
if(rotation_flags & ROTATION_WRENCH)
RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/WrenchRot)
if(src.rotation_flags & ROTATION_VERBS)
/datum/component/simple_rotation/proc/add_verbs()
if(rotation_flags & ROTATION_VERBS)
var/atom/movable/AM = parent
if(src.rotation_flags & ROTATION_FLIP)
if(rotation_flags & ROTATION_FLIP)
AM.verbs += /atom/movable/proc/simple_rotate_flip
if(src.rotation_flags & ROTATION_CLOCKWISE)
if(rotation_flags & ROTATION_CLOCKWISE)
AM.verbs += /atom/movable/proc/simple_rotate_clockwise
if(src.rotation_flags & ROTATION_COUNTERCLOCKWISE)
if(rotation_flags & ROTATION_COUNTERCLOCKWISE)
AM.verbs += /atom/movable/proc/simple_rotate_counterclockwise
/datum/component/simple_rotation/proc/remove_verbs()
@@ -66,11 +68,30 @@
AM.verbs -= /atom/movable/proc/simple_rotate_clockwise
AM.verbs -= /atom/movable/proc/simple_rotate_counterclockwise
/datum/component/simple_rotation/Destroy()
/datum/component/simple_rotation/proc/remove_signals()
UnregisterSignal(parent, list(COMSIG_CLICK_ALT, COMSIG_PARENT_EXAMINE, COMSIG_PARENT_ATTACKBY))
/datum/component/simple_rotation/RegisterWithParent()
add_verbs()
add_signals()
. = ..()
/datum/component/simple_rotation/PostTransfer()
//Because of the callbacks which we don't track cleanly we can't transfer this
//item cleanly, better to let the new of the new item create a new rotation datum
//instead (there's no real state worth transferring)
return COMPONENT_NOTRANSFER
/datum/component/simple_rotation/UnregisterFromParent()
remove_verbs()
remove_signals()
. = ..()
/datum/component/simple_rotation/Destroy()
QDEL_NULL(can_user_rotate)
QDEL_NULL(can_be_rotated)
QDEL_NULL(after_rotation)
//Signals + verbs removed via UnRegister
. = ..()
/datum/component/simple_rotation/RemoveComponent()
@@ -4,6 +4,7 @@
// /mob/living/Move() in /modules/mob/living/living.dm - hiding storage boxes on mob movement
/datum/component/storage/concrete
can_transfer = TRUE
var/drop_all_on_deconstruct = TRUE
var/drop_all_on_destroy = FALSE
var/drop_all_on_break = FALSE
+16 -2
View File
@@ -1,5 +1,6 @@
/datum/component/wet_floor
dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS
can_transfer = TRUE
var/highest_strength = TURF_DRY
var/lube_flags = NONE //why do we have this?
var/list/time_left_list //In deciseconds.
@@ -26,14 +27,20 @@
if(!isopenturf(parent))
return COMPONENT_INCOMPATIBLE
add_wet(strength, duration_minimum, duration_add, duration_maximum)
RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet)
RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry)
permanent = _permanent
if(!permanent)
START_PROCESSING(SSwet_floors, src)
addtimer(CALLBACK(src, .proc/gc, TRUE), 1) //GC after initialization.
last_process = world.time
/datum/component/wet_floor/RegisterWithParent()
RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet)
RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry)
/datum/component/wet_floor/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_TURF_IS_WET, COMSIG_TURF_MAKE_DRY))
/datum/component/wet_floor/Destroy()
STOP_PROCESSING(SSwet_floors, src)
var/turf/T = parent
@@ -138,12 +145,19 @@
/datum/component/wet_floor/PreTransfer()
var/turf/O = parent
O.cut_overlay(current_overlay)
//That turf is no longer slippery, we're out of here
//Slippery components don't transfer due to callbacks
qdel(O.GetComponent(/datum/component/slippery))
/datum/component/wet_floor/PostTransfer()
if(!isopenturf(parent))
return COMPONENT_INCOMPATIBLE
var/turf/T = parent
T.add_overlay(current_overlay)
//Make sure to add/update any slippery component on the new turf (update_flags calls LoadComponent)
update_flags()
//NB it's possible we get deleted after this, due to inherit
/datum/component/wet_floor/proc/add_wet(type, duration_minimum = 0, duration_add = 0, duration_maximum = MAXIMUM_WET_TIME, _permanent = FALSE)
var/static/list/allowed_types = list(TURF_WET_WATER, TURF_WET_LUBE, TURF_WET_ICE, TURF_WET_PERMAFROST)
+2 -1
View File
@@ -10,10 +10,11 @@
// And yes this does have to be in the constructor, BYOND ignores it if you set it as a normal var
// Helper similar to image()
/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE)
/proc/mutable_appearance(icon, icon_state = "", layer = FLOAT_LAYER, plane = FLOAT_PLANE, color = "#FFFFFF")
var/mutable_appearance/MA = new()
MA.icon = icon
MA.icon_state = icon_state
MA.layer = layer
MA.plane = plane
MA.color = color
return MA
+19 -8
View File
@@ -177,8 +177,8 @@
/datum/map_template/shuttle/emergency/airless
suffix = "airless"
name = "Build your own shuttle kit"
description = "Save money by building your own shuttle! The chassis will dock upon purchase, but launch will have to be authorized as usual via shuttle call. Interior and atmosphere not included."
admin_notes = "No brig, no medical facilities, no air."
description = "Save money by building your own shuttle! The chassis will dock upon purchase, but launch will have to be authorized as usual via shuttle call. Interior and lighting not included."
admin_notes = "No brig, no medical facilities, just an empty box."
credit_cost = -7500
/datum/map_template/shuttle/emergency/airless/prerequisites_met()
@@ -222,9 +222,9 @@
/datum/map_template/shuttle/emergency/luxury
suffix = "luxury"
name = "Luxury Shuttle"
description = "A luxurious golden shuttle complete with an indoor swimming pool. Each crewmember wishing to board must bring 500 credits, payable in cash and mineral coin."
admin_notes = "Due to the limited space for non paying crew, this shuttle may cause a riot."
credit_cost = 10000
description = "A luxurious golden shuttle complete with an indoor swimming pool. Entry is free, so long as you can afford the initial cost."
admin_notes = "Fancy, and very roomy!"
credit_cost = 17500
/datum/map_template/shuttle/emergency/discoinferno
suffix = "discoinferno"
@@ -300,7 +300,7 @@
suffix = "syndicate"
name = "Syndicate GM Battlecruiser"
credit_cost = 20000
description = "Manufactured by the Gorlex Marauders, this cruiser has been specially designed with high occupancy in mind, while remaining robust in combat situations. Features a fully stocked EVA storage, armory, medbay, and bar!"
description = "(Emag only) Manufactured by the Gorlex Marauders, this cruiser has been specially designed with high occupancy in mind, while remaining robust in combat situations. Features a fully stocked EVA storage, armory, medbay, and bar!"
admin_notes = "An emag exclusive, stocked with syndicate equipment and turrets that will target any simplemob."
/datum/map_template/shuttle/emergency/syndicate/prerequisites_met()
@@ -333,7 +333,7 @@
/datum/map_template/shuttle/emergency/supermatter
suffix = "supermatter"
name = "Hyperfractal Gigashuttle"
description = "\"I dunno, this seems kinda needlessly complicated.\"\n\
description = "(Emag only) \"I dunno, this seems kinda needlessly complicated.\"\n\
\"This shuttle has very a very high safety record, according to CentCom Officer Cadet Yins.\"\n\
\"Are you sure?\"\n\
\"Yes, it has a safety record of N-A-N, which is apparently larger than 100%.\""
@@ -341,7 +341,12 @@
Outside of admin intervention, it cannot explode. \
It does, however, still dust anything on contact, emits high levels of radiation, and induce hallucinations in anyone looking at it without protective goggles. \
Emitters spawn powered on, expect admin notices, they are harmless."
credit_cost = 100000
credit_cost = 15000
/datum/map_template/shuttle/emergency/supermatter/prerequisites_met()
if("emagged" in SSshuttle.shuttle_purchase_requirements_met)
return TRUE
return FALSE
/datum/map_template/shuttle/emergency/imfedupwiththisworld
suffix = "imfedupwiththisworld"
@@ -372,6 +377,12 @@
description = "On the smaller size with a modern design, this shuttle is for the crew who like the cosier things, while still being able to stretch their legs."
credit_cost = 1000
/datum/map_template/shuttle/emergency/gorilla
suffix = "gorilla"
name = "Gorilla Cargo Freighter"
description = "A rustic, barely excuseable shuttle transporting important cargo. Not for crew who are about to go ape."
credit_cost = 2000
/datum/map_template/shuttle/ferry/base
suffix = "base"
name = "transport ferry"
@@ -18,7 +18,7 @@
area_type = /area
protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer,
/area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle)
/area/ai_monitored/turret_protected/ai, /area/storage/emergency/starboard, /area/storage/emergency/port, /area/shuttle, /area/security/prison)
target_trait = ZTRAIT_STATION
immunity_type = "rad"
+127 -9
View File
@@ -36,6 +36,12 @@
var/rad_flags = NONE // Will move to flags_1 when i can be arsed to
var/rad_insulation = RAD_NO_INSULATION
var/icon/blood_splatter_icon
var/list/fingerprints
var/list/fingerprintshidden
var/list/blood_DNA
var/list/suit_fibers
/atom/New(loc, ...)
//atom creation method that preloads variables at creation
if(GLOB.use_preloader && (src.type == GLOB._preloader.target_path))//in case the instanciated atom is creating other atoms in New()
@@ -220,7 +226,7 @@
return FALSE
/atom/proc/CheckExit()
return 1
return TRUE
/atom/proc/HasProximity(atom/movable/AM as mob|obj)
return
@@ -254,14 +260,26 @@
if(article)
. = "[article] [src]"
override[EXAMINE_POSITION_ARTICLE] = article
var/should_override = FALSE
if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED)
should_override = TRUE
if(blood_DNA && !istype(src, /obj/effect/decal))
override[EXAMINE_POSITION_BEFORE] = " blood-stained "
should_override = TRUE
if(should_override)
. = override.Join("")
///Generate the full examine string of this atom (including icon for goonchat)
/atom/proc/get_examine_string(mob/user, thats = FALSE)
. = "[icon2html(src, user)] [thats? "That's ":""][get_examine_name(user)]"
/atom/proc/examine(mob/user)
to_chat(user, get_examine_string(user, TRUE))
to_chat(user, "[get_examine_string(user, TRUE)].")
if(desc)
to_chat(user, desc)
@@ -326,12 +344,14 @@
//returns the mob's dna info as a list, to be inserted in an object's blood_DNA list
/mob/living/proc/get_blood_dna_list()
if(get_blood_id() != "blood")
var/blood_id = get_blood_id()
if(!(blood_id =="blood" || blood_id == "jellyblood"))
return
return list("ANIMAL DNA" = "Y-")
/mob/living/carbon/get_blood_dna_list()
if(get_blood_id() != "blood")
var/blood_id = get_blood_id()
if(!(blood_id =="blood" || blood_id == "jellyblood"))
return
var/list/blood_dna = list()
if(dna)
@@ -349,18 +369,116 @@
var/new_blood_dna = L.get_blood_dna_list()
if(!new_blood_dna)
return FALSE
var/old_length = blood_DNA_length()
add_blood_DNA(new_blood_dna)
if(blood_DNA_length() == old_length)
LAZYINITLIST(blood_DNA) //if our list of DNA doesn't exist yet, initialise it.
var/old_length = blood_DNA.len
blood_DNA |= new_blood_dna
if(blood_DNA.len == old_length)
return FALSE
return TRUE
//to add blood dna info to the object's blood_DNA list
/atom/proc/transfer_blood_dna(list/blood_dna, list/datum/disease/diseases)
LAZYINITLIST(blood_DNA)
var/old_length = blood_DNA.len
blood_DNA |= blood_dna
if(blood_DNA.len > old_length)
return TRUE
//some new blood DNA was added
//to add blood from a mob onto something, and transfer their dna info
/atom/proc/add_mob_blood(mob/living/M)
var/list/blood_dna = M.get_blood_dna_list()
if(!blood_dna)
return FALSE
return add_blood_DNA(blood_dna)
return add_blood_DNA(blood_dna, M.diseases)
//to add blood onto something, with blood dna info to include.
/atom/proc/add_blood_DNA(list/blood_dna, list/datum/disease/diseases)
return FALSE
/obj/add_blood_DNA(list/blood_dna, list/datum/disease/diseases)
return transfer_blood_dna(blood_dna, diseases)
/obj/item/add_blood_DNA(list/blood_dna, list/datum/disease/diseases)
. = ..()
if(!.)
return
add_blood_overlay()
/obj/item/proc/add_blood_overlay()
if(!blood_DNA.len)
return
if(initial(icon) && initial(icon_state))
blood_splatter_icon = icon(initial(icon), initial(icon_state), , 1) //we only want to apply blood-splatters to the initial icon_state for each object
blood_splatter_icon.Blend("#fff", ICON_ADD) //fills the icon_state with white (except where it's transparent)
blood_splatter_icon.Blend(icon('icons/effects/blood.dmi', "itemblood"), ICON_MULTIPLY) //adds blood and the remaining white areas become transparant
blood_splatter_icon.Blend(blood_DNA_to_color(), ICON_MULTIPLY)
add_overlay(blood_splatter_icon)
/obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases)
. = ..()
transfer_blood = rand(2, 4)
/turf/add_blood_DNA(list/blood_dna, list/datum/disease/diseases)
var/obj/effect/decal/cleanable/blood/splatter/B = locate() in src
if(!B)
B = new /obj/effect/decal/cleanable/blood/splatter(src, diseases)
B.transfer_blood_dna(blood_dna, diseases) //give blood info to the blood decal.
return TRUE //we bloodied the floor
/mob/living/carbon/human/add_blood_DNA(list/blood_dna, list/datum/disease/diseases)
if(head)
head.add_blood_DNA(blood_dna, diseases)
update_inv_head()
else if(wear_mask)
wear_mask.add_blood_DNA(blood_dna, diseases)
update_inv_wear_mask()
if(wear_neck)
wear_neck.add_blood_DNA(blood_dna, diseases)
update_inv_neck()
if(wear_suit)
wear_suit.add_blood_DNA(blood_dna, diseases)
update_inv_wear_suit()
else if(w_uniform)
w_uniform.add_blood_DNA(blood_dna, diseases)
update_inv_w_uniform()
if(gloves)
var/obj/item/clothing/gloves/G = gloves
G.add_blood_DNA(blood_dna, diseases)
else
transfer_blood_dna(blood_dna, diseases)
bloody_hands = rand(2, 4)
update_inv_gloves() //handles bloody hands overlays and updating
return TRUE
/atom/proc/blood_DNA_to_color()
var/list/colors = list()//first we make a list of all bloodtypes present
for(var/bloop in blood_DNA)
if(colors[blood_DNA[bloop]])
colors[blood_DNA[bloop]]++
else
colors[blood_DNA[bloop]] = 1
var/final_rgb = BLOOD_COLOR_HUMAN //a default so we don't have white blood graphics if something messed up
if(colors.len)
var/sum = 0 //this is all shitcode, but it works; trust me
final_rgb = bloodtype_to_color(colors[1])
sum = colors[colors[1]]
if(colors.len > 1)
var/i = 2
while(i <= colors.len)
var/tmp = colors[colors[i]]
final_rgb = BlendRGB(final_rgb, bloodtype_to_color(colors[i]), tmp/(tmp+sum))
sum += tmp
i++
return final_rgb
/atom/proc/clean_blood()
if(islist(blood_DNA))
blood_DNA = null
return TRUE
/atom/proc/wash_cream()
return TRUE
@@ -714,4 +832,4 @@ Proc for attack log creation, because really why not
if(filter_data[name])
filter_data -= name
update_filters()
return TRUE
return TRUE
+1 -1
View File
@@ -317,7 +317,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event
/obj/effect/meteor/meaty/xeno/ram_turf(turf/T)
if(!isspaceturf(T))
new /obj/effect/decal/cleanable/xenoblood(T)
new /obj/effect/decal/cleanable/blood/xeno(T)
//Station buster Tunguska
/obj/effect/meteor/tunguska
+361
View File
@@ -0,0 +1,361 @@
/obj/machinery/bloodbankgen
name = "blood bank generator"
desc = "Generates universally applicable synthetics for all blood types. Add regular blood to convert."
icon = 'icons/obj/bloodbank.dmi'
icon_state = "bloodbank-off"
density = TRUE
use_power = IDLE_POWER_USE
idle_power_usage = 80
circuit = /obj/item/circuitboard/machine/bloodbankgen
interaction_flags_machine = INTERACT_MACHINE_OPEN | INTERACT_MACHINE_ALLOW_SILICON
var/draining = FALSE
var/filling = FALSE
var/obj/item/reagent_containers/blood/bag = null
var/obj/item/reagent_containers/blood/outbag = null
var/bloodstored = 0
var/maxbloodstored = 1000
var/menustat = "menu"
var/efficiency = 0
var/productivity = 0
/obj/machinery/bloodbankgen/Initialize()
. = ..()
create_reagents(1000)
update_icon()
/obj/machinery/bloodbankgen/Destroy()
QDEL_NULL(bag)
QDEL_NULL(outbag)
return ..()
/obj/machinery/bloodbankgen/contents_explosion(severity, target)
..()
if(bag)
bag.ex_act(severity, target)
if(outbag)
outbag.ex_act(severity, target)
/obj/machinery/bloodbankgen/handle_atom_del(atom/A)
..()
if(A == bag)
bag = null
update_icon()
updateUsrDialog()
if(A == outbag)
outbag = null
update_icon()
updateUsrDialog()
/obj/machinery/bloodbankgen/RefreshParts()
var/E = 0
var/P = 0
for(var/obj/item/stock_parts/manipulator/M in component_parts)
E += M.rating
efficiency = E
productivity = P
/obj/machinery/bloodbankgen/update_icon()
cut_overlays()
if(is_operational())
icon_state = "bloodbank-on"
if(panel_open)
add_overlay("bloodbank-panel")
if(src.bag)
add_overlay("bloodbag-input")
if(bag.reagents.total_volume)
var/mutable_appearance/filling_overlay = mutable_appearance(icon, "input-reagent")
var/percent = round((bag.reagents.total_volume / bag.volume) * 100)
switch(percent)
if(0 to 9)
filling_overlay.icon_state = "input-reagent0"
if(10 to 24)
filling_overlay.icon_state = "input-reagent10"
if(25 to 49)
filling_overlay.icon_state = "input-reagent25"
if(50 to 74)
filling_overlay.icon_state = "input-reagent50"
if(75 to 79)
filling_overlay.icon_state = "input-reagent75"
if(80 to 90)
filling_overlay.icon_state = "input-reagent80"
if(91 to INFINITY)
filling_overlay.icon_state = "input-reagent100"
filling_overlay.color = list(mix_color_from_reagents(bag.reagents.reagent_list))
add_overlay(filling_overlay)
if(src.outbag)
add_overlay("bloodbag-output")
if(outbag.reagents.total_volume)
var/mutable_appearance/filling_overlay = mutable_appearance(icon, "output-reagent")
var/percent = round((outbag.reagents.total_volume / outbag.volume) * 100)
switch(percent)
if(0 to 9)
filling_overlay.icon_state = "output-reagent0"
if(10 to 24)
filling_overlay.icon_state = "output-reagent10"
if(25 to 49)
filling_overlay.icon_state = "output-reagent25"
if(50 to 74)
filling_overlay.icon_state = "output-reagent50"
if(75 to 79)
filling_overlay.icon_state = "output-reagent75"
if(80 to 90)
filling_overlay.icon_state = "output-reagent80"
if(91 to INFINITY)
filling_overlay.icon_state = "output-reagent100"
filling_overlay.color = list(mix_color_from_reagents(outbag.reagents.reagent_list))
add_overlay(filling_overlay)
return
/obj/machinery/bloodbankgen/process()
if(!is_operational())
return PROCESS_KILL
bloodstored = reagents.total_volume
var/transfer_amount = 20
if(draining)
if(reagents.total_volume >= reagents.maximum_volume)
draining = FALSE
return
if(bag)
if(bag.reagents.total_volume)
var/datum/reagent/blood/B = bag.reagents.has_reagent("blood")
if(B)
var/amount = reagents.maximum_volume - reagents.total_volume //monitor the machine's internal storage
amount = min(amount, transfer_amount)
if(!amount)
draining = FALSE
updateUsrDialog()
visible_message("[src] beeps loudly.")
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
return
if(bag.blood_type == "SY") //no infinite loops using synthetics.
reagents.add_reagent("syntheticblood", amount)
else
reagents.add_reagent("syntheticblood", (amount+(5*efficiency)))
if(bag.reagents.total_volume >= amount)
bag.reagents.remove_reagent("blood", amount)
else
visible_message("[src] beeps loudly.")
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
draining = FALSE
bag.update_icon()
update_icon()
updateUsrDialog()
else
draining = FALSE
updateUsrDialog()
return
if(filling)
if(!reagents || !reagents.total_volume)
filling = FALSE //there ain't anything in the machine yo.
return
if(outbag && outbag.reagents.total_volume < outbag.reagents.maximum_volume)
var/amount = outbag.reagents.maximum_volume - outbag.reagents.total_volume //monitor the output bag's internal storage
amount = min(amount, transfer_amount)
if(!amount)
filling = FALSE
visible_message("[src] pings.")
playsound(loc, 'sound/machines/beep.ogg', 50, 1)
updateUsrDialog()
return
reagents.trans_to(outbag, amount)
outbag.update_icon()
update_icon()
updateUsrDialog()
else
visible_message("[src] pings.")
playsound(loc, 'sound/machines/beep.ogg', 50, 1)
filling = FALSE
updateUsrDialog()
return
/obj/machinery/bloodbankgen/attackby(obj/item/O, mob/user, params)
if(user.a_intent == INTENT_HARM)
return ..()
if(default_deconstruction_screwdriver(user, "bloodbank-off", "bloodbank-off", O))
if(bag)
var/obj/item/reagent_containers/blood/B = bag
B.forceMove(drop_location())
bag = null
if(outbag)
var/obj/item/reagent_containers/blood/B = outbag
B.forceMove(drop_location())
outbag = null
update_icon()
return
if(default_deconstruction_crowbar(O))
return
if(istype(O, /obj/item/reagent_containers/blood))
. = 1 //no afterattack
if(!panel_open)
if(bag && outbag)
to_chat(user, "<span class='warning'>This machine already has bags attached.</span>")
if(!bag && !outbag)
var/choice = alert(user, "Choose where to place [O]", "", "Input", "Cancel", "Output")
switch(choice)
if("Cancel")
return FALSE
if("Input")
attachinput(O, user)
if("Output")
attachoutput(O, user)
else if(!bag)
attachinput(O, user)
else if(!outbag)
attachoutput(O, user)
else
to_chat(user, "<span class='warning'>Close the maintenance panel first.</span>")
return
else
to_chat(user, "<span class='warning'>You cannot put this in [src]!</span>")
/obj/machinery/bloodbankgen/ui_interact(mob/user)
. = ..()
if(!is_operational())
return
var/dat
switch(menustat)
if("noblood")
dat += "<div class='statusDisplay'>You do not have enough blood product to create synthetics.</div>"
menustat = "menu"
if("complete")
dat += "<div class='statusDisplay'>Operation complete.</div>"
menustat = "menu"
if("nobagspace")
dat += "<div class='statusDisplay'>Not enough space left in container. Please replace receptical.</div>"
menustat = "menu"
dat+= "<br><B>Current Synthetics stockpile: [reagents.total_volume] units.</B><HR>"
dat += "<br>Supply Bag<HR>"
if(bag)
dat += "<br>Current Capacity: [bag.reagents.total_volume] of [bag.reagents.maximum_volume]"
if(bag.reagents && bag.reagents.total_volume)
dat += "<br><a href='?src=\ref[src];activateinput=1'>Drain</a>"
dat += "<br><a href='?src=\ref[src];detachinput=1'>Detach</a>"
dat += "<br><br>Synthetics Bag<HR>"
if(outbag)
dat += "<br>Current Capacity:[outbag.reagents.total_volume] of [outbag.reagents.maximum_volume]"
if(!(outbag.reagents.total_volume >= outbag.reagents.maximum_volume))
dat += "<br><a href='?src=\ref[src];activateoutput=1'>Fill</a>"
dat += "<br><a href='?src=\ref[src];detachoutput=1'>Detach</a>"
if(!bag && !outbag)
dat += "<div class='statusDisplay'>No containers inside, please insert container.</div>"
var/datum/browser/popup = new(user, "bloodbankgen", name, 350, 520)
popup.set_content(dat)
popup.open()
/obj/machinery/bloodbankgen/proc/activateinput()
if(bag)
draining = TRUE
update_icon()
else
to_chat(usr, "<span class='warning'>There is no blood bag in the input slot.</span>")
return
/obj/machinery/bloodbankgen/proc/activateoutput()
if(outbag)
filling = TRUE
update_icon()
else
to_chat(usr, "<span class='warning'>There is no blood bag in the output slot.</span>")
return
/obj/machinery/bloodbankgen/proc/check_container_volume(list/reagents, multiplier = 1)
var/sum_reagents = 0
for(var/R in reagents)
sum_reagents += reagents[R]
sum_reagents *= multiplier
if(outbag.reagents.total_volume + sum_reagents > outbag.reagents.maximum_volume)
menustat = "nobagspace"
return FALSE
return TRUE
/obj/machinery/bloodbankgen/proc/detachinput()
if(bag)
bag.forceMove(drop_location())
if(usr && Adjacent(usr) && !issiliconoradminghost(usr))
usr.put_in_hands(bag)
bag = null
update_icon()
/obj/machinery/bloodbankgen/proc/detachoutput()
if(outbag)
outbag.forceMove(drop_location())
if(usr && Adjacent(usr) && !issiliconoradminghost(usr))
usr.put_in_hands(outbag)
outbag = null
update_icon()
/obj/machinery/bloodbankgen/proc/attachinput(obj/item/O, mob/user)
if(!bag)
if(!user.transferItemToLoc(O, src))
return
bag = O
to_chat(user, "<span class='notice'>You add [O] to the machine's input slot.</span>")
update_icon()
updateUsrDialog()
else
to_chat(user, "<span class='notice'>There is already something in this slot!</span>")
/obj/machinery/bloodbankgen/proc/attachoutput(obj/item/O, mob/user)
if(!outbag)
if(!user.transferItemToLoc(O, src))
return
outbag = O
to_chat(user, "<span class='notice'>You add [O] to the machine's output slot.</span>")
update_icon()
updateUsrDialog()
else
to_chat(user, "<span class='notice'>There is already something in this slot!</span>")
/obj/machinery/bloodbankgen/Topic(href, href_list)
if(..() || panel_open)
return
usr.set_machine(src)
if(href_list["activateinput"])
activateinput()
updateUsrDialog()
else if(href_list["detachinput"])
detachinput()
updateUsrDialog()
else if(href_list["activateoutput"])
activateoutput()
updateUsrDialog()
else if(href_list["detachoutput"])
detachoutput()
updateUsrDialog()
+1 -1
View File
@@ -326,7 +326,7 @@
else //for simple_animals & borgs
L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
var/turf/location = get_turf(src)
//add_blood doesn't work for borgs/xenos, but add_blood_floor does.
//add_blood_DNA doesn't work for borgs/xenos, but add_blood_floor does.
if(iscarbon(L))
var/mob/living/carbon/C = L
C.bleed(DOOR_CRUSH_DAMAGE)
+20 -14
View File
@@ -8,14 +8,14 @@
icon_state = "iv_drip"
anchored = FALSE
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
var/mob/living/carbon/attached = null
var/mob/living/carbon/attached
var/mode = IV_INJECTING
var/obj/item/reagent_containers/beaker = null
var/obj/item/reagent_containers/beaker
var/static/list/drip_containers = typecacheof(list(/obj/item/reagent_containers/blood,
/obj/item/reagent_containers/food,
/obj/item/reagent_containers/glass))
/obj/machinery/iv_drip/Initialize()
/obj/machinery/iv_drip/Initialize(mapload)
. = ..()
update_icon()
@@ -84,6 +84,8 @@
if(Adjacent(target) && usr.Adjacent(target))
if(beaker)
usr.visible_message("<span class='warning'>[usr] attaches [src] to [target].</span>", "<span class='notice'>You attach [src] to [target].</span>")
log_combat(usr, target, "attached", src, "containing: [beaker.name] - ([beaker.reagents.log_list()])")
add_fingerprint(usr)
attached = target
START_PROCESSING(SSmachines, src)
update_icon()
@@ -100,6 +102,8 @@
return
beaker = W
to_chat(user, "<span class='notice'>You attach [W] to [src].</span>")
user.log_message("attached a [W] to [src] at [AREACOORD(src)] containing ([beaker.reagents.log_list()])", LOG_ATTACK)
add_fingerprint(user)
update_icon()
return
else
@@ -142,10 +146,11 @@
if(!amount)
if(prob(5))
visible_message("[src] pings.")
playsound(loc, 'sound/machines/beep.ogg', 50, 1)
return
// If the human is losing too much blood, beep.
if(attached.blood_volume < ( (BLOOD_VOLUME_SAFE*attached.blood_ratio) && prob(5) ) )
if(attached.blood_volume < ((BLOOD_VOLUME_SAFE*attached.blood_ratio) && prob(5) && ishuman(attached))) //really couldn't care less about monkeys
visible_message("[src] beeps loudly.")
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1)
attached.transfer_blood_to(beaker, amount)
@@ -178,9 +183,10 @@
if(usr.incapacitated())
return
if(beaker)
beaker.forceMove(drop_location())
if(usr && Adjacent(usr) && !issiliconoradminghost(usr))
if(!usr.put_in_hands(beaker))
beaker.forceMove(drop_location())
beaker = null
update_icon()
@@ -195,27 +201,27 @@
if(usr.incapacitated())
return
mode = !mode
to_chat(usr, "The IV drip is now [mode ? "injecting" : "taking blood"].")
update_icon()
/obj/machinery/iv_drip/examine(mob/user)
..()
. = ..()
if(get_dist(user, src) > 2)
return
to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].")
. += "[src] is [mode ? "injecting" : "taking blood"].\n"
if(beaker)
if(beaker.reagents && beaker.reagents.reagent_list.len)
to_chat(user, "<span class='notice'>Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.</span>")
. += "\t<span class='notice'>Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.</span>\n"
else
to_chat(user, "<span class='notice'>Attached is an empty [beaker.name].</span>")
. += "\t<span class='notice'>Attached is an empty [beaker.name].</span>\n"
else
to_chat(user, "<span class='notice'>No chemicals are attached.</span>")
. += "\t<span class='notice'>No chemicals are attached.</span>\n"
to_chat(user, "<span class='notice'>[attached ? attached : "No one"] is attached.</span>")
. += "\t<span class='notice'>[attached ? attached : "No one"] is attached.</span>"
to_chat(user,.)
#undef IV_TAKING
#undef IV_INJECTING
#undef IV_INJECTING
+1 -1
View File
@@ -99,7 +99,7 @@
/obj/machinery/recycler/proc/eat(atom/AM0, sound=TRUE)
var/list/to_eat
if(isitem(AM0))
to_eat = AM0.GetAllContents()
to_eat = AM0.GetAllContentsIgnoring(GLOB.typecache_mob)
else
to_eat = list(AM0)
+3 -1
View File
@@ -265,6 +265,8 @@
things_to_clear += occupant.GetAllContents()
for(var/atom/movable/AM in things_to_clear) //Scorches away blood and forensic evidence, although the SSU itself is unaffected
SEND_SIGNAL(AM, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRONG)
AM.clean_blood()
AM.fingerprints = list()
var/datum/component/radioactive/contamination = AM.GetComponent(/datum/component/radioactive)
if(contamination)
qdel(contamination)
@@ -435,4 +437,4 @@
if(I)
I.forceMove(loc)
. = TRUE
update_icon()
update_icon()
+84
View File
@@ -0,0 +1,84 @@
/obj/machinery/turnstile
name = "turnstile"
desc = "A mechanical door that permits one-way access and prevents tailgating."
icon = 'icons/obj/turnstile.dmi'
icon_state = "turnstile_map"
density = FALSE
armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 10, bio = 100, rad = 100, fire = 90, acid = 70)
anchored = TRUE
use_power = FALSE
idle_power_usage = 2
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
layer = OPEN_DOOR_LAYER
/obj/machinery/turnstile/Initialize()
. = ..()
icon_state = "turnstile"
/obj/machinery/turnstile/CanAtmosPass(turf/T)
return TRUE
/obj/machinery/turnstile/bullet_act(obj/item/projectile/P, def_zone)
return -1 //Pass through!
/obj/machinery/turnstile/proc/allowed_access(var/mob/B)
if(B.pulledby && ismob(B.pulledby))
return allowed(B.pulledby) | allowed(B)
else
return allowed(B)
/obj/machinery/turnstile/CanPass(atom/movable/AM, turf/T)
if(ismob(AM))
var/mob/B = AM
if(isliving(AM))
var/mob/living/M = AM
if(world.time - M.last_bumped <= 5)
return FALSE
M.last_bumped = world.time
var/allowed_access = FALSE
var/turf/behind = get_step(src, dir)
if(B in behind.contents)
allowed_access = allowed_access(B)
else
to_chat(usr, "<span class='notice'>\the [src] resists your efforts.</span>")
return FALSE
if(allowed_access)
flick("operate", src)
playsound(src,'sound/items/ratchet.ogg',50,0,3)
return TRUE
else
flick("deny", src)
playsound(src,'sound/machines/deniedbeep.ogg',50,0,3)
return FALSE
if(ispath(AM, /obj/item/))
return TRUE
else
return FALSE
/obj/machinery/turnstile/CheckExit(atom/movable/AM as mob|obj, target)
if(isliving(AM))
var/mob/living/M = AM
var/outdir = dir
if(allowed_access(M))
switch(dir)
if(NORTH)
outdir = SOUTH
if(SOUTH)
outdir = NORTH
if(EAST)
outdir = WEST
if(WEST)
outdir = EAST
var/turf/outturf = get_step(src, outdir)
var/canexit = (target == src.loc) | (target == outturf)
if(!canexit && world.time - M.last_bumped <= 5)
to_chat(usr, "<span class='notice'>\the [src] resists your efforts.</span>")
M.last_bumped = world.time
return canexit
else
return TRUE
+4 -6
View File
@@ -11,10 +11,6 @@
var/obj/item/color_source
var/max_wash_capacity = 5
/obj/machinery/washing_machine/ComponentInitialize()
. = ..()
AddComponent(/datum/component/redirect, list(COMSIG_COMPONENT_CLEAN_ACT = CALLBACK(src, .proc/clean_blood)))
/obj/machinery/washing_machine/examine(mob/user)
..()
to_chat(user, "<span class='notice'>Alt-click it to start a wash cycle.</span>")
@@ -59,7 +55,8 @@
M.Translate(rand(-3, 3), rand(-1, 3))
animate(src, transform=M, time=2)
/obj/machinery/washing_machine/proc/clean_blood()
/obj/machinery/washing_machine/clean_blood()
..()
if(!busy)
bloody_mess = FALSE
update_icon()
@@ -67,7 +64,8 @@
/obj/machinery/washing_machine/proc/wash_cycle()
for(var/X in contents)
var/atom/movable/AM = X
SEND_SIGNAL(AM, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(AM, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
AM.clean_blood()
AM.machine_wash(src)
busy = FALSE
+96
View File
@@ -0,0 +1,96 @@
/obj/mecha/combat/neovgre
name = "Neovgre, the Anima Bulwark"
desc = "Nezbere's most powerful creation, a mighty war machine of unmatched power said to have ended wars in a single night."
icon = 'icons/mecha/neovgre.dmi'
icon_state = "neovgre"
max_integrity = 500 //This is THE ratvarian superweaon, its deployment is an investment
armor = list("melee" = 50, "bullet" = 40, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) //Its similar to the clockwork armour albeit with a few buffs becuase RATVARIAN SUPERWEAPON!!
force = 50 //SMASHY SMASHY!!
internal_damage_threshold = 0
step_in = 3
pixel_x = -16
layer = ABOVE_MOB_LAYER
breach_time = 100 //ten seconds till all goes to shit
recharge_rate = 100
wreckage = /obj/structure/mecha_wreckage/durand/neovgre
/obj/mecha/combat/neovgre/GrantActions(mob/living/user, human_occupant = 0) //No Eject action for you sonny jim, your life for Ratvar!
internals_action.Grant(user, src)
cycle_action.Grant(user, src)
lights_action.Grant(user, src)
stats_action.Grant(user, src)
strafing_action.Grant(user, src)
/obj/mecha/combat/neovgre/RemoveActions(mob/living/user, human_occupant = 0)
internals_action.Remove(user)
cycle_action.Remove(user)
lights_action.Remove(user)
stats_action.Remove(user)
strafing_action.Remove(user)
/obj/mecha/combat/neovgre/MouseDrop_T(mob/M, mob/user)
if(!is_servant_of_ratvar(user))
to_chat(user, "<span class='brass'>BEGONE HERETIC!</span>")
return
else
..()
/obj/mecha/combat/neovgre/moved_inside(mob/living/carbon/human/H)
var/list/Itemlist = H.get_contents()
for(var/obj/item/clockwork/slab/W in Itemlist)
to_chat(H, "<span class='brass'>You safely store [W] inside [src].</span>")
qdel(W)
. = ..()
/obj/mecha/combat/neovgre/obj_destruction()
for(var/mob/M in src)
to_chat(M, "<span class='brass'>You are consumed by the fires raging within Neovgre...</span>")
M.dust()
playsound(src, 'sound/magic/lightning_chargeup.ogg', 100, 0)
src.visible_message("<span class = 'userdanger'>The reactor has gone critical, its going to blow!</span>")
addtimer(CALLBACK(src,.proc/go_critical),breach_time)
/obj/mecha/combat/neovgre/proc/go_critical()
explosion(get_turf(loc), 3, 5, 10, 20, 30)
Destroy(src)
/obj/mecha/combat/neovgre/container_resist(mob/living/user)
to_chat(user, "<span class='brass'>Neovgre requires a lifetime commitment friend, no backing out now!</span>")
return
/obj/mecha/combat/neovgre/process()
..()
if(GLOB.ratvar_awakens) // At this point only timley intervention by lord singulo could hople to stop the superweapon
cell.charge = INFINITY
max_integrity = INFINITY
obj_integrity = max_integrity
CHECK_TICK //Just to be on the safe side lag wise
else if(cell.charge < cell.maxcharge)
for(var/obj/effect/clockwork/sigil/transmission/T in range(SIGIL_ACCESS_RANGE, src))
var/delta = min(recharge_rate, cell.maxcharge - cell.charge)
if (get_clockwork_power() <= delta)
cell.charge += delta
adjust_clockwork_power(-delta)
CHECK_TICK
/obj/mecha/combat/neovgre/Initialize()
.=..()
GLOB.neovgre_exists ++
var/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/neovgre/N = new
N.attach(src)
/obj/structure/mecha_wreckage/durand/neovgre
name = "\improper Neovgre wreckage?"
desc = "On closer inspection this looks like the wreck of a durand with some spraypainted cardboard duct taped to it!"
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/neovgre
equip_cooldown = 8 //Rapid fire heavy laser cannon, simple yet elegant
energy_drain = 30
name = "Aribter Laser Cannon"
desc = "Please re-attach this to neovgre and stop asking questions about why it looks like a normal Nanotrasen issue Solaris laser cannon - Nezbere"
fire_sound = "sound/weapons/neovgre_laser.ogg"
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy/neovgre/can_attach(obj/mecha/combat/neovgre/M)
if(istype(M))
return 1
return 0
+2
View File
@@ -49,6 +49,8 @@
var/lights = FALSE
var/lights_power = 6
var/last_user_hud = 1 // used to show/hide the mecha hud while preserving previous preference
var/breach_time = 0
var/recharge_rate = 0
var/bumpsmash = 0 //Whether or not the mech destroys walls by running into it.
//inner atmos
@@ -8,6 +8,7 @@
/obj/effect/decal/cleanable/Initialize(mapload, list/datum/disease/diseases)
. = ..()
LAZYINITLIST(blood_DNA) //Kinda needed
if (random_icon_states && (icon_state == initial(icon_state)) && length(random_icon_states) > 0)
icon_state = pick(random_icon_states)
create_reagents(300)
@@ -27,7 +28,7 @@
/obj/effect/decal/cleanable/proc/replace_decal(obj/effect/decal/cleanable/C) // Returns true if we should give up in favor of the pre-existing decal
if(mergeable_decal)
return TRUE
qdel(C)
/obj/effect/decal/cleanable/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks))
@@ -81,7 +82,9 @@
add_blood = bloodiness
bloodiness -= add_blood
S.bloody_shoes[blood_state] = min(MAX_SHOE_BLOODINESS,S.bloody_shoes[blood_state]+add_blood)
S.add_blood_DNA(return_blood_DNA())
if(blood_DNA && blood_DNA.len)
S.add_blood_DNA(blood_DNA)
S.add_blood_overlay()
S.blood_state = blood_state
update_icon()
H.update_inv_shoes()
@@ -90,4 +93,4 @@
if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY))
return bloodiness
else
return 0
return FALSE
@@ -1,71 +1,72 @@
// Note: BYOND is object oriented. There is no reason for this to be copy/pasted blood code.
/obj/effect/decal/cleanable/xenoblood
/obj/effect/decal/cleanable/blood/xeno
name = "xeno blood"
desc = "It's green and acidic. It looks like... <i>blood?</i>"
icon = 'icons/effects/blood.dmi'
icon_state = "xfloor1"
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
bloodiness = BLOOD_AMOUNT_PER_DECAL
blood_state = BLOOD_STATE_XENO
color = BLOOD_COLOR_XENO
/obj/effect/decal/cleanable/xenoblood/Initialize()
/obj/effect/decal/cleanable/blood/splatter/xeno
color = BLOOD_COLOR_XENO
/obj/effect/decal/cleanable/blood/gibs/xeno
color = BLOOD_COLOR_XENO
gibs_reagent_id = "liquidxenogibs"
gibs_bloodtype = "X*"
/obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases)
. = ..()
add_blood_DNA(list("UNKNOWN DNA" = "X*"))
update_icon()
/obj/effect/decal/cleanable/xenoblood/xsplatter
random_icon_states = list("xgibbl1", "xgibbl2", "xgibbl3", "xgibbl4", "xgibbl5")
/obj/effect/decal/cleanable/blood/gibs/xeno/update_icon()
add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY)
cut_overlays()
var/mutable_appearance/flesh = mutable_appearance(icon, "[icon_state]x_flesh")
flesh.appearance_flags = RESET_COLOR
flesh.color = body_colors
add_overlay(flesh)
/obj/effect/decal/cleanable/xenoblood/xgibs
name = "xeno gibs"
desc = "Gnarly..."
icon = 'icons/effects/blood.dmi'
icon_state = "xgib1"
layer = LOW_OBJ_LAYER
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6")
mergeable_decal = FALSE
/obj/effect/decal/cleanable/xenoblood/xgibs/proc/streak(list/directions)
/obj/effect/decal/cleanable/blood/gibs/xeno/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
sleep(2)
if(i > 0)
new /obj/effect/decal/cleanable/xenoblood/xsplatter(loc)
var/list/datum/disease/diseases
GET_COMPONENT(infective, /datum/component/infective)
if(infective)
diseases = infective.diseases
var/obj/effect/decal/cleanable/blood/splatter/xeno/splat = new /obj/effect/decal/cleanable/blood/splatter/xeno(loc, diseases)
splat.transfer_blood_dna(blood_DNA, diseases)
if(!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/xenoblood/xgibs/ex_act()
return
/obj/effect/decal/cleanable/blood/gibs/xeno/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
/obj/effect/decal/cleanable/xenoblood/xgibs/up
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibup1","xgibup1","xgibup1")
/obj/effect/decal/cleanable/blood/gibs/xeno/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
/obj/effect/decal/cleanable/xenoblood/xgibs/down
random_icon_states = list("xgib1", "xgib2", "xgib3", "xgib4", "xgib5", "xgib6","xgibdown1","xgibdown1","xgibdown1")
/obj/effect/decal/cleanable/blood/gibs/xeno/body
random_icon_states = list("gibhead", "gibtorso")
/obj/effect/decal/cleanable/xenoblood/xgibs/body
random_icon_states = list("xgibhead", "xgibtorso")
/obj/effect/decal/cleanable/blood/gibs/xeno/torso
random_icon_states = list("gibtorso")
/obj/effect/decal/cleanable/xenoblood/xgibs/torso
random_icon_states = list("xgibtorso")
/obj/effect/decal/cleanable/blood/gibs/xeno/limb
random_icon_states = list("gibleg", "gibarm")
/obj/effect/decal/cleanable/xenoblood/xgibs/limb
random_icon_states = list("xgibleg", "xgibarm")
/obj/effect/decal/cleanable/blood/gibs/xeno/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
/obj/effect/decal/cleanable/xenoblood/xgibs/core
random_icon_states = list("xgibmid1", "xgibmid2", "xgibmid3")
/obj/effect/decal/cleanable/xenoblood/xgibs/larva
/obj/effect/decal/cleanable/blood/gibs/xeno/larva
random_icon_states = list("xgiblarva1", "xgiblarva2")
/obj/effect/decal/cleanable/xenoblood/xgibs/larva/body
/obj/effect/decal/cleanable/blood/gibs/xeno/larva/body
random_icon_states = list("xgiblarvahead", "xgiblarvatorso")
/obj/effect/decal/cleanable/blood/xtracks
icon_state = "xtracks"
icon_state = "tracks"
random_icon_states = null
/obj/effect/decal/cleanable/blood/xtracks/Initialize()
. = ..()
add_blood_DNA(list("Unknown DNA" = "X*"))
add_blood_DNA(list("UNKNOWN DNA" = "X*"))
. = ..()
@@ -0,0 +1,233 @@
/obj/effect/decal/cleanable/blood/gibs
name = "gibs"
desc = "They look bloody and gruesome."
icon_state = "gibbl5"
layer = LOW_OBJ_LAYER
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
mergeable_decal = FALSE
var/body_colors = "#e3ba84" //a default color just in case.
var/gibs_reagent_id = "liquidgibs"
var/gibs_bloodtype = "A+"
/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases)
. = ..()
if(random_icon_states && (icon_state == initial(icon_state)) && length(random_icon_states) > 0)
icon_state = pick(random_icon_states)
if(gibs_reagent_id)
reagents.add_reagent(gibs_reagent_id, 5)
if(gibs_bloodtype)
add_blood_DNA(list("Non-human DNA" = gibs_bloodtype, diseases))
update_icon()
/obj/effect/decal/cleanable/blood/gibs/update_icon()
add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY)
cut_overlays()
var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]_guts")
guts.appearance_flags = RESET_COLOR
add_overlay(guts)
var/mutable_appearance/flesh = mutable_appearance(icon, "[icon_state]_flesh")
flesh.appearance_flags = RESET_COLOR
flesh.color = body_colors
add_overlay(flesh)
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
return
/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L)
if(istype(L) && has_gravity(loc))
playsound(loc, 'sound/effects/gib_step.ogg', !HAS_TRAIT(L,TRAIT_LIGHT_STEP) ? 20 : 50, 1)
. = ..()
/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
sleep(2)
if(i > 0)
var/list/datum/disease/diseases
GET_COMPONENT(infective, /datum/component/infective)
if(infective)
diseases = infective.diseases
var/obj/effect/decal/cleanable/blood/splatter/splat = new /obj/effect/decal/cleanable/blood/splatter(loc, diseases)
splat.transfer_blood_dna(blood_DNA, diseases)
if(!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/blood/gibs/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
/obj/effect/decal/cleanable/blood/gibs/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
/obj/effect/decal/cleanable/blood/gibs/body
random_icon_states = list("gibhead", "gibtorso")
/obj/effect/decal/cleanable/blood/gibs/torso
random_icon_states = list("gibtorso")
/obj/effect/decal/cleanable/blood/gibs/limb
random_icon_states = list("gibleg", "gibarm")
/obj/effect/decal/cleanable/blood/gibs/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
/obj/effect/decal/cleanable/blood/gibs/old
name = "old rotting gibs"
desc = "Space Jesus, why didn't anyone clean this up? It smells terrible."
bloodiness = 0
/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases)
. = ..()
setDir(pick(GLOB.cardinals))
icon_state += "-old"
update_icon()
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
desc = "It's gooey."
icon_state = "1"
random_icon_states = list("drip1","drip2","drip3","drip4","drip5")
bloodiness = 0
var/drips = 1
/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in()
return TRUE
/obj/effect/decal/cleanable/blood/gibs/human
/obj/effect/decal/cleanable/blood/gibs/human/Initialize(mapload, list/datum/disease/diseases)
. = ..()
update_icon()
/obj/effect/decal/cleanable/blood/gibs/human/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
/obj/effect/decal/cleanable/blood/gibs/human/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
/obj/effect/decal/cleanable/blood/gibs/human/body
random_icon_states = list("gibhead", "gibtorso")
/obj/effect/decal/cleanable/blood/gibs/human/torso
random_icon_states = list("gibtorso")
/obj/effect/decal/cleanable/blood/gibs/human/limb
random_icon_states = list("gibleg", "gibarm")
/obj/effect/decal/cleanable/blood/gibs/human/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
//Lizards
/obj/effect/decal/cleanable/blood/gibs/human/lizard
body_colors = "117720"
gibs_reagent_id = "liquidgibs"
gibs_bloodtype = "L"
/obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases)
. = ..()
update_icon()
/obj/effect/decal/cleanable/blood/gibs/human/lizard/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
/obj/effect/decal/cleanable/blood/gibs/human/lizard/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
/obj/effect/decal/cleanable/blood/gibs/human/lizard/body
random_icon_states = list("gibhead", "gibtorso")
/obj/effect/decal/cleanable/blood/gibs/human/lizard/torso
random_icon_states = list("gibtorso")
/obj/effect/decal/cleanable/blood/gibs/human/lizard/limb
random_icon_states = list("gibleg", "gibarm")
/obj/effect/decal/cleanable/blood/gibs/human/lizard/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
// Slime Gibs
/obj/effect/decal/cleanable/blood/gibs/slime
desc = "They look gooey and gruesome."
gibs_reagent_id = "liquidslimegibs"
gibs_bloodtype = "GEL"
/obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases)
. = ..()
update_icon()
/obj/effect/decal/cleanable/blood/gibs/slime/update_icon()
add_atom_colour(body_colors, FIXED_COLOUR_PRIORITY)
cut_overlays()
var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]s_guts")
guts.appearance_flags = RESET_COLOR
guts.color = body_colors
add_overlay(guts)
var/mutable_appearance/flesh = mutable_appearance(icon, "[icon_state]_flesh")
flesh.appearance_flags = RESET_COLOR
flesh.color = body_colors
add_overlay(flesh)
/obj/effect/decal/cleanable/blood/gibs/slime/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
/obj/effect/decal/cleanable/blood/gibs/slime/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
/obj/effect/decal/cleanable/blood/gibs/slime/body
random_icon_states = list("gibhead", "gibtorso")
/obj/effect/decal/cleanable/blood/gibs/slime/torso
random_icon_states = list("gibtorso")
/obj/effect/decal/cleanable/blood/gibs/slime/limb
random_icon_states = list("gibleg", "gibarm")
/obj/effect/decal/cleanable/blood/gibs/slime/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
/obj/effect/decal/cleanable/blood/gibs/synth
desc = "They look sludgy and disgusting."
gibs_reagent_id = "liquidsyntheticgibs"
gibs_bloodtype = "SY"
/obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases)
. = ..()
update_icon()
//IPCs
/obj/effect/decal/cleanable/blood/gibs/ipc
desc = "They look sharp yet oozing."
body_colors = "00ff00"
gibs_reagent_id = "liquidoilgibs"
gibs_bloodtype = "HF"
/obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases)
. = ..()
update_icon()
/obj/effect/decal/cleanable/blood/gibs/ipc/update_icon()
add_atom_colour(blood_DNA_to_color(), FIXED_COLOUR_PRIORITY)
cut_overlays()
var/mutable_appearance/guts = mutable_appearance(icon, "[icon_state]r-overlay")
guts.appearance_flags = RESET_COLOR
add_overlay(guts)
/obj/effect/decal/cleanable/blood/gibs/ipc/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
/obj/effect/decal/cleanable/blood/gibs/ipc/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
/obj/effect/decal/cleanable/blood/gibs/ipc/body
random_icon_states = list("gibhead", "gibtorso")
/obj/effect/decal/cleanable/blood/gibs/ipc/torso
random_icon_states = list("gibtorso")
/obj/effect/decal/cleanable/blood/gibs/ipc/limb
random_icon_states = list("gibleg", "gibarm")
/obj/effect/decal/cleanable/blood/gibs/ipc/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
@@ -1,31 +1,45 @@
/obj/effect/decal/cleanable/blood
name = "blood"
desc = "It's red and gooey. Perhaps it's the chef's cooking?"
desc = "It's gooey. Perhaps it's the chef's cooking?"
icon = 'icons/effects/blood.dmi'
icon_state = "floor1"
random_icon_states = list("floor1", "floor2", "floor3", "floor4", "floor5", "floor6", "floor7")
blood_state = BLOOD_STATE_HUMAN
bloodiness = BLOOD_AMOUNT_PER_DECAL
blood_state = BLOOD_STATE_BLOOD
bloodiness = MAX_SHOE_BLOODINESS
color = BLOOD_COLOR_HUMAN //default so we don't have white splotches everywhere.
/obj/effect/decal/cleanable/blood/replace_decal(obj/effect/decal/cleanable/blood/C)
C.add_blood_DNA(return_blood_DNA())
if (bloodiness)
if (C.bloodiness < MAX_SHOE_BLOODINESS)
C.bloodiness += bloodiness
return ..()
if (C.blood_DNA)
blood_DNA |= C.blood_DNA.Copy()
update_icon()
..()
/obj/effect/decal/cleanable/blood/transfer_blood_dna()
..()
update_icon()
/obj/effect/decal/cleanable/blood/transfer_mob_blood_dna()
. = ..()
update_icon()
/obj/effect/decal/cleanable/blood/update_icon()
color = blood_DNA_to_color()
/obj/effect/decal/cleanable/blood/old
name = "dried blood"
desc = "Looks like it's been here a while. Eew."
desc = "Looks like it's been here a while. Eew."
bloodiness = 0
/obj/effect/decal/cleanable/blood/old/Initialize(mapload, list/datum/disease/diseases)
icon_state += "-old" //This IS necessary because the parent /blood type uses icon randomization.
add_blood_DNA(list("Non-human DNA" = "A+")) // Needs to happen before ..()
return ..()
..()
icon_state += "-old"
add_blood_DNA(list("Non-human DNA" = "A+"))
/obj/effect/decal/cleanable/blood/splats
random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
/obj/effect/decal/cleanable/blood/splatter
random_icon_states = list("gibbl1", "gibbl2", "gibbl3", "gibbl4", "gibbl5")
random_icon_states = list("splatter1", "splatter2", "splatter3", "splatter4", "splatter5")
/obj/effect/decal/cleanable/blood/tracks
icon_state = "tracks"
@@ -39,84 +53,23 @@
random_icon_states = null
var/list/existing_dirs = list()
/obj/effect/decal/cleanable/trail_holder/update_icon()
color = blood_DNA_to_color()
/obj/effect/cleanable/trail_holder/Initialize()
. = ..()
update_icon()
/obj/effect/decal/cleanable/trail_holder/can_bloodcrawl_in()
return TRUE
/obj/effect/decal/cleanable/blood/gibs
name = "gibs"
desc = "They look bloody and gruesome."
icon = 'icons/effects/blood.dmi'
icon_state = "gibbl5"
layer = LOW_OBJ_LAYER
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
mergeable_decal = FALSE
/obj/effect/decal/cleanable/trail_holder/transfer_blood_dna()
..()
update_icon()
/obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases)
/obj/effect/decal/cleanable/trail_holder/transfer_mob_blood_dna()
. = ..()
reagents.add_reagent("liquidgibs", 5)
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
return
/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L)
if(istype(L) && has_gravity(loc))
playsound(loc, 'sound/effects/gib_step.ogg', HAS_TRAIT(L, TRAIT_LIGHT_STEP) ? 20 : 50, 1)
. = ..()
/obj/effect/decal/cleanable/blood/gibs/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
for(var/i = 0, i < pick(1, 200; 2, 150; 3, 50), i++)
sleep(2)
if(i > 0)
var/list/datum/disease/diseases
GET_COMPONENT(infective, /datum/component/infective)
if(infective)
diseases = infective.diseases
new /obj/effect/decal/cleanable/blood/splatter(loc, diseases)
if(!step_to(src, get_step(src, direction), 0))
break
/obj/effect/decal/cleanable/blood/gibs/up
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibup1","gibup1","gibup1")
/obj/effect/decal/cleanable/blood/gibs/down
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6","gibdown1","gibdown1","gibdown1")
/obj/effect/decal/cleanable/blood/gibs/body
random_icon_states = list("gibhead", "gibtorso")
/obj/effect/decal/cleanable/blood/gibs/torso
random_icon_states = list("gibtorso")
/obj/effect/decal/cleanable/blood/gibs/limb
random_icon_states = list("gibleg", "gibarm")
/obj/effect/decal/cleanable/blood/gibs/core
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
/obj/effect/decal/cleanable/blood/gibs/old
name = "old rotting gibs"
desc = "Space Jesus, why didn't anyone clean this up? It smells terrible."
bloodiness = 0
/obj/effect/decal/cleanable/blood/gibs/old/Initialize(mapload, list/datum/disease/diseases)
. = ..()
setDir(pick(1,2,4,8))
icon_state += "-old"
add_blood_DNA(list("Non-human DNA" = "A+"))
/obj/effect/decal/cleanable/blood/drip
name = "drips of blood"
desc = "It's red."
icon_state = "1"
random_icon_states = list("drip1","drip2","drip3","drip4","drip5")
bloodiness = 0
var/drips = 1
/obj/effect/decal/cleanable/blood/drip/can_bloodcrawl_in()
return TRUE
update_icon()
//BLOODY FOOTPRINTS
/obj/effect/decal/cleanable/blood/footprints
@@ -127,15 +80,16 @@
random_icon_states = null
var/entered_dirs = 0
var/exited_dirs = 0
blood_state = BLOOD_STATE_HUMAN //the icon state to load images from
blood_state = BLOOD_STATE_BLOOD //the icon state to load images from
var/list/shoe_types = list()
/obj/effect/decal/cleanable/blood/footprints/Crossed(atom/movable/O)
..()
if(ishuman(O))
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
if(S && S.bloody_shoes[blood_state])
if(color != bloodtype_to_color(S.last_bloodtype))
return
S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0)
shoe_types |= S.type
if (!(entered_dirs & H.dir))
@@ -143,21 +97,21 @@
update_icon()
/obj/effect/decal/cleanable/blood/footprints/Uncrossed(atom/movable/O)
..()
if(ishuman(O))
var/mob/living/carbon/human/H = O
var/obj/item/clothing/shoes/S = H.shoes
if(S && S.bloody_shoes[blood_state])
if(color != bloodtype_to_color(S.last_bloodtype))//last entry - we check its color
return
S.bloody_shoes[blood_state] = max(S.bloody_shoes[blood_state] - BLOOD_LOSS_PER_STEP, 0)
shoe_types |= S.type
if (!(exited_dirs & H.dir))
exited_dirs |= H.dir
update_icon()
/obj/effect/decal/cleanable/blood/footprints/update_icon()
..()
cut_overlays()
for(var/Ddir in GLOB.cardinals)
if(entered_dirs & Ddir)
var/image/bloodstep_overlay = GLOB.bloody_footprints_cache["entered-[blood_state]-[Ddir]"]
@@ -170,7 +124,7 @@
GLOB.bloody_footprints_cache["exited-[blood_state]-[Ddir]"] = bloodstep_overlay = image(icon, "[blood_state]2", dir = Ddir)
add_overlay(bloodstep_overlay)
alpha = BLOODY_FOOTPRINT_BASE_ALPHA+bloodiness
alpha = BLOODY_FOOTPRINT_BASE_ALPHA + bloodiness
/obj/effect/decal/cleanable/blood/footprints/examine(mob/user)
@@ -179,16 +133,62 @@
. += "You recognise the footprints as belonging to:\n"
for(var/shoe in shoe_types)
var/obj/item/clothing/shoes/S = shoe
. += "[icon2html(initial(S.icon), user)] Some <B>[initial(S.name)]</B>.\n"
. += "some <B>[initial(S.name)]</B> [icon2html(initial(S.icon), user)]\n"
to_chat(user, .)
/obj/effect/decal/cleanable/blood/footprints/replace_decal(obj/effect/decal/cleanable/C)
if(blood_state != C.blood_state) //We only replace footprints of the same type as us
return
if(color != C.color)
return
..()
/obj/effect/decal/cleanable/blood/footprints/can_bloodcrawl_in()
if((blood_state != BLOOD_STATE_OIL) && (blood_state != BLOOD_STATE_NOT_BLOODY))
return 1
return 0
return TRUE
return FALSE
/* Eventually TODO: make snowflake trails like baycode's
/obj/effect/decal/cleanable/blood/footprints/tracks/shoe
name = "footprints"
desc = "They look like tracks left by footwear."
icon_state = FOOTPRINT_SHOE
print_state = FOOTPRINT_SHOE
/obj/effect/decal/cleanable/blood/footprints/tracks/foot
name = "footprints"
desc = "They look like tracks left by a bare foot."
icon_state = FOOTPRINT_FOOT
print_state = FOOTPRINT_FOOT
/obj/effect/decal/cleanable/blood/footprints/tracks/snake
name = "tracks"
desc = "They look like tracks left by a giant snake."
icon_state = FOOTPRINT_SNAKE
print_state = FOOTPRINT_SNAKE
/obj/effect/decal/cleanable/blood/footprints/tracks/paw
name = "footprints"
desc = "They look like tracks left by paws."
icon_state = FOOTPRINT_PAW
print_state = FOOTPRINT_PAW
/obj/effect/decal/cleanable/blood/footprints/tracks/claw
name = "footprints"
desc = "They look like tracks left by claws."
icon_state = FOOTPRINT_CLAW
print_state = FOOTPRINT_CLAW
/obj/effect/decal/cleanable/blood/footprints/tracks/wheels
name = "tracks"
desc = "They look like tracks left by wheels."
gender = PLURAL
icon_state = FOOTPRINT_WHEEL
print_state = FOOTPRINT_WHEEL
/obj/effect/decal/cleanable/blood/footprints/tracks/body
name = "trails"
desc = "A trail left by something being dragged."
icon_state = FOOTPRINT_DRAG
print_state = FOOTPRINT_DRAG */
@@ -11,6 +11,10 @@
bloodiness = BLOOD_AMOUNT_PER_DECAL
mergeable_decal = FALSE
/obj/effect/decal/cleanable/robot_debris/Initialize(mapload, list/datum/disease/diseases)
. = ..()
reagents.add_reagent("liquidoilgibs", 5)
/obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions)
set waitfor = 0
var/direction = pick(directions)
@@ -50,6 +54,7 @@
/obj/effect/decal/cleanable/oil/Initialize()
. = ..()
reagents.add_reagent("oil", 30)
reagents.add_reagent("liquidoilgibs", 5)
/obj/effect/decal/cleanable/oil/streak
random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5")
+175 -52
View File
@@ -1,25 +1,69 @@
/obj/effect/gibspawner
var/sparks = 0 //whether sparks spread
var/sparks = FALSE //whether sparks spread
var/virusProb = 20 //the chance for viruses to spread on the gibs
var/gib_mob_type //generate a fake mob to transfer DNA from if we weren't passed a mob.
var/gib_mob_species //We'll want to nip-pick their species for blood type stuff
var/sound_to_play = 'sound/effects/blobattack.ogg'
var/sound_vol = 60
var/list/gibtypes = list() //typepaths of the gib decals to spawn
var/list/gibamounts = list() //amount to spawn for each gib decal type we'll spawn.
var/list/gibdirections = list() //of lists of possible directions to spread each gib decal type towards.
/obj/effect/gibspawner/Initialize(mapload, datum/dna/MobDNA, list/datum/disease/diseases)
/obj/effect/gibspawner/Initialize(mapload, mob/living/source_mob, list/datum/disease/diseases)
. = ..()
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
to_chat(world, "<span class='danger'>Gib list length mismatch!</span>")
if(gibtypes.len != gibamounts.len)
stack_trace("Gib list amount length mismatch!")
return
if(gibamounts.len != gibdirections.len)
stack_trace("Gib list dir length mismatch!")
return
var/obj/effect/decal/cleanable/blood/gibs/gib = null
if(sound_to_play && isnum(sound_vol))
playsound(src, sound_to_play, sound_vol, TRUE)
if(sparks)
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(2, 1, loc)
s.start()
var/list/dna_to_add //find the dna to pass to the spawned gibs. do note this can be null if the mob doesn't have blood. add_blood_DNA() has built in null handling.
var/body_coloring = ""
if(source_mob)
dna_to_add = source_mob.get_blood_dna_list() //ez pz
if(ishuman(source_mob))
var/mob/living/carbon/human/H = source_mob
if(H.dna.species.use_skintones)
body_coloring = "#[skintone2hex(H.skin_tone)]"
else
body_coloring = "#[H.dna.features["mcolor"]]"
else if(gib_mob_type)
var/mob/living/temp_mob = new gib_mob_type(src) //generate a fake mob so that we pull the right type of DNA for the gibs.
if(gib_mob_species)
if(ishuman(temp_mob))
var/mob/living/carbon/human/H = temp_mob
H.set_species(gib_mob_species)
dna_to_add = temp_mob.get_blood_dna_list()
if(H.dna.species.use_skintones)
body_coloring = "#[skintone2hex(H.skin_tone)]"
else
body_coloring = "#[H.dna.features["mcolor"]]"
qdel(H)
else
dna_to_add = temp_mob.get_blood_dna_list()
qdel(temp_mob)
else if(!issilicon(temp_mob))
dna_to_add = temp_mob.get_blood_dna_list()
qdel(temp_mob)
else
qdel(temp_mob)
else
dna_to_add = list("Non-human DNA" = random_blood_type()) //else, generate a random bloodtype for it.
for(var/i = 1, i<= gibtypes.len, i++)
if(gibamounts[i])
for(var/j = 1, j<= gibamounts[i], j++)
@@ -29,10 +73,11 @@
var/mob/living/carbon/digester = loc
digester.stomach_contents += gib
if(MobDNA)
if(dna_to_add && dna_to_add.len)
gib.add_blood_DNA(dna_to_add)
gib.body_colors = body_coloring
gib.update_icon()
else if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey
gib.add_blood_DNA(list("Non-human DNA" = "A+"))
var/list/directions = gibdirections[i]
if(isturf(loc))
if(directions.len)
@@ -41,80 +86,158 @@
return INITIALIZE_HINT_QDEL
/obj/effect/gibspawner/generic
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core)
gibamounts = list(2,2,1)
gibamounts = list(2, 2, 1)
sound_vol = 40
/obj/effect/gibspawner/generic/Initialize()
playsound(src, 'sound/effects/blobattack.ogg', 40, 1)
gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list())
. = ..()
if(!gibdirections.len)
gibdirections = list(list(WEST, NORTHWEST, SOUTHWEST, NORTH),list(EAST, NORTHEAST, SOUTHEAST, SOUTH), list())
return ..()
/obj/effect/gibspawner/generic/animal
gib_mob_type = /mob/living/simple_animal/pet
/obj/effect/gibspawner/human
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up, /obj/effect/decal/cleanable/blood/gibs/down, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/body, /obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/decal/cleanable/blood/gibs/core)
gibamounts = list(1,1,1,1,1,1,1)
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/up, /obj/effect/decal/cleanable/blood/gibs/human/down, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/body, /obj/effect/decal/cleanable/blood/gibs/human/limb, /obj/effect/decal/cleanable/blood/gibs/human/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/human
gib_mob_species = /datum/species/human
sound_vol = 50
/obj/effect/gibspawner/human/Initialize()
playsound(src, 'sound/effects/blobattack.ogg', 50, 1)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
. = ..()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/humanbodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/torso)
/obj/effect/gibspawner/human/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/core, /obj/effect/decal/cleanable/blood/gibs/human, /obj/effect/decal/cleanable/blood/gibs/human/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/humanbodypartless/Initialize()
playsound(src, 'sound/effects/blobattack.ogg', 50, 1)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
. = ..()
/obj/effect/gibspawner/human/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/lizard
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard/up, /obj/effect/decal/cleanable/blood/gibs/human/lizard/down, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/body, /obj/effect/decal/cleanable/blood/gibs/human/lizard/limb, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/human/species/lizard
gib_mob_species = /datum/species/lizard
sound_vol = 50
/obj/effect/gibspawner/lizard/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/lizard/bodypartless
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/core, /obj/effect/decal/cleanable/blood/gibs/human/lizard, /obj/effect/decal/cleanable/blood/gibs/human/lizard/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/lizard/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/slime
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime/up, /obj/effect/decal/cleanable/blood/gibs/slime/down, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/body, /obj/effect/decal/cleanable/blood/gibs/slime/limb, /obj/effect/decal/cleanable/blood/gibs/slime/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/human/species/roundstartslime
gib_mob_species = /datum/species/jelly/roundstartslime
sound_vol = 50
/obj/effect/gibspawner/slime/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/slime/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/core, /obj/effect/decal/cleanable/blood/gibs/slime, /obj/effect/decal/cleanable/blood/gibs/slime/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/slime/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/ipc
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc/up, /obj/effect/decal/cleanable/blood/gibs/ipc/down, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/body, /obj/effect/decal/cleanable/blood/gibs/ipc/limb, /obj/effect/decal/cleanable/blood/gibs/ipc/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/human/species/ipc
gib_mob_species = /datum/species/ipc
sound_vol = 50
sparks = TRUE
sound_to_play = 'sound/effects/bang.ogg'
/obj/effect/gibspawner/ipc/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/ipc/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/core, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/core, /obj/effect/decal/cleanable/blood/gibs/ipc, /obj/effect/decal/cleanable/blood/gibs/ipc/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/ipc/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/xeno
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/up, /obj/effect/decal/cleanable/xenoblood/xgibs/down, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/body, /obj/effect/decal/cleanable/xenoblood/xgibs/limb, /obj/effect/decal/cleanable/xenoblood/xgibs/core)
gibamounts = list(1,1,1,1,1,1,1)
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/up, /obj/effect/decal/cleanable/blood/gibs/xeno/down, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/body, /obj/effect/decal/cleanable/blood/gibs/xeno/limb, /obj/effect/decal/cleanable/blood/gibs/xeno/core)
gibamounts = list(1, 1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien
/obj/effect/gibspawner/xeno/Initialize()
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
. = ..()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/xenobodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/core, /obj/effect/decal/cleanable/xenoblood/xgibs, /obj/effect/decal/cleanable/xenoblood/xgibs/torso)
/obj/effect/gibspawner/xeno/bodypartless //only the gibs that don't look like actual full bodyparts (except torso).
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/core, /obj/effect/decal/cleanable/blood/gibs/xeno, /obj/effect/decal/cleanable/blood/gibs/xeno/torso)
gibamounts = list(1, 1, 1, 1, 1, 1)
/obj/effect/gibspawner/xeno/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
return ..()
/obj/effect/gibspawner/xenobodypartless/Initialize()
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, list())
. = ..()
/obj/effect/gibspawner/xeno/xenoperson
gib_mob_type = /mob/living/carbon/human/species/xeno
gib_mob_species = /datum/species/xeno
/obj/effect/gibspawner/xeno/xenoperson/bodypartless
/obj/effect/gibspawner/larva
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body, /obj/effect/decal/cleanable/xenoblood/xgibs/larva/body)
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva/body, /obj/effect/decal/cleanable/blood/gibs/xeno/larva/body)
gibamounts = list(1, 1, 1, 1)
gib_mob_type = /mob/living/carbon/alien/larva
/obj/effect/gibspawner/larva/Initialize()
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs)
. = ..()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list(), GLOB.alldirs)
return ..()
/obj/effect/gibspawner/larvabodypartless
gibtypes = list(/obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva, /obj/effect/decal/cleanable/xenoblood/xgibs/larva)
/obj/effect/gibspawner/larva/bodypartless
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva, /obj/effect/decal/cleanable/blood/gibs/xeno/larva)
gibamounts = list(1, 1, 1)
/obj/effect/gibspawner/larvabodypartless/Initialize()
playsound(src, 'sound/effects/blobattack.ogg', 60, 1)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list())
. = ..()
/obj/effect/gibspawner/larva/bodypartless/Initialize()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST), list())
return ..()
/obj/effect/gibspawner/robot
sparks = 1
sparks = TRUE
gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris/limb)
gibamounts = list(1,1,1,1,1,1)
gibamounts = list(1, 1, 1, 1, 1, 1)
gib_mob_type = /mob/living/silicon/robot
/obj/effect/gibspawner/robot/Initialize()
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs)
gibamounts[6] = pick(0,1,2)
. = ..()
if(!gibdirections.len)
gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs)
gibamounts[6] = pick(0, 1, 2)
return ..()
@@ -6,7 +6,9 @@
layer = BELOW_MOB_LAYER
var/splatter_type = "splatter"
/obj/effect/temp_visual/dir_setting/bloodsplatter/Initialize(mapload, set_dir)
/obj/effect/temp_visual/dir_setting/bloodsplatter/Initialize(mapload, set_dir, new_color)
if(new_color)
color = new_color
if(set_dir in GLOB.diagonals)
icon_state = "[splatter_type][pick(1, 2, 6)]"
else
@@ -41,7 +43,7 @@
animate(src, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = duration)
/obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter
splatter_type = "xsplatter"
color = BLOOD_COLOR_XENO
/obj/effect/temp_visual/dir_setting/speedbike_trail
name = "speedbike trails"
+11 -1
View File
@@ -111,7 +111,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
var/list/grind_results //A reagent list containing the reagents this item produces when ground up in a grinder - this can be an empty list to allow for reagent transferring only
var/list/juice_results //A reagent list containing blah blah... but when JUICED in a grinder!
/obj/item/Initialize()
materials = typelist("materials", materials)
@@ -537,6 +536,17 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
M.become_blind(EYE_DAMAGE)
to_chat(M, "<span class='danger'>You go blind!</span>")
/obj/item/clean_blood()
. = ..()
if(.)
if(blood_splatter_icon)
cut_overlay(blood_splatter_icon)
/obj/item/clothing/gloves/clean_blood()
. = ..()
if(.)
transfer_blood = 0
/obj/item/singularity_pull(S, current_size)
..()
if(current_size >= STAGE_FOUR)
+2 -2
View File
@@ -45,8 +45,8 @@
RemoveInfectionImages()
AddInfectionImages()
/obj/item/organ/body_egg/proc/AddInfectionImages()
/obj/item/organ/body_egg/proc/AddInfectionImages(mob/living/carbon/C)
return
/obj/item/organ/body_egg/proc/RemoveInfectionImages()
/obj/item/organ/body_egg/proc/RemoveInfectionImages(mob/living/carbon/C)
return
+32 -3
View File
@@ -342,12 +342,41 @@ update_label("John Doe", "Clowny")
lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
assignment = "Prisoner"
registered_name = "Scum"
access = list(ACCESS_ENTER_GENPOP)
//Lavaland labor camp
var/goal = 0 //How far from freedom?
var/points = 0
//Genpop
var/sentence = 0 //When world.time is greater than this number, the card will have its ACCESS_ENTER_GENPOP access replaced with ACCESS_LEAVE_GENPOP the next time it's checked, unless this value is 0/null
var/crime= "\[REDACTED\]"
/obj/item/card/id/prisoner/attack_self(mob/user)
to_chat(usr, "<span class='notice'>You have accumulated [points] out of the [goal] points you need for freedom.</span>")
/obj/item/card/id/prisoner/GetAccess()
if((sentence && world.time >= sentence) || (goal && points >= goal))
access = list(ACCESS_LEAVE_GENPOP)
return ..()
/obj/item/card/id/prisoner/process()
if(!sentence)
STOP_PROCESSING(SSobj, src)
return
if(world.time >= sentence)
playsound(loc, 'sound/machines/ping.ogg', 50, 1)
if(isliving(loc))
to_chat(loc, "<span class='boldnotice'>[src]</span><span class='notice'> buzzes: You have served your sentence! You may now exit prison through the turnstiles and collect your belongings.</span>")
STOP_PROCESSING(SSobj, src)
return
/obj/item/card/id/prisoner/examine(mob/user)
. = ..()
if(sentence && world.time < sentence)
to_chat(user, "<span class='notice'>You're currently serving a sentence for [crime]. <b>[DisplayTimeText(sentence - world.time)]</b> left.</span>")
else if(goal)
to_chat(user, "<span class='notice'>You have accumulated [points] out of the [goal] points you need for freedom.</span>")
else if(!sentence)
to_chat(user, "<span class='warning'>You are currently serving a permanent sentence for [crime].</span>")
else
to_chat(user, "<span class='notice'>Your sentence is up! You're free!</span>")
/obj/item/card/id/prisoner/one
name = "Prisoner #13-001"
@@ -31,6 +31,15 @@
/obj/item/stock_parts/manipulator = 1,
/obj/item/stack/sheet/glass = 1)
/obj/item/circuitboard/machine/bloodbankgen
name = "Blood Bank Generator (Machine Board)"
build_path = /obj/machinery/bloodbankgen
req_components = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/manipulator = 1,
/obj/item/stack/cable_coil = 5,
/obj/item/stack/sheet/glass = 1)
/obj/item/circuitboard/machine/clonepod
name = "Clone Pod (Machine Board)"
build_path = /obj/machinery/clonepod
+1 -1
View File
@@ -410,7 +410,7 @@ SLIME SCANNER
msg += "<span class='danger'>Subject is bleeding!</span>\n"
var/blood_percent = round((C.blood_volume / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100)
var/blood_type = C.dna.blood_type
if(blood_id != "blood")//special blood substance
if(blood_id != ("blood" || "jellyblood"))//special blood substance
var/datum/reagent/R = GLOB.chemical_reagents_list[blood_id]
if(R)
blood_type = R.name
+8
View File
@@ -432,6 +432,14 @@
user.mind.teach_crafting_recipe(crafting_recipe_type)
to_chat(user,"<span class='notice'>You learned how to make [initial(R.name)].</span>")
/obj/item/book/granter/crafting_recipe/threads //Durathread crafting book
name = "Credible Threads"
desc = "A simple book about sewing and usefull clothing crafting with cloth and durathreads."
crafting_recipe_types = list(/datum/crafting_recipe/durathread_duffelbag, /datum/crafting_recipe/durathread_toolbelt, /datum/crafting_recipe/durathread_bandolier, /datum/crafting_recipe/durathread_helmet, /datum/crafting_recipe/durathread_vest)
icon_state = "tailers_art1"
oneuse = FALSE
remarks = list("Durathread is cloth thats also fire-resistant?", "Strong threads that can be used with leather for some light weight storage!", "The cloth can withstand a beating it said but not that much...")
/obj/item/book/granter/crafting_recipe/cooking_sweets_101 //We start at 101 for 103 and 105
name = "Cooking Desserts 101"
desc = "A cook book that teaches you some more of the newest desserts. AI approved, and a best seller on Honkplanet."
+1
View File
@@ -27,6 +27,7 @@
/obj/item/mop/proc/clean(turf/A)
if(reagents.has_reagent("water", 1) || reagents.has_reagent("holywater", 1) || reagents.has_reagent("vodka", 1) || reagents.has_reagent("cleaner", 1))
SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM)
A.clean_blood()
for(var/obj/effect/O in A)
if(is_cleanable(O))
qdel(O)
-54
View File
@@ -82,14 +82,6 @@
/obj/item/banner/security/mundane
inspiration_available = FALSE
/datum/crafting_recipe/security_banner
name = "Securistan Banner"
result = /obj/item/banner/security/mundane
time = 40
reqs = list(/obj/item/stack/rods = 2,
/obj/item/clothing/under/rank/security = 1)
category = CAT_MISC
/obj/item/banner/medical
name = "meditopia banner"
desc = "The banner of Meditopia, generous benefactors that cure wounds and shelter the weak."
@@ -103,14 +95,6 @@
/obj/item/banner/medical/check_inspiration(mob/living/carbon/human/H)
return H.stat //Meditopia is moved to help those in need
/datum/crafting_recipe/medical_banner
name = "Meditopia Banner"
result = /obj/item/banner/medical/mundane
time = 40
reqs = list(/obj/item/stack/rods = 2,
/obj/item/clothing/under/rank/medical = 1)
category = CAT_MISC
/obj/item/banner/medical/special_inspiration(mob/living/carbon/human/H)
H.adjustToxLoss(-15)
H.setOxyLoss(0)
@@ -129,14 +113,6 @@
/obj/item/banner/science/check_inspiration(mob/living/carbon/human/H)
return H.on_fire //Sciencia is pleased by dedication to the art of Toxins
/datum/crafting_recipe/science_banner
name = "Sciencia Banner"
result = /obj/item/banner/science/mundane
time = 40
reqs = list(/obj/item/stack/rods = 2,
/obj/item/clothing/under/rank/scientist = 1)
category = CAT_MISC
/obj/item/banner/cargo
name = "cargonia banner"
desc = "The banner of the eternal Cargonia, with the mystical power of conjuring any object into existence."
@@ -147,14 +123,6 @@
/obj/item/banner/cargo/mundane
inspiration_available = FALSE
/datum/crafting_recipe/cargo_banner
name = "Cargonia Banner"
result = /obj/item/banner/cargo/mundane
time = 40
reqs = list(/obj/item/stack/rods = 2,
/obj/item/clothing/under/rank/cargotech = 1)
category = CAT_MISC
/obj/item/banner/engineering
name = "engitopia banner"
desc = "The banner of Engitopia, wielders of limitless power."
@@ -168,14 +136,6 @@
/obj/item/banner/engineering/special_inspiration(mob/living/carbon/human/H)
H.radiation = 0
/datum/crafting_recipe/engineering_banner
name = "Engitopia Banner"
result = /obj/item/banner/engineering/mundane
time = 40
reqs = list(/obj/item/stack/rods = 2,
/obj/item/clothing/under/rank/engineer = 1)
category = CAT_MISC
/obj/item/banner/command
name = "command banner"
desc = "The banner of Command, a staunch and ancient line of bueraucratic kings and queens."
@@ -189,14 +149,6 @@
/obj/item/banner/command/check_inspiration(mob/living/carbon/human/H)
return HAS_TRAIT(H, TRAIT_MINDSHIELD) //Command is stalwart but rewards their allies.
/datum/crafting_recipe/command_banner
name = "Command Banner"
result = /obj/item/banner/command/mundane
time = 40
reqs = list(/obj/item/stack/rods = 2,
/obj/item/clothing/under/captainparade = 1)
category = CAT_MISC
/obj/item/banner/red
name = "red banner"
icon_state = "banner-red"
@@ -286,7 +238,6 @@
var/staffcooldown = 0
var/staffwait = 30
/obj/item/godstaff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
if(staffcooldown + staffwait > world.time)
@@ -332,19 +283,16 @@
heat_protection = FEET
max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT
/obj/item/clothing/shoes/plate/red
icon_state = "crusader-red"
/obj/item/clothing/shoes/plate/blue
icon_state = "crusader-blue"
/obj/item/storage/box/itemset/crusader
name = "Crusader's Armour Set" //i can't into ck2 references
desc = "This armour is said to be based on the armor of kings on another world thousands of years ago, who tended to assassinate, conspire, and plot against everyone who tried to do the same to them. Some things never change."
/obj/item/storage/box/itemset/crusader/blue/New()
..()
contents = list()
@@ -354,7 +302,6 @@
new /obj/item/clothing/gloves/plate/blue(src)
new /obj/item/clothing/shoes/plate/blue(src)
/obj/item/storage/box/itemset/crusader/red/New()
..()
contents = list()
@@ -364,7 +311,6 @@
new /obj/item/clothing/gloves/plate/red(src)
new /obj/item/clothing/shoes/plate/red(src)
/obj/item/claymore/weak
desc = "This one is rusted."
force = 30
@@ -680,7 +680,7 @@
action_icon_state = "Chevron_State_0"
var/currentState = 0
var/maxReduction = 2
var/maxReduction = 1
/obj/effect/proc_holder/silicon/cyborg/vtecControl/Click(mob/living/silicon/robot/user)
@@ -688,14 +688,14 @@
currentState = (currentState + 1) % 3
if(usr)
if(istype(self))
switch(currentState)
if (0)
self.speed = maxReduction
self.speed = initial(self.speed)
if (1)
self.speed -= maxReduction*0.5
self.speed = initial(self.speed) - maxReduction * 0.5
if (2)
self.speed -= maxReduction*1.25
self.speed = initial(self.speed) - maxReduction * 1
action.button_icon_state = "Chevron_State_[currentState]"
action.UpdateButtonIcon()
@@ -17,7 +17,6 @@
var/self_delay = 50
/obj/item/stack/medical/attack(mob/living/M, mob/user)
if(M.stat == DEAD && !stop_bleeding)
var/t_him = "it"
if(M.gender == MALE)
+4 -4
View File
@@ -390,9 +390,9 @@
. = ..()
/obj/item/stack/proc/copy_evidences(obj/item/stack/from)
add_blood_DNA(from.return_blood_DNA())
add_fingerprint_list(from.return_fingerprints())
add_hiddenprint_list(from.return_hiddenprints())
blood_DNA = from.blood_DNA
fingerprints = from.fingerprints
fingerprintshidden = from.fingerprintshidden
fingerprintslast = from.fingerprintslast
//TODO bloody overlay
@@ -437,4 +437,4 @@
/datum/stack_recipe_list/New(title, recipes)
src.title = title
src.recipes = recipes
src.recipes = recipes
@@ -35,6 +35,8 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
/obj/item/storage/toolbox/update_icon()
..()
cut_overlays()
if(blood_DNA && blood_DNA.len)
add_blood_overlay()
if(has_latches)
var/icon/I = icon('icons/obj/storage.dmi', latches)
add_overlay(I)
+3 -2
View File
@@ -346,7 +346,8 @@
icon_state = "dualsaber[item_color][wielded]"
else
icon_state = "dualsaber0"
SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
clean_blood()
/obj/item/twohanded/dualsaber/attack(mob/target, mob/living/carbon/human/user)
if(user.has_dna())
@@ -891,4 +892,4 @@
var/client/C = user.client
C.change_view(CONFIG_GET(string/default_view))
user.client.pixel_x = 0
user.client.pixel_y = 0
user.client.pixel_y = 0
@@ -0,0 +1,117 @@
/obj/structure/closet/secure_closet/genpop
desc = "It's a secure locker for inmates's personal belongings."
var/default_desc = "It's a secure locker for the storage inmates's personal belongings during their time in prison."
name = "prisoner closet"
var/default_name = "prisoner closet"
req_access = list(ACCESS_BRIG)
var/obj/item/card/id/prisoner/registered_id = null
icon_state = "prisoner"
locked = FALSE
anchored = TRUE
opened = TRUE
density = FALSE
/obj/structure/closet/secure_closet/genpop/attackby(obj/item/W, mob/user, params)
if(!broken && locked && W == registered_id) //Prisoner opening
handle_prisoner_id(user)
return
return ..()
/obj/structure/closet/secure_closet/genpop/proc/handle_prisoner_id(mob/user)
var/obj/item/card/id/prisoner/prisoner_id = null
for(prisoner_id in user.held_items)
if(prisoner_id != registered_id)
prisoner_id = null
else
break
if(!prisoner_id)
to_chat(user, "<span class='danger'>Access Denied.</span>")
return FALSE
qdel(registered_id)
registered_id = null
locked = FALSE
open(user)
desc = "It's a secure locker for prisoner effects."
to_chat(user, "<span class='notice'>You insert your prisoner id into \the [src] and it springs open!</span>")
return TRUE
/obj/structure/closet/secure_closet/genpop/proc/handle_edit_sentence(mob/user)
var/prisoner_name = input(user, "Please input the name of the prisoner.", "Prisoner Name", registered_id.registered_name) as text|null
if(prisoner_name == null | !user.Adjacent(src))
return FALSE
var/sentence_length = input(user, "Please input the length of their sentence in minutes (0 for perma).", "Sentence Length", registered_id.sentence) as num|null
if(sentence_length == null | !user.Adjacent(src))
return FALSE
var/crimes = input(user, "Please input their crimes.", "Crimes", registered_id.crime) as text|null
if(crimes == null | !user.Adjacent(src))
return FALSE
registered_id.registered_name = prisoner_name
var/filteredsentlength = text2num(sentence_length)
registered_id.sentence = filteredsentlength ? (filteredsentlength MINUTES) + world.time : 0
registered_id.crime = crimes
registered_id.update_label(prisoner_name, registered_id.assignment)
if(registered_id.sentence)
START_PROCESSING(SSobj, registered_id)
else
STOP_PROCESSING(SSobj, registered_id)
name = "[default_name] ([prisoner_name])"
desc = "[default_desc] It contains the personal effects of [prisoner_name]."
return TRUE
/obj/structure/closet/secure_closet/genpop/togglelock(mob/living/user)
if(!allowed(user))
return ..()
if(!broken && locked && registered_id != null)
var/name = registered_id.registered_name
var/result = alert(user, "This locker currently contains [name]'s personal belongings ","Locker In Use","Reset","Amend ID", "Open")
if(!user.Adjacent(src))
return
if(result == "Reset")
name = default_name
desc = default_desc
registered_id = null
if(result == "Open" | result == "Reset")
locked = FALSE
open(user)
if(result == "Amend ID")
handle_edit_sentence(user)
else
return ..()
/obj/structure/closet/secure_closet/genpop/close(mob/living/user)
if(registered_id != null)
locked = TRUE
return ..()
/obj/structure/closet/secure_closet/genpop/attack_hand(mob/user)
if(user.lying && get_dist(src, user) > 0)
return
if(!broken && registered_id != null && registered_id in user.held_items)
handle_prisoner_id(user)
return
if(!broken && opened && !locked && allowed(user) && !registered_id) //Genpop setup
registered_id = new /obj/item/card/id/prisoner/(src.contents)
if(handle_edit_sentence(user))
close(user)
locked = TRUE
update_icon()
registered_id.forceMove(src.loc)
new /obj/item/clothing/under/rank/prisoner(src.loc)
else
qdel(registered_id)
registered_id = null
return
..()
+14 -7
View File
@@ -318,6 +318,7 @@
/obj/machinery/shower/proc/wash_obj(obj/O)
. = SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
. = O.clean_blood()
O.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
if(isitem(O))
var/obj/item/I = O
@@ -328,8 +329,9 @@
/obj/machinery/shower/proc/wash_turf()
if(isturf(loc))
var/turf/tile = loc
SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
tile.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
tile.clean_blood()
SEND_SIGNAL(tile, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
for(var/obj/effect/E in tile)
if(is_cleanable(E))
qdel(E)
@@ -381,7 +383,8 @@
else if(H.w_uniform && wash_obj(H.w_uniform))
H.update_inv_w_uniform()
if(washgloves)
SEND_SIGNAL(H, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
H.clean_blood()
SEND_SIGNAL(H, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
if(H.shoes && washshoes && wash_obj(H.shoes))
H.update_inv_shoes()
if(H.wear_mask && washmask && wash_obj(H.wear_mask))
@@ -398,9 +401,11 @@
else
if(M.wear_mask && wash_obj(M.wear_mask))
M.update_inv_wear_mask(0)
SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
M.clean_blood()
SEND_SIGNAL(M, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
else
SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
L.clean_blood()
SEND_SIGNAL(L, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
/obj/machinery/shower/proc/contamination_cleanse(atom/movable/thing)
var/datum/component/radioactive/healthy_green_glow = thing.GetComponent(/datum/component/radioactive)
@@ -498,7 +503,8 @@
H.regenerate_icons()
user.drowsyness = max(user.drowsyness - rand(2,3), 0) //Washing your face wakes you up if you're falling asleep
else
SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(user, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
user.clean_blood()
/obj/structure/sink/attackby(obj/item/O, mob/living/user, params)
if(busy)
@@ -554,7 +560,8 @@
busy = FALSE
return 1
busy = FALSE
SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_STRENGTH_BLOOD)
SEND_SIGNAL(O, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
O.clean_blood()
O.acid_level = 0
create_reagents(5)
reagents.add_reagent(dispensedreagent, 5)
@@ -675,4 +682,4 @@
else
playsound(loc, 'sound/weapons/tap.ogg', 50, 1)
if(BURN)
playsound(loc, 'sound/items/welder.ogg', 80, 1)
playsound(loc, 'sound/items/welder.ogg', 80, 1)
+1
View File
@@ -251,6 +251,7 @@
M.apply_water()
SEND_SIGNAL(src, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_WEAK)
clean_blood()
for(var/obj/effect/O in src)
if(is_cleanable(O))
qdel(O)

Some files were not shown because too many files have changed in this diff Show More