This commit is contained in:
lm40
2017-06-19 17:28:46 -04:00
committed by GitHub
parent 2502baaaab
commit 005f3a4ecc
120 changed files with 910 additions and 341 deletions
+1 -7
View File
@@ -25,13 +25,7 @@ There are a number of ways to download the source code. Some are described here,
Option 1: Option 1:
Follow this: http://www.tgstation13.org/wiki/Setting_up_git Follow this: http://www.tgstation13.org/wiki/Setting_up_git
Option 2: Option 2: Download the source code as a zip by clicking the ZIP button in the
Install GitHub::windows from http://windows.github.com/
It handles most of the setup and configuraton of Git for you.
Then you simply search for the tgstation repository and click the big clone
button.
Option 3: Download the source code as a zip by clicking the ZIP button in the
code tab of https://github.com/tgstation/tgstation code tab of https://github.com/tgstation/tgstation
(note: this will use a lot of bandwidth if you wish to update and is a lot of (note: this will use a lot of bandwidth if you wish to update and is a lot of
hassle if you want to make any changes at all, so it's not recommended.) hassle if you want to make any changes at all, so it's not recommended.)
@@ -72827,10 +72827,6 @@
}, },
/obj/structure/grille, /obj/structure/grille,
/obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/fulltile,
/obj/machinery/door/poddoor/preopen{
id = "xenosecure";
name = "Secure Pen Shutters"
},
/obj/machinery/door/poddoor/preopen{ /obj/machinery/door/poddoor/preopen{
id = "xenosecure"; id = "xenosecure";
name = "Secure Pen Shutters" name = "Secure Pen Shutters"
+1
View File
@@ -627,6 +627,7 @@
/area/mine/production) /area/mine/production)
"bD" = ( "bD" = (
/obj/structure/closet/crate, /obj/structure/closet/crate,
/obj/item/weapon/dice/d4,
/turf/open/floor/plasteel/brown{ /turf/open/floor/plasteel/brown{
baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;
dir = 1 dir = 1
+47 -99
View File
@@ -22584,14 +22584,12 @@
tag = "icon-4-8"; tag = "icon-4-8";
icon_state = "4-8" icon_state = "4-8"
}, },
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
tag = "icon-manifold (EAST)";
icon_state = "manifold";
dir = 4
},
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 8 dir = 8
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/gravity_generator) /area/engine/gravity_generator)
"aKy" = ( "aKy" = (
@@ -22682,11 +22680,6 @@
tag = "icon-1-4"; tag = "icon-1-4";
icon_state = "1-4" icon_state = "1-4"
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
tag = "icon-intact (SOUTHEAST)";
icon_state = "intact";
dir = 6
},
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 4 dir = 4
}, },
@@ -22710,9 +22703,6 @@
tag = "icon-4-8"; tag = "icon-4-8";
icon_state = "4-8" icon_state = "4-8"
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 8 dir = 8
}, },
@@ -22723,9 +22713,6 @@
tag = "icon-4-8"; tag = "icon-4-8";
icon_state = "4-8" icon_state = "4-8"
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/yellow/side{ /turf/open/floor/plasteel/yellow/side{
dir = 8 dir = 8
}, },
@@ -22739,9 +22726,6 @@
tag = "icon-4-8"; tag = "icon-4-8";
icon_state = "4-8" icon_state = "4-8"
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/neutral, /turf/open/floor/plasteel/neutral,
/area/engine/engineering) /area/engine/engineering)
"aKK" = ( "aKK" = (
@@ -22750,9 +22734,11 @@
tag = "icon-4-8"; tag = "icon-4-8";
icon_state = "4-8" icon_state = "4-8"
}, },
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow,
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko, /obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
/turf/open/floor/plasteel/yellow, /turf/open/floor/plasteel/yellow,
/area/engine/engineering) /area/engine/engineering)
"aKL" = ( "aKL" = (
@@ -23066,14 +23052,10 @@
/turf/closed/wall, /turf/closed/wall,
/area/crew_quarters/kitchen) /area/crew_quarters/kitchen)
"aLm" = ( "aLm" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
tag = "icon-manifold (WEST)";
icon_state = "manifold";
dir = 8
},
/obj/structure/extinguisher_cabinet{ /obj/structure/extinguisher_cabinet{
pixel_x = -24 pixel_x = -24
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/neutral/corner{ /turf/open/floor/plasteel/neutral/corner{
dir = 1 dir = 1
}, },
@@ -23290,10 +23272,11 @@
/obj/structure/grille, /obj/structure/grille,
/obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/fulltile,
/obj/structure/cable/white, /obj/structure/cable/white,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{
dir = 4 tag = "icon-manifold (NORTH)";
icon_state = "manifold";
dir = 1
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating, /turf/open/floor/plating,
/area/engine/gravity_generator) /area/engine/gravity_generator)
"aLM" = ( "aLM" = (
@@ -23302,14 +23285,13 @@
icon_state = "1-2" icon_state = "1-2"
}, },
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
tag = "icon-manifold (EAST)";
icon_state = "manifold";
dir = 4
},
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 8 dir = 8
}, },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9;
pixel_y = 0
},
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/engineering) /area/engine/engineering)
"aLN" = ( "aLN" = (
@@ -23393,7 +23375,6 @@
tag = "icon-1-2"; tag = "icon-1-2";
icon_state = "1-2" icon_state = "1-2"
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 4 dir = 4
}, },
@@ -23831,7 +23812,7 @@
/turf/open/floor/plating, /turf/open/floor/plating,
/area/tcommsat/server) /area/tcommsat/server)
"aMN" = ( "aMN" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall, /turf/closed/wall/r_wall,
/area/tcommsat/server) /area/tcommsat/server)
"aMO" = ( "aMO" = (
@@ -23843,7 +23824,6 @@
pixel_x = -32 pixel_x = -32
}, },
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/camera{ /obj/machinery/camera{
c_tag = "Engineering Port"; c_tag = "Engineering Port";
dir = 4; dir = 4;
@@ -24586,7 +24566,6 @@
pixel_x = -23; pixel_x = -23;
pixel_y = 0 pixel_y = 0
}, },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 8 dir = 8
}, },
@@ -24664,7 +24643,6 @@
}, },
/obj/structure/cable/white, /obj/structure/cable/white,
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 4 dir = 4
}, },
@@ -24891,7 +24869,6 @@
icon_state = "1-2" icon_state = "1-2"
}, },
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 8 dir = 8
}, },
@@ -24974,7 +24951,6 @@
dir = 4; dir = 4;
pixel_x = 24 pixel_x = 24
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 4 dir = 4
}, },
@@ -25780,7 +25756,6 @@
pixel_x = -26 pixel_x = -26
}, },
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 8 dir = 8
}, },
@@ -25825,19 +25800,17 @@
/obj/machinery/newscaster{ /obj/machinery/newscaster{
pixel_x = 32 pixel_x = 32
}, },
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ /obj/effect/turf_decal/stripes/line{
tag = "icon-manifold (EAST)";
icon_state = "manifold";
dir = 4 dir = 4
}, },
/obj/effect/turf_decal/stripes/line{ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4 dir = 4
}, },
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/engineering) /area/engine/engineering)
"aPO" = ( "aPO" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 6 dir = 1
}, },
/turf/closed/wall/r_wall, /turf/closed/wall/r_wall,
/area/maintenance/port) /area/maintenance/port)
@@ -26462,7 +26435,6 @@
/area/engine/engineering) /area/engine/engineering)
"aQT" = ( "aQT" = (
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 4 dir = 4
}, },
@@ -26814,12 +26786,12 @@
pixel_y = 0 pixel_y = 0
}, },
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 8 dir = 8
}, },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/engineering) /area/engine/engineering)
"aRG" = ( "aRG" = (
@@ -26946,7 +26918,6 @@
pixel_x = 24 pixel_x = 24
}, },
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/closet/secure_closet/engineering_personal, /obj/structure/closet/secure_closet/engineering_personal,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 4 dir = 4
@@ -27435,9 +27406,6 @@
/area/tcommsat/server) /area/tcommsat/server)
"aSP" = ( "aSP" = (
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/structure/closet/wardrobe/engineering_yellow, /obj/structure/closet/wardrobe/engineering_yellow,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 10 dir = 10
@@ -27447,9 +27415,6 @@
"aSQ" = ( "aSQ" = (
/obj/machinery/atmospherics/pipe/simple/general/visible, /obj/machinery/atmospherics/pipe/simple/general/visible,
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/caution, /turf/open/floor/plasteel/caution,
/area/engine/engineering) /area/engine/engineering)
"aSR" = ( "aSR" = (
@@ -27458,9 +27423,6 @@
/obj/structure/sign/nosmoking_2{ /obj/structure/sign/nosmoking_2{
pixel_y = -32 pixel_y = -32
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/bot, /obj/effect/turf_decal/bot,
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/engineering) /area/engine/engineering)
@@ -27468,9 +27430,6 @@
/obj/item/clothing/gloves/color/black, /obj/item/clothing/gloves/color/black,
/obj/item/clothing/glasses/meson/engine, /obj/item/clothing/glasses/meson/engine,
/obj/structure/table/reinforced, /obj/structure/table/reinforced,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/bot, /obj/effect/turf_decal/bot,
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/engineering) /area/engine/engineering)
@@ -27478,16 +27437,10 @@
/obj/structure/table/reinforced, /obj/structure/table/reinforced,
/obj/item/weapon/storage/toolbox/mechanical, /obj/item/weapon/storage/toolbox/mechanical,
/obj/item/device/flashlight, /obj/item/device/flashlight,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/bot, /obj/effect/turf_decal/bot,
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/engineering) /area/engine/engineering)
"aSU" = ( "aSU" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 4 dir = 4
}, },
@@ -27507,9 +27460,6 @@
pixel_y = -32 pixel_y = -32
}, },
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel/vault{ /turf/open/floor/plasteel/vault{
dir = 8 dir = 8
}, },
@@ -27521,9 +27471,6 @@
on = 1; on = 1;
target_temperature = 80 target_temperature = 80
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 9 dir = 9
}, },
@@ -27536,9 +27483,6 @@
on = 1; on = 1;
target_temperature = 80 target_temperature = 80
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 5 dir = 5
}, },
@@ -27555,9 +27499,6 @@
}, },
/obj/item/device/geiger_counter, /obj/item/device/geiger_counter,
/obj/item/device/geiger_counter, /obj/item/device/geiger_counter,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/bot, /obj/effect/turf_decal/bot,
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/engineering) /area/engine/engineering)
@@ -27566,19 +27507,11 @@
/obj/item/clothing/suit/radiation, /obj/item/clothing/suit/radiation,
/obj/item/clothing/head/radiation, /obj/item/clothing/head/radiation,
/obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/effect/turf_decal/bot, /obj/effect/turf_decal/bot,
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/engineering) /area/engine/engineering)
"aTa" = ( "aTa" = (
/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
tag = "icon-intact (NORTHWEST)";
icon_state = "intact";
dir = 9
},
/obj/structure/closet/secure_closet/engineering_personal, /obj/structure/closet/secure_closet/engineering_personal,
/obj/effect/turf_decal/stripes/line{ /obj/effect/turf_decal/stripes/line{
dir = 6 dir = 6
@@ -37645,7 +37578,6 @@
tag = "icon-1-2"; tag = "icon-1-2";
icon_state = "1-2" icon_state = "1-2"
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/camera{ /obj/machinery/camera{
c_tag = "Engineering Starboard"; c_tag = "Engineering Starboard";
dir = 8; dir = 8;
@@ -41248,6 +41180,22 @@
"bwU" = ( "bwU" = (
/turf/closed/wall/mineral/titanium, /turf/closed/wall/mineral/titanium,
/area/shuttle/transport) /area/shuttle/transport)
"bwV" = (
/obj/structure/cable/white{
tag = "icon-1-2";
icon_state = "1-2"
},
/obj/effect/turf_decal/stripes/line{
dir = 8
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"bwW" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 5
},
/turf/closed/wall/r_wall,
/area/tcommsat/server)
(1,1,1) = {" (1,1,1) = {"
aaa aaa
@@ -70928,11 +70876,11 @@ aMN
aMN aMN
aMN aMN
aMN aMN
aMN bwW
aMN aMJ
aMN aMJ
aMN aMJ
aSO aMJ
aMJ aMJ
aMJ aMJ
aMJ aMJ
@@ -71184,7 +71132,7 @@ aMO
aNY aNY
aOz aOz
aPI aPI
aJp bwV
aRF aRF
aSP aSP
aEt aEt
@@ -86855,7 +86803,7 @@ bsz
aDZ aDZ
aIY aIY
aDZ aDZ
aGY aDZ
arj arj
arj arj
anl anl
@@ -87112,7 +87060,7 @@ bsA
aHY aHY
aIZ aIZ
blm blm
aLn ahZ
aMy aMy
aHY aHY
aDc aDc
+10 -22
View File
@@ -1516,9 +1516,6 @@
icon_state = "4-8"; icon_state = "4-8";
pixel_y = 0 pixel_y = 0
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plating, /turf/open/floor/plating,
/area/ai_monitored/turret_protected/AIsatextAS) /area/ai_monitored/turret_protected/AIsatextAS)
"adr" = ( "adr" = (
@@ -3305,7 +3302,6 @@
name = "Prison Wing"; name = "Prison Wing";
req_access_txt = "1" req_access_txt = "1"
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable/yellow{ /obj/structure/cable/yellow{
d1 = 1; d1 = 1;
d2 = 2; d2 = 2;
@@ -3326,7 +3322,6 @@
/area/security/prison) /area/security/prison)
"ahf" = ( "ahf" = (
/obj/machinery/door/firedoor, /obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/door/airlock/glass_security{ /obj/machinery/door/airlock/glass_security{
name = "Prison Wing"; name = "Prison Wing";
req_access_txt = "1" req_access_txt = "1"
@@ -12775,9 +12770,6 @@
/obj/structure/disposalpipe/segment{ /obj/structure/disposalpipe/segment{
dir = 4 dir = 4
}, },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plasteel/black, /turf/open/floor/plasteel/black,
/area/crew_quarters/heads/hop) /area/crew_quarters/heads/hop)
"aAk" = ( "aAk" = (
@@ -26849,7 +26841,6 @@
/obj/machinery/door/airlock/glass{ /obj/machinery/door/airlock/glass{
name = "Diner" name = "Diner"
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/hallway/primary/central) /area/hallway/primary/central)
@@ -26865,7 +26856,6 @@
/obj/machinery/door/airlock/glass{ /obj/machinery/door/airlock/glass{
name = "Diner" name = "Diner"
}, },
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/hallway/primary/central) /area/hallway/primary/central)
@@ -45842,7 +45832,6 @@
d2 = 2; d2 = 2;
icon_state = "1-2" icon_state = "1-2"
}, },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/engine/engineering) /area/engine/engineering)
@@ -48897,7 +48886,7 @@
/area/hallway/primary/central) /area/hallway/primary/central)
"bWU" = ( "bWU" = (
/obj/structure/table, /obj/structure/table,
/obj/item/weapon/storage/fancy, /obj/item/weapon/storage/fancy/donut_box,
/turf/open/floor/plasteel/neutral/corner{ /turf/open/floor/plasteel/neutral/corner{
dir = 1 dir = 1
}, },
@@ -53230,7 +53219,6 @@
/obj/structure/grille, /obj/structure/grille,
/obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/fulltile,
/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating, /turf/open/floor/plating,
/area/hallway/secondary/exit/departure_lounge) /area/hallway/secondary/exit/departure_lounge)
"chp" = ( "chp" = (
@@ -69752,7 +69740,7 @@ cdi
cdz cdz
cdi cdi
ceb ceb
cex cdi
ceO ceO
cdi cdi
ccZ ccZ
@@ -74304,7 +74292,7 @@ aEz
aEz aEz
aEz aEz
aEz aEz
cht chu
chA chA
chG chG
chI chI
@@ -74565,7 +74553,7 @@ chu
chB chB
chH chH
chJ chJ
chO aNF
chy chy
chF chF
aMT aMT
@@ -74807,10 +74795,10 @@ atX
awA awA
agv agv
ayy ayy
azF aCZ
azF aCZ
azF aCZ
azF aCZ
aCZ aCZ
aDB aDB
aEw aEw
@@ -85929,7 +85917,7 @@ bKT
bLz bLz
bKT bKT
bMG bMG
bNn bNg
bNI bNI
bOc bOc
bMb bMb
@@ -93114,7 +93102,7 @@ bLR
bZp bZp
bBF bBF
bCP bCP
bDI bJl
bCP bCP
bHI bHI
bCP bCP
+2
View File
@@ -104,3 +104,5 @@ GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not us
#define OCULAR_WARDEN_EXCLUSION_RANGE 3 //the range at which ocular wardens cannot be placed near other ocular wardens #define OCULAR_WARDEN_EXCLUSION_RANGE 3 //the range at which ocular wardens cannot be placed near other ocular wardens
#define RATVARIAN_SPEAR_DURATION 1800 //how long ratvarian spears last; defaults to 3 minutes #define RATVARIAN_SPEAR_DURATION 1800 //how long ratvarian spears last; defaults to 3 minutes
#define PRISM_DELAY_DURATION 1200 //how long prolonging prisms delay the shuttle for; defaults to 2 minutes
+5 -1
View File
@@ -15,9 +15,13 @@
#define ABOVE_NORMAL_TURF_LAYER 2.08 #define ABOVE_NORMAL_TURF_LAYER 2.08
#define LATTICE_LAYER 2.2 #define LATTICE_LAYER 2.2
#define DISPOSAL_PIPE_LAYER 2.3 #define DISPOSAL_PIPE_LAYER 2.3
#define GAS_PIPE_LAYER 2.35 #define GAS_PIPE_HIDDEN_LAYER 2.35
#define WIRE_LAYER 2.4 #define WIRE_LAYER 2.4
#define WIRE_TERMINAL_LAYER 2.45 #define WIRE_TERMINAL_LAYER 2.45
#define GAS_SCRUBBER_LAYER 2.46
#define GAS_PIPE_VISIBLE_LAYER 2.47
#define GAS_FILTER_LAYER 2.48
#define GAS_PUMP_LAYER 2.49
#define LOW_OBJ_LAYER 2.5 #define LOW_OBJ_LAYER 2.5
#define LOW_SIGIL_LAYER 2.52 #define LOW_SIGIL_LAYER 2.52
#define SIGIL_LAYER 2.54 #define SIGIL_LAYER 2.54
+3
View File
@@ -1,3 +1,6 @@
//wrapper macro for sending images that makes grepping easy
#define SEND_IMAGE(target, image) target << image
/proc/random_blood_type() /proc/random_blood_type()
return pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+") return pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
+1 -1
View File
@@ -47,7 +47,7 @@ SUBSYSTEM_DEF(shuttle)
var/lockdown = FALSE //disallow transit after nuke goes off var/lockdown = FALSE //disallow transit after nuke goes off
var/auto_call = 72000 //time before in deciseconds in which the shuttle is auto called. Default is 2 hours. var/auto_call = 99000 //time before in deciseconds in which the shuttle is auto called. Default is 2½ hours plus 15 for the shuttle. So total is 3.
/datum/controller/subsystem/shuttle/Initialize(timeofday) /datum/controller/subsystem/shuttle/Initialize(timeofday)
if(!arrivals) if(!arrivals)
@@ -42,7 +42,7 @@ Bonus
return return
/datum/symptom/vomit/proc/Vomit(mob/living/carbon/M) /datum/symptom/vomit/proc/Vomit(mob/living/carbon/M)
M.vomit(20) M.vomit(20)
/* /*
////////////////////////////////////// //////////////////////////////////////
@@ -75,7 +75,7 @@ Bonus
severity = 5 severity = 5
/datum/symptom/vomit/blood/Vomit(mob/living/carbon/M) /datum/symptom/vomit/blood/Vomit(mob/living/carbon/M)
M.vomit(0, 1) M.vomit(0,TRUE)
/* /*
@@ -103,4 +103,4 @@ Bonus
level = 4 level = 4
/datum/symptom/vomit/projectile/Vomit(mob/living/carbon/M) /datum/symptom/vomit/projectile/Vomit(mob/living/carbon/M)
M.vomit(6,0,1,5,1) M.vomit(6, distance = 5)
+1 -1
View File
@@ -31,4 +31,4 @@
affected_mob.adjustToxLoss(1) affected_mob.adjustToxLoss(1)
if(3) if(3)
if(prob(1)) if(prob(1))
affected_mob.vomit(95) affected_mob.vomit(95)
+2 -2
View File
@@ -79,7 +79,7 @@
details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["author"]) + " at commit " + html_encode(copytext(cm, 1, min(length(cm), 7))) details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["author"]) + " at commit " + html_encode(copytext(cm, 1, min(length(cm), 7)))
else if(has_pr_details) //tgs2 support else if(has_pr_details) //tgs2 support
details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["user"]["login"]) details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["user"]["login"])
. += "<a href='[config.githuburl]/pull/[line]'>#[line][details]</a><br>" . += "<a href=\"[config.githuburl]/pull/[line]\">#[line][details]</a><br>"
/client/verb/showrevinfo() /client/verb/showrevinfo()
set category = "OOC" set category = "OOC"
@@ -93,7 +93,7 @@
to_chat(src, GLOB.revdata.GetTestMergeInfo()) to_chat(src, GLOB.revdata.GetTestMergeInfo())
prefix = "Based off origin/master commit: " prefix = "Based off origin/master commit: "
var/pc = GLOB.revdata.originmastercommit var/pc = GLOB.revdata.originmastercommit
to_chat(src, "[prefix]<a href='[config.githuburl]/commit/[pc]'>[copytext(pc, 1, min(length(pc), 7))]</a>") to_chat(src, "[prefix]<a href=\"[config.githuburl]/commit/[pc]\">[copytext(pc, 1, min(length(pc), 7))]</a>")
else else
to_chat(src, "Revision unknown") to_chat(src, "Revision unknown")
to_chat(src, "<b>Current Infomational Settings:</b>") to_chat(src, "<b>Current Infomational Settings:</b>")
+1 -1
View File
@@ -23,7 +23,7 @@
new_mob.key = key new_mob.key = key
The Login proc will handle making a new mob for that mobtype (including setting up stuff like mind.name). Simple! The Login proc will handle making a new mind for that mobtype (including setting up stuff like mind.name). Simple!
However if you want that mind to have any special properties like being a traitor etc you will have to do that However if you want that mind to have any special properties like being a traitor etc you will have to do that
yourself. yourself.
+7
View File
@@ -40,6 +40,8 @@
passindex++ passindex++
var/mob/living/buckled_mob = m var/mob/living/buckled_mob = m
var/list/offsets = get_offsets(passindex) var/list/offsets = get_offsets(passindex)
var/rider_dir = get_rider_dir(passindex)
buckled_mob.setDir(rider_dir)
dir_loop: dir_loop:
for(var/offsetdir in offsets) for(var/offsetdir in offsets)
if(offsetdir == ridden_dir) if(offsetdir == ridden_dir)
@@ -56,6 +58,11 @@
/datum/riding/proc/get_offsets(pass_index) // list(dir = x, y, layer) /datum/riding/proc/get_offsets(pass_index) // list(dir = x, y, layer)
return list("[NORTH]" = list(0, 0), "[SOUTH]" = list(0, 0), "[EAST]" = list(0, 0), "[WEST]" = list(0, 0)) return list("[NORTH]" = list(0, 0), "[SOUTH]" = list(0, 0), "[EAST]" = list(0, 0), "[WEST]" = list(0, 0))
//Override this to set the passengers/riders dir based on which passenger they are.
//ie: rider facing the vehicle's dir, but passenger 2 facing backwards, etc.
/datum/riding/proc/get_rider_dir(pass_index)
return ridden.dir
//KEYS //KEYS
/datum/riding/proc/keycheck(mob/user) /datum/riding/proc/keycheck(mob/user)
if(keytype) if(keytype)
+5 -4
View File
@@ -232,19 +232,20 @@
/datum/status_effect/cult_master /datum/status_effect/cult_master
id = "The Cult Master" id = "The Cult Master"
duration = -1 duration = -1
tick_interval = 100
alert_type = null alert_type = null
on_remove_on_mob_delete = TRUE
var/alive = TRUE var/alive = TRUE
/datum/status_effect/cult_master/proc/deathrattle() /datum/status_effect/cult_master/proc/deathrattle()
if(!QDELETED(GLOB.cult_narsie))
return //if nar-sie is alive, don't even worry about it
var/area/A = get_area(owner) var/area/A = get_area(owner)
for(var/datum/mind/B in SSticker.mode.cult) for(var/datum/mind/B in SSticker.mode.cult)
if(isliving(B.current)) if(isliving(B.current))
var/mob/living/M = B.current var/mob/living/M = B.current
M << 'sound/hallucinations/veryfar_noise.ogg' M << 'sound/hallucinations/veryfar_noise.ogg'
to_chat(M, "<span class='cultlarge'>The Cult's Master, [owner], has fallen in the [A]!") to_chat(M, "<span class='cultlarge'>The Cult's Master, [owner], has fallen in \the [A]!</span>")
/datum/status_effect/cult_master/tick() /datum/status_effect/cult_master/tick()
if(owner.stat != DEAD && !alive) if(owner.stat != DEAD && !alive)
alive = TRUE alive = TRUE
@@ -17,7 +17,7 @@
B.leave_victim() B.leave_victim()
if(iscarbon(user)) if(iscarbon(user))
var/mob/living/carbon/C = user var/mob/living/carbon/C = user
C.vomit(0) C.vomit(0, toxic = TRUE)
to_chat(user, "<span class='notice'>A parasite exits our form.</span>") to_chat(user, "<span class='notice'>A parasite exits our form.</span>")
var/list/bad_organs = list( var/list/bad_organs = list(
user.getorgan(/obj/item/organ/body_egg), user.getorgan(/obj/item/organ/body_egg),
@@ -31,7 +31,7 @@
O.Remove(user) O.Remove(user)
if(iscarbon(user)) if(iscarbon(user))
var/mob/living/carbon/C = user var/mob/living/carbon/C = user
C.vomit(0) C.vomit(0, toxic = TRUE)
O.forceMove(get_turf(user)) O.forceMove(get_turf(user))
user.reagents.add_reagent("mutadone", 10) user.reagents.add_reagent("mutadone", 10)
@@ -64,5 +64,5 @@
/proc/change_construction_value(amount) /proc/change_construction_value(amount)
GLOB.clockwork_construction_value += amount GLOB.clockwork_construction_value += amount
/proc/can_recite_scripture(mob/living/L) /proc/can_recite_scripture(mob/living/L, can_potentially)
return (is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal() && (GLOB.ratvar_awakens || (ishuman(L) || issilicon(L)))) return (is_servant_of_ratvar(L) && (can_potentially || (L.stat == CONSCIOUS && L.can_speak_vocal())) && (GLOB.ratvar_awakens || (ishuman(L) || issilicon(L))))
@@ -69,7 +69,7 @@
/obj/item/clockwork/component/vanguard_cogwheel/onyx_prism /obj/item/clockwork/component/vanguard_cogwheel/onyx_prism
name = "onyx prism" name = "onyx prism"
desc = "An onyx prism with a small aperture. It's very heavy." desc = "An onyx prism with a small aperture. It's very heavy."
clockwork_desc = "A broken prism from a mending motor. <b>Serviceable as a substitute for a vanguard cogwheel.</b>" clockwork_desc = "A broken prism from a prolonging prism. <b>Serviceable as a substitute for a vanguard cogwheel.</b>"
icon_state = "onyx_prism" icon_state = "onyx_prism"
cultist_message = "The prism grows painfully hot in your hands." cultist_message = "The prism grows painfully hot in your hands."
servant_of_ratvar_messages = list("The prism isn't getting any lighter." = FALSE, "\"So... you haven't failed yet. Have hope, child.\"" = TRUE, \ servant_of_ratvar_messages = list("The prism isn't getting any lighter." = FALSE, "\"So... you haven't failed yet. Have hope, child.\"" = TRUE, \
@@ -37,7 +37,7 @@
user.visible_message("<span class='warning'>As [user] puts [src] on, it flickers off their head!</span>", "<span class='warning'>The helmet flickers off your head, leaving only nausea!</span>") user.visible_message("<span class='warning'>As [user] puts [src] on, it flickers off their head!</span>", "<span class='warning'>The helmet flickers off your head, leaving only nausea!</span>")
if(iscarbon(user)) if(iscarbon(user))
var/mob/living/carbon/C = user var/mob/living/carbon/C = user
C.vomit(20, 1, 1, 0, 1) C.vomit(20)
else else
to_chat(user, "<span class='heavy_brass'>\"Do you have a hole in your head? You're about to.\"</span>") to_chat(user, "<span class='heavy_brass'>\"Do you have a hole in your head? You're about to.\"</span>")
to_chat(user, "<span class='userdanger'>The helmet tries to drive a spike through your head as you scramble to remove it!</span>") to_chat(user, "<span class='userdanger'>The helmet tries to drive a spike through your head as you scramble to remove it!</span>")
@@ -98,7 +98,7 @@
user.visible_message("<span class='warning'>As [user] puts [src] on, it flickers off their body!</span>", "<span class='warning'>The curiass flickers off your body, leaving only nausea!</span>") user.visible_message("<span class='warning'>As [user] puts [src] on, it flickers off their body!</span>", "<span class='warning'>The curiass flickers off your body, leaving only nausea!</span>")
if(iscarbon(user)) if(iscarbon(user))
var/mob/living/carbon/C = user var/mob/living/carbon/C = user
C.vomit(20, 1, 1, 0, 1) C.vomit(20)
else else
to_chat(user, "<span class='heavy_brass'>\"I think this armor is too hot for you to handle.\"</span>") to_chat(user, "<span class='heavy_brass'>\"I think this armor is too hot for you to handle.\"</span>")
to_chat(user, "<span class='userdanger'>The curiass emits a burst of flame as you scramble to get it off!</span>") to_chat(user, "<span class='userdanger'>The curiass emits a burst of flame as you scramble to get it off!</span>")
@@ -159,7 +159,7 @@
user.visible_message("<span class='warning'>As [user] puts [src] on, it flickers off their arms!</span>", "<span class='warning'>The gauntlets flicker off your arms, leaving only nausea!</span>") user.visible_message("<span class='warning'>As [user] puts [src] on, it flickers off their arms!</span>", "<span class='warning'>The gauntlets flicker off your arms, leaving only nausea!</span>")
if(iscarbon(user)) if(iscarbon(user))
var/mob/living/carbon/C = user var/mob/living/carbon/C = user
C.vomit(10, 1, 1, 0, 1) C.vomit()
else else
to_chat(user, "<span class='heavy_brass'>\"Did you like having arms?\"</span>") to_chat(user, "<span class='heavy_brass'>\"Did you like having arms?\"</span>")
to_chat(user, "<span class='userdanger'>The gauntlets suddenly squeeze tight, crushing your arms before you manage to get them off!</span>") to_chat(user, "<span class='userdanger'>The gauntlets suddenly squeeze tight, crushing your arms before you manage to get them off!</span>")
@@ -209,7 +209,7 @@
user.visible_message("<span class='warning'>As [user] puts [src] on, it flickers off their feet!</span>", "<span class='warning'>The treads flicker off your feet, leaving only nausea!</span>") user.visible_message("<span class='warning'>As [user] puts [src] on, it flickers off their feet!</span>", "<span class='warning'>The treads flicker off your feet, leaving only nausea!</span>")
if(iscarbon(user)) if(iscarbon(user))
var/mob/living/carbon/C = user var/mob/living/carbon/C = user
C.vomit(10, 1, 1, 0, 1) C.vomit()
else else
to_chat(user, "<span class='heavy_brass'>\"Let's see if you can dance with these.\"</span>") to_chat(user, "<span class='heavy_brass'>\"Let's see if you can dance with these.\"</span>")
to_chat(user, "<span class='userdanger'>The treads turn searing hot as you scramble to get them off!</span>") to_chat(user, "<span class='userdanger'>The treads turn searing hot as you scramble to get them off!</span>")
@@ -214,6 +214,38 @@
quickbind_desc = "Creates an Interdiction Lens, which drains power into nearby Sigils of Transmission." quickbind_desc = "Creates an Interdiction Lens, which drains power into nearby Sigils of Transmission."
//Prolonging Prism: Creates a prism that will delay the shuttle at a power cost
/datum/clockwork_scripture/create_object/prolonging_prism
descname = "Powered Structure, Delay Emergency Shuttles"
name = "Prolonging Prism"
desc = "Creates a mechanized prism which will delay the arrival of an emergency shuttle by 2 minutes at a massive power cost."
invocations = list("May this prism...", "...grant us time to enact his will!")
channel_time = 80
consumed_components = list(VANGUARD_COGWHEEL = 5, GEIS_CAPACITOR = 2, REPLICANT_ALLOY = 2)
object_path = /obj/structure/destructible/clockwork/powered/prolonging_prism
creator_message = "<span class='brass'>You form a prolonging prism, which will delay the arrival of an emergency shuttle at a massive power cost.</span>"
observer_message = "<span class='warning'>An onyx prism forms in midair and sprouts tendrils to support itself!</span>"
invokers_required = 2
multiple_invokers_used = TRUE
usage_tip = "The power cost to delay a shuttle increases based on CV and the number of times activated."
tier = SCRIPTURE_APPLICATION
one_per_tile = TRUE
primary_component = VANGUARD_COGWHEEL
sort_priority = 7
quickbind = TRUE
quickbind_desc = "Creates a Prolonging Prism, which will delay the arrival of an emergency shuttle by 2 minutes at a massive power cost."
/datum/clockwork_scripture/create_object/prolonging_prism/check_special_requirements()
if(SSshuttle.emergency.mode == SHUTTLE_DOCKED || SSshuttle.emergency.mode == SHUTTLE_IGNITING || SSshuttle.emergency.mode == SHUTTLE_STRANDED || SSshuttle.emergency.mode == SHUTTLE_ESCAPE)
to_chat(invoker, "<span class='inathneq'>\"It is too late to construct one of these, champion.\"</span>")
return FALSE
var/turf/T = get_turf(invoker)
if(!T || T.z != ZLEVEL_STATION)
to_chat(invoker, "<span class='inathneq'>\"You must be on the station to construct one of these, champion.\"</span>")
return FALSE
return ..()
//Mania Motor: Creates a malevolent transmitter that will broadcast the whispers of Sevtug into the minds of nearby nonservants, causing a variety of mental effects at a power cost. //Mania Motor: Creates a malevolent transmitter that will broadcast the whispers of Sevtug into the minds of nearby nonservants, causing a variety of mental effects at a power cost.
/datum/clockwork_scripture/create_object/mania_motor /datum/clockwork_scripture/create_object/mania_motor
descname = "Powered Structure, Area Denial" descname = "Powered Structure, Area Denial"
@@ -122,8 +122,8 @@
/datum/clockwork_scripture/ranged_ability/geis_prep/run_scripture() /datum/clockwork_scripture/ranged_ability/geis_prep/run_scripture()
var/servants = 0 var/servants = 0
if(!GLOB.ratvar_awakens) if(!GLOB.ratvar_awakens)
for(var/mob/living/M in GLOB.all_clockwork_mobs) for(var/mob/living/M in GLOB.living_mob_list)
if(ishuman(M) || issilicon(M)) if(can_recite_scripture(M, TRUE))
servants++ servants++
if(servants > SCRIPT_SERVANT_REQ) if(servants > SCRIPT_SERVANT_REQ)
whispered = FALSE whispered = FALSE
@@ -153,8 +153,8 @@
/datum/clockwork_scripture/geis/run_scripture() /datum/clockwork_scripture/geis/run_scripture()
var/servants = 0 var/servants = 0
if(!GLOB.ratvar_awakens) if(!GLOB.ratvar_awakens)
for(var/mob/living/M in GLOB.all_clockwork_mobs) for(var/mob/living/M in GLOB.living_mob_list)
if(ishuman(M) || issilicon(M)) if(can_recite_scripture(M, TRUE))
servants++ servants++
if(target.buckled) if(target.buckled)
target.buckled.unbuckle_mob(target, TRUE) target.buckled.unbuckle_mob(target, TRUE)
@@ -0,0 +1,140 @@
//Prolonging Prism: A prism that consumes power to delay the shuttle
/obj/structure/destructible/clockwork/powered/prolonging_prism
name = "prolonging prism"
desc = "A dark onyx prism, held in midair by spiraling tendrils of stone."
clockwork_desc = "A powerful prism that will delay the arrival of an emergency shuttle."
icon_state = "prolonging_prism_inactive"
active_icon = "prolonging_prism"
inactive_icon = "prolonging_prism_inactive"
unanchored_icon = "prolonging_prism_unwrenched"
construction_value = 20
max_integrity = 125
obj_integrity = 125
break_message = "<span class='warning'>The prism falls to the ground with a heavy thud!</span>"
debris = list(/obj/item/clockwork/alloy_shards/small = 3, \
/obj/item/clockwork/alloy_shards/medium = 1, \
/obj/item/clockwork/alloy_shards/large = 1, \
/obj/item/clockwork/component/vanguard_cogwheel/onyx_prism = 1)
var/static/list/component_refund = list(VANGUARD_COGWHEEL = 2, GEIS_CAPACITOR = 1, REPLICANT_ALLOY = 1)
var/static/delay_cost = 2500
var/static/delay_cost_increase = 750
var/static/delay_remaining = 0
/obj/structure/destructible/clockwork/powered/prolonging_prism/examine(mob/user)
..()
if(is_servant_of_ratvar(user) || isobserver(user))
if(SSshuttle.emergency.mode == SHUTTLE_DOCKED || SSshuttle.emergency.mode == SHUTTLE_IGNITING || SSshuttle.emergency.mode == SHUTTLE_STRANDED || SSshuttle.emergency.mode == SHUTTLE_ESCAPE)
to_chat(user, "<span class='inathneq'>An emergency shuttle has arrived and this prism is no longer useful; attempt to activate it to gain a partial refund of components used.</span>")
else
var/efficiency = get_efficiency_mod()
var/efficiency_time = get_efficiency_mod(TRUE)
to_chat(user, "<span class='inathneq_small'>It requires at least <b>[get_delay_cost() * efficiency]W</b> of power to attempt to delay the arrival of an emergency shuttle by \
<b>[2 * efficiency_time]</b> minutes.</span>")
to_chat(user, "<span class='inathneq_small'>This cost increases by <b>[delay_cost_increase * 0.1]W</b> for every <b>10 CV</b> and <b>[delay_cost_increase]W</b> for every previous \
activation.</span>")
/obj/structure/destructible/clockwork/powered/prolonging_prism/forced_disable(bad_effects)
if(active)
if(bad_effects)
try_use_power(MIN_CLOCKCULT_POWER*4)
visible_message("<span class='warning'>[src] emits an airy chuckling sound and falls dark!</span>")
toggle()
return TRUE
/obj/structure/destructible/clockwork/powered/prolonging_prism/attack_hand(mob/living/user)
if(user.canUseTopic(src, !issilicon(user), NO_DEXTERY) && is_servant_of_ratvar(user))
if(SSshuttle.emergency.mode == SHUTTLE_DOCKED || SSshuttle.emergency.mode == SHUTTLE_IGNITING || SSshuttle.emergency.mode == SHUTTLE_STRANDED || SSshuttle.emergency.mode == SHUTTLE_ESCAPE)
to_chat(user, "<span class='brass'>You break [src] apart, refunding some of the components used.</span>")
for(var/i in component_refund)
generate_cache_component(i, src)
take_damage(max_integrity)
return 0
if(active)
return 0
var/turf/T = get_turf(src)
if(!T || T.z != ZLEVEL_STATION)
to_chat(user, "<span class='warning'>[src] must be on the station to function!</span>")
return 0
if(SSshuttle.emergency.mode != SHUTTLE_CALL)
to_chat(user, "<span class='warning'>No emergency shuttles are attempting to arrive at the station!</span>")
return 0
var/efficiency = get_efficiency_mod()
if(!try_use_power(get_delay_cost() * efficiency))
to_chat(user, "<span class='warning'>[src] needs more power to function!</span>")
return 0
delay_cost += delay_cost_increase
delay_remaining += PRISM_DELAY_DURATION
toggle(0, user)
/obj/structure/destructible/clockwork/powered/prolonging_prism/process()
var/turf/own_turf = get_turf(src)
if(SSshuttle.emergency.mode != SHUTTLE_CALL || delay_remaining <= 0 || !own_turf || own_turf.z != ZLEVEL_STATION)
forced_disable(FALSE)
return
. = ..()
var/delay_amount = 40
delay_remaining -= delay_amount
var/efficiency = get_efficiency_mod()
SSshuttle.emergency.setTimer(SSshuttle.emergency.timeLeft(1) + (delay_amount * efficiency))
var/highest_y
var/highest_x
var/lowest_y
var/lowest_x
var/list/prism_turfs = list()
for(var/t in SSshuttle.emergency.ripple_area(SSshuttle.getDock("emergency_home")))
prism_turfs[t] = TRUE
var/turf/T = t
if(!highest_y || T.y > highest_y)
highest_y = T.y
if(!highest_x || T.x > highest_x)
highest_x = T.x
if(!lowest_y || T.y < lowest_y)
lowest_y = T.y
if(!lowest_x || T.x < lowest_x)
lowest_x = T.x
var/mean_y = Lerp(lowest_y, highest_y)
var/mean_x = Lerp(lowest_x, highest_x)
if(prob(50))
mean_y = Ceiling(mean_y)
else
mean_y = Floor(mean_y)
if(prob(50))
mean_x = Ceiling(mean_x)
else
mean_x = Floor(mean_x)
var/turf/semi_random_center_turf = locate(mean_x, mean_y, ZLEVEL_STATION)
for(var/t in getline(src, semi_random_center_turf))
prism_turfs[t] = TRUE
var/placement_style = prob(50)
for(var/t in prism_turfs)
var/turf/T = t
if(placement_style)
if(IsOdd(T.x + T.y))
seven_random_hexes(T, efficiency)
else if(prob(50 * efficiency))
new /obj/effect/temp_visual/ratvar/prolonging_prism(T)
else
if(IsEven(T.x + T.y))
seven_random_hexes(T, efficiency)
else if(prob(50 * efficiency))
new /obj/effect/temp_visual/ratvar/prolonging_prism(T)
CHECK_TICK //we may be going over a hell of a lot of turfs
/obj/structure/destructible/clockwork/powered/prolonging_prism/proc/get_delay_cost()
return Floor((GLOB.clockwork_construction_value * delay_cost_increase * 0.01) + delay_cost, MIN_CLOCKCULT_POWER)
/obj/structure/destructible/clockwork/powered/prolonging_prism/proc/seven_random_hexes(turf/T, efficiency)
var/static/list/hex_states = list("prismhex1", "prismhex2", "prismhex3", "prismhex4", "prismhex5", "prismhex6", "prismhex7")
var/mutable_appearance/hex_combo
for(var/n in hex_states) //BUILD ME A HEXAGON
if(prob(50 * efficiency))
if(!hex_combo)
hex_combo = mutable_appearance('icons/effects/64x64.dmi', n, RIPPLE_LAYER)
else
hex_combo.overlays += mutable_appearance('icons/effects/64x64.dmi', n, RIPPLE_LAYER)
if(hex_combo) //YOU BUILT A HEXAGON
hex_combo.pixel_x = -16
hex_combo.pixel_y = -16
hex_combo.mouse_opacity = 0
hex_combo.plane = GAME_PLANE
new /obj/effect/temp_visual/ratvar/prolonging_prism(T, hex_combo)
@@ -49,7 +49,7 @@
/obj/structure/destructible/clockwork/massive/ratvar/Bump(atom/A) /obj/structure/destructible/clockwork/massive/ratvar/Bump(atom/A)
var/turf/T = get_turf(A) var/turf/T = get_turf(A)
if(T == loc) if(T == loc)
T = get_step(A, A.dir) //please don't run into a window like a bird, ratvar T = get_step(T, dir) //please don't run into a window like a bird, ratvar
forceMove(T) forceMove(T)
/obj/structure/destructible/clockwork/massive/ratvar/Process_Spacemove() /obj/structure/destructible/clockwork/massive/ratvar/Process_Spacemove()
+1 -6
View File
@@ -81,17 +81,12 @@
popup.open() popup.open()
return 1 return 1
/mob/living/proc/cult_master()
set category = "Cultist"
set name = "Assert Leadership"
pollCultists(src) // This proc handles the distribution of cult master actions
/datum/action/innate/cult/mastervote /datum/action/innate/cult/mastervote
name = "Assert Leadership" name = "Assert Leadership"
button_icon_state = "cultvote" button_icon_state = "cultvote"
/datum/action/innate/cult/mastervote/IsAvailable() /datum/action/innate/cult/mastervote/IsAvailable()
if(GLOB.cult_vote_called) if(GLOB.cult_vote_called || !ishuman(owner))
return FALSE return FALSE
return ..() return ..()
+1 -1
View File
@@ -523,7 +523,7 @@
to_chat(M, "<span class='warning'>An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit.</span>") to_chat(M, "<span class='warning'>An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit.</span>")
M.Stun(5) M.Stun(5)
sleep(30) sleep(30)
M.vomit(50) M.vomit(10, distance = 5)
if(ORION_TRAIL_FLUX) if(ORION_TRAIL_FLUX)
if(prob(75)) if(prob(75))
M.Weaken(3) M.Weaken(3)
+1 -1
View File
@@ -250,7 +250,7 @@ GLOBAL_LIST_INIT(pipeID2State, list(
if(istype(user, /mob/living/carbon)) if(istype(user, /mob/living/carbon))
var/mob/living/carbon/C = user var/mob/living/carbon/C = user
for(var/i=1 to 20) for(var/i=1 to 20)
C.vomit(0,1,0,4,0) C.vomit(0, TRUE, FALSE, 4, FALSE)
if(prob(20)) if(prob(20))
C.spew_organ() C.spew_organ()
sleep(5) sleep(5)
+4 -18
View File
@@ -17,10 +17,12 @@
var/obj/effect/countdown/transformer/countdown var/obj/effect/countdown/transformer/countdown
var/mob/living/silicon/ai/masterAI var/mob/living/silicon/ai/masterAI
/obj/machinery/transformer/New() /obj/machinery/transformer/Initialize()
// On us // On us
..() . = ..()
new /obj/machinery/conveyor/auto(locate(x - 1, y, z), WEST)
new /obj/machinery/conveyor/auto(loc, WEST) new /obj/machinery/conveyor/auto(loc, WEST)
new /obj/machinery/conveyor/auto(locate(x + 1, y, z), WEST)
countdown = new(src) countdown = new(src)
countdown.start() countdown.start()
@@ -116,19 +118,3 @@
if(R) if(R)
R.SetLockdown(0) R.SetLockdown(0)
R.notify_ai(NEW_BORG) R.notify_ai(NEW_BORG)
/obj/machinery/transformer/conveyor/New()
..()
var/turf/T = loc
if(T)
// Spawn Conveyor Belts
//East
var/turf/east = locate(T.x + 1, T.y, T.z)
if(isfloorturf(east))
new /obj/machinery/conveyor/auto(east, WEST)
// West
var/turf/west = locate(T.x - 1, T.y, T.z)
if(isfloorturf(west))
new /obj/machinery/conveyor/auto(west, WEST)
+1 -1
View File
@@ -960,7 +960,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
/obj/item/seeds/cabbage = 3,/obj/item/seeds/carrot = 3,/obj/item/seeds/cherry = 3,/obj/item/seeds/chanter = 3, /obj/item/seeds/cabbage = 3,/obj/item/seeds/carrot = 3,/obj/item/seeds/cherry = 3,/obj/item/seeds/chanter = 3,
/obj/item/seeds/chili = 3,/obj/item/seeds/cocoapod = 3,/obj/item/seeds/coffee = 3,/obj/item/seeds/corn = 3, /obj/item/seeds/chili = 3,/obj/item/seeds/cocoapod = 3,/obj/item/seeds/coffee = 3,/obj/item/seeds/corn = 3,
/obj/item/seeds/eggplant = 3,/obj/item/seeds/grape = 3,/obj/item/seeds/grass = 3,/obj/item/seeds/lemon = 3, /obj/item/seeds/eggplant = 3,/obj/item/seeds/grape = 3,/obj/item/seeds/grass = 3,/obj/item/seeds/lemon = 3,
/obj/item/seeds/lime = 3,/obj/item/seeds/orange = 3,/obj/item/seeds/potato = 3,/obj/item/seeds/poppy = 3, /obj/item/seeds/lime = 3,/obj/item/seeds/onion = 3,/obj/item/seeds/orange = 3,/obj/item/seeds/potato = 3,/obj/item/seeds/poppy = 3,
/obj/item/seeds/pumpkin = 3,/obj/item/seeds/replicapod = 3,/obj/item/seeds/wheat/rice = 3,/obj/item/seeds/soya = 3,/obj/item/seeds/sunflower = 3, /obj/item/seeds/pumpkin = 3,/obj/item/seeds/replicapod = 3,/obj/item/seeds/wheat/rice = 3,/obj/item/seeds/soya = 3,/obj/item/seeds/sunflower = 3,
/obj/item/seeds/tea = 3,/obj/item/seeds/tobacco = 3,/obj/item/seeds/tomato = 3, /obj/item/seeds/tea = 3,/obj/item/seeds/tobacco = 3,/obj/item/seeds/tomato = 3,
/obj/item/seeds/tower = 3,/obj/item/seeds/watermelon = 3,/obj/item/seeds/wheat = 3,/obj/item/seeds/whitebeet = 3) /obj/item/seeds/tower = 3,/obj/item/seeds/watermelon = 3,/obj/item/seeds/wheat = 3,/obj/item/seeds/whitebeet = 3)
@@ -146,6 +146,20 @@
pixel_y = rand(-10, 10) pixel_y = rand(-10, 10)
animate(src, alpha = 0, time = 3, easing = EASE_OUT) animate(src, alpha = 0, time = 3, easing = EASE_OUT)
/obj/effect/temp_visual/ratvar/prolonging_prism
icon = 'icons/effects/64x64.dmi'
icon_state = "prismhex1"
layer = RIPPLE_LAYER
pixel_y = -16
pixel_x = -16
duration = 30
/obj/effect/temp_visual/ratvar/prolonging_prism/Initialize(mapload, set_appearance)
. = ..()
if(set_appearance)
appearance = set_appearance
animate(src, alpha = 0, time = duration, easing = BOUNCE_EASING)
/obj/effect/temp_visual/ratvar/spearbreak /obj/effect/temp_visual/ratvar/spearbreak
icon = 'icons/effects/64x64.dmi' icon = 'icons/effects/64x64.dmi'
icon_state = "ratvarspearbreak" icon_state = "ratvarspearbreak"
+3 -1
View File
@@ -269,13 +269,15 @@
return return
if(!in_range(src, user)) if(!in_range(src, user))
return return
if(is_cyborg)
return
else else
if(zero_amount()) if(zero_amount())
return return
//get amount from user //get amount from user
var/min = 0 var/min = 0
var/max = src.get_amount() var/max = src.get_amount()
var/stackmaterial = round(input(user,"How many sheets do you wish to take out of this stack? (Maximum [max]") as num) var/stackmaterial = round(input(user,"How many sheets do you wish to take out of this stack? (Maximum [max])") as num)
if(stackmaterial == null || stackmaterial <= min || stackmaterial >= src.get_amount()) if(stackmaterial == null || stackmaterial <= min || stackmaterial >= src.get_amount())
return return
else else
+6 -1
View File
@@ -125,8 +125,8 @@ obj/item/weapon/construction
var/canRturf = 0 var/canRturf = 0
var/ranged = FALSE var/ranged = FALSE
var/airlock_type = /obj/machinery/door/airlock var/airlock_type = /obj/machinery/door/airlock
var/airlock_glass = FALSE // So the floor's rcd_act knows how much ammo to use
var/window_type = /obj/structure/window/fulltile var/window_type = /obj/structure/window/fulltile
var/advanced_airlock_setting = 1 //Set to 1 if you want more paintjobs available var/advanced_airlock_setting = 1 //Set to 1 if you want more paintjobs available
var/list/conf_access = null var/list/conf_access = null
var/use_one_access = 0 //If the airlock should require ALL or only ONE of the listed accesses. var/use_one_access = 0 //If the airlock should require ALL or only ONE of the listed accesses.
@@ -266,8 +266,10 @@ obj/item/weapon/construction
airlock_type = /obj/machinery/door/airlock/external airlock_type = /obj/machinery/door/airlock/external
if("High Security") if("High Security")
airlock_type = /obj/machinery/door/airlock/highsecurity airlock_type = /obj/machinery/door/airlock/highsecurity
airlock_glass = FALSE
else else
airlock_type = /obj/machinery/door/airlock airlock_type = /obj/machinery/door/airlock
airlock_glass = FALSE
if("Glass") if("Glass")
if(advanced_airlock_setting == 1) if(advanced_airlock_setting == 1)
@@ -289,10 +291,13 @@ obj/item/weapon/construction
airlock_type = /obj/machinery/door/airlock/glass_research airlock_type = /obj/machinery/door/airlock/glass_research
if("Mining") if("Mining")
airlock_type = /obj/machinery/door/airlock/glass_mining airlock_type = /obj/machinery/door/airlock/glass_mining
airlock_glass = TRUE
else else
airlock_type = /obj/machinery/door/airlock/glass airlock_type = /obj/machinery/door/airlock/glass
airlock_glass = TRUE
else else
airlock_type = /obj/machinery/door/airlock airlock_type = /obj/machinery/door/airlock
airlock_glass = FALSE
/obj/item/weapon/construction/rcd/proc/rcd_create(atom/A, mob/user) /obj/item/weapon/construction/rcd/proc/rcd_create(atom/A, mob/user)
+3 -3
View File
@@ -23,7 +23,7 @@
//variables for prebuilt flamethrowers //variables for prebuilt flamethrowers
var/create_full = FALSE var/create_full = FALSE
var/create_with_tank = FALSE var/create_with_tank = FALSE
var/igniter_type = /obj/item/device/assembly/igniter var/igniter_type = /obj/item/device/assembly/igniter
/obj/item/weapon/flamethrower/Destroy() /obj/item/weapon/flamethrower/Destroy()
if(weldtool) if(weldtool)
@@ -145,7 +145,7 @@
if(!status) if(!status)
to_chat(user, "<span class='notice'>Secure the igniter first!</span>") to_chat(user, "<span class='notice'>Secure the igniter first!</span>")
return return
to_chat(user, "<span class='notice'>You ignite [src]!</span>") to_chat(user, "<span class='notice'>You [lit ? "extinguish" : "ignite"] [src]!</span>")
lit = !lit lit = !lit
if(lit) if(lit)
START_PROCESSING(SSobj, src) START_PROCESSING(SSobj, src)
@@ -238,4 +238,4 @@
return return
/obj/item/device/assembly/igniter/proc/ignite_turf(obj/item/weapon/flamethrower/F,turf/open/location,release_amount = 0.05) /obj/item/device/assembly/igniter/proc/ignite_turf(obj/item/weapon/flamethrower/F,turf/open/location,release_amount = 0.05)
F.default_ignite(location,release_amount) F.default_ignite(location,release_amount)
@@ -128,6 +128,7 @@
user.visible_message("[user] recharged \the [A]!","<span class='notice'>You recharged \the [A]!</span>") user.visible_message("[user] recharged \the [A]!","<span class='notice'>You recharged \the [A]!</span>")
recharging = FALSE recharging = FALSE
return TRUE return TRUE
recharging = FALSE
/obj/item/weapon/inducer/attack(mob/M, mob/user) /obj/item/weapon/inducer/attack(mob/M, mob/user)
+8 -8
View File
@@ -58,8 +58,8 @@
origin_tech = "materials=5;engineering=5;abductor=3" origin_tech = "materials=5;engineering=5;abductor=3"
/obj/item/weapon/wrench/power /obj/item/weapon/wrench/power
name = "Hand Drill" name = "hand drill"
desc ="A simple powered drill with a bolt bit" desc = "A simple powered hand drill. It's fitted with a bolt bit."
icon_state = "drill_bolt" icon_state = "drill_bolt"
item_state = "drill" item_state = "drill"
usesound = 'sound/items/drill_use.ogg' usesound = 'sound/items/drill_use.ogg'
@@ -182,8 +182,8 @@
toolspeed = 0.1 toolspeed = 0.1
/obj/item/weapon/screwdriver/power /obj/item/weapon/screwdriver/power
name = "Hand Drill" name = "hand drill"
desc = "A simple hand drill with a screwdriver bit attached." desc = "A simple powered hand drill. It's fitted with a screw bit."
icon_state = "drill_screw" icon_state = "drill_screw"
item_state = "drill" item_state = "drill"
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
@@ -283,8 +283,8 @@
toolspeed = 0.5 toolspeed = 0.5
/obj/item/weapon/wirecutters/power /obj/item/weapon/wirecutters/power
name = "Jaws of Life" name = "jaws of life"
desc = "A set of jaws of life, the magic of science has managed to fit it down into a device small enough to fit in a tool belt. It's fitted with a cutting head." desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head."
icon_state = "jaws_cutter" icon_state = "jaws_cutter"
item_state = "jawsoflife" item_state = "jawsoflife"
origin_tech = "materials=2;engineering=2" origin_tech = "materials=2;engineering=2"
@@ -714,8 +714,8 @@
toolspeed = 0.5 toolspeed = 0.5
/obj/item/weapon/crowbar/power /obj/item/weapon/crowbar/power
name = "Jaws of Life" name = "jaws of life"
desc = "A set of jaws of life, the magic of science has managed to fit it down into a device small enough to fit in a tool belt. It's fitted with a prying head" desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a prying head."
icon_state = "jaws_pry" icon_state = "jaws_pry"
item_state = "jawsoflife" item_state = "jawsoflife"
materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25) materials = list(MAT_METAL=150,MAT_SILVER=50,MAT_TITANIUM=25)
@@ -234,6 +234,7 @@
throw_range = 3 throw_range = 3
hitsound = 'sound/items/trayhit1.ogg' hitsound = 'sound/items/trayhit1.ogg'
hit_reaction_chance = 50 hit_reaction_chance = 50
materials = list(MAT_METAL = 2000)
var/break_chance = 5 //Likely hood of smashing the chair. var/break_chance = 5 //Likely hood of smashing the chair.
var/obj/structure/chair/origin_type = /obj/structure/chair var/obj/structure/chair/origin_type = /obj/structure/chair
@@ -317,6 +318,7 @@
max_integrity = 70 max_integrity = 70
hitsound = 'sound/weapons/genhit1.ogg' hitsound = 'sound/weapons/genhit1.ogg'
origin_type = /obj/structure/chair/wood origin_type = /obj/structure/chair/wood
materials = null
break_chance = 50 break_chance = 50
/obj/item/chair/wood/narsie_act() /obj/item/chair/wood/narsie_act()
+3 -1
View File
@@ -23,7 +23,9 @@
if(RCD_DECONSTRUCT) if(RCD_DECONSTRUCT)
return list("mode" = RCD_DECONSTRUCT, "delay" = 20, "cost" = 5) return list("mode" = RCD_DECONSTRUCT, "delay" = 20, "cost" = 5)
if(RCD_WINDOWGRILLE) if(RCD_WINDOWGRILLE)
return list("mode" = RCD_WINDOWGRILLE, "delay" = 40, "cost" = 10) if(the_rcd.window_type == /obj/structure/window/reinforced/fulltile)
return list("mode" = RCD_WINDOWGRILLE, "delay" = 40, "cost" = 12)
else return list("mode" = RCD_WINDOWGRILLE, "delay" = 20, "cost" = 8)
return FALSE return FALSE
/obj/structure/grille/rcd_act(mob/user, var/obj/item/weapon/construction/rcd/the_rcd, passed_mode) /obj/structure/grille/rcd_act(mob/user, var/obj/item/weapon/construction/rcd/the_rcd, passed_mode)
+1 -1
View File
@@ -190,7 +190,7 @@ GLOBAL_LIST_EMPTY(crematoriums)
// Make sure we don't delete the actual morgue and its tray // Make sure we don't delete the actual morgue and its tray
var/list/conts = GetAllContents() - src - connected var/list/conts = GetAllContents() - src - connected
if(conts.len <= 1) if(!conts.len)
audible_message("<span class='italics'>You hear a hollow crackle.</span>") audible_message("<span class='italics'>You hear a hollow crackle.</span>")
return return
+4 -2
View File
@@ -206,11 +206,13 @@
if(RCD_FLOORWALL) if(RCD_FLOORWALL)
return list("mode" = RCD_FLOORWALL, "delay" = 20, "cost" = 16) return list("mode" = RCD_FLOORWALL, "delay" = 20, "cost" = 16)
if(RCD_AIRLOCK) if(RCD_AIRLOCK)
return list("mode" = RCD_AIRLOCK, "delay" = 50, "cost" = 16) if(the_rcd.airlock_glass)
return list("mode" = RCD_AIRLOCK, "delay" = 50, "cost" = 20)
else return list("mode" = RCD_AIRLOCK, "delay" = 50, "cost" = 16)
if(RCD_DECONSTRUCT) if(RCD_DECONSTRUCT)
return list("mode" = RCD_DECONSTRUCT, "delay" = 50, "cost" = 33) return list("mode" = RCD_DECONSTRUCT, "delay" = 50, "cost" = 33)
if(RCD_WINDOWGRILLE) if(RCD_WINDOWGRILLE)
return list("mode" = RCD_WINDOWGRILLE, "delay" = 40, "cost" = 4) return list("mode" = RCD_WINDOWGRILLE, "delay" = 10, "cost" = 4)
return FALSE return FALSE
/turf/open/floor/rcd_act(mob/user, obj/item/weapon/construction/rcd/the_rcd, passed_mode) /turf/open/floor/rcd_act(mob/user, obj/item/weapon/construction/rcd/the_rcd, passed_mode)
+4 -1
View File
@@ -173,7 +173,10 @@
switch(the_rcd.mode) switch(the_rcd.mode)
if(RCD_FLOORWALL) if(RCD_FLOORWALL)
return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 2) var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
if(L)
return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 1)
else return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 3)
return FALSE return FALSE
/turf/open/space/rcd_act(mob/user, obj/item/weapon/construction/rcd/the_rcd, passed_mode) /turf/open/space/rcd_act(mob/user, obj/item/weapon/construction/rcd/the_rcd, passed_mode)
+4 -1
View File
@@ -66,7 +66,10 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin())
/client/proc/toggle_AI_interact, /*toggle admin ability to interact with machines as an AI*/ /client/proc/toggle_AI_interact, /*toggle admin ability to interact with machines as an AI*/
/client/proc/customiseSNPC, /* Customise any interactive crewmembers in the world */ /client/proc/customiseSNPC, /* Customise any interactive crewmembers in the world */
/client/proc/resetSNPC, /* Resets any interactive crewmembers in the world */ /client/proc/resetSNPC, /* Resets any interactive crewmembers in the world */
/client/proc/open_shuttle_manipulator /* Opens shuttle manipulator UI */ /client/proc/open_shuttle_manipulator, /* Opens shuttle manipulator UI */
/client/proc/deadchat,
/client/proc/toggleprayers,
/client/proc/toggleadminhelpsound
) )
GLOBAL_PROTECT(admin_verbs_ban) GLOBAL_PROTECT(admin_verbs_ban)
GLOBAL_LIST_INIT(admin_verbs_ban, list(/client/proc/unban_panel,/client/proc/DB_ban_panel,/client/proc/stickybanpanel)) GLOBAL_LIST_INIT(admin_verbs_ban, list(/client/proc/unban_panel,/client/proc/DB_ban_panel,/client/proc/stickybanpanel))
+1 -1
View File
@@ -506,7 +506,7 @@
for(var/datum/mind/N in SSticker.mode.cult) for(var/datum/mind/N in SSticker.mode.cult)
var/mob/M = N.current var/mob/M = N.current
if(M) if(M)
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>" dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[N.has_antag_datum(ANTAG_DATUM_CULT_MASTER) ? "<i><font color=red> \[Master\]</font></i>" : ""][M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td>" dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td>"
dat += "<td><A href='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</a></td></tr>" dat += "<td><A href='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</a></td></tr>"
dat += "</table>" dat += "</table>"
+6 -3
View File
@@ -480,7 +480,8 @@
if(minutes > GLOB.CMinutes) if(minutes > GLOB.CMinutes)
mins = minutes - GLOB.CMinutes mins = minutes - GLOB.CMinutes
mins = input(usr,"How long (in minutes)? (Default: 1440)","Ban time",mins ? mins : 1440) as num|null mins = input(usr,"How long (in minutes)? (Default: 1440)","Ban time",mins ? mins : 1440) as num|null
if(!mins) if(mins <= 0)
to_chat(usr, "<span class='danger'>[mins] is not a valid duration.</span>")
return return
minutes = GLOB.CMinutes + mins minutes = GLOB.CMinutes + mins
duration = GetExp(minutes) duration = GetExp(minutes)
@@ -914,7 +915,8 @@
switch(alert("Temporary Ban?",,"Yes","No", "Cancel")) switch(alert("Temporary Ban?",,"Yes","No", "Cancel"))
if("Yes") if("Yes")
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
if(!mins) if(mins <= 0)
to_chat(usr, "<span class='danger'>[mins] is not a valid duration.</span>")
return return
var/reason = input(usr,"Please State Reason.","Reason") as message|null var/reason = input(usr,"Please State Reason.","Reason") as message|null
if(!reason) if(!reason)
@@ -1109,7 +1111,8 @@
switch(alert("Temporary Ban?",,"Yes","No", "Cancel")) switch(alert("Temporary Ban?",,"Yes","No", "Cancel"))
if("Yes") if("Yes")
var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null
if(!mins) if(mins <= 0)
to_chat(usr, "<span class='danger'>[mins] is not a valid duration.</span>")
return return
var/reason = input(usr,"Please State Reason.","Reason") as message|null var/reason = input(usr,"Please State Reason.","Reason") as message|null
if(!reason) if(!reason)
+3 -3
View File
@@ -612,8 +612,8 @@ GLOBAL_PROTECT(VVpixelmovement)
if (O.vv_edit_var(variable, var_new) == FALSE) if (O.vv_edit_var(variable, var_new) == FALSE)
to_chat(src, "Your edit was rejected by the object.") to_chat(src, "Your edit was rejected by the object.")
return return
log_world("### VarEdit by [src]: [O.type] [variable]=[html_encode("[O.vars[variable]]")]") log_world("### VarEdit by [src]: [O.type] [variable]=[html_encode("[var_new]")]")
log_admin("[key_name(src)] modified [original_name]'s [variable] to [O.vars[variable]]") log_admin("[key_name(src)] modified [original_name]'s [variable] to [var_new]")
var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] to [O.vars[variable]]" var/msg = "[key_name_admin(src)] modified [original_name]'s [variable] to [var_new]"
message_admins(msg) message_admins(msg)
admin_ticket_log(O, msg) admin_ticket_log(O, msg)
@@ -9,13 +9,16 @@ Pipes -> Pipelines
Pipelines + Other Objects -> Pipe network Pipelines + Other Objects -> Pipe network
*/ */
#define PIPE_VISIBLE_LEVEL 2
#define PIPE_HIDDEN_LEVEL 1
/obj/machinery/atmospherics /obj/machinery/atmospherics
anchored = 1 anchored = 1
idle_power_usage = 0 idle_power_usage = 0
active_power_usage = 0 active_power_usage = 0
power_channel = ENVIRON power_channel = ENVIRON
on_blueprints = TRUE on_blueprints = TRUE
layer = GAS_PIPE_LAYER //under wires layer = GAS_PIPE_HIDDEN_LAYER //under wires
resistance_flags = FIRE_PROOF resistance_flags = FIRE_PROOF
obj_integrity = 200 obj_integrity = 200
max_integrity = 200 max_integrity = 200
@@ -4,6 +4,7 @@
initialize_directions = SOUTH|NORTH initialize_directions = SOUTH|NORTH
use_power = 1 use_power = 1
device_type = BINARY device_type = BINARY
layer = GAS_PUMP_LAYER
/obj/machinery/atmospherics/components/binary/SetInitDirections() /obj/machinery/atmospherics/components/binary/SetInitDirections()
switch(dir) switch(dir)
@@ -4,6 +4,7 @@
initialize_directions = SOUTH|NORTH|WEST initialize_directions = SOUTH|NORTH|WEST
use_power = 1 use_power = 1
device_type = TRINARY device_type = TRINARY
layer = GAS_FILTER_LAYER
var/flipped = 0 var/flipped = 0
@@ -7,6 +7,7 @@
obj_integrity = 350 obj_integrity = 350
max_integrity = 350 max_integrity = 350
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 30, acid = 30) armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 30, acid = 30)
layer = ABOVE_WINDOW_LAYER
var/on = FALSE var/on = FALSE
state_open = FALSE state_open = FALSE
@@ -155,7 +156,7 @@
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(occupant) if(occupant)
var/mob/living/mob_occupant = occupant var/mob/living/mob_occupant = occupant
if(mob_occupant.health >= 100) // Don't bother with fully healed people. if(mob_occupant.health >= mob_occupant.getMaxHealth()) // Don't bother with fully healed people.
on = FALSE on = FALSE
update_icon() update_icon()
playsound(T, 'sound/machines/cryo_warning.ogg', volume) // Bug the doctors. playsound(T, 'sound/machines/cryo_warning.ogg', volume) // Bug the doctors.
@@ -4,7 +4,8 @@
density = 1 density = 1
name = "generator input" name = "generator input"
desc = "Placeholder" desc = "An input for a generator."
layer = LOW_OBJ_LAYER
var/update_cycle var/update_cycle
@@ -7,6 +7,8 @@
can_unwrench = 1 can_unwrench = 1
layer = LOW_OBJ_LAYER
var/obj/machinery/atmospherics/components/unary/heat_exchanger/partner = null var/obj/machinery/atmospherics/components/unary/heat_exchanger/partner = null
var/update_cycle var/update_cycle
@@ -16,6 +16,7 @@
var/datum/radio_frequency/radio_connection var/datum/radio_frequency/radio_connection
level = 1 level = 1
layer = GAS_SCRUBBER_LAYER
/obj/machinery/atmospherics/components/unary/outlet_injector/Destroy() /obj/machinery/atmospherics/components/unary/outlet_injector/Destroy()
if(SSradio) if(SSradio)
@@ -7,6 +7,7 @@
dir = SOUTH dir = SOUTH
initialize_directions = SOUTH initialize_directions = SOUTH
layer = GAS_SCRUBBER_LAYER
var/on = 0 var/on = 0
@@ -7,6 +7,7 @@
var/obj/machinery/portable_atmospherics/connected_device var/obj/machinery/portable_atmospherics/connected_device
use_power = 0 use_power = 0
level = 0 level = 0
layer = GAS_FILTER_LAYER
/obj/machinery/atmospherics/components/unary/portables_connector/New() /obj/machinery/atmospherics/components/unary/portables_connector/New()
..() ..()
@@ -9,6 +9,7 @@
var/volume = 10000 //in liters, 1 meters by 1 meters by 2 meters var/volume = 10000 //in liters, 1 meters by 1 meters by 2 meters
density = 1 density = 1
var/gas_type = 0 var/gas_type = 0
layer = ABOVE_WINDOW_LAYER
/obj/machinery/atmospherics/components/unary/tank/New() /obj/machinery/atmospherics/components/unary/tank/New()
..() ..()
@@ -1,7 +1,8 @@
/obj/machinery/atmospherics/components/unary/thermomachine /obj/machinery/atmospherics/components/unary/thermomachine
name = "thermomachine" name = "thermomachine"
desc = "Heats or cools gas in connected pipes." desc = "Heats or cools gas in connected pipes."
icon_state = "cold_map" icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "freezer"
var/icon_state_on = "cold_on" var/icon_state_on = "cold_on"
var/icon_state_open = "cold_off" var/icon_state_open = "cold_off"
density = TRUE density = TRUE
@@ -9,7 +10,8 @@
obj_integrity = 300 obj_integrity = 300
max_integrity = 300 max_integrity = 300
armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 80, acid = 30) armor = list(melee = 0, bullet = 0, laser = 0, energy = 100, bomb = 0, bio = 100, rad = 100, fire = 80, acid = 30)
layer = OBJ_LAYER
var/on = FALSE var/on = FALSE
var/min_temperature = 0 var/min_temperature = 0
var/max_temperature = 0 var/max_temperature = 0
@@ -13,6 +13,7 @@
can_unwrench = 1 can_unwrench = 1
welded = 0 welded = 0
level = 1 level = 1
layer = GAS_SCRUBBER_LAYER
var/id_tag = null var/id_tag = null
var/on = 0 var/on = 0
@@ -11,6 +11,7 @@
can_unwrench = 1 can_unwrench = 1
welded = 0 welded = 0
level = 1 level = 1
layer = GAS_SCRUBBER_LAYER
var/id_tag = null var/id_tag = null
var/on = 0 var/on = 0
@@ -38,13 +38,13 @@
//Colored pipes, use these for mapping //Colored pipes, use these for mapping
/obj/machinery/atmospherics/pipe/manifold/general /obj/machinery/atmospherics/pipe/manifold/general
name="pipe"
/obj/machinery/atmospherics/pipe/manifold/general/visible /obj/machinery/atmospherics/pipe/manifold/general/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/general/hidden /obj/machinery/atmospherics/pipe/manifold/general/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/scrubbers /obj/machinery/atmospherics/pipe/manifold/scrubbers
name="scrubbers pipe" name="scrubbers pipe"
@@ -52,10 +52,11 @@
color=rgb(255,0,0) color=rgb(255,0,0)
/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/supply /obj/machinery/atmospherics/pipe/manifold/supply
name="air supply pipe" name="air supply pipe"
@@ -63,10 +64,11 @@
color=rgb(0,0,255) color=rgb(0,0,255)
/obj/machinery/atmospherics/pipe/manifold/supply/visible /obj/machinery/atmospherics/pipe/manifold/supply/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/supply/hidden /obj/machinery/atmospherics/pipe/manifold/supply/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/supplymain /obj/machinery/atmospherics/pipe/manifold/supplymain
name="main air supply pipe" name="main air supply pipe"
@@ -74,47 +76,96 @@
color=rgb(130,43,272) color=rgb(130,43,272)
/obj/machinery/atmospherics/pipe/manifold/supplymain/visible /obj/machinery/atmospherics/pipe/manifold/supplymain/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/supplymain/hidden /obj/machinery/atmospherics/pipe/manifold/supplymain/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/yellow /obj/machinery/atmospherics/pipe/manifold/yellow
pipe_color=rgb(255,198,0) pipe_color=rgb(255,198,0)
color=rgb(255,198,0) color=rgb(255,198,0)
/obj/machinery/atmospherics/pipe/manifold/yellow/visible /obj/machinery/atmospherics/pipe/manifold/yellow/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/yellow/hidden /obj/machinery/atmospherics/pipe/manifold/yellow/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/cyan /obj/machinery/atmospherics/pipe/manifold/cyan
pipe_color=rgb(0,256,249) pipe_color=rgb(0,256,249)
color=rgb(0,256,249) color=rgb(0,256,249)
/obj/machinery/atmospherics/pipe/manifold/cyan/visible /obj/machinery/atmospherics/pipe/manifold/cyan/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/cyan/hidden /obj/machinery/atmospherics/pipe/manifold/cyan/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/green /obj/machinery/atmospherics/pipe/manifold/green
pipe_color=rgb(30,256,0) pipe_color=rgb(30,256,0)
color=rgb(30,256,0) color=rgb(30,256,0)
/obj/machinery/atmospherics/pipe/manifold/green/visible /obj/machinery/atmospherics/pipe/manifold/green/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/green/hidden /obj/machinery/atmospherics/pipe/manifold/green/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/orange /obj/machinery/atmospherics/pipe/manifold/orange
pipe_color=rgb(255,127,39) pipe_color=rgb(255,129,25)
color=rgb(255,127,39) color=rgb(255,129,25)
/obj/machinery/atmospherics/pipe/manifold/orange/visible /obj/machinery/atmospherics/pipe/manifold/orange/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/orange/hidden /obj/machinery/atmospherics/pipe/manifold/orange/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/purple
pipe_color=rgb(128,0,182)
color=rgb(128,0,182)
/obj/machinery/atmospherics/pipe/manifold/purple/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/purple/hidden
level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/dark
pipe_color=rgb(69,69,69)
color=rgb(69,69,69)
/obj/machinery/atmospherics/pipe/manifold/dark/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/dark/hidden
level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/violet
pipe_color=rgb(64,0,128)
color=rgb(64,0,128)
/obj/machinery/atmospherics/pipe/manifold/violet/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/violet/hidden
level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold/brown
pipe_color=rgb(178,100,56)
color=rgb(178,100,56)
/obj/machinery/atmospherics/pipe/manifold/brown/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold/brown/hidden
level = PIPE_HIDDEN_LEVEL
@@ -29,13 +29,13 @@
//Colored pipes, use these for mapping //Colored pipes, use these for mapping
/obj/machinery/atmospherics/pipe/manifold4w/general /obj/machinery/atmospherics/pipe/manifold4w/general
name="pipe"
/obj/machinery/atmospherics/pipe/manifold4w/general/visible /obj/machinery/atmospherics/pipe/manifold4w/general/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/general/hidden /obj/machinery/atmospherics/pipe/manifold4w/general/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers /obj/machinery/atmospherics/pipe/manifold4w/scrubbers
name="scrubbers pipe" name="scrubbers pipe"
@@ -43,10 +43,12 @@
color=rgb(255,0,0) color=rgb(255,0,0)
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/supply /obj/machinery/atmospherics/pipe/manifold4w/supply
name="air supply pipe" name="air supply pipe"
@@ -54,10 +56,11 @@
color=rgb(0,0,255) color=rgb(0,0,255)
/obj/machinery/atmospherics/pipe/manifold4w/supply/visible /obj/machinery/atmospherics/pipe/manifold4w/supply/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/supplymain /obj/machinery/atmospherics/pipe/manifold4w/supplymain
name="main air supply pipe" name="main air supply pipe"
@@ -65,47 +68,96 @@
color=rgb(130,43,272) color=rgb(130,43,272)
/obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible /obj/machinery/atmospherics/pipe/manifold4w/supplymain/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden /obj/machinery/atmospherics/pipe/manifold4w/supplymain/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/yellow /obj/machinery/atmospherics/pipe/manifold4w/yellow
pipe_color=rgb(255,198,0) pipe_color=rgb(255,198,0)
color=rgb(255,198,0) color=rgb(255,198,0)
/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible /obj/machinery/atmospherics/pipe/manifold4w/yellow/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden /obj/machinery/atmospherics/pipe/manifold4w/yellow/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/cyan /obj/machinery/atmospherics/pipe/manifold4w/cyan
pipe_color=rgb(0,256,249) pipe_color=rgb(0,256,249)
color=rgb(0,256,249) color=rgb(0,256,249)
/obj/machinery/atmospherics/pipe/manifold4w/cyan/visible /obj/machinery/atmospherics/pipe/manifold4w/cyan/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden /obj/machinery/atmospherics/pipe/manifold4w/cyan/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/green /obj/machinery/atmospherics/pipe/manifold4w/green
pipe_color=rgb(30,256,0) pipe_color=rgb(30,256,0)
color=rgb(30,256,0) color=rgb(30,256,0)
/obj/machinery/atmospherics/pipe/manifold4w/green/visible /obj/machinery/atmospherics/pipe/manifold4w/green/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/green/hidden /obj/machinery/atmospherics/pipe/manifold4w/green/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/orange /obj/machinery/atmospherics/pipe/manifold4w/orange
pipe_color=rgb(255,127,39) pipe_color=rgb(255,129,25)
color=rgb(255,127,39) color=rgb(255,129,25)
/obj/machinery/atmospherics/pipe/manifold4w/orange/visible /obj/machinery/atmospherics/pipe/manifold4w/orange/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden /obj/machinery/atmospherics/pipe/manifold4w/orange/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/purple
pipe_color=rgb(128,0,182)
color=rgb(128,0,182)
/obj/machinery/atmospherics/pipe/manifold4w/purple/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden
level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/dark
pipe_color=rgb(69,69,69)
color=rgb(69,69,69)
/obj/machinery/atmospherics/pipe/manifold4w/dark/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/dark/hidden
level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/violet
pipe_color=rgb(64,0,128)
color=rgb(64,0,128)
/obj/machinery/atmospherics/pipe/manifold4w/violet/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/violet/hidden
level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/manifold4w/brown
pipe_color=rgb(178,100,56)
color=rgb(178,100,56)
/obj/machinery/atmospherics/pipe/manifold4w/brown/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/manifold4w/brown/hidden
level = PIPE_HIDDEN_LEVEL
@@ -40,13 +40,13 @@ The regular pipe you see everywhere, including bent ones.
//Colored pipes, use these for mapping //Colored pipes, use these for mapping
/obj/machinery/atmospherics/pipe/simple/general /obj/machinery/atmospherics/pipe/simple/general
name="pipe"
/obj/machinery/atmospherics/pipe/simple/general/visible /obj/machinery/atmospherics/pipe/simple/general/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/general/hidden /obj/machinery/atmospherics/pipe/simple/general/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/scrubbers /obj/machinery/atmospherics/pipe/simple/scrubbers
name="scrubbers pipe" name="scrubbers pipe"
@@ -54,10 +54,11 @@ The regular pipe you see everywhere, including bent ones.
color=rgb(255,0,0) color=rgb(255,0,0)
/obj/machinery/atmospherics/pipe/simple/scrubbers/visible /obj/machinery/atmospherics/pipe/simple/scrubbers/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/supply /obj/machinery/atmospherics/pipe/simple/supply
name="air supply pipe" name="air supply pipe"
@@ -65,10 +66,11 @@ The regular pipe you see everywhere, including bent ones.
color=rgb(0,0,255) color=rgb(0,0,255)
/obj/machinery/atmospherics/pipe/simple/supply/visible /obj/machinery/atmospherics/pipe/simple/supply/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/supply/hidden /obj/machinery/atmospherics/pipe/simple/supply/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/supplymain /obj/machinery/atmospherics/pipe/simple/supplymain
name="main air supply pipe" name="main air supply pipe"
@@ -76,47 +78,96 @@ The regular pipe you see everywhere, including bent ones.
color=rgb(130,43,272) color=rgb(130,43,272)
/obj/machinery/atmospherics/pipe/simple/supplymain/visible /obj/machinery/atmospherics/pipe/simple/supplymain/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden /obj/machinery/atmospherics/pipe/simple/supplymain/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/yellow /obj/machinery/atmospherics/pipe/simple/yellow
pipe_color=rgb(255,198,0) pipe_color=rgb(255,198,0)
color=rgb(255,198,0) color=rgb(255,198,0)
/obj/machinery/atmospherics/pipe/simple/yellow/visible /obj/machinery/atmospherics/pipe/simple/yellow/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/yellow/hidden /obj/machinery/atmospherics/pipe/simple/yellow/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/cyan /obj/machinery/atmospherics/pipe/simple/cyan
pipe_color=rgb(0,256,249) pipe_color=rgb(0,256,249)
color=rgb(0,256,249) color=rgb(0,256,249)
/obj/machinery/atmospherics/pipe/simple/cyan/visible /obj/machinery/atmospherics/pipe/simple/cyan/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/cyan/hidden /obj/machinery/atmospherics/pipe/simple/cyan/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/green /obj/machinery/atmospherics/pipe/simple/green
pipe_color=rgb(30,256,0) pipe_color=rgb(30,256,0)
color=rgb(30,256,0) color=rgb(30,256,0)
/obj/machinery/atmospherics/pipe/simple/green/visible /obj/machinery/atmospherics/pipe/simple/green/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/green/hidden /obj/machinery/atmospherics/pipe/simple/green/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/orange /obj/machinery/atmospherics/pipe/simple/orange
pipe_color=rgb(255,127,39) pipe_color=rgb(255,129,25)
color=rgb(255,127,39) color=rgb(255,129,25)
/obj/machinery/atmospherics/pipe/simple/orange/visible /obj/machinery/atmospherics/pipe/simple/orange/visible
level = 2 level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/orange/hidden /obj/machinery/atmospherics/pipe/simple/orange/hidden
level = 1 level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/purple
pipe_color=rgb(128,0,182)
color=rgb(128,0,182)
/obj/machinery/atmospherics/pipe/simple/purple/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/purple/hidden
level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/dark
pipe_color=rgb(69,69,69)
color=rgb(69,69,69)
/obj/machinery/atmospherics/pipe/simple/dark/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/dark/hidden
level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/violet
pipe_color=rgb(64,0,128)
color=rgb(64,0,128)
/obj/machinery/atmospherics/pipe/simple/violet/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/violet/hidden
level = PIPE_HIDDEN_LEVEL
/obj/machinery/atmospherics/pipe/simple/brown
pipe_color=rgb(178,100,56)
color=rgb(178,100,56)
/obj/machinery/atmospherics/pipe/simple/brown/visible
level = PIPE_VISIBLE_LEVEL
layer = GAS_PIPE_VISIBLE_LAYER
/obj/machinery/atmospherics/pipe/simple/brown/hidden
level = PIPE_HIDDEN_LEVEL
+1 -1
View File
@@ -69,7 +69,7 @@
// Plasteel. Lightweight, strong and contains some plasma too. // Plasteel. Lightweight, strong and contains some plasma too.
/datum/export/stack/plasteel /datum/export/stack/plasteel
cost = 85 cost = 305 // 2000u of plasma + 2000u of metal.
message = "of plasteel" message = "of plasteel"
export_types = list(/obj/item/stack/sheet/plasteel) export_types = list(/obj/item/stack/sheet/plasteel)
+2 -2
View File
@@ -1249,13 +1249,13 @@
/datum/supply_pack/materials/plasteel20 /datum/supply_pack/materials/plasteel20
name = "20 Plasteel Sheets" name = "20 Plasteel Sheets"
cost = 3000 cost = 7500
contains = list(/obj/item/stack/sheet/plasteel/twenty) contains = list(/obj/item/stack/sheet/plasteel/twenty)
crate_name = "plasteel sheets crate" crate_name = "plasteel sheets crate"
/datum/supply_pack/materials/plasteel50 /datum/supply_pack/materials/plasteel50
name = "50 Plasteel Sheets" name = "50 Plasteel Sheets"
cost = 5000 cost = 16500
contains = list(/obj/item/stack/sheet/plasteel/fifty) contains = list(/obj/item/stack/sheet/plasteel/fifty)
crate_name = "plasteel sheets crate" crate_name = "plasteel sheets crate"
+1 -1
View File
@@ -490,7 +490,7 @@ GLOBAL_LIST(external_rsc_urls)
return return
if(!account_join_date) if(!account_join_date)
account_join_date = "Error" account_join_date = "Error"
var/datum/DBQuery/query_log_connection = SSdbcore.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),COALESCE(INET_ATON('[world.internet_address]'), 0),'[world.port]','[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]')") var/datum/DBQuery/query_log_connection = SSdbcore.NewQuery("INSERT INTO `[format_table_name("connection_log")]` (`id`,`datetime`,`server_ip`,`server_port`,`ckey`,`ip`,`computerid`) VALUES(null,Now(),INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')),'[world.port]','[sql_ckey]',INET_ATON('[sql_ip]'),'[sql_computerid]')")
query_log_connection.Execute() query_log_connection.Execute()
if(new_player) if(new_player)
player_age = -1 player_age = -1
+2 -3
View File
@@ -625,7 +625,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
else if(src.dir == WEST) else if(src.dir == WEST)
del src.currentimage del src.currentimage
src.currentimage = new /image(left,src) src.currentimage = new /image(left,src)
to_chat(my_target, currentimage) SEND_IMAGE(my_target, currentimage)
/obj/effect/fake_attacker/proc/attack_loop() /obj/effect/fake_attacker/proc/attack_loop()
@@ -669,7 +669,7 @@ Gunshots/explosions/opening doors/less rare audio (done)
var/obj/effect/overlay/O = new/obj/effect/overlay(target.loc) var/obj/effect/overlay/O = new/obj/effect/overlay(target.loc)
O.name = "blood" O.name = "blood"
var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1) var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1)
to_chat(target, I) SEND_IMAGE(target, I)
QDEL_IN(O, 300) QDEL_IN(O, 300)
@@ -786,7 +786,6 @@ Gunshots/explosions/opening doors/less rare audio (done)
new /obj/effect/hallucination/items_other(src.loc,src) new /obj/effect/hallucination/items_other(src.loc,src)
if("sounds") if("sounds")
//Strange audio //Strange audio
//to_chat(src, "Strange Audio")
switch(rand(1,20)) switch(rand(1,20))
if(1) playsound_local(null,'sound/machines/airlock.ogg', 15, 1) if(1) playsound_local(null,'sound/machines/airlock.ogg', 15, 1)
if(2) if(2)
+3 -2
View File
@@ -182,7 +182,7 @@
/obj/item/weapon/reagent_containers/food/snacks/proc/slice(accuracy, obj/item/weapon/W, mob/user) /obj/item/weapon/reagent_containers/food/snacks/proc/slice(accuracy, obj/item/weapon/W, mob/user)
if((slices_num <= 0 || !slices_num) || !slice_path) //is the food sliceable? if((slices_num <= 0 || !slices_num) || !slice_path) //is the food sliceable?
return 0 return FALSE
if ( \ if ( \
!isturf(src.loc) || \ !isturf(src.loc) || \
@@ -191,7 +191,7 @@
!(locate(/obj/item/weapon/storage/bag/tray) in src.loc) \ !(locate(/obj/item/weapon/storage/bag/tray) in src.loc) \
) )
to_chat(user, "<span class='warning'>You cannot slice [src] here! You need a table or at least a tray.</span>") to_chat(user, "<span class='warning'>You cannot slice [src] here! You need a table or at least a tray.</span>")
return 1 return FALSE
var/slices_lost = 0 var/slices_lost = 0
if (accuracy >= IS_SHARP_ACCURATE) if (accuracy >= IS_SHARP_ACCURATE)
@@ -211,6 +211,7 @@
var/obj/item/weapon/reagent_containers/food/snacks/slice = new slice_path (loc) var/obj/item/weapon/reagent_containers/food/snacks/slice = new slice_path (loc)
initialize_slice(slice, reagents_per_slice) initialize_slice(slice, reagents_per_slice)
qdel(src) qdel(src)
return TRUE
/obj/item/weapon/reagent_containers/food/snacks/proc/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/slice, reagents_per_slice) /obj/item/weapon/reagent_containers/food/snacks/proc/initialize_slice(obj/item/weapon/reagent_containers/food/snacks/slice, reagents_per_slice)
slice.create_reagents(slice.volume) slice.create_reagents(slice.volume)
@@ -475,4 +475,13 @@
icon_state = "butter" icon_state = "butter"
list_reagents = list("nutriment" = 5) list_reagents = list("nutriment" = 5)
filling_color = "#FFD700" filling_color = "#FFD700"
tastes = list("butter" = 1) tastes = list("butter" = 1)
/obj/item/weapon/reagent_containers/food/snacks/onionrings
name = "onion rings"
desc = "Onion slices coated in batter."
icon_state = "onionrings"
list_reagents = list("nutriment" = 3)
filling_color = "#C0C9A0"
gender = PLURAL
tastes = list("batter" = 3, "onion" = 1)
@@ -15,8 +15,7 @@
var/max_n_of_items = 10 // whatever fat fuck made this a global var needs to look at themselves in the mirror sometime var/max_n_of_items = 10 // whatever fat fuck made this a global var needs to look at themselves in the mirror sometime
var/efficiency = 0 var/efficiency = 0
//Microwaving doesn't use recipes, instead it calls the microwave_act of the objects. For food, this creates something based on the food's cooked_type
// see code/modules/food/recipes_microwave.dm for recipes
/******************* /*******************
* Initialising * Initialising
@@ -126,8 +126,6 @@
input = /obj/item/weapon/reagent_containers/food/snacks/grown/parsnip input = /obj/item/weapon/reagent_containers/food/snacks/grown/parsnip
output = /obj/item/weapon/reagent_containers/food/snacks/roastparsnip output = /obj/item/weapon/reagent_containers/food/snacks/roastparsnip
/* mobs */ /* mobs */
/datum/food_processor_process/mob/process_food(loc, what, processor) /datum/food_processor_process/mob/process_food(loc, what, processor)
..() ..()
+72
View File
@@ -0,0 +1,72 @@
/obj/item/seeds/onion
name = "pack of onion seeds"
desc = "These seeds grow into onions."
icon_state = "seed-onion"
species = "onion"
plantname = "Onion Sprouts"
product = /obj/item/weapon/reagent_containers/food/snacks/grown/onion
lifespan = 20
maturation = 3
production = 4
yield = 6
endurance = 25
growthstages = 3
weed_chance = 3
growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi'
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1)
mutatelist = list(/obj/item/seeds/onion/red)
/obj/item/weapon/reagent_containers/food/snacks/grown/onion
seed = /obj/item/seeds/onion
name = "onion"
desc = "Nothing to cry over."
icon_state = "onion"
filling_color = "#C0C9A0"
bitesize_mod = 2
tastes = list("onions" = 1)
slice_path = /obj/item/weapon/reagent_containers/food/snacks/onion_slice
slices_num = 2
/obj/item/seeds/onion/red
name = "pack of red onion seeds"
desc = "For growing exceptionally potent onions."
icon_state = "seed-onionred"
species = "onion_red"
plantname = "Red Onion Sprouts"
weed_chance = 1
product = /obj/item/weapon/reagent_containers/food/snacks/grown/onion/red
reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "tearjuice" = 0.05)
/obj/item/weapon/reagent_containers/food/snacks/grown/onion/red
seed = /obj/item/seeds/onion/red
name = "red onion"
desc = "Purple despite the name."
icon_state = "onion_red"
filling_color = "#C29ACF"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/onion_slice/red
/obj/item/weapon/reagent_containers/food/snacks/grown/onion/slice(accuracy, obj/item/weapon/W, mob/user)
var/datum/effect_system/smoke_spread/chem/S = new //Since the onion is destroyed when it's sliced,
var/splat_location = get_turf(src) //we need to set up the smoke beforehand
S.attach(splat_location)
S.set_up(reagents, 0, splat_location, 0)
if(..())
S.start()
return TRUE
qdel(S)
/obj/item/weapon/reagent_containers/food/snacks/onion_slice
name = "onion slices"
desc = "Rings, not for wearing."
icon_state = "onionslice"
list_reagents = list("nutriment" = 5, "vitamin" = 2)
filling_color = "#C0C9A0"
gender = PLURAL
cooked_type = /obj/item/weapon/reagent_containers/food/snacks/onionrings
/obj/item/weapon/reagent_containers/food/snacks/onion_slice/red
name = "red onion slices"
desc = "They shine like exceptionally low quality amethyst."
icon_state = "onionslice_red"
filling_color = "#C29ACF"
list_reagents = list("nutriment" = 5, "vitamin" = 2, "tearjuice" = 2.5)
+10
View File
@@ -270,6 +270,8 @@
source_turf.luminosity = Ceiling(light_range) source_turf.luminosity = Ceiling(light_range)
for(T in view(Ceiling(light_range), source_turf)) for(T in view(Ceiling(light_range), source_turf))
for (thing in T.get_corners(source_turf)) for (thing in T.get_corners(source_turf))
if(!thing)
continue
C = thing C = thing
corners[C] = 0 corners[C] = 0
turfs += T turfs += T
@@ -291,6 +293,8 @@
LAZYINITLIST(effect_str) LAZYINITLIST(effect_str)
if (needs_update == LIGHTING_VIS_UPDATE) if (needs_update == LIGHTING_VIS_UPDATE)
for (thing in corners - effect_str) // New corners for (thing in corners - effect_str) // New corners
if(!thing)
continue
C = thing C = thing
LAZYADD(C.affecting, src) LAZYADD(C.affecting, src)
if (!C.active) if (!C.active)
@@ -300,6 +304,8 @@
else else
L = corners - effect_str L = corners - effect_str
for (thing in L) // New corners for (thing in L) // New corners
if(!thing)
continue
C = thing C = thing
LAZYADD(C.affecting, src) LAZYADD(C.affecting, src)
if (!C.active) if (!C.active)
@@ -308,6 +314,8 @@
APPLY_CORNER(C) APPLY_CORNER(C)
for (thing in corners - L) // Existing corners for (thing in corners - L) // Existing corners
if(!thing)
continue
C = thing C = thing
if (!C.active) if (!C.active)
effect_str[C] = 0 effect_str[C] = 0
@@ -316,6 +324,8 @@
L = effect_str - corners L = effect_str - corners
for (thing in L) // Old, now gone, corners. for (thing in L) // Old, now gone, corners.
if(!thing)
continue
C = thing C = thing
REMOVE_CORNER(C) REMOVE_CORNER(C)
LAZYREMOVE(C.affecting, src) LAZYREMOVE(C.affecting, src)
+6
View File
@@ -24,6 +24,8 @@
var/datum/lighting_corner/C var/datum/lighting_corner/C
var/thing var/thing
for (thing in corners) for (thing in corners)
if(!thing)
continue
C = thing C = thing
C.update_active() C.update_active()
@@ -45,6 +47,8 @@
var/datum/lighting_corner/C var/datum/lighting_corner/C
var/datum/light_source/S var/datum/light_source/S
for (thing in corners) for (thing in corners)
if(!thing)
continue
C = thing C = thing
if (!C.active) // We would activate the corner, calculate the lighting for it. if (!C.active) // We would activate the corner, calculate the lighting for it.
for (thing in C.affecting) for (thing in C.affecting)
@@ -61,6 +65,8 @@
var/thing var/thing
var/datum/lighting_corner/L var/datum/lighting_corner/L
for (thing in corners) for (thing in corners)
if(!thing)
continue
L = thing L = thing
totallums += L.lum_r + L.lum_b + L.lum_g totallums += L.lum_r + L.lum_b + L.lum_g
+25 -13
View File
@@ -1,3 +1,8 @@
#define GIBTONITE_QUALITY_HIGH 3
#define GIBTONITE_QUALITY_MEDIUM 2
#define GIBTONITE_QUALITY_LOW 1
/**********************Mineral ores**************************/ /**********************Mineral ores**************************/
/obj/item/weapon/ore /obj/item/weapon/ore
@@ -184,10 +189,11 @@
item_state = "Gibtonite ore" item_state = "Gibtonite ore"
w_class = WEIGHT_CLASS_BULKY w_class = WEIGHT_CLASS_BULKY
throw_range = 0 throw_range = 0
var/primed = 0 var/primed = FALSE
var/det_time = 100 var/det_time = 100
var/quality = 1 //How pure this gibtonite is, determines the explosion produced by it and is derived from the det_time of the rock wall it was taken from, higher value = better var/quality = GIBTONITE_QUALITY_LOW //How pure this gibtonite is, determines the explosion produced by it and is derived from the det_time of the rock wall it was taken from, higher value = better
var/attacher = "UNKNOWN" var/attacher = "UNKNOWN"
var/det_timer
/obj/item/weapon/twohanded/required/gibtonite/Destroy() /obj/item/weapon/twohanded/required/gibtonite/Destroy()
qdel(wires) qdel(wires)
@@ -213,10 +219,12 @@
return return
if(primed) if(primed)
if(istype(I, /obj/item/device/mining_scanner) || istype(I, /obj/item/device/t_scanner/adv_mining_scanner) || istype(I, /obj/item/device/multitool)) if(istype(I, /obj/item/device/mining_scanner) || istype(I, /obj/item/device/t_scanner/adv_mining_scanner) || istype(I, /obj/item/device/multitool))
primed = 0 primed = FALSE
if(det_timer)
deltimer(det_timer)
user.visible_message("The chain reaction was stopped! ...The ore's quality looks diminished.", "<span class='notice'>You stopped the chain reaction. ...The ore's quality looks diminished.</span>") user.visible_message("The chain reaction was stopped! ...The ore's quality looks diminished.", "<span class='notice'>You stopped the chain reaction. ...The ore's quality looks diminished.</span>")
icon_state = "Gibtonite ore" icon_state = "Gibtonite ore"
quality = 1 quality = GIBTONITE_QUALITY_LOW
return return
..() ..()
@@ -237,8 +245,8 @@
/obj/item/weapon/twohanded/required/gibtonite/proc/GibtoniteReaction(mob/user, triggered_by = 0) /obj/item/weapon/twohanded/required/gibtonite/proc/GibtoniteReaction(mob/user, triggered_by = 0)
if(!primed) if(!primed)
primed = TRUE
playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1) playsound(src,'sound/effects/hit_on_shattered_glass.ogg',50,1)
primed = 1
icon_state = "Gibtonite active" icon_state = "Gibtonite active"
var/turf/bombturf = get_turf(src) var/turf/bombturf = get_turf(src)
var/area/A = get_area(bombturf) var/area/A = get_area(bombturf)
@@ -260,14 +268,18 @@
else else
user.visible_message("<span class='warning'>[user] strikes \the [src], causing a chain reaction!</span>", "<span class='danger'>You strike \the [src], causing a chain reaction.</span>") user.visible_message("<span class='warning'>[user] strikes \the [src], causing a chain reaction!</span>", "<span class='danger'>You strike \the [src], causing a chain reaction.</span>")
log_game("[key_name(user)] has primed a [name] for detonation at [A][COORD(bombturf)]") log_game("[key_name(user)] has primed a [name] for detonation at [A][COORD(bombturf)]")
if(primed) det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE)
if(quality == 3)
explosion(src.loc,2,4,9,adminlog = notify_admins) /obj/item/weapon/twohanded/required/gibtonite/proc/detonate(notify_admins)
if(quality == 2) if(primed)
explosion(src.loc,1,2,5,adminlog = notify_admins) switch(quality)
if(quality == 1) if(GIBTONITE_QUALITY_HIGH)
explosion(src.loc,-1,1,3,adminlog = notify_admins) explosion(src,2,4,9,adminlog = notify_admins)
qdel(src) if(GIBTONITE_QUALITY_MEDIUM)
explosion(src,1,2,5,adminlog = notify_admins)
if(GIBTONITE_QUALITY_LOW)
explosion(src,0,1,3,adminlog = notify_admins)
qdel(src)
/obj/item/weapon/ore/Initialize() /obj/item/weapon/ore/Initialize()
..() ..()
+5
View File
@@ -28,6 +28,11 @@
else else
return ..() return ..()
/obj/structure/ore_box/examine(mob/living/user)
if(Adjacent(user) && istype(user))
show_contents(user)
. = ..()
/obj/structure/ore_box/attack_hand(mob/user) /obj/structure/ore_box/attack_hand(mob/user)
if(Adjacent(user)) if(Adjacent(user))
show_contents(user) show_contents(user)
+4 -7
View File
@@ -379,10 +379,6 @@
return return
return TRUE return TRUE
/mob/living/carbon/proc/is_mouth_covered(head_only = 0, mask_only = 0)
if( (!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH)) )
return 1
/mob/living/carbon/get_standard_pixel_y_offset(lying = 0) /mob/living/carbon/get_standard_pixel_y_offset(lying = 0)
if(lying) if(lying)
return -6 return -6
@@ -450,7 +446,7 @@
return 0 return 0
return ..() return ..()
/mob/living/carbon/proc/vomit(var/lost_nutrition = 10, var/blood = 0, var/stun = 1, var/distance = 0, var/message = 1, var/toxic = 0) /mob/living/carbon/proc/vomit(lost_nutrition = 10, blood = FALSE, stun = TRUE, distance = 1, message = TRUE, toxic = FALSE)
if(dna && dna.species && NOHUNGER in dna.species.species_traits) if(dna && dna.species && NOHUNGER in dna.species.species_traits)
return 1 return 1
@@ -476,6 +472,9 @@
playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1) playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1)
var/turf/T = get_turf(src) var/turf/T = get_turf(src)
if(!blood)
nutrition -= lost_nutrition
adjustToxLoss(-3)
for(var/i=0 to distance) for(var/i=0 to distance)
if(blood) if(blood)
if(T) if(T)
@@ -485,8 +484,6 @@
else else
if(T) if(T)
T.add_vomit_floor(src, toxic)//toxic barf looks different T.add_vomit_floor(src, toxic)//toxic barf looks different
nutrition -= lost_nutrition
adjustToxLoss(-3)
T = get_step(T, dir) T = get_step(T, dir)
if (is_blocked_turf(T)) if (is_blocked_turf(T))
break break
@@ -35,6 +35,18 @@
number += E.bang_protect number += E.bang_protect
return number return number
/mob/living/carbon/is_mouth_covered(head_only = 0, mask_only = 0)
if( (!mask_only && head && (head.flags_cover & HEADCOVERSMOUTH)) || (!head_only && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH)) )
return TRUE
/mob/living/carbon/is_eyes_covered(check_glasses = 1, check_head = 1, check_mask = 1)
if(check_glasses && glasses && (glasses.flags_cover & GLASSESCOVERSEYES))
return TRUE
if(check_head && head && (head.flags_cover & HEADCOVERSEYES))
return TRUE
if(check_mask && wear_mask && (wear_mask.flags_cover & MASKCOVERSMOUTH))
return TRUE
/mob/living/carbon/check_projectile_dismemberment(obj/item/projectile/P, def_zone) /mob/living/carbon/check_projectile_dismemberment(obj/item/projectile/P, def_zone)
var/obj/item/bodypart/affecting = get_bodypart(def_zone) var/obj/item/bodypart/affecting = get_bodypart(def_zone)
if(affecting && affecting.dismemberable && affecting.get_damage() >= (affecting.max_damage - P.dismemberment)) if(affecting && affecting.dismemberable && affecting.get_damage() >= (affecting.max_damage - P.dismemberment))
@@ -305,8 +317,9 @@
Weaken(stun_pwr*effect_amount) Weaken(stun_pwr*effect_amount)
if(istype(ears) && (deafen_pwr || damage_pwr)) if(istype(ears) && (deafen_pwr || damage_pwr))
ears.ear_damage += damage_pwr * effect_amount var/ear_damage = damage_pwr * effect_amount
ears.deaf = max(ears.deaf, deafen_pwr * effect_amount) var/deaf = max(ears.deaf, deafen_pwr * effect_amount)
adjustEarDamage(ear_damage,deaf)
if(ears.ear_damage >= 15) if(ears.ear_damage >= 15)
to_chat(src, "<span class='warning'>Your ears start to ring badly!</span>") to_chat(src, "<span class='warning'>Your ears start to ring badly!</span>")
@@ -66,12 +66,21 @@
var/obj/item/weapon/storage/wallet/wallet = wear_id var/obj/item/weapon/storage/wallet/wallet = wear_id
var/obj/item/device/pda/pda = wear_id var/obj/item/device/pda/pda = wear_id
var/obj/item/weapon/card/id/id = wear_id var/obj/item/weapon/card/id/id = wear_id
var/obj/item/device/modular_computer/tablet/tablet = wear_id
if(istype(wallet)) if(istype(wallet))
id = wallet.front_id id = wallet.front_id
if(istype(id)) if(istype(id))
. = id.registered_name . = id.registered_name
else if(istype(pda)) else if(istype(pda))
. = pda.owner . = pda.owner
else if(istype(tablet))
var/obj/item/weapon/computer_hardware/card_slot/card_slot = tablet.all_components[MC_CARD]
if(card_slot && (card_slot.stored_card2 || card_slot.stored_card))
if(card_slot.stored_card2) //The second card is the one used for authorization in the ID changing program, so we prioritize it here for consistency
. = card_slot.stored_card2.registered_name
else
if(card_slot.stored_card)
. = card_slot.stored_card.registered_name
if(!.) if(!.)
. = if_no_id //to prevent null-names making the mob unclickable . = if_no_id //to prevent null-names making the mob unclickable
return return
+3 -3
View File
@@ -282,9 +282,9 @@
//Puke if toxloss is too high //Puke if toxloss is too high
if(!stat) if(!stat)
if(getToxLoss() >= 45 && nutrition > 20) if(getToxLoss() >= 45 && nutrition > 20)
lastpuke ++ lastpuke += prob(50)
if(lastpuke >= 25) // about 25 second delay I guess if(lastpuke >= 50) // about 25 second delay I guess
vomit(20, 0, 1, 0, 1, 1) vomit(20, toxic = TRUE)
lastpuke = 0 lastpuke = 0
@@ -1509,19 +1509,24 @@
// +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt.
if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(RESISTHOT in species_traits)) if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(RESISTHOT in species_traits))
//Body temperature is too hot. //Body temperature is too hot.
var/burn_damage
switch(H.bodytemperature) switch(H.bodytemperature)
if(360 to 400) if(360 to 400)
H.throw_alert("temp", /obj/screen/alert/hot, 1) H.throw_alert("temp", /obj/screen/alert/hot, 1)
H.apply_damage(HEAT_DAMAGE_LEVEL_1*heatmod, BURN) burn_damage = HEAT_DAMAGE_LEVEL_1
if(400 to 460) if(400 to 460)
H.throw_alert("temp", /obj/screen/alert/hot, 2) H.throw_alert("temp", /obj/screen/alert/hot, 2)
H.apply_damage(HEAT_DAMAGE_LEVEL_2*heatmod, BURN) burn_damage = HEAT_DAMAGE_LEVEL_2
if(460 to INFINITY) if(460 to INFINITY)
H.throw_alert("temp", /obj/screen/alert/hot, 3) H.throw_alert("temp", /obj/screen/alert/hot, 3)
if(H.on_fire) if(H.on_fire)
H.apply_damage(HEAT_DAMAGE_LEVEL_3*heatmod, BURN) burn_damage = HEAT_DAMAGE_LEVEL_3
else else
H.apply_damage(HEAT_DAMAGE_LEVEL_2*heatmod, BURN) burn_damage = HEAT_DAMAGE_LEVEL_2
burn_damage *= heatmod
if((prob(burn_damage) * 10) / 4) //40% for level 3 damage on humans
H.emote("scream")
H.apply_damage(burn_damage, BURN)
else if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !(GLOB.mutations_list[COLDRES] in H.dna.mutations)) else if(H.bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !(GLOB.mutations_list[COLDRES] in H.dna.mutations))
switch(H.bodytemperature) switch(H.bodytemperature)
if(200 to 260) if(200 to 260)
@@ -17,7 +17,7 @@
var/datum/reagent/consumable/nutri_check = chem var/datum/reagent/consumable/nutri_check = chem
if(nutri_check.nutriment_factor > 0) if(nutri_check.nutriment_factor > 0)
var/turf/pos = get_turf(H) var/turf/pos = get_turf(H)
H.vomit(0, 0, 0, 1, 1) H.vomit(0, FALSE, FALSE, 2, TRUE)
playsound(pos, 'sound/effects/splat.ogg', 50, 1) playsound(pos, 'sound/effects/splat.ogg', 50, 1)
H.visible_message("<span class='danger'>[H] vomits on the floor!</span>", \ H.visible_message("<span class='danger'>[H] vomits on the floor!</span>", \
"<span class='userdanger'>You throw up on the floor!</span>") "<span class='userdanger'>You throw up on the floor!</span>")
@@ -8,20 +8,26 @@
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/zombie meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/zombie
species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT) species_traits = list(NOBREATH,RESISTCOLD,RESISTPRESSURE,NOBLOOD,RADIMMUNE,NOZOMBIE,EASYDISMEMBER,EASYLIMBATTACHMENT)
mutant_organs = list(/obj/item/organ/tongue/zombie) mutant_organs = list(/obj/item/organ/tongue/zombie)
var/static/list/spooks = list('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg','sound/hallucinations/veryfar_noise.ogg','sound/hallucinations/wail.ogg')
/datum/species/zombie/infectious /datum/species/zombie/infectious
name = "Infectious Zombie" name = "Infectious Zombie"
id = "memezombies" id = "memezombies"
limbs_id = "zombie" limbs_id = "zombie"
mutanthands = /obj/item/zombie_hand mutanthands = /obj/item/zombie_hand
no_equip = list(slot_wear_mask, slot_head)
armor = 20 // 120 damage to KO a zombie, which kills it armor = 20 // 120 damage to KO a zombie, which kills it
speedmod = 2 speedmod = 2
mutanteyes = /obj/item/organ/eyes/night_vision/zombie mutanteyes = /obj/item/organ/eyes/night_vision/zombie
/datum/species/zombie/infectious/spec_stun(mob/living/carbon/human/H,amount)
. = min(2, amount)
/datum/species/zombie/infectious/spec_life(mob/living/carbon/C) /datum/species/zombie/infectious/spec_life(mob/living/carbon/C)
. = ..() . = ..()
C.a_intent = INTENT_HARM // THE SUFFERING MUST FLOW C.a_intent = INTENT_HARM // THE SUFFERING MUST FLOW
C.heal_overall_damage(4,4)
if(prob(4))
playsound(C, pick(spooks), 50, TRUE, 10)
if(C.InCritical()) if(C.InCritical())
C.death() C.death()
// Zombies only move around when not in crit, they instantly // Zombies only move around when not in crit, they instantly
+7 -1
View File
@@ -25,7 +25,7 @@
/mob/living/proc/getarmor(def_zone, type) /mob/living/proc/getarmor(def_zone, type)
return 0 return 0
//this returns the mob's protection against eye damage (number between -1 and 2) //this returns the mob's protection against eye damage (number between -1 and 2) from bright lights
/mob/living/proc/get_eye_protection() /mob/living/proc/get_eye_protection()
return 0 return 0
@@ -33,6 +33,12 @@
/mob/living/proc/get_ear_protection() /mob/living/proc/get_ear_protection()
return 0 return 0
/mob/living/proc/is_mouth_covered(head_only = 0, mask_only = 0)
return FALSE
/mob/living/proc/is_eyes_covered(check_glasses = 1, check_head = 1, check_mask = 1)
return FALSE
/mob/living/proc/on_hit(obj/item/projectile/P) /mob/living/proc/on_hit(obj/item/projectile/P)
return return
+1 -1
View File
@@ -171,7 +171,7 @@
var/icon/small_img = icon(temp_img) //Icon() is needed or else temp_img will be rescaled too >.> var/icon/small_img = icon(temp_img) //Icon() is needed or else temp_img will be rescaled too >.>
var/icon/ic = icon('icons/obj/items.dmi',"photo") var/icon/ic = icon('icons/obj/items.dmi',"photo")
small_img.Scale(8, 8) small_img.Scale(8, 8)
ic.Blend(small_img,ICON_OVERLAY, 10, 13) ic.Blend(small_img,ICON_OVERLAY, 13, 13)
p.icon = ic p.icon = ic
toner -= 5 toner -= 5
busy = 1 busy = 1
+1 -3
View File
@@ -533,7 +533,6 @@
cut_overlays() cut_overlays()
if(displayed) if(displayed)
add_overlay(getFlatIcon(displayed)) add_overlay(getFlatIcon(displayed))
add_overlay("frame-overlay")
/obj/item/wallframe/picture/after_attach(obj/O) /obj/item/wallframe/picture/after_attach(obj/O)
..() ..()
@@ -591,13 +590,12 @@
/obj/structure/sign/picture_frame/attack_hand(mob/user) /obj/structure/sign/picture_frame/attack_hand(mob/user)
if(framed) if(framed)
framed.show() framed.show(user)
/obj/structure/sign/picture_frame/update_icon() /obj/structure/sign/picture_frame/update_icon()
cut_overlays() cut_overlays()
if(framed) if(framed)
add_overlay(getFlatIcon(framed)) add_overlay(getFlatIcon(framed))
add_overlay("frame-overlay")
/obj/structure/sign/picture_frame/deconstruct(disassembled = TRUE) /obj/structure/sign/picture_frame/deconstruct(disassembled = TRUE)
if(!(flags & NODECONSTRUCT)) if(!(flags & NODECONSTRUCT))
+1 -1
View File
@@ -33,7 +33,7 @@ By design, d1 is the smallest direction and d2 is the highest
icon_state = "0-1" icon_state = "0-1"
var/d1 = 0 // cable direction 1 (see above) var/d1 = 0 // cable direction 1 (see above)
var/d2 = 1 // cable direction 2 (see above) var/d2 = 1 // cable direction 2 (see above)
layer = WIRE_LAYER //Above pipes, which are at GAS_PIPE_LAYER layer = WIRE_LAYER //Above hidden pipes, GAS_PIPE_HIDDEN_LAYER
var/cable_color = "red" var/cable_color = "red"
var/obj/item/stack/cable_coil/stored var/obj/item/stack/cable_coil/stored
+2 -2
View File
@@ -1,6 +1,6 @@
/obj/machinery/power/emitter /obj/machinery/power/emitter
name = "Emitter" name = "emitter"
desc = "A heavy duty industrial laser.\n<span class='notice'>Alt-click to rotate it clockwise.</span>" desc = "A heavy-duty industrial laser, often used in containment fields and power generation.\n<span class='notice'>Alt-click to rotate it clockwise.</span>"
icon = 'icons/obj/singularity.dmi' icon = 'icons/obj/singularity.dmi'
icon_state = "emitter" icon_state = "emitter"
var/icon_state_on = "emitter_+a" var/icon_state_on = "emitter_+a"
@@ -6,7 +6,7 @@
/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/place(turf/T) /datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/place(turf/T)
if(isclosedturf(T) && !ignore_wall) if(isclosedturf(T) && !ignore_wall)
return FALSE return FALSE
return TRUE return ..()
/datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/flatten /datum/mapGeneratorModule/bottomLayer/repairFloorPlasteel/flatten
ignore_wall = TRUE ignore_wall = TRUE
@@ -532,6 +532,44 @@
color = "#DFDFDF" color = "#DFDFDF"
taste_description = "mayonnaise" taste_description = "mayonnaise"
/datum/reagent/consumable/tearjuice
name = "Tear Juice"
id = "tearjuice"
description = "A blinding substance extracted from certain onions."
color = "#c0c9a0"
taste_description = "bitterness"
/datum/reagent/consumable/tearjuice/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
if(!istype(M))
return
var/unprotected = FALSE
switch(method)
if(INGEST)
unprotected = TRUE
if(INJECT)
unprotected = FALSE
else //Touch or vapor
if(!M.is_mouth_covered() && !M.is_eyes_covered())
unprotected = TRUE
if(unprotected)
if(!M.getorganslot("eye_sight")) //can't blind somebody with no eyes
to_chat(M, "<span class = 'notice'>Your eye sockets feel wet.</span>")
else
if(!M.eye_blurry)
to_chat(M, "<span class = 'warning'>Tears well up in your eyes!</span>")
M.blind_eyes(2)
M.blur_eyes(5)
..()
/datum/reagent/consumable/tearjuice/on_mob_life(mob/living/M)
..()
if(M.eye_blurry) //Don't worsen vision if it was otherwise fine
M.blur_eyes(4)
if(prob(10))
to_chat(M, "<span class = 'warning'>Your eyes sting!</span>")
M.blind_eyes(2)
////Lavaland Flora Reagents//// ////Lavaland Flora Reagents////
@@ -662,7 +662,7 @@
.=..() .=..()
if(current_cycle >=11 && prob(min(50,current_cycle)) && ishuman(M)) if(current_cycle >=11 && prob(min(50,current_cycle)) && ishuman(M))
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
H.vomit(lost_nutrition = 10, blood = prob(10), stun = prob(50), distance = rand(0,4), message = TRUE, toxic = prob(30)) H.vomit(10, prob(10), prob(50), rand(0,4), TRUE, prob(30))
for(var/datum/reagent/toxin/R in M.reagents.reagent_list) for(var/datum/reagent/toxin/R in M.reagents.reagent_list)
if(R != src) if(R != src)
H.reagents.remove_reagent(R.id,1) H.reagents.remove_reagent(R.id,1)
@@ -672,7 +672,7 @@
if(current_cycle >=33 && prob(15) && ishuman(M)) if(current_cycle >=33 && prob(15) && ishuman(M))
var/mob/living/carbon/human/H = M var/mob/living/carbon/human/H = M
H.spew_organ() H.spew_organ()
H.vomit(lost_nutrition = 0, blood = 1, stun = 1, distance = 4) H.vomit(0, TRUE, TRUE, 4)
to_chat(H, "<span class='userdanger'>You feel something lumpy come up as you vomit.</span>") to_chat(H, "<span class='userdanger'>You feel something lumpy come up as you vomit.</span>")
/datum/reagent/toxin/curare /datum/reagent/toxin/curare
+2 -2
View File
@@ -55,7 +55,7 @@
/obj/structure/reagent_dispensers/watertank/high /obj/structure/reagent_dispensers/watertank/high
name = "high-capacity water tank" name = "high-capacity water tank"
desc = "A highly-pressurized water tank made to hold gargantuan amounts of water.." desc = "A highly pressurized water tank made to hold gargantuan amounts of water."
icon_state = "water_high" //I was gonna clean my room... icon_state = "water_high" //I was gonna clean my room...
tank_volume = 100000 tank_volume = 100000
@@ -107,7 +107,7 @@
reagents.trans_to(W, W.max_fuel) reagents.trans_to(W, W.max_fuel)
user.visible_message("<span class='notice'>[user] refills [user.p_their()] [W.name].</span>", "<span class='notice'>You refill [W].</span>") user.visible_message("<span class='notice'>[user] refills [user.p_their()] [W.name].</span>", "<span class='notice'>You refill [W].</span>")
playsound(src, 'sound/effects/refill.ogg', 50, 1) playsound(src, 'sound/effects/refill.ogg', 50, 1)
update_icon() W.update_icon()
else else
user.visible_message("<span class='warning'>[user] catastrophically fails at refilling [user.p_their()] [W.name]!</span>", "<span class='userdanger'>That was stupid of you.</span>") user.visible_message("<span class='warning'>[user] catastrophically fails at refilling [user.p_their()] [W.name]!</span>", "<span class='userdanger'>That was stupid of you.</span>")
var/message_admins = "[key_name_admin(user)] triggered a fueltank explosion via welding tool." var/message_admins = "[key_name_admin(user)] triggered a fueltank explosion via welding tool."
@@ -763,7 +763,6 @@
name = "Flash" name = "Flash"
desc = "When a problem arises, SCIENCE is the solution." desc = "When a problem arises, SCIENCE is the solution."
id = "sflash" id = "sflash"
req_tech = list("magnets" = 3, "combat" = 2)
build_type = MECHFAB build_type = MECHFAB
materials = list(MAT_METAL = 750, MAT_GLASS = 750) materials = list(MAT_METAL = 750, MAT_GLASS = 750)
construction_time = 100 construction_time = 100
@@ -4,7 +4,7 @@
name = "Plasma + Iron alloy" name = "Plasma + Iron alloy"
id = "plasteel" id = "plasteel"
build_type = SMELTER build_type = SMELTER
materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT / 2, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT / 2) materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/plasteel build_path = /obj/item/stack/sheet/plasteel
category = list("initial") category = list("initial")
@@ -13,7 +13,7 @@
name = "Plasma + Titanium alloy" name = "Plasma + Titanium alloy"
id = "plastitanium" id = "plastitanium"
build_type = SMELTER build_type = SMELTER
materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT / 2, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT / 2) materials = list(MAT_TITANIUM = MINERAL_MATERIAL_AMOUNT, MAT_PLASMA = MINERAL_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/mineral/plastitanium build_path = /obj/item/stack/sheet/mineral/plastitanium
category = list("initial") category = list("initial")
+1 -1
View File
@@ -5,7 +5,7 @@ GLOBAL_PROTECT(reboot_mode)
return params[SERVICE_WORLD_PARAM] return params[SERVICE_WORLD_PARAM]
/world/proc/ExportService(command) /world/proc/ExportService(command)
return shell("python code/modules/server_tools/nudge.py \"[command]\"") == 0 return RunningService() && shell("python code/modules/server_tools/nudge.py \"[command]\"") == 0
/world/proc/IRCBroadcast(msg) /world/proc/IRCBroadcast(msg)
ExportService("[SERVICE_REQUEST_IRC_BROADCAST] [msg]") ExportService("[SERVICE_REQUEST_IRC_BROADCAST] [msg]")
+1 -1
View File
@@ -277,7 +277,7 @@
else if((findtext(message, vomit_words))) else if((findtext(message, vomit_words)))
cooldown = COOLDOWN_STUN cooldown = COOLDOWN_STUN
for(var/mob/living/carbon/C in listeners) for(var/mob/living/carbon/C in listeners)
C.vomit(10 * power_multiplier) C.vomit(10 * power_multiplier, distance = power_multiplier)
//SILENCE //SILENCE
else if((findtext(message, silence_words))) else if((findtext(message, silence_words)))
@@ -0,0 +1,4 @@
author: "QualityVan"
delete-after: True
changes:
- rscdel: "Cyborgs can no longer alt-click their material stacks to split them"
@@ -0,0 +1,4 @@
author: "QualityVan"
delete-after: True
changes:
- bugfix: "Cremators now still work when there's only one thing in them"
@@ -0,0 +1,4 @@
author: "QualityVan"
delete-after: True
changes:
- bugfix: "The ORM now uses the intended amount of resources when making alloys"
@@ -0,0 +1,4 @@
author: "oranges"
delete-after: True
changes:
- rscadd: "Added stungloves to the brain damage lines"
@@ -0,0 +1,5 @@
author: "Joan"
delete-after: True
changes:
- rscadd: "Added Prolonging Prism as an application scripture.
balance: Prolonging Prism will delay the arrival of an emergency shuttle by 2 minutes at the cost of 2500W of power plus 75W for every 10 CV and 750W for every previous activation. In addition to the high cost, it very obviously affects the shuttle dock and leaves an obvious trail to the prism."
@@ -0,0 +1,4 @@
author: "Tacolizard"
delete-after: True
changes:
- bugfix: "Flamethrowers no longer say they're being ignited when you extinguish them"
@@ -0,0 +1,4 @@
author: "MrStonedOne and Lummox JR"
delete-after: True
changes:
- bugfix: "Fixed icon scaling and size preferences not loading (Technically size preferences were loading because byond saves that locally, but that's not reliable because ss13 shares a hub)"
@@ -0,0 +1,4 @@
author: "Joan"
delete-after: True
changes:
- rscdel: "Cultists must be human to run for Cult Master status."

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