Merge remote-tracking branch 'upstream/master' into plumbingfixesrev2

This commit is contained in:
ArcaneMusic
2020-09-07 16:57:20 -04:00
97 changed files with 4093 additions and 3426 deletions
@@ -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"
},
+2 -2
View File
@@ -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" = (
+153 -162
View File
@@ -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
+1 -1
View File
@@ -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" = (
+1 -1
View File
@@ -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,
+7 -7
View File
@@ -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" = (
+1 -1
View File
@@ -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
+1
View File
@@ -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
+6
View File
@@ -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)
+4
View File
@@ -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))
+3 -3
View File
@@ -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
+8
View File
@@ -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)
-10
View File
@@ -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
+15
View File
@@ -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
View File
@@ -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()
+18
View File
@@ -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
+14
View File
@@ -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
+2 -2
View File
@@ -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,
+17
View File
@@ -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,
+114 -8
View File
@@ -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
+13
View File
@@ -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
View File
@@ -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)
+12 -3
View File
@@ -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
+21 -28
View File
@@ -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
+29 -29
View File
@@ -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
+453
View File
@@ -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)
+2 -1
View File
@@ -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)
+2 -1
View File
@@ -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)
+2 -1
View File
@@ -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
+3 -5
View File
@@ -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)
+1 -1
View File
@@ -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"
+2 -2
View File
@@ -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"
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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")
+220 -88
View File
@@ -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."
+1 -1
View File
@@ -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,
+2 -17
View File
@@ -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
+1 -1
View File
@@ -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)
+2 -1
View File
@@ -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"
+1 -1
View File
@@ -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)
. = ..()
+6 -9
View File
@@ -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))
+35 -34
View File
@@ -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"
+15 -9
View File
@@ -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"
+4 -1
View File
@@ -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)
+1 -1
View File
@@ -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
View File
@@ -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>
+22
View File
@@ -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
View File
@@ -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"