mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
Merge remote-tracking branch 'upstream/master' into plumbingfixesrev2
This commit is contained in:
@@ -207,7 +207,7 @@
|
||||
/area/ruin/unpowered)
|
||||
"F" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday,
|
||||
/obj/item/food/cake/birthday,
|
||||
/turf/open/floor/wood{
|
||||
initial_gas_mix = "LAVALAND_ATMOS"
|
||||
},
|
||||
|
||||
@@ -499,7 +499,7 @@
|
||||
/obj/structure/table,
|
||||
/obj/item/kitchen/knife/butcher,
|
||||
/obj/item/reagent_containers/food/drinks/beer,
|
||||
/obj/item/reagent_containers/food/snacks/meat,
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/human,
|
||||
/obj/effect/turf_decal/tile/blue{
|
||||
dir = 4
|
||||
},
|
||||
@@ -1508,7 +1508,7 @@
|
||||
/area/awaymission/bmpship/fore)
|
||||
"fO" = (
|
||||
/obj/structure/closet/crate/freezer,
|
||||
/obj/item/reagent_containers/food/snacks/meat,
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/human,
|
||||
/turf/open/floor/plasteel/showroomfloor,
|
||||
/area/awaymission/bmpship/aft)
|
||||
"fP" = (
|
||||
|
||||
@@ -2699,6 +2699,21 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/maintenance/starboard/fore)
|
||||
"ait" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"aiz" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -56371,25 +56386,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"ccF" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/on{
|
||||
external_pressure_bound = 140;
|
||||
name = "server vent";
|
||||
pressure_checks = 0
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"ccH" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
@@ -56404,30 +56400,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"ccI" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/folder/yellow,
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"ccJ" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{
|
||||
external_pressure_bound = 120;
|
||||
name = "server vent"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"ccM" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/item/pinpointer/nuke,
|
||||
@@ -57345,57 +57317,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"cev" = (
|
||||
/obj/machinery/telecomms/broadcaster/preset_left,
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden{
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/circuit/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"cex" = (
|
||||
/obj/machinery/telecomms/message_server/preset,
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/hidden{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"cey" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"cez" = (
|
||||
/obj/machinery/telecomms/hub/preset,
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"ceA" = (
|
||||
/obj/machinery/blackbox_recorder,
|
||||
/obj/machinery/atmospherics/pipe/manifold/general/hidden{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"ceB" = (
|
||||
/obj/machinery/telecomms/broadcaster/preset_right,
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden{
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/circuit/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"ceD" = (
|
||||
/obj/machinery/power/smes{
|
||||
charge = 5e+006
|
||||
@@ -58217,20 +58138,6 @@
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/crew_quarters/heads/hop)
|
||||
"cgk" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden,
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"cgm" = (
|
||||
/obj/machinery/ntnet_relay,
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
@@ -61222,11 +61129,6 @@
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/plating,
|
||||
/area/tcommsat/server)
|
||||
"cmE" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden,
|
||||
/turf/open/floor/plating,
|
||||
/area/tcommsat/server)
|
||||
"cmF" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
@@ -62077,13 +61979,6 @@
|
||||
"coe" = (
|
||||
/turf/closed/wall,
|
||||
/area/tcommsat/server)
|
||||
"cof" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tcommsat/server)
|
||||
"cog" = (
|
||||
/obj/machinery/holopad,
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
@@ -89984,6 +89879,23 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/genetics)
|
||||
"dtf" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
|
||||
dir = 6
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"dtg" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 8
|
||||
@@ -108452,6 +108364,10 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/chemistry)
|
||||
"fZt" = (
|
||||
/obj/machinery/telecomms/hub/preset,
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"gaK" = (
|
||||
/obj/effect/turf_decal/trimline/blue/filled/corner{
|
||||
dir = 8
|
||||
@@ -108761,6 +108677,13 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/engine/atmospherics_engine)
|
||||
"had" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/junction{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/tcommsat/server)
|
||||
"hdH" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/machinery/conveyor{
|
||||
@@ -109270,21 +109193,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/prison)
|
||||
"iDI" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/general/hidden,
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"iFA" = (
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/maintenance/department/science)
|
||||
@@ -109351,6 +109259,23 @@
|
||||
/obj/item/storage/crayons,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/prison)
|
||||
"iOJ" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"iQh" = (
|
||||
/obj/structure/bodycontainer/morgue{
|
||||
dir = 1
|
||||
@@ -110152,6 +110077,11 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/security/prison)
|
||||
"lia" = (
|
||||
/obj/machinery/telecomms/message_server/preset,
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"ljP" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 6
|
||||
@@ -110512,6 +110442,11 @@
|
||||
/obj/structure/grille,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/space)
|
||||
"mcn" = (
|
||||
/obj/machinery/blackbox_recorder,
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"mdG" = (
|
||||
/obj/machinery/light/small{
|
||||
dir = 1
|
||||
@@ -111787,6 +111722,14 @@
|
||||
"pxG" = (
|
||||
/turf/closed/wall,
|
||||
/area/medical/pharmacy)
|
||||
"pzj" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/portable_atmospherics/canister/air,
|
||||
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/tcommsat/server)
|
||||
"pAL" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/structure/sign/poster/random{
|
||||
@@ -111862,6 +111805,15 @@
|
||||
},
|
||||
/turf/closed/wall,
|
||||
/area/security/checkpoint/science/research)
|
||||
"pHV" = (
|
||||
/obj/structure/table/glass,
|
||||
/obj/item/folder/yellow,
|
||||
/obj/structure/cable,
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/circuit/green/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"pJb" = (
|
||||
/obj/item/kirbyplants/random,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -112722,6 +112674,10 @@
|
||||
/obj/structure/bed/roller,
|
||||
/turf/open/floor/plasteel/white,
|
||||
/area/medical/sleeper)
|
||||
"rWL" = (
|
||||
/obj/machinery/telecomms/broadcaster/preset_left,
|
||||
/turf/open/floor/circuit/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"rYU" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/cable,
|
||||
@@ -112737,6 +112693,20 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/medical/medbay/central)
|
||||
"rZb" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple,
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"saw" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/misc_lab/range)
|
||||
@@ -112963,6 +112933,23 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/security/prison)
|
||||
"sUc" = (
|
||||
/obj/structure/cable,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral,
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/heat_exchanging/simple{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark/telecomms,
|
||||
/area/tcommsat/server)
|
||||
"sUE" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/cable,
|
||||
@@ -114343,6 +114330,10 @@
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating,
|
||||
/area/security/prison)
|
||||
"wRg" = (
|
||||
/obj/machinery/telecomms/broadcaster/preset_right,
|
||||
/turf/open/floor/circuit/telecomms/mainframe,
|
||||
/area/tcommsat/server)
|
||||
"wTa" = (
|
||||
/obj/machinery/computer/nanite_cloud_controller,
|
||||
/obj/effect/turf_decal/bot,
|
||||
@@ -152674,8 +152665,8 @@ bUH
|
||||
bWX
|
||||
bZf
|
||||
caT
|
||||
ccF
|
||||
cev
|
||||
ccH
|
||||
rWL
|
||||
bUF
|
||||
cid
|
||||
cjE
|
||||
@@ -152932,7 +152923,7 @@ bWX
|
||||
bZg
|
||||
caU
|
||||
ccH
|
||||
cey
|
||||
bUF
|
||||
bUF
|
||||
cie
|
||||
cjF
|
||||
@@ -153188,14 +153179,14 @@ bUI
|
||||
bWY
|
||||
bUF
|
||||
bUF
|
||||
ccH
|
||||
cex
|
||||
cgk
|
||||
iDI
|
||||
iDI
|
||||
iDI
|
||||
cmE
|
||||
cof
|
||||
dtf
|
||||
lia
|
||||
rZb
|
||||
ait
|
||||
ait
|
||||
ait
|
||||
had
|
||||
pzj
|
||||
cpI
|
||||
cqY
|
||||
csw
|
||||
@@ -153445,8 +153436,8 @@ bUI
|
||||
bUI
|
||||
bUI
|
||||
caY
|
||||
ccH
|
||||
cey
|
||||
sUc
|
||||
bUF
|
||||
bUF
|
||||
cig
|
||||
bUI
|
||||
@@ -153702,8 +153693,8 @@ bUK
|
||||
bWZ
|
||||
bZi
|
||||
bUF
|
||||
ccI
|
||||
cez
|
||||
pHV
|
||||
fZt
|
||||
cgm
|
||||
ccH
|
||||
cjG
|
||||
@@ -153959,8 +153950,8 @@ bUI
|
||||
bUI
|
||||
bUI
|
||||
caY
|
||||
ccH
|
||||
cey
|
||||
sUc
|
||||
bUF
|
||||
bUF
|
||||
cig
|
||||
bUI
|
||||
@@ -154216,13 +154207,13 @@ bUI
|
||||
bXa
|
||||
bUF
|
||||
bUF
|
||||
ccH
|
||||
ceA
|
||||
iDI
|
||||
iDI
|
||||
iDI
|
||||
iDI
|
||||
cmE
|
||||
iOJ
|
||||
mcn
|
||||
ait
|
||||
ait
|
||||
ait
|
||||
ait
|
||||
had
|
||||
coj
|
||||
cpM
|
||||
cqY
|
||||
@@ -154474,7 +154465,7 @@ bWX
|
||||
bZj
|
||||
caZ
|
||||
ccH
|
||||
cey
|
||||
bUF
|
||||
ccH
|
||||
cih
|
||||
cjH
|
||||
@@ -154730,8 +154721,8 @@ bUG
|
||||
bWX
|
||||
bZk
|
||||
cba
|
||||
ccJ
|
||||
ceB
|
||||
ccH
|
||||
wRg
|
||||
ccH
|
||||
cii
|
||||
cjI
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -810,7 +810,7 @@
|
||||
/area/shuttle/escape)
|
||||
"Aq" = (
|
||||
/obj/structure/table/wood/fancy,
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/chocolate{
|
||||
/obj/item/food/cakeslice/chocolate{
|
||||
pixel_x = 16;
|
||||
pixel_y = -8
|
||||
},
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
/area/shuttle/escape)
|
||||
"o" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday,
|
||||
/obj/item/food/cake/birthday,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"p" = (
|
||||
@@ -143,7 +143,7 @@
|
||||
/obj/machinery/light/small{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/birthday,
|
||||
/obj/item/food/cakeslice/birthday,
|
||||
/turf/open/floor/carpet,
|
||||
/area/shuttle/escape)
|
||||
"x" = (
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
/turf/open/floor/carpet/red,
|
||||
/area/shuttle/escape/luxury)
|
||||
"aF" = (
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/chocolate{
|
||||
/obj/item/food/cakeslice/chocolate{
|
||||
pixel_y = 1
|
||||
},
|
||||
/obj/structure/table/wood/fancy/black,
|
||||
|
||||
@@ -244,13 +244,13 @@
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/food/butterdog,
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/apple,
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/brioche,
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/cheese,
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/chocolate,
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/lemon,
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/lime,
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/orange,
|
||||
/obj/item/food/cakeslice/apple,
|
||||
/obj/item/food/cakeslice/brioche,
|
||||
/obj/item/food/cakeslice/cheese,
|
||||
/obj/item/food/cakeslice/chocolate,
|
||||
/obj/item/food/cakeslice/lemon,
|
||||
/obj/item/food/cakeslice/lime,
|
||||
/obj/item/food/cakeslice/orange,
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/shuttle/escape)
|
||||
"aH" = (
|
||||
|
||||
@@ -277,7 +277,7 @@
|
||||
"aW" = (
|
||||
/obj/docking_port/mobile/emergency{
|
||||
height = 15;
|
||||
name = "Box emergency shuttle"
|
||||
name = "Mother Russia Bleeds"
|
||||
},
|
||||
/obj/machinery/door/airlock/security/glass{
|
||||
name = "Emergency Shuttle Airlock"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -350,6 +350,7 @@
|
||||
|
||||
//MULTIPIPES
|
||||
//IF YOU EVER CHANGE THESE CHANGE SPRITES TO MATCH.
|
||||
//layer = initial(layer) + piping_layer / 1000 in atmospherics/update_icon() to determine order of pipe overlap
|
||||
#define PIPING_LAYER_MIN 1
|
||||
#define PIPING_LAYER_MAX 5
|
||||
#define PIPING_LAYER_DEFAULT 3
|
||||
|
||||
@@ -96,6 +96,8 @@
|
||||
#define COMSIG_ATOM_FIRE_ACT "atom_fire_act"
|
||||
///from base of atom/bullet_act(): (/obj/projectile, def_zone)
|
||||
#define COMSIG_ATOM_BULLET_ACT "atom_bullet_act"
|
||||
///from base of atom/CheckParts(): (list/parts_list, datum/crafting_recipe/R)
|
||||
#define COMSIG_ATOM_CHECKPARTS "atom_checkparts"
|
||||
///from base of atom/blob_act(): (/obj/structure/blob)
|
||||
#define COMSIG_ATOM_BLOB_ACT "atom_blob_act"
|
||||
///from base of atom/acid_act(): (acidpwr, acid_volume)
|
||||
@@ -136,6 +138,8 @@
|
||||
///for any tool behaviors: (mob/living/user, obj/item/I, list/recipes)
|
||||
#define COMSIG_ATOM_TOOL_ACT(tooltype) "tool_recipe_discovery_[tooltype]"
|
||||
#define COMPONENT_BLOCK_TOOL_ATTACK (1<<0)
|
||||
///for when an atom has been created through processing (atom/original_atom, list/chosen_processing_option)
|
||||
#define COMSIG_ATOM_CREATEDBY_PROCESSING "atom_createdby_processing"
|
||||
///called when teleporting into a protected turf: (channel, turf/origin)
|
||||
#define COMSIG_ATOM_INTERCEPT_TELEPORT "intercept_teleport"
|
||||
#define COMPONENT_BLOCK_TELEPORT (1<<0)
|
||||
@@ -510,6 +514,8 @@
|
||||
#define COMSIG_ITEM_WEARERCROSSED "wearer_crossed"
|
||||
///called on item when microwaved (): (obj/machinery/microwave/M)
|
||||
#define COMSIG_ITEM_MICROWAVE_ACT "microwave_act"
|
||||
///called on item when created through microwaving (): (obj/machinery/microwave/M, cooking_efficiency)
|
||||
#define COMSIG_ITEM_MICROWAVE_COOKED "microwave_cooked"
|
||||
///from base of item/sharpener/attackby(): (amount, max)
|
||||
#define COMSIG_ITEM_SHARPEN_ACT "sharpen_act"
|
||||
#define COMPONENT_BLOCK_SHARPEN_APPLIED (1<<0)
|
||||
|
||||
@@ -38,5 +38,9 @@
|
||||
#define FOOD_MEAT_MUTANT 100
|
||||
#define FOOD_MEAT_MUTANT_RARE 200
|
||||
|
||||
///Amount of reagents you start with on crafted food excluding the used parts
|
||||
#define CRAFTED_FOOD_BASE_REAGENT_MODIFIER 0.7
|
||||
///Modifier of reagents you get when crafting food from the parts used
|
||||
#define CRAFTED_FOOD_INGREDIENT_REAGENT_MODIFIER 0.5
|
||||
|
||||
#define IS_EDIBLE(O) (istype(O, /obj/item/reagent_containers/food/snacks) || O.GetComponent(/datum/component/edible))
|
||||
|
||||
@@ -33,12 +33,12 @@
|
||||
#define ABOVE_NORMAL_TURF_LAYER 2.08
|
||||
#define LATTICE_LAYER 2.2
|
||||
#define DISPOSAL_PIPE_LAYER 2.3
|
||||
#define GAS_PIPE_HIDDEN_LAYER 2.35
|
||||
#define GAS_PIPE_HIDDEN_LAYER 2.35 //layer = initial(layer) + piping_layer / 1000 in atmospherics/update_icon() to determine order of pipe overlap
|
||||
#define WIRE_LAYER 2.4
|
||||
#define WIRE_BRIDGE_LAYER 2.44
|
||||
#define WIRE_TERMINAL_LAYER 2.45
|
||||
#define GAS_SCRUBBER_LAYER 2.46
|
||||
#define GAS_PIPE_VISIBLE_LAYER 2.47
|
||||
#define GAS_SCRUBBER_LAYER 2.46
|
||||
#define GAS_PIPE_VISIBLE_LAYER 2.47 //layer = initial(layer) + piping_layer / 1000 in atmospherics/update_icon() to determine order of pipe overlap
|
||||
#define GAS_FILTER_LAYER 2.48
|
||||
#define GAS_PUMP_LAYER 2.49
|
||||
#define LOW_OBJ_LAYER 2.5
|
||||
|
||||
@@ -4,6 +4,14 @@
|
||||
#define MECHA_INT_TANK_BREACH (1<<3)
|
||||
#define MECHA_INT_CONTROL_LOST (1<<4)
|
||||
|
||||
#define ADDING_ACCESS_POSSIBLE (1<<0)
|
||||
#define ADDING_MAINT_ACCESS_POSSIBLE (1<<1)
|
||||
#define CANSTRAFE (1<<2)
|
||||
#define LIGHTS_ON (1<<3)
|
||||
#define SILICON_PILOT (1<<4)
|
||||
#define IS_ENCLOSED (1<<5)
|
||||
#define HAS_LIGHTS (1<<6)
|
||||
|
||||
#define MECHA_MELEE (1 << 0)
|
||||
#define MECHA_RANGED (1 << 1)
|
||||
|
||||
|
||||
@@ -4,15 +4,5 @@
|
||||
#define VEHICLE_CONTROL_DRIVE 2
|
||||
#define VEHICLE_CONTROL_KIDNAPPED 4 //Can't leave vehicle voluntarily, has to resist.
|
||||
|
||||
//Mech flags
|
||||
#define ADDING_ACCESS_POSSIBLE (1<<0)
|
||||
#define ADDING_MAINT_ACCESS_POSSIBLE (1<<1)
|
||||
#define CANSTRAFE (1<<2)
|
||||
#define LIGHTS_ON (1<<3)
|
||||
#define SILICON_PILOT (1<<4)
|
||||
#define IS_ENCLOSED (1<<5)
|
||||
#define HAS_LIGHTS (1<<6)
|
||||
|
||||
|
||||
//Car trait flags
|
||||
#define CAN_KIDNAP 1
|
||||
|
||||
@@ -73,3 +73,18 @@
|
||||
|
||||
/proc/pathflatten(path)
|
||||
return replacetext(path, "/", "_")
|
||||
|
||||
/// Returns the md5 of a file at a given path.
|
||||
/proc/md5filepath(path)
|
||||
. = md5(file(path))
|
||||
|
||||
/// Save file as an external file then md5 it.
|
||||
/// Used because md5ing files stored in the rsc sometimes gives incorrect md5 results.
|
||||
/proc/md5asfile(file)
|
||||
var/static/notch = 0
|
||||
// its importaint this code can handle md5filepath sleeping instead of hard blocking, if it's converted to use rust_g.
|
||||
var/filename = "tmp/md5asfile.[world.realtime].[world.timeofday].[world.time].[world.tick_usage].[notch]"
|
||||
notch = WRAP(notch+1, 0, 2^15)
|
||||
fcopy(file, filename)
|
||||
. = md5filepath(filename)
|
||||
fdel(filename)
|
||||
|
||||
+12
-4
@@ -1124,12 +1124,13 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico
|
||||
var/list/partial = splittext(iconData, "{")
|
||||
return replacetext(copytext_char(partial[2], 3, -5), "\n", "")
|
||||
|
||||
/proc/icon2html(thing, target, icon_state, dir, frame = 1, moving = FALSE, sourceonly = FALSE)
|
||||
/proc/icon2html(thing, target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE)
|
||||
if (!thing)
|
||||
return
|
||||
|
||||
var/key
|
||||
var/icon/I = thing
|
||||
|
||||
if (!target)
|
||||
return
|
||||
if (target == world)
|
||||
@@ -1153,11 +1154,18 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico
|
||||
return SSassets.transport.get_asset_url(name)
|
||||
return "<img class='icon icon-misc' src='[SSassets.transport.get_asset_url(name)]'>"
|
||||
var/atom/A = thing
|
||||
if (isnull(dir))
|
||||
dir = A.dir
|
||||
|
||||
I = A.icon
|
||||
if (isnull(icon_state))
|
||||
icon_state = A.icon_state
|
||||
I = A.icon
|
||||
if (!(icon_state in icon_states(I, 1)))
|
||||
icon_state = initial(A.icon_state)
|
||||
if (isnull(dir))
|
||||
dir = initial(A.dir)
|
||||
|
||||
if (isnull(dir))
|
||||
dir = A.dir
|
||||
|
||||
if (ishuman(thing)) // Shitty workaround for a BYOND issue.
|
||||
var/icon/temp = I
|
||||
I = icon()
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
GLOBAL_LIST_EMPTY(string_assoc_lists)
|
||||
|
||||
|
||||
/**
|
||||
* Caches associative lists with non-numeric stringify-able index keys and stringify-able values (text/typepath -> text/path/number).
|
||||
*/
|
||||
/datum/proc/string_assoc_list(list/values)
|
||||
var/list/string_id = list()
|
||||
for(var/val in values)
|
||||
string_id += "[val]_[values[val]]"
|
||||
string_id.Join("-")
|
||||
|
||||
. = GLOB.string_assoc_lists[string_id]
|
||||
|
||||
if(.)
|
||||
return
|
||||
|
||||
return GLOB.string_assoc_lists[string_id] = values
|
||||
@@ -0,0 +1,14 @@
|
||||
GLOBAL_LIST_EMPTY(string_lists)
|
||||
|
||||
/**
|
||||
* Caches lists with non-numeric stringify-able values (text or typepath).
|
||||
*/
|
||||
/datum/proc/string_list(list/values)
|
||||
var/string_id = values.Join("-")
|
||||
|
||||
. = GLOB.string_lists[string_id]
|
||||
|
||||
if(.)
|
||||
return
|
||||
|
||||
return GLOB.string_lists[string_id] = values
|
||||
@@ -1381,8 +1381,8 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
|
||||
/proc/get_random_food()
|
||||
var/list/blocked = list(/obj/item/food/bread,
|
||||
/obj/item/food/breadslice,
|
||||
/obj/item/reagent_containers/food/snacks/store/cake,
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice,
|
||||
/obj/item/food/cake,
|
||||
/obj/item/food/cakeslice,
|
||||
/obj/item/reagent_containers/food/snacks/store,
|
||||
/obj/item/reagent_containers/food/snacks/pie,
|
||||
/obj/item/reagent_containers/food/snacks/kebab,
|
||||
|
||||
@@ -166,6 +166,23 @@ DEFINE_BITFIELD(machine_stat, list(
|
||||
"NOPOWER" = NOPOWER,
|
||||
))
|
||||
|
||||
DEFINE_BITFIELD(internal_damage, list(
|
||||
"MECHA_INT_FIRE" = MECHA_INT_FIRE,
|
||||
"MECHA_INT_TEMP_CONTROL" = MECHA_INT_TEMP_CONTROL,
|
||||
"MECHA_INT_TANK_BREACH" = MECHA_INT_TANK_BREACH,
|
||||
"MECHA_INT_CONTROL_LOST" = MECHA_INT_CONTROL_LOST,
|
||||
))
|
||||
|
||||
DEFINE_BITFIELD(mecha_flags, list(
|
||||
"ADDING_ACCESS_POSSIBLE" = ADDING_ACCESS_POSSIBLE,
|
||||
"ADDING_MAINT_ACCESS_POSSIBLE" = ADDING_MAINT_ACCESS_POSSIBLE,
|
||||
"CANSTRAFE" = CANSTRAFE,
|
||||
"LIGHTS_ON" = LIGHTS_ON,
|
||||
"SILICON_PILOT" = SILICON_PILOT,
|
||||
"IS_ENCLOSED" = IS_ENCLOSED,
|
||||
"HAS_LIGHTS" = HAS_LIGHTS,
|
||||
))
|
||||
|
||||
DEFINE_BITFIELD(mob_biotypes, list(
|
||||
"MOB_BEAST" = MOB_BEAST,
|
||||
"MOB_BUG" = MOB_BUG,
|
||||
|
||||
@@ -35,6 +35,14 @@ Behavior that's still missing from this component that original food items had t
|
||||
var/datum/callback/on_consume
|
||||
///Last time we checked for food likes
|
||||
var/last_check_time
|
||||
///The initial reagents of this food when it is made
|
||||
var/list/initial_reagents
|
||||
///The initial volume of the foods reagents
|
||||
var/volume
|
||||
///The flavortext for taste (haha get it flavor text)
|
||||
var/list/tastes
|
||||
///The type of atom this creates when the object is microwaved.
|
||||
var/microwaved_type
|
||||
|
||||
/datum/component/edible/Initialize(list/initial_reagents,
|
||||
food_flags = NONE,
|
||||
@@ -44,6 +52,7 @@ Behavior that's still missing from this component that original food items had t
|
||||
list/tastes,
|
||||
list/eatverbs = list("bite","chew","nibble","gnaw","gobble","chomp"),
|
||||
bite_consumption = 2,
|
||||
microwaved_type,
|
||||
datum/callback/after_eat,
|
||||
datum/callback/on_consume)
|
||||
|
||||
@@ -52,9 +61,15 @@ Behavior that's still missing from this component that original food items had t
|
||||
|
||||
RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
|
||||
RegisterSignal(parent, COMSIG_ATOM_ATTACK_ANIMAL, .proc/UseByAnimal)
|
||||
RegisterSignal(parent, COMSIG_ATOM_CHECKPARTS, .proc/OnCraft)
|
||||
RegisterSignal(parent, COMSIG_ATOM_CREATEDBY_PROCESSING, .proc/OnProcessed)
|
||||
RegisterSignal(parent, COMSIG_ITEM_MICROWAVE_COOKED, .proc/OnMicrowaveCooked)
|
||||
|
||||
if(isitem(parent))
|
||||
RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/UseFromHand)
|
||||
RegisterSignal(parent, COMSIG_ITEM_FRIED, .proc/OnFried)
|
||||
RegisterSignal(parent, COMSIG_ITEM_MICROWAVE_ACT, .proc/OnMicrowaved)
|
||||
|
||||
var/obj/item/item = parent
|
||||
item.grind_results = list() //Cursed but this is how snacks did it, grinding needs a refactor in the future.
|
||||
|
||||
@@ -65,22 +80,24 @@ Behavior that's still missing from this component that original food items had t
|
||||
src.food_flags = food_flags
|
||||
src.foodtypes = foodtypes
|
||||
src.eat_time = eat_time
|
||||
src.eatverbs = eatverbs
|
||||
src.eatverbs = string_list(eatverbs)
|
||||
src.junkiness = junkiness
|
||||
src.after_eat = after_eat
|
||||
src.on_consume = on_consume
|
||||
src.initial_reagents = string_assoc_list(initial_reagents)
|
||||
src.tastes = string_assoc_list(tastes)
|
||||
src.microwaved_type = microwaved_type
|
||||
|
||||
var/atom/owner = parent
|
||||
|
||||
owner.create_reagents(volume, INJECTABLE)
|
||||
|
||||
if(initial_reagents)
|
||||
for(var/rid in initial_reagents)
|
||||
var/amount = initial_reagents[rid]
|
||||
if(tastes && tastes.len && (rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin))
|
||||
owner.reagents.add_reagent(rid, amount, tastes.Copy())
|
||||
else
|
||||
owner.reagents.add_reagent(rid, amount)
|
||||
for(var/rid in initial_reagents)
|
||||
var/amount = initial_reagents[rid]
|
||||
if(length(tastes) && (rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin))
|
||||
owner.reagents.add_reagent(rid, amount, tastes.Copy())
|
||||
else
|
||||
owner.reagents.add_reagent(rid, amount)
|
||||
|
||||
/datum/component/edible/InheritComponent(datum/component/C,
|
||||
i_am_original,
|
||||
@@ -142,6 +159,95 @@ Behavior that's still missing from this component that original food items had t
|
||||
qdel(our_atom)
|
||||
return COMSIG_FRYING_HANDLED
|
||||
|
||||
///Called when food is created through processing (Usually this means it was sliced). We use this to pass the OG items reagents.
|
||||
/datum/component/edible/proc/OnProcessed(datum/source, atom/original_atom, list/chosen_processing_option)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if(!original_atom.reagents)
|
||||
return
|
||||
|
||||
var/atom/this_food = parent
|
||||
var/reagents_for_slice = chosen_processing_option[TOOL_PROCESSING_AMOUNT]
|
||||
|
||||
this_food.create_reagents(volume) //Make sure we have a reagent container
|
||||
|
||||
original_atom.reagents.trans_to(this_food, reagents_for_slice)
|
||||
|
||||
if(original_atom.name != initial(original_atom.name))
|
||||
this_food.name = "slice of [original_atom.name]"
|
||||
if(original_atom.desc != initial(original_atom.desc))
|
||||
this_food.desc = "[original_atom.desc]"
|
||||
|
||||
///Called when food is crafted through a crafting recipe datum.
|
||||
/datum/component/edible/proc/OnCraft(datum/source, list/parts_list, datum/crafting_recipe/food/recipe)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
var/atom/this_food = parent
|
||||
|
||||
this_food.reagents.clear_reagents()
|
||||
|
||||
for(var/obj/item/crafted_part in this_food.contents)
|
||||
crafted_part.reagents?.trans_to(this_food.reagents, crafted_part.reagents.maximum_volume, CRAFTED_FOOD_INGREDIENT_REAGENT_MODIFIER)
|
||||
|
||||
var/list/objects_to_delete = list()
|
||||
|
||||
// Remove all non recipe objects from the contents
|
||||
for(var/content_object in this_food.contents)
|
||||
for(var/recipe_object in recipe.real_parts)
|
||||
if(istype(content_object, recipe_object))
|
||||
continue
|
||||
objects_to_delete += content_object
|
||||
|
||||
QDEL_LIST(objects_to_delete)
|
||||
|
||||
for(var/r_id in initial_reagents)
|
||||
var/amount = initial_reagents[r_id] * CRAFTED_FOOD_BASE_REAGENT_MODIFIER
|
||||
if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin || r_id == /datum/reagent/consumable/nutriment/protein)
|
||||
this_food.reagents.add_reagent(r_id, amount, tastes)
|
||||
else
|
||||
this_food.reagents.add_reagent(r_id, amount)
|
||||
|
||||
SSblackbox.record_feedback("tally", "food_made", 1, type)
|
||||
|
||||
/datum/component/edible/proc/OnMicrowaved(datum/source, obj/machinery/microwave/used_microwave)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
var/turf/parent_turf = get_turf(parent)
|
||||
|
||||
if(!microwaved_type)
|
||||
new /obj/item/reagent_containers/food/snacks/badrecipe(parent_turf)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
|
||||
var/obj/item/result
|
||||
|
||||
result = new microwaved_type(parent_turf)
|
||||
|
||||
var/efficiency = istype(used_microwave) ? used_microwave.efficiency : 1
|
||||
|
||||
SEND_SIGNAL(result, COMSIG_ITEM_MICROWAVE_COOKED, parent, efficiency)
|
||||
|
||||
SSblackbox.record_feedback("tally", "food_made", 1, result.type)
|
||||
|
||||
///Corrects the reagents on the newly cooked food
|
||||
/datum/component/edible/proc/OnMicrowaveCooked(datum/source, obj/item/source_item, cooking_efficiency = 1)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
var/atom/this_food = parent
|
||||
|
||||
this_food.reagents.clear_reagents()
|
||||
|
||||
source_item.reagents?.trans_to(this_food, source_item.reagents.total_volume)
|
||||
|
||||
for(var/r_id in initial_reagents)
|
||||
var/amount = initial_reagents[r_id] * cooking_efficiency * CRAFTED_FOOD_BASE_REAGENT_MODIFIER
|
||||
if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin || r_id == /datum/reagent/consumable/nutriment/protein)
|
||||
this_food.reagents.add_reagent(r_id, amount, tastes)
|
||||
else
|
||||
this_food.reagents.add_reagent(r_id, amount)
|
||||
|
||||
|
||||
///All the checks for the act of eating itself and
|
||||
/datum/component/edible/proc/TryToEat(mob/living/eater, mob/living/feeder)
|
||||
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
return FALSE
|
||||
|
||||
for(var/obj/item/i in food.contents) //search the food's contents for a replacement item
|
||||
if(istype(i, /obj/item/reagent_containers/food/snacks))
|
||||
if(IS_EDIBLE(i))
|
||||
continue
|
||||
if(QDELETED(i))
|
||||
continue
|
||||
|
||||
@@ -244,12 +244,25 @@
|
||||
description = "The crew must pass through an otherworldy arena to board this shuttle. Expect massive casualties. The source of the Bloody Signal must be tracked down and eliminated to unlock this shuttle."
|
||||
admin_notes = "RIP AND TEAR."
|
||||
credit_cost = 10000
|
||||
/// Whether the arena z-level has been created
|
||||
var/arena_loaded = FALSE
|
||||
|
||||
/datum/map_template/shuttle/emergency/arena/prerequisites_met()
|
||||
if(SHUTTLE_UNLOCK_BUBBLEGUM in SSshuttle.shuttle_purchase_requirements_met)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/map_template/shuttle/emergency/arena/post_load(obj/docking_port/mobile/M)
|
||||
. = ..()
|
||||
if(!arena_loaded)
|
||||
arena_loaded = TRUE
|
||||
var/datum/map_template/arena/arena_template = new()
|
||||
arena_template.load_new_z()
|
||||
|
||||
/datum/map_template/arena
|
||||
name = "The Arena"
|
||||
mappath = "_maps/templates/the_arena.dmm"
|
||||
|
||||
/datum/map_template/shuttle/emergency/birdboat
|
||||
suffix = "birdboat"
|
||||
name = "Birdboat Station Emergency Shuttle"
|
||||
|
||||
+6
-3
@@ -410,7 +410,8 @@
|
||||
*
|
||||
* Otherwise it simply forceMoves the atom into this atom
|
||||
*/
|
||||
/atom/proc/CheckParts(list/parts_list)
|
||||
/atom/proc/CheckParts(list/parts_list, datum/crafting_recipe/R)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_CHECKPARTS, parts_list, R)
|
||||
if(parts_list)
|
||||
for(var/A in parts_list)
|
||||
if(istype(A, /datum/reagent))
|
||||
@@ -492,7 +493,8 @@
|
||||
* - show_message: Whether to display anything to mobs when they are exposed.
|
||||
*/
|
||||
/atom/proc/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE)
|
||||
if((. = SEND_SIGNAL(src, COMSIG_ATOM_EXPOSE_REAGENTS, reagents, source, methods, volume_modifier, show_message)) & COMPONENT_NO_EXPOSE_REAGENTS)
|
||||
. = SEND_SIGNAL(src, COMSIG_ATOM_EXPOSE_REAGENTS, reagents, source, methods, volume_modifier, show_message)
|
||||
if(. & COMPONENT_NO_EXPOSE_REAGENTS)
|
||||
return
|
||||
|
||||
for(var/reagent in reagents)
|
||||
@@ -1217,7 +1219,8 @@
|
||||
if(I.use_tool(src, user, chosen_option[TOOL_PROCESSING_TIME], volume=50))
|
||||
var/atom/atom_to_create = chosen_option[TOOL_PROCESSING_RESULT]
|
||||
for(var/i = 1 to chosen_option[TOOL_PROCESSING_AMOUNT])
|
||||
new atom_to_create(loc)
|
||||
var/atom/created_atom = new atom_to_create(loc)
|
||||
SEND_SIGNAL(created_atom, COMSIG_ATOM_CREATEDBY_PROCESSING, src, chosen_option)
|
||||
to_chat(user, "<span class='notice'>You manage to create [chosen_option[TOOL_PROCESSING_AMOUNT]] [initial(atom_to_create.name)] from [src]</span>")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
@@ -173,7 +173,6 @@
|
||||
if(points_to_check >= S.credit_cost)
|
||||
SSshuttle.shuttle_purchased = SHUTTLEPURCHASE_PURCHASED
|
||||
SSshuttle.unload_preview()
|
||||
SSshuttle.load_template(S)
|
||||
SSshuttle.existing_shuttle = SSshuttle.emergency
|
||||
SSshuttle.action_load(S)
|
||||
D.adjust_money(-S.credit_cost)
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
/obj/item/food
|
||||
name = "food"
|
||||
desc = "you eat this"
|
||||
resistance_flags = FLAMMABLE
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
///List of reagents this food gets on creation
|
||||
var/list/food_reagents
|
||||
///Extra flags for things such as if the food is in a container or not
|
||||
@@ -19,10 +21,16 @@
|
||||
///How much reagents per bite
|
||||
var/bite_consumption
|
||||
|
||||
|
||||
/obj/item/food/Initialize()
|
||||
. = ..()
|
||||
if(food_reagents)
|
||||
food_reagents = string_assoc_list(food_reagents)
|
||||
if(tastes)
|
||||
tastes = string_assoc_list(tastes)
|
||||
if(eatverbs)
|
||||
eatverbs = string_list(eatverbs)
|
||||
MakeEdible()
|
||||
MakeProcessable()
|
||||
|
||||
///This proc adds the edible component, overwrite this if you for some reason want to change some specific args like callbacks.
|
||||
/obj/item/food/proc/MakeEdible()
|
||||
@@ -37,5 +45,6 @@
|
||||
bite_consumption = bite_consumption)
|
||||
|
||||
|
||||
|
||||
|
||||
///This proc handles processable elements, overwrite this if you want to add behavior such as slicing, forking, spooning, whatever, to turn the item into something else
|
||||
/obj/item/food/proc/MakeProcessable()
|
||||
return
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
|
||||
/obj/item/food/breadslice
|
||||
icon = 'icons/obj/food/burgerbread.dmi'
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2)
|
||||
slot_flags = ITEM_SLOT_HEAD
|
||||
foodtypes = GRAIN
|
||||
eat_time = 0.5 SECONDS
|
||||
@@ -26,12 +25,11 @@
|
||||
name = "bread"
|
||||
desc = "Some plain old earthen bread."
|
||||
icon_state = "bread"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 17)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 10)
|
||||
tastes = list("bread" = 10)
|
||||
foodtypes = GRAIN
|
||||
|
||||
/obj/item/food/bread/plain/Initialize()
|
||||
. = ..()
|
||||
/obj/item/food/bread/plain/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/breadslice/plain, 5, 30)
|
||||
|
||||
/obj/item/food/breadslice/plain
|
||||
@@ -39,6 +37,7 @@
|
||||
desc = "A slice of home."
|
||||
icon_state = "breadslice"
|
||||
foodtypes = GRAIN
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2)
|
||||
|
||||
/obj/item/food/breadslice/moldy
|
||||
name = "moldy bread slice"
|
||||
@@ -52,12 +51,11 @@
|
||||
name = "meatbread loaf"
|
||||
desc = "The culinary base of every self-respecting eloquen/tg/entleman."
|
||||
icon_state = "meatbread"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/nutriment/vitamin = 15, /datum/reagent/consumable/nutriment/protein = 17)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 10, /datum/reagent/consumable/nutriment/protein = 12)
|
||||
tastes = list("bread" = 10, "meat" = 10)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/bread/meat/Initialize()
|
||||
. = ..()
|
||||
/obj/item/food/bread/meat/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/breadslice/meat, 5, 30)
|
||||
|
||||
/obj/item/food/breadslice/meat
|
||||
@@ -65,36 +63,35 @@
|
||||
desc = "A slice of delicious meatbread."
|
||||
icon_state = "meatbreadslice"
|
||||
foodtypes = GRAIN | MEAT
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/nutriment/protein = 2.4)
|
||||
|
||||
/obj/item/food/bread/xenomeat
|
||||
name = "xenomeatbread loaf"
|
||||
desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical."
|
||||
icon_state = "xenomeatbread"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/nutriment/vitamin = 15, /datum/reagent/consumable/nutriment/protein = 24)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 10, /datum/reagent/consumable/nutriment/protein = 15)
|
||||
tastes = list("bread" = 10, "acid" = 10)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/bread/xenomeat/Initialize()
|
||||
. = ..()
|
||||
/obj/item/food/bread/xenomeat/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/breadslice/xenomeat, 5, 30)
|
||||
|
||||
/obj/item/food/breadslice/xenomeat
|
||||
name = "xenomeatbread slice"
|
||||
desc = "A slice of delicious meatbread. Extra Heretical."
|
||||
icon_state = "xenobreadslice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/nutriment/protein = 5)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/nutriment/protein = 3)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/bread/spidermeat
|
||||
name = "spider meat loaf"
|
||||
desc = "Reassuringly green meatloaf made from spider meat."
|
||||
icon_state = "spidermeatbread"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/toxin = 15, /datum/reagent/consumable/nutriment/vitamin = 15, /datum/reagent/consumable/nutriment/protein = 17)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/toxin = 15, /datum/reagent/consumable/nutriment/vitamin = 10, /datum/reagent/consumable/nutriment/protein = 12)
|
||||
tastes = list("bread" = 10, "cobwebs" = 5)
|
||||
foodtypes = GRAIN | MEAT | TOXIC
|
||||
|
||||
/obj/item/food/bread/spidermeat/Initialize()
|
||||
. = ..()
|
||||
/obj/item/food/bread/spidermeat/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/breadslice/spidermeat, 5, 30)
|
||||
|
||||
/obj/item/food/breadslice/spidermeat
|
||||
@@ -108,12 +105,11 @@
|
||||
name = "banana-nut bread"
|
||||
desc = "A heavenly and filling treat."
|
||||
icon_state = "bananabread"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/banana = 40)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/banana = 20)
|
||||
tastes = list("bread" = 10) // bananjuice will also flavour
|
||||
foodtypes = GRAIN | FRUIT
|
||||
|
||||
/obj/item/food/bread/banana/Initialize()
|
||||
. = ..()
|
||||
/obj/item/food/bread/banana/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/breadslice/banana, 5, 30)
|
||||
|
||||
/obj/item/food/breadslice/banana
|
||||
@@ -127,19 +123,18 @@
|
||||
name = "Tofubread"
|
||||
desc = "Like meatbread but for vegetarians. Not guaranteed to give superpowers."
|
||||
icon_state = "tofubread"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 15, /datum/reagent/consumable/nutriment/protein = 13)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 10, /datum/reagent/consumable/nutriment/protein = 10)
|
||||
tastes = list("bread" = 10, "tofu" = 10)
|
||||
foodtypes = GRAIN | VEGETABLES
|
||||
|
||||
/obj/item/food/bread/tofu/Initialize()
|
||||
. = ..()
|
||||
/obj/item/food/bread/tofu/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/breadslice/tofu, 5, 30)
|
||||
|
||||
/obj/item/food/breadslice/tofu
|
||||
name = "tofubread slice"
|
||||
desc = "A slice of delicious tofubread."
|
||||
icon_state = "tofubreadslice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 2, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 2, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
foodtypes = GRAIN | VEGETABLES
|
||||
|
||||
/obj/item/food/bread/creamcheese
|
||||
@@ -150,33 +145,31 @@
|
||||
tastes = list("bread" = 10, "cheese" = 10)
|
||||
foodtypes = GRAIN | DAIRY
|
||||
|
||||
/obj/item/food/bread/creamcheese/Initialize()
|
||||
. = ..()
|
||||
/obj/item/food/bread/creamcheese/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/breadslice/creamcheese, 5, 30)
|
||||
|
||||
/obj/item/food/breadslice/creamcheese
|
||||
name = "cream cheese bread slice"
|
||||
desc = "A slice of yum!"
|
||||
icon_state = "creamcheesebreadslice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 2, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
|
||||
/obj/item/food/bread/mimana
|
||||
name = "mimana bread"
|
||||
desc = "Best eaten in silence."
|
||||
icon_state = "mimanabread"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/toxin/mutetoxin = 5, /datum/reagent/consumable/nothing = 5, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/toxin/mutetoxin = 5, /datum/reagent/consumable/nothing = 5, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("bread" = 10, "silence" = 10)
|
||||
foodtypes = GRAIN | FRUIT
|
||||
|
||||
/obj/item/food/bread/mimana/Initialize()
|
||||
. = ..()
|
||||
/obj/item/food/bread/mimana/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/breadslice/mimana, 5, 30)
|
||||
|
||||
/obj/item/food/breadslice/mimana
|
||||
name = "mimana bread slice"
|
||||
desc = "A slice of silence!"
|
||||
icon_state = "mimanabreadslice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
foodtypes = GRAIN | FRUIT
|
||||
|
||||
/obj/item/food/breadslice/custom
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
/obj/item/food/burger/appendix
|
||||
name = "appendix burger"
|
||||
desc = "Tastes like appendicitis."
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 11, /datum/reagent/consumable/nutriment/vitamin = 7)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
icon_state = "appendixburger"
|
||||
tastes = list("bun" = 4, "grass" = 2)
|
||||
foodtypes = GRAIN | MEAT | GROSS
|
||||
@@ -65,7 +65,7 @@
|
||||
name = "fillet -o- carp sandwich"
|
||||
desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp."
|
||||
icon_state = "fishburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 7, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
tastes = list("bun" = 4, "fish" = 4)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
name = "roburger"
|
||||
desc = "The lettuce is the only organic component. Beep."
|
||||
icon_state = "roburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/nanomachines = 7, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/nanomachines = 6, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
tastes = list("bun" = 4, "lettuce" = 2, "sludge" = 1)
|
||||
foodtypes = GRAIN | TOXIC
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
desc = "This massive patty looks like poison. Beep."
|
||||
icon_state = "roburger"
|
||||
max_volume = 120
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 11, /datum/reagent/nanomachines = 140, /datum/reagent/consumable/nutriment/vitamin = 15)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 11, /datum/reagent/nanomachines = 80, /datum/reagent/consumable/nutriment/vitamin = 15)
|
||||
tastes = list("bun" = 4, "lettuce" = 2, "sludge" = 1)
|
||||
foodtypes = GRAIN | TOXIC
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
name = "xenoburger"
|
||||
desc = "Smells caustic. Tastes like heresy."
|
||||
icon_state = "xburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 9, /datum/reagent/consumable/nutriment/vitamin = 7)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("bun" = 4, "acid" = 4)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
@@ -106,28 +106,28 @@
|
||||
name = "bearger"
|
||||
desc = "Best served rawr."
|
||||
icon_state = "bearger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 8, /datum/reagent/consumable/nutriment/vitamin = 7)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/clown
|
||||
name = "clown burger"
|
||||
desc = "This tastes funny..."
|
||||
icon_state = "clownburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 12, /datum/reagent/medicine/mannitol = 11, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/medicine/mannitol = 6, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
foodtypes = GRAIN | FRUIT
|
||||
|
||||
/obj/item/food/burger/mime
|
||||
name = "mime burger"
|
||||
desc = "Its taste defies language."
|
||||
icon_state = "mimeburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/protein = 11, /datum/reagent/consumable/nutriment/vitamin = 7, /datum/reagent/consumable/nothing = 6)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/protein = 9, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/consumable/nothing = 6)
|
||||
foodtypes = GRAIN
|
||||
|
||||
/obj/item/food/burger/brain
|
||||
name = "brainburger"
|
||||
desc = "A strange looking burger. It looks almost sentient."
|
||||
icon_state = "brainburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/medicine/mannitol = 11, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 6, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/nutriment/protein = 6)
|
||||
tastes = list("bun" = 4, "brains" = 2)
|
||||
foodtypes = GRAIN | MEAT | GROSS
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
name = "ghost burger"
|
||||
desc = "Too Spooky!"
|
||||
icon_state = "ghostburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 13, /datum/reagent/consumable/sodiumchloride = 5)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/protein = 4, /datum/reagent/consumable/nutriment/vitamin = 12, /datum/reagent/consumable/sodiumchloride = 5)
|
||||
tastes = list("bun" = 2, "ectoplasm" = 4)
|
||||
foodtypes = GRAIN
|
||||
alpha = 170
|
||||
@@ -182,63 +182,63 @@
|
||||
name = "red burger"
|
||||
desc = "Perfect for hiding the fact it's burnt to a crisp."
|
||||
icon_state = "cburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/colorful_reagent/powder/red = 10)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/colorful_reagent/powder/red = 10)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/orange
|
||||
name = "orange burger"
|
||||
desc = "Contains 0% juice."
|
||||
icon_state = "cburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/colorful_reagent/powder/orange = 10)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/colorful_reagent/powder/orange = 10)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/yellow
|
||||
name = "yellow burger"
|
||||
desc = "Bright to the last bite."
|
||||
icon_state = "cburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/colorful_reagent/powder/yellow = 10)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/colorful_reagent/powder/yellow = 10)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/green
|
||||
name = "green burger"
|
||||
desc = "It's not tainted meat, it's painted meat!"
|
||||
icon_state = "cburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/colorful_reagent/powder/green = 10)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/colorful_reagent/powder/green = 10)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/blue
|
||||
name = "blue burger"
|
||||
desc = "Is this blue rare?"
|
||||
icon_state = "cburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/colorful_reagent/powder/blue = 10)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/colorful_reagent/powder/blue = 10)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/purple
|
||||
name = "purple burger"
|
||||
desc = "Regal and low class at the same time."
|
||||
icon_state = "cburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/colorful_reagent/powder/purple = 10)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/colorful_reagent/powder/purple = 10)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/black
|
||||
name = "black burger"
|
||||
desc = "This is overcooked."
|
||||
icon_state = "cburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/colorful_reagent/powder/black = 10)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/colorful_reagent/powder/black = 10)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/white
|
||||
name = "white burger"
|
||||
desc = "Delicous Titanium!"
|
||||
icon_state = "cburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/colorful_reagent/powder/white = 10)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/colorful_reagent/powder/white = 10)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/spell
|
||||
name = "spell burger"
|
||||
desc = "This is absolutely Ei Nath."
|
||||
icon_state = "spellburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 11)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("bun" = 4, "magic" = 2)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
name = "big bite burger"
|
||||
desc = "Forget the Big Mac. THIS is the future!"
|
||||
icon_state = "bigbiteburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 11, /datum/reagent/consumable/nutriment/vitamin = 7)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 10, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
foodtypes = GRAIN | MEAT | DAIRY
|
||||
|
||||
@@ -258,18 +258,18 @@
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/jelly/slime
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin/slimejelly = 10, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin/slimejelly = 6, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
foodtypes = GRAIN | TOXIC
|
||||
|
||||
/obj/item/food/burger/jelly/cherry
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/cherryjelly = 10, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/cherryjelly = 6, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
foodtypes = GRAIN | FRUIT
|
||||
|
||||
/obj/item/food/burger/superbite
|
||||
name = "super bite burger"
|
||||
desc = "This is a mountain of a burger. FOOD!"
|
||||
icon_state = "superbiteburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/nutriment/protein = 42, /datum/reagent/consumable/nutriment/vitamin = 15)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/nutriment/protein = 40, /datum/reagent/consumable/nutriment/vitamin = 12)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
bite_consumption = 7
|
||||
max_volume = 100
|
||||
@@ -280,14 +280,14 @@
|
||||
name = "five alarm burger"
|
||||
desc = "HOT! HOT!"
|
||||
icon_state = "fivealarmburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 7, /datum/reagent/consumable/capsaicin = 5, /datum/reagent/consumable/condensedcapsaicin = 5, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/capsaicin = 5, /datum/reagent/consumable/condensedcapsaicin = 5, /datum/reagent/consumable/nutriment/vitamin = 6)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
/obj/item/food/burger/rat
|
||||
name = "rat burger"
|
||||
desc = "Pretty much what you'd expect..."
|
||||
icon_state = "ratburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 7, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
foodtypes = GRAIN | MEAT | GROSS
|
||||
|
||||
/obj/item/food/burger/baseball
|
||||
@@ -301,7 +301,7 @@
|
||||
name = "bacon burger"
|
||||
desc = "The perfect combination of all things American."
|
||||
icon_state = "baconburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 11, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
tastes = list("bacon" = 4, "bun" = 2)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
@@ -309,7 +309,7 @@
|
||||
name = "empowered burger"
|
||||
desc = "It's shockingly good, if you live off of electricity that is."
|
||||
icon_state = "empoweredburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/liquidelectricity = 5)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/liquidelectricity = 5)
|
||||
tastes = list("bun" = 2, "pure electricity" = 4)
|
||||
foodtypes = GRAIN | TOXIC
|
||||
|
||||
@@ -317,7 +317,7 @@
|
||||
name = "crab burger"
|
||||
desc = "A delicious patty of the crabby kind, slapped in between a bun."
|
||||
icon_state = "crabburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 7, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
tastes = list("bun" = 2, "crab meat" = 4)
|
||||
foodtypes = GRAIN | MEAT
|
||||
|
||||
@@ -325,7 +325,7 @@
|
||||
name = "soylent burger"
|
||||
desc = "An eco-friendly burger made using upcycled low value biomass."
|
||||
icon_state = "soylentburger"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 9, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 6, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
tastes = list("bun" = 2, "assistant" = 4)
|
||||
foodtypes = GRAIN | MEAT | DAIRY
|
||||
|
||||
|
||||
@@ -0,0 +1,453 @@
|
||||
/obj/item/food/cake
|
||||
icon = 'icons/obj/food/piecake.dmi'
|
||||
bite_consumption = 3
|
||||
max_volume = 80
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 1)
|
||||
foodtypes = GRAIN | DAIRY
|
||||
|
||||
/obj/item/food/cake/Initialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/food_storage)
|
||||
|
||||
/obj/item/food/cakeslice
|
||||
icon = 'icons/obj/food/piecake.dmi'
|
||||
//uncomment me when trash is merged trash = /obj/item/trash/plate
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
tastes = list("cake" = 1)
|
||||
foodtypes = GRAIN | DAIRY
|
||||
|
||||
/obj/item/food/cake/plain
|
||||
name = "plain cake"
|
||||
desc = "A plain cake, not a lie."
|
||||
icon_state = "plaincake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 7)
|
||||
tastes = list("sweetness" = 2, "cake" = 5)
|
||||
foodtypes = GRAIN | DAIRY | SUGAR
|
||||
|
||||
/obj/item/food/cake/plain/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/plain, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/plain
|
||||
name = "plain cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "plaincake_slice"
|
||||
tastes = list("sweetness" = 2,"cake" = 5)
|
||||
foodtypes = GRAIN | DAIRY | SUGAR
|
||||
|
||||
/obj/item/food/cake/carrot
|
||||
name = "carrot cake"
|
||||
desc = "A favorite desert of a certain wascally wabbit. Not a lie."
|
||||
icon_state = "carrotcake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/medicine/oculine = 10, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
|
||||
foodtypes = GRAIN | DAIRY | VEGETABLES | SUGAR
|
||||
|
||||
/obj/item/food/cake/carrot/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/carrot, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/carrot
|
||||
name = "carrot cake slice"
|
||||
desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie."
|
||||
icon_state = "carrotcake_slice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/oculine = 2, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
|
||||
foodtypes = GRAIN | DAIRY | VEGETABLES | SUGAR
|
||||
|
||||
/obj/item/food/cake/brain
|
||||
name = "brain cake"
|
||||
desc = "A squishy cake-thing."
|
||||
icon_state = "braincake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 15, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/medicine/mannitol = 10, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
|
||||
foodtypes = GRAIN | DAIRY | MEAT | GROSS | SUGAR
|
||||
|
||||
/obj/item/food/cake/brain/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/brain, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/brain
|
||||
name = "brain cake slice"
|
||||
desc = "Lemme tell you something about prions. THEY'RE DELICIOUS."
|
||||
icon_state = "braincakeslice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 1, /datum/reagent/medicine/mannitol = 2, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
|
||||
foodtypes = GRAIN | DAIRY | MEAT | GROSS | SUGAR
|
||||
|
||||
/obj/item/food/cake/cheese
|
||||
name = "cheese cake"
|
||||
desc = "DANGEROUSLY cheesy."
|
||||
icon_state = "cheesecake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 8, /datum/reagent/consumable/nutriment/protein = 5)
|
||||
tastes = list("cake" = 4, "cream cheese" = 3)
|
||||
foodtypes = GRAIN | DAIRY
|
||||
|
||||
/obj/item/food/cake/cheese/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/cheese, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/cheese
|
||||
name = "cheese cake slice"
|
||||
desc = "Slice of pure cheestisfaction."
|
||||
icon_state = "cheesecake_slice"
|
||||
tastes = list("cake" = 4, "cream cheese" = 3)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 1, /datum/reagent/consumable/nutriment/vitamin = 1.3)
|
||||
foodtypes = GRAIN | DAIRY
|
||||
|
||||
/obj/item/food/cake/orange
|
||||
name = "orange cake"
|
||||
desc = "A cake with added orange."
|
||||
icon_state = "orangecake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/orange/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/orange, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/orange
|
||||
name = "orange cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "orangecake_slice"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/lime
|
||||
name = "lime cake"
|
||||
desc = "A cake with added lime."
|
||||
icon_state = "limecake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/lime/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/lime, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/lime
|
||||
name = "lime cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "limecake_slice"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/lemon
|
||||
name = "lemon cake"
|
||||
desc = "A cake with added lemon."
|
||||
icon_state = "lemoncake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/lemon/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/lemon, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/lemon
|
||||
name = "lemon cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "lemoncake_slice"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/chocolate
|
||||
name = "chocolate cake"
|
||||
desc = "A cake with added chocolate."
|
||||
icon_state = "chocolatecake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
|
||||
foodtypes = GRAIN | DAIRY | JUNKFOOD | SUGAR
|
||||
|
||||
/obj/item/food/cake/chocolate/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/chocolate, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/chocolate
|
||||
name = "chocolate cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "chocolatecake_slice"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
|
||||
foodtypes = GRAIN | DAIRY | JUNKFOOD | SUGAR
|
||||
|
||||
/obj/item/food/cake/birthday
|
||||
name = "birthday cake"
|
||||
desc = "Happy Birthday little clown..."
|
||||
icon_state = "birthdaycake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 1)
|
||||
foodtypes = GRAIN | DAIRY | JUNKFOOD | SUGAR
|
||||
|
||||
/obj/item/food/cake/birthday/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/birthday, 5, 30)
|
||||
|
||||
/obj/item/food/cake/birthday/microwave_act(obj/machinery/microwave/M) //super sekrit club
|
||||
new /obj/item/clothing/head/hardhat/cakehat(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/food/cakeslice/birthday
|
||||
name = "birthday cake slice"
|
||||
desc = "A slice of your birthday."
|
||||
icon_state = "birthdaycakeslice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sprinkles = 2, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
tastes = list("cake" = 5, "sweetness" = 1)
|
||||
foodtypes = GRAIN | DAIRY | JUNKFOOD | SUGAR
|
||||
|
||||
/obj/item/food/cake/birthday/energy
|
||||
name = "energy cake"
|
||||
desc = "Just enough calories for a whole nuclear operative squad."
|
||||
icon_state = "energycake"
|
||||
force = 5
|
||||
hitsound = 'sound/weapons/blade1.ogg'
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/pwr_game = 10, /datum/reagent/consumable/liquidelectricity = 10)
|
||||
tastes = list("cake" = 3, "a Vlad's Salad" = 1)
|
||||
|
||||
/obj/item/food/cake/birthday/energy/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/birthday/energy, 5, 30)
|
||||
|
||||
/obj/item/food/cake/birthday/energy/proc/energy_bite(mob/living/user)
|
||||
to_chat(user, "<font color='red' size='5'>As you eat the cake, you accidentally hurt yourself on the embedded energy sword!</font>")
|
||||
user.apply_damage(30,BRUTE,BODY_ZONE_HEAD)
|
||||
playsound(user, 'sound/weapons/blade1.ogg', 5, TRUE)
|
||||
|
||||
/obj/item/food/cake/birthday/energy/attack(mob/living/M, mob/living/user)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(user, TRAIT_PACIFISM) && M != user) //Prevents pacifists from attacking others directly
|
||||
return
|
||||
energy_bite(M, user)
|
||||
|
||||
/obj/item/food/cake/birthday/energy/microwave_act(obj/machinery/microwave/M) //super sekriter club
|
||||
new /obj/item/clothing/head/hardhat/cakehat/energycake(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/food/cakeslice/birthday/energy
|
||||
name = "energy cake slice"
|
||||
desc = "For the traitor on the go."
|
||||
icon_state = "energycakeslice"
|
||||
force = 2
|
||||
hitsound = 'sound/weapons/blade1.ogg'
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sprinkles = 2, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/pwr_game = 2, /datum/reagent/consumable/liquidelectricity = 2)
|
||||
tastes = list("cake" = 3, "a Vlad's Salad" = 1)
|
||||
|
||||
/obj/item/food/cakeslice/birthday/energy/proc/energy_bite(mob/living/user)
|
||||
to_chat(user, "<font color='red' size='5'>As you eat the cake slice, you accidentally hurt yourself on the embedded energy dagger!</font>")
|
||||
user.apply_damage(18,BRUTE,BODY_ZONE_HEAD)
|
||||
playsound(user, 'sound/weapons/blade1.ogg', 5, TRUE)
|
||||
|
||||
/obj/item/food/cakeslice/birthday/energy/attack(mob/living/M, mob/living/user)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(user, TRAIT_PACIFISM) && M != user) //Prevents pacifists from attacking others directly
|
||||
return
|
||||
energy_bite(M, user)
|
||||
|
||||
/obj/item/food/cake/apple
|
||||
name = "apple cake"
|
||||
desc = "A cake centred with Apple."
|
||||
icon_state = "applecake"
|
||||
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/apple/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/apple, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/apple
|
||||
name = "apple cake slice"
|
||||
desc = "A slice of heavenly cake."
|
||||
icon_state = "applecakeslice"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/slimecake
|
||||
name = "Slime cake"
|
||||
desc = "A cake made of slimes. Probably not electrified."
|
||||
icon_state = "slimecake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1)
|
||||
foodtypes = GRAIN | DAIRY | SUGAR
|
||||
|
||||
/obj/item/food/cake/apple/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/slimecake, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/slimecake
|
||||
name = "slime cake slice"
|
||||
desc = "A slice of slime cake."
|
||||
icon_state = "slimecake_slice"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1)
|
||||
foodtypes = GRAIN | DAIRY | SUGAR
|
||||
|
||||
/obj/item/food/cake/pumpkinspice
|
||||
name = "pumpkin spice cake"
|
||||
desc = "A hollow cake with real pumpkin."
|
||||
icon_state = "pumpkinspicecake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1)
|
||||
foodtypes = GRAIN | DAIRY | VEGETABLES | SUGAR
|
||||
|
||||
/obj/item/food/cake/pumpkinspice/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/pumpkinspice, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/pumpkinspice
|
||||
name = "pumpkin spice cake slice"
|
||||
desc = "A spicy slice of pumpkin goodness."
|
||||
icon_state = "pumpkinspicecakeslice"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1)
|
||||
foodtypes = GRAIN | DAIRY | VEGETABLES | SUGAR
|
||||
|
||||
/obj/item/food/cake/bsvc // blackberry strawberries vanilla cake
|
||||
name = "blackberry and strawberry vanilla cake"
|
||||
desc = "A plain cake, filled with assortment of blackberries and strawberries!"
|
||||
icon_state = "blackbarry_strawberries_cake_vanilla_cake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("blackberry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/bsvc/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/bsvc, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/bsvc
|
||||
name = "blackberry and strawberry vanilla cake slice"
|
||||
desc = "Just a slice of cake filled with assortment of blackberries and strawberries!"
|
||||
icon_state = "blackbarry_strawberries_cake_vanilla_slice"
|
||||
tastes = list("blackberry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2,"cake" = 3)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/bscc // blackbarry strawberries chocolate cake
|
||||
name = "blackberry and strawberry chocolate cake"
|
||||
desc = "A chocolate cake, filled with assortment of blackberries and strawberries!"
|
||||
icon_state = "blackbarry_strawberries_cake_coco_cake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/coco = 5)
|
||||
tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/bscc/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/bscc, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/bscc
|
||||
name = "blackberry and strawberry chocolate cake slice"
|
||||
desc = "Just a slice of cake filled with assortment of blackberries and strawberries!"
|
||||
icon_state = "blackbarry_strawberries_cake_coco_slice"
|
||||
tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/holy_cake
|
||||
name = "angel food cake"
|
||||
desc = "A cake made for angels and chaplains alike! Contains holy water."
|
||||
icon_state = "holy_cake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/water/holywater = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1)
|
||||
foodtypes = GRAIN | DAIRY | SUGAR
|
||||
|
||||
/obj/item/food/cake/holy_cake/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/holy_cake_slice, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/holy_cake_slice
|
||||
name = "angel food cake slice"
|
||||
desc = "A slice of heavenly cake."
|
||||
icon_state = "holy_cake_slice"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1)
|
||||
foodtypes = GRAIN | DAIRY | SUGAR
|
||||
|
||||
/obj/item/food/cake/pound_cake
|
||||
name = "pound cake"
|
||||
desc = "A condensed cake made for filling people up quickly."
|
||||
icon_state = "pound_cake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 60, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "batter" = 1)
|
||||
foodtypes = GRAIN | DAIRY | SUGAR | JUNKFOOD
|
||||
|
||||
/obj/item/food/cake/pound_cake/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/pound_cake_slice, 7, 30)
|
||||
|
||||
/obj/item/food/cakeslice/pound_cake_slice
|
||||
name = "pound cake slice"
|
||||
desc = "A slice of condensed cake made for filling people up quickly."
|
||||
icon_state = "pound_cake_slice"
|
||||
tastes = list("cake" = 5, "sweetness" = 5, "batter" = 1)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 9, /datum/reagent/consumable/nutriment/vitamin = 0.5)
|
||||
foodtypes = GRAIN | DAIRY | SUGAR | JUNKFOOD
|
||||
|
||||
/obj/item/food/cake/hardware_cake
|
||||
name = "hardware cake"
|
||||
desc = "A quote on quote cake that is made with electronic boards and leaks acid..."
|
||||
icon_state = "hardware_cake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/toxin/acid = 15, /datum/reagent/fuel/oil = 15)
|
||||
tastes = list("acid" = 3, "metal" = 4, "glass" = 5)
|
||||
foodtypes = GRAIN | GROSS
|
||||
|
||||
/obj/item/food/cake/hardware_cake/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/hardware_cake_slice, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/hardware_cake_slice
|
||||
name = "hardware cake slice"
|
||||
desc = "A slice of electronic boards and some acid."
|
||||
icon_state = "hardware_cake_slice"
|
||||
tastes = list("acid" = 3, "metal" = 4, "glass" = 5)
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/toxin/acid = 3, /datum/reagent/fuel/oil = 3)
|
||||
foodtypes = GRAIN | GROSS
|
||||
|
||||
/obj/item/food/cake/vanilla_cake
|
||||
name = "vanilla cake"
|
||||
desc = "A vanilla frosted cake."
|
||||
icon_state = "vanillacake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/sugar = 15, /datum/reagent/consumable/vanilla = 15)
|
||||
tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10)
|
||||
foodtypes = GRAIN | SUGAR | DAIRY
|
||||
|
||||
/obj/item/food/cake/vanilla_cake/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/vanilla_slice, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/vanilla_slice
|
||||
name = "vanilla cake slice"
|
||||
desc = "A slice of vanilla frosted cake."
|
||||
icon_state = "vanillacake_slice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/vanilla = 3)
|
||||
tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10)
|
||||
foodtypes = GRAIN | SUGAR | DAIRY
|
||||
|
||||
/obj/item/food/cake/clown_cake
|
||||
name = "clown cake"
|
||||
desc = "A funny cake with a clown face on it."
|
||||
icon_state = "clowncake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/sugar = 15)
|
||||
tastes = list("cake" = 1, "sugar" = 1, "joy" = 10)
|
||||
foodtypes = GRAIN | SUGAR | DAIRY
|
||||
|
||||
/obj/item/food/cake/clown_cake/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/clown_slice, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/clown_slice
|
||||
name = "clown cake slice"
|
||||
desc = "A slice of bad jokes, and silly props."
|
||||
icon_state = "clowncake_slice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/sugar = 3)
|
||||
tastes = list("cake" = 1, "sugar" = 1, "joy" = 10)
|
||||
foodtypes = GRAIN | SUGAR | DAIRY
|
||||
|
||||
/obj/item/food/cake/trumpet
|
||||
name = "spaceman's cake"
|
||||
desc = "A spaceman's trumpet frosted cake."
|
||||
icon_state = "trumpetcake"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/medicine/polypyr = 15, /datum/reagent/consumable/cream = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/berryjuice = 5)
|
||||
tastes = list("cake" = 4, "violets" = 2, "jam" = 2)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/trumpet/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/trumpet, 5, 30)
|
||||
|
||||
/obj/item/food/cakeslice/trumpet
|
||||
name = "spaceman's cake"
|
||||
desc = "A spaceman's trumpet frosted cake."
|
||||
icon_state = "trumpetcakeslice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/medicine/polypyr = 3, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/berryjuice = 1)
|
||||
tastes = list("cake" = 4, "violets" = 2, "jam" = 2)
|
||||
foodtypes = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/food/cake/brioche
|
||||
name = "brioche cake"
|
||||
desc = "A ring of sweet, glazed buns."
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
|
||||
/obj/item/food/cake/brioche/MakeProcessable()
|
||||
AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/cakeslice/brioche, 6, 30)
|
||||
|
||||
/obj/item/food/cakeslice/brioche
|
||||
name = "brioche cake slice"
|
||||
desc = "Delicious sweet-bread. Who needs anything else?"
|
||||
icon_state = "briochecake_slice"
|
||||
food_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
@@ -358,7 +358,8 @@
|
||||
|
||||
/// Handles exposing an object to reagents.
|
||||
/obj/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE)
|
||||
if((. = ..()) & COMPONENT_NO_EXPOSE_REAGENTS)
|
||||
. = ..()
|
||||
if(. & COMPONENT_NO_EXPOSE_REAGENTS)
|
||||
return
|
||||
|
||||
for(var/reagent in reagents)
|
||||
|
||||
@@ -583,7 +583,8 @@ GLOBAL_LIST_EMPTY(station_turfs)
|
||||
|
||||
/// Handles exposing a turf to reagents.
|
||||
/turf/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE)
|
||||
if((. = ..()) & COMPONENT_NO_EXPOSE_REAGENTS)
|
||||
. = ..()
|
||||
if(. & COMPONENT_NO_EXPOSE_REAGENTS)
|
||||
return
|
||||
|
||||
for(var/reagent in reagents)
|
||||
|
||||
@@ -98,7 +98,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
|
||||
for(var/I in active_tickets)
|
||||
var/datum/admin_help/AH = I
|
||||
if(AH.initiator)
|
||||
L[++L.len] = list("#[AH.id]. [AH.initiator_key_name]:", "[AH.statclick.update()]", REF(AH))
|
||||
var/obj/effect/statclick/updated = AH.statclick.update()
|
||||
L[++L.len] = list("#[AH.id]. [AH.initiator_key_name]:", "[updated.name]", REF(AH))
|
||||
else
|
||||
++num_disconnected
|
||||
if(num_disconnected)
|
||||
|
||||
@@ -27,9 +27,13 @@
|
||||
can_synth = FALSE
|
||||
penetrates_skin = NONE
|
||||
|
||||
|
||||
/datum/reagent/blob/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
..()
|
||||
/// Used by blob reagents to calculate the reaction volume they should use when exposing mobs.
|
||||
/datum/reagent/blob/proc/return_mob_expose_reac_volume(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
if(exposed_mob.stat == DEAD || istype(exposed_mob, /mob/living/simple_animal/hostile/blob))
|
||||
return 0 //the dead, and blob mobs, don't cause reactions
|
||||
return round(reac_volume * min(1.5 - touch_protection, 1), 0.1) //full touch protection means 50% volume, any prot below 0.5 means 100% volume.
|
||||
|
||||
/// Exists to earmark the new overmind arg used by blob reagents.
|
||||
/datum/reagent/blob/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
return ..()
|
||||
|
||||
@@ -32,7 +32,8 @@
|
||||
color = "#B68D00"
|
||||
|
||||
/datum/reagent/blob/blazing_oil/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.adjust_fire_stacks(round(reac_volume/10))
|
||||
exposed_mob.IgniteMob()
|
||||
if(exposed_mob)
|
||||
|
||||
@@ -17,7 +17,8 @@
|
||||
taste_description = "brain freeze"
|
||||
|
||||
/datum/reagent/blob/cryogenic_poison/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
if(exposed_mob.reagents)
|
||||
exposed_mob.reagents.add_reagent(/datum/reagent/consumable/frostoil, 0.3*reac_volume)
|
||||
exposed_mob.reagents.add_reagent(/datum/reagent/consumable/ice, 0.3*reac_volume)
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
color = "#E88D5D"
|
||||
|
||||
/datum/reagent/blob/distributed_neurons/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.apply_damage(0.6*reac_volume, TOX)
|
||||
if(overmind && ishuman(exposed_mob))
|
||||
if(exposed_mob.stat == UNCONSCIOUS || exposed_mob.stat == HARD_CRIT)
|
||||
|
||||
@@ -30,7 +30,8 @@
|
||||
color = "#83ECEC"
|
||||
|
||||
/datum/reagent/blob/electromagnetic_web/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
if(prob(reac_volume*2))
|
||||
exposed_mob.emp_act(EMP_LIGHT)
|
||||
if(exposed_mob)
|
||||
|
||||
@@ -27,7 +27,8 @@
|
||||
color = "#EFD65A"
|
||||
|
||||
/datum/reagent/blob/energized_jelly/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.losebreath += round(0.2*reac_volume)
|
||||
exposed_mob.adjustStaminaLoss(reac_volume * 1.2)
|
||||
if(exposed_mob)
|
||||
|
||||
@@ -32,8 +32,9 @@
|
||||
color = "#8B2500"
|
||||
|
||||
/datum/reagent/blob/explosive_lattice/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
. = ..()
|
||||
var/initial_volume = reac_volume
|
||||
reac_volume = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
if(reac_volume >= 10) //if it's not a spore cloud, bad time incoming
|
||||
var/obj/effect/temp_visual/explosion/fast/ex_effect = new /obj/effect/temp_visual/explosion/fast(get_turf(exposed_mob))
|
||||
ex_effect.alpha = 150
|
||||
|
||||
@@ -37,7 +37,8 @@
|
||||
color = "#4F4441"
|
||||
|
||||
/datum/reagent/blob/networked_fibers/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.apply_damage(0.6*reac_volume, BRUTE, wound_bonus=CANT_WOUND)
|
||||
if(!QDELETED(exposed_mob))
|
||||
exposed_mob.apply_damage(0.6*reac_volume, BURN, wound_bonus=CANT_WOUND)
|
||||
|
||||
@@ -40,7 +40,8 @@
|
||||
color = "#AAAABB"
|
||||
|
||||
/datum/reagent/blob/pressurized_slime/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
var/turf/open/location_turf = get_turf(exposed_mob)
|
||||
if(istype(location_turf) && prob(reac_volume))
|
||||
location_turf.MakeSlippery(TURF_WET_LUBE, min_wet_time = 10 SECONDS, wet_time_to_add = 5 SECONDS)
|
||||
|
||||
@@ -24,8 +24,12 @@
|
||||
taste_description = "rock"
|
||||
color = "#9ACD32"
|
||||
|
||||
/datum/reagent/blob/reactive_spines/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
..()
|
||||
/datum/reagent/blob/reactive_spines/return_mob_expose_reac_volume(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
if(exposed_mob.stat == DEAD || istype(exposed_mob, /mob/living/simple_animal/hostile/blob))
|
||||
return 0 //the dead, and blob mobs, don't cause reactions
|
||||
return reac_volume
|
||||
|
||||
/datum/reagent/blob/reactive_spines/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.adjustBruteLoss(reac_volume)
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
color = "#A88FB7"
|
||||
|
||||
/datum/reagent/blob/regenerative_materia/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.adjust_drugginess(reac_volume)
|
||||
if(exposed_mob.reagents)
|
||||
exposed_mob.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 0.2*reac_volume)
|
||||
|
||||
@@ -31,5 +31,6 @@
|
||||
color = "#7B5A57"
|
||||
|
||||
/datum/reagent/blob/replicating_foam/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.apply_damage(0.7*reac_volume, BRUTE, wound_bonus=CANT_WOUND)
|
||||
|
||||
@@ -32,5 +32,6 @@
|
||||
color = "#C8963C"
|
||||
|
||||
/datum/reagent/blob/shifting_fragments/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.apply_damage(0.7*reac_volume, BRUTE, wound_bonus=CANT_WOUND)
|
||||
|
||||
@@ -30,7 +30,8 @@
|
||||
color = "#65ADA2"
|
||||
|
||||
/datum/reagent/blob/synchronous_mesh/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/overmind)
|
||||
reac_volume = ..()
|
||||
. = ..()
|
||||
reac_volume = return_mob_expose_reac_volume(exposed_mob, methods, reac_volume, show_message, touch_protection, overmind)
|
||||
exposed_mob.apply_damage(0.2*reac_volume, BRUTE, wound_bonus=CANT_WOUND)
|
||||
if(exposed_mob && reac_volume)
|
||||
for(var/obj/structure/blob/nearby_blob in range(1, exposed_mob)) //if the target is completely surrounded, this is 2.4*reac_volume bonus damage, total of 2.6*reac_volume
|
||||
|
||||
@@ -24,12 +24,10 @@
|
||||
/datum/asset_cache_item/New(name, file)
|
||||
if (!isfile(file))
|
||||
file = fcopy_rsc(file)
|
||||
hash = md5(file)
|
||||
|
||||
hash = md5asfile(file) //icons sent to the rsc sometimes md5 incorrectly
|
||||
if (!hash)
|
||||
hash = md5(fcopy_rsc(file))
|
||||
if (!hash)
|
||||
CRASH("invalid asset sent to asset cache")
|
||||
debug_world_log("asset cache unexpected success of second fcopy_rsc")
|
||||
CRASH("invalid asset sent to asset cache")
|
||||
src.name = name
|
||||
var/extstart = findlasttext(name, ".")
|
||||
if (extstart)
|
||||
|
||||
@@ -126,6 +126,10 @@
|
||||
piping_layer = (pipe_flags & PIPING_DEFAULT_LAYER_ONLY) ? PIPING_LAYER_DEFAULT : new_layer
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/update_icon()
|
||||
layer = initial(layer) + piping_layer / 1000
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/proc/can_be_node(obj/machinery/atmospherics/target, iteration)
|
||||
return connection_check(target, piping_layer)
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
Passive gate is similar to the regular pump except:
|
||||
* It doesn't require power
|
||||
* Can not transfer low pressure to higher pressure (so it's more like a valve where you can control the flow)
|
||||
* Passes gas when output pressure lower than target pressure
|
||||
|
||||
*/
|
||||
|
||||
@@ -10,7 +11,7 @@ Passive gate is similar to the regular pump except:
|
||||
icon_state = "passgate_map-3"
|
||||
|
||||
name = "passive gate"
|
||||
desc = "A one-way air valve that does not require power."
|
||||
desc = "A one-way air valve that does not require power. Passes gas when the output pressure is lower than the target pressure."
|
||||
|
||||
can_unwrench = TRUE
|
||||
shift_underlay_only = FALSE
|
||||
@@ -112,7 +113,7 @@ Passive gate is similar to the regular pump except:
|
||||
pressure = text2num(pressure)
|
||||
. = TRUE
|
||||
if(.)
|
||||
target_pressure = clamp(pressure, 0, MAX_OUTPUT_PRESSURE)
|
||||
target_pressure = clamp(pressure, 0, ONE_ATMOSPHERE*100)
|
||||
investigate_log("was set to [target_pressure] kPa by [key_name(usr)]", INVESTIGATE_ATMOS)
|
||||
update_icon()
|
||||
|
||||
@@ -134,7 +135,7 @@ Passive gate is similar to the regular pump except:
|
||||
on = !on
|
||||
|
||||
if("set_output_pressure" in signal.data)
|
||||
target_pressure = clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*50)
|
||||
target_pressure = clamp(text2num(signal.data["set_output_pressure"]),0,ONE_ATMOSPHERE*100)
|
||||
|
||||
if(on != old_on)
|
||||
investigate_log("was turned [on ? "on" : "off"] by a remote signal", INVESTIGATE_ATMOS)
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
plane = showpipe ? GAME_PLANE : FLOOR_PLANE
|
||||
|
||||
if(!showpipe)
|
||||
return
|
||||
return ..()
|
||||
|
||||
var/connected = 0 //Direction bitset
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
|
||||
if(!shift_underlay_only)
|
||||
PIPING_LAYER_SHIFT(src, piping_layer)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/proc/get_pipe_underlay(state, dir, color = null)
|
||||
if(color)
|
||||
|
||||
@@ -243,7 +243,7 @@
|
||||
mob_occupant.Unconscious((mob_occupant.bodytemperature * unconscious_factor) * 2000)
|
||||
if(beaker)
|
||||
if(reagent_transfer == 0) // Magically transfer reagents. Because cryo magic.
|
||||
beaker.reagents.trans_to(occupant, 1, efficiency * 0.25, methods = VAPOR) // Transfer reagents.
|
||||
beaker.reagents.trans_to(occupant, 1, efficiency * 25, methods = VAPOR) // Transfer reagents.
|
||||
air1.gases[/datum/gas/oxygen][MOLES] -= max(0,air1.gases[/datum/gas/oxygen][MOLES] - 2 / efficiency) //Let's use gas for this
|
||||
air1.garbage_collect()
|
||||
if(++reagent_transfer >= 10 * efficiency) // Throttle reagent transfer (higher efficiency will transfer the same amount but consume less from the beaker).
|
||||
@@ -302,6 +302,7 @@
|
||||
L.update_mobility()
|
||||
occupant = null
|
||||
flick("pod-open-anim", src)
|
||||
reagent_transfer = efficiency * 10 - 5 // wait before injecting the next occupant
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/close_machine(mob/living/carbon/user)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Birthday Cake"
|
||||
description = "Nanotrasen's birthday is coming up! Ship them a birthday cake to celebrate!"
|
||||
reward = 4000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/store/cake/birthday, /obj/item/reagent_containers/food/snacks/cakeslice/birthday)
|
||||
wanted_types = list(/obj/item/food/cake/birthday, /obj/item/food/cakeslice/birthday)
|
||||
|
||||
/datum/bounty/item/chef/soup
|
||||
name = "Soup"
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
/datum/bounty/item/mech/mark_high_priority(scale_reward)
|
||||
return ..(max(scale_reward * 0.7, 1.2))
|
||||
|
||||
/datum/bounty/item/mech/ripleymkii
|
||||
/datum/bounty/item/mech/ripleymk2
|
||||
name = "APLU MK-II \"Ripley\""
|
||||
reward = 13000
|
||||
wanted_types = list(/obj/vehicle/sealed/mecha/working/ripley/mkii)
|
||||
wanted_types = list(/obj/vehicle/sealed/mecha/working/ripley/mk2)
|
||||
|
||||
/datum/bounty/item/mech/clarke
|
||||
name = "Clarke"
|
||||
|
||||
@@ -421,4 +421,4 @@
|
||||
l_pocket = /obj/item/kitchen/knife
|
||||
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
|
||||
/obj/item/storage/box/fireworks=3,\
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday=1)
|
||||
/obj/item/food/cake/birthday=1)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
// Will generate one if an expired one doesn't exist already, otherwise will grab existing token
|
||||
var/one_time_token = SSdiscord.get_or_generate_one_time_token_for_ckey(ckey)
|
||||
SSdiscord.reverify_cache[usr.ckey] = one_time_token
|
||||
message = "Your one time token is: [one_time_token], Assuming you have the required living minutes in game, you can now verify yourself in discord by using the command <span class=\"warning\">\".verify [one_time_token]\"</span>"
|
||||
message = "Your one time token is: [one_time_token], Assuming you have the required living minutes in game, you can now verify yourself in discord by using the command <span class=\"warning\">\" .verify [one_time_token] \"</span>"
|
||||
|
||||
//Now give them a browse window so they can't miss whatever we told them
|
||||
var/datum/browser/window = new/datum/browser(usr, "discordverification", "Discord verification")
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
///Global list that stores the 4 kinds of waves the crystal invasion can have and the portals each one can spawn
|
||||
GLOBAL_LIST_INIT(crystal_invasion_waves, list(
|
||||
"small wave" = list(
|
||||
/obj/structure/crystal_portal/small=4,
|
||||
@@ -11,17 +12,18 @@ GLOBAL_LIST_INIT(crystal_invasion_waves, list(
|
||||
"big wave" = list(
|
||||
/obj/structure/crystal_portal/small=5,
|
||||
/obj/structure/crystal_portal/medium=3,
|
||||
/obj/structure/crystal_portal/big=2,
|
||||
/obj/structure/crystal_portal/huge=1
|
||||
/obj/structure/crystal_portal/big=2
|
||||
),
|
||||
"huge wave" = list(
|
||||
/obj/structure/crystal_portal/small=7,
|
||||
/obj/structure/crystal_portal/medium=5,
|
||||
/obj/structure/crystal_portal/big=3,
|
||||
/obj/structure/crystal_portal/huge=2
|
||||
/obj/structure/crystal_portal/big=3
|
||||
),
|
||||
))
|
||||
///Global list that stores the all the instantiated portals around the station, used when stabilizing the crystal
|
||||
GLOBAL_LIST_EMPTY(crystal_portals)
|
||||
///Global list that store the huge portals that spawn at the start of the event
|
||||
GLOBAL_LIST_EMPTY(huge_crystal_portals)
|
||||
|
||||
/*
|
||||
This section is for the event controller
|
||||
@@ -48,12 +50,120 @@ This section is for the event controller
|
||||
var/obj/machinery/destabilized_crystal/dest_crystal
|
||||
///Check if the event will end badly
|
||||
var/is_zk_scenario = TRUE
|
||||
///Ticks that have to pass before second wave
|
||||
var/second_wave = 310
|
||||
///Store the areas where the huge portals appears
|
||||
var/list/center_areas = list()
|
||||
|
||||
/datum/round_event/crystal_invasion/start()
|
||||
destabilize_supermatter_crystal()
|
||||
choose_wave_type()
|
||||
addtimer(CALLBACK(src, .proc/create_random_portals), 2 SECONDS)
|
||||
|
||||
///Destabilize the Supermatter crystal and spawn 6 portals around it
|
||||
/datum/round_event/crystal_invasion/proc/destabilize_supermatter_crystal()
|
||||
var/list/sm_crystal = list()
|
||||
for(var/obj/machinery/power/supermatter_crystal/temp in GLOB.machines)
|
||||
if(istype(temp, /obj/machinery/power/supermatter_crystal/shard))
|
||||
continue
|
||||
sm_crystal += temp
|
||||
if(!length(sm_crystal))
|
||||
log_game("No engine found, killing the crystal invasion event.")
|
||||
kill()
|
||||
return
|
||||
|
||||
var/obj/machinery/power/supermatter_crystal/crystal = pick(sm_crystal)
|
||||
dest_crystal = crystal.destabilize(portal_numbers)
|
||||
RegisterSignal(dest_crystal, COMSIG_PARENT_QDELETING, .proc/on_dest_crystal_qdel)
|
||||
|
||||
for(var/t in RANGE_TURFS(8, dest_crystal.loc))
|
||||
var/turf/turf_loc = t
|
||||
var/distance_from_center = get_dist(turf_loc, dest_crystal.loc)
|
||||
switch(distance_from_center)
|
||||
if(0)
|
||||
distance_from_center = 1 //Same tile, let's avoid a division by zero.
|
||||
if(-1)
|
||||
kill()
|
||||
CRASH("Negative distance measurement from the center turf detected, this should never happen")
|
||||
if(prob(325 / distance_from_center))
|
||||
if(isopenturf(turf_loc) || isspaceturf(turf_loc))
|
||||
turf_loc.ChangeTurf(/turf/open/indestructible/crystal_floor, flags = CHANGETURF_INHERIT_AIR)
|
||||
else
|
||||
turf_loc.ChangeTurf(/turf/closed/indestructible/crystal_wall)
|
||||
|
||||
var/list/crystal_spawner_turfs = list()
|
||||
for(var/range_turf in RANGE_TURFS(6, dest_crystal.loc))
|
||||
if(!isopenturf(range_turf) || isspaceturf(range_turf))
|
||||
continue
|
||||
crystal_spawner_turfs += range_turf
|
||||
|
||||
for(var/i in 1 to 6)
|
||||
var/pick_portal = pickweight(GLOB.crystal_invasion_waves["big wave"])
|
||||
var/turf/portal_spawner_turf = pick(crystal_spawner_turfs)
|
||||
new pick_portal(portal_spawner_turf)
|
||||
|
||||
///Chooses random areas where to put the main huge portals and then spawn around them 6 more portals
|
||||
/datum/round_event/crystal_invasion/proc/create_random_portals()
|
||||
var/list/center_finder = list()
|
||||
for(var/es in GLOB.generic_event_spawns)
|
||||
var/obj/effect/landmark/event_spawn/temp = es
|
||||
if(is_station_level(temp.z))
|
||||
center_finder += temp
|
||||
if(!center_finder.len)
|
||||
kill()
|
||||
CRASH("No landmarks on the station map, aborting")
|
||||
for(var/j in 1 to portal_numbers)
|
||||
if(!length(center_finder))
|
||||
kill()
|
||||
CRASH("center_finder had less entries than portal_numbers ([j]/[portal_numbers])")
|
||||
var/obj/center = pick_n_take(center_finder)
|
||||
var/turf/center_turf = center.loc
|
||||
var/area/center_area = get_area(center_turf)
|
||||
center_areas += center_area
|
||||
|
||||
explosion(center_turf,0,0,5,7,7)
|
||||
|
||||
new /obj/structure/crystal_portal/huge(center_turf)
|
||||
|
||||
for(var/t in RANGE_TURFS(5, center_turf))
|
||||
var/turf/turf_loc = t
|
||||
var/distance_from_center = get_dist(turf_loc, center_turf)
|
||||
switch(distance_from_center)
|
||||
if(0)
|
||||
distance_from_center = 1 //Same tile, let's avoid a division by zero.
|
||||
if(-1)
|
||||
kill()
|
||||
CRASH("Negative distance error here")
|
||||
if(prob(250 / distance_from_center))
|
||||
if(isopenturf(turf_loc) || isspaceturf(turf_loc))
|
||||
turf_loc.ChangeTurf(/turf/open/indestructible/crystal_floor, flags = CHANGETURF_INHERIT_AIR)
|
||||
else
|
||||
turf_loc.ChangeTurf(/turf/closed/indestructible/crystal_wall)
|
||||
|
||||
var/list/portal_spawner_turfs = list()
|
||||
for(var/range_turf in RANGE_TURFS(6, center_turf))
|
||||
if(!isopenturf(range_turf) || isspaceturf(range_turf))
|
||||
continue
|
||||
portal_spawner_turfs += range_turf
|
||||
|
||||
for(var/i in 1 to 6)
|
||||
if(!length(portal_spawner_turfs))
|
||||
break
|
||||
var/pick_portal = pickweight(GLOB.crystal_invasion_waves[wave_name])
|
||||
var/turf/portal_spawner_turf = pick_n_take(portal_spawner_turfs)
|
||||
new pick_portal(portal_spawner_turf)
|
||||
dest_crystal.icon_state = "psy_shielded"
|
||||
dest_crystal.changed_icon = FALSE
|
||||
addtimer(CALLBACK(src, .proc/announce_locations), 8 SECONDS)
|
||||
|
||||
///After 8 seconds from the initial explosions centcom will announce the location of the huge portals
|
||||
/datum/round_event/crystal_invasion/proc/announce_locations()
|
||||
priority_announce("WARNING - After tracking the powerspikes from your station we have determined that huge portals have appeared at the following locations:[center_areas.Join(", ")]. \
|
||||
Please close those before attempting to stabilize the crystal.", "Alert")
|
||||
sound_to_playing_players('sound/misc/notice1.ogg')
|
||||
|
||||
/datum/round_event/crystal_invasion/announce(fake)
|
||||
priority_announce("WARNING - Destabilization of the Supermatter Crystal Matrix detected, please stand by waiting further instructions", "Alert")
|
||||
priority_announce("WARNING - Destabilization of the Supermatter Crystal Matrix detected, please stand by and await further instructions.", "Alert")
|
||||
sound_to_playing_players('sound/misc/notice1.ogg')
|
||||
|
||||
///Choose the type of the wave
|
||||
@@ -66,70 +176,22 @@ This section is for the event controller
|
||||
"huge wave" = 5))
|
||||
switch(wave_name)
|
||||
if("small wave")
|
||||
portal_numbers = rand(9, 11)
|
||||
portal_numbers = 2
|
||||
if("medium wave")
|
||||
portal_numbers = rand(8, 12)
|
||||
portal_numbers = rand(2, 3)
|
||||
if("big wave")
|
||||
portal_numbers = rand(9, 13)
|
||||
portal_numbers = rand(3, 4)
|
||||
if("huge wave")
|
||||
portal_numbers = rand(11, 15)
|
||||
portal_numbers = rand(4, 5)
|
||||
else
|
||||
kill()
|
||||
CRASH("Wave name of [wave_name] not recognised.")
|
||||
|
||||
var/list/sm_crystal = list()
|
||||
for(var/obj/machinery/power/supermatter_crystal/temp in GLOB.machines)
|
||||
if(istype(temp, /obj/machinery/power/supermatter_crystal/shard))
|
||||
continue
|
||||
sm_crystal += temp
|
||||
if(sm_crystal == null)
|
||||
log_game("No engine found, killing the crystal invasion event.")
|
||||
kill()
|
||||
return
|
||||
var/obj/machinery/power/supermatter_crystal/crystal = pick(sm_crystal)
|
||||
dest_crystal = crystal.destabilize(portal_numbers)
|
||||
RegisterSignal(dest_crystal, COMSIG_PARENT_QDELETING, .proc/on_dest_crystal_qdel)
|
||||
|
||||
priority_announce("WARNING - Numerous energy fluctuations have been detected from your Supermatter; we estimate a [wave_name] of crystalline creatures \
|
||||
coming from \[REDACTED]; there will be [portal_numbers] portals spread around the station that you must close. Harvest a \[REDACTED] \
|
||||
anomaly from a portal by using the anomaly neutralizer, place it inside a crystal stabilizer, and inject it into your Supermatter to stop a ZK-Lambda-Class Cosmic Fragmentation Scenario from occurring.", "Alert")
|
||||
coming from \[REDACTED]; there will be [portal_numbers] main portals spread around the station that you must close. Harvest a \[REDACTED] \
|
||||
crystal from a portal by using the anomaly neutralizer, place it inside a crystal stabilizer, and inject it into your Supermatter to stop a ZK-Lambda-Class Cosmic Fragmentation Scenario from occurring.", "Alert")
|
||||
sound_to_playing_players('sound/misc/notice1.ogg')
|
||||
|
||||
addtimer(CALLBACK(src, .proc/spawn_portals), 3 SECONDS)
|
||||
|
||||
///Pick a location from the generic_event_spawns list that are present on the maps and call the spawn anomaly and portal procs
|
||||
/datum/round_event/crystal_invasion/proc/spawn_portals()
|
||||
var/list/spawners = list()
|
||||
for(var/es in GLOB.generic_event_spawns)
|
||||
var/obj/effect/landmark/event_spawn/temp = es
|
||||
if(is_station_level(temp.z))
|
||||
spawners += temp
|
||||
for(var/i in 1 to portal_numbers)
|
||||
spawn_portal(GLOB.crystal_invasion_waves[wave_name], spawners)
|
||||
for(var/i in 1 to 6)
|
||||
spawn_anomaly(spawners)
|
||||
|
||||
var/list/crystal_spawner_turfs = list()
|
||||
for(var/range_turf in RANGE_TURFS(6, dest_crystal.loc))
|
||||
if(!isopenturf(range_turf) || isspaceturf(range_turf))
|
||||
continue
|
||||
crystal_spawner_turfs += range_turf
|
||||
for(var/i in 1 to 6)
|
||||
if(!length(crystal_spawner_turfs))
|
||||
break
|
||||
var/pick_portal = pickweight(GLOB.crystal_invasion_waves["big wave"])
|
||||
var/turf/crystal_spawner_turf = pick_n_take(crystal_spawner_turfs)
|
||||
new pick_portal(crystal_spawner_turf)
|
||||
|
||||
addtimer(CALLBACK(src, .proc/more_portals, GLOB.crystal_invasion_waves[wave_name]), 10 MINUTES)
|
||||
|
||||
///Spawn an anomaly randomly in a different location than spawn_portal()
|
||||
/datum/round_event/crystal_invasion/proc/spawn_anomaly(list/spawners)
|
||||
if(!spawners.len)
|
||||
CRASH("No landmarks on the station map, aborting")
|
||||
var/obj/spawner = pick(spawners)
|
||||
new/obj/effect/anomaly/flux(spawner.loc, 30 SECONDS, FALSE, FALSE)
|
||||
|
||||
///Spawn one portal in a random location choosen from the generic_event_spawns list
|
||||
/datum/round_event/crystal_invasion/proc/spawn_portal(list/wave_type, list/spawners)
|
||||
if(!spawners.len)
|
||||
@@ -149,9 +211,11 @@ This section is for the event controller
|
||||
if(is_station_level(temp.z))
|
||||
spawners += temp
|
||||
for(var/i in 1 to rand(10, 15))
|
||||
spawn_portal(GLOB.crystal_invasion_waves["small wave"], spawners)
|
||||
spawn_portal(GLOB.crystal_invasion_waves["medium wave"], spawners)
|
||||
|
||||
/datum/round_event/crystal_invasion/tick()
|
||||
if(activeFor == second_wave)
|
||||
more_portals()
|
||||
if(dest_crystal.is_stabilized == TRUE)
|
||||
processing = FALSE
|
||||
is_zk_scenario = FALSE
|
||||
@@ -208,6 +272,49 @@ This section is for the event controller
|
||||
dest_crystal = null
|
||||
kill()
|
||||
|
||||
/turf/open/indestructible/crystal_floor
|
||||
name = "Crystal floor"
|
||||
desc = "A crystallized floor"
|
||||
icon_state = "noslip-damaged1"
|
||||
baseturfs = /turf/open/space
|
||||
|
||||
/turf/open/indestructible/crystal_floor/examine(mob/user)
|
||||
. += ..()
|
||||
. += "<span class='notice'>The floor is made of sturdy crystals.</span>"
|
||||
|
||||
/turf/open/indestructible/crystal_floor/welder_act(mob/living/user, obj/item/I)
|
||||
. = ..()
|
||||
if(!I.tool_start_check(user, amount=0))
|
||||
return FALSE
|
||||
to_chat(user, "<span class='notice'>You begin heating up the crystal...</span>")
|
||||
if(I.use_tool(src, user, 2.5 SECONDS, volume=100))
|
||||
to_chat(user, "<span class='notice'>The crystal crumbles into dust.</span>")
|
||||
ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/turf/closed/indestructible/crystal_wall
|
||||
name = "Crystal wall"
|
||||
desc = "A crystallized wall"
|
||||
icon = 'icons/turf/mining.dmi'
|
||||
icon_state = "rock_highchance"
|
||||
baseturfs = /turf/open/space
|
||||
|
||||
/turf/closed/indestructible/crystal_wall/examine(mob/user)
|
||||
. += ..()
|
||||
. += "<span class='notice'>The wall is made of sturdy crystals.</span>"
|
||||
|
||||
/turf/open/indestructible/crystal_floor/welder_act(mob/living/user, obj/item/I)
|
||||
. = ..()
|
||||
if(!I.tool_start_check(user, amount=0))
|
||||
return FALSE
|
||||
to_chat(user, "<span class='notice'>You begin heating up the crystal...</span>")
|
||||
if(I.use_tool(src, user, 2.5 SECONDS, volume=100))
|
||||
to_chat(user, "<span class='notice'>The crystal crumbles into dust.</span>")
|
||||
ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/*
|
||||
This section is for the destabilized SM
|
||||
*/
|
||||
@@ -228,6 +335,8 @@ This section is for the destabilized SM
|
||||
///Our sound loop
|
||||
var/datum/looping_sound/destabilized_crystal/soundloop
|
||||
|
||||
var/changed_icon = TRUE
|
||||
|
||||
/obj/machinery/destabilized_crystal/Initialize()
|
||||
. = ..()
|
||||
soundloop = new(list(src), TRUE)
|
||||
@@ -245,12 +354,18 @@ This section is for the destabilized SM
|
||||
playsound(loc, 'sound/weapons/emitter2.ogg', 100, TRUE, extrarange = 10)
|
||||
if(prob(15))
|
||||
fire_nuclear_particle()
|
||||
if(length(GLOB.huge_crystal_portals) == 0 && !changed_icon)
|
||||
icon_state = "psy"
|
||||
changed_icon = TRUE
|
||||
|
||||
var/turf/loc_turf = loc
|
||||
var/datum/gas_mixture/env = loc_turf.return_air()
|
||||
var/datum/gas_mixture/removed
|
||||
var/gasefficency = 0.5
|
||||
removed = env.remove(gasefficency * env.total_moles())
|
||||
removed.assert_gases(/datum/gas/bz, /datum/gas/miasma)
|
||||
if(!removed || !removed.total_moles() || isspaceturf(loc_turf))
|
||||
removed.gases[/datum/gas/bz][MOLES] += 0.5
|
||||
removed.gases[/datum/gas/bz][MOLES] += 15.5
|
||||
removed.gases[/datum/gas/miasma][MOLES] += 5.5
|
||||
env.merge(removed)
|
||||
@@ -260,21 +375,24 @@ This section is for the destabilized SM
|
||||
if(!istype(user))
|
||||
return
|
||||
if(istype(W, /obj/item/crystal_stabilizer))
|
||||
if(length(GLOB.huge_crystal_portals) > 0)
|
||||
to_chat(user, "<span class='notice'>The shield protecting the crystal is still up! Close all the main portals before attempting this again!</span>")
|
||||
return
|
||||
var/obj/item/crystal_stabilizer/injector = W
|
||||
if(!injector.filled)
|
||||
to_chat(user, "<span class='notice'>\The [W] is empty!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You carefully begin injecting \the [src] with \the [W]... take care not to move untill all the steps are finished!</span>")
|
||||
if(!W.use_tool(src, user, 5 SECONDS, volume = 100))
|
||||
to_chat(user, "<span class='notice'>You carefully begin injecting \the [src] with \the [W]... take care not to move until all the steps are finished!</span>")
|
||||
if(!W.use_tool(src, user, 1 SECONDS, volume = 100))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>Seems that \the [src] internal resonance is fading with the fluid!</span>")
|
||||
playsound(get_turf(src), 'sound/effects/supermatter.ogg', 35, TRUE)
|
||||
if(!W.use_tool(src, user, 6.5 SECONDS, volume = 100))
|
||||
if(!W.use_tool(src, user, 1.5 SECONDS, volume = 100))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>The [src] is reacting violently with the fluid!</span>")
|
||||
fire_nuclear_particle()
|
||||
radiation_pulse(src, 2500, 6)
|
||||
if(!W.use_tool(src, user, 7.5 SECONDS, volume = 100))
|
||||
radiation_pulse(src, 1000, 6)
|
||||
if(!W.use_tool(src, user, 2 SECONDS, volume = 100))
|
||||
return
|
||||
to_chat(user, "<span class='notice'>The [src] has been restored and restabilized!</span>")
|
||||
playsound(get_turf(src), 'sound/effects/supermatter.ogg', 35, TRUE)
|
||||
@@ -285,6 +403,10 @@ This section is for the destabilized SM
|
||||
/obj/machinery/destabilized_crystal/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>The Crystal appears to be heavily destabilized. Maybe it can be fixed by injecting it with something from another world.</span>"
|
||||
if(length(GLOB.huge_crystal_portals) > 0)
|
||||
. += "<span class='notice'>The Destabilized Crystal appears to be protected by some kind of shield.</span>"
|
||||
else
|
||||
. += "<span class='notice'>The shield that was protecting the Crystal is gone, it's time to restore it.</span>"
|
||||
|
||||
/obj/machinery/destabilized_crystal/Bumped(atom/movable/movable_atom)
|
||||
if(!isliving(movable_atom))
|
||||
@@ -309,7 +431,7 @@ This section is for the destabilized SM
|
||||
for(var/find_portal in GLOB.crystal_portals)
|
||||
var/obj/structure/crystal_portal/portal = find_portal
|
||||
portal.modify_component()
|
||||
priority_announce("The sacrifice of a member of the station (we hope was the clown) has weakened the portals and the monsters generation is slowing down!")
|
||||
priority_announce("The sacrifice of a crewmember (hopefully the clown) appears to have weakened the portals and slowed down the number of monsters coming through!")
|
||||
sound_to_playing_players('sound/misc/notice2.ogg')
|
||||
|
||||
/*
|
||||
@@ -461,7 +583,7 @@ This section is for the crystal portals variations
|
||||
name = "Small Portal"
|
||||
desc = "A small portal to an unkown dimension!"
|
||||
color = COLOR_BRIGHT_BLUE
|
||||
max_mobs = 3
|
||||
max_mobs = 2
|
||||
spawn_time = 5 SECONDS
|
||||
mob_types = list(
|
||||
/mob/living/simple_animal/hostile/crystal_monster/minion,
|
||||
@@ -472,8 +594,8 @@ This section is for the crystal portals variations
|
||||
name = "Medium Portal"
|
||||
desc = "A medium portal to an unkown dimension!"
|
||||
color = COLOR_GREEN
|
||||
max_mobs = 4
|
||||
spawn_time = 10 SECONDS
|
||||
max_mobs = 3
|
||||
spawn_time = 15 SECONDS
|
||||
mob_types = list(
|
||||
/mob/living/simple_animal/hostile/crystal_monster/minion,
|
||||
/mob/living/simple_animal/hostile/crystal_monster/thug,
|
||||
@@ -484,8 +606,8 @@ This section is for the crystal portals variations
|
||||
name = "Big Portal"
|
||||
desc = "A big portal to an unkown dimension!"
|
||||
color = COLOR_RED
|
||||
max_mobs = 5
|
||||
spawn_time = 10 SECONDS
|
||||
max_mobs = 4
|
||||
spawn_time = 15 SECONDS
|
||||
mob_types = list(
|
||||
/mob/living/simple_animal/hostile/crystal_monster/minion,
|
||||
/mob/living/simple_animal/hostile/crystal_monster/thug,
|
||||
@@ -497,16 +619,22 @@ This section is for the crystal portals variations
|
||||
name = "Huge Portal"
|
||||
desc = "A huge portal to an unkown dimension!"
|
||||
color = COLOR_BLACK
|
||||
max_mobs = 6
|
||||
spawn_time = 15 SECONDS
|
||||
max_mobs = 5
|
||||
spawn_time = 20 SECONDS
|
||||
mob_types = list(
|
||||
/mob/living/simple_animal/hostile/crystal_monster/minion,
|
||||
/mob/living/simple_animal/hostile/crystal_monster/thug,
|
||||
/mob/living/simple_animal/hostile/crystal_monster/recruit,
|
||||
/mob/living/simple_animal/hostile/crystal_monster/killer,
|
||||
/mob/living/simple_animal/hostile/crystal_monster/boss,
|
||||
)
|
||||
|
||||
/obj/structure/crystal_portal/huge/Initialize()
|
||||
. = ..()
|
||||
GLOB.huge_crystal_portals += src
|
||||
|
||||
/obj/structure/crystal_portal/huge/Destroy()
|
||||
GLOB.huge_crystal_portals -= src
|
||||
return ..()
|
||||
|
||||
/*
|
||||
This section is for the crystal monsters variations
|
||||
*/
|
||||
@@ -543,6 +671,10 @@ This section is for the crystal monsters variations
|
||||
stop_automated_movement_when_pulled = FALSE
|
||||
wander = TRUE
|
||||
|
||||
/mob/living/simple_animal/hostile/crystal_monster/Initialize()
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_TESLA_SHOCKIMMUNE, INNATE_TRAIT)
|
||||
|
||||
/mob/living/simple_animal/hostile/crystal_monster/minion
|
||||
name = "crystal minion"
|
||||
desc = "A monster made of crystals similar to the Supermatter ones."
|
||||
@@ -553,9 +685,9 @@ This section is for the crystal monsters variations
|
||||
maxHealth = 20
|
||||
health = 20
|
||||
speed = 0.8
|
||||
harm_intent_damage = 11
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 35
|
||||
harm_intent_damage = 7
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 15
|
||||
move_force = MOVE_FORCE_WEAK
|
||||
move_resist = MOVE_FORCE_WEAK
|
||||
pull_force = MOVE_FORCE_WEAK
|
||||
@@ -582,8 +714,8 @@ This section is for the crystal monsters variations
|
||||
health = 20
|
||||
speed = 0.9
|
||||
harm_intent_damage = 11
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 35
|
||||
melee_damage_lower = 10
|
||||
melee_damage_upper = 15
|
||||
move_force = MOVE_FORCE_NORMAL
|
||||
move_resist = MOVE_FORCE_NORMAL
|
||||
pull_force = MOVE_FORCE_NORMAL
|
||||
@@ -614,8 +746,8 @@ This section is for the crystal monsters variations
|
||||
health = 20
|
||||
speed = 1.2
|
||||
harm_intent_damage = 11
|
||||
melee_damage_lower = 20
|
||||
melee_damage_upper = 35
|
||||
melee_damage_lower = 15
|
||||
melee_damage_upper = 20
|
||||
move_force = MOVE_FORCE_STRONG
|
||||
move_resist = MOVE_FORCE_STRONG
|
||||
pull_force = MOVE_FORCE_STRONG
|
||||
@@ -639,9 +771,9 @@ This section is for the crystal monsters variations
|
||||
maxHealth = 35
|
||||
health = 35
|
||||
speed = 0.75
|
||||
harm_intent_damage = 20
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 45
|
||||
harm_intent_damage = 15
|
||||
melee_damage_lower = 30
|
||||
melee_damage_upper = 35
|
||||
move_force = MOVE_FORCE_VERY_STRONG
|
||||
move_resist = MOVE_FORCE_VERY_STRONG
|
||||
pull_force = MOVE_FORCE_VERY_STRONG
|
||||
@@ -652,7 +784,7 @@ This section is for the crystal monsters variations
|
||||
projectilesound = 'sound/weapons/pierce.ogg'
|
||||
ranged = 1
|
||||
ranged_message = "throws"
|
||||
ranged_cooldown_time = 25
|
||||
ranged_cooldown_time = 3.5 SECONDS
|
||||
|
||||
/obj/projectile/temp/crystal_killer
|
||||
name = "freezing blast"
|
||||
@@ -688,11 +820,11 @@ This section is for the crystal monsters variations
|
||||
move_resist = MOVE_FORCE_EXTREMELY_STRONG
|
||||
pull_force = MOVE_FORCE_EXTREMELY_STRONG
|
||||
environment_smash = ENVIRONMENT_SMASH_RWALLS
|
||||
projectiletype = /obj/projectile/magic/aoe/lightning
|
||||
projectiletype = /obj/projectile/magic/aoe/lightning/no_zap
|
||||
projectilesound = 'sound/weapons/pierce.ogg'
|
||||
ranged = 1
|
||||
ranged_message = "throws"
|
||||
ranged_cooldown_time = 45
|
||||
ranged_cooldown_time = 5.5 SECONDS
|
||||
|
||||
/mob/living/simple_animal/hostile/crystal_monster/boss/Bump(atom/clong)
|
||||
. = ..()
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
/datum/round_event/shuttle_catastrophe/start()
|
||||
SSshuttle.shuttle_purchased = SHUTTLEPURCHASE_FORCED
|
||||
SSshuttle.unload_preview()
|
||||
SSshuttle.load_template(new_shuttle)
|
||||
SSshuttle.existing_shuttle = SSshuttle.emergency
|
||||
SSshuttle.action_load(new_shuttle)
|
||||
log_shuttle("Shuttle Catastrophe set a new shuttle, [new_shuttle.name].")
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
to_chat(user, "<span class='warning'>The ingredient is too big for [src]!</span>")
|
||||
else if((ingredients.len >= ingMax) || (reagents.total_volume >= volume))
|
||||
to_chat(user, "<span class='warning'>You can't add more ingredients to [src]!</span>")
|
||||
else if(istype(I, /obj/item/reagent_containers/food/snacks/pizzaslice/custom) || istype(I, /obj/item/reagent_containers/food/snacks/cakeslice/custom))
|
||||
else if(istype(I, /obj/item/reagent_containers/food/snacks/pizzaslice/custom))
|
||||
to_chat(user, "<span class='warning'>Adding [I.name] to [src] would make a mess.</span>")
|
||||
else
|
||||
if(!user.transferItemToLoc(I, src))
|
||||
@@ -161,17 +161,6 @@
|
||||
icon_state = "custburg"
|
||||
foodtype = GRAIN
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/customizable/cake
|
||||
name = "cake"
|
||||
ingMax = 6
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/custom
|
||||
slices_num = 5
|
||||
icon = 'icons/obj/food/piecake.dmi'
|
||||
icon_state = "plaincake"
|
||||
foodtype = GRAIN | DAIRY
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/customizable/kebab
|
||||
name = "kebab"
|
||||
desc = "Delicious food on a stick."
|
||||
|
||||
@@ -185,7 +185,7 @@ All foods are distributed among various categories. Use common sense.
|
||||
if(S.w_class > WEIGHT_CLASS_SMALL)
|
||||
to_chat(user, "<span class='warning'>[S] is too big for [src]!</span>")
|
||||
return FALSE
|
||||
if(!S.customfoodfilling || istype(W, /obj/item/reagent_containers/food/snacks/customizable) || istype(W, /obj/item/reagent_containers/food/snacks/pizzaslice/custom) || istype(W, /obj/item/reagent_containers/food/snacks/cakeslice/custom))
|
||||
if(!S.customfoodfilling || istype(W, /obj/item/reagent_containers/food/snacks/customizable) || istype(W, /obj/item/reagent_containers/food/snacks/pizzaslice/custom))
|
||||
to_chat(user, "<span class='warning'>[src] can't be filled with [S]!</span>")
|
||||
return FALSE
|
||||
if(contents.len >= 20)
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
desc = "Cook it to get a cake."
|
||||
icon = 'icons/obj/food/food_ingredients.dmi'
|
||||
icon_state = "cakebatter"
|
||||
cooked_type = /obj/item/reagent_containers/food/snacks/store/cake/plain
|
||||
cooked_type = /obj/item/food/cake/plain
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 9)
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
tastes = list("batter" = 1)
|
||||
|
||||
@@ -1,455 +0,0 @@
|
||||
/obj/item/reagent_containers/food/snacks/store/cake
|
||||
icon = 'icons/obj/food/piecake.dmi'
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/plain
|
||||
slices_num = 5
|
||||
bitesize = 3
|
||||
volume = 80
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 1)
|
||||
foodtype = GRAIN | DAIRY
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice
|
||||
icon = 'icons/obj/food/piecake.dmi'
|
||||
trash = /obj/item/trash/plate
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
customfoodfilling = 0 //to avoid infinite cake-ception
|
||||
tastes = list("cake" = 1)
|
||||
foodtype = GRAIN | DAIRY
|
||||
value = FOOD_FAST
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain
|
||||
name = "plain cake"
|
||||
desc = "A plain cake, not a lie."
|
||||
icon_state = "plaincake"
|
||||
custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/cake
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
tastes = list("sweetness" = 2,"cake" = 5)
|
||||
foodtype = GRAIN | DAIRY | SUGAR
|
||||
value = FOOD_FAST
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/plain
|
||||
name = "plain cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "plaincake_slice"
|
||||
filling_color = "#FFD700"
|
||||
customfoodfilling = 1
|
||||
tastes = list("sweetness" = 2,"cake" = 5)
|
||||
foodtype = GRAIN | DAIRY | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/carrot
|
||||
name = "carrot cake"
|
||||
desc = "A favorite desert of a certain wascally wabbit. Not a lie."
|
||||
icon_state = "carrotcake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/carrot
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/medicine/oculine = 5, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/medicine/oculine = 10, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
|
||||
foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR
|
||||
value = FOOD_RARE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/carrot
|
||||
name = "carrot cake slice"
|
||||
desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie."
|
||||
icon_state = "carrotcake_slice"
|
||||
filling_color = "#FFA500"
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/oculine = 2, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1)
|
||||
foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/brain
|
||||
name = "brain cake"
|
||||
desc = "A squishy cake-thing."
|
||||
icon_state = "braincake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/brain
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/medicine/mannitol = 10, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 16, /datum/reagent/consumable/nutriment/protein = 5, /datum/reagent/medicine/mannitol = 10, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
|
||||
foodtype = GRAIN | DAIRY | MEAT | GROSS | SUGAR
|
||||
value = FOOD_FAST
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/brain
|
||||
name = "brain cake slice"
|
||||
desc = "Lemme tell you something about prions. THEY'RE DELICIOUS."
|
||||
icon_state = "braincakeslice"
|
||||
filling_color = "#FF69B4"
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 1, /datum/reagent/medicine/mannitol = 2, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1)
|
||||
foodtype = GRAIN | DAIRY | MEAT | GROSS | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/cheese
|
||||
name = "cheese cake"
|
||||
desc = "DANGEROUSLY cheesy."
|
||||
icon_state = "cheesecake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/cheese
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 8, /datum/reagent/consumable/nutriment/protein = 5)
|
||||
tastes = list("cake" = 4, "cream cheese" = 3)
|
||||
foodtype = GRAIN | DAIRY
|
||||
value = FOOD_RARE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/cheese
|
||||
name = "cheese cake slice"
|
||||
desc = "Slice of pure cheestisfaction."
|
||||
icon_state = "cheesecake_slice"
|
||||
filling_color = "#FFFACD"
|
||||
tastes = list("cake" = 4, "cream cheese" = 3)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/protein = 1,, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
foodtype = GRAIN | DAIRY
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/orange
|
||||
name = "orange cake"
|
||||
desc = "A cake with added orange."
|
||||
icon_state = "orangecake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/orange
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
value = FOOD_RARE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/orange
|
||||
name = "orange cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "orangecake_slice"
|
||||
filling_color = "#FFA500"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/lime
|
||||
name = "lime cake"
|
||||
desc = "A cake with added lime."
|
||||
icon_state = "limecake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/lime
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
value = FOOD_RARE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/lime
|
||||
name = "lime cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "limecake_slice"
|
||||
filling_color = "#00FF00"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/lemon
|
||||
name = "lemon cake"
|
||||
desc = "A cake with added lemon."
|
||||
icon_state = "lemoncake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/lemon
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
value = FOOD_RARE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/lemon
|
||||
name = "lemon cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "lemoncake_slice"
|
||||
filling_color = "#FFEE00"
|
||||
tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/chocolate
|
||||
name = "chocolate cake"
|
||||
desc = "A cake with added chocolate."
|
||||
icon_state = "chocolatecake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/chocolate
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
|
||||
foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR
|
||||
value = FOOD_RARE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/chocolate
|
||||
name = "chocolate cake slice"
|
||||
desc = "Just a slice of cake, it is enough for everyone."
|
||||
icon_state = "chocolatecake_slice"
|
||||
filling_color = "#A0522D"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4)
|
||||
foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday
|
||||
name = "birthday cake"
|
||||
desc = "Happy Birthday little clown..."
|
||||
icon_state = "birthdaycake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/birthday
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 1)
|
||||
foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR
|
||||
value = FOOD_EXOTIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday/microwave_act(obj/machinery/microwave/M) //super sekrit club
|
||||
new /obj/item/clothing/head/hardhat/cakehat(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/birthday
|
||||
name = "birthday cake slice"
|
||||
desc = "A slice of your birthday."
|
||||
icon_state = "birthdaycakeslice"
|
||||
filling_color = "#DC143C"
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sprinkles = 2, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
tastes = list("cake" = 5, "sweetness" = 1)
|
||||
foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday/energy
|
||||
name = "energy cake"
|
||||
desc = "Just enough calories for a whole nuclear operative squad."
|
||||
icon_state = "energycake"
|
||||
force = 5
|
||||
hitsound = 'sound/weapons/blade1.ogg'
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/birthday/energy
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/pwr_game = 10, /datum/reagent/consumable/liquidelectricity = 10)
|
||||
tastes = list("cake" = 3, "a Vlad's Salad" = 1)
|
||||
value = FOOD_ILLEGAL
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday/energy/proc/energy_bite(mob/living/user)
|
||||
to_chat(user, "<font color='red' size='5'>As you eat the cake, you accidentally hurt yourself on the embedded energy sword!</font>")
|
||||
user.apply_damage(30,BRUTE,BODY_ZONE_HEAD)
|
||||
playsound(user, 'sound/weapons/blade1.ogg', 5, TRUE)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday/energy/attack(mob/living/M, mob/living/user)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(user, TRAIT_PACIFISM) && M != user) //Prevents pacifists from attacking others directly
|
||||
return
|
||||
energy_bite(M, user)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday/energy/microwave_act(obj/machinery/microwave/M) //super sekriter club
|
||||
new /obj/item/clothing/head/hardhat/cakehat/energycake(get_turf(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/birthday/energy
|
||||
name = "energy cake slice"
|
||||
desc = "For the traitor on the go."
|
||||
icon_state = "energycakeslice"
|
||||
force = 2
|
||||
hitsound = 'sound/weapons/blade1.ogg'
|
||||
filling_color = "#00FF00"
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sprinkles = 2, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/pwr_game = 2, /datum/reagent/consumable/liquidelectricity = 2)
|
||||
tastes = list("cake" = 3, "a Vlad's Salad" = 1)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/birthday/energy/proc/energy_bite(mob/living/user)
|
||||
to_chat(user, "<font color='red' size='5'>As you eat the cake slice, you accidentally hurt yourself on the embedded energy dagger!</font>")
|
||||
user.apply_damage(18,BRUTE,BODY_ZONE_HEAD)
|
||||
playsound(user, 'sound/weapons/blade1.ogg', 5, TRUE)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/birthday/energy/attack(mob/living/M, mob/living/user)
|
||||
. = ..()
|
||||
if(HAS_TRAIT(user, TRAIT_PACIFISM) && M != user) //Prevents pacifists from attacking others directly
|
||||
return
|
||||
energy_bite(M, user)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/apple
|
||||
name = "apple cake"
|
||||
desc = "A cake centred with Apple."
|
||||
icon_state = "applecake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/apple
|
||||
slices_num = 5
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
value = FOOD_RARE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/apple
|
||||
name = "apple cake slice"
|
||||
desc = "A slice of heavenly cake."
|
||||
icon_state = "applecakeslice"
|
||||
filling_color = "#FF4500"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/custom
|
||||
name = "cake slice"
|
||||
icon_state = "plaincake_slice"
|
||||
filling_color = "#FFFFFF"
|
||||
foodtype = GRAIN | DAIRY
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/slimecake
|
||||
name = "Slime cake"
|
||||
desc = "A cake made of slimes. Probably not electrified."
|
||||
icon_state = "slimecake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/slimecake
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1)
|
||||
foodtype = GRAIN | DAIRY | SUGAR
|
||||
value = FOOD_EXOTIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/slimecake
|
||||
name = "slime cake slice"
|
||||
desc = "A slice of slime cake."
|
||||
icon_state = "slimecake_slice"
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1)
|
||||
foodtype = GRAIN | DAIRY | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/pumpkinspice
|
||||
name = "pumpkin spice cake"
|
||||
desc = "A hollow cake with real pumpkin."
|
||||
icon_state = "pumpkinspicecake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pumpkinspice
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 5)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1)
|
||||
foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR
|
||||
value = FOOD_RARE
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/pumpkinspice
|
||||
name = "pumpkin spice cake slice"
|
||||
desc = "A spicy slice of pumpkin goodness."
|
||||
icon_state = "pumpkinspicecakeslice"
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1)
|
||||
foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/bsvc // blackberry strawberries vanilla cake
|
||||
name = "blackberry and strawberry vanilla cake"
|
||||
desc = "A plain cake, filled with assortment of blackberries and strawberries!"
|
||||
icon_state = "blackbarry_strawberries_cake_vanilla_cake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bsvc
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 14, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
tastes = list("blackberry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
value = FOOD_EXOTIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/bsvc
|
||||
name = "blackberry and strawberry vanilla cake slice"
|
||||
desc = "Just a slice of cake filled with assortment of blackberries and strawberries!"
|
||||
icon_state = "blackbarry_strawberries_cake_vanilla_slice"
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("blackberry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2,"cake" = 3)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/bscc // blackbarry strawberries chocolate cake
|
||||
name = "blackberry and strawberry chocolate cake"
|
||||
desc = "A chocolate cake, filled with assortment of blackberries and strawberries!"
|
||||
icon_state = "blackbarry_strawberries_cake_coco_cake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bscc
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 14, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/consumable/coco = 5)
|
||||
tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
value = FOOD_EXOTIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/bscc
|
||||
name = "blackberry and strawberry chocolate cake slice"
|
||||
desc = "Just a slice of cake filled with assortment of blackberries and strawberries!"
|
||||
icon_state = "blackbarry_strawberries_cake_coco_slice"
|
||||
filling_color = "#FFD700"
|
||||
tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/holy_cake
|
||||
name = "angel food cake"
|
||||
desc = "A cake made for angels and chaplains alike! Contains holy water."
|
||||
icon_state = "holy_cake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/water/holywater = 10)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1)
|
||||
foodtype = GRAIN | DAIRY | SUGAR
|
||||
value = FOOD_EXOTIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice
|
||||
name = "angel food cake slice"
|
||||
desc = "A slice of heavenly cake."
|
||||
icon_state = "holy_cake_slice"
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1)
|
||||
foodtype = GRAIN | DAIRY | SUGAR
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/pound_cake
|
||||
name = "pound cake"
|
||||
desc = "A condensed cake made for filling people up quickly."
|
||||
icon_state = "pound_cake"
|
||||
slices_num = 7 //Its ment to feed the party
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 60)
|
||||
tastes = list("cake" = 5, "sweetness" = 1, "batter" = 1)
|
||||
foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD
|
||||
value = FOOD_EXOTIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice
|
||||
name = "pound cake slice"
|
||||
desc = "A slice of condensed cake made for filling people up quickly."
|
||||
icon_state = "pound_cake_slice"
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("cake" = 5, "sweetness" = 5, "batter" = 1)
|
||||
foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/hardware_cake
|
||||
name = "hardware cake"
|
||||
desc = "A quote on quote cake that is made with electronic boards and leaks acid..."
|
||||
icon_state = "hardware_cake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice
|
||||
bonus_reagents = list(/datum/reagent/toxin/acid = 15, /datum/reagent/fuel/oil = 15)
|
||||
tastes = list("acid" = 3, "metal" = 4, "glass" = 5)
|
||||
foodtype = GRAIN | GROSS
|
||||
value = FOOD_EXOTIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice
|
||||
name = "hardware cake slice"
|
||||
desc = "A slice of electronic boards and some acid."
|
||||
icon_state = "hardware_cake_slice"
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("acid" = 3, "metal" = 4, "glass" = 5)
|
||||
foodtype = GRAIN | GROSS
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/vanilla_cake
|
||||
name = "vanilla cake"
|
||||
desc = "A vanilla frosted cake."
|
||||
icon_state = "vanillacake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice
|
||||
bonus_reagents = list(/datum/reagent/consumable/sugar = 15, /datum/reagent/consumable/vanilla = 15)
|
||||
tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10)
|
||||
foodtype = GRAIN | SUGAR | DAIRY
|
||||
value = FOOD_EXOTIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice
|
||||
name = "vanilla cake slice"
|
||||
desc = "A slice of vanilla frosted cake."
|
||||
icon_state = "vanillacake_slice"
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10)
|
||||
foodtype = GRAIN | SUGAR | DAIRY
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/clown_cake
|
||||
name = "clown cake"
|
||||
desc = "A funny cake with a clown face on it."
|
||||
icon_state = "clowncake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/clown_slice
|
||||
bonus_reagents = list(/datum/reagent/consumable/sugar = 15)
|
||||
tastes = list("cake" = 1, "sugar" = 1, "joy" = 10)
|
||||
foodtype = GRAIN | SUGAR | DAIRY
|
||||
value = FOOD_EXOTIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/clown_slice
|
||||
name = "clown cake slice"
|
||||
desc = "A slice of bad jokes, and silly props."
|
||||
icon_state = "clowncake_slice"
|
||||
filling_color = "#00FFFF"
|
||||
tastes = list("cake" = 1, "sugar" = 1, "joy" = 10)
|
||||
foodtype = GRAIN | SUGAR | DAIRY
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/trumpet
|
||||
name = "spaceman's cake"
|
||||
desc = "A spaceman's trumpet frosted cake."
|
||||
icon_state = "trumpetcake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/trumpet
|
||||
bonus_reagents = list(/datum/reagent/medicine/polypyr = 15, /datum/reagent/consumable/cream = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/berryjuice = 5)
|
||||
filling_color = "#7A3D80"
|
||||
tastes = list("cake" = 4, "violets" = 2, "jam" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
value = FOOD_EXOTIC
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/trumpet
|
||||
name = "spaceman's cake"
|
||||
desc = "A spaceman's trumpet frosted cake."
|
||||
icon_state = "trumpetcakeslice"
|
||||
filling_color = "#7A3D80"
|
||||
tastes = list("cake" = 4, "violets" = 2, "jam" = 2)
|
||||
foodtype = GRAIN | DAIRY | FRUIT | SUGAR
|
||||
@@ -6,190 +6,190 @@
|
||||
/datum/crafting_recipe/food/carrotcake
|
||||
name = "Carrot cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/carrot = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/carrot
|
||||
result = /obj/item/food/cake/carrot
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/cheesecake
|
||||
name = "Cheese cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/cheesewedge = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/cheese
|
||||
result = /obj/item/food/cake/cheese
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/applecake
|
||||
name = "Apple cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/apple = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/apple
|
||||
result = /obj/item/food/cake/apple
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/orangecake
|
||||
name = "Orange cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/orange = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/orange
|
||||
result = /obj/item/food/cake/orange
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/limecake
|
||||
name = "Lime cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/lime = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/lime
|
||||
result = /obj/item/food/cake/lime
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/lemoncake
|
||||
name = "Lemon cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/citrus/lemon = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/lemon
|
||||
result = /obj/item/food/cake/lemon
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/chocolatecake
|
||||
name = "Chocolate cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/chocolate
|
||||
result = /obj/item/food/cake/chocolate
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/birthdaycake
|
||||
name = "Birthday cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/candle = 1,
|
||||
/datum/reagent/consumable/sugar = 5,
|
||||
/datum/reagent/consumable/caramel = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/birthday
|
||||
result = /obj/item/food/cake/birthday
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/energycake
|
||||
name = "Energy cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday = 1,
|
||||
/obj/item/food/cake/birthday = 1,
|
||||
/obj/item/melee/transforming/energy/sword = 1,
|
||||
)
|
||||
blacklist = list(/obj/item/reagent_containers/food/snacks/store/cake/birthday/energy)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/birthday/energy
|
||||
blacklist = list(/obj/item/food/cake/birthday/energy)
|
||||
result = /obj/item/food/cake/birthday/energy
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/braincake
|
||||
name = "Brain cake"
|
||||
reqs = list(
|
||||
/obj/item/organ/brain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1
|
||||
/obj/item/food/cake/plain = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/brain
|
||||
result = /obj/item/food/cake/brain
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/slimecake
|
||||
name = "Slime cake"
|
||||
reqs = list(
|
||||
/obj/item/slime_extract = 1,
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1
|
||||
/obj/item/food/cake/plain = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/slimecake
|
||||
result = /obj/item/food/cake/slimecake
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/pumpkinspicecake
|
||||
name = "Pumpkin spice cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/pumpkin = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/pumpkinspice
|
||||
result = /obj/item/food/cake/pumpkinspice
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/holycake
|
||||
name = "Angel food cake"
|
||||
reqs = list(
|
||||
/datum/reagent/water/holywater = 15,
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1
|
||||
/obj/item/food/cake/plain = 1
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/holy_cake
|
||||
result = /obj/item/food/cake/holy_cake
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/poundcake
|
||||
name = "Pound cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 4
|
||||
/obj/item/food/cake/plain = 4
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/pound_cake
|
||||
result = /obj/item/food/cake/pound_cake
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/hardwarecake
|
||||
name = "Hardware cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/circuitboard = 2,
|
||||
/datum/reagent/toxin/acid = 5
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/hardware_cake
|
||||
result = /obj/item/food/cake/hardware_cake
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/bscccake
|
||||
name = "blackberry and strawberry chocolate cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/chocolatebar = 2,
|
||||
/obj/item/reagent_containers/food/snacks/grown/berries = 5
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/bscc
|
||||
result = /obj/item/food/cake/bscc
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/bscvcake
|
||||
name = "blackberry and strawberry vanilla cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/berries = 5
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/bsvc
|
||||
result = /obj/item/food/cake/bsvc
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/clowncake
|
||||
name = "clown cake"
|
||||
always_available = FALSE
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/sundae = 2,
|
||||
/obj/item/reagent_containers/food/snacks/grown/banana = 5
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/clown_cake
|
||||
result = /obj/item/food/cake/clown_cake
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/vanillacake
|
||||
name = "vanilla cake"
|
||||
always_available = FALSE
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/vanillapod = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/vanilla_cake
|
||||
result = /obj/item/food/cake/vanilla_cake
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
/datum/crafting_recipe/food/trumpetcake
|
||||
name = "Spaceman's Cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/obj/item/reagent_containers/food/snacks/grown/trumpet = 2,
|
||||
/datum/reagent/consumable/cream = 5,
|
||||
/datum/reagent/consumable/berryjuice = 5
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/trumpet
|
||||
result = /obj/item/food/cake/trumpet
|
||||
subcategory = CAT_CAKE
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
reqs = list(
|
||||
/obj/item/organ/brain = 1,
|
||||
/obj/item/organ/heart = 1,
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/birthday = 1,
|
||||
/obj/item/food/cake/birthday = 1,
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab = 3,
|
||||
/datum/reagent/blood = 30,
|
||||
/datum/reagent/consumable/sprinkles = 5,
|
||||
|
||||
@@ -180,28 +180,13 @@
|
||||
result = /obj/item/reagent_containers/food/snacks/hotcrossbun
|
||||
subcategory = CAT_MISCFOOD
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/brioche
|
||||
name = "brioche cake"
|
||||
desc = "A ring of sweet, glazed buns."
|
||||
icon_state = "briochecake"
|
||||
slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/brioche
|
||||
slices_num = 6
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cakeslice/brioche
|
||||
name = "brioche cake slice"
|
||||
desc = "Delicious sweet-bread. Who needs anything else?"
|
||||
icon_state = "briochecake_slice"
|
||||
filling_color = "#FFD700"
|
||||
|
||||
/datum/crafting_recipe/food/briochecake
|
||||
name = "Brioche cake"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/store/cake/plain = 1,
|
||||
/obj/item/food/cake/plain = 1,
|
||||
/datum/reagent/consumable/sugar = 2
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/store/cake/brioche
|
||||
result = /obj/item/food/cake/brioche
|
||||
subcategory = CAT_MISCFOOD
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/scotchegg
|
||||
|
||||
@@ -275,7 +275,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava)
|
||||
//cake + knife to cut it!
|
||||
var/turf/food_turf = get_turf(pick(table))
|
||||
new /obj/item/kitchen/knife(food_turf)
|
||||
var/obj/item/reagent_containers/food/snacks/store/cake/birthday/iancake = new(food_turf)
|
||||
var/obj/item/food/cake/birthday/iancake = new(food_turf)
|
||||
iancake.desc = "Happy birthday, Ian!"
|
||||
//some balloons! this picks an open turf and pops a few balloons in and around that turf, yay.
|
||||
for(var/i in 1 to balloon_clusters)
|
||||
|
||||
@@ -411,7 +411,8 @@
|
||||
* If the methods include VAPOR it incorporates permiability protection.
|
||||
*/
|
||||
/mob/living/expose_reagents(list/reagents, datum/reagents/source, methods=TOUCH, volume_modifier=1, show_message=TRUE)
|
||||
if((. = ..()) & COMPONENT_NO_EXPOSE_REAGENTS)
|
||||
. = ..()
|
||||
if(. & COMPONENT_NO_EXPOSE_REAGENTS)
|
||||
return
|
||||
|
||||
if(methods & INGEST)
|
||||
|
||||
@@ -258,7 +258,7 @@
|
||||
maxHealth = 50
|
||||
gender = FEMALE
|
||||
harm_intent_damage = 10
|
||||
butcher_results = list(/obj/item/organ/brain = 1, /obj/item/organ/heart = 1, /obj/item/reagent_containers/food/snacks/cakeslice/birthday = 3, \
|
||||
butcher_results = list(/obj/item/organ/brain = 1, /obj/item/organ/heart = 1, /obj/item/food/cakeslice/birthday = 3, \
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab = 2)
|
||||
response_harm_continuous = "takes a bite out of"
|
||||
response_harm_simple = "take a bite out of"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
eyeblur = 2
|
||||
impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser
|
||||
light_system = MOVABLE_LIGHT
|
||||
light_range = 2
|
||||
light_range = 1
|
||||
light_power = 1
|
||||
light_color = COLOR_SOFT_RED
|
||||
ricochets_max = 50 //Honk!
|
||||
|
||||
@@ -651,6 +651,11 @@
|
||||
tesla_zap(src, zap_range, zap_power, zap_flags)
|
||||
qdel(src)
|
||||
|
||||
/obj/projectile/magic/aoe/lightning/no_zap
|
||||
zap_power = 10000
|
||||
zap_range = 4
|
||||
zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE
|
||||
|
||||
/obj/projectile/magic/aoe/lightning/Destroy()
|
||||
qdel(chain)
|
||||
. = ..()
|
||||
|
||||
@@ -95,34 +95,31 @@ GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
|
||||
/datum/reagent/proc/expose_atom(atom/exposed_atom, reac_volume)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_ATOM, exposed_atom, reac_volume)
|
||||
SEND_SIGNAL(exposed_atom, COMSIG_ATOM_EXPOSE_REAGENT, src, reac_volume)
|
||||
return TRUE
|
||||
. = 0
|
||||
. |= SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_ATOM, exposed_atom, reac_volume)
|
||||
. |= SEND_SIGNAL(exposed_atom, COMSIG_ATOM_EXPOSE_REAGENT, src, reac_volume)
|
||||
|
||||
/// Applies this reagent to a [/mob/living]
|
||||
/datum/reagent/proc/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE, touch_protection = 0)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_MOB, exposed_mob, methods, reac_volume, show_message, touch_protection)
|
||||
. = SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_MOB, exposed_mob, methods, reac_volume, show_message, touch_protection)
|
||||
if((methods & penetrates_skin) && exposed_mob.reagents) //smoke, foam, spray
|
||||
var/amount = round(reac_volume*clamp((1 - touch_protection), 0, 1), 0.1)
|
||||
if(amount >= 0.5)
|
||||
exposed_mob.reagents.add_reagent(type, amount)
|
||||
return TRUE
|
||||
|
||||
/// Applies this reagent to an [/obj]
|
||||
/datum/reagent/proc/expose_obj(obj/exposed_obj, reac_volume)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_OBJ, exposed_obj, reac_volume)
|
||||
return TRUE
|
||||
return SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_OBJ, exposed_obj, reac_volume)
|
||||
|
||||
/// Applies this reagent to a [/turf]
|
||||
/datum/reagent/proc/expose_turf(turf/exposed_turf, reac_volume)
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
|
||||
SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_TURF, exposed_turf, reac_volume)
|
||||
return TRUE
|
||||
return SEND_SIGNAL(src, COMSIG_REAGENT_EXPOSE_TURF, exposed_turf, reac_volume)
|
||||
|
||||
/// Called from [/datum/reagents/proc/metabolize]
|
||||
/datum/reagent/proc/on_mob_life(mob/living/carbon/M)
|
||||
|
||||
@@ -414,12 +414,12 @@
|
||||
/datum/reagent/medicine/c2/synthflesh/expose_mob(mob/living/exposed_mob, methods=TOUCH, reac_volume, show_message = TRUE)
|
||||
. = ..()
|
||||
if(!iscarbon(exposed_mob))
|
||||
return TRUE
|
||||
return
|
||||
var/mob/living/carbon/carbies = exposed_mob
|
||||
if(carbies.stat == DEAD)
|
||||
show_message = 0
|
||||
if(!(methods & (PATCH|TOUCH|VAPOR)))
|
||||
return TRUE
|
||||
return
|
||||
var/harmies = min(carbies.getBruteLoss(),carbies.adjustBruteLoss(-1.25 * reac_volume)*-1)
|
||||
var/burnies = min(carbies.getFireLoss(),carbies.adjustFireLoss(-1.25 * reac_volume)*-1)
|
||||
for(var/i in carbies.all_wounds)
|
||||
@@ -432,7 +432,6 @@
|
||||
if(HAS_TRAIT_FROM(exposed_mob, TRAIT_HUSK, "burn") && carbies.getFireLoss() < THRESHOLD_UNHUSK && (carbies.reagents.get_reagent_amount(/datum/reagent/medicine/c2/synthflesh) + reac_volume >= 100))
|
||||
carbies.cure_husk("burn")
|
||||
carbies.visible_message("<span class='nicegreen'>A rubbery liquid coats [carbies]'s burns. [carbies] looks a lot healthier!") //we're avoiding using the phrases "burnt flesh" and "burnt skin" here because carbies could be a skeleton or a golem or something
|
||||
return TRUE
|
||||
|
||||
/******ORGAN HEALING******/
|
||||
/*Suffix: -rite*/
|
||||
|
||||
@@ -158,7 +158,6 @@
|
||||
addtimer(CALLBACK(exposed_mob, /mob/living/proc/unfry_mob), 3)
|
||||
if(FryLoss)
|
||||
exposed_mob.adjustFireLoss(FryLoss)
|
||||
return TRUE
|
||||
|
||||
/datum/reagent/consumable/cooking_oil/expose_turf(turf/open/exposed_turf, reac_volume)
|
||||
. = ..()
|
||||
|
||||
@@ -723,6 +723,15 @@
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
taste_mult = 0 // oderless and tasteless
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
/datum/reagent/oxygen/expose_obj(obj/exposed_obj, reac_volume)
|
||||
. = ..()
|
||||
if((!exposed_obj) || (!reac_volume))
|
||||
return
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
exposed_obj.atmos_spawn_air("o2=[reac_volume/2];TEMP=[temp]")
|
||||
>>>>>>> upstream/master
|
||||
|
||||
/datum/reagent/oxygen/expose_turf(turf/open/exposed_turf, reac_volume)
|
||||
. = ..()
|
||||
@@ -755,6 +764,16 @@
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
taste_mult = 0
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
/datum/reagent/nitrogen/expose_obj(obj/exposed_obj, reac_volume)
|
||||
. = ..()
|
||||
if((!exposed_obj) || (!reac_volume))
|
||||
return
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
exposed_obj.atmos_spawn_air("n2=[reac_volume/2];TEMP=[temp]")
|
||||
|
||||
>>>>>>> upstream/master
|
||||
/datum/reagent/nitrogen/expose_turf(turf/open/exposed_turf, reac_volume)
|
||||
if(istype(exposed_turf))
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
@@ -1255,6 +1274,16 @@
|
||||
color = "#B0B0B0" // rgb : 192, 192, 192
|
||||
taste_description = "something unknowable"
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
/datum/reagent/carbondioxide/expose_obj(obj/exposed_obj, reac_volume)
|
||||
. = ..()
|
||||
if((!exposed_obj) || (!reac_volume))
|
||||
return
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
exposed_obj.atmos_spawn_air("co2=[reac_volume/5];TEMP=[temp]")
|
||||
|
||||
>>>>>>> upstream/master
|
||||
/datum/reagent/carbondioxide/expose_turf(turf/open/exposed_turf, reac_volume)
|
||||
if(istype(exposed_turf))
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
@@ -1269,6 +1298,15 @@
|
||||
color = "#808080"
|
||||
taste_description = "sweetness"
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
/datum/reagent/nitrous_oxide/expose_obj(obj/exposed_obj, reac_volume)
|
||||
. = ..()
|
||||
if((!exposed_obj) || (!reac_volume))
|
||||
return
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
exposed_obj.atmos_spawn_air("n2o=[reac_volume/5];TEMP=[temp]")
|
||||
>>>>>>> upstream/master
|
||||
|
||||
/datum/reagent/nitrous_oxide/expose_turf(turf/open/exposed_turf, reac_volume)
|
||||
. = ..()
|
||||
|
||||
@@ -87,6 +87,17 @@
|
||||
A.atmos_spawn_air("plasma=[volume];TEMP=[holder.chem_temp]")
|
||||
holder.del_reagent(type)
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
/datum/reagent/toxin/plasma/expose_obj(obj/exposed_obj, reac_volume)
|
||||
. = ..()
|
||||
if((!exposed_obj) || (!reac_volume))
|
||||
return
|
||||
var/temp = holder ? holder.chem_temp : T20C
|
||||
if(temp >= LIQUID_PLASMA_BP)
|
||||
exposed_obj.atmos_spawn_air("plasma=[reac_volume];TEMP=[temp]")
|
||||
|
||||
>>>>>>> upstream/master
|
||||
/datum/reagent/toxin/plasma/expose_turf(turf/open/exposed_turf, reac_volume)
|
||||
if(!istype(exposed_turf))
|
||||
return
|
||||
|
||||
@@ -107,7 +107,7 @@ Charged extracts:
|
||||
effect_desc = "Creates a slime cake and some drinks."
|
||||
|
||||
/obj/item/slimecross/charged/silver/do_effect(mob/user)
|
||||
new /obj/item/reagent_containers/food/snacks/store/cake/slimecake(get_turf(user))
|
||||
new /obj/item/food/cake/slimecake(get_turf(user))
|
||||
for(var/i in 1 to 10)
|
||||
var/drink_type = get_random_drink()
|
||||
new drink_type(get_turf(user))
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
COOLDOWN_DECLARE(mecha_bump_smash)
|
||||
light_system = MOVABLE_LIGHT
|
||||
light_on = FALSE
|
||||
light_range = 4
|
||||
///What direction will the mech face when entered/powered on? Defaults to South.
|
||||
var/dir_in = SOUTH
|
||||
///How much energy the mech will consume each time it moves. This variable is a backup for when leg actuators affect the energy drain.
|
||||
@@ -257,7 +258,7 @@
|
||||
mob_occupant.update_mouse_pointer()
|
||||
|
||||
/obj/vehicle/sealed/mecha/CheckParts(list/parts_list)
|
||||
..()
|
||||
. = ..()
|
||||
cell = locate(/obj/item/stock_parts/cell) in contents
|
||||
scanmod = locate(/obj/item/stock_parts/scanning_module) in contents
|
||||
capacitor = locate(/obj/item/stock_parts/capacitor) in contents
|
||||
@@ -650,8 +651,16 @@
|
||||
if(!allow_diagonal_movement && ISDIAGONALDIR(direction))
|
||||
return TRUE
|
||||
|
||||
var/keyheld = FALSE
|
||||
if(strafe)
|
||||
for(var/D in return_drivers())
|
||||
var/mob/driver = D
|
||||
if(driver.client?.keys_held["Alt"])
|
||||
keyheld = TRUE
|
||||
break
|
||||
|
||||
//if we're not facing the way we're going rotate us
|
||||
if(dir != direction && !strafe || forcerotate)
|
||||
if(dir != direction && !strafe || forcerotate || keyheld)
|
||||
setDir(direction)
|
||||
if(turnsound)
|
||||
playsound(src,turnsound,40,TRUE)
|
||||
@@ -662,10 +671,6 @@
|
||||
. = step(src,direction, dir)
|
||||
|
||||
if(strafe)
|
||||
for(var/D in return_drivers())
|
||||
var/mob/driver = D
|
||||
if(driver.client?.keys_held["Alt"])
|
||||
return
|
||||
setDir(olddir)
|
||||
|
||||
|
||||
@@ -771,7 +776,8 @@
|
||||
to_chat(user, "<a href='?src=[REF(user)];ai_take_control=[REF(src)]'><span class='boldnotice'>Take control of exosuit?</span></a><br>")
|
||||
|
||||
/obj/vehicle/sealed/mecha/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card)
|
||||
if(!..())
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
|
||||
//Transfer from core or card to mech. Proc is called by mech.
|
||||
@@ -796,15 +802,15 @@
|
||||
AI.remote_control = null
|
||||
to_chat(AI, "<span class='notice'>You have been downloaded to a mobile storage device. Wireless connection offline.</span>")
|
||||
to_chat(user, "<span class='boldnotice'>Transfer successful</span>: [AI.name] ([rand(1000,9999)].exe) removed from [name] and stored within local memory.")
|
||||
return
|
||||
|
||||
if(AI_MECH_HACK) //Called by AIs on the mech
|
||||
AI.linked_core = new /obj/structure/ai_core/deactivated(AI.loc)
|
||||
if(AI.can_dominate_mechs)
|
||||
if(LAZYLEN(occupants)) //Oh, I am sorry, were you using that?
|
||||
to_chat(AI, "<span class='warning'>Occupants detected! Forced ejection initiated!</span>")
|
||||
to_chat(occupants, "<span class='danger'>You have been forcibly ejected!</span>")
|
||||
ejectall() //IT IS MINE, NOW. SUCK IT, RD!
|
||||
ai_enter_mech(AI, interaction)
|
||||
if(AI.can_dominate_mechs && LAZYLEN(occupants)) //Oh, I am sorry, were you using that?
|
||||
to_chat(AI, "<span class='warning'>Occupants detected! Forced ejection initiated!</span>")
|
||||
to_chat(occupants, "<span class='danger'>You have been forcibly ejected!</span>")
|
||||
ejectall() //IT IS MINE, NOW. SUCK IT, RD!
|
||||
AI.can_shunt = FALSE //ONE AI ENTERS. NO AI LEAVES.
|
||||
|
||||
if(AI_TRANS_FROM_CARD) //Using an AI card to upload to a mech.
|
||||
AI = card.AI
|
||||
@@ -823,10 +829,10 @@
|
||||
AI.radio_enabled = TRUE
|
||||
to_chat(user, "<span class='boldnotice'>Transfer successful</span>: [AI.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed.")
|
||||
card.AI = null
|
||||
ai_enter_mech(AI, interaction)
|
||||
ai_enter_mech(AI)
|
||||
|
||||
//Hack and From Card interactions share some code, so leave that here for both to use.
|
||||
/obj/vehicle/sealed/mecha/proc/ai_enter_mech(mob/living/silicon/ai/AI, interaction)
|
||||
/obj/vehicle/sealed/mecha/proc/ai_enter_mech(mob/living/silicon/ai/AI)
|
||||
AI.ai_restore_power()
|
||||
mecha_flags |= SILICON_PILOT
|
||||
moved_inside(AI)
|
||||
@@ -834,8 +840,6 @@
|
||||
AI.controlled_mech = src
|
||||
AI.remote_control = src
|
||||
AI.mobility_flags = ALL //Much easier than adding AI checks! Be sure to set this back to 0 if you decide to allow an AI to leave a mech somehow.
|
||||
if(interaction == AI_MECH_HACK)
|
||||
AI.can_shunt = FALSE //ONE AI ENTERS. NO AI LEAVES.
|
||||
to_chat(AI, AI.can_dominate_mechs ? "<span class='announce'>Takeover of [name] complete! You are now loaded onto the onboard computer. Do not attempt to leave the station sector!</span>" :\
|
||||
"<span class='notice'>You have been uploaded to a mech's onboard computer.</span>")
|
||||
to_chat(AI, "<span class='reallybig boldnotice'>Use Middle-Mouse to activate mech functions and equipment. Click normally for AI interactions.</span>")
|
||||
@@ -939,21 +943,20 @@
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_view_stats)
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/strafe)
|
||||
|
||||
/obj/vehicle/sealed/mecha/proc/moved_inside(mob/living/H)
|
||||
. = FALSE
|
||||
if(!(H?.client))
|
||||
return
|
||||
if(ishuman(H) && !Adjacent(H))
|
||||
return
|
||||
add_occupant(H)
|
||||
H.forceMove(src)
|
||||
H.update_mouse_pointer()
|
||||
add_fingerprint(H)
|
||||
log_message("[H] moved in as pilot.", LOG_MECHA)
|
||||
/obj/vehicle/sealed/mecha/proc/moved_inside(mob/living/newoccupant)
|
||||
if(!(newoccupant?.client))
|
||||
return FALSE
|
||||
if(ishuman(newoccupant) && !Adjacent(newoccupant))
|
||||
return FALSE
|
||||
add_occupant(newoccupant)
|
||||
newoccupant.forceMove(src)
|
||||
newoccupant.update_mouse_pointer()
|
||||
add_fingerprint(newoccupant)
|
||||
log_message("[newoccupant] moved in as pilot.", LOG_MECHA)
|
||||
setDir(dir_in)
|
||||
playsound(src, 'sound/machines/windowdoor.ogg', 50, TRUE)
|
||||
if(!internal_damage)
|
||||
SEND_SOUND(H, sound('sound/mecha/nominal.ogg',volume=50))
|
||||
SEND_SOUND(newoccupant, sound('sound/mecha/nominal.ogg',volume=50))
|
||||
return TRUE
|
||||
|
||||
/obj/vehicle/sealed/mecha/proc/mmi_move_inside(obj/item/mmi/M, mob/user)
|
||||
@@ -997,7 +1000,6 @@
|
||||
B.remote_control = src
|
||||
B.update_mobility()
|
||||
B.update_mouse_pointer()
|
||||
update_icon()
|
||||
setDir(dir_in)
|
||||
log_message("[M] moved in as pilot.", LOG_MECHA)
|
||||
if(!internal_damage)
|
||||
@@ -1067,7 +1069,6 @@
|
||||
mmi.mecha = null
|
||||
mmi.update_icon()
|
||||
L.mobility_flags = NONE
|
||||
update_icon()
|
||||
setDir(dir_in)
|
||||
return ..()
|
||||
|
||||
@@ -1076,21 +1077,21 @@
|
||||
RegisterSignal(M, COMSIG_MOB_DEATH, .proc/mob_exit)
|
||||
RegisterSignal(M, COMSIG_MOB_CLICKON, .proc/on_mouseclick)
|
||||
RegisterSignal(M, COMSIG_MOB_SAY, .proc/display_speech_bubble)
|
||||
. = ..()
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
/obj/vehicle/sealed/mecha/remove_occupant(mob/M)
|
||||
UnregisterSignal(M, COMSIG_MOB_DEATH)
|
||||
UnregisterSignal(M, COMSIG_MOB_CLICKON)
|
||||
UnregisterSignal(M, COMSIG_MOB_SAY)
|
||||
update_icon()
|
||||
M.clear_alert("charge")
|
||||
M.clear_alert("mech damage")
|
||||
if(M.client)
|
||||
M.update_mouse_pointer()
|
||||
M.client.view_size.resetToDefault()
|
||||
zoom_mode = 0
|
||||
return ..()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/////////////////////////
|
||||
////// Access stuff /////
|
||||
|
||||
@@ -373,7 +373,7 @@
|
||||
return TRUE
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/ripleyupgrade/attach(obj/vehicle/sealed/mecha/M)
|
||||
var/obj/vehicle/sealed/mecha/working/ripley/mkii/N = new /obj/vehicle/sealed/mecha/working/ripley/mkii(get_turf(M),1)
|
||||
var/obj/vehicle/sealed/mecha/working/ripley/mk2/N = new (get_turf(M),1)
|
||||
if(!N)
|
||||
return
|
||||
QDEL_NULL(N.cell)
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
if(kickback)
|
||||
chassis.newtonian_move(newtonian_target)
|
||||
chassis.log_message("Fired from [src.name], targeting [target].", LOG_MECHA)
|
||||
return ..()
|
||||
return
|
||||
|
||||
//Base energy weapon type
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
/obj/item/mecha_parts/part/ripley_left_leg,
|
||||
/obj/item/mecha_parts/part/ripley_right_leg)
|
||||
|
||||
/obj/structure/mecha_wreckage/ripley/mkii
|
||||
/obj/structure/mecha_wreckage/ripley/mk2
|
||||
name = "\improper Ripley MK-II wreckage"
|
||||
icon_state = "ripleymkii-broken"
|
||||
|
||||
|
||||
@@ -30,13 +30,12 @@
|
||||
. = ..()
|
||||
update_pressure()
|
||||
|
||||
/obj/vehicle/sealed/mecha/working/ripley/mob_exit(mob/M, silent, forced)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/vehicle/sealed/mecha/working/ripley/moved_inside(mob/living/carbon/human/H)
|
||||
..()
|
||||
update_icon()
|
||||
/obj/vehicle/sealed/mecha/working/ripley/generate_actions() //isnt allowed to have internal air
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_eject)
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_cycle_equip)
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_toggle_lights)
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_view_stats)
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/strafe)
|
||||
|
||||
/obj/vehicle/sealed/mecha/working/ripley/check_for_internal_damage(list/possible_int_damage, ignore_threshold = FALSE)
|
||||
if (!enclosed)
|
||||
@@ -55,7 +54,7 @@
|
||||
cargo.Cut()
|
||||
return ..()
|
||||
|
||||
/obj/vehicle/sealed/mecha/working/ripley/mkii
|
||||
/obj/vehicle/sealed/mecha/working/ripley/mk2
|
||||
desc = "Autonomous Power Loader Unit MK-II. This prototype Ripley is refitted with a pressurized cabin, trading its prior speed for atmospheric protection and armor."
|
||||
name = "\improper APLU MK-II \"Ripley\""
|
||||
icon_state = "ripleymkii"
|
||||
@@ -65,11 +64,18 @@
|
||||
max_temperature = 30000
|
||||
max_integrity = 250
|
||||
armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 30, BOMB = 60, BIO = 0, RAD = 70, FIRE = 100, ACID = 100)
|
||||
wreckage = /obj/structure/mecha_wreckage/ripley/mkii
|
||||
wreckage = /obj/structure/mecha_wreckage/ripley/mk2
|
||||
enclosed = TRUE
|
||||
enter_delay = 40
|
||||
silicon_icon_state = null
|
||||
|
||||
/obj/vehicle/sealed/mecha/working/ripley/mk2/generate_actions()
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_eject)
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_toggle_internals)
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_cycle_equip)
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_toggle_lights)
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/mech_view_stats)
|
||||
initialize_passenger_action_type(/datum/action/vehicle/sealed/mecha/strafe)
|
||||
|
||||
/obj/vehicle/sealed/mecha/working/ripley/deathripley
|
||||
desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE"
|
||||
|
||||
@@ -91,9 +91,12 @@
|
||||
user.put_in_hands(inserted_key)
|
||||
inserted_key = null
|
||||
|
||||
/obj/vehicle/sealed/obj_destruction(damage_flag)
|
||||
explosion(loc, 0, 1, 2, 3, 0)
|
||||
return ..()
|
||||
|
||||
/obj/vehicle/sealed/Destroy()
|
||||
DumpMobs()
|
||||
explosion(loc, 0, 1, 2, 3, 0)
|
||||
return ..()
|
||||
|
||||
/obj/vehicle/sealed/proc/DumpMobs(randomstep = TRUE)
|
||||
|
||||
@@ -50,7 +50,7 @@ MULTIPLICATIVE_MOVESPEED /mob/living/simple_animal 0
|
||||
|
||||
## NAMES ###
|
||||
## If uncommented this adds a random surname to a player's name if they only specify one name.
|
||||
#HUMANS_NEED_SURNAMES
|
||||
HUMANS_NEED_SURNAMES
|
||||
|
||||
## If uncommented, this forces all players to use random names !and appearances!.
|
||||
#FORCE_RANDOM_NAMES
|
||||
|
||||
+23
-77
@@ -51,6 +51,29 @@
|
||||
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">07 September 2020</h2>
|
||||
<h3 class="author">CRITAWAKETS updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Nanotrasen has updated the cooling setup of telecommunications rooms in Delta-Pattern Stations. It now makes the simulation faster.</li>
|
||||
</ul>
|
||||
<h3 class="author">Dennok updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">passive gate max out limit pressure settings increased</li>
|
||||
<li class="tweak">passive gate description more precise</li>
|
||||
</ul>
|
||||
<h3 class="author">Maurukas updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Cryo cells work again and are no longer permanent icy prisons</li>
|
||||
</ul>
|
||||
<h3 class="author">Timberpoes updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">Reduced Diagnostics nanite program has been removed.</li>
|
||||
<li class="rscadd">Nanite Debugging nanite program has been added. This program causes your nanites to display their program list when scanned, but comes with a 0.1/s nanite cost.</li>
|
||||
<li class="tweak">Reduced Diagnostics nanite program functionality is now default behaviour. The nanite program list is hidden from nanite scanners by default. You now now to include the Nanite Debugging program to show the program list on scan.</li>
|
||||
<li class="tweak">Researching Harmonic Nanite Programming now confers a passive boost of 0.1 regen rate to all nanite clouds. This boost takes effects as soon as the node is researched.</li>
|
||||
<li class="tweak">Harmonic Nanite Programming research node now requires 3000 General and 3000 Nanite research, an increase of 1000 each.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">06 September 2020</h2>
|
||||
<h3 class="author">Bumtickley00 updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
@@ -2819,83 +2842,6 @@
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">The thermal vision modules found on certain Syndicate cyborgs is functional once more.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">06 July 2020</h2>
|
||||
<h3 class="author">ATHATH updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="balance">The default chem capacity of most grown plants is now 100u.</li>
|
||||
</ul>
|
||||
<h3 class="author">Anturk + Arm + other summer ball contributors code, trollbreeder + fikou + jerryderpington mapping updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Mafia minigame added for ghosts</li>
|
||||
</ul>
|
||||
<h3 class="author">ArcaneMusic updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Vend-A-Trays are now operated through a UI.</li>
|
||||
</ul>
|
||||
<h3 class="author">Arkatos updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Jukebox now uses tgui.</li>
|
||||
<li class="tweak">You can now set a volume of a jukebox songs.</li>
|
||||
</ul>
|
||||
<h3 class="author">Disco updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">[Icebox] SM exterior cooling pipes have had unnecessary thermal shielding removed</li>
|
||||
</ul>
|
||||
<h3 class="author">EdgeLordExe updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added Extreme Medcine Allergy, a new quirk that gives you 2 points!</li>
|
||||
<li class="bugfix">CHEMS METABOLIZE AGAIN</li>
|
||||
</ul>
|
||||
<h3 class="author">Inept, KathyRyals updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">A few minor map fixes, hot from the oven.</li>
|
||||
</ul>
|
||||
<h3 class="author">Jay Smith & Michael Trauf updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Portable Chemical Mixer (Requires a vortex anomaly core to activate)</li>
|
||||
<li class="imageadd">Unique sprites for the Portable Chemical Mixer</li>
|
||||
<li class="code_imp">Added Portable Chemical Mixer to the Medical Techfab</li>
|
||||
</ul>
|
||||
<h3 class="author">LemonInTheDark updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Contaminated objects will now glow bright green until cleaned, remember to quarantine rouge free golems.</li>
|
||||
<li class="tweak">Buffed rad goggles in general, the text lasts longer, is brighter, and will show more then twice as far away</li>
|
||||
<li class="bugfix">Fixed the text from radiation goggles not showing above mobs</li>
|
||||
<li class="tweak">The APC control console is now tgui rather then html. It should be a lot more usable. I've made other changes, you won't notice.</li>
|
||||
</ul>
|
||||
<h3 class="author">Melbert updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Brain Tumor damage is now paused when in stasis.</li>
|
||||
<li class="tweak">Brain Tumor damage is now paused when having Mannitol metabolizing in you.</li>
|
||||
<li class="rscadd">Brain Tumor quirk users will now spawn with a pill bottle containing 4 x 5u Mannitol pills.</li>
|
||||
</ul>
|
||||
<h3 class="author">MrDoomBringer / Ryll-Ryll updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="admin">Admins can now add shrapnel clouds of any projectile they desire to supplypods launched with the Config/Launch Supplypod menu!</li>
|
||||
</ul>
|
||||
<h3 class="author">Ryll/Shaps updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Bubblegum and Legion can no longer cause wounds, as intended</li>
|
||||
</ul>
|
||||
<h3 class="author">ShizCalev updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="spellcheck">Fixed a few awkward messages related to igniting items.</li>
|
||||
<li class="bugfix">Info messages are now slightly brighter than notification messages when using dark mode.</li>
|
||||
</ul>
|
||||
<h3 class="author">Skoglol updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscdel">BoxStation has been removed in favor of IceBox.</li>
|
||||
</ul>
|
||||
<h3 class="author">Timberpoes & Kathy Ryals updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">The Bluespace Locator now uses TGUI.</li>
|
||||
</ul>
|
||||
<h3 class="author">Wayland-Smithy updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">New alien larva spawn tips!</li>
|
||||
<li class="tweak">Alien Queens are now easier to distinguish over hivemind communication similar to a Blob Overmind.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<b>GoonStation 13 Development Team</b>
|
||||
|
||||
@@ -42719,3 +42719,25 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
tralezab:
|
||||
- bugfix: You can no longer earn achievements in debug mafia games.
|
||||
- refactor: And the achievement code is much nicer :)
|
||||
2020-09-07:
|
||||
CRITAWAKETS:
|
||||
- tweak: Nanotrasen has updated the cooling setup of telecommunications rooms in
|
||||
Delta-Pattern Stations. It now makes the simulation faster.
|
||||
Dennok:
|
||||
- tweak: passive gate max out limit pressure settings increased
|
||||
- tweak: passive gate description more precise
|
||||
Maurukas:
|
||||
- bugfix: Cryo cells work again and are no longer permanent icy prisons
|
||||
Timberpoes:
|
||||
- rscdel: Reduced Diagnostics nanite program has been removed.
|
||||
- rscadd: Nanite Debugging nanite program has been added. This program causes your
|
||||
nanites to display their program list when scanned, but comes with a 0.1/s nanite
|
||||
cost.
|
||||
- tweak: Reduced Diagnostics nanite program functionality is now default behaviour.
|
||||
The nanite program list is hidden from nanite scanners by default. You now now
|
||||
to include the Nanite Debugging program to show the program list on scan.
|
||||
- tweak: Researching Harmonic Nanite Programming now confers a passive boost of
|
||||
0.1 regen rate to all nanite clouds. This boost takes effects as soon as the
|
||||
node is researched.
|
||||
- tweak: Harmonic Nanite Programming research node now requires 3000 General and
|
||||
3000 Nanite research, an increase of 1000 each.
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
author: "Timberpoes"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscdel: "Reduced Diagnostics nanite program has been removed."
|
||||
- rscadd: "Nanite Debugging nanite program has been added. This program causes your nanites to display their program list when scanned, but comes with a 0.1/s nanite cost."
|
||||
- tweak: "Reduced Diagnostics nanite program functionality is now default behaviour. The nanite program list is hidden from nanite scanners by default. You now now to include the Nanite Debugging program to show the program list on scan."
|
||||
- tweak: "Researching Harmonic Nanite Programming now confers a passive boost of 0.1 regen rate to all nanite clouds. This boost takes effects as soon as the node is researched."
|
||||
- tweak: "Harmonic Nanite Programming research node now requires 3000 General and 3000 Nanite research, an increase of 1000 each."
|
||||
@@ -0,0 +1,6 @@
|
||||
author: "floyd"
|
||||
delete-after: True
|
||||
changes:
|
||||
- code_imp: "moved cakes to newfood code"
|
||||
- balance: "i fucked up some food lists because i misunderstood them, thats now fixed."
|
||||
- code_imp: "edible component now properly handles transfering reagents on processing, microwaving and crafting"
|
||||
@@ -0,0 +1,5 @@
|
||||
author: "Shirbu"
|
||||
delete-after: True
|
||||
changes:
|
||||
- balance: "nightmares can now dodge beam projectiles on dark tiles"
|
||||
- tweak: "lasers', emitters', and disablers' projectiles, now emit light only on their own tile, instead of a 3x3 square"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Dennok"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "pipes should be displayed in a fixed order"
|
||||
@@ -0,0 +1,11 @@
|
||||
author: "Ghilker"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Ligthing aoe projectile now have a no_stun version for the boss rank"
|
||||
- rscadd: "Crystal mobs have TRAIT_TESLA_SHOCKIMMUNE to prevent boss from hurting himself and the other crystal mobs"
|
||||
- rscadd: "Revamped mode, announced main portals with location, close them to be able to stabilize the SM"
|
||||
- balance: "Balanced mobs spawn from portal and how much damage they deal"
|
||||
- bugfix: "Fixed grammar stuff on crystal consume announcement"
|
||||
- tweak: "Lowered time needed to use the crystal stabilizer to 7 second total"
|
||||
- refactor: "Refractored code so that the more_portals() proc gets called by the event instead of a CALLBACK"
|
||||
- code_imp: "Added check at start of event for presence of the supermatter crystal"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "YPOQ"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "The arena shuttle no longer teleports people into space."
|
||||
@@ -0,0 +1,8 @@
|
||||
author: "TiviPlus"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "fixed mech icons and lights"
|
||||
- bugfix: "Made strafe behavior better"
|
||||
- bugfix: "fixed mechs exploding"
|
||||
- bugfix: "fixed mech weapon cooldowns being inconsistent"
|
||||
- code_imp: "cleaned up mech code some more"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "CoffeeDragon16"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Announcements now correctly read Mother Russia Bleeds"
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "Jared-Fogle"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "The crashed ship ruin now has proper meat."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: "TemporalOroboros"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Chemicals now properly acknowledge exposure. Water is wet again, synthflesh will now apply properly, space lube will now properly make floors slippery again, etc."
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 35 KiB |
+3
-1
@@ -164,6 +164,8 @@
|
||||
#include "code\__HELPERS\sanitize_values.dm"
|
||||
#include "code\__HELPERS\shell.dm"
|
||||
#include "code\__HELPERS\stat_tracking.dm"
|
||||
#include "code\__HELPERS\string_assoc_lists.dm"
|
||||
#include "code\__HELPERS\string_lists.dm"
|
||||
#include "code\__HELPERS\text.dm"
|
||||
#include "code\__HELPERS\time.dm"
|
||||
#include "code\__HELPERS\type2type.dm"
|
||||
@@ -1082,6 +1084,7 @@
|
||||
#include "code\game\objects\items\food\_food.dm"
|
||||
#include "code\game\objects\items\food\bread.dm"
|
||||
#include "code\game\objects\items\food\burgers.dm"
|
||||
#include "code\game\objects\items\food\cake.dm"
|
||||
#include "code\game\objects\items\grenades\antigravity.dm"
|
||||
#include "code\game\objects\items\grenades\chem_grenade.dm"
|
||||
#include "code\game\objects\items\grenades\clusterbuster.dm"
|
||||
@@ -1927,7 +1930,6 @@
|
||||
#include "code\modules\food_and_drinks\food\condiment.dm"
|
||||
#include "code\modules\food_and_drinks\food\customizables.dm"
|
||||
#include "code\modules\food_and_drinks\food\snacks.dm"
|
||||
#include "code\modules\food_and_drinks\food\snacks_cake.dm"
|
||||
#include "code\modules\food_and_drinks\food\snacks_egg.dm"
|
||||
#include "code\modules\food_and_drinks\food\snacks_frozen.dm"
|
||||
#include "code\modules\food_and_drinks\food\snacks_meat.dm"
|
||||
|
||||
Reference in New Issue
Block a user