diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 2a59f345d4..5cf1c188d8 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -48,8 +48,8 @@
/obj/machinery/portable_atmospherics/canister/phoron
name = "Canister \[Phoron\]"
- icon_state = "orange"
- canister_color = "orange"
+ icon_state = "orangeps"
+ canister_color = "orangeps"
can_label = 0
/obj/machinery/portable_atmospherics/canister/carbon_dioxide
@@ -77,8 +77,8 @@
canister_color = "blue"
/obj/machinery/portable_atmospherics/canister/empty/phoron
name = "Canister \[Phoron\]"
- icon_state = "orange"
- canister_color = "orange"
+ icon_state = "orangeps"
+ canister_color = "orangeps"
/obj/machinery/portable_atmospherics/canister/empty/nitrogen
name = "Canister \[N2\]"
icon_state = "red"
@@ -348,7 +348,7 @@ update_flag
"\[N2O\]" = "redws", \
"\[N2\]" = "red", \
"\[O2\]" = "blue", \
- "\[Phoron\]" = "orange", \
+ "\[Phoron\]" = "purple", \
"\[CO2\]" = "black", \
"\[Air\]" = "grey", \
"\[CAUTION\]" = "yellow", \
diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
index 216e2e59d0..c480d2dd16 100644
--- a/code/game/objects/items/devices/radio/intercom.dm
+++ b/code/game/objects/items/devices/radio/intercom.dm
@@ -35,12 +35,12 @@
/obj/item/device/radio/intercom/department/medbay
name = "station intercom (Medbay)"
- icon_state = "secintercom"
+ icon_state = "medintercom"
frequency = MED_I_FREQ
/obj/item/device/radio/intercom/department/security
name = "station intercom (Security)"
- icon_state = "medintercom"
+ icon_state = "secintercom"
frequency = SEC_I_FREQ
/obj/item/device/radio/intercom/entertainment
diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm
index fb924bc9c4..5b1e33e5fd 100644
--- a/code/game/objects/random/random.dm
+++ b/code/game/objects/random/random.dm
@@ -839,4 +839,60 @@ var/list/random_useful_
random_junk_ -= /obj/item/trash/tray
return pick(random_junk_)
// Misc. actually useful stuff
- return get_random_useful_type()
\ No newline at end of file
+ return get_random_useful_type()
+
+/*
+ Selects one spawn point out of a group of points with the same ID and asks it to generate its items
+*/
+var/list/multi_point_spawns
+
+/obj/random_multi
+ name = "random object spawn point"
+ desc = "This item type is used to spawn random objects at round-start. Only one spawn point for a given group id is selected."
+ icon = 'icons/misc/mark.dmi'
+ icon_state = "x3"
+ invisibility = INVISIBILITY_MAXIMUM
+ var/id // Group id
+ var/weight // Probability weight for this spawn point
+
+/obj/random_multi/initialize()
+ ..()
+ weight = max(1, round(weight))
+
+ if(!multi_point_spawns)
+ multi_point_spawns = list()
+ var/list/spawnpoints = multi_point_spawns[id]
+ if(!spawnpoints)
+ spawnpoints = list()
+ multi_point_spawns[id] = spawnpoints
+ spawnpoints[src] = weight
+
+/obj/random_multi/Destroy()
+ var/list/spawnpoints = multi_point_spawns[id]
+ spawnpoints -= src
+ if(!spawnpoints.len)
+ multi_point_spawns -= id
+ . = ..()
+
+/obj/random_multi/proc/generate_items()
+ return
+
+/obj/random_multi/single_item
+ var/item_path // Item type to spawn
+
+/obj/random_multi/single_item/generate_items()
+ new item_path(loc)
+
+/hook/roundstart/proc/generate_multi_spawn_items()
+ for(var/id in multi_point_spawns)
+ var/list/spawn_points = multi_point_spawns[id]
+ var/obj/random_multi/rm = pickweight(spawn_points)
+ rm.generate_items()
+ for(var/entry in spawn_points)
+ qdel(entry)
+ return 1
+
+/obj/random_multi/single_item/captains_spare_id
+ name = "Multi Point - Captain's Spare"
+ id = "Captain's spare id"
+ item_path = /obj/item/weapon/card/id/captains_spare
\ No newline at end of file
diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm
index 9b731a0fa8..1bfd559b9c 100644
--- a/code/game/objects/structures/flora.dm
+++ b/code/game/objects/structures/flora.dm
@@ -92,10 +92,6 @@
icon = 'icons/obj/plants.dmi'
icon_state = "plant-26"
-/obj/structure/flora/pottedplant/xmas/New()
- ..()
- icon_state = "plant-xmas"
-
//newbushes
@@ -218,4 +214,149 @@
name = "hanging skeleton model"
icon = 'icons/obj/plants.dmi'
icon_state = "hangskele"
- desc = "It's an anatomical model of a human skeletal system made of plaster."
\ No newline at end of file
+ desc = "It's an anatomical model of a human skeletal system made of plaster."
+
+
+//potted plants credit: Flashkirby
+/obj/structure/flora/pottedplant
+ name = "potted plant"
+ desc = "Really brings the room together."
+ icon = 'icons/obj/plants.dmi'
+ icon_state = "plant-01"
+
+/obj/structure/flora/pottedplant/large
+ name = "large potted plant"
+ desc = "This is a large plant. Three branches support pairs of waxy leaves."
+ icon_state = "plant-26"
+
+/obj/structure/flora/pottedplant/fern
+ name = "potted fern"
+ desc = "This is an ordinary looking fern. It looks like it could do with some water."
+ icon_state = "plant-02"
+
+/obj/structure/flora/pottedplant/overgrown
+ name = "overgrown potted plants"
+ desc = "This is an assortment of colourful plants. Some parts are overgrown."
+ icon_state = "plant-03"
+
+/obj/structure/flora/pottedplant/bamboo
+ name = "potted bamboo"
+ desc = "These are bamboo shoots. The tops looks like they've been cut short."
+ icon_state = "plant-04"
+
+/obj/structure/flora/pottedplant/largebush
+ name = "large potted bush"
+ desc = "This is a large bush. The leaves stick upwards in an odd fashion."
+ icon_state = "plant-05"
+
+/obj/structure/flora/pottedplant/thinbush
+ name = "thin potted bush"
+ desc = "This is a thin bush. It appears to be flowering."
+ icon_state = "plant-06"
+
+/obj/structure/flora/pottedplant/mysterious
+ name = "mysterious potted bulbs"
+ desc = "This is a mysterious looking plant. Touching the bulbs cause them to shrink."
+ icon_state = "plant-07"
+
+/obj/structure/flora/pottedplant/smalltree
+ name = "small potted tree"
+ desc = "This is a small tree. It is rather pleasant."
+ icon_state = "plant-08"
+
+/obj/structure/flora/pottedplant/unusual
+ name = "unusual potted plant"
+ desc = "This is an unusual plant. It's bulbous ends emit a soft blue light."
+ icon_state = "plant-09"
+ set_light(l_range = 1, l_power = 0.5, l_color = "#0000FF")
+
+/obj/structure/flora/pottedplant/orientaltree
+ name = "potted oriental tree"
+ desc = "This is a rather oriental style tree. It's flowers are bright pink."
+ icon_state = "plant-10"
+
+/obj/structure/flora/pottedplant/smallcactus
+ name = "small potted cactus"
+ desc = "This is a small cactus. Its needles are sharp."
+ icon_state = "plant-11"
+
+/obj/structure/flora/pottedplant/tall
+ name = "tall potted plant"
+ desc = "This is a tall plant. Tiny pores line its surface."
+ icon_state = "plant-12"
+
+/obj/structure/flora/pottedplant/sticky
+ name = "styicky potted plant"
+ desc = "This is an odd plant. Its sticky leaves trap insects."
+ icon_state = "plant-13"
+
+/obj/structure/flora/pottedplant/smelly
+ name = "smelly potted plant"
+ desc = "This is some kind of tropical plant. It reeks of rotten eggs."
+ icon_state = "plant-14"
+
+/obj/structure/flora/pottedplant/small
+ name = "small potted plant"
+ desc = "This is a pot of assorted small flora. Some look familiar."
+ icon_state = "plant-15"
+
+/obj/structure/flora/pottedplant/aquatic
+ name = "aquatic potted plant"
+ desc = "This is apparently an aquatic plant. It's probably fake."
+ icon_state = "plant-16"
+
+/obj/structure/flora/pottedplant/shoot
+ name = "small potted shoot"
+ desc = "This is a small shoot. It still needs time to grow."
+ icon_state = "plant-17"
+
+/obj/structure/flora/pottedplant/flower
+ name = "potted flower"
+ desc = "This is a slim plant. Sweet smelling flowers are supported by spindly stems."
+ icon_state = "plant-18"
+
+/obj/structure/flora/pottedplant/crystal
+ name = "crystalline potted plant"
+ desc = "These are rather cubic plants. Odd crystal formations grow on the end."
+ icon_state = "plant-19"
+
+/obj/structure/flora/pottedplant/subterranean
+ name = "subterranean potted plant"
+ desc = "This is a subterranean plant. It's bulbous ends glow faintly."
+ icon_state = "plant-20"
+ set_light(l_range = 1, l_power = 0.5, l_color = "#FF6633")
+
+/obj/structure/flora/pottedplant/minitree
+ name = "potted tree"
+ desc = "This is a miniature tree. Apparently it was grown to 1/5 scale."
+ icon_state = "plant-21"
+
+/obj/structure/flora/pottedplant/stoutbush
+ name = "stout potted bush"
+ desc = "This is a stout bush. Its leaves point up and outwards."
+ icon_state = "plant-22"
+
+/obj/structure/flora/pottedplant/drooping
+ name = "drooping potted plant"
+ desc = "This is a small plant. The drooping leaves make it look like its wilted."
+ icon_state = "plant-23"
+
+/obj/structure/flora/pottedplant/tropical
+ name = "tropical potted plant"
+ desc = "This is some kind of tropical plant. It hasn't begun to flower yet."
+ icon_state = "plant-24"
+
+/obj/structure/flora/pottedplant/dead
+ name = "dead potted plant"
+ desc = "This is the dried up remains of a dead plant. Someone should replace it."
+ icon_state = "plant-25"
+
+/obj/structure/flora/pottedplant/decorative
+ name = "decorative potted plant"
+ desc = "This is a decorative shrub. It's been trimmed into the shape of an apple."
+ icon_state = "applebush"
+
+/obj/structure/flora/pottedplant/xmas
+ name = "small christmas tree"
+ desc = "This is a tiny well lit decorative christmas tree."
+ icon_state = "plant-xmas"
\ No newline at end of file
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index e8ce8bfb1c..5fed1a3577 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -122,6 +122,108 @@
desc = "A warning sign which reads 'NO SMOKING'."
icon_state = "nosmoking2"
+/obj/structure/sign/warning
+ name = "\improper WARNING"
+ icon_state = "securearea"
+
+/obj/structure/sign/warning/New()
+ ..()
+ desc = "A warning sign which reads '[name]'."
+
+/obj/structure/sign/warning/airlock
+ name = "\improper EXTERNAL AIRLOCK"
+ icon_state = "doors"
+
+/obj/structure/sign/warning/biohazard
+ name = "\improper BIOHAZARD"
+ icon_state = "bio"
+
+/obj/structure/sign/warning/bomb_range
+ name = "\improper BOMB RANGE"
+ icon_state = "blast"
+
+/obj/structure/sign/warning/caution
+ name = "\improper CAUTION"
+
+/obj/structure/sign/warning/compressed_gas
+ name = "\improper COMPRESSED GAS"
+ icon_state = "hikpa"
+
+/obj/structure/sign/warning/deathsposal
+ name = "\improper DISPOSAL LEADS TO SPACE"
+ icon_state = "deathsposal"
+
+/obj/structure/sign/warning/docking_area
+ name = "\improper KEEP CLEAR: DOCKING AREA"
+
+/obj/structure/sign/warning/engineering_access
+ name = "\improper ENGINEERING ACCESS"
+
+/obj/structure/sign/warning/fire
+ name = "\improper DANGER: FIRE"
+ icon_state = "fire"
+
+/obj/structure/sign/warning/high_voltage
+ name = "\improper HIGH VOLTAGE"
+ icon_state = "shock"
+
+/obj/structure/sign/warning/hot_exhaust
+ name = "\improper HOT EXHAUST"
+ icon_state = "fire"
+
+/obj/structure/sign/warning/internals_required
+ name = "\improper INTERNALS REQUIRED"
+
+/obj/structure/sign/warning/lethal_turrets
+ name = "\improper LETHAL TURRETS"
+ icon_state = "turrets"
+
+/obj/structure/sign/warning/lethal_turrets/New()
+ ..()
+ desc += " Enter at own risk!."
+
+/obj/structure/sign/warning/mail_delivery
+ name = "\improper MAIL DELIVERY"
+
+/obj/structure/sign/warning/moving_parts
+ name = "\improper MOVING PARTS"
+
+/obj/structure/sign/warning/nosmoking_1
+ name = "\improper NO SMOKING"
+ icon_state = "nosmoking"
+
+/obj/structure/sign/warning/nosmoking_2
+ name = "\improper NO SMOKING"
+ icon_state = "nosmoking2"
+
+/obj/structure/sign/warning/pods
+ name = "\improper ESCAPE PODS"
+ icon_state = "pods"
+
+/obj/structure/sign/warning/radioactive
+ name = "\improper RADIOACTIVE AREA"
+ icon_state = "radiation"
+
+/obj/structure/sign/warning/secure_area
+ name = "\improper SECURE AREA"
+
+/obj/structure/sign/warning/secure_area/armory
+ name = "\improper ARMORY"
+
+/obj/structure/sign/warning/server_room
+ name = "\improper SERVER ROOM"
+
+/obj/structure/sign/warning/siphon_valve
+ name = "\improper SIPHON VALVE"
+
+/obj/structure/sign/warning/vacuum
+ name = "\improper HARD VACUUM AHEAD"
+ icon_state = "space"
+
+/obj/structure/sign/warning/vent_port
+ name = "\improper EJECTION/VENTING PORT"
+
+
/obj/structure/sign/redcross
name = "medbay"
desc = "The Intergalactic symbol of Medical institutions. You'll probably get help here."
diff --git a/code/game/turfs/flooring/flooring_decals.dm b/code/game/turfs/flooring/flooring_decals.dm
index 66434456f9..fc4dcd1d25 100644
--- a/code/game/turfs/flooring/flooring_decals.dm
+++ b/code/game/turfs/flooring/flooring_decals.dm
@@ -391,4 +391,16 @@ var/list/floor_decals = list()
icon_state = "white_v"
/obj/effect/floor_decal/sign/p
- icon_state = "white_p"
\ No newline at end of file
+ icon_state = "white_p"
+
+/obj/effect/floor_decal/sign/dock
+ icon_state = "white_d"
+
+/obj/effect/floor_decal/sign/dock/one
+ icon_state = "white_d1"
+
+/obj/effect/floor_decal/sign/dock/two
+ icon_state = "white_d2"
+
+/obj/effect/floor_decal/sign/dock/three
+ icon_state = "white_d3"
\ No newline at end of file
diff --git a/code/modules/economy/price_list.dm b/code/modules/economy/price_list.dm
index 3d4589469b..6e101a0cde 100644
--- a/code/modules/economy/price_list.dm
+++ b/code/modules/economy/price_list.dm
@@ -705,16 +705,16 @@
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/margheritaslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/margherita
price_tag = 1
-/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/meatpizza
price_tag = 1
-/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza
price_tag = 1
-/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/
@@ -737,37 +737,37 @@
/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/meatbread
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/xenomeatbread
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/bananabread
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/tofubread
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/breadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/bread
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/creamcheesebread
price_tag = 1
@@ -845,67 +845,67 @@
/obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/braincakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/braincake
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/cheesecake
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/plaincake
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/orangecake
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/limecakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/limecake
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/lemoncake
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/chocolatecake
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/birthdaycake
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/applecakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/applecake
price_tag = 1
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
price_tag = 5
-/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/pumpkinpie
price_tag = 1
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 4774316779..013dc6ebad 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -318,40 +318,17 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
M.antagHUD = 1
src << "\blue AntagHUD Enabled"
-/mob/observer/dead/proc/dead_tele(A in ghostteleportlocs)
+/mob/observer/dead/proc/dead_tele(var/area/A in return_sorted_areas())
set category = "Ghost"
set name = "Teleport"
- set desc= "Teleport to a location"
+ set desc = "Teleport to a location"
+
if(!istype(usr, /mob/observer/dead))
usr << "Not when you're not dead!"
return
- usr.verbs -= /mob/observer/dead/proc/dead_tele
- spawn(30)
- usr.verbs += /mob/observer/dead/proc/dead_tele
- var/area/thearea = ghostteleportlocs[A]
- if(!thearea) return
- var/list/L = list()
- var/holyblock = 0
-
- if(usr.invisibility <= SEE_INVISIBLE_LIVING || (usr.mind in cult.current_antagonists))
- for(var/turf/T in get_area_turfs(thearea.type))
- if(!T.holy)
- L+=T
- else
- holyblock = 1
- else
- for(var/turf/T in get_area_turfs(thearea.type))
- L+=T
-
- if(!L || !L.len)
- if(holyblock)
- usr << "This area has been entirely made into sacred grounds, you cannot enter it while you are in this plane of existence!"
- else
- usr << "No area available."
-
- usr.forceMove(pick(L))
- following = null
+ usr.forceMove(pick(get_area_turfs(A)))
+ usr.on_mob_jump()
/mob/observer/dead/verb/follow(input in getmobs())
set category = "Ghost"
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 7c29c7f85d..fba467a6a8 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -82,6 +82,20 @@
var/datum/gender/T = gender_datums[get_gender()]
if(skipjumpsuit && skipface) //big suits/masks/helmets make it hard to tell their gender
T = gender_datums[PLURAL]
+
+ else if(species && species.ambiguous_genders)
+ var/can_detect_gender = FALSE
+ if(isobserver(user)) // Ghosts are all knowing.
+ can_detect_gender = TRUE
+ if(issilicon(user)) // Borgs are too because science.
+ can_detect_gender = TRUE
+ else if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(H.species && istype(species, H.species))
+ can_detect_gender = TRUE
+
+ if(!can_detect_gender)
+ T = gender_datums[PLURAL] // Species with ambiguous_genders will not show their true gender upon examine if the examiner is not also the same species.
else
if(icon)
msg += "\icon[icon] " //fucking BYOND: this should stop dreamseeker crashing if we -somehow- examine somebody before their icon is generated
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index a8cb222436..b6f69959d9 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -156,6 +156,7 @@
)
var/list/genders = list(MALE, FEMALE)
+ var/ambiguous_genders = FALSE // If true, people examining a member of this species whom are not also the same species will see them as gender neutral. Because aliens.
// Bump vars
var/bump_flag = HUMAN // What are we considered to be when bumped?
diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm
index df2bbd8cc8..120400413b 100644
--- a/code/modules/mob/living/carbon/human/species/station/seromi.dm
+++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm
@@ -38,6 +38,8 @@
blood_volume = 400
hunger_factor = 0.2
+ ambiguous_genders = TRUE
+
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_COLOR | HAS_EYE_COLOR
bump_flag = MONKEY
diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm
index 9ac4079098..2707b2bac7 100644
--- a/code/modules/mob/living/carbon/human/species/station/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station.dm
@@ -162,6 +162,8 @@
darksight = 4
+ ambiguous_genders = TRUE
+
spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 3d38d909de..62b065d091 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -690,7 +690,7 @@
overlays += "eyes-[module_sprites[icontype]]"
if(opened)
- var/panelprefix = custom_sprite ? src.ckey : "ov"
+ var/panelprefix = custom_sprite ? "[src.ckey]-[src.name]" : "ov"
if(wiresexposed)
overlays += "[panelprefix]-openpanel +w"
else if(cell)
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 5373a71781..74acf07ddb 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -67,14 +67,18 @@
break
if (istype(copyitem, /obj/item/weapon/paper))
+ playsound(loc, "sound/machines/copier.ogg", 100, 1)
+ sleep(11)
copy(copyitem)
- sleep(15)
else if (istype(copyitem, /obj/item/weapon/photo))
+ playsound(loc, "sound/machines/copier.ogg", 100, 1)
+ sleep(11)
photocopy(copyitem)
- sleep(15)
else if (istype(copyitem, /obj/item/weapon/paper_bundle))
+ sleep(11)
+ playsound(loc, "sound/machines/copier.ogg", 100, 1)
var/obj/item/weapon/paper_bundle/B = bundlecopy(copyitem)
- sleep(15*B.pages.len)
+ sleep(11*B.pages.len)
else
usr << "\The [copyitem] can't be copied by \the [src]."
break
@@ -123,6 +127,7 @@
copyitem = O
O.loc = src
user << "You insert \the [O] into \the [src]."
+ playsound(loc, "sound/machines/click.ogg", 100, 1)
flick(insert_anim, src)
else
user << "There is already something in \the [src]."
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 38f558721e..5be9ed93c2 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -47,27 +47,27 @@
/obj/machinery/chem_master/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob)
- if(istype(B, /obj/item/weapon/reagent_containers/glass))
+ if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food))
if(src.beaker)
- user << "A beaker is already loaded into the machine."
+ user << "\A [beaker] is already loaded into the machine."
return
src.beaker = B
user.drop_item()
B.loc = src
- user << "You add the beaker to the machine!"
+ user << "You add \the [B] to the machine!"
icon_state = "mixer1"
else if(istype(B, /obj/item/weapon/storage/pill_bottle))
if(src.loaded_pill_bottle)
- user << "A pill bottle is already loaded into the machine."
+ user << "A \the [loaded_pill_bottle] s already loaded into the machine."
return
src.loaded_pill_bottle = B
user.drop_item()
B.loc = src
- user << "You add the pill bottle into the dispenser slot!"
+ user << "You add \the [loaded_pill_bottle] into the dispenser slot!"
return
/obj/machinery/chem_master/attack_hand(mob/user as mob)
diff --git a/code/modules/reagents/reagent_containers/food/lunch.dm b/code/modules/reagents/reagent_containers/food/lunch.dm
index 794d7f69dd..1ab8cf3a43 100644
--- a/code/modules/reagents/reagent_containers/food/lunch.dm
+++ b/code/modules/reagents/reagent_containers/food/lunch.dm
@@ -1,11 +1,11 @@
var/list/lunchables_lunches_ = list(/obj/item/weapon/reagent_containers/food/snacks/sandwich,
- /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice,
- /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice,
- /obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice,
- /obj/item/weapon/reagent_containers/food/snacks/margheritaslice,
- /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice,
- /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice,
- /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/meatbread/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/tofubread/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/creamcheesebread/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/margherita/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/meatpizza/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza/filled,
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry,
@@ -26,17 +26,17 @@ var/list/lunchables_snacks_ = list(/obj/item/weapon/reagent_containers/food/snac
/obj/item/weapon/reagent_containers/food/snacks/cherrypie,
/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit,
/obj/item/weapon/reagent_containers/food/snacks/appletart,
- /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice,
- /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice,
- /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice,
- /obj/item/weapon/reagent_containers/food/snacks/orangecakeslice,
- /obj/item/weapon/reagent_containers/food/snacks/limecakeslice,
- /obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice,
- /obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice,
- /obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/cheesecake/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/plaincake/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/orangecake/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/limecake/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/lemoncake/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/chocolatecake/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/birthdaycake/filled,
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice,
- /obj/item/weapon/reagent_containers/food/snacks/applecakeslice,
- /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/applecake/filled,
+ /obj/item/weapon/reagent_containers/food/snacks/slice/pumpkinpie/filled,
/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks)
var/list/lunchables_drinks_ = list(/obj/item/weapon/reagent_containers/food/drinks/cans/cola,
diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm
index dd58e8a51e..8bb92f2eeb 100644
--- a/code/modules/reagents/reagent_containers/food/snacks.dm
+++ b/code/modules/reagents/reagent_containers/food/snacks.dm
@@ -194,24 +194,23 @@
if (W.w_class >= src.w_class || is_robot_module(W))
return
- user << "\red You slip [W] inside [src]."
- user.remove_from_mob(W)
- W.dropped(user)
+ to_chat(user, "You slip \the [W] inside \the [src].")
+ user.drop_from_inventory(W, src)
add_fingerprint(user)
contents += W
return
if (has_edge(W))
if (!can_slice_here)
- user << "\red You cannot slice [src] here! You need a table or at least a tray to do it."
+ to_chat(user, "You cannot slice \the [src] here! You need a table or at least a tray to do it.")
return
var/slices_lost = 0
if (W.w_class > 3)
- user.visible_message("\blue [user] crudely slices \the [src] with [W]!", "\blue You crudely slice \the [src] with your [W]!")
+ user.visible_message("\The [user] crudely slices \the [src] with [W]!", "You crudely slice \the [src] with your [W]!")
slices_lost = rand(1,min(1,round(slices_num/2)))
else
- user.visible_message("\blue [user] slices \the [src]!", "\blue You slice \the [src]!")
+ user.visible_message("\The [user] slices \the [src]!", "You slice \the [src]!")
var/reagents_per_slice = reagents.total_volume/slices_num
for(var/i=1 to (slices_num-slices_lost))
@@ -2328,54 +2327,81 @@
/obj/item/weapon/reagent_containers/food/snacks/sliceable
w_class = ITEMSIZE_NORMAL //Whole pizzas and cakes shouldn't fit in a pocket, you can slice them if you want to do that.
+/**
+ * A food item slice
+ *
+ * This path contains some extra code for spawning slices pre-filled with
+ * reagents.
+ */
+/obj/item/weapon/reagent_containers/food/snacks/slice
+ name = "slice of... something"
+ var/whole_path // path for the item from which this slice comes
+ var/filled = FALSE // should the slice spawn with any reagents
+
+/**
+ * Spawn a new slice of food
+ *
+ * If the slice's filled is TRUE, this will also fill the slice with the
+ * appropriate amount of reagents. Note that this is done by spawning a new
+ * whole item, transferring the reagents and deleting the whole item, which may
+ * have performance implications.
+ */
+/obj/item/weapon/reagent_containers/food/snacks/slice/New()
+ ..()
+ if(filled)
+ var/obj/item/weapon/reagent_containers/food/snacks/whole = new whole_path()
+ if(whole && whole.slices_num)
+ var/reagent_amount = whole.reagents.total_volume/whole.slices_num
+ whole.reagents.trans_to_obj(src, reagent_amount)
+
+ qdel(whole)
+
/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread
name = "meatbread loaf"
desc = "The culinary base of every self-respecting eloquen/tg/entleman."
icon_state = "meatbread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/meatbread/filled
slices_num = 5
filling_color = "#FF7575"
- center_of_mass = list("x"=16, "y"=9)
- nutriment_amt = 10
+ center_of_mass = list("x"=19, "y"=9)
nutriment_desc = list("bread" = 10)
+ nutriment_amt = 10
/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread/New()
..()
reagents.add_reagent("protein", 20)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/meatbread/filled
name = "meatbread slice"
desc = "A slice of delicious meatbread."
icon_state = "meatbreadslice"
trash = /obj/item/trash/plate
filling_color = "#FF7575"
bitesize = 2
- center_of_mass = list("x"=16, "y"=13)
+ center_of_mass = list("x"=16, "y"=16)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread
-/obj/item/weapon/reagent_containers/food/snacks/meatbreadslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("protein", 4)
- reagents.add_reagent("nutriment", 2)
+/obj/item/weapon/reagent_containers/food/snacks/slice/meatbread/filled/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread
name = "xenomeatbread loaf"
desc = "The culinary base of every self-respecting eloquent gentleman. Extra Heretical."
icon_state = "xenomeatbread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/xenomeatbread/filled
slices_num = 5
filling_color = "#8AFF75"
center_of_mass = list("x"=16, "y"=9)
- nutriment_amt = 10
nutriment_desc = list("bread" = 10)
+ nutriment_amt = 10
/obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread/New()
..()
reagents.add_reagent("protein", 20)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/xenomeatbread/filled
name = "xenomeatbread slice"
desc = "A slice of delicious meatbread. Extra Heretical."
icon_state = "xenobreadslice"
@@ -2383,30 +2409,29 @@
filling_color = "#8AFF75"
bitesize = 2
center_of_mass = list("x"=16, "y"=13)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/xenomeatbread
-/obj/item/weapon/reagent_containers/food/snacks/xenomeatbreadslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("protein", 4)
- reagents.add_reagent("nutriment", 2)
+
+/obj/item/weapon/reagent_containers/food/snacks/slice/xenomeatbread/filled/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread
name = "Banana-nut bread"
desc = "A heavenly and filling treat."
icon_state = "bananabread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/bananabreadslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/bananabread
slices_num = 5
filling_color = "#EDE5AD"
center_of_mass = list("x"=16, "y"=9)
- nutriment_amt = 10
nutriment_desc = list("bread" = 10)
+ nutriment_amt = 10
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread/New()
..()
reagents.add_reagent("banana", 20)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/bananabread
name = "Banana-nut bread slice"
desc = "A slice of delicious banana bread."
icon_state = "bananabreadslice"
@@ -2414,30 +2439,27 @@
filling_color = "#EDE5AD"
bitesize = 2
center_of_mass = list("x"=16, "y"=8)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread
-/obj/item/weapon/reagent_containers/food/snacks/bananabreadslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("banana", 4)
- reagents.add_reagent("nutriment", 4)
+/obj/item/weapon/reagent_containers/food/snacks/slice/bananabread/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread
name = "Tofubread"
icon_state = "Like meatbread but for vegetarians. Not guaranteed to give superpowers."
icon_state = "tofubread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/tofubreadslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/tofubread
slices_num = 5
filling_color = "#F7FFE0"
center_of_mass = list("x"=16, "y"=9)
- nutriment_amt = 30
- nutriment_desc = list("bread" = 15, "tofu" = 15)
+ nutriment_desc = list("tofu" = 10)
+ nutriment_amt = 10
/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread/New()
..()
- reagents.add_reagent("nutriment", 30)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/tofubread
name = "Tofubread slice"
desc = "A slice of delicious tofubread."
icon_state = "tofubreadslice"
@@ -2445,30 +2467,29 @@
filling_color = "#F7FFE0"
bitesize = 2
center_of_mass = list("x"=16, "y"=13)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread
-/obj/item/weapon/reagent_containers/food/snacks/tofubreadslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 6)
+/obj/item/weapon/reagent_containers/food/snacks/slice/tofubread/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake
name = "Carrot Cake"
desc = "A favorite desert of a certain wascally wabbit. Not a lie."
icon_state = "carrotcake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake
slices_num = 5
filling_color = "#FFD675"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 25
nutriment_desc = list("cake" = 10, "sweetness" = 10, "carrot" = 15)
+ nutriment_amt = 25
/obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake/New()
..()
reagents.add_reagent("imidazoline", 10)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake
name = "Carrot Cake slice"
desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie."
icon_state = "carrotcake_slice"
@@ -2476,23 +2497,21 @@
filling_color = "#FFD675"
bitesize = 2
center_of_mass = list("x"=16, "y"=14)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/carrotcake
-/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("imidazoline", 2)
- reagents.add_reagent("nutriment", 5)
+/obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake
name = "Brain Cake"
desc = "A squishy cake-thing."
icon_state = "braincake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/braincakeslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/braincake
slices_num = 5
filling_color = "#E6AEDB"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 5
nutriment_desc = list("cake" = 10, "sweetness" = 10, "slime" = 15)
+ nutriment_amt = 5
/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake/New()
..()
@@ -2500,7 +2519,7 @@
reagents.add_reagent("alkysine", 10)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/braincakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/braincake
name = "Brain Cake slice"
desc = "Lemme tell you something about prions. THEY'RE DELICIOUS."
icon_state = "braincakeslice"
@@ -2508,60 +2527,52 @@
filling_color = "#E6AEDB"
bitesize = 2
center_of_mass = list("x"=16, "y"=12)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake
-/obj/item/weapon/reagent_containers/food/snacks/braincakeslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("protein", 5)
- reagents.add_reagent("nutriment", 1)
- reagents.add_reagent("alkysine", 2)
+/obj/item/weapon/reagent_containers/food/snacks/slice/braincake/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake
name = "Cheese Cake"
desc = "DANGEROUSLY cheesy."
icon_state = "cheesecake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/cheesecake
slices_num = 5
filling_color = "#FAF7AF"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 10
nutriment_desc = list("cake" = 10, "cream" = 10, "cheese" = 15)
+ nutriment_amt = 10
/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake/New()
..()
reagents.add_reagent("protein", 15)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/cheesecake
name = "Cheese Cake slice"
- desc = "Slice of pure cheestisfaction"
+ desc = "Slice of pure cheestisfaction."
icon_state = "cheesecake_slice"
trash = /obj/item/trash/plate
filling_color = "#FAF7AF"
bitesize = 2
center_of_mass = list("x"=16, "y"=14)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesecake
-/obj/item/weapon/reagent_containers/food/snacks/cheesecakeslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("protein", 3)
- reagents.add_reagent("nutriment", 2)
+/obj/item/weapon/reagent_containers/food/snacks/slice/cheesecake/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake
name = "Vanilla Cake"
desc = "A plain cake, not a lie."
icon_state = "plaincake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/plaincakeslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/plaincake
slices_num = 5
filling_color = "#F7EDD5"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 20
nutriment_desc = list("cake" = 10, "sweetness" = 10, "vanilla" = 15)
+ nutriment_amt = 20
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake/New()
- ..()
-
-/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/plaincake
name = "Vanilla Cake slice"
desc = "Just a slice of cake, it is enough for everyone."
icon_state = "plaincake_slice"
@@ -2569,27 +2580,23 @@
filling_color = "#F7EDD5"
bitesize = 2
center_of_mass = list("x"=16, "y"=14)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/plaincake
-/obj/item/weapon/reagent_containers/food/snacks/plaincakeslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 4)
+/obj/item/weapon/reagent_containers/food/snacks/slice/plaincake/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake
name = "Orange Cake"
desc = "A cake with added orange."
icon_state = "orangecake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/orangecakeslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/orangecake
slices_num = 5
filling_color = "#FADA8E"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 20
nutriment_desc = list("cake" = 10, "sweetness" = 10, "orange" = 15)
+ nutriment_amt = 20
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake/New()
- ..()
-
-/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/orangecake
name = "Orange Cake slice"
desc = "Just a slice of cake, it is enough for everyone."
icon_state = "orangecake_slice"
@@ -2597,28 +2604,25 @@
filling_color = "#FADA8E"
bitesize = 2
center_of_mass = list("x"=16, "y"=14)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/orangecake
+
+/obj/item/weapon/reagent_containers/food/snacks/slice/orangecake/filled
+ filled = TRUE
-/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 4)
/obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake
name = "Lime Cake"
desc = "A cake with added lime."
icon_state = "limecake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/limecakeslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/limecake
slices_num = 5
filling_color = "#CBFA8E"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 20
nutriment_desc = list("cake" = 10, "sweetness" = 10, "lime" = 15)
+ nutriment_amt = 20
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake/New()
- ..()
- reagents.add_reagent("nutriment", 20)
-/obj/item/weapon/reagent_containers/food/snacks/limecakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/limecake
name = "Lime Cake slice"
desc = "Just a slice of cake, it is enough for everyone."
icon_state = "limecake_slice"
@@ -2626,27 +2630,24 @@
filling_color = "#CBFA8E"
bitesize = 2
center_of_mass = list("x"=16, "y"=14)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/limecake
-/obj/item/weapon/reagent_containers/food/snacks/limecakeslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 4)
+/obj/item/weapon/reagent_containers/food/snacks/slice/limecake/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake
name = "Lemon Cake"
desc = "A cake with added lemon."
icon_state = "lemoncake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/lemoncake
slices_num = 5
filling_color = "#FAFA8E"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 20
nutriment_desc = list("cake" = 10, "sweetness" = 10, "lemon" = 15)
+ nutriment_amt = 20
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake/New()
- ..()
-/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/lemoncake
name = "Lemon Cake slice"
desc = "Just a slice of cake, it is enough for everyone."
icon_state = "lemoncake_slice"
@@ -2654,27 +2655,23 @@
filling_color = "#FAFA8E"
bitesize = 2
center_of_mass = list("x"=16, "y"=14)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/lemoncake
-/obj/item/weapon/reagent_containers/food/snacks/lemoncakeslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 4)
+/obj/item/weapon/reagent_containers/food/snacks/slice/lemoncake/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake
name = "Chocolate Cake"
- desc = "A cake with added chocolate"
+ desc = "A cake with added chocolate."
icon_state = "chocolatecake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/chocolatecake
slices_num = 5
filling_color = "#805930"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 20
nutriment_desc = list("cake" = 10, "sweetness" = 10, "chocolate" = 15)
+ nutriment_amt = 20
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake/New()
- ..()
-
-/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/chocolatecake
name = "Chocolate Cake slice"
desc = "Just a slice of cake, it is enough for everyone."
icon_state = "chocolatecake_slice"
@@ -2682,11 +2679,10 @@
filling_color = "#805930"
bitesize = 2
center_of_mass = list("x"=16, "y"=14)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake
-/obj/item/weapon/reagent_containers/food/snacks/chocolatecakeslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 4)
+/obj/item/weapon/reagent_containers/food/snacks/slice/chocolatecake/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel
name = "Cheese wheel"
@@ -2696,8 +2692,8 @@
slices_num = 5
filling_color = "#FFF700"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 10
nutriment_desc = list("cheese" = 10)
+ nutriment_amt = 10
/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel/New()
..()
@@ -2716,19 +2712,19 @@
name = "Birthday Cake"
desc = "Happy Birthday..."
icon_state = "birthdaycake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/birthdaycake
slices_num = 5
filling_color = "#FFD6D6"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 20
nutriment_desc = list("cake" = 10, "sweetness" = 10)
+ nutriment_amt = 20
/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake/New()
..()
reagents.add_reagent("sprinkles", 10)
bitesize = 3
-/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/birthdaycake
name = "Birthday Cake slice"
desc = "A slice of your birthday."
icon_state = "birthdaycakeslice"
@@ -2736,29 +2732,27 @@
filling_color = "#FFD6D6"
bitesize = 2
center_of_mass = list("x"=16, "y"=14)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake
-/obj/item/weapon/reagent_containers/food/snacks/birthdaycakeslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("sprinkles", 2)
+/obj/item/weapon/reagent_containers/food/snacks/slice/birthdaycake/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread
name = "Bread"
icon_state = "Some plain old Earthen bread."
icon_state = "bread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/breadslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/bread
slices_num = 5
filling_color = "#FFE396"
center_of_mass = list("x"=16, "y"=9)
- nutriment_amt = 6
nutriment_desc = list("bread" = 6)
+ nutriment_amt = 6
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bread/New()
..()
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/breadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/bread
name = "Bread slice"
desc = "A slice of home."
icon_state = "breadslice"
@@ -2766,43 +2760,42 @@
filling_color = "#D27332"
bitesize = 2
center_of_mass = list("x"=16, "y"=4)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/bread
-/obj/item/weapon/reagent_containers/food/snacks/breadslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 1)
+/obj/item/weapon/reagent_containers/food/snacks/slice/bread/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread
name = "Cream Cheese Bread"
desc = "Yum yum yum!"
icon_state = "creamcheesebread"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/creamcheesebread
slices_num = 5
filling_color = "#FFF896"
center_of_mass = list("x"=16, "y"=9)
- nutriment_amt = 5
nutriment_desc = list("bread" = 6, "cream" = 3, "cheese" = 3)
+ nutriment_amt = 5
/obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread/New()
..()
reagents.add_reagent("protein", 15)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/creamcheesebread
name = "Cream Cheese Bread slice"
desc = "A slice of yum!"
icon_state = "creamcheesebreadslice"
trash = /obj/item/trash/plate
filling_color = "#FFF896"
bitesize = 2
- center_of_mass = list("x"=16, "y"=13)
+ center_of_mass = list("x"=16, "y"=14)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/creamcheesebread
+
+
+/obj/item/weapon/reagent_containers/food/snacks/slice/creamcheesebread/filled
+ filled = TRUE
-/obj/item/weapon/reagent_containers/food/snacks/creamcheesebreadslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("protein", 3)
- reagents.add_reagent("nutriment", 1)
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice
name = "Watermelon Slice"
@@ -2812,26 +2805,18 @@
bitesize = 2
center_of_mass = list("x"=16, "y"=10)
-/obj/item/weapon/reagent_containers/food/snacks/watermelonslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("watermelonjuice", 1)
-
/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake
name = "Apple Cake"
- desc = "A cake centred with Apple"
+ desc = "A cake centred with apples."
icon_state = "applecake"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/applecakeslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/applecake
slices_num = 5
filling_color = "#EBF5B8"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 15
nutriment_desc = list("cake" = 10, "sweetness" = 10, "apple" = 15)
+ nutriment_amt = 15
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake/New()
- ..()
-
-/obj/item/weapon/reagent_containers/food/snacks/applecakeslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/applecake
name = "Apple Cake slice"
desc = "A slice of heavenly cake."
icon_state = "applecakeslice"
@@ -2839,27 +2824,23 @@
filling_color = "#EBF5B8"
bitesize = 2
center_of_mass = list("x"=16, "y"=14)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake
-/obj/item/weapon/reagent_containers/food/snacks/applecakeslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 3)
+/obj/item/weapon/reagent_containers/food/snacks/slice/applecake/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
name = "Pumpkin Pie"
desc = "A delicious treat for the autumn months."
icon_state = "pumpkinpie"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/pumpkinpie
slices_num = 5
filling_color = "#F5B951"
center_of_mass = list("x"=16, "y"=10)
- nutriment_amt = 15
nutriment_desc = list("pie" = 5, "cream" = 5, "pumpkin" = 5)
+ nutriment_amt = 15
-/obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie/New()
- ..()
-
-/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/pumpkinpie
name = "Pumpkin Pie slice"
desc = "A slice of pumpkin pie, with whipped cream on top. Perfection."
icon_state = "pumpkinpieslice"
@@ -2867,23 +2848,21 @@
filling_color = "#F5B951"
bitesize = 2
center_of_mass = list("x"=16, "y"=12)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pumpkinpie
-/obj/item/weapon/reagent_containers/food/snacks/pumpkinpieslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 3)
+/obj/item/weapon/reagent_containers/food/snacks/slice/pumpkinpie/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/cracker
name = "Cracker"
desc = "It's a salted cracker."
icon_state = "cracker"
filling_color = "#F5DEB8"
- center_of_mass = list("x"=17, "y"=6)
- nutriment_amt = 1
+ center_of_mass = list("x"=16, "y"=6)
nutriment_desc = list("salt" = 1, "cracker" = 2)
+ nutriment_amt = 1
+
-/obj/item/weapon/reagent_containers/food/snacks/cracker/New()
- ..()
/////////////////////////////////////////////////PIZZA////////////////////////////////////////
@@ -2895,11 +2874,11 @@
name = "Margherita"
desc = "The golden standard of pizzas."
icon_state = "pizzamargherita"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/margheritaslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/margherita
slices_num = 6
center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 35
nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15)
+ nutriment_amt = 35
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita/New()
..()
@@ -2907,30 +2886,27 @@
reagents.add_reagent("tomatojuice", 6)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/margheritaslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/margherita
name = "Margherita slice"
desc = "A slice of the classic pizza."
icon_state = "pizzamargheritaslice"
filling_color = "#BAA14C"
bitesize = 2
- center_of_mass = list("x"=18, "y"=13)
+ center_of_mass = list("x"=16, "y"=13)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita
-/obj/item/weapon/reagent_containers/food/snacks/margheritaslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("protein", 1)
- reagents.add_reagent("tomatojuice", 1)
+/obj/item/weapon/reagent_containers/food/snacks/slice/margherita/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
name = "Meatpizza"
desc = "A pizza with meat topping."
icon_state = "meatpizza"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/meatpizza
slices_num = 6
center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 10
nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15)
+ nutriment_amt = 10
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza/New()
..()
@@ -2938,58 +2914,54 @@
reagents.add_reagent("tomatojuice", 6)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/meatpizza
name = "Meatpizza slice"
desc = "A slice of a meaty pizza."
icon_state = "meatpizzaslice"
filling_color = "#BAA14C"
bitesize = 2
- center_of_mass = list("x"=18, "y"=13)
+ center_of_mass = list("x"=16, "y"=13)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza
-/obj/item/weapon/reagent_containers/food/snacks/meatpizzaslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("protein", 7)
- reagents.add_reagent("tomatojuice", 1)
+/obj/item/weapon/reagent_containers/food/snacks/slice/meatpizza/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza
name = "Mushroompizza"
- desc = "Very special pizza"
+ desc = "Very special pizza."
icon_state = "mushroompizza"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza
slices_num = 6
center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 35
nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 5, "mushroom" = 10)
+ nutriment_amt = 35
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza/New()
..()
reagents.add_reagent("protein", 5)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza
name = "Mushroompizza slice"
desc = "Maybe it is the last slice of pizza in your life."
icon_state = "mushroompizzaslice"
filling_color = "#BAA14C"
bitesize = 2
- center_of_mass = list("x"=18, "y"=13)
+ center_of_mass = list("x"=16, "y"=13)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza
-/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 5)
- reagents.add_reagent("protein", 1)
+/obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza/filled
+ filled = TRUE
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza
name = "Vegetable pizza"
- desc = "No one of Tomato Sapiens were harmed during making this pizza"
+ desc = "No one of Tomato Sapiens were harmed during making this pizza."
icon_state = "vegetablepizza"
- slice_path = /obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice
+ slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza
slices_num = 6
center_of_mass = list("x"=16, "y"=11)
- nutriment_amt = 25
nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 5, "eggplant" = 5, "carrot" = 5, "corn" = 5)
+ nutriment_amt = 25
/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza/New()
..()
@@ -2998,21 +2970,17 @@
reagents.add_reagent("imidazoline", 12)
bitesize = 2
-/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice
+/obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza
name = "Vegetable pizza slice"
- desc = "A slice of the most green pizza of all pizzas not containing green ingredients "
+ desc = "A slice of the most green pizza of all pizzas not containing green ingredients."
icon_state = "vegetablepizzaslice"
filling_color = "#BAA14C"
bitesize = 2
- center_of_mass = list("x"=18, "y"=13)
+ center_of_mass = list("x"=16, "y"=13)
+ whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza
-/obj/item/weapon/reagent_containers/food/snacks/vegetablepizzaslice/New()
- ..()
- if(!(reagents.total_volume))
- reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("protein", 1)
- reagents.add_reagent("tomatojuice", 1)
- reagents.add_reagent("imidazoline", 2)
+/obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza/filled
+ filled = TRUE
/obj/item/pizzabox
name = "pizza box"
@@ -3026,46 +2994,34 @@
var/list/boxes = list() // If the boxes are stacked, they come here
var/boxtag = ""
-/obj/item/pizzabox/proc/closepizzabox()
-
- if(boxes.len > 0)
- return
-
- open = !open
-
- if(open && pizza)
- ismessy = 1
-
- update_icon()
-
/obj/item/pizzabox/update_icon()
overlays = list()
// Set appropriate description
- if(open && pizza)
+ if( open && pizza )
desc = "A box suited for pizzas. It appears to have a [pizza.name] inside."
- else if(boxes.len > 0)
+ else if( boxes.len > 0 )
desc = "A pile of boxes suited for pizzas. There appears to be [boxes.len + 1] boxes in the pile."
var/obj/item/pizzabox/topbox = boxes[boxes.len]
var/toptag = topbox.boxtag
- if(toptag != "")
+ if( toptag != "" )
desc = "[desc] The box on top has a tag, it reads: '[toptag]'."
else
desc = "A box suited for pizzas."
- if(boxtag != "")
+ if( boxtag != "" )
desc = "[desc] The box has a tag, it reads: '[boxtag]'."
// Icon states and overlays
- if(open)
- if(ismessy)
+ if( open )
+ if( ismessy )
icon_state = "pizzabox_messy"
else
icon_state = "pizzabox_open"
- if(pizza)
+ if( pizza )
var/image/pizzaimg = image("food.dmi", icon_state = pizza.icon_state)
pizzaimg.pixel_y = -3
overlays += pizzaimg
@@ -3074,33 +3030,33 @@
else
// Stupid code because byondcode sucks
var/doimgtag = 0
- if(boxes.len > 0)
+ if( boxes.len > 0 )
var/obj/item/pizzabox/topbox = boxes[boxes.len]
- if(topbox.boxtag != "")
+ if( topbox.boxtag != "" )
doimgtag = 1
else
- if(boxtag != "")
+ if( boxtag != "" )
doimgtag = 1
- if(doimgtag)
+ if( doimgtag )
var/image/tagimg = image("food.dmi", icon_state = "pizzabox_tag")
tagimg.pixel_y = boxes.len * 3
overlays += tagimg
icon_state = "pizzabox[boxes.len+1]"
-/obj/item/pizzabox/attack_hand(mob/user as mob)
+/obj/item/pizzabox/attack_hand( mob/user as mob )
if( open && pizza )
- user.put_in_hands(pizza)
+ user.put_in_hands( pizza )
- user << "You take \the [src.pizza] out of the [src]."
+ to_chat(user, "You take \the [src.pizza] out of \the [src].")
src.pizza = null
update_icon()
return
- if(boxes.len > 0)
- if(user.get_inactive_hand() != src)
+ if( boxes.len > 0 )
+ if( user.get_inactive_hand() != src )
..()
return
@@ -3108,74 +3064,76 @@
boxes -= box
user.put_in_hands( box )
- user << "You remove \the topmost [src] from your hand."
+ to_chat(user, "You remove the topmost [src] from your hand.")
box.update_icon()
update_icon()
return
..()
-/obj/item/pizzabox/attack_self(mob/user as mob)
+/obj/item/pizzabox/attack_self( mob/user as mob )
- closepizzabox()
+ if( boxes.len > 0 )
+ return
-/obj/item/pizzabox/AltClick()
+ open = !open
- if(Adjacent(usr))
- closepizzabox()
+ if( open && pizza )
+ ismessy = 1
+
+ update_icon()
/obj/item/pizzabox/attackby( obj/item/I as obj, mob/user as mob )
- if(istype(I, /obj/item/pizzabox/))
+ if( istype(I, /obj/item/pizzabox/) )
var/obj/item/pizzabox/box = I
- if(!box.open && !src.open)
+ if( !box.open && !src.open )
// Make a list of all boxes to be added
var/list/boxestoadd = list()
boxestoadd += box
for(var/obj/item/pizzabox/i in box.boxes)
boxestoadd += i
- if((boxes.len+1) + boxestoadd.len <= 5)
+ if( (boxes.len+1) + boxestoadd.len <= 5 )
user.drop_item()
box.loc = src
box.boxes = list() // Clear the box boxes so we don't have boxes inside boxes. - Xzibit
- src.boxes.Add(boxestoadd)
+ src.boxes.Add( boxestoadd )
box.update_icon()
update_icon()
- user << "You put \the [box] ontop of the [src]!"
+ to_chat(user, "You put \the [box] ontop of \the [src]!")
else
- user << "\The stack is too high!"
+ to_chat(user, "The stack is too high!")
else
- user << "Close \the [box] first!"
+ to_chat(user, "Close \the [box] first!")
return
- if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/)) // Long ass fucking object name
+ if( istype(I, /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/) ) // Long ass fucking object name
- if(open)
- if(!pizza)
- user.drop_item()
- I.loc = src
- pizza = I
- update_icon()
- user << "You put \the [I] in \the [src]!"
- else
- user << "\The [src] is full! It already has a [pizza] inside."
+ if( src.open )
+ user.drop_item()
+ I.loc = src
+ src.pizza = I
+
+ update_icon()
+
+ to_chat(user, "You put \the [I] in \the [src]!")
else
- user << "You try to push \the [I] through the lid but it doesn't work!"
-
+ to_chat(user, "You try to push \the [I] through the lid but it doesn't work!")
return
- if(istype(I, /obj/item/weapon/pen/))
- if(open)
+ if( istype(I, /obj/item/weapon/pen/) )
+
+ if( src.open )
return
var/t = sanitize(input("Enter what you want to add to the tag:", "Write", null, null) as text, 30)
var/obj/item/pizzabox/boxtotagto = src
- if(boxes.len > 0)
+ if( boxes.len > 0 )
boxtotagto = boxes[boxes.len]
boxtotagto.boxtag = copytext("[boxtotagto.boxtag][t]", 1, 30)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 724191cee7..63bb549645 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -76,7 +76,6 @@
switch(mode)
if(SYRINGE_DRAW)
-
if(!reagents.get_free_space())
user << "The syringe is full."
mode = SYRINGE_INJECT
@@ -137,7 +136,7 @@
user << "[target] is empty."
return
- if(!target.is_open_container() && !istype(target, /obj/structure/reagent_dispensers) && !istype(target, /obj/item/slime_extract))
+ if(!target.is_open_container() && !istype(target, /obj/structure/reagent_dispensers) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/weapon/reagent_containers/food))
user << "You cannot directly remove reagents from this object."
return
@@ -209,7 +208,7 @@
trans = reagents.trans_to_mob(target, amount_per_transfer_from_this, CHEM_BLOOD)
admin_inject_log(user, target, src, contained, trans)
else
- trans = reagents.trans_to(target, amount_per_transfer_from_this)
+ trans = reagents.trans_to_obj(target, amount_per_transfer_from_this)
if(trans)
user << "You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units."
else
diff --git a/code/modules/tables/presets.dm b/code/modules/tables/presets.dm
index 933f54ea8b..171bfe2b2c 100644
--- a/code/modules/tables/presets.dm
+++ b/code/modules/tables/presets.dm
@@ -28,7 +28,7 @@
material = get_material_by_name(DEFAULT_TABLE_MATERIAL)
reinforced = get_material_by_name(DEFAULT_WALL_MATERIAL)
..()
-
+
steel_reinforced
icon_state = "reinf_preview"
color = "#666666"
@@ -37,6 +37,14 @@
reinforced = get_material_by_name(DEFAULT_WALL_MATERIAL)
..()
+ wooden_reinforced
+ icon_state = "reinf_preview"
+ color = "#824B28"
+ New()
+ material = get_material_by_name("wood")
+ reinforced = get_material_by_name(DEFAULT_WALL_MATERIAL)
+ ..()
+
woodentable
icon_state = "plain_preview"
color = "#824B28"
diff --git a/icons/effects/tile_effects.dmi b/icons/effects/tile_effects.dmi
index b08f1ac3de..8529bdc816 100644
Binary files a/icons/effects/tile_effects.dmi and b/icons/effects/tile_effects.dmi differ
diff --git a/icons/obj/assemblies.dmi b/icons/obj/assemblies.dmi
index 370fb582e7..89ab898f56 100644
Binary files a/icons/obj/assemblies.dmi and b/icons/obj/assemblies.dmi differ
diff --git a/icons/obj/atmos.dmi b/icons/obj/atmos.dmi
index a80de32c0c..d3b7507edc 100644
Binary files a/icons/obj/atmos.dmi and b/icons/obj/atmos.dmi differ
diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi
index 6c8ddd9d39..af40b1c6ff 100644
Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ
diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi
index c1b956645b..6c4d65b76e 100644
Binary files a/icons/obj/tank.dmi and b/icons/obj/tank.dmi differ
diff --git a/icons/turf/flooring/decals.dmi b/icons/turf/flooring/decals.dmi
index c5b2a54b0b..c3441b5714 100644
Binary files a/icons/turf/flooring/decals.dmi and b/icons/turf/flooring/decals.dmi differ
diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm
index 06ca008289..0187d78972 100644
--- a/maps/northern_star/polaris-2.dmm
+++ b/maps/northern_star/polaris-2.dmm
@@ -1931,7 +1931,7 @@
"aLg" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/amanita_pie,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
"aLh" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
"aLi" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 8},/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
-"aLj" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/carrotcakeslice,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
+"aLj" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/carrotcake/filled,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
"aLk" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/stew,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
"aLl" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom)
"aLm" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom)
@@ -1975,7 +1975,7 @@
"aLY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/bloodsoup,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
"aLZ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/tofukabob,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
"aMa" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/poppypretzel,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
-"aMb" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/orangecakeslice,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
+"aMb" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/reagent_containers/food/snacks/slice/orangecake/filled,/turf/unsimulated/floor{tag = "icon-wood"; icon_state = "wood"},/area/centcom/bar)
"aMc" = (/obj/machinery/atm{pixel_x = -30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"aMd" = (/obj/machinery/atm{pixel_x = 30},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"aMe" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom)