From 50f010218646e62f25f3b109764f9ace7c198c37 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 9 Oct 2018 13:23:14 -0400 Subject: [PATCH 01/18] Exploration Fixes for 09-27-2018 Sync - Removes redundant station_vr file - Reverts exploration suit cyclers to polaris cyclers - Adds a pilot suit cycler to exploration - Applies a functioning fix for holdout phasers - Slightly buffs up the holdout phaser to be 50% of expedition phaser, to keep size-effectiveness scaling - Removes head access from expedition shuttle control console - Removes Pilot Blue/Old Exploration from polaris cyclers (they are still WIP on polaris end) --- code/datums/supplypacks/munitions_vr.dm | 2 +- code/game/machinery/suit_storage_unit_vr.dm | 51 +++---------------- .../clothing/spacesuits/void/station_vr.dm | 42 --------------- .../modules/vore/fluffstuff/custom_guns_vr.dm | 23 +++------ .../structures/closets/misc_vr.dm | 2 +- maps/tether/tether-05-station1.dmm | 22 ++++++-- maps/tether/tether_shuttles.dm | 2 +- maps/tether/tether_things.dm | 2 +- vorestation.dme | 1 - 9 files changed, 37 insertions(+), 110 deletions(-) delete mode 100644 code/modules/clothing/spacesuits/void/station_vr.dm diff --git a/code/datums/supplypacks/munitions_vr.dm b/code/datums/supplypacks/munitions_vr.dm index 1c3e3051e8..8a86c73ad5 100644 --- a/code/datums/supplypacks/munitions_vr.dm +++ b/code/datums/supplypacks/munitions_vr.dm @@ -1,7 +1,7 @@ /datum/supply_pack/munitions/expeditionguns name = "Frontier phaser (station-locked) crate" contains = list( - /obj/item/weapon/gun/energy/frontier/locked/basic = 2, + /obj/item/weapon/gun/energy/frontier/locked = 2, /obj/item/weapon/gun/energy/frontier/locked/holdout = 1, ) cost = 35 diff --git a/code/game/machinery/suit_storage_unit_vr.dm b/code/game/machinery/suit_storage_unit_vr.dm index 53acbb3aec..f1b01d9a3c 100644 --- a/code/game/machinery/suit_storage_unit_vr.dm +++ b/code/game/machinery/suit_storage_unit_vr.dm @@ -18,47 +18,12 @@ SPECIES_ZORREN_HIGH ) -/obj/machinery/suit_cycler/explorer - name = "Explorer suit cycler" - model_text = "Exploration" +// Old Exploration is too WIP to use right now +/obj/machinery/suit_cycler/exploration + req_access = list(access_explorer) + departments = list("Exploration") + +// Pilot Blue is still missing a few sprites on polaris end +/obj/machinery/suit_cycler/pilot req_access = list(access_pilot) - departments = list("Exploration","Pilot") - -/obj/machinery/suit_cycler/explorer/initialize() - species -= SPECIES_TESHARI - return ..() - -/obj/machinery/suit_cycler/apply_paintjob() - if(!target_species || !target_department) - return - - if(target_species) - if(helmet) helmet.refit_for_species(target_species) - if(suit) suit.refit_for_species(target_species) - - switch(target_department) - if("Exploration") - if(helmet) - helmet.name = "exploration voidsuit helmet" - helmet.icon_state = "helm_explorer" - helmet.item_state = "helm_explorer" - if(suit) - suit.name = "exploration voidsuit" - suit.icon_state = "void_explorer" - suit.item_state = "void_explorer" - suit.item_state_slots[slot_r_hand_str] = "wiz_voidsuit" - suit.item_state_slots[slot_l_hand_str] = "wiz_voidsuit" - if("Pilot") - if(helmet) - helmet.name = "pilot voidsuit helmet" - helmet.icon_state = "rig0_pilot" - helmet.item_state = "pilot_helm" - if(suit) - suit.name = "pilot voidsuit" - suit.icon_state = "rig-pilot" - suit.item_state = "rig-pilot" - suit.item_state_slots[slot_r_hand_str] = "sec_voidsuitTG" - suit.item_state_slots[slot_l_hand_str] = "sec_voidsuitTG" - else - return ..() - + departments = list("Pilot") diff --git a/code/modules/clothing/spacesuits/void/station_vr.dm b/code/modules/clothing/spacesuits/void/station_vr.dm deleted file mode 100644 index d349971a05..0000000000 --- a/code/modules/clothing/spacesuits/void/station_vr.dm +++ /dev/null @@ -1,42 +0,0 @@ -//Exploration -/obj/item/clothing/head/helmet/space/void/exploration - name = "exploration voidsuit helmet" - desc = "A radiation-resistant helmet made especially for exploring unknown planetary environments." - icon_state = "helm_explorer" - item_state = "helm_explorer" - armor = list(melee = 40, bullet = 15, laser = 25,energy = 35, bomb = 30, bio = 100, rad = 70) - light_overlay = "helmet_light_dual" //explorer_light - -/obj/item/clothing/suit/space/void/exploration - name = "exploration voidsuit" - desc = "A lightweight, radiation-resistant voidsuit, featuring the Explorer emblem on its chest plate. Designed for exploring unknown planetary environments." - icon_state = "void_explorer" - armor = list(melee = 40, bullet = 15, laser = 25,energy = 35, bomb = 30, bio = 100, rad = 70) - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/stack/flag,/obj/item/device/healthanalyzer,/obj/item/device/gps,/obj/item/device/radio/beacon,/obj/item/weapon/shovel) - -/obj/item/clothing/suit/space/void/exploration/prepared - helmet = /obj/item/clothing/head/helmet/space/void/exploration - boots = /obj/item/clothing/shoes/magboots - -//Pilot -/obj/item/clothing/head/helmet/space/void/pilot - desc = "An atmos resistant helmet for space and planet exploration." - name = "pilot voidsuit helmet" - icon_state = "rig0_pilot" - item_state = "pilot_helm" - armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 15, bio = 100, rad = 50) - max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE - light_overlay = "helmet_light_dual" - -/obj/item/clothing/suit/space/void/pilot - desc = "An atmos resistant voidsuit for space and planet exploration." - icon_state = "rig-pilot" - item_state = "rig-pilot" - name = "pilot voidsuit" - armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 15, bio = 100, rad = 50) - max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROTECTION_TEMPERATURE - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/device/t_scanner,/obj/item/weapon/rcd) - -/obj/item/clothing/suit/space/void/pilot/prepared - helmet = /obj/item/clothing/head/helmet/space/void/pilot - boots = /obj/item/clothing/shoes/magboots \ No newline at end of file diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm index 5330b80006..d897855aa0 100644 --- a/code/modules/vore/fluffstuff/custom_guns_vr.dm +++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm @@ -743,6 +743,10 @@ var/recharging = 0 projectile_type = /obj/item/projectile/beam + firemodes = list( + list(mode_name="normal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60), + ) /obj/item/weapon/gun/energy/frontier/unload_ammo(var/mob/user) if(recharging) @@ -774,13 +778,6 @@ /obj/item/weapon/gun/energy/frontier/ex_act() //|rugged| return -//Needed to fix a bug with the holdout phaser -/obj/item/weapon/gun/energy/frontier/basic - firemodes = list( - list(mode_name="normal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60), - ) - /obj/item/weapon/gun/energy/frontier/locked desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." req_access = list(access_armory) //for toggling safety @@ -811,13 +808,6 @@ return 0 return ..() -//Needed to fix a bug with the holdout phaser -/obj/item/weapon/gun/energy/frontier/locked/basic - firemodes = list( - list(mode_name="normal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60), - ) - //Expeditionary Holdout Phaser /obj/item/weapon/gun/energy/frontier/locked/holdout name = "holdout frontier phaser" @@ -826,9 +816,10 @@ icon_state = "PDW" item_state = "gun" w_class = ITEMSIZE_SMALL + charge_cost = 600 firemodes = list( - list(mode_name="normal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 1200), - list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 240), + list(mode_name="normal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 600), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 120), ) /obj/item/weapon/gun/energy/frontier/locked/holdout/proc/update_mode() diff --git a/maps/southern_cross/structures/closets/misc_vr.dm b/maps/southern_cross/structures/closets/misc_vr.dm index 751009ef2e..27b0150331 100644 --- a/maps/southern_cross/structures/closets/misc_vr.dm +++ b/maps/southern_cross/structures/closets/misc_vr.dm @@ -7,7 +7,7 @@ icon_opened = "secureexpopen" icon_broken = "secureexpbroken" icon_off = "secureexpoff" - req_access = list(access_explorer) + req_access = list(access_gateway) starts_with = list( /obj/item/clothing/under/explorer, diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index af0666610c..2337b17787 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -1948,7 +1948,7 @@ dir = 8 }, /obj/effect/floor_decal/steeldecal/steel_decals9, -/obj/machinery/suit_cycler/explorer, +/obj/machinery/suit_cycler/exploration, /turf/simulated/floor/tiled, /area/tether/station/explorer_prep) "aeC" = ( @@ -22129,9 +22129,23 @@ }, /turf/simulated/floor/tiled, /area/tether/station/explorer_meeting) +"pTz" = ( +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/machinery/suit_cycler/pilot, +/turf/simulated/floor/tiled, +/area/tether/station/excursion_dock) "pYE" = ( /obj/structure/closet/secure_closet/pathfinder{ - req_access = list(18,43,67) + req_access = list(62) }, /obj/effect/floor_decal/industrial/outline/yellow, /obj/effect/floor_decal/steeldecal/steel_decals9, @@ -22462,7 +22476,7 @@ /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/research{ name = "Pathfinder's Office"; - req_access = list(18,43,67) + req_access = list(62) }, /obj/structure/cable/green{ d1 = 4; @@ -35486,7 +35500,7 @@ aad aaH aah aah -aah +pTz abc aad abU diff --git a/maps/tether/tether_shuttles.dm b/maps/tether/tether_shuttles.dm index 292533fa86..3ac68483b8 100644 --- a/maps/tether/tether_shuttles.dm +++ b/maps/tether/tether_shuttles.dm @@ -174,7 +174,7 @@ name = "shuttle control console" shuttle_tag = "Excursion Shuttle" req_access = list() - req_one_access = list(access_heads,access_explorer,access_pilot) + req_one_access = list(access_explorer,access_pilot) var/wait_time = 45 MINUTES /obj/machinery/computer/shuttle_control/web/excursion/ui_interact() diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index 14d1b1bb81..859ef9667c 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -395,7 +395,7 @@ var/global/list/latejoin_tram = list() /obj/structure/closet/secure_closet/guncabinet/excursion/New() ..() for(var/i = 1 to 4) - new /obj/item/weapon/gun/energy/frontier/locked/basic(src) + new /obj/item/weapon/gun/energy/frontier/locked(src) for(var/i = 1 to 4) new /obj/item/weapon/gun/energy/frontier/locked/holdout(src) diff --git a/vorestation.dme b/vorestation.dme index b348bd23b2..e017082406 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1610,7 +1610,6 @@ #include "code\modules\clothing\spacesuits\void\merc.dm" #include "code\modules\clothing\spacesuits\void\military_vr.dm" #include "code\modules\clothing\spacesuits\void\station.dm" -#include "code\modules\clothing\spacesuits\void\station_vr.dm" #include "code\modules\clothing\spacesuits\void\void.dm" #include "code\modules\clothing\spacesuits\void\void_vr.dm" #include "code\modules\clothing\spacesuits\void\wizard.dm" From cf9613ebddabe34d30cf5a1341daf378492fc111 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sat, 13 Oct 2018 23:38:19 -0400 Subject: [PATCH 02/18] fixes apostrophes making it impossible to view someone's info in the character directory --- code/game/verbs/character_directory.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/verbs/character_directory.dm b/code/game/verbs/character_directory.dm index b973e3cb03..3c90f09591 100644 --- a/code/game/verbs/character_directory.dm +++ b/code/game/verbs/character_directory.dm @@ -23,11 +23,11 @@ html += "
" html += "

[H.real_name]


" if(H.flavor_texts["general"]) - html += "Flavor text" - html += "" + html += "Flavor text" + html += "" if(H.ooc_notes) - html += "OOC notes" - html += "" + html += "OOC notes" + html += "" html += "
" if(!curID) html += "

404: Station not found

" From 12e34de332f16a0658be4a74dc15c9eb107942f9 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Mon, 15 Oct 2018 14:46:49 -0500 Subject: [PATCH 03/18] Move almost everything food related into the kitchen module. --- code/game/machinery/kitchen/smartfridge.dm | 388 - .../drinkingglass/drinkingglass.dm | 0 .../drinkingglass/extras.dm | 0 .../drinkingglass/glass_boxes.dm | 0 .../drinkingglass/glass_types.dm | 0 .../drinkingglass/metaglass.dm | 0 .../drinkingglass/shaker.dm | 0 .../reagent_containers => food}/food.dm | 76 +- .../reagent_containers => food}/food/cans.dm | 0 .../food/condiment.dm | 356 +- .../food/drinks.dm | 626 +- .../food/drinks/bottle.dm | 1100 +-- .../food/drinks/bottle/robot.dm | 0 .../food/drinks/cup.dm | 0 .../food/drinks/drinkingglass.dm | 354 +- .../food/drinks/jar.dm | 50 +- .../reagent_containers => food}/food/lunch.dm | 0 .../food/sandwich.dm | 0 code/modules/food/food/snacks.dm | 7740 +++++++++++++++++ .../food/snacks/meat.dm | 72 +- .../glass/bottle.dm | 348 +- .../glass/bottle/robot.dm | 50 +- .../food}/kitchen/cooking_machines/_cooker.dm | 0 .../cooking_machines/_cooker_output.dm | 0 .../food}/kitchen/cooking_machines/candy.dm | 0 .../food}/kitchen/cooking_machines/cereal.dm | 0 .../food}/kitchen/cooking_machines/fryer.dm | 0 .../food}/kitchen/cooking_machines/grill.dm | 0 .../food}/kitchen/cooking_machines/oven.dm | 0 .../food}/kitchen/gibber.dm | 472 +- .../food}/kitchen/icecream.dm | 0 .../food}/kitchen/microwave.dm | 784 +- code/modules/food/kitchen/smartfridge.dm | 779 ++ .../reagent_containers/food/snacks.dm | 3876 --------- vorestation.dme | 42 +- 35 files changed, 10704 insertions(+), 6409 deletions(-) delete mode 100644 code/game/machinery/kitchen/smartfridge.dm rename code/modules/{reagents/reagent_containers => food}/drinkingglass/drinkingglass.dm (100%) rename code/modules/{reagents/reagent_containers => food}/drinkingglass/extras.dm (100%) rename code/modules/{reagents/reagent_containers => food}/drinkingglass/glass_boxes.dm (100%) rename code/modules/{reagents/reagent_containers => food}/drinkingglass/glass_types.dm (100%) rename code/modules/{reagents/reagent_containers => food}/drinkingglass/metaglass.dm (100%) rename code/modules/{reagents/reagent_containers => food}/drinkingglass/shaker.dm (100%) rename code/modules/{reagents/reagent_containers => food}/food.dm (97%) rename code/modules/{reagents/reagent_containers => food}/food/cans.dm (100%) rename code/modules/{reagents/reagent_containers => food}/food/condiment.dm (97%) rename code/modules/{reagents/reagent_containers => food}/food/drinks.dm (97%) rename code/modules/{reagents/reagent_containers => food}/food/drinks/bottle.dm (97%) rename code/modules/{reagents/reagent_containers => food}/food/drinks/bottle/robot.dm (100%) rename code/modules/{reagents/reagent_containers => food}/food/drinks/cup.dm (100%) rename code/modules/{reagents/reagent_containers => food}/food/drinks/drinkingglass.dm (96%) rename code/modules/{reagents/reagent_containers => food}/food/drinks/jar.dm (96%) rename code/modules/{reagents/reagent_containers => food}/food/lunch.dm (100%) rename code/modules/{reagents/reagent_containers => food}/food/sandwich.dm (100%) create mode 100644 code/modules/food/food/snacks.dm rename code/modules/{reagents/reagent_containers => food}/food/snacks/meat.dm (94%) rename code/modules/{reagents/reagent_containers => food}/glass/bottle.dm (96%) rename code/modules/{reagents/reagent_containers => food}/glass/bottle/robot.dm (97%) rename code/{game/machinery => modules/food}/kitchen/cooking_machines/_cooker.dm (100%) rename code/{game/machinery => modules/food}/kitchen/cooking_machines/_cooker_output.dm (100%) rename code/{game/machinery => modules/food}/kitchen/cooking_machines/candy.dm (100%) rename code/{game/machinery => modules/food}/kitchen/cooking_machines/cereal.dm (100%) rename code/{game/machinery => modules/food}/kitchen/cooking_machines/fryer.dm (100%) rename code/{game/machinery => modules/food}/kitchen/cooking_machines/grill.dm (100%) rename code/{game/machinery => modules/food}/kitchen/cooking_machines/oven.dm (100%) rename code/{game/machinery => modules/food}/kitchen/gibber.dm (96%) rename code/{game/machinery => modules/food}/kitchen/icecream.dm (100%) rename code/{game/machinery => modules/food}/kitchen/microwave.dm (97%) create mode 100644 code/modules/food/kitchen/smartfridge.dm delete mode 100644 code/modules/reagents/reagent_containers/food/snacks.dm diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm deleted file mode 100644 index 005f7749b6..0000000000 --- a/code/game/machinery/kitchen/smartfridge.dm +++ /dev/null @@ -1,388 +0,0 @@ -/* SmartFridge. Much todo -*/ -/obj/machinery/smartfridge - name = "\improper SmartFridge" - icon = 'icons/obj/vending.dmi' - icon_state = "smartfridge" - density = 1 - anchored = 1 - use_power = 1 - idle_power_usage = 5 - active_power_usage = 100 - flags = NOREACT - var/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000. //VOREStation Edit - Non-global - var/icon_on = "smartfridge" - var/icon_off = "smartfridge-off" - var/icon_panel = "smartfridge-panel" - var/list/item_records = list() - var/datum/stored_item/currently_vending = null //What we're putting out of the machine. - var/seconds_electrified = 0; - var/shoot_inventory = 0 - var/locked = 0 - var/scan_id = 1 - var/is_secure = 0 - var/wrenchable = 0 - var/datum/wires/smartfridge/wires = null - -/obj/machinery/smartfridge/secure - is_secure = 1 - -/obj/machinery/smartfridge/New() - ..() - if(is_secure) - wires = new/datum/wires/smartfridge/secure(src) - else - wires = new/datum/wires/smartfridge(src) - -/obj/machinery/smartfridge/Destroy() - qdel(wires) - for(var/A in item_records) //Get rid of item records. - qdel(A) - wires = null - return ..() - -/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/)) - return 1 - return 0 - -/obj/machinery/smartfridge/seeds - name = "\improper MegaSeed Servitor" - desc = "When you need seeds fast!" - icon = 'icons/obj/vending.dmi' - icon_state = "seeds" - icon_on = "seeds" - icon_off = "seeds-off" - -/obj/machinery/smartfridge/seeds/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/seeds/)) - return 1 - return 0 - -/obj/machinery/smartfridge/secure/extract - name = "\improper Biological Sample Storage" - desc = "A refrigerated storage unit for xenobiological samples." - req_access = list(access_research) - -/obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj) - if(istype(O, /obj/item/slime_extract)) - return TRUE - if(istype(O, /obj/item/slimepotion)) - return TRUE - return FALSE - - -/obj/machinery/smartfridge/secure/medbay - name = "\improper Refrigerated Medicine Storage" - desc = "A refrigerated storage unit for storing medicine and chemicals." - icon_state = "smartfridge" //To fix the icon in the map editor. - icon_on = "smartfridge_chem" - req_one_access = list(access_medical,access_chemistry) - -/obj/machinery/smartfridge/secure/medbay/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/reagent_containers/glass/)) - return 1 - if(istype(O,/obj/item/weapon/storage/pill_bottle/)) - return 1 - if(istype(O,/obj/item/weapon/reagent_containers/pill/)) - return 1 - return 0 - -/obj/machinery/smartfridge/secure/virology - name = "\improper Refrigerated Virus Storage" - desc = "A refrigerated storage unit for storing viral material." - req_access = list(access_virology) - icon_state = "smartfridge_virology" - icon_on = "smartfridge_virology" - icon_off = "smartfridge_virology-off" - -/obj/machinery/smartfridge/secure/virology/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/reagent_containers/glass/beaker/vial/)) - return 1 - if(istype(O,/obj/item/weapon/virusdish/)) - return 1 - return 0 - -/obj/machinery/smartfridge/chemistry - name = "\improper Smart Chemical Storage" - desc = "A refrigerated storage unit for medicine and chemical storage." - -/obj/machinery/smartfridge/chemistry/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers)) - return 1 - return 0 - -/obj/machinery/smartfridge/chemistry/virology - name = "\improper Smart Virus Storage" - desc = "A refrigerated storage unit for volatile sample storage." - - -/obj/machinery/smartfridge/drinks - name = "\improper Drink Showcase" - desc = "A refrigerated storage unit for tasty tasty alcohol." - -/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment)) - return 1 - -/obj/machinery/smartfridge/drying_rack - name = "\improper Drying Rack" - desc = "A machine for drying plants." - wrenchable = 1 - icon_state = "drying_rack" - icon_on = "drying_rack_on" - icon_off = "drying_rack" - icon_panel = "drying_rack-panel" - -/obj/machinery/smartfridge/drying_rack/accept_check(var/obj/item/O as obj) - if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/)) - var/obj/item/weapon/reagent_containers/food/snacks/S = O - if (S.dried_type) - return 1 - return 0 - -/obj/machinery/smartfridge/drying_rack/process() - ..() - if(stat & (BROKEN|NOPOWER)) - return - if(contents.len) - dry() - update_icon() - -/obj/machinery/smartfridge/drying_rack/update_icon() - overlays.Cut() - var/not_working = stat & (BROKEN|NOPOWER) - if(not_working) - icon_state = icon_off - else - icon_state = icon_on - var/hasItems - for(var/datum/stored_item/I in item_records) - if(I.get_amount()) - hasItems = 1 - break - if(hasItems) - overlays += "drying_rack_filled" - if(!not_working) - overlays += "drying_rack_drying" - -/obj/machinery/smartfridge/drying_rack/proc/dry() - for(var/datum/stored_item/I in item_records) - for(var/obj/item/weapon/reagent_containers/food/snacks/S in I.instances) - if(S.dry) continue - if(S.dried_type == S.type) - S.dry = 1 - S.name = "dried [S.name]" - S.color = "#AAAAAA" - I.instances -= S - S.forceMove(get_turf(src)) - else - var/D = S.dried_type - new D(get_turf(src)) - qdel(S) - return - return - -/obj/machinery/smartfridge/process() - if(stat & (BROKEN|NOPOWER)) - return - if(src.seconds_electrified > 0) - src.seconds_electrified-- - if(src.shoot_inventory && prob(2)) - src.throw_item() - -/obj/machinery/smartfridge/power_change() - var/old_stat = stat - ..() - if(old_stat != stat) - update_icon() - -/obj/machinery/smartfridge/update_icon() - if(stat & (BROKEN|NOPOWER)) - icon_state = icon_off - else - icon_state = icon_on - -/******************* -* Item Adding -********************/ - -/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(O.is_screwdriver()) - panel_open = !panel_open - user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].") - playsound(src, O.usesound, 50, 1) - overlays.Cut() - if(panel_open) - overlays += image(icon, icon_panel) - GLOB.nanomanager.update_uis(src) - return - - if(wrenchable && default_unfasten_wrench(user, O, 20)) - return - - if(istype(O, /obj/item/device/multitool) || O.is_wirecutter()) - if(panel_open) - attack_hand(user) - return - - if(stat & NOPOWER) - to_chat(user, "\The [src] is unpowered and useless.") - return - - if(accept_check(O)) - user.remove_from_mob(O) - stock(O) - user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].") - - - else if(istype(O, /obj/item/weapon/storage/bag)) - var/obj/item/weapon/storage/bag/P = O - var/plants_loaded = 0 - for(var/obj/G in P.contents) - if(accept_check(G)) - P.remove_from_storage(G) //fixes ui bug - Pull Request 5515 - stock(G) - plants_loaded = 1 - if(plants_loaded) - user.visible_message("[user] loads \the [src] with \the [P].", "You load \the [src] with \the [P].") - if(P.contents.len > 0) - to_chat(user, "Some items are refused.") - - else if(istype(O, /obj/item/weapon/gripper)) // Grippers. ~Mechoid. - var/obj/item/weapon/gripper/B = O //B, for Borg. - if(!B.wrapped) - to_chat(user, "\The [B] is not holding anything.") - return - else - var/B_held = B.wrapped - to_chat(user, "You use \the [B] to put \the [B_held] into \the [src].") - return - - else - to_chat(user, "\The [src] smartly refuses [O].") - return 1 - -/obj/machinery/smartfridge/secure/emag_act(var/remaining_charges, var/mob/user) - if(!emagged) - emagged = 1 - locked = -1 - to_chat(user, "You short out the product lock on [src].") - return 1 - -/obj/machinery/smartfridge/proc/stock(obj/item/O) - var/hasRecord = FALSE //Check to see if this passes or not. - for(var/datum/stored_item/I in item_records) - if((O.type == I.item_path) && (O.name == I.item_name)) - I.add_product(O) - hasRecord = TRUE - break - if(!hasRecord) - var/datum/stored_item/item = new/datum/stored_item(src, O.type, O.name) - item.add_product(O) - item_records.Add(item) - GLOB.nanomanager.update_uis(src) - -/obj/machinery/smartfridge/proc/vend(datum/stored_item/I) - I.get_product(get_turf(src)) - GLOB.nanomanager.update_uis(src) - -/obj/machinery/smartfridge/attack_ai(mob/user as mob) - attack_hand(user) - -/obj/machinery/smartfridge/attack_hand(mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - wires.Interact(user) - ui_interact(user) - -/******************* -* SmartFridge Menu -********************/ - -/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - user.set_machine(src) - - var/data[0] - data["contents"] = null - data["electrified"] = seconds_electrified > 0 - data["shoot_inventory"] = shoot_inventory - data["locked"] = locked - data["secure"] = is_secure - - var/list/items[0] - for (var/i=1 to length(item_records)) - var/datum/stored_item/I = item_records[i] - var/count = I.get_amount() - if(count > 0) - items.Add(list(list("display_name" = html_encode(capitalize(I.item_name)), "vend" = i, "quantity" = count))) - - if(items.len > 0) - data["contents"] = items - - ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) - if(!ui) - ui = new(user, src, ui_key, "smartfridge.tmpl", src.name, 400, 500) - ui.set_initial_data(data) - ui.open() - -/obj/machinery/smartfridge/Topic(href, href_list) - if(..()) return 0 - - var/mob/user = usr - var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main") - - src.add_fingerprint(user) - - if(href_list["close"]) - user.unset_machine() - ui.close() - return 0 - - if(href_list["vend"]) - var/index = text2num(href_list["vend"]) - var/amount = text2num(href_list["amount"]) - var/datum/stored_item/I = item_records[index] - var/count = I.get_amount() - - // Sanity check, there are probably ways to press the button when it shouldn't be possible. - if(count > 0) - if((count - amount) < 0) - amount = count - for(var/i = 1 to amount) - vend(I) - - return 1 - return 0 - -/obj/machinery/smartfridge/proc/throw_item() - var/obj/throw_item = null - var/mob/living/target = locate() in view(7,src) - if(!target) - return 0 - - for(var/datum/stored_item/I in item_records) - throw_item = I.get_product(get_turf(src)) - if (!throw_item) - continue - break - - if(!throw_item) - return 0 - spawn(0) - throw_item.throw_at(target,16,3,src) - src.visible_message("[src] launches [throw_item.name] at [target.name]!") - return 1 - -/************************ -* Secure SmartFridges -*************************/ - -/obj/machinery/smartfridge/secure/Topic(href, href_list) - if(stat & (NOPOWER|BROKEN)) - return 0 - if(usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) - if(!allowed(usr) && !emagged && locked != -1 && href_list["vend"]) - to_chat(usr, "Access denied.") - return 0 - return ..() diff --git a/code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm b/code/modules/food/drinkingglass/drinkingglass.dm similarity index 100% rename from code/modules/reagents/reagent_containers/drinkingglass/drinkingglass.dm rename to code/modules/food/drinkingglass/drinkingglass.dm diff --git a/code/modules/reagents/reagent_containers/drinkingglass/extras.dm b/code/modules/food/drinkingglass/extras.dm similarity index 100% rename from code/modules/reagents/reagent_containers/drinkingglass/extras.dm rename to code/modules/food/drinkingglass/extras.dm diff --git a/code/modules/reagents/reagent_containers/drinkingglass/glass_boxes.dm b/code/modules/food/drinkingglass/glass_boxes.dm similarity index 100% rename from code/modules/reagents/reagent_containers/drinkingglass/glass_boxes.dm rename to code/modules/food/drinkingglass/glass_boxes.dm diff --git a/code/modules/reagents/reagent_containers/drinkingglass/glass_types.dm b/code/modules/food/drinkingglass/glass_types.dm similarity index 100% rename from code/modules/reagents/reagent_containers/drinkingglass/glass_types.dm rename to code/modules/food/drinkingglass/glass_types.dm diff --git a/code/modules/reagents/reagent_containers/drinkingglass/metaglass.dm b/code/modules/food/drinkingglass/metaglass.dm similarity index 100% rename from code/modules/reagents/reagent_containers/drinkingglass/metaglass.dm rename to code/modules/food/drinkingglass/metaglass.dm diff --git a/code/modules/reagents/reagent_containers/drinkingglass/shaker.dm b/code/modules/food/drinkingglass/shaker.dm similarity index 100% rename from code/modules/reagents/reagent_containers/drinkingglass/shaker.dm rename to code/modules/food/drinkingglass/shaker.dm diff --git a/code/modules/reagents/reagent_containers/food.dm b/code/modules/food/food.dm similarity index 97% rename from code/modules/reagents/reagent_containers/food.dm rename to code/modules/food/food.dm index a99c9cdf24..330dfaab7e 100644 --- a/code/modules/reagents/reagent_containers/food.dm +++ b/code/modules/food/food.dm @@ -1,38 +1,38 @@ -#define CELLS 8 -#define CELLSIZE (32/CELLS) - -//////////////////////////////////////////////////////////////////////////////// -/// Food. -//////////////////////////////////////////////////////////////////////////////// -/obj/item/weapon/reagent_containers/food - possible_transfer_amounts = null - volume = 50 //Sets the default container amount for all food items. - var/filling_color = "#FFFFFF" //Used by sandwiches. - - var/list/center_of_mass = list() // Used for table placement - -/obj/item/weapon/reagent_containers/food/New() - ..() - if (center_of_mass.len && !pixel_x && !pixel_y) - src.pixel_x = rand(-6.0, 6) //Randomizes postion - src.pixel_y = rand(-6.0, 6) - -/obj/item/weapon/reagent_containers/food/afterattack(atom/A, mob/user, proximity, params) - if(center_of_mass.len && proximity && params && istype(A, /obj/structure/table)) - //Places the item on a grid - var/list/mouse_control = params2list(params) - - var/mouse_x = text2num(mouse_control["icon-x"]) - var/mouse_y = text2num(mouse_control["icon-y"]) - - if(!isnum(mouse_x) || !isnum(mouse_y)) - return - - var/cell_x = max(0, min(CELLS-1, round(mouse_x/CELLSIZE))) - var/cell_y = max(0, min(CELLS-1, round(mouse_y/CELLSIZE))) - - pixel_x = (CELLSIZE * (0.5 + cell_x)) - center_of_mass["x"] - pixel_y = (CELLSIZE * (0.5 + cell_y)) - center_of_mass["y"] - -#undef CELLS -#undef CELLSIZE +#define CELLS 8 +#define CELLSIZE (32/CELLS) + +//////////////////////////////////////////////////////////////////////////////// +/// Food. +//////////////////////////////////////////////////////////////////////////////// +/obj/item/weapon/reagent_containers/food + possible_transfer_amounts = null + volume = 50 //Sets the default container amount for all food items. + var/filling_color = "#FFFFFF" //Used by sandwiches. + + var/list/center_of_mass = list() // Used for table placement + +/obj/item/weapon/reagent_containers/food/New() + ..() + if (center_of_mass.len && !pixel_x && !pixel_y) + src.pixel_x = rand(-6.0, 6) //Randomizes postion + src.pixel_y = rand(-6.0, 6) + +/obj/item/weapon/reagent_containers/food/afterattack(atom/A, mob/user, proximity, params) + if(center_of_mass.len && proximity && params && istype(A, /obj/structure/table)) + //Places the item on a grid + var/list/mouse_control = params2list(params) + + var/mouse_x = text2num(mouse_control["icon-x"]) + var/mouse_y = text2num(mouse_control["icon-y"]) + + if(!isnum(mouse_x) || !isnum(mouse_y)) + return + + var/cell_x = max(0, min(CELLS-1, round(mouse_x/CELLSIZE))) + var/cell_y = max(0, min(CELLS-1, round(mouse_y/CELLSIZE))) + + pixel_x = (CELLSIZE * (0.5 + cell_x)) - center_of_mass["x"] + pixel_y = (CELLSIZE * (0.5 + cell_y)) - center_of_mass["y"] + +#undef CELLS +#undef CELLSIZE diff --git a/code/modules/reagents/reagent_containers/food/cans.dm b/code/modules/food/food/cans.dm similarity index 100% rename from code/modules/reagents/reagent_containers/food/cans.dm rename to code/modules/food/food/cans.dm diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/food/food/condiment.dm similarity index 97% rename from code/modules/reagents/reagent_containers/food/condiment.dm rename to code/modules/food/food/condiment.dm index 7257ac65b1..8ab7f34c79 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/food/food/condiment.dm @@ -1,178 +1,178 @@ - -///////////////////////////////////////////////Condiments -//Notes by Darem: The condiments food-subtype is for stuff you don't actually eat but you use to modify existing food. They all -// leave empty containers when used up and can be filled/re-filled with other items. Formatting for first section is identical -// to mixed-drinks code. If you want an object that starts pre-loaded, you need to make it in addition to the other code. - -//Food items that aren't eaten normally and leave an empty container behind. -/obj/item/weapon/reagent_containers/food/condiment - name = "Condiment Container" - desc = "Just your average condiment container." - icon = 'icons/obj/food.dmi' - icon_state = "emptycondiment" - flags = OPENCONTAINER - possible_transfer_amounts = list(1,5,10) - center_of_mass = list("x"=16, "y"=6) - volume = 50 - -/obj/item/weapon/reagent_containers/food/condiment/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) - return - -/obj/item/weapon/reagent_containers/food/condiment/attack_self(var/mob/user as mob) - return - -/obj/item/weapon/reagent_containers/food/condiment/attack(var/mob/M as mob, var/mob/user as mob, var/def_zone) - if(standard_feed_mob(user, M)) - return - -/obj/item/weapon/reagent_containers/food/condiment/afterattack(var/obj/target, var/mob/user, var/flag) - if(standard_dispenser_refill(user, target)) - return - if(standard_pour_into(user, target)) - return - - if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) // These are not opencontainers but we can transfer to them - if(!reagents || !reagents.total_volume) - user << "There is no condiment left in \the [src]." - return - - if(!target.reagents.get_free_space()) - user << "You can't add more condiment to \the [target]." - return - - var/trans = reagents.trans_to_obj(target, amount_per_transfer_from_this) - user << "You add [trans] units of the condiment to \the [target]." - else - ..() - -/obj/item/weapon/reagent_containers/food/condiment/feed_sound(var/mob/user) - playsound(user.loc, 'sound/items/drink.ogg', rand(10, 50), 1) - -/obj/item/weapon/reagent_containers/food/condiment/self_feed_message(var/mob/user) - user << "You swallow some of contents of \the [src]." - -/obj/item/weapon/reagent_containers/food/condiment/on_reagent_change() - if(reagents.reagent_list.len > 0) - switch(reagents.get_master_reagent_id()) - if("ketchup") - name = "Ketchup" - desc = "You feel more American already." - icon_state = "ketchup" - center_of_mass = list("x"=16, "y"=6) - if("capsaicin") - name = "Hotsauce" - desc = "You can almost TASTE the stomach ulcers now!" - icon_state = "hotsauce" - center_of_mass = list("x"=16, "y"=6) - if("enzyme") - name = "Universal Enzyme" - desc = "Used in cooking various dishes." - icon_state = "enzyme" - center_of_mass = list("x"=16, "y"=6) - if("soysauce") - name = "Soy Sauce" - desc = "A salty soy-based flavoring." - icon_state = "soysauce" - center_of_mass = list("x"=16, "y"=6) - if("frostoil") - name = "Coldsauce" - desc = "Leaves the tongue numb in its passage." - icon_state = "coldsauce" - center_of_mass = list("x"=16, "y"=6) - if("sodiumchloride") - name = "Salt Shaker" - desc = "Salt. From space oceans, presumably." - icon_state = "saltshaker" - center_of_mass = list("x"=16, "y"=10) - if("blackpepper") - name = "Pepper Mill" - desc = "Often used to flavor food or make people sneeze." - icon_state = "peppermillsmall" - center_of_mass = list("x"=16, "y"=10) - if("cornoil") - name = "Corn Oil" - desc = "A delicious oil used in cooking. Made from corn." - icon_state = "oliveoil" - center_of_mass = list("x"=16, "y"=6) - if("sugar") - name = "Sugar" - desc = "Tastey space sugar!" - center_of_mass = list("x"=16, "y"=6) - else - name = "Misc Condiment Bottle" - if (reagents.reagent_list.len==1) - desc = "Looks like it is [reagents.get_master_reagent_name()], but you are not sure." - else - desc = "A mixture of various condiments. [reagents.get_master_reagent_name()] is one of them." - icon_state = "mixedcondiments" - center_of_mass = list("x"=16, "y"=6) - else - icon_state = "emptycondiment" - name = "Condiment Bottle" - desc = "An empty condiment bottle." - center_of_mass = list("x"=16, "y"=6) - return - -/obj/item/weapon/reagent_containers/food/condiment/enzyme - name = "Universal Enzyme" - desc = "Used in cooking various dishes." - icon_state = "enzyme" - -/obj/item/weapon/reagent_containers/food/condiment/enzyme/New() - ..() - reagents.add_reagent("enzyme", 50) - -/obj/item/weapon/reagent_containers/food/condiment/sugar/New() - ..() - reagents.add_reagent("sugar", 50) - -/obj/item/weapon/reagent_containers/food/condiment/small - possible_transfer_amounts = list(1,20) - amount_per_transfer_from_this = 1 - volume = 20 - center_of_mass = list() - -/obj/item/weapon/reagent_containers/food/condiment/small/on_reagent_change() - return - -/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker //Seperate from above since it's a small shaker rather then - name = "salt shaker" // a large one. - desc = "Salt. From space oceans, presumably." - icon_state = "saltshakersmall" - -/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker/New() - ..() - reagents.add_reagent("sodiumchloride", 20) - -/obj/item/weapon/reagent_containers/food/condiment/small/peppermill - name = "pepper mill" - desc = "Often used to flavor food or make people sneeze." - icon_state = "peppermillsmall" - -/obj/item/weapon/reagent_containers/food/condiment/small/peppermill/New() - ..() - reagents.add_reagent("blackpepper", 20) - -/obj/item/weapon/reagent_containers/food/condiment/small/sugar - name = "sugar" - desc = "Sweetness in a bottle" - icon_state = "sugarsmall" - -/obj/item/weapon/reagent_containers/food/condiment/small/sugar/New() - ..() - reagents.add_reagent("sugar", 20) - -/obj/item/weapon/reagent_containers/food/condiment/flour - name = "flour sack" - desc = "A big bag of flour. Good for baking!" - icon = 'icons/obj/food.dmi' - icon_state = "flour" - -/obj/item/weapon/reagent_containers/food/condiment/flour/on_reagent_change() - return - -/obj/item/weapon/reagent_containers/food/condiment/flour/New() - ..() - reagents.add_reagent("flour", 30) - src.pixel_x = rand(-10.0, 10) - src.pixel_y = rand(-10.0, 10) + +///////////////////////////////////////////////Condiments +//Notes by Darem: The condiments food-subtype is for stuff you don't actually eat but you use to modify existing food. They all +// leave empty containers when used up and can be filled/re-filled with other items. Formatting for first section is identical +// to mixed-drinks code. If you want an object that starts pre-loaded, you need to make it in addition to the other code. + +//Food items that aren't eaten normally and leave an empty container behind. +/obj/item/weapon/reagent_containers/food/condiment + name = "Condiment Container" + desc = "Just your average condiment container." + icon = 'icons/obj/food.dmi' + icon_state = "emptycondiment" + flags = OPENCONTAINER + possible_transfer_amounts = list(1,5,10) + center_of_mass = list("x"=16, "y"=6) + volume = 50 + +/obj/item/weapon/reagent_containers/food/condiment/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + return + +/obj/item/weapon/reagent_containers/food/condiment/attack_self(var/mob/user as mob) + return + +/obj/item/weapon/reagent_containers/food/condiment/attack(var/mob/M as mob, var/mob/user as mob, var/def_zone) + if(standard_feed_mob(user, M)) + return + +/obj/item/weapon/reagent_containers/food/condiment/afterattack(var/obj/target, var/mob/user, var/flag) + if(standard_dispenser_refill(user, target)) + return + if(standard_pour_into(user, target)) + return + + if(istype(target, /obj/item/weapon/reagent_containers/food/snacks)) // These are not opencontainers but we can transfer to them + if(!reagents || !reagents.total_volume) + user << "There is no condiment left in \the [src]." + return + + if(!target.reagents.get_free_space()) + user << "You can't add more condiment to \the [target]." + return + + var/trans = reagents.trans_to_obj(target, amount_per_transfer_from_this) + user << "You add [trans] units of the condiment to \the [target]." + else + ..() + +/obj/item/weapon/reagent_containers/food/condiment/feed_sound(var/mob/user) + playsound(user.loc, 'sound/items/drink.ogg', rand(10, 50), 1) + +/obj/item/weapon/reagent_containers/food/condiment/self_feed_message(var/mob/user) + user << "You swallow some of contents of \the [src]." + +/obj/item/weapon/reagent_containers/food/condiment/on_reagent_change() + if(reagents.reagent_list.len > 0) + switch(reagents.get_master_reagent_id()) + if("ketchup") + name = "Ketchup" + desc = "You feel more American already." + icon_state = "ketchup" + center_of_mass = list("x"=16, "y"=6) + if("capsaicin") + name = "Hotsauce" + desc = "You can almost TASTE the stomach ulcers now!" + icon_state = "hotsauce" + center_of_mass = list("x"=16, "y"=6) + if("enzyme") + name = "Universal Enzyme" + desc = "Used in cooking various dishes." + icon_state = "enzyme" + center_of_mass = list("x"=16, "y"=6) + if("soysauce") + name = "Soy Sauce" + desc = "A salty soy-based flavoring." + icon_state = "soysauce" + center_of_mass = list("x"=16, "y"=6) + if("frostoil") + name = "Coldsauce" + desc = "Leaves the tongue numb in its passage." + icon_state = "coldsauce" + center_of_mass = list("x"=16, "y"=6) + if("sodiumchloride") + name = "Salt Shaker" + desc = "Salt. From space oceans, presumably." + icon_state = "saltshaker" + center_of_mass = list("x"=16, "y"=10) + if("blackpepper") + name = "Pepper Mill" + desc = "Often used to flavor food or make people sneeze." + icon_state = "peppermillsmall" + center_of_mass = list("x"=16, "y"=10) + if("cornoil") + name = "Corn Oil" + desc = "A delicious oil used in cooking. Made from corn." + icon_state = "oliveoil" + center_of_mass = list("x"=16, "y"=6) + if("sugar") + name = "Sugar" + desc = "Tastey space sugar!" + center_of_mass = list("x"=16, "y"=6) + else + name = "Misc Condiment Bottle" + if (reagents.reagent_list.len==1) + desc = "Looks like it is [reagents.get_master_reagent_name()], but you are not sure." + else + desc = "A mixture of various condiments. [reagents.get_master_reagent_name()] is one of them." + icon_state = "mixedcondiments" + center_of_mass = list("x"=16, "y"=6) + else + icon_state = "emptycondiment" + name = "Condiment Bottle" + desc = "An empty condiment bottle." + center_of_mass = list("x"=16, "y"=6) + return + +/obj/item/weapon/reagent_containers/food/condiment/enzyme + name = "Universal Enzyme" + desc = "Used in cooking various dishes." + icon_state = "enzyme" + +/obj/item/weapon/reagent_containers/food/condiment/enzyme/New() + ..() + reagents.add_reagent("enzyme", 50) + +/obj/item/weapon/reagent_containers/food/condiment/sugar/New() + ..() + reagents.add_reagent("sugar", 50) + +/obj/item/weapon/reagent_containers/food/condiment/small + possible_transfer_amounts = list(1,20) + amount_per_transfer_from_this = 1 + volume = 20 + center_of_mass = list() + +/obj/item/weapon/reagent_containers/food/condiment/small/on_reagent_change() + return + +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker //Seperate from above since it's a small shaker rather then + name = "salt shaker" // a large one. + desc = "Salt. From space oceans, presumably." + icon_state = "saltshakersmall" + +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker/New() + ..() + reagents.add_reagent("sodiumchloride", 20) + +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill + name = "pepper mill" + desc = "Often used to flavor food or make people sneeze." + icon_state = "peppermillsmall" + +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill/New() + ..() + reagents.add_reagent("blackpepper", 20) + +/obj/item/weapon/reagent_containers/food/condiment/small/sugar + name = "sugar" + desc = "Sweetness in a bottle" + icon_state = "sugarsmall" + +/obj/item/weapon/reagent_containers/food/condiment/small/sugar/New() + ..() + reagents.add_reagent("sugar", 20) + +/obj/item/weapon/reagent_containers/food/condiment/flour + name = "flour sack" + desc = "A big bag of flour. Good for baking!" + icon = 'icons/obj/food.dmi' + icon_state = "flour" + +/obj/item/weapon/reagent_containers/food/condiment/flour/on_reagent_change() + return + +/obj/item/weapon/reagent_containers/food/condiment/flour/New() + ..() + reagents.add_reagent("flour", 30) + src.pixel_x = rand(-10.0, 10) + src.pixel_y = rand(-10.0, 10) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/food/food/drinks.dm similarity index 97% rename from code/modules/reagents/reagent_containers/food/drinks.dm rename to code/modules/food/food/drinks.dm index 4146c967c8..af4dd0fb53 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/food/food/drinks.dm @@ -1,313 +1,313 @@ -//////////////////////////////////////////////////////////////////////////////// -/// Drinks. -//////////////////////////////////////////////////////////////////////////////// -/obj/item/weapon/reagent_containers/food/drinks - name = "drink" - desc = "yummy" - icon = 'icons/obj/drinks.dmi' - icon_state = null - flags = OPENCONTAINER - amount_per_transfer_from_this = 5 - volume = 50 - -/obj/item/weapon/reagent_containers/food/drinks/on_reagent_change() - if (reagents.reagent_list.len > 0) - var/datum/reagent/R = reagents.get_master_reagent() - if(R.price_tag) - price_tag = R.price_tag - else - price_tag = null - return - -/obj/item/weapon/reagent_containers/food/drinks/attack_self(mob/user as mob) - if(!is_open_container()) - open(user) - -/obj/item/weapon/reagent_containers/food/drinks/proc/open(mob/user) - playsound(loc,"canopen", rand(10,50), 1) - user << "You open [src] with an audible pop!" - flags |= OPENCONTAINER - -/obj/item/weapon/reagent_containers/food/drinks/attack(mob/M as mob, mob/user as mob, def_zone) - if(force && !(flags & NOBLUDGEON) && user.a_intent == I_HURT) - return ..() - - if(standard_feed_mob(user, M)) - return - - return 0 - -/obj/item/weapon/reagent_containers/food/drinks/afterattack(obj/target, mob/user, proximity) - if(!proximity) return - - if(standard_dispenser_refill(user, target)) - return - if(standard_pour_into(user, target)) - return - return ..() - -/obj/item/weapon/reagent_containers/food/drinks/standard_feed_mob(var/mob/user, var/mob/target) - if(!is_open_container()) - user << "You need to open [src]!" - return 1 - return ..() - -/obj/item/weapon/reagent_containers/food/drinks/standard_dispenser_refill(var/mob/user, var/obj/structure/reagent_dispensers/target) - if(!is_open_container()) - user << "You need to open [src]!" - return 1 - return ..() - -/obj/item/weapon/reagent_containers/food/drinks/standard_pour_into(var/mob/user, var/atom/target) - if(!is_open_container()) - user << "You need to open [src]!" - return 1 - return ..() - -/obj/item/weapon/reagent_containers/food/drinks/self_feed_message(var/mob/user) - user << "You swallow a gulp from \the [src]." - -/obj/item/weapon/reagent_containers/food/drinks/feed_sound(var/mob/user) - playsound(user.loc, 'sound/items/drink.ogg', rand(10, 50), 1) - -/obj/item/weapon/reagent_containers/food/drinks/examine(mob/user) - if(!..(user, 1)) - return - if(!reagents || reagents.total_volume == 0) - user << "\The [src] is empty!" - else if (reagents.total_volume <= volume * 0.25) - user << "\The [src] is almost empty!" - else if (reagents.total_volume <= volume * 0.66) - user << "\The [src] is half full!" - else if (reagents.total_volume <= volume * 0.90) - user << "\The [src] is almost full!" - else - user << "\The [src] is full!" - - -//////////////////////////////////////////////////////////////////////////////// -/// Drinks. END -//////////////////////////////////////////////////////////////////////////////// - -/obj/item/weapon/reagent_containers/food/drinks/golden_cup - desc = "A golden cup" - name = "golden cup" - icon_state = "golden_cup" - item_state = "" //nope :( - w_class = ITEMSIZE_LARGE - force = 14 - throwforce = 10 - amount_per_transfer_from_this = 20 - possible_transfer_amounts = null - volume = 150 - flags = CONDUCT | OPENCONTAINER - -/obj/item/weapon/reagent_containers/food/drinks/golden_cup/on_reagent_change() - ..() - -///////////////////////////////////////////////Drinks -//Notes by Darem: Drinks are simply containers that start preloaded. Unlike condiments, the contents can be ingested directly -// rather then having to add it to something else first. They should only contain liquids. They have a default container size of 50. -// Formatting is the same as food. - -/obj/item/weapon/reagent_containers/food/drinks/milk - name = "milk carton" - desc = "It's milk. White and nutritious goodness!" - icon_state = "milk" - item_state = "carton" - center_of_mass = list("x"=16, "y"=9) - -/obj/item/weapon/reagent_containers/food/drinks/milk/New() - ..() - reagents.add_reagent("milk", 50) - -/obj/item/weapon/reagent_containers/food/drinks/soymilk - name = "soymilk carton" - desc = "It's soy milk. White and nutritious goodness!" - icon_state = "soymilk" - item_state = "carton" - center_of_mass = list("x"=16, "y"=9) -/obj/item/weapon/reagent_containers/food/drinks/soymilk/New() - ..() - reagents.add_reagent("soymilk", 50) - -/obj/item/weapon/reagent_containers/food/drinks/smallmilk - name = "small milk carton" - desc = "It's milk. White and nutritious goodness!" - volume = 30 - icon_state = "mini-milk" - item_state = "carton" - center_of_mass = list("x"=16, "y"=9) -/obj/item/weapon/reagent_containers/food/drinks/smallmilk/New() - ..() - reagents.add_reagent("milk", 30) - -/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk - name = "small chocolate milk carton" - desc = "It's milk! This one is in delicious chocolate flavour." - volume = 30 - icon_state = "mini-milk_choco" - item_state = "carton" - center_of_mass = list("x"=16, "y"=9) -/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk/New() - ..() - reagents.add_reagent("chocolate_milk", 30) - -/obj/item/weapon/reagent_containers/food/drinks/coffee - name = "\improper Robust Coffee" - desc = "Careful, the beverage you're about to enjoy is extremely hot." - icon_state = "coffee" - center_of_mass = list("x"=15, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/coffee/New() - ..() - reagents.add_reagent("coffee", 30) - -/obj/item/weapon/reagent_containers/food/drinks/tea - name = "cup of Duke Purple Tea" - desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea." - icon_state = "teacup" - item_state = "coffee" - center_of_mass = list("x"=16, "y"=14) - -/obj/item/weapon/reagent_containers/food/drinks/tea/New() - ..() - reagents.add_reagent("tea", 30) - -/obj/item/weapon/reagent_containers/food/drinks/ice - name = "cup of ice" - desc = "Careful, cold ice, do not chew." - icon_state = "coffee" - center_of_mass = list("x"=15, "y"=10) -/obj/item/weapon/reagent_containers/food/drinks/ice/New() - ..() - reagents.add_reagent("ice", 30) - -/obj/item/weapon/reagent_containers/food/drinks/h_chocolate - name = "cup of Dutch hot coco" - desc = "Made in Space South America." - icon_state = "hot_coco" - item_state = "coffee" - center_of_mass = list("x"=15, "y"=13) - -/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/New() - ..() - reagents.add_reagent("hot_coco", 30) - -/obj/item/weapon/reagent_containers/food/drinks/dry_ramen - name = "Cup Ramen" - desc = "Just add 10ml water, self heats! A taste that reminds you of your school years." - icon_state = "ramen" - center_of_mass = list("x"=16, "y"=11) -/obj/item/weapon/reagent_containers/food/drinks/dry_ramen/New() - ..() - reagents.add_reagent("dry_ramen", 30) - -/obj/item/weapon/reagent_containers/food/drinks/sillycup - name = "paper cup" - desc = "A paper water cup." - icon_state = "water_cup_e" - possible_transfer_amounts = null - volume = 10 - center_of_mass = list("x"=16, "y"=12) - -/obj/item/weapon/reagent_containers/food/drinks/sillycup/New() - ..() - -/obj/item/weapon/reagent_containers/food/drinks/sillycup/on_reagent_change() - ..() - if(reagents.total_volume) - icon_state = "water_cup" - else - icon_state = "water_cup_e" - -/obj/item/weapon/reagent_containers/food/drinks/sillycup/MouseDrop(obj/over_object as obj) - if(!reagents.total_volume && istype(over_object, /obj/structure/reagent_dispensers/water_cooler)) - if(over_object.Adjacent(usr)) - var/obj/structure/reagent_dispensers/water_cooler/W = over_object - if(W.cupholder && W.cups < 10) - W.cups++ - usr << "You put the [src] in the cup dispenser." - qdel(src) - W.update_icon() - else - return ..() - -//////////////////////////drinkingglass and shaker// -//Note by Darem: This code handles the mixing of drinks. New drinks go in three places: In Chemistry-Reagents.dm (for the drink -// itself), in Chemistry-Recipes.dm (for the reaction that changes the components into the drink), and here (for the drinking glass -// icon states. - -/obj/item/weapon/reagent_containers/food/drinks/shaker - name = "shaker" - desc = "A metal shaker to mix drinks in." - icon_state = "shaker" - amount_per_transfer_from_this = 10 - volume = 120 - center_of_mass = list("x"=17, "y"=10) - -/obj/item/weapon/reagent_containers/food/drinks/shaker/on_reagent_change() - ..() - -/obj/item/weapon/reagent_containers/food/drinks/teapot - name = "teapot" - desc = "An elegant teapot. It simply oozes class." - icon_state = "teapot" - item_state = "teapot" - amount_per_transfer_from_this = 10 - volume = 120 - center_of_mass = list("x"=17, "y"=7) - -/obj/item/weapon/reagent_containers/food/drinks/teapot/on_reagent_change() - ..() - -/obj/item/weapon/reagent_containers/food/drinks/flask - name = "\improper Colony Director's flask" - desc = "A metal flask belonging to the Colony Director" - icon_state = "flask" - volume = 60 - center_of_mass = list("x"=17, "y"=7) - -/obj/item/weapon/reagent_containers/food/drinks/flask/on_reagent_change() - ..() - -/obj/item/weapon/reagent_containers/food/drinks/flask/shiny - name = "shiny flask" - desc = "A shiny metal flask. It appears to have a Greek symbol inscribed on it." - icon_state = "shinyflask" - -/obj/item/weapon/reagent_containers/food/drinks/flask/lithium - name = "lithium flask" - desc = "A flask with a Lithium Atom symbol on it." - icon_state = "lithiumflask" - -/obj/item/weapon/reagent_containers/food/drinks/flask/detflask - name = "\improper Detective's flask" - desc = "A metal flask with a leather band and golden badge belonging to the detective." - icon_state = "detflask" - volume = 60 - center_of_mass = list("x"=17, "y"=8) - -/obj/item/weapon/reagent_containers/food/drinks/flask/barflask - name = "flask" - desc = "For those who can't be bothered to hang out at the bar to drink." - icon_state = "barflask" - volume = 60 - center_of_mass = list("x"=17, "y"=7) - -/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask - name = "vacuum flask" - desc = "Keeping your drinks at the perfect temperature since 1892." - icon_state = "vacuumflask" - volume = 60 - center_of_mass = list("x"=15, "y"=4) - -/obj/item/weapon/reagent_containers/food/drinks/britcup - name = "cup" - desc = "A cup with the British flag emblazoned on it." - icon_state = "britcup" - volume = 30 - center_of_mass = list("x"=15, "y"=13) - -/obj/item/weapon/reagent_containers/food/drinks/britcup/on_reagent_change() - ..() - +//////////////////////////////////////////////////////////////////////////////// +/// Drinks. +//////////////////////////////////////////////////////////////////////////////// +/obj/item/weapon/reagent_containers/food/drinks + name = "drink" + desc = "yummy" + icon = 'icons/obj/drinks.dmi' + icon_state = null + flags = OPENCONTAINER + amount_per_transfer_from_this = 5 + volume = 50 + +/obj/item/weapon/reagent_containers/food/drinks/on_reagent_change() + if (reagents.reagent_list.len > 0) + var/datum/reagent/R = reagents.get_master_reagent() + if(R.price_tag) + price_tag = R.price_tag + else + price_tag = null + return + +/obj/item/weapon/reagent_containers/food/drinks/attack_self(mob/user as mob) + if(!is_open_container()) + open(user) + +/obj/item/weapon/reagent_containers/food/drinks/proc/open(mob/user) + playsound(loc,"canopen", rand(10,50), 1) + user << "You open [src] with an audible pop!" + flags |= OPENCONTAINER + +/obj/item/weapon/reagent_containers/food/drinks/attack(mob/M as mob, mob/user as mob, def_zone) + if(force && !(flags & NOBLUDGEON) && user.a_intent == I_HURT) + return ..() + + if(standard_feed_mob(user, M)) + return + + return 0 + +/obj/item/weapon/reagent_containers/food/drinks/afterattack(obj/target, mob/user, proximity) + if(!proximity) return + + if(standard_dispenser_refill(user, target)) + return + if(standard_pour_into(user, target)) + return + return ..() + +/obj/item/weapon/reagent_containers/food/drinks/standard_feed_mob(var/mob/user, var/mob/target) + if(!is_open_container()) + user << "You need to open [src]!" + return 1 + return ..() + +/obj/item/weapon/reagent_containers/food/drinks/standard_dispenser_refill(var/mob/user, var/obj/structure/reagent_dispensers/target) + if(!is_open_container()) + user << "You need to open [src]!" + return 1 + return ..() + +/obj/item/weapon/reagent_containers/food/drinks/standard_pour_into(var/mob/user, var/atom/target) + if(!is_open_container()) + user << "You need to open [src]!" + return 1 + return ..() + +/obj/item/weapon/reagent_containers/food/drinks/self_feed_message(var/mob/user) + user << "You swallow a gulp from \the [src]." + +/obj/item/weapon/reagent_containers/food/drinks/feed_sound(var/mob/user) + playsound(user.loc, 'sound/items/drink.ogg', rand(10, 50), 1) + +/obj/item/weapon/reagent_containers/food/drinks/examine(mob/user) + if(!..(user, 1)) + return + if(!reagents || reagents.total_volume == 0) + user << "\The [src] is empty!" + else if (reagents.total_volume <= volume * 0.25) + user << "\The [src] is almost empty!" + else if (reagents.total_volume <= volume * 0.66) + user << "\The [src] is half full!" + else if (reagents.total_volume <= volume * 0.90) + user << "\The [src] is almost full!" + else + user << "\The [src] is full!" + + +//////////////////////////////////////////////////////////////////////////////// +/// Drinks. END +//////////////////////////////////////////////////////////////////////////////// + +/obj/item/weapon/reagent_containers/food/drinks/golden_cup + desc = "A golden cup" + name = "golden cup" + icon_state = "golden_cup" + item_state = "" //nope :( + w_class = ITEMSIZE_LARGE + force = 14 + throwforce = 10 + amount_per_transfer_from_this = 20 + possible_transfer_amounts = null + volume = 150 + flags = CONDUCT | OPENCONTAINER + +/obj/item/weapon/reagent_containers/food/drinks/golden_cup/on_reagent_change() + ..() + +///////////////////////////////////////////////Drinks +//Notes by Darem: Drinks are simply containers that start preloaded. Unlike condiments, the contents can be ingested directly +// rather then having to add it to something else first. They should only contain liquids. They have a default container size of 50. +// Formatting is the same as food. + +/obj/item/weapon/reagent_containers/food/drinks/milk + name = "milk carton" + desc = "It's milk. White and nutritious goodness!" + icon_state = "milk" + item_state = "carton" + center_of_mass = list("x"=16, "y"=9) + +/obj/item/weapon/reagent_containers/food/drinks/milk/New() + ..() + reagents.add_reagent("milk", 50) + +/obj/item/weapon/reagent_containers/food/drinks/soymilk + name = "soymilk carton" + desc = "It's soy milk. White and nutritious goodness!" + icon_state = "soymilk" + item_state = "carton" + center_of_mass = list("x"=16, "y"=9) +/obj/item/weapon/reagent_containers/food/drinks/soymilk/New() + ..() + reagents.add_reagent("soymilk", 50) + +/obj/item/weapon/reagent_containers/food/drinks/smallmilk + name = "small milk carton" + desc = "It's milk. White and nutritious goodness!" + volume = 30 + icon_state = "mini-milk" + item_state = "carton" + center_of_mass = list("x"=16, "y"=9) +/obj/item/weapon/reagent_containers/food/drinks/smallmilk/New() + ..() + reagents.add_reagent("milk", 30) + +/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk + name = "small chocolate milk carton" + desc = "It's milk! This one is in delicious chocolate flavour." + volume = 30 + icon_state = "mini-milk_choco" + item_state = "carton" + center_of_mass = list("x"=16, "y"=9) +/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk/New() + ..() + reagents.add_reagent("chocolate_milk", 30) + +/obj/item/weapon/reagent_containers/food/drinks/coffee + name = "\improper Robust Coffee" + desc = "Careful, the beverage you're about to enjoy is extremely hot." + icon_state = "coffee" + center_of_mass = list("x"=15, "y"=10) +/obj/item/weapon/reagent_containers/food/drinks/coffee/New() + ..() + reagents.add_reagent("coffee", 30) + +/obj/item/weapon/reagent_containers/food/drinks/tea + name = "cup of Duke Purple Tea" + desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea." + icon_state = "teacup" + item_state = "coffee" + center_of_mass = list("x"=16, "y"=14) + +/obj/item/weapon/reagent_containers/food/drinks/tea/New() + ..() + reagents.add_reagent("tea", 30) + +/obj/item/weapon/reagent_containers/food/drinks/ice + name = "cup of ice" + desc = "Careful, cold ice, do not chew." + icon_state = "coffee" + center_of_mass = list("x"=15, "y"=10) +/obj/item/weapon/reagent_containers/food/drinks/ice/New() + ..() + reagents.add_reagent("ice", 30) + +/obj/item/weapon/reagent_containers/food/drinks/h_chocolate + name = "cup of Dutch hot coco" + desc = "Made in Space South America." + icon_state = "hot_coco" + item_state = "coffee" + center_of_mass = list("x"=15, "y"=13) + +/obj/item/weapon/reagent_containers/food/drinks/h_chocolate/New() + ..() + reagents.add_reagent("hot_coco", 30) + +/obj/item/weapon/reagent_containers/food/drinks/dry_ramen + name = "Cup Ramen" + desc = "Just add 10ml water, self heats! A taste that reminds you of your school years." + icon_state = "ramen" + center_of_mass = list("x"=16, "y"=11) +/obj/item/weapon/reagent_containers/food/drinks/dry_ramen/New() + ..() + reagents.add_reagent("dry_ramen", 30) + +/obj/item/weapon/reagent_containers/food/drinks/sillycup + name = "paper cup" + desc = "A paper water cup." + icon_state = "water_cup_e" + possible_transfer_amounts = null + volume = 10 + center_of_mass = list("x"=16, "y"=12) + +/obj/item/weapon/reagent_containers/food/drinks/sillycup/New() + ..() + +/obj/item/weapon/reagent_containers/food/drinks/sillycup/on_reagent_change() + ..() + if(reagents.total_volume) + icon_state = "water_cup" + else + icon_state = "water_cup_e" + +/obj/item/weapon/reagent_containers/food/drinks/sillycup/MouseDrop(obj/over_object as obj) + if(!reagents.total_volume && istype(over_object, /obj/structure/reagent_dispensers/water_cooler)) + if(over_object.Adjacent(usr)) + var/obj/structure/reagent_dispensers/water_cooler/W = over_object + if(W.cupholder && W.cups < 10) + W.cups++ + usr << "You put the [src] in the cup dispenser." + qdel(src) + W.update_icon() + else + return ..() + +//////////////////////////drinkingglass and shaker// +//Note by Darem: This code handles the mixing of drinks. New drinks go in three places: In Chemistry-Reagents.dm (for the drink +// itself), in Chemistry-Recipes.dm (for the reaction that changes the components into the drink), and here (for the drinking glass +// icon states. + +/obj/item/weapon/reagent_containers/food/drinks/shaker + name = "shaker" + desc = "A metal shaker to mix drinks in." + icon_state = "shaker" + amount_per_transfer_from_this = 10 + volume = 120 + center_of_mass = list("x"=17, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/shaker/on_reagent_change() + ..() + +/obj/item/weapon/reagent_containers/food/drinks/teapot + name = "teapot" + desc = "An elegant teapot. It simply oozes class." + icon_state = "teapot" + item_state = "teapot" + amount_per_transfer_from_this = 10 + volume = 120 + center_of_mass = list("x"=17, "y"=7) + +/obj/item/weapon/reagent_containers/food/drinks/teapot/on_reagent_change() + ..() + +/obj/item/weapon/reagent_containers/food/drinks/flask + name = "\improper Colony Director's flask" + desc = "A metal flask belonging to the Colony Director" + icon_state = "flask" + volume = 60 + center_of_mass = list("x"=17, "y"=7) + +/obj/item/weapon/reagent_containers/food/drinks/flask/on_reagent_change() + ..() + +/obj/item/weapon/reagent_containers/food/drinks/flask/shiny + name = "shiny flask" + desc = "A shiny metal flask. It appears to have a Greek symbol inscribed on it." + icon_state = "shinyflask" + +/obj/item/weapon/reagent_containers/food/drinks/flask/lithium + name = "lithium flask" + desc = "A flask with a Lithium Atom symbol on it." + icon_state = "lithiumflask" + +/obj/item/weapon/reagent_containers/food/drinks/flask/detflask + name = "\improper Detective's flask" + desc = "A metal flask with a leather band and golden badge belonging to the detective." + icon_state = "detflask" + volume = 60 + center_of_mass = list("x"=17, "y"=8) + +/obj/item/weapon/reagent_containers/food/drinks/flask/barflask + name = "flask" + desc = "For those who can't be bothered to hang out at the bar to drink." + icon_state = "barflask" + volume = 60 + center_of_mass = list("x"=17, "y"=7) + +/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask + name = "vacuum flask" + desc = "Keeping your drinks at the perfect temperature since 1892." + icon_state = "vacuumflask" + volume = 60 + center_of_mass = list("x"=15, "y"=4) + +/obj/item/weapon/reagent_containers/food/drinks/britcup + name = "cup" + desc = "A cup with the British flag emblazoned on it." + icon_state = "britcup" + volume = 30 + center_of_mass = list("x"=15, "y"=13) + +/obj/item/weapon/reagent_containers/food/drinks/britcup/on_reagent_change() + ..() + diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/food/food/drinks/bottle.dm similarity index 97% rename from code/modules/reagents/reagent_containers/food/drinks/bottle.dm rename to code/modules/food/food/drinks/bottle.dm index 0a09b22fe9..d3b5e5bc66 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/food/food/drinks/bottle.dm @@ -1,551 +1,551 @@ -///////////////////////////////////////////////Alchohol bottles! -Agouri ////////////////////////// -//Functionally identical to regular drinks. The only difference is that the default bottle size is 100. - Darem -//Bottles now weaken and break when smashed on people's heads. - Giacom - -/obj/item/weapon/reagent_containers/food/drinks/bottle - amount_per_transfer_from_this = 10 - volume = 100 - item_state = "broken_beer" //Generic held-item sprite until unique ones are made. - force = 6 - var/smash_duration = 5 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets) - var/isGlass = 1 //Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it - - var/obj/item/weapon/reagent_containers/glass/rag/rag = null - var/rag_underlay = "rag" - on_reagent_change() return // To suppress price updating. Bottles have their own price tags. - -/obj/item/weapon/reagent_containers/food/drinks/bottle/New() - ..() - if(isGlass) unacidable = 1 - -/obj/item/weapon/reagent_containers/food/drinks/bottle/Destroy() - if(rag) - rag.forceMove(src.loc) - rag = null - return ..() - -//when thrown on impact, bottles smash and spill their contents -/obj/item/weapon/reagent_containers/food/drinks/bottle/throw_impact(atom/hit_atom, var/speed) - ..() - - var/mob/M = thrower - if(isGlass && istype(M) && M.a_intent == I_HURT) - var/throw_dist = get_dist(throw_source, loc) - if(speed >= throw_speed && smash_check(throw_dist)) //not as reliable as smashing directly - if(reagents) - hit_atom.visible_message("The contents of \the [src] splash all over [hit_atom]!") - reagents.splash(hit_atom, reagents.total_volume) - src.smash(loc, hit_atom) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/proc/smash_check(var/distance) - if(!isGlass || !smash_duration) - return 0 - - var/list/chance_table = list(100, 95, 90, 85, 75, 55, 35) //starting from distance 0 - var/idx = max(distance + 1, 1) //since list indices start at 1 - if(idx > chance_table.len) - return 0 - return prob(chance_table[idx]) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/proc/smash(var/newloc, atom/against = null) - if(ismob(loc)) - var/mob/M = loc - M.drop_from_inventory(src) - - //Creates a shattering noise and replaces the bottle with a broken_bottle - var/obj/item/weapon/broken_bottle/B = new /obj/item/weapon/broken_bottle(newloc) - if(prob(33)) - new/obj/item/weapon/material/shard(newloc) // Create a glass shard at the target's location! - B.icon_state = src.icon_state - - var/icon/I = new('icons/obj/drinks.dmi', src.icon_state) - I.Blend(B.broken_outline, ICON_OVERLAY, rand(5), 1) - I.SwapColor(rgb(255, 0, 220, 255), rgb(0, 0, 0, 0)) - B.icon = I - - if(rag && rag.on_fire && isliving(against)) - rag.forceMove(loc) - var/mob/living/L = against - L.IgniteMob() - - playsound(src, "shatter", 70, 1) - src.transfer_fingerprints_to(B) - - qdel(src) - return B - -/obj/item/weapon/reagent_containers/food/drinks/bottle/verb/smash_bottle() - set name = "Smash Bottle" - set category = "Object" - - var/list/things_to_smash_on = list() - for(var/atom/A in range (1, usr)) - if(A.density && usr.Adjacent(A) && !istype(A, /mob)) - things_to_smash_on += A - - var/atom/choice = input("Select what you want to smash the bottle on.") as null|anything in things_to_smash_on - if(!choice) - return - if(!(choice.density && usr.Adjacent(choice))) - usr << "You must stay close to your target! You moved away from \the [choice]" - return - - usr.put_in_hands(src.smash(usr.loc, choice)) - usr.visible_message("\The [usr] smashed \the [src] on \the [choice]!") - usr << "You smash \the [src] on \the [choice]!" - -/obj/item/weapon/reagent_containers/food/drinks/bottle/attackby(obj/item/W, mob/user) - if(!rag && istype(W, /obj/item/weapon/reagent_containers/glass/rag)) - insert_rag(W, user) - return - if(rag && istype(W, /obj/item/weapon/flame)) - rag.attackby(W, user) - return - ..() - -/obj/item/weapon/reagent_containers/food/drinks/bottle/attack_self(mob/user) - if(rag) - remove_rag(user) - else - ..() - -/obj/item/weapon/reagent_containers/food/drinks/bottle/proc/insert_rag(obj/item/weapon/reagent_containers/glass/rag/R, mob/user) - if(!isGlass || rag) return - if(user.unEquip(R)) - user << "You stuff [R] into [src]." - rag = R - rag.forceMove(src) - flags &= ~OPENCONTAINER - update_icon() - -/obj/item/weapon/reagent_containers/food/drinks/bottle/proc/remove_rag(mob/user) - if(!rag) return - user.put_in_hands(rag) - rag = null - flags |= (initial(flags) & OPENCONTAINER) - update_icon() - -/obj/item/weapon/reagent_containers/food/drinks/bottle/open(mob/user) - if(rag) return - ..() - -/obj/item/weapon/reagent_containers/food/drinks/bottle/update_icon() - underlays.Cut() - if(rag) - var/underlay_image = image(icon='icons/obj/drinks.dmi', icon_state=rag.on_fire? "[rag_underlay]_lit" : rag_underlay) - underlays += underlay_image - set_light(rag.light_range, rag.light_power, rag.light_color) - else - set_light(0) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) - var/blocked = ..() - - if(user.a_intent != I_HURT) - return - if(!smash_check(1)) - return //won't always break on the first hit - - // You are going to knock someone out for longer if they are not wearing a helmet. - var/weaken_duration = 0 - if(blocked < 100) - weaken_duration = smash_duration + min(0, force - target.getarmor(hit_zone, "melee") + 10) - - if(hit_zone == "head" && istype(target, /mob/living/carbon/)) - user.visible_message("\The [user] smashes [src] over [target]'s head!") - if(weaken_duration) - target.apply_effect(min(weaken_duration, 5), WEAKEN, blocked) // Never weaken more than a flash! - else - user.visible_message("\The [user] smashes [src] into [target]!") - - //The reagents in the bottle splash all over the target, thanks for the idea Nodrak - if(reagents) - user.visible_message("The contents of \the [src] splash all over [target]!") - reagents.splash(target, reagents.total_volume) - - //Finally, smash the bottle. This kills (qdel) the bottle. - var/obj/item/weapon/broken_bottle/B = smash(target.loc, target) - user.put_in_active_hand(B) - -//Keeping this here for now, I'll ask if I should keep it here. -/obj/item/weapon/broken_bottle - name = "Broken Bottle" - desc = "A bottle with a sharp broken bottom." - icon = 'icons/obj/drinks.dmi' - icon_state = "broken_bottle" - force = 10 - throwforce = 5 - throw_speed = 3 - throw_range = 5 - item_state = "beer" - attack_verb = list("stabbed", "slashed", "attacked") - sharp = 1 - edge = 0 - var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken") - -/obj/item/weapon/broken_bottle/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) - playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) - return ..() - -/obj/item/weapon/reagent_containers/food/drinks/bottle/gin - name = "Griffeater Gin" - desc = "A bottle of high quality gin, produced in Alpha Centauri." - icon_state = "ginbottle" - center_of_mass = list("x"=16, "y"=4) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/gin/New() - ..() - reagents.add_reagent("gin", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey - name = "Uncle Git's Special Reserve" - desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter." - icon_state = "whiskeybottle" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey/New() - ..() - reagents.add_reagent("whiskey", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey - name = "Special Blend Whiskey" - desc = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." - icon_state = "whiskeybottle2" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey/New() - ..() - reagents.add_reagent("specialwhiskey", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka - name = "Tunguska Triple Distilled" - desc = "Aah, vodka. Prime choice of drink and fuel by Russians worldwide." - icon_state = "vodkabottle" - center_of_mass = list("x"=17, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/New() - ..() - reagents.add_reagent("vodka", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla - name = "Caccavo Guaranteed Quality Tequilla" - desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!" - icon_state = "tequillabottle" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla/New() - ..() - reagents.add_reagent("tequilla", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing - name = "Bottle of Nothing" - desc = "A bottle filled with nothing" - icon_state = "bottleofnothing" - center_of_mass = list("x"=17, "y"=5) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing/New() - ..() - reagents.add_reagent("nothing", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/patron - name = "Wrapp Artiste Patron" - desc = "Silver laced tequilla, served in space night clubs across the galaxy." - icon_state = "patronbottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/patron/New() - ..() - reagents.add_reagent("patron", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/rum - name = "Captain Pete's Cuban Spiced Rum" - desc = "This isn't just rum, oh no. It's practically Cuba in a bottle." - icon_state = "rumbottle" - center_of_mass = list("x"=16, "y"=8) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/rum/New() - ..() - reagents.add_reagent("rum", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater - name = "Flask of Holy Water" - desc = "A flask of the chaplain's holy water." - icon_state = "holyflask" - center_of_mass = list("x"=17, "y"=10) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater/New() - ..() - reagents.add_reagent("holywater", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth - name = "Goldeneye Vermouth" - desc = "Sweet, sweet dryness~" - icon_state = "vermouthbottle" - center_of_mass = list("x"=17, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth/New() - ..() - reagents.add_reagent("vermouth", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua - name = "Robert Robust's Coffee Liqueur" - desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936." - icon_state = "kahluabottle" - center_of_mass = list("x"=17, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua/New() - ..() - reagents.add_reagent("kahlua", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager - name = "College Girl Goldschlager" - desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps." - icon_state = "goldschlagerbottle" - center_of_mass = list("x"=15, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager/New() - ..() - reagents.add_reagent("goldschlager", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac - name = "Chateau De Baton Premium Cognac" - desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing." - icon_state = "cognacbottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac/New() - ..() - reagents.add_reagent("cognac", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/wine - name = "Doublebeard Bearded Special Wine" - desc = "Cheap cooking wine pretending to be drinkable." - icon_state = "winebottle" - center_of_mass = list("x"=16, "y"=4) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/wine/New() - ..() - reagents.add_reagent("wine", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe - name = "Jailbreaker Verte" - desc = "One sip of this and you just know you're gonna have a good time." - icon_state = "absinthebottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/New() - ..() - reagents.add_reagent("absinthe", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor - name = "Emeraldine Melon Liquor" - desc = "A bottle of 46 proof Emeraldine Melon Liquor. Sweet and light." - icon_state = "alco-green" //Placeholder. - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor/New() - ..() - reagents.add_reagent("melonliquor", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao - name = "Miss Blue Curacao" - desc = "A fruity, exceptionally azure drink. Does not allow the imbiber to use the fifth magic." - icon_state = "alco-blue" //Placeholder. - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao/New() - ..() - reagents.add_reagent("bluecuracao", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine - name = "Briar Rose Grenadine Syrup" - desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks." - icon_state = "grenadinebottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine/New() - ..() - reagents.add_reagent("grenadine", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/cola - name = "\improper Space Cola" - desc = "Cola. in space" - icon_state = "colabottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/cola/New() - ..() - reagents.add_reagent("cola", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up - name = "\improper Space-Up" - desc = "Tastes like a hull breach in your mouth." - icon_state = "space-up_bottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up/New() - ..() - reagents.add_reagent("space_up", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind - name = "\improper Space Mountain Wind" - desc = "Blows right through you like a space wind." - icon_state = "space_mountain_wind_bottle" - center_of_mass = list("x"=16, "y"=6) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind/New() - ..() - reagents.add_reagent("spacemountainwind", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine - name = "Warlock's Velvet" - desc = "What a delightful packaging for a surely high quality wine! The vintage must be amazing!" - icon_state = "pwinebottle" - center_of_mass = list("x"=16, "y"=4) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine/New() - ..() - reagents.add_reagent("pwine", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew - name = "Redeemer's Brew" - desc = "Just opening the top of this bottle makes you feel a bit tipsy. Not for the faint of heart." - icon_state = "redeemersbrew" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew/New() - ..() - reagents.add_reagent("unathiliquor", 100) - -//////////////////////////JUICES AND STUFF /////////////////////// - -/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice - name = "Orange Juice" - desc = "Full of vitamins and deliciousness!" - icon_state = "orangejuice" - item_state = "carton" - center_of_mass = list("x"=16, "y"=7) - isGlass = 0 - -/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice/New() - ..() - reagents.add_reagent("orangejuice", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice - name = "Apple Juice" - desc = "Squeezed, pressed and ground to perfection!" - icon_state = "applejuice" - item_state = "carton" - center_of_mass = list("x"=16, "y"=7) - isGlass = 0 - -/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice/New() - ..() - reagents.add_reagent("applejuice", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/milk - name = "Large Milk Carton" - desc = "It's milk. This carton's large enough to serve your biggest milk drinkers." - icon_state = "milk" - item_state = "carton" - center_of_mass = list("x"=16, "y"=9) - isGlass = 0 - -/obj/item/weapon/reagent_containers/food/drinks/bottle/milk/New() - ..() - reagents.add_reagent("milk", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/cream - name = "Milk Cream" - desc = "It's cream. Made from milk. What else did you think you'd find in there?" - icon_state = "cream" - item_state = "carton" - center_of_mass = list("x"=16, "y"=8) - isGlass = 0 - -/obj/item/weapon/reagent_containers/food/drinks/bottle/cream/New() - ..() - reagents.add_reagent("cream", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice - name = "Tomato Juice" - desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness." - icon_state = "tomatojuice" - item_state = "carton" - center_of_mass = list("x"=16, "y"=8) - isGlass = 0 - -/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice/New() - ..() - reagents.add_reagent("tomatojuice", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice - name = "Lime Juice" - desc = "Sweet-sour goodness." - icon_state = "limejuice" - item_state = "carton" - center_of_mass = list("x"=16, "y"=8) - isGlass = 0 - -/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice/New() - ..() - reagents.add_reagent("limejuice", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice - name = "Lemon Juice" - desc = "Sweet-sour goodness. Minus the sweet." - icon_state = "lemonjuice" - item_state = "carton" - center_of_mass = list("x"=16, "y"=8) - isGlass = 0 - -/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice/New() - ..() - reagents.add_reagent("lemonjuice", 100) - -//Small bottles -/obj/item/weapon/reagent_containers/food/drinks/bottle/small - volume = 50 - smash_duration = 1 - flags = 0 //starts closed - rag_underlay = "rag_small" - -/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer - name = "space beer" - desc = "Contains only water, malt and hops." - icon_state = "beer" - center_of_mass = list("x"=16, "y"=12) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/New() - ..() - reagents.add_reagent("beer", 30) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale - name = "\improper Magm-Ale" - desc = "A true dorf's drink of choice." - icon_state = "alebottle" - item_state = "beer" - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale/New() - ..() - reagents.add_reagent("ale", 30) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/sake - name = "Mono-No-Aware Luxury Sake" - desc = "Dry alcohol made from rice, a favorite of businessmen." - icon_state = "sakebottle" - center_of_mass = list("x"=16, "y"=3) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/New() - ..() - reagents.add_reagent("sake", 100) - -/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne - name = "Gilthari Luxury Champagne" - desc = "For those special occassions." - icon_state = "champagne" - -/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/New() - ..() +///////////////////////////////////////////////Alchohol bottles! -Agouri ////////////////////////// +//Functionally identical to regular drinks. The only difference is that the default bottle size is 100. - Darem +//Bottles now weaken and break when smashed on people's heads. - Giacom + +/obj/item/weapon/reagent_containers/food/drinks/bottle + amount_per_transfer_from_this = 10 + volume = 100 + item_state = "broken_beer" //Generic held-item sprite until unique ones are made. + force = 6 + var/smash_duration = 5 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets) + var/isGlass = 1 //Whether the 'bottle' is made of glass or not so that milk cartons dont shatter when someone gets hit by it + + var/obj/item/weapon/reagent_containers/glass/rag/rag = null + var/rag_underlay = "rag" + on_reagent_change() return // To suppress price updating. Bottles have their own price tags. + +/obj/item/weapon/reagent_containers/food/drinks/bottle/New() + ..() + if(isGlass) unacidable = 1 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/Destroy() + if(rag) + rag.forceMove(src.loc) + rag = null + return ..() + +//when thrown on impact, bottles smash and spill their contents +/obj/item/weapon/reagent_containers/food/drinks/bottle/throw_impact(atom/hit_atom, var/speed) + ..() + + var/mob/M = thrower + if(isGlass && istype(M) && M.a_intent == I_HURT) + var/throw_dist = get_dist(throw_source, loc) + if(speed >= throw_speed && smash_check(throw_dist)) //not as reliable as smashing directly + if(reagents) + hit_atom.visible_message("The contents of \the [src] splash all over [hit_atom]!") + reagents.splash(hit_atom, reagents.total_volume) + src.smash(loc, hit_atom) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/proc/smash_check(var/distance) + if(!isGlass || !smash_duration) + return 0 + + var/list/chance_table = list(100, 95, 90, 85, 75, 55, 35) //starting from distance 0 + var/idx = max(distance + 1, 1) //since list indices start at 1 + if(idx > chance_table.len) + return 0 + return prob(chance_table[idx]) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/proc/smash(var/newloc, atom/against = null) + if(ismob(loc)) + var/mob/M = loc + M.drop_from_inventory(src) + + //Creates a shattering noise and replaces the bottle with a broken_bottle + var/obj/item/weapon/broken_bottle/B = new /obj/item/weapon/broken_bottle(newloc) + if(prob(33)) + new/obj/item/weapon/material/shard(newloc) // Create a glass shard at the target's location! + B.icon_state = src.icon_state + + var/icon/I = new('icons/obj/drinks.dmi', src.icon_state) + I.Blend(B.broken_outline, ICON_OVERLAY, rand(5), 1) + I.SwapColor(rgb(255, 0, 220, 255), rgb(0, 0, 0, 0)) + B.icon = I + + if(rag && rag.on_fire && isliving(against)) + rag.forceMove(loc) + var/mob/living/L = against + L.IgniteMob() + + playsound(src, "shatter", 70, 1) + src.transfer_fingerprints_to(B) + + qdel(src) + return B + +/obj/item/weapon/reagent_containers/food/drinks/bottle/verb/smash_bottle() + set name = "Smash Bottle" + set category = "Object" + + var/list/things_to_smash_on = list() + for(var/atom/A in range (1, usr)) + if(A.density && usr.Adjacent(A) && !istype(A, /mob)) + things_to_smash_on += A + + var/atom/choice = input("Select what you want to smash the bottle on.") as null|anything in things_to_smash_on + if(!choice) + return + if(!(choice.density && usr.Adjacent(choice))) + usr << "You must stay close to your target! You moved away from \the [choice]" + return + + usr.put_in_hands(src.smash(usr.loc, choice)) + usr.visible_message("\The [usr] smashed \the [src] on \the [choice]!") + usr << "You smash \the [src] on \the [choice]!" + +/obj/item/weapon/reagent_containers/food/drinks/bottle/attackby(obj/item/W, mob/user) + if(!rag && istype(W, /obj/item/weapon/reagent_containers/glass/rag)) + insert_rag(W, user) + return + if(rag && istype(W, /obj/item/weapon/flame)) + rag.attackby(W, user) + return + ..() + +/obj/item/weapon/reagent_containers/food/drinks/bottle/attack_self(mob/user) + if(rag) + remove_rag(user) + else + ..() + +/obj/item/weapon/reagent_containers/food/drinks/bottle/proc/insert_rag(obj/item/weapon/reagent_containers/glass/rag/R, mob/user) + if(!isGlass || rag) return + if(user.unEquip(R)) + user << "You stuff [R] into [src]." + rag = R + rag.forceMove(src) + flags &= ~OPENCONTAINER + update_icon() + +/obj/item/weapon/reagent_containers/food/drinks/bottle/proc/remove_rag(mob/user) + if(!rag) return + user.put_in_hands(rag) + rag = null + flags |= (initial(flags) & OPENCONTAINER) + update_icon() + +/obj/item/weapon/reagent_containers/food/drinks/bottle/open(mob/user) + if(rag) return + ..() + +/obj/item/weapon/reagent_containers/food/drinks/bottle/update_icon() + underlays.Cut() + if(rag) + var/underlay_image = image(icon='icons/obj/drinks.dmi', icon_state=rag.on_fire? "[rag_underlay]_lit" : rag_underlay) + underlays += underlay_image + set_light(rag.light_range, rag.light_power, rag.light_color) + else + set_light(0) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone) + var/blocked = ..() + + if(user.a_intent != I_HURT) + return + if(!smash_check(1)) + return //won't always break on the first hit + + // You are going to knock someone out for longer if they are not wearing a helmet. + var/weaken_duration = 0 + if(blocked < 100) + weaken_duration = smash_duration + min(0, force - target.getarmor(hit_zone, "melee") + 10) + + if(hit_zone == "head" && istype(target, /mob/living/carbon/)) + user.visible_message("\The [user] smashes [src] over [target]'s head!") + if(weaken_duration) + target.apply_effect(min(weaken_duration, 5), WEAKEN, blocked) // Never weaken more than a flash! + else + user.visible_message("\The [user] smashes [src] into [target]!") + + //The reagents in the bottle splash all over the target, thanks for the idea Nodrak + if(reagents) + user.visible_message("The contents of \the [src] splash all over [target]!") + reagents.splash(target, reagents.total_volume) + + //Finally, smash the bottle. This kills (qdel) the bottle. + var/obj/item/weapon/broken_bottle/B = smash(target.loc, target) + user.put_in_active_hand(B) + +//Keeping this here for now, I'll ask if I should keep it here. +/obj/item/weapon/broken_bottle + name = "Broken Bottle" + desc = "A bottle with a sharp broken bottom." + icon = 'icons/obj/drinks.dmi' + icon_state = "broken_bottle" + force = 10 + throwforce = 5 + throw_speed = 3 + throw_range = 5 + item_state = "beer" + attack_verb = list("stabbed", "slashed", "attacked") + sharp = 1 + edge = 0 + var/icon/broken_outline = icon('icons/obj/drinks.dmi', "broken") + +/obj/item/weapon/broken_bottle/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) + playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) + return ..() + +/obj/item/weapon/reagent_containers/food/drinks/bottle/gin + name = "Griffeater Gin" + desc = "A bottle of high quality gin, produced in Alpha Centauri." + icon_state = "ginbottle" + center_of_mass = list("x"=16, "y"=4) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/gin/New() + ..() + reagents.add_reagent("gin", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey + name = "Uncle Git's Special Reserve" + desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter." + icon_state = "whiskeybottle" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey/New() + ..() + reagents.add_reagent("whiskey", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey + name = "Special Blend Whiskey" + desc = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." + icon_state = "whiskeybottle2" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey/New() + ..() + reagents.add_reagent("specialwhiskey", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka + name = "Tunguska Triple Distilled" + desc = "Aah, vodka. Prime choice of drink and fuel by Russians worldwide." + icon_state = "vodkabottle" + center_of_mass = list("x"=17, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/New() + ..() + reagents.add_reagent("vodka", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla + name = "Caccavo Guaranteed Quality Tequilla" + desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!" + icon_state = "tequillabottle" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla/New() + ..() + reagents.add_reagent("tequilla", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing + name = "Bottle of Nothing" + desc = "A bottle filled with nothing" + icon_state = "bottleofnothing" + center_of_mass = list("x"=17, "y"=5) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing/New() + ..() + reagents.add_reagent("nothing", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/patron + name = "Wrapp Artiste Patron" + desc = "Silver laced tequilla, served in space night clubs across the galaxy." + icon_state = "patronbottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/patron/New() + ..() + reagents.add_reagent("patron", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/rum + name = "Captain Pete's Cuban Spiced Rum" + desc = "This isn't just rum, oh no. It's practically Cuba in a bottle." + icon_state = "rumbottle" + center_of_mass = list("x"=16, "y"=8) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/rum/New() + ..() + reagents.add_reagent("rum", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater + name = "Flask of Holy Water" + desc = "A flask of the chaplain's holy water." + icon_state = "holyflask" + center_of_mass = list("x"=17, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater/New() + ..() + reagents.add_reagent("holywater", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth + name = "Goldeneye Vermouth" + desc = "Sweet, sweet dryness~" + icon_state = "vermouthbottle" + center_of_mass = list("x"=17, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth/New() + ..() + reagents.add_reagent("vermouth", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua + name = "Robert Robust's Coffee Liqueur" + desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936." + icon_state = "kahluabottle" + center_of_mass = list("x"=17, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua/New() + ..() + reagents.add_reagent("kahlua", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager + name = "College Girl Goldschlager" + desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps." + icon_state = "goldschlagerbottle" + center_of_mass = list("x"=15, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager/New() + ..() + reagents.add_reagent("goldschlager", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac + name = "Chateau De Baton Premium Cognac" + desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing." + icon_state = "cognacbottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac/New() + ..() + reagents.add_reagent("cognac", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/wine + name = "Doublebeard Bearded Special Wine" + desc = "Cheap cooking wine pretending to be drinkable." + icon_state = "winebottle" + center_of_mass = list("x"=16, "y"=4) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/wine/New() + ..() + reagents.add_reagent("wine", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe + name = "Jailbreaker Verte" + desc = "One sip of this and you just know you're gonna have a good time." + icon_state = "absinthebottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/New() + ..() + reagents.add_reagent("absinthe", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor + name = "Emeraldine Melon Liquor" + desc = "A bottle of 46 proof Emeraldine Melon Liquor. Sweet and light." + icon_state = "alco-green" //Placeholder. + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor/New() + ..() + reagents.add_reagent("melonliquor", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao + name = "Miss Blue Curacao" + desc = "A fruity, exceptionally azure drink. Does not allow the imbiber to use the fifth magic." + icon_state = "alco-blue" //Placeholder. + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao/New() + ..() + reagents.add_reagent("bluecuracao", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine + name = "Briar Rose Grenadine Syrup" + desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks." + icon_state = "grenadinebottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine/New() + ..() + reagents.add_reagent("grenadine", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cola + name = "\improper Space Cola" + desc = "Cola. in space" + icon_state = "colabottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cola/New() + ..() + reagents.add_reagent("cola", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up + name = "\improper Space-Up" + desc = "Tastes like a hull breach in your mouth." + icon_state = "space-up_bottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up/New() + ..() + reagents.add_reagent("space_up", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind + name = "\improper Space Mountain Wind" + desc = "Blows right through you like a space wind." + icon_state = "space_mountain_wind_bottle" + center_of_mass = list("x"=16, "y"=6) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/space_mountain_wind/New() + ..() + reagents.add_reagent("spacemountainwind", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine + name = "Warlock's Velvet" + desc = "What a delightful packaging for a surely high quality wine! The vintage must be amazing!" + icon_state = "pwinebottle" + center_of_mass = list("x"=16, "y"=4) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine/New() + ..() + reagents.add_reagent("pwine", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew + name = "Redeemer's Brew" + desc = "Just opening the top of this bottle makes you feel a bit tipsy. Not for the faint of heart." + icon_state = "redeemersbrew" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew/New() + ..() + reagents.add_reagent("unathiliquor", 100) + +//////////////////////////JUICES AND STUFF /////////////////////// + +/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice + name = "Orange Juice" + desc = "Full of vitamins and deliciousness!" + icon_state = "orangejuice" + item_state = "carton" + center_of_mass = list("x"=16, "y"=7) + isGlass = 0 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice/New() + ..() + reagents.add_reagent("orangejuice", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice + name = "Apple Juice" + desc = "Squeezed, pressed and ground to perfection!" + icon_state = "applejuice" + item_state = "carton" + center_of_mass = list("x"=16, "y"=7) + isGlass = 0 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice/New() + ..() + reagents.add_reagent("applejuice", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk + name = "Large Milk Carton" + desc = "It's milk. This carton's large enough to serve your biggest milk drinkers." + icon_state = "milk" + item_state = "carton" + center_of_mass = list("x"=16, "y"=9) + isGlass = 0 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/milk/New() + ..() + reagents.add_reagent("milk", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream + name = "Milk Cream" + desc = "It's cream. Made from milk. What else did you think you'd find in there?" + icon_state = "cream" + item_state = "carton" + center_of_mass = list("x"=16, "y"=8) + isGlass = 0 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/cream/New() + ..() + reagents.add_reagent("cream", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice + name = "Tomato Juice" + desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness." + icon_state = "tomatojuice" + item_state = "carton" + center_of_mass = list("x"=16, "y"=8) + isGlass = 0 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice/New() + ..() + reagents.add_reagent("tomatojuice", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice + name = "Lime Juice" + desc = "Sweet-sour goodness." + icon_state = "limejuice" + item_state = "carton" + center_of_mass = list("x"=16, "y"=8) + isGlass = 0 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice/New() + ..() + reagents.add_reagent("limejuice", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice + name = "Lemon Juice" + desc = "Sweet-sour goodness. Minus the sweet." + icon_state = "lemonjuice" + item_state = "carton" + center_of_mass = list("x"=16, "y"=8) + isGlass = 0 + +/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice/New() + ..() + reagents.add_reagent("lemonjuice", 100) + +//Small bottles +/obj/item/weapon/reagent_containers/food/drinks/bottle/small + volume = 50 + smash_duration = 1 + flags = 0 //starts closed + rag_underlay = "rag_small" + +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer + name = "space beer" + desc = "Contains only water, malt and hops." + icon_state = "beer" + center_of_mass = list("x"=16, "y"=12) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/New() + ..() + reagents.add_reagent("beer", 30) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale + name = "\improper Magm-Ale" + desc = "A true dorf's drink of choice." + icon_state = "alebottle" + item_state = "beer" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale/New() + ..() + reagents.add_reagent("ale", 30) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/sake + name = "Mono-No-Aware Luxury Sake" + desc = "Dry alcohol made from rice, a favorite of businessmen." + icon_state = "sakebottle" + center_of_mass = list("x"=16, "y"=3) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/New() + ..() + reagents.add_reagent("sake", 100) + +/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne + name = "Gilthari Luxury Champagne" + desc = "For those special occassions." + icon_state = "champagne" + +/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/New() + ..() reagents.add_reagent("champagne", 100) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle/robot.dm b/code/modules/food/food/drinks/bottle/robot.dm similarity index 100% rename from code/modules/reagents/reagent_containers/food/drinks/bottle/robot.dm rename to code/modules/food/food/drinks/bottle/robot.dm diff --git a/code/modules/reagents/reagent_containers/food/drinks/cup.dm b/code/modules/food/food/drinks/cup.dm similarity index 100% rename from code/modules/reagents/reagent_containers/food/drinks/cup.dm rename to code/modules/food/food/drinks/cup.dm diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/food/food/drinks/drinkingglass.dm similarity index 96% rename from code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm rename to code/modules/food/food/drinks/drinkingglass.dm index b10feb2b59..b8183fd1fc 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/food/food/drinks/drinkingglass.dm @@ -1,178 +1,178 @@ - - -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass - name = "glass" - desc = "Your standard drinking glass." - icon_state = "glass_empty" - amount_per_transfer_from_this = 5 - volume = 30 - unacidable = 1 //glass - center_of_mass = list("x"=16, "y"=10) - matter = list("glass" = 500) - - on_reagent_change() - /*if(reagents.reagent_list.len > 1 ) - icon_state = "glass_brown" - name = "Glass of Hooch" - desc = "Two or more drinks, mixed together."*/ - /*else if(reagents.reagent_list.len == 1) - for(var/datum/reagent/R in reagents.reagent_list) - switch(R.id)*/ - if (reagents.reagent_list.len > 0) - var/datum/reagent/R = reagents.get_master_reagent() - - if(R.glass_icon_state) - icon_state = R.glass_icon_state - else - icon_state = "glass_brown" - - if(R.glass_name) - name = R.glass_name - else - name = "Glass of.. what?" - - if(R.glass_desc) - desc = R.glass_desc - else - desc = "You can't really tell what this is." - - if(R.glass_center_of_mass) - center_of_mass = R.glass_center_of_mass - else - center_of_mass = list("x"=16, "y"=10) - - if(R.price_tag) - price_tag = R.price_tag - else - price_tag = null - else - icon_state = "glass_empty" - name = "glass" - desc = "Your standard drinking glass." - center_of_mass = list("x"=16, "y"=10) - return - -/obj/item/weapon/reagent_containers/food/drinks/cup - name = "coffee cup" - desc = "The container of oriental luxuries." - icon_state = "cup_empty" - amount_per_transfer_from_this = 5 - volume = 30 - center_of_mass = list("x"=16, "y"=16) - - on_reagent_change() - if (reagents.reagent_list.len > 0) - var/datum/reagent/R = reagents.get_master_reagent() - - if(R.cup_icon_state) - icon_state = R.cup_icon_state - else - icon_state = "cup_brown" - - if(R.cup_name) - name = R.cup_name - else - name = "Cup of.. what?" - - if(R.cup_desc) - desc = R.cup_desc - else - desc = "You can't really tell what this is." - - if(R.cup_center_of_mass) - center_of_mass = R.cup_center_of_mass - else - center_of_mass = list("x"=16, "y"=16) - - if(R.price_tag) - price_tag = R.price_tag - else - price_tag = null - - else - icon_state = "cup_empty" - name = "coffee cup" - desc = "The container of oriental luxuries." - center_of_mass = list("x"=16, "y"=16) - return - -// for /obj/machinery/vending/sovietsoda -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/soda - New() - ..() - reagents.add_reagent("sodawater", 50) - on_reagent_change() - -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/cola - New() - ..() - reagents.add_reagent("cola", 50) - on_reagent_change() - -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass - name = "shot glass" - desc = "No glasses were shot in the making of this glass." - icon_state = "shotglass" - amount_per_transfer_from_this = 10 - volume = 10 - matter = list("glass" = 175) - -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/on_reagent_change() - overlays.Cut() - - if(reagents.total_volume) - var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]1") - - switch(reagents.total_volume) - if(0 to 3) filling.icon_state = "[icon_state]1" - if(4 to 7) filling.icon_state = "[icon_state]5" - if(8 to INFINITY) filling.icon_state = "[icon_state]12" - - filling.color += reagents.get_color() - overlays += filling - name = "shot glass of " + reagents.get_master_reagent_name() //No matter what, the glass will tell you the reagent's name. Might be too abusable in the future. - else - name = "shot glass" - -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask - name = "fitness shaker" - desc = "Big enough to contain enough protein to get perfectly swole. Don't mind the bits." - icon_state = "fitness-cup_black" - volume = 100 - matter = list("plastic" = 2000) - -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/New() - ..() - icon_state = pick("fitness-cup_black", "fitness-cup_red", "fitness-cup_black") - -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/on_reagent_change() - overlays.Cut() - - if(reagents.total_volume) - var/image/filling = image('icons/obj/reagentfillings.dmi', src, "fitness-cup10") - - switch(reagents.total_volume) - if(0 to 10) filling.icon_state = "fitness-cup10" - if(11 to 20) filling.icon_state = "fitness-cup20" - if(21 to 29) filling.icon_state = "fitness-cup30" - if(30 to 39) filling.icon_state = "fitness-cup40" - if(40 to 49) filling.icon_state = "fitness-cup50" - if(50 to 59) filling.icon_state = "fitness-cup60" - if(60 to 69) filling.icon_state = "fitness-cup70" - if(70 to 79) filling.icon_state = "fitness-cup80" - if(80 to 89) filling.icon_state = "fitness-cup90" - if(90 to INFINITY) filling.icon_state = "fitness-cup100" - - filling.color += reagents.get_color() - overlays += filling - -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake - name = "protein shake" - -/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake/New() - ..() - reagents.add_reagent("nutriment", 30) - reagents.add_reagent("iron", 10) - reagents.add_reagent("protein", 15) - reagents.add_reagent("water", 45) + + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass + name = "glass" + desc = "Your standard drinking glass." + icon_state = "glass_empty" + amount_per_transfer_from_this = 5 + volume = 30 + unacidable = 1 //glass + center_of_mass = list("x"=16, "y"=10) + matter = list("glass" = 500) + + on_reagent_change() + /*if(reagents.reagent_list.len > 1 ) + icon_state = "glass_brown" + name = "Glass of Hooch" + desc = "Two or more drinks, mixed together."*/ + /*else if(reagents.reagent_list.len == 1) + for(var/datum/reagent/R in reagents.reagent_list) + switch(R.id)*/ + if (reagents.reagent_list.len > 0) + var/datum/reagent/R = reagents.get_master_reagent() + + if(R.glass_icon_state) + icon_state = R.glass_icon_state + else + icon_state = "glass_brown" + + if(R.glass_name) + name = R.glass_name + else + name = "Glass of.. what?" + + if(R.glass_desc) + desc = R.glass_desc + else + desc = "You can't really tell what this is." + + if(R.glass_center_of_mass) + center_of_mass = R.glass_center_of_mass + else + center_of_mass = list("x"=16, "y"=10) + + if(R.price_tag) + price_tag = R.price_tag + else + price_tag = null + else + icon_state = "glass_empty" + name = "glass" + desc = "Your standard drinking glass." + center_of_mass = list("x"=16, "y"=10) + return + +/obj/item/weapon/reagent_containers/food/drinks/cup + name = "coffee cup" + desc = "The container of oriental luxuries." + icon_state = "cup_empty" + amount_per_transfer_from_this = 5 + volume = 30 + center_of_mass = list("x"=16, "y"=16) + + on_reagent_change() + if (reagents.reagent_list.len > 0) + var/datum/reagent/R = reagents.get_master_reagent() + + if(R.cup_icon_state) + icon_state = R.cup_icon_state + else + icon_state = "cup_brown" + + if(R.cup_name) + name = R.cup_name + else + name = "Cup of.. what?" + + if(R.cup_desc) + desc = R.cup_desc + else + desc = "You can't really tell what this is." + + if(R.cup_center_of_mass) + center_of_mass = R.cup_center_of_mass + else + center_of_mass = list("x"=16, "y"=16) + + if(R.price_tag) + price_tag = R.price_tag + else + price_tag = null + + else + icon_state = "cup_empty" + name = "coffee cup" + desc = "The container of oriental luxuries." + center_of_mass = list("x"=16, "y"=16) + return + +// for /obj/machinery/vending/sovietsoda +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/soda + New() + ..() + reagents.add_reagent("sodawater", 50) + on_reagent_change() + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/cola + New() + ..() + reagents.add_reagent("cola", 50) + on_reagent_change() + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass + name = "shot glass" + desc = "No glasses were shot in the making of this glass." + icon_state = "shotglass" + amount_per_transfer_from_this = 10 + volume = 10 + matter = list("glass" = 175) + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/on_reagent_change() + overlays.Cut() + + if(reagents.total_volume) + var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]1") + + switch(reagents.total_volume) + if(0 to 3) filling.icon_state = "[icon_state]1" + if(4 to 7) filling.icon_state = "[icon_state]5" + if(8 to INFINITY) filling.icon_state = "[icon_state]12" + + filling.color += reagents.get_color() + overlays += filling + name = "shot glass of " + reagents.get_master_reagent_name() //No matter what, the glass will tell you the reagent's name. Might be too abusable in the future. + else + name = "shot glass" + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask + name = "fitness shaker" + desc = "Big enough to contain enough protein to get perfectly swole. Don't mind the bits." + icon_state = "fitness-cup_black" + volume = 100 + matter = list("plastic" = 2000) + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/New() + ..() + icon_state = pick("fitness-cup_black", "fitness-cup_red", "fitness-cup_black") + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/on_reagent_change() + overlays.Cut() + + if(reagents.total_volume) + var/image/filling = image('icons/obj/reagentfillings.dmi', src, "fitness-cup10") + + switch(reagents.total_volume) + if(0 to 10) filling.icon_state = "fitness-cup10" + if(11 to 20) filling.icon_state = "fitness-cup20" + if(21 to 29) filling.icon_state = "fitness-cup30" + if(30 to 39) filling.icon_state = "fitness-cup40" + if(40 to 49) filling.icon_state = "fitness-cup50" + if(50 to 59) filling.icon_state = "fitness-cup60" + if(60 to 69) filling.icon_state = "fitness-cup70" + if(70 to 79) filling.icon_state = "fitness-cup80" + if(80 to 89) filling.icon_state = "fitness-cup90" + if(90 to INFINITY) filling.icon_state = "fitness-cup100" + + filling.color += reagents.get_color() + overlays += filling + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake + name = "protein shake" + +/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake/New() + ..() + reagents.add_reagent("nutriment", 30) + reagents.add_reagent("iron", 10) + reagents.add_reagent("protein", 15) + reagents.add_reagent("water", 45) on_reagent_change() \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/drinks/jar.dm b/code/modules/food/food/drinks/jar.dm similarity index 96% rename from code/modules/reagents/reagent_containers/food/drinks/jar.dm rename to code/modules/food/food/drinks/jar.dm index b4d305bae7..2167eb48a4 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/jar.dm +++ b/code/modules/food/food/drinks/jar.dm @@ -1,25 +1,25 @@ -///jar -/obj/item/weapon/reagent_containers/food/drinks/jar - name = "empty jar" - desc = "A jar. You're not sure what it's supposed to hold." - icon_state = "jar" - item_state = "beaker" - center_of_mass = list("x"=15, "y"=8) - unacidable = 1 - -/obj/item/weapon/reagent_containers/food/drinks/jar/on_reagent_change() - if (reagents.reagent_list.len > 0) - switch(reagents.get_master_reagent_id()) - if("slime") - icon_state = "jar_slime" - name = "slime jam" - desc = "A jar of slime jam. Delicious!" - else - icon_state ="jar_what" - name = "jar of something" - desc = "You can't really tell what this is." - else - icon_state = "jar" - name = "empty jar" - desc = "A jar. You're not sure what it's supposed to hold." - return +///jar +/obj/item/weapon/reagent_containers/food/drinks/jar + name = "empty jar" + desc = "A jar. You're not sure what it's supposed to hold." + icon_state = "jar" + item_state = "beaker" + center_of_mass = list("x"=15, "y"=8) + unacidable = 1 + +/obj/item/weapon/reagent_containers/food/drinks/jar/on_reagent_change() + if (reagents.reagent_list.len > 0) + switch(reagents.get_master_reagent_id()) + if("slime") + icon_state = "jar_slime" + name = "slime jam" + desc = "A jar of slime jam. Delicious!" + else + icon_state ="jar_what" + name = "jar of something" + desc = "You can't really tell what this is." + else + icon_state = "jar" + name = "empty jar" + desc = "A jar. You're not sure what it's supposed to hold." + return diff --git a/code/modules/reagents/reagent_containers/food/lunch.dm b/code/modules/food/food/lunch.dm similarity index 100% rename from code/modules/reagents/reagent_containers/food/lunch.dm rename to code/modules/food/food/lunch.dm diff --git a/code/modules/reagents/reagent_containers/food/sandwich.dm b/code/modules/food/food/sandwich.dm similarity index 100% rename from code/modules/reagents/reagent_containers/food/sandwich.dm rename to code/modules/food/food/sandwich.dm diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm new file mode 100644 index 0000000000..048221ff16 --- /dev/null +++ b/code/modules/food/food/snacks.dm @@ -0,0 +1,7740 @@ +<<<<<<< HEAD:code/modules/reagents/reagent_containers/food/snacks.dm +//Food items that are eaten normally and don't leave anything behind. +/obj/item/weapon/reagent_containers/food/snacks + name = "snack" + desc = "yummy" + icon = 'icons/obj/food.dmi' + icon_state = null + var/bitesize = 1 + var/bitecount = 0 + var/trash = null + var/slice_path + var/slices_num + var/dried_type = null + var/dry = 0 + var/nutriment_amt = 0 + var/list/nutriment_desc = list("food" = 1) + center_of_mass = list("x"=16, "y"=16) + w_class = ITEMSIZE_SMALL + force = 1 + +/obj/item/weapon/reagent_containers/food/snacks/New() + ..() + if(nutriment_amt) + reagents.add_reagent("nutriment",nutriment_amt,nutriment_desc) + +/obj/item/weapon/reagent_containers/food/snacks/New() + ..() + if(nutriment_amt) + reagents.add_reagent("nutriment", nutriment_amt) + + //Placeholder for effect that trigger on eating that aren't tied to reagents. +/obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M) + if(!usr) + usr = M + if(!reagents.total_volume) + M.visible_message("[M] finishes eating \the [src].","You finish eating \the [src].") + usr.drop_from_inventory(src) //so icons update :[ + + if(trash) + if(ispath(trash,/obj/item)) + var/obj/item/TrashItem = new trash(usr) + usr.put_in_hands(TrashItem) + else if(istype(trash,/obj/item)) + usr.put_in_hands(trash) + qdel(src) + return + +/obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob) + return + +/obj/item/weapon/reagent_containers/food/snacks/attack(mob/M as mob, mob/user as mob, def_zone) + if(reagents && !reagents.total_volume) + user << "None of [src] left!" + user.drop_from_inventory(src) + qdel(src) + return 0 + + if(istype(M, /mob/living/carbon)) + //TODO: replace with standard_feed_mob() call. + + var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25) + if(M == user) //If you're eating it yourself + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(!H.check_has_mouth()) + user << "Where do you intend to put \the [src]? You don't have a mouth!" + return + var/obj/item/blocked = H.check_mouth_coverage() + if(blocked) + user << "\The [blocked] is in the way!" + return + + // Vorestation edits in this section. + user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things + if (fullness <= 50) + M << "You hungrily chew out a piece of [src] and gobble it!" + if (fullness > 50 && fullness <= 150) + M << "You hungrily begin to eat [src]." + if (fullness > 150 && fullness <= 350) + M << "You take a bite of [src]." + if (fullness > 350 && fullness <= 550) + M << "You unwillingly chew a bit of [src]." + if (fullness > 550 && fullness <= 650) + M << "You swallow some more of the [src], causing your belly to swell out a little." + if (fullness > 650 && fullness <= 1000) + M << "You stuff yourself with the [src]. Your stomach feels very heavy." + if (fullness > 1000 && fullness <= 3000) + M << "You gluttonously swallow down the hunk of [src]. You're so gorged, it's hard to stand." + if (fullness > 3000 && fullness <= 5500) + M << "You force the piece of [src] down your throat. You can feel your stomach getting firm as it reaches its limits." + if (fullness > 5500 && fullness <= 6000) + M << "You barely glug down the bite of [src], causing undigested food to force into your intestines. You can't take much more of this!" + if (fullness > 6000) // There has to be a limit eventually. + M << "Your stomach blorts and aches, prompting you to stop. You literally cannot force any more of [src] to go down your throat." + return 0 + /*if (fullness > (550 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat + M << "You cannot force any more of [src] to go down your throat." + return 0*/ + + else + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(!H.check_has_mouth()) + user << "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!" + return + var/obj/item/blocked = H.check_mouth_coverage() + if(blocked) + user << "\The [blocked] is in the way!" + return + + if(!istype(M, /mob/living/carbon/slime)) //If you're feeding it to someone else. + + /*if (fullness <= (550 * (1 + M.overeatduration / 1000))) // Vorestation edit + user.visible_message("[user] attempts to feed [M] [src].") + else + user.visible_message("[user] cannot force anymore of [src] down [M]'s throat.") + return 0*/ + user.visible_message("[user] attempts to feed [M] [src].") // Vorestation edit + + user.setClickCooldown(user.get_attack_speed(src)) + if(!do_mob(user, M)) return + + //Do we really care about this + add_attack_logs(user,M,"Fed with [src.name] containing [reagentlist(src)]", admin_notify = FALSE) + + user.visible_message("[user] feeds [M] [src].") + + else + user << "This creature does not seem to have a mouth!" + return + + if(reagents) //Handle ingestion of the reagent. + playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + if(reagents.total_volume) + if(reagents.total_volume > bitesize) + reagents.trans_to_mob(M, bitesize, CHEM_INGEST) + else + reagents.trans_to_mob(M, reagents.total_volume, CHEM_INGEST) + bitecount++ + On_Consume(M) + return 1 + + return 0 + +/obj/item/weapon/reagent_containers/food/snacks/examine(mob/user) + if(!..(user, 1)) + return + if (bitecount==0) + return + else if (bitecount==1) + user << "\The [src] was bitten by someone!" + else if (bitecount<=3) + user << "\The [src] was bitten [bitecount] times!" + else + user << "\The [src] was bitten multiple times!" + +/obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/storage)) + ..() // -> item/attackby() + return + + // Eating with forks + if(istype(W,/obj/item/weapon/material/kitchen/utensil)) + var/obj/item/weapon/material/kitchen/utensil/U = W + if(U.scoop_food) + if(!U.reagents) + U.create_reagents(5) + + if (U.reagents.total_volume > 0) + user << "You already have something on your [U]." + return + + user.visible_message( \ + "[user] scoops up some [src] with \the [U]!", \ + "You scoop up some [src] with \the [U]!" \ + ) + + src.bitecount++ + U.overlays.Cut() + U.loaded = "[src]" + var/image/I = new(U.icon, "loadedfood") + I.color = src.filling_color + U.overlays += I + + reagents.trans_to_obj(U, min(reagents.total_volume,5)) + + if (reagents.total_volume <= 0) + qdel(src) + return + + if (is_sliceable()) + //these are used to allow hiding edge items in food that is not on a table/tray + var/can_slice_here = isturf(src.loc) && ((locate(/obj/structure/table) in src.loc) || (locate(/obj/machinery/optable) in src.loc) || (locate(/obj/item/weapon/tray) in src.loc)) + var/hide_item = !has_edge(W) || !can_slice_here + + if (hide_item) + if (W.w_class >= src.w_class || is_robot_module(W)) + return + + 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) + 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("\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("\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)) + var/obj/slice = new slice_path (src.loc) + reagents.trans_to_obj(slice, reagents_per_slice) + qdel(src) + return + +/obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable() + return (slices_num && slice_path && slices_num > 0) + +/obj/item/weapon/reagent_containers/food/snacks/Destroy() + if(contents) + for(var/atom/movable/something in contents) + something.dropInto(loc) + . = ..() + +//////////////////////////////////////////////////////////////////////////////// +/// FOOD END +//////////////////////////////////////////////////////////////////////////////// +/obj/item/weapon/reagent_containers/food/snacks/attack_generic(var/mob/living/user) + if(!isanimal(user) && !isalien(user)) + return + user.visible_message("[user] nibbles away at \the [src].","You nibble away at \the [src].") + bitecount++ + if(reagents) + reagents.trans_to_mob(user, bitesize, CHEM_INGEST) + spawn(5) + if(!src && !user.client) + user.custom_emote(1,"[pick("burps", "cries for more", "burps twice", "looks at the area where the food was")]") + qdel(src) + On_Consume(user) + +////////////////////////////////////////////////// +////////////////////////////////////////////Snacks +////////////////////////////////////////////////// +//Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created +// already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten. + +//Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units Generally speaking, you don't want to go over 40 +// total for the item because you want to leave space for extra condiments. If you want effect besides healing, add a reagent for +// it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use Tricordrazine). On use +// effect (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way). + +//The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to +// 2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a +// bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all +// the bites. No more contained reagents = no more bites. + +//Here is an example of the new formatting for anyone who wants to add more food items. +///obj/item/weapon/reagent_containers/food/snacks/xenoburger //Identification path for the object. +// name = "Xenoburger" //Name that displays in the UI. +// desc = "Smells caustic. Tastes like heresy." //Duh +// icon_state = "xburger" //Refers to an icon in food.dmi +// New() //Don't mess with this. +// ..() //Same here. +// reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste +// reagents.add_reagent("nutriment", 2) // this line of code for all the contents. +// bitesize = 3 //This is the amount each bite consumes. + + + + +/obj/item/weapon/reagent_containers/food/snacks/aesirsalad + name = "Aesir salad" + desc = "Probably too incredible for mortal men to fully enjoy." + icon_state = "aesirsalad" + trash = /obj/item/trash/snack_bowl + filling_color = "#468C00" + center_of_mass = list("x"=17, "y"=11) + nutriment_amt = 8 + nutriment_desc = list("apples" = 3,"salad" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/aesirsalad/New() + ..() + reagents.add_reagent("doctorsdelight", 8) + reagents.add_reagent("tricordrazine", 8) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/candy + name = "candy" + desc = "Nougat, love it or hate it." + icon_state = "candy" + trash = /obj/item/trash/candy + filling_color = "#7D5F46" + center_of_mass = list("x"=15, "y"=15) + nutriment_amt = 1 + nutriment_desc = list("candy" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/candy/New() + ..() + reagents.add_reagent("sugar", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar + name = "protein bar" + desc = "SwoleMAX brand protein bars, guaranteed to get you feeling perfectly overconfident." + icon_state = "proteinbar" + trash = /obj/item/trash/candy/proteinbar + nutriment_amt = 9 + nutriment_desc = list("candy" = 1, "protein" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar/New() + ..() + reagents.add_reagent("protein", 4) + reagents.add_reagent("sugar", 4) + bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/candy/donor + name = "Donor Candy" + desc = "A little treat for blood donors." + trash = /obj/item/trash/candy + nutriment_amt = 9 + nutriment_desc = list("candy" = 10) + +/obj/item/weapon/reagent_containers/food/snacks/candy/donor/New() + ..() + reagents.add_reagent("sugar", 3) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/candy_corn + name = "candy corn" + desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas." + icon_state = "candy_corn" + filling_color = "#FFFCB0" + center_of_mass = list("x"=14, "y"=10) + nutriment_amt = 4 + nutriment_desc = list("candy corn" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/candy_corn/New() + ..() + reagents.add_reagent("sugar", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/chips + name = "chips" + desc = "Commander Riker's What-The-Crisps" + icon_state = "chips" + trash = /obj/item/trash/chips + filling_color = "#E8C31E" + center_of_mass = list("x"=15, "y"=15) + nutriment_amt = 3 + nutriment_desc = list("salt" = 1, "chips" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/chips/New() + ..() + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/cookie + name = "cookie" + desc = "COOKIE!!!" + icon_state = "COOKIE!!!" + filling_color = "#DBC94F" + center_of_mass = list("x"=17, "y"=18) + nutriment_amt = 5 + nutriment_desc = list("sweetness" = 3, "cookie" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/cookie/New() + ..() + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/chocolatebar + name = "Chocolate Bar" + desc = "Such sweet, fattening food." + icon_state = "chocolatebar" + filling_color = "#7D5F46" + center_of_mass = list("x"=15, "y"=15) + nutriment_amt = 2 + nutriment_desc = list("chocolate" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/New() + ..() + reagents.add_reagent("sugar", 2) + reagents.add_reagent("coco", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece + name = "chocolate piece" + desc = "A luscious milk chocolate piece filled with gooey caramel." + icon_state = "chocolatepiece" + filling_color = "#7D5F46" + center_of_mass = list("x"=15, "y"=15) + nutriment_amt = 1 + nutriment_desc = list("chocolate" = 3, "caramel" = 2, "lusciousness" = 1) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white + name = "white chocolate piece" + desc = "A creamy white chocolate piece drizzled in milk chocolate." + icon_state = "chocolatepiece_white" + filling_color = "#E2DAD3" + nutriment_desc = list("white chocolate" = 3, "creaminess" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle + name = "chocolate truffle" + desc = "A bite-sized milk chocolate truffle that could buy anyone's love." + icon_state = "chocolatepiece_truffle" + nutriment_desc = list("chocolate" = 3, "undying devotion" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/chocolateegg + name = "Chocolate Egg" + desc = "Such sweet, fattening food." + icon_state = "chocolateegg" + filling_color = "#7D5F46" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 3 + nutriment_desc = list("chocolate" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/New() + ..() + reagents.add_reagent("sugar", 2) + reagents.add_reagent("coco", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/donut + name = "donut" + desc = "Goes great with Robust Coffee." + icon_state = "donut1" + filling_color = "#D9C386" + var/overlay_state = "box-donut1" + center_of_mass = list("x"=13, "y"=16) + nutriment_desc = list("sweetness", "donut") + +/obj/item/weapon/reagent_containers/food/snacks/donut/normal + name = "donut" + desc = "Goes great with Robust Coffee." + icon_state = "donut1" + nutriment_amt = 3 + +/obj/item/weapon/reagent_containers/food/snacks/donut/normal/New() + ..() + reagents.add_reagent("nutriment", 3) + reagents.add_reagent("sprinkles", 1) + src.bitesize = 3 + if(prob(30)) + src.icon_state = "donut2" + src.overlay_state = "box-donut2" + src.name = "frosted donut" + reagents.add_reagent("sprinkles", 2) + center_of_mass = list("x"=19, "y"=16) + +/obj/item/weapon/reagent_containers/food/snacks/donut/chaos + name = "Chaos Donut" + desc = "Like life, it never quite tastes the same." + icon_state = "donut1" + filling_color = "#ED11E6" + nutriment_amt = 2 + +/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/New() + ..() + reagents.add_reagent("sprinkles", 1) + bitesize = 10 + var/chaosselect = pick(1,2,3,4,5,6,7,8,9,10) + switch(chaosselect) + if(1) + reagents.add_reagent("nutriment", 3) + if(2) + reagents.add_reagent("capsaicin", 3) + if(3) + reagents.add_reagent("frostoil", 3) + if(4) + reagents.add_reagent("sprinkles", 3) + if(5) + reagents.add_reagent("phoron", 3) + if(6) + reagents.add_reagent("coco", 3) + if(7) + reagents.add_reagent("slimejelly", 3) + if(8) + reagents.add_reagent("banana", 3) + if(9) + reagents.add_reagent("berryjuice", 3) + if(10) + reagents.add_reagent("tricordrazine", 3) + if(prob(30)) + src.icon_state = "donut2" + src.overlay_state = "box-donut2" + src.name = "Frosted Chaos Donut" + reagents.add_reagent("sprinkles", 2) + +/obj/item/weapon/reagent_containers/food/snacks/donut/jelly + name = "Jelly Donut" + desc = "You jelly?" + icon_state = "jdonut1" + filling_color = "#ED1169" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 3 + +/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/New() + ..() + reagents.add_reagent("sprinkles", 1) + reagents.add_reagent("berryjuice", 5) + bitesize = 5 + if(prob(30)) + src.icon_state = "jdonut2" + src.overlay_state = "box-donut2" + src.name = "Frosted Jelly Donut" + reagents.add_reagent("sprinkles", 2) + +/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly + name = "Jelly Donut" + desc = "You jelly?" + icon_state = "jdonut1" + filling_color = "#ED1169" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 3 + +/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/New() + ..() + reagents.add_reagent("sprinkles", 1) + reagents.add_reagent("slimejelly", 5) + bitesize = 5 + if(prob(30)) + src.icon_state = "jdonut2" + src.overlay_state = "box-donut2" + src.name = "Frosted Jelly Donut" + reagents.add_reagent("sprinkles", 2) + +/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly + name = "Jelly Donut" + desc = "You jelly?" + icon_state = "jdonut1" + filling_color = "#ED1169" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 3 + +/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/New() + ..() + reagents.add_reagent("sprinkles", 1) + reagents.add_reagent("cherryjelly", 5) + bitesize = 5 + if(prob(30)) + src.icon_state = "jdonut2" + src.overlay_state = "box-donut2" + src.name = "Frosted Jelly Donut" + reagents.add_reagent("sprinkles", 2) + +/obj/item/weapon/reagent_containers/food/snacks/egg + name = "egg" + desc = "An egg!" + icon_state = "egg" + filling_color = "#FDFFD1" + volume = 10 + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/egg/New() + ..() + reagents.add_reagent("egg", 3) + +/obj/item/weapon/reagent_containers/food/snacks/egg/afterattack(obj/O as obj, mob/user as mob, proximity) + if(istype(O,/obj/machinery/microwave)) + return ..() + if(!(proximity && O.is_open_container())) + return + user << "You crack \the [src] into \the [O]." + reagents.trans_to(O, reagents.total_volume) + user.drop_from_inventory(src) + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom) + ..() + new/obj/effect/decal/cleanable/egg_smudge(src.loc) + src.reagents.splash(hit_atom, reagents.total_volume) + src.visible_message("[src.name] has been squashed.","You hear a smack.") + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype( W, /obj/item/weapon/pen/crayon )) + var/obj/item/weapon/pen/crayon/C = W + var/clr = C.colourName + + if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow"))) + usr << "The egg refuses to take on this color!" + return + + usr << "You color \the [src] [clr]" + icon_state = "egg-[clr]" + else + ..() + +/obj/item/weapon/reagent_containers/food/snacks/egg/blue + icon_state = "egg-blue" + +/obj/item/weapon/reagent_containers/food/snacks/egg/green + icon_state = "egg-green" + +/obj/item/weapon/reagent_containers/food/snacks/egg/mime + icon_state = "egg-mime" + +/obj/item/weapon/reagent_containers/food/snacks/egg/orange + icon_state = "egg-orange" + +/obj/item/weapon/reagent_containers/food/snacks/egg/purple + icon_state = "egg-purple" + +/obj/item/weapon/reagent_containers/food/snacks/egg/rainbow + icon_state = "egg-rainbow" + +/obj/item/weapon/reagent_containers/food/snacks/egg/red + icon_state = "egg-red" + +/obj/item/weapon/reagent_containers/food/snacks/egg/yellow + icon_state = "egg-yellow" + +/obj/item/weapon/reagent_containers/food/snacks/friedegg + name = "Fried egg" + desc = "A fried egg, with a touch of salt and pepper." + icon_state = "friedegg" + filling_color = "#FFDF78" + center_of_mass = list("x"=16, "y"=14) + +/obj/item/weapon/reagent_containers/food/snacks/friedegg/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("sodiumchloride", 1) + reagents.add_reagent("blackpepper", 1) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/boiledegg + name = "Boiled egg" + desc = "A hard boiled egg." + icon_state = "egg" + filling_color = "#FFFFFF" + +/obj/item/weapon/reagent_containers/food/snacks/boiledegg/New() + ..() + reagents.add_reagent("protein", 2) + +/obj/item/weapon/reagent_containers/food/snacks/organ + name = "organ" + desc = "It's good for you." + icon = 'icons/obj/surgery.dmi' + icon_state = "appendix" + filling_color = "#E00D34" + center_of_mass = list("x"=16, "y"=16) + +/obj/item/weapon/reagent_containers/food/snacks/organ/New() + ..() + reagents.add_reagent("protein", rand(3,5)) + reagents.add_reagent("toxin", rand(1,3)) + src.bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/tofu + name = "Tofu" + icon_state = "tofu" + desc = "We all love tofu." + filling_color = "#FFFEE0" + center_of_mass = list("x"=17, "y"=10) + nutriment_amt = 3 + nutriment_desc = list("tofu" = 3, "goeyness" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/tofu/New() + ..() + src.bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/tofurkey + name = "Tofurkey" + desc = "A fake turkey made from tofu." + icon_state = "tofurkey" + filling_color = "#FFFEE0" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 12 + nutriment_desc = list("turkey" = 3, "tofu" = 5, "goeyness" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/tofurkey/New() + ..() + reagents.add_reagent("stoxin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/stuffing + name = "Stuffing" + desc = "Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in!" + icon_state = "stuffing" + filling_color = "#C9AC83" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 3 + nutriment_desc = list("dryness" = 2, "bread" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/stuffing/New() + ..() + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/carpmeat + name = "carp fillet" + desc = "A fillet of spess carp meat" + icon_state = "fishfillet" + filling_color = "#FFDEFE" + center_of_mass = list("x"=17, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/carpmeat/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("carpotoxin", 3) + src.bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/fishfingers + name = "Fish Fingers" + desc = "A finger of fish." + icon_state = "fishfingers" + filling_color = "#FFDEFE" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/fishfingers/New() + ..() + reagents.add_reagent("protein", 4) + reagents.add_reagent("carpotoxin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice + name = "huge mushroom slice" + desc = "A slice from a huge mushroom." + icon_state = "hugemushroomslice" + filling_color = "#E0D7C5" + center_of_mass = list("x"=17, "y"=16) + nutriment_amt = 3 + nutriment_desc = list("raw" = 2, "mushroom" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/New() + ..() + reagents.add_reagent("psilocybin", 3) + src.bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/tomatomeat + name = "tomato slice" + desc = "A slice from a huge tomato" + icon_state = "tomatomeat" + filling_color = "#DB0000" + center_of_mass = list("x"=17, "y"=16) + nutriment_amt = 3 + nutriment_desc = list("raw" = 2, "tomato" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/tomatomeat/New() + ..() + src.bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/bearmeat + name = "bear meat" + desc = "A very manly slab of meat." + icon_state = "bearmeat" + filling_color = "#DB0000" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/bearmeat/New() + ..() + reagents.add_reagent("protein", 12) + reagents.add_reagent("hyperzine", 5) + src.bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/xenomeat + name = "xenomeat" + desc = "A slab of green meat. Smells like acid." + icon_state = "xenomeat" + filling_color = "#43DE18" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/xenomeat/New() + ..() + reagents.add_reagent("protein", 6) + reagents.add_reagent("pacid",6) + src.bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat // Substitute for recipes requiring xeno meat. + name = "spider meat" + desc = "A slab of green meat." + icon_state = "xenomeat" + filling_color = "#43DE18" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat/New() + ..() + reagents.add_reagent("spidertoxin",6) + reagents.remove_reagent("pacid",6) + src.bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/meatball + name = "meatball" + desc = "A great meal all round." + icon_state = "meatball" + filling_color = "#DB0000" + center_of_mass = list("x"=16, "y"=16) + +/obj/item/weapon/reagent_containers/food/snacks/meatball/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sausage + name = "Sausage" + desc = "A piece of mixed, long meat." + icon_state = "sausage" + filling_color = "#DB0000" + center_of_mass = list("x"=16, "y"=16) + +/obj/item/weapon/reagent_containers/food/snacks/sausage/New() + ..() + reagents.add_reagent("protein", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket + name = "Donk-pocket" + desc = "The food of choice for the seasoned traitor." + icon_state = "donkpocket" + filling_color = "#DEDEAB" + center_of_mass = list("x"=16, "y"=10) + var/warm + var/list/heated_reagents + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/New() + ..() + reagents.add_reagent("nutriment", 2) + reagents.add_reagent("protein", 2) + + warm = 0 + heated_reagents = list("tricordrazine" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/heat() + warm = 1 + for(var/reagent in heated_reagents) + reagents.add_reagent(reagent, heated_reagents[reagent]) + bitesize = 6 + name = "Warm " + name + cooltime() + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/cooltime() + if (src.warm) + spawn(4200) + src.warm = 0 + for(var/reagent in heated_reagents) + src.reagents.del_reagent(reagent) + src.name = initial(name) + return + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket + name = "\improper Sin-pocket" + desc = "The food of choice for the veteran. Do NOT overconsume." + filling_color = "#6D6D00" + heated_reagents = list("doctorsdelight" = 5, "hyperzine" = 0.75, "synaptizine" = 0.25) + var/has_been_heated = 0 + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket/attack_self(mob/user) + if(has_been_heated) + user << "The heating chemicals have already been spent." + return + has_been_heated = 1 + user.visible_message("[user] crushes \the [src] package.", "You crush \the [src] package and feel a comfortable heat build up.") + spawn(200) + user << "You think \the [src] is ready to eat about now." + heat() + +/obj/item/weapon/reagent_containers/food/snacks/brainburger + name = "brainburger" + desc = "A strange looking burger. It looks almost sentient." + icon_state = "brainburger" + filling_color = "#F2B6EA" + center_of_mass = list("x"=15, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/brainburger/New() + ..() + reagents.add_reagent("protein", 6) + reagents.add_reagent("alkysine", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/ghostburger + name = "Ghost Burger" + desc = "Spooky! It doesn't look very filling." + icon_state = "ghostburger" + filling_color = "#FFF2FF" + center_of_mass = list("x"=16, "y"=11) + nutriment_desc = list("buns" = 3, "spookiness" = 3) + nutriment_amt = 2 + +/obj/item/weapon/reagent_containers/food/snacks/ghostburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/human + var/hname = "" + var/job = null + filling_color = "#D63C3C" + +/obj/item/weapon/reagent_containers/food/snacks/human/burger + name = "-burger" + desc = "A bloody burger." + icon_state = "hburger" + center_of_mass = list("x"=16, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/human/burger/New() + ..() + reagents.add_reagent("protein", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburger + name = "cheeseburger" + desc = "The cheese adds a good flavor." + icon_state = "cheeseburger" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 2 + nutriment_desc = list("cheese" = 2, "bun" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburger/New() + ..() + reagents.add_reagent("protein", 2) + +/obj/item/weapon/reagent_containers/food/snacks/monkeyburger + name = "burger" + desc = "The cornerstone of every nutritious breakfast." + icon_state = "hburger" + filling_color = "#D63C3C" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 3 + nutriment_desc = list("bun" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fishburger + 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" + filling_color = "#FFDEFE" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/fishburger/New() + ..() + reagents.add_reagent("protein", 6) + reagents.add_reagent("carpotoxin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/tofuburger + name = "Tofu Burger" + desc = "What.. is that meat?" + icon_state = "tofuburger" + filling_color = "#FFFEE0" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 6 + nutriment_desc = list("bun" = 2, "pseudo-soy meat" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/tofuburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/roburger + name = "roburger" + desc = "The lettuce is the only organic component. Beep." + icon_state = "roburger" + filling_color = "#CCCCCC" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 2 + nutriment_desc = list("bun" = 2, "metal" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/roburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/roburgerbig + name = "roburger" + desc = "This massive patty looks like poison. Beep." + icon_state = "roburger" + filling_color = "#CCCCCC" + volume = 100 + center_of_mass = list("x"=16, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/roburgerbig/New() + ..() + bitesize = 0.1 + +/obj/item/weapon/reagent_containers/food/snacks/xenoburger + name = "xenoburger" + desc = "Smells caustic. Tastes like heresy." + icon_state = "xburger" + filling_color = "#43DE18" + center_of_mass = list("x"=16, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/xenoburger/New() + ..() + reagents.add_reagent("protein", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/clownburger + name = "Clown Burger" + desc = "This tastes funny..." + icon_state = "clownburger" + filling_color = "#FF00FF" + center_of_mass = list("x"=17, "y"=12) + nutriment_amt = 6 + nutriment_desc = list("bun" = 2, "clown shoe" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/clownburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/mimeburger + name = "Mime Burger" + desc = "Its taste defies language." + icon_state = "mimeburger" + filling_color = "#FFFFFF" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 6 + nutriment_desc = list("bun" = 2, "face paint" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/mimeburger/New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/omelette + name = "Omelette Du Fromage" + desc = "That's all you can say!" + icon_state = "omelette" + trash = /obj/item/trash/plate + filling_color = "#FFF9A8" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/omelette/New() + ..() + reagents.add_reagent("protein", 8) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/muffin + name = "Muffin" + desc = "A delicious and spongy little cake" + icon_state = "muffin" + filling_color = "#E0CF9B" + center_of_mass = list("x"=17, "y"=4) + nutriment_amt = 6 + nutriment_desc = list("sweetness" = 3, "muffin" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/muffin/New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/pie + name = "Banana Cream Pie" + desc = "Just like back home, on clown planet! HONK!" + icon_state = "pie" + trash = /obj/item/trash/plate + filling_color = "#FBFFB8" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 4 + nutriment_desc = list("pie" = 3, "cream" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/pie/New() + ..() + reagents.add_reagent("banana",5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom) + ..() + new/obj/effect/decal/cleanable/pie_smudge(src.loc) + src.visible_message("\The [src.name] splats.","You hear a splat.") + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis + name = "Berry Clafoutis" + desc = "No black birds, this is a good sign." + icon_state = "berryclafoutis" + trash = /obj/item/trash/plate + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 4 + nutriment_desc = list("sweetness" = 2, "pie" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis/New() + ..() + reagents.add_reagent("berryjuice", 5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/waffles + name = "waffles" + desc = "Mmm, waffles" + icon_state = "waffles" + trash = /obj/item/trash/waffles + filling_color = "#E6DEB5" + center_of_mass = list("x"=15, "y"=11) + nutriment_amt = 8 + nutriment_desc = list("waffle" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/waffles/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/eggplantparm + name = "Eggplant Parmigiana" + desc = "The only good recipe for eggplant." + icon_state = "eggplantparm" + trash = /obj/item/trash/plate + filling_color = "#4D2F5E" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 6 + nutriment_desc = list("cheese" = 3, "eggplant" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/eggplantparm/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/soylentgreen + name = "Soylent Green" + desc = "Not made of people. Honest." //Totally people. + icon_state = "soylent_green" + trash = /obj/item/trash/waffles + filling_color = "#B8E6B5" + center_of_mass = list("x"=15, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/soylentgreen/New() + ..() + reagents.add_reagent("protein", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/soylenviridians + name = "Soylen Virdians" + desc = "Not made of people. Honest." //Actually honest for once. + icon_state = "soylent_yellow" + trash = /obj/item/trash/waffles + filling_color = "#E6FA61" + center_of_mass = list("x"=15, "y"=11) + nutriment_amt = 10 + nutriment_desc = list("some sort of protein" = 10) //seasoned VERY well. + +/obj/item/weapon/reagent_containers/food/snacks/soylenviridians/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatpie + name = "Meat-pie" + icon_state = "meatpie" + desc = "An old barber recipe, very delicious!" + trash = /obj/item/trash/plate + filling_color = "#948051" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/meatpie/New() + ..() + reagents.add_reagent("protein", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tofupie + name = "Tofu-pie" + icon_state = "meatpie" + desc = "A delicious tofu pie." + trash = /obj/item/trash/plate + filling_color = "#FFFEE0" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 10 + nutriment_desc = list("tofu" = 2, "pie" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/tofupie/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/amanita_pie + name = "amanita pie" + desc = "Sweet and tasty poison pie." + icon_state = "amanita_pie" + filling_color = "#FFCCCC" + center_of_mass = list("x"=17, "y"=9) + nutriment_amt = 5 + nutriment_desc = list("sweetness" = 3, "mushroom" = 3, "pie" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/amanita_pie/New() + ..() + reagents.add_reagent("amatoxin", 3) + reagents.add_reagent("psilocybin", 1) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/plump_pie + name = "plump pie" + desc = "I bet you love stuff made out of plump helmets!" + icon_state = "plump_pie" + filling_color = "#B8279B" + center_of_mass = list("x"=17, "y"=9) + nutriment_amt = 8 + nutriment_desc = list("heartiness" = 2, "mushroom" = 3, "pie" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/plump_pie/New() + ..() + if(prob(10)) + name = "exceptional plump pie" + desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" + reagents.add_reagent("nutriment", 8) + reagents.add_reagent("tricordrazine", 5) + bitesize = 2 + else + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/xemeatpie + name = "Xeno-pie" + icon_state = "xenomeatpie" + desc = "A delicious meatpie. Probably heretical." + trash = /obj/item/trash/plate + filling_color = "#43DE18" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/xemeatpie/New() + ..() + reagents.add_reagent("protein", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/wingfangchu + name = "Wing Fang Chu" + desc = "A savory dish of alien wing wang in soy." + icon_state = "wingfangchu" + trash = /obj/item/trash/snack_bowl + filling_color = "#43DE18" + center_of_mass = list("x"=17, "y"=9) + +/obj/item/weapon/reagent_containers/food/snacks/wingfangchu/New() + ..() + reagents.add_reagent("protein", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/human/kabob + name = "-kabob" + icon_state = "kabob" + desc = "A human meat, on a stick." + trash = /obj/item/stack/rods + filling_color = "#A85340" + center_of_mass = list("x"=17, "y"=15) + +/obj/item/weapon/reagent_containers/food/snacks/human/kabob/New() + ..() + reagents.add_reagent("protein", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/monkeykabob + name = "Meat-kabob" + icon_state = "kabob" + desc = "Delicious meat, on a stick." + trash = /obj/item/stack/rods + filling_color = "#A85340" + center_of_mass = list("x"=17, "y"=15) + +/obj/item/weapon/reagent_containers/food/snacks/monkeykabob/New() + ..() + reagents.add_reagent("protein", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tofukabob + name = "Tofu-kabob" + icon_state = "kabob" + desc = "Vegan meat, on a stick." + trash = /obj/item/stack/rods + filling_color = "#FFFEE0" + + center_of_mass = list("x"=17, "y"=15) + nutriment_amt = 8 + nutriment_desc = list("tofu" = 3, "metal" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/tofukabob/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cubancarp + name = "Cuban Carp" + desc = "A sandwich that burns your tongue and then leaves it numb!" + icon_state = "cubancarp" + trash = /obj/item/trash/plate + filling_color = "#E9ADFF" + center_of_mass = list("x"=12, "y"=5) + nutriment_amt = 3 + nutriment_desc = list("toasted bread" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cubancarp/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("carpotoxin", 3) + reagents.add_reagent("capsaicin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/popcorn + name = "Popcorn" + desc = "Now let's find some cinema." + icon_state = "popcorn" + trash = /obj/item/trash/popcorn + var/unpopped = 0 + filling_color = "#FFFAD4" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 2 + nutriment_desc = list("popcorn" = 3) + + +/obj/item/weapon/reagent_containers/food/snacks/popcorn/New() + ..() + unpopped = rand(1,10) + bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 + +/obj/item/weapon/reagent_containers/food/snacks/popcorn/On_Consume() + if(prob(unpopped)) //lol ...what's the point? + usr << "You bite down on an un-popped kernel!" + unpopped = max(0, unpopped-1) + ..() + +/obj/item/weapon/reagent_containers/food/snacks/sosjerky + name = "Scaredy's Private Reserve Beef Jerky" + icon_state = "sosjerky" + desc = "Beef jerky made from the finest space cows." + trash = /obj/item/trash/sosjerky + filling_color = "#631212" + center_of_mass = list("x"=15, "y"=9) + +/obj/item/weapon/reagent_containers/food/snacks/sosjerky/New() + ..() + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/no_raisin + name = "4no Raisins" + icon_state = "4no_raisins" + desc = "Best raisins in the universe. Not sure why." + trash = /obj/item/trash/raisins + filling_color = "#343834" + center_of_mass = list("x"=15, "y"=4) + nutriment_amt = 6 + nutriment_desc = list("dried raisins" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/no_raisin/New() + ..() + reagents.add_reagent("nutriment", 6) + +/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie + name = "Space Twinkie" + icon_state = "space_twinkie" + desc = "Guaranteed to survive longer then you will." + filling_color = "#FFE591" + center_of_mass = list("x"=15, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie/New() + ..() + reagents.add_reagent("sugar", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers + name = "Cheesie Honkers" + icon_state = "cheesie_honkers" + desc = "Bite sized cheesie snacks that will honk all over your mouth" + trash = /obj/item/trash/cheesie + filling_color = "#FFA305" + center_of_mass = list("x"=15, "y"=9) + nutriment_amt = 4 + nutriment_desc = list("cheese" = 5, "chips" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/syndicake + name = "Syndi-Cakes" + icon_state = "syndi_cakes" + desc = "An extremely moist snack cake that tastes just as good after being nuked." + filling_color = "#FF5D05" + center_of_mass = list("x"=16, "y"=10) + trash = /obj/item/trash/syndi_cakes + nutriment_amt = 4 + nutriment_desc = list("sweetness" = 3, "cake" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/syndicake/New() + ..() + reagents.add_reagent("doctorsdelight", 5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato + name = "Loaded Baked Potato" + desc = "Totally baked." + icon_state = "loadedbakedpotato" + filling_color = "#9C7A68" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 3 + nutriment_desc = list("baked potato" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fries + name = "Space Fries" + desc = "AKA: French Fries, Freedom Fries, etc." + icon_state = "fries" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("fresh fries" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/fries/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/mashedpotato + name = "Mashed Potato" + desc = "Pillowy mounds of mashed potato." + icon_state = "mashedpotato" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("fluffy mashed potatoes" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/mashedpotato/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/bangersandmash + name = "Bangers and Mash" + desc = "An English treat." + icon_state = "bangersandmash" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("fluffy potato" = 3, "sausage" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/bangersandmash/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/cheesymash + name = "Cheesy Mashed Potato" + desc = "The only thing that could make mash better." + icon_state = "cheesymash" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("cheesy potato" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/cheesymash/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/blackpudding + name = "Black Pudding" + desc = "This doesn't seem like a pudding at all." + icon_state = "blackpudding" + filling_color = "#FF0000" + center_of_mass = list("x"=16, "y"=7) + +/obj/item/weapon/reagent_containers/food/snacks/blackpudding/New() + ..() + reagents.add_reagent("protein", 2) + reagents.add_reagent("blood", 5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/soydope + name = "Soy Dope" + desc = "Dope from a soy." + icon_state = "soydope" + trash = /obj/item/trash/plate + filling_color = "#C4BF76" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 2 + nutriment_desc = list("slime" = 2, "soy" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/soydope/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/spagetti + name = "Spaghetti" + desc = "A bundle of raw spaghetti." + icon_state = "spagetti" + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=16) + nutriment_amt = 1 + nutriment_desc = list("noodles" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/spagetti/New() + ..() + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/cheesyfries + name = "Cheesy Fries" + desc = "Fries. Covered in cheese. Duh." + icon_state = "cheesyfries" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("fresh fries" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cheesyfries/New() + ..() + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fortunecookie + name = "Fortune cookie" + desc = "A true prophecy in each cookie!" + icon_state = "fortune_cookie" + filling_color = "#E8E79E" + center_of_mass = list("x"=15, "y"=14) + nutriment_amt = 3 + nutriment_desc = list("fortune cookie" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/badrecipe + name = "Burned mess" + desc = "Someone should be demoted from chef for this." + icon_state = "badrecipe" + filling_color = "#211F02" + center_of_mass = list("x"=16, "y"=12) + +/obj/item/weapon/reagent_containers/food/snacks/badrecipe/New() + ..() + reagents.add_reagent("toxin", 1) + reagents.add_reagent("carbon", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatsteak + name = "Meat steak" + desc = "A piece of hot spicy meat." + icon_state = "meatstake" + trash = /obj/item/trash/plate + filling_color = "#7A3D11" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/meatsteak/New() + ..() + reagents.add_reagent("protein", 4) + reagents.add_reagent("sodiumchloride", 1) + reagents.add_reagent("blackpepper", 1) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff + name = "Spacy Liberty Duff" + desc = "Jello gelatin, from Alfred Hubbard's cookbook" + icon_state = "spacylibertyduff" + trash = /obj/item/trash/snack_bowl + filling_color = "#42B873" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 6 + nutriment_desc = list("mushroom" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff/New() + ..() + reagents.add_reagent("psilocybin", 6) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/amanitajelly + name = "Amanita Jelly" + desc = "Looks curiously toxic" + icon_state = "amanitajelly" + trash = /obj/item/trash/snack_bowl + filling_color = "#ED0758" + center_of_mass = list("x"=16, "y"=5) + nutriment_amt = 6 + nutriment_desc = list("jelly" = 3, "mushroom" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/New() + ..() + reagents.add_reagent("amatoxin", 6) + reagents.add_reagent("psilocybin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/poppypretzel + name = "Poppy pretzel" + desc = "It's all twisted up!" + icon_state = "poppypretzel" + bitesize = 2 + filling_color = "#916E36" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 5 + nutriment_desc = list("poppy seeds" = 2, "pretzel" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/poppypretzel/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatballsoup + name = "Meatball soup" + desc = "You've got balls kid, BALLS!" + icon_state = "meatballsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#785210" + center_of_mass = list("x"=16, "y"=8) + +/obj/item/weapon/reagent_containers/food/snacks/meatballsoup/New() + ..() + reagents.add_reagent("protein", 8) + reagents.add_reagent("water", 5) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/slimesoup + name = "slime soup" + desc = "If no water is available, you may substitute tears." + icon_state = "slimesoup" //nonexistant? + filling_color = "#C4DBA0" + +/obj/item/weapon/reagent_containers/food/snacks/slimesoup/New() + ..() + reagents.add_reagent("slimejelly", 5) + reagents.add_reagent("water", 10) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/bloodsoup + name = "Tomato soup" + desc = "Smells like copper." + icon_state = "tomatosoup" + filling_color = "#FF0000" + center_of_mass = list("x"=16, "y"=7) + +/obj/item/weapon/reagent_containers/food/snacks/bloodsoup/New() + ..() + reagents.add_reagent("protein", 2) + reagents.add_reagent("blood", 10) + reagents.add_reagent("water", 5) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/clownstears + name = "Clown's Tears" + desc = "Not very funny." + icon_state = "clownstears" + filling_color = "#C4FBFF" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 4 + nutriment_desc = list("salt" = 1, "the worst joke" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/clownstears/New() + ..() + reagents.add_reagent("banana", 5) + reagents.add_reagent("water", 10) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup + name = "Vegetable soup" + desc = "A true vegan meal" //TODO + icon_state = "vegetablesoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#AFC4B5" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 8 + nutriment_desc = list("carot" = 2, "corn" = 2, "eggplant" = 2, "potato" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup/New() + ..() + reagents.add_reagent("water", 5) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/nettlesoup + name = "Nettle soup" + desc = "To think, the botanist would've beat you to death with one of these." + icon_state = "nettlesoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#AFC4B5" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 8 + nutriment_desc = list("salad" = 4, "egg" = 2, "potato" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/nettlesoup/New() + ..() + reagents.add_reagent("water", 5) + reagents.add_reagent("tricordrazine", 5) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/mysterysoup + name = "Mystery soup" + desc = "The mystery is, why aren't you eating it?" + icon_state = "mysterysoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#F082FF" + center_of_mass = list("x"=16, "y"=6) + nutriment_amt = 1 + nutriment_desc = list("backwash" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/mysterysoup/New() + ..() + var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10) + switch(mysteryselect) + if(1) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("capsaicin", 3) + reagents.add_reagent("tomatojuice", 2) + if(2) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("frostoil", 3) + reagents.add_reagent("tomatojuice", 2) + if(3) + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("water", 5) + reagents.add_reagent("tricordrazine", 5) + if(4) + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("water", 10) + if(5) + reagents.add_reagent("nutriment", 2) + reagents.add_reagent("banana", 10) + if(6) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("blood", 10) + if(7) + reagents.add_reagent("slimejelly", 10) + reagents.add_reagent("water", 10) + if(8) + reagents.add_reagent("carbon", 10) + reagents.add_reagent("toxin", 10) + if(9) + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("tomatojuice", 10) + if(10) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("tomatojuice", 5) + reagents.add_reagent("imidazoline", 5) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/wishsoup + name = "Wish Soup" + desc = "I wish this was soup." + icon_state = "wishsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#D1F4FF" + center_of_mass = list("x"=16, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/wishsoup/New() + ..() + reagents.add_reagent("water", 10) + bitesize = 5 + if(prob(25)) + src.desc = "A wish come true!" + reagents.add_reagent("nutriment", 8, list("something good" = 8)) + +/obj/item/weapon/reagent_containers/food/snacks/hotchili + name = "Hot Chili" + desc = "A five alarm Texan Chili!" + icon_state = "hotchili" + trash = /obj/item/trash/snack_bowl + filling_color = "#FF3C00" + center_of_mass = list("x"=15, "y"=9) + nutriment_amt = 3 + nutriment_desc = list("chilli peppers" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/hotchili/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("capsaicin", 3) + reagents.add_reagent("tomatojuice", 2) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/coldchili + name = "Cold Chili" + desc = "This slush is barely a liquid!" + icon_state = "coldchili" + filling_color = "#2B00FF" + center_of_mass = list("x"=15, "y"=9) + trash = /obj/item/trash/snack_bowl + nutriment_amt = 3 + nutriment_desc = list("ice peppers" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/coldchili/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("frostoil", 3) + reagents.add_reagent("tomatojuice", 2) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube + name = "monkey cube" + desc = "Just add water!" + flags = OPENCONTAINER + icon_state = "monkeycube" + bitesize = 12 + filling_color = "#ADAC7F" + center_of_mass = list("x"=16, "y"=14) + + var/wrapped = 0 + var/monkey_type = "Monkey" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/New() + ..() + reagents.add_reagent("protein", 10) + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user as mob) + if(wrapped) + Unwrap(user) + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand() + src.visible_message("\The [src] expands!") + var/mob/living/carbon/human/H = new(get_turf(src)) + H.set_species(monkey_type) + H.real_name = H.species.get_random_name() + H.name = H.real_name + if(ismob(loc)) + var/mob/M = loc + M.unEquip(src) + qdel(src) + return 1 + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Unwrap(mob/user as mob) + icon_state = "monkeycube" + desc = "Just add water!" + to_chat(user, "You unwrap the cube.") + wrapped = 0 + flags |= OPENCONTAINER + return + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/On_Consume(var/mob/M) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.visible_message("A screeching creature bursts out of [M]'s chest!") + var/obj/item/organ/external/organ = H.get_organ(BP_TORSO) + organ.take_damage(50, 0, 0, "Animal escaping the ribcage") + Expand() + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/on_reagent_change() + if(reagents.has_reagent("water")) + Expand() + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped + desc = "Still wrapped in some paper." + icon_state = "monkeycubewrap" + flags = 0 + wrapped = 1 + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube + name = "farwa cube" + monkey_type = "Farwa" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube + name = "farwa cube" + monkey_type = "Farwa" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube + name = "stok cube" + monkey_type = "Stok" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube + name = "stok cube" + monkey_type = "Stok" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube + name = "neaera cube" + monkey_type = "Neaera" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube + name = "neaera cube" + monkey_type = "Neaera" + +/obj/item/weapon/reagent_containers/food/snacks/spellburger + name = "Spell Burger" + desc = "This is absolutely Ei Nath." + icon_state = "spellburger" + filling_color = "#D505FF" + nutriment_amt = 6 + nutriment_desc = list("magic" = 3, "buns" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/spellburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger + name = "Big Bite Burger" + desc = "Forget the Big Mac. THIS is the future!" + icon_state = "bigbiteburger" + filling_color = "#E3D681" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("buns" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger/New() + ..() + reagents.add_reagent("protein", 10) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/enchiladas + name = "Enchiladas" + desc = "Viva La Mexico!" + icon_state = "enchiladas" + trash = /obj/item/trash/tray + filling_color = "#A36A1F" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 2 + nutriment_desc = list("tortilla" = 3, "corn" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/enchiladas/New() + ..() + reagents.add_reagent("protein", 6) + reagents.add_reagent("capsaicin", 6) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight + name = "monkey's Delight" + desc = "Eeee Eee!" + icon_state = "monkeysdelight" + trash = /obj/item/trash/tray + filling_color = "#5C3C11" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight/New() + ..() + reagents.add_reagent("protein", 10) + reagents.add_reagent("banana", 5) + reagents.add_reagent("blackpepper", 1) + reagents.add_reagent("sodiumchloride", 1) + bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/baguette + name = "Baguette" + desc = "Bon appetit!" + icon_state = "baguette" + filling_color = "#E3D796" + center_of_mass = list("x"=18, "y"=12) + nutriment_amt = 6 + nutriment_desc = list("french bread" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/baguette/New() + ..() + reagents.add_reagent("blackpepper", 1) + reagents.add_reagent("sodiumchloride", 1) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/fishandchips + name = "Fish and Chips" + desc = "I do say so myself chap." + icon_state = "fishandchips" + filling_color = "#E3D796" + center_of_mass = list("x"=16, "y"=16) + nutriment_amt = 3 + nutriment_desc = list("salt" = 1, "chips" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/fishandchips/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("carpotoxin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/sandwich + name = "Sandwich" + desc = "A grand creation of meat, cheese, bread, and several leaves of lettuce! Arthur Dent would be proud." + icon_state = "sandwich" + trash = /obj/item/trash/plate + filling_color = "#D9BE29" + center_of_mass = list("x"=16, "y"=4) + nutriment_amt = 3 + nutriment_desc = list("bread" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/sandwich/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich + name = "Toasted Sandwich" + desc = "Now if you only had a pepper bar." + icon_state = "toastedsandwich" + trash = /obj/item/trash/plate + filling_color = "#D9BE29" + center_of_mass = list("x"=16, "y"=4) + nutriment_amt = 3 + nutriment_desc = list("toasted bread" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("carbon", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/grilledcheese + name = "Grilled Cheese Sandwich" + desc = "Goes great with Tomato soup!" + icon_state = "toastedsandwich" + trash = /obj/item/trash/plate + filling_color = "#D9BE29" + nutriment_amt = 3 + nutriment_desc = list("toasted bread" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/grilledcheese/New() + ..() + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tomatosoup + name = "Tomato Soup" + desc = "Drinking this feels like being a vampire! A tomato vampire..." + icon_state = "tomatosoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#D92929" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 5 + nutriment_desc = list("soup" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/tomatosoup/New() + ..() + reagents.add_reagent("tomatojuice", 10) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/onionsoup + name = "Onion Soup" + desc = "A soup with layers." + icon_state = "onionsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#E0C367" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 5 + nutriment_desc = list("onion" = 2, "soup" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/onionsoup/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/onionrings + name = "Onion Rings" + desc = "Crispy rings." + icon_state = "onionrings" + trash = /obj/item/trash/plate + filling_color = "#E0C367" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 5 + nutriment_desc = list("onion" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/onionrings/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles + name = "Roffle Waffles" + desc = "Waffles from Roffle. Co." + icon_state = "rofflewaffles" + trash = /obj/item/trash/waffles + filling_color = "#FF00F7" + center_of_mass = list("x"=15, "y"=11) + nutriment_amt = 8 + nutriment_desc = list("waffle" = 7, "sweetness" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles/New() + ..() + reagents.add_reagent("psilocybin", 8) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/stew + name = "Stew" + desc = "A nice and warm stew. Healthy and strong." + icon_state = "stew" + filling_color = "#9E673A" + center_of_mass = list("x"=16, "y"=5) + nutriment_amt = 6 + nutriment_desc = list("tomato" = 2, "potato" = 2, "carrot" = 2, "eggplant" = 2, "mushroom" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/stew/New() + ..() + reagents.add_reagent("protein", 4) + reagents.add_reagent("tomatojuice", 5) + reagents.add_reagent("imidazoline", 5) + reagents.add_reagent("water", 5) + bitesize = 10 + +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast + name = "Jellied Toast" + desc = "A slice of bread covered with delicious jam." + icon_state = "jellytoast" + trash = /obj/item/trash/plate + filling_color = "#B572AB" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 1 + nutriment_desc = list("toasted bread" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry/New() + ..() + reagents.add_reagent("cherryjelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime/New() + ..() + reagents.add_reagent("slimejelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/jellyburger + name = "Jelly Burger" + desc = "Culinary delight..?" + icon_state = "jellyburger" + filling_color = "#B572AB" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 5 + nutriment_desc = list("buns" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/jellyburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime/New() + ..() + reagents.add_reagent("slimejelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry/New() + ..() + reagents.add_reagent("cherryjelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/milosoup + name = "Milosoup" + desc = "The universes best soup! Yum!!!" + icon_state = "milosoup" + trash = /obj/item/trash/snack_bowl + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 8 + nutriment_desc = list("soy" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/milosoup/New() + ..() + reagents.add_reagent("water", 5) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat + name = "Stewed Soy Meat" + desc = "Even non-vegetarians will LOVE this!" + icon_state = "stewedsoymeat" + trash = /obj/item/trash/plate + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 8 + nutriment_desc = list("soy" = 4, "tomato" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti + name = "Boiled Spaghetti" + desc = "A plain dish of noodles, this sucks." + icon_state = "spagettiboiled" + trash = /obj/item/trash/plate + filling_color = "#FCEE81" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 2 + nutriment_desc = list("noodles" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/boiledrice + name = "Boiled Rice" + desc = "A boring dish of boring rice." + icon_state = "boiledrice" + trash = /obj/item/trash/snack_bowl + filling_color = "#FFFBDB" + center_of_mass = list("x"=17, "y"=11) + nutriment_amt = 2 + nutriment_desc = list("rice" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/boiledrice/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/ricepudding + name = "Rice Pudding" + desc = "Where's the jam?" + icon_state = "rpudding" + trash = /obj/item/trash/snack_bowl + filling_color = "#FFFBDB" + center_of_mass = list("x"=17, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("rice" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/ricepudding/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/pastatomato + name = "Spaghetti" + desc = "Spaghetti and crushed tomatoes. Just like your abusive father used to make!" + icon_state = "pastatomato" + trash = /obj/item/trash/plate + filling_color = "#DE4545" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 6 + nutriment_desc = list("tomato" = 3, "noodles" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/pastatomato/New() + ..() + reagents.add_reagent("tomatojuice", 10) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti + name = "Spaghetti & Meatballs" + desc = "Now thats a nic'e meatball!" + icon_state = "meatballspagetti" + trash = /obj/item/trash/plate + filling_color = "#DE4545" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 4 + nutriment_desc = list("noodles" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti/New() + ..() + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/spesslaw + name = "Spesslaw" + desc = "A lawyers favourite" + icon_state = "spesslaw" + filling_color = "#DE4545" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 4 + nutriment_desc = list("noodles" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/spesslaw/New() + ..() + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/carrotfries + name = "Carrot Fries" + desc = "Tasty fries from fresh Carrots." + icon_state = "carrotfries" + trash = /obj/item/trash/plate + filling_color = "#FAA005" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 3 + nutriment_desc = list("carrot" = 3, "salt" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/carrotfries/New() + ..() + reagents.add_reagent("imidazoline", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/superbiteburger + name = "Super Bite Burger" + desc = "This is a mountain of a burger. FOOD!" + icon_state = "superbiteburger" + filling_color = "#CCA26A" + center_of_mass = list("x"=16, "y"=3) + nutriment_amt = 25 + nutriment_desc = list("buns" = 25) + +/obj/item/weapon/reagent_containers/food/snacks/superbiteburger/New() + ..() + reagents.add_reagent("protein", 25) + bitesize = 10 + +/obj/item/weapon/reagent_containers/food/snacks/candiedapple + name = "Candied Apple" + desc = "An apple coated in sugary sweetness." + icon_state = "candiedapple" + filling_color = "#F21873" + center_of_mass = list("x"=15, "y"=13) + nutriment_amt = 3 + nutriment_desc = list("apple" = 3, "caramel" = 3, "sweetness" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/candiedapple/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/applepie + name = "Apple Pie" + desc = "A pie containing sweet sweet love... or apple." + icon_state = "applepie" + filling_color = "#E0EDC5" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 4 + nutriment_desc = list("sweetness" = 2, "apple" = 2, "pie" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/applepie/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/cherrypie + name = "Cherry Pie" + desc = "Taste so good, make a grown man cry." + icon_state = "cherrypie" + filling_color = "#FF525A" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("sweetness" = 2, "cherry" = 2, "pie" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/cherrypie/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/twobread + name = "Two Bread" + desc = "It is very bitter and winy." + icon_state = "twobread" + filling_color = "#DBCC9A" + center_of_mass = list("x"=15, "y"=12) + nutriment_amt = 2 + nutriment_desc = list("sourness" = 2, "bread" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/twobread/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich + name = "Jelly Sandwich" + desc = "You wish you had some peanut butter to go with this..." + icon_state = "jellysandwich" + trash = /obj/item/trash/plate + filling_color = "#9E3A78" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 2 + nutriment_desc = list("bread" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime/New() + ..() + reagents.add_reagent("slimejelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry/New() + ..() + reagents.add_reagent("cherryjelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore + name = "Boiled slime Core" + desc = "A boiled red thing." + icon_state = "boiledslimecore" //nonexistant? + +/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore/New() + ..() + reagents.add_reagent("slimejelly", 5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/mint + name = "mint" + desc = "it is only wafer thin." + icon_state = "mint" + filling_color = "#F2F2F2" + center_of_mass = list("x"=16, "y"=14) + +/obj/item/weapon/reagent_containers/food/snacks/mint/New() + ..() + reagents.add_reagent("mint", 1) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup + name = "chantrelle soup" + desc = "A delicious and hearty mushroom soup." + icon_state = "mushroomsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#E386BF" + center_of_mass = list("x"=17, "y"=10) + nutriment_amt = 8 + nutriment_desc = list("mushroom" = 8, "milk" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit + name = "plump helmet biscuit" + desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour." + icon_state = "phelmbiscuit" + filling_color = "#CFB4C4" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 5 + nutriment_desc = list("mushroom" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/New() + ..() + if(prob(10)) + name = "exceptional plump helmet biscuit" + desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" + reagents.add_reagent("nutriment", 8) + bitesize = 2 + else + reagents.add_reagent("nutriment", 5) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/chawanmushi + name = "chawanmushi" + desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat." + icon_state = "chawanmushi" + trash = /obj/item/trash/snack_bowl + filling_color = "#F0F2E4" + center_of_mass = list("x"=17, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/chawanmushi/New() + ..() + reagents.add_reagent("protein", 5) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/beetsoup + name = "beet soup" + desc = "Wait, how do you spell it again..?" + icon_state = "beetsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#FAC9FF" + center_of_mass = list("x"=15, "y"=8) + nutriment_amt = 8 + nutriment_desc = list("tomato" = 4, "beet" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/beetsoup/New() + ..() + name = pick(list("borsch","bortsch","borstch","borsh","borshch","borscht")) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tossedsalad + name = "tossed salad" + desc = "A proper salad, basic and simple, with little bits of carrot, tomato and apple intermingled. Vegan!" + icon_state = "herbsalad" + trash = /obj/item/trash/snack_bowl + filling_color = "#76B87F" + center_of_mass = list("x"=17, "y"=11) + nutriment_amt = 8 + nutriment_desc = list("salad" = 2, "tomato" = 2, "carrot" = 2, "apple" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/tossedsalad/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/validsalad + name = "valid salad" + desc = "It's just a salad of questionable 'herbs' with meatballs and fried potato slices. Nothing suspicious about it." + icon_state = "validsalad" + trash = /obj/item/trash/snack_bowl + filling_color = "#76B87F" + center_of_mass = list("x"=17, "y"=11) + nutriment_amt = 6 + nutriment_desc = list("100% real salad") + +/obj/item/weapon/reagent_containers/food/snacks/validsalad/New() + ..() + reagents.add_reagent("protein", 2) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/appletart + name = "golden apple streusel tart" + desc = "A tasty dessert that won't make it through a metal detector." + icon_state = "gappletart" + trash = /obj/item/trash/plate + filling_color = "#FFFF00" + center_of_mass = list("x"=16, "y"=18) + nutriment_amt = 8 + nutriment_desc = list("apple" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/appletart/New() + ..() + reagents.add_reagent("gold", 5) + bitesize = 3 + +/////////////////////////////////////////////////Sliceable//////////////////////////////////////// +// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels + +// sliceable is just an organization type path, it doesn't have any additional code or variables tied to it. + +/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 eloquent gentleman." + icon_state = "meatbread" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/meatbread + slices_num = 5 + filling_color = "#FF7575" + 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/slice/meatbread + 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"=16) + whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread + +/obj/item/weapon/reagent_containers/food/snacks/slice/meatbread/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/slice/xenomeatbread + slices_num = 5 + filling_color = "#8AFF75" + center_of_mass = list("x"=16, "y"=9) + 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/slice/xenomeatbread + name = "xenomeatbread slice" + desc = "A slice of delicious meatbread. Extra Heretical." + icon_state = "xenobreadslice" + trash = /obj/item/trash/plate + 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/slice/xenomeatbread/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/slice/bananabread + slices_num = 5 + filling_color = "#EDE5AD" + center_of_mass = list("x"=16, "y"=9) + 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/slice/bananabread + name = "Banana-nut bread slice" + desc = "A slice of delicious banana bread." + icon_state = "bananabreadslice" + trash = /obj/item/trash/plate + 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/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/slice/tofubread + slices_num = 5 + filling_color = "#F7FFE0" + center_of_mass = list("x"=16, "y"=9) + nutriment_desc = list("tofu" = 10) + nutriment_amt = 10 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/slice/tofubread + name = "Tofubread slice" + desc = "A slice of delicious tofubread." + icon_state = "tofubreadslice" + trash = /obj/item/trash/plate + 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/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/slice/carrotcake + slices_num = 5 + filling_color = "#FFD675" + center_of_mass = list("x"=16, "y"=10) + 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/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" + trash = /obj/item/trash/plate + 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/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/slice/braincake + slices_num = 5 + filling_color = "#E6AEDB" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("cake" = 10, "sweetness" = 10, "slime" = 15) + nutriment_amt = 5 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake/New() + ..() + reagents.add_reagent("protein", 25) + reagents.add_reagent("alkysine", 10) + bitesize = 2 + +/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" + trash = /obj/item/trash/plate + 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/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/slice/cheesecake + slices_num = 5 + filling_color = "#FAF7AF" + center_of_mass = list("x"=16, "y"=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/slice/cheesecake + name = "Cheese Cake slice" + 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/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/slice/plaincake + slices_num = 5 + filling_color = "#F7EDD5" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("cake" = 10, "sweetness" = 10, "vanilla" = 15) + nutriment_amt = 20 + +/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" + trash = /obj/item/trash/plate + 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/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/slice/orangecake + slices_num = 5 + filling_color = "#FADA8E" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("cake" = 10, "sweetness" = 10, "orange" = 15) + nutriment_amt = 20 + +/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" + trash = /obj/item/trash/plate + 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/sliceable/limecake + name = "Lime Cake" + desc = "A cake with added lime." + icon_state = "limecake" + 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_desc = list("cake" = 10, "sweetness" = 10, "lime" = 15) + nutriment_amt = 20 + + +/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" + trash = /obj/item/trash/plate + 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/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/slice/lemoncake + slices_num = 5 + filling_color = "#FAFA8E" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("cake" = 10, "sweetness" = 10, "lemon" = 15) + nutriment_amt = 20 + + +/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" + trash = /obj/item/trash/plate + 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/slice/lemoncake/filled + filled = TRUE + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake + name = "Chocolate Cake" + desc = "A cake with added chocolate." + icon_state = "chocolatecake" + 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_desc = list("cake" = 10, "sweetness" = 10, "chocolate" = 15) + nutriment_amt = 20 + +/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" + trash = /obj/item/trash/plate + 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/slice/chocolatecake/filled + filled = TRUE + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel + name = "Cheese wheel" + desc = "A big wheel of delcious Cheddar." + icon_state = "cheesewheel" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + slices_num = 5 + filling_color = "#FFF700" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("cheese" = 10) + nutriment_amt = 10 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel/New() + ..() + reagents.add_reagent("protein", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheesewedge + name = "Cheese wedge" + desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far." + icon_state = "cheesewedge" + filling_color = "#FFF700" + bitesize = 2 + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake + name = "Birthday Cake" + desc = "Happy Birthday..." + icon_state = "birthdaycake" + 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_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/slice/birthdaycake + name = "Birthday Cake slice" + desc = "A slice of your birthday." + icon_state = "birthdaycakeslice" + trash = /obj/item/trash/plate + 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/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/slice/bread + slices_num = 5 + filling_color = "#FFE396" + center_of_mass = list("x"=16, "y"=9) + 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/slice/bread + name = "Bread slice" + desc = "A slice of home." + icon_state = "breadslice" + trash = /obj/item/trash/plate + 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/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/slice/creamcheesebread + slices_num = 5 + filling_color = "#FFF896" + center_of_mass = list("x"=16, "y"=9) + 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/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"=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/watermelonslice + name = "Watermelon Slice" + desc = "A slice of watery goodness." + icon_state = "watermelonslice" + filling_color = "#FF3867" + bitesize = 2 + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake + name = "Apple Cake" + desc = "A cake centred with apples." + icon_state = "applecake" + 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_desc = list("cake" = 10, "sweetness" = 10, "apple" = 15) + nutriment_amt = 15 + +/obj/item/weapon/reagent_containers/food/snacks/slice/applecake + name = "Apple Cake slice" + desc = "A slice of heavenly cake." + icon_state = "applecakeslice" + trash = /obj/item/trash/plate + 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/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/slice/pumpkinpie + slices_num = 5 + filling_color = "#F5B951" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("pie" = 5, "cream" = 5, "pumpkin" = 5) + nutriment_amt = 15 + +/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" + trash = /obj/item/trash/plate + 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/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"=16, "y"=6) + nutriment_desc = list("salt" = 1, "cracker" = 2) + nutriment_amt = 1 + + + +/////////////////////////////////////////////////PIZZA//////////////////////////////////////// + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza + slices_num = 6 + filling_color = "#BAA14C" + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita + name = "Margherita" + desc = "The golden standard of pizzas." + icon_state = "pizzamargherita" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/margherita + slices_num = 6 + center_of_mass = list("x"=16, "y"=11) + nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15) + nutriment_amt = 35 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita/New() + ..() + reagents.add_reagent("protein", 5) + reagents.add_reagent("tomatojuice", 6) + bitesize = 2 + +/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"=16, "y"=13) + whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita + +/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/slice/meatpizza + slices_num = 6 + center_of_mass = list("x"=16, "y"=11) + nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15) + nutriment_amt = 10 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza/New() + ..() + reagents.add_reagent("protein", 34) + reagents.add_reagent("tomatojuice", 6) + bitesize = 2 + +/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"=16, "y"=13) + whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza + +/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." + icon_state = "mushroompizza" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza + slices_num = 6 + center_of_mass = list("x"=16, "y"=11) + 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/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"=16, "y"=13) + whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza + +/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." + icon_state = "vegetablepizza" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza + slices_num = 6 + center_of_mass = list("x"=16, "y"=11) + 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() + ..() + reagents.add_reagent("protein", 5) + reagents.add_reagent("tomatojuice", 6) + reagents.add_reagent("imidazoline", 12) + bitesize = 2 + +/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." + icon_state = "vegetablepizzaslice" + filling_color = "#BAA14C" + bitesize = 2 + 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/slice/vegetablepizza/filled + filled = TRUE + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza + name = "moldy pizza" + desc = "This pizza might actually be alive. There's mold all over." + icon_state = "oldpizza" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/oldpizza + slices_num = 6 + center_of_mass = list("x"=16, "y"=11) + nutriment_desc = list("stale pizza crust" = 10, "moldy tomato" = 10, "moldy cheese" = 5) + nutriment_amt = 10 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza/New() + ..() + reagents.add_reagent("protein", 5) + reagents.add_reagent("tomatojuice", 6) + reagents.add_reagent("mold", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/slice/oldpizza + name = "moldy pizza slice" + desc = "This used to be pizza..." + icon_state = "old_pizza" + filling_color = "#BAA14C" + bitesize = 2 + center_of_mass = list("x"=16, "y"=13) + whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza + +/obj/item/pizzabox + name = "pizza box" + desc = "A box suited for pizzas." + icon = 'icons/obj/food.dmi' + icon_state = "pizzabox1" + + var/open = 0 // Is the box open? + var/ismessy = 0 // Fancy mess on the lid + var/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pizza // Content pizza + var/list/boxes = list() // If the boxes are stacked, they come here + var/boxtag = "" + +/obj/item/pizzabox/update_icon() + + overlays = list() + + // Set appropriate description + if( open && pizza ) + desc = "A box suited for pizzas. It appears to have a [pizza.name] inside." + 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 != "" ) + desc = "[desc] The box on top has a tag, it reads: '[toptag]'." + else + desc = "A box suited for pizzas." + + if( boxtag != "" ) + desc = "[desc] The box has a tag, it reads: '[boxtag]'." + + // Icon states and overlays + if( open ) + if( ismessy ) + icon_state = "pizzabox_messy" + else + icon_state = "pizzabox_open" + + if( pizza ) + var/image/pizzaimg = image("food.dmi", icon_state = pizza.icon_state) + pizzaimg.pixel_y = -3 + overlays += pizzaimg + + return + else + // Stupid code because byondcode sucks + var/doimgtag = 0 + if( boxes.len > 0 ) + var/obj/item/pizzabox/topbox = boxes[boxes.len] + if( topbox.boxtag != "" ) + doimgtag = 1 + else + if( boxtag != "" ) + doimgtag = 1 + + 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 ) + + if( open && pizza ) + user.put_in_hands( pizza ) + + 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 ) + ..() + return + + var/obj/item/pizzabox/box = boxes[boxes.len] + boxes -= box + + user.put_in_hands( box ) + 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 ) + + if( boxes.len > 0 ) + return + + open = !open + + 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/) ) + var/obj/item/pizzabox/box = I + + 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 ) + 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 ) + + box.update_icon() + update_icon() + + to_chat(user, "You put \the [box] ontop of \the [src]!") + else + to_chat(user, "The stack is too high!") + else + 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( src.open ) + user.drop_item() + I.loc = src + src.pizza = I + + update_icon() + + to_chat(user, "You put \the [I] in \the [src]!") + else + 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( 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 ) + boxtotagto = boxes[boxes.len] + + boxtotagto.boxtag = copytext("[boxtotagto.boxtag][t]", 1, 30) + + update_icon() + return + ..() + +/obj/item/pizzabox/margherita/New() + pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita(src) + boxtag = "Margherita Deluxe" + +/obj/item/pizzabox/vegetable/New() + pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza(src) + boxtag = "Gourmet Vegatable" + +/obj/item/pizzabox/mushroom/New() + pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza(src) + boxtag = "Mushroom Special" + +/obj/item/pizzabox/meat/New() + pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza(src) + boxtag = "Meatlover's Supreme" + +/obj/item/pizzabox/old/New() + pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza(src) + boxtag = "Deluxe Gourmet" + +/obj/item/weapon/reagent_containers/food/snacks/dionaroast + name = "roast diona" + desc = "It's like an enormous, leathery carrot. With an eye." + icon_state = "dionaroast" + trash = /obj/item/trash/plate + filling_color = "#75754B" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 6 + nutriment_desc = list("a chorus of flavor" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/dionaroast/New() + ..() + reagents.add_reagent("radium", 2) + bitesize = 2 + +/////////////////////////////////////////// +// new old food stuff from bs12 +/////////////////////////////////////////// +/obj/item/weapon/reagent_containers/food/snacks/dough + name = "dough" + desc = "A piece of dough." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "dough" + bitesize = 2 + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 3 + nutriment_desc = list("uncooked dough" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/dough/New() + ..() + reagents.add_reagent("protein", 1) + +// Dough + rolling pin = flat dough +/obj/item/weapon/reagent_containers/food/snacks/dough/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/material/kitchen/rollingpin)) + new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src) + user << "You flatten the dough." + qdel(src) + +// slicable into 3xdoughslices +/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough + name = "flat dough" + desc = "A flattened dough." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "flat dough" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice + slices_num = 3 + center_of_mass = list("x"=16, "y"=16) + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/New() + ..() + reagents.add_reagent("protein", 1) + reagents.add_reagent("nutriment", 3) + +/obj/item/weapon/reagent_containers/food/snacks/doughslice + name = "dough slice" + desc = "A building block of an impressive dish." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "doughslice" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/spagetti + slices_num = 1 + bitesize = 2 + center_of_mass = list("x"=17, "y"=19) + nutriment_amt = 1 + nutriment_desc = list("uncooked dough" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/doughslice/New() + ..() + +/obj/item/weapon/reagent_containers/food/snacks/bun + name = "bun" + desc = "A base for any self-respecting burger." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "bun" + bitesize = 2 + center_of_mass = list("x"=16, "y"=12) + nutriment_amt = 4 + nutriment_desc = "bun" + +/obj/item/weapon/reagent_containers/food/snacks/bun/New() + ..() + +/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/weapon/W as obj, mob/user as mob) + // Bun + meatball = burger + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/meatball)) + new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src) + user << "You make a burger." + qdel(W) + qdel(src) + + // Bun + cutlet = hamburger + else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/cutlet)) + new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src) + user << "You make a burger." + qdel(W) + qdel(src) + + // Bun + sausage = hotdog + else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/sausage)) + new /obj/item/weapon/reagent_containers/food/snacks/hotdog(src) + user << "You make a hotdog." + qdel(W) + qdel(src) + +// Burger + cheese wedge = cheeseburger +/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob) + if(istype(W))// && !istype(src,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge)) + new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src) + user << "You make a cheeseburger." + qdel(W) + qdel(src) + return + else + ..() + +// Human Burger + cheese wedge = cheeseburger +/obj/item/weapon/reagent_containers/food/snacks/human/burger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob) + if(istype(W)) + new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src) + user << "You make a cheeseburger." + qdel(W) + qdel(src) + return + else + ..() + +/obj/item/weapon/reagent_containers/food/snacks/bunbun + name = "\improper Bun Bun" + desc = "A small bread monkey fashioned from two burger buns." + icon_state = "bunbun" + bitesize = 2 + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 8 + nutriment_desc = list("bun" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/bunbun/New() + ..() + +/obj/item/weapon/reagent_containers/food/snacks/taco + name = "taco" + desc = "Take a bite!" + icon_state = "taco" + bitesize = 3 + center_of_mass = list("x"=21, "y"=12) + nutriment_amt = 4 + nutriment_desc = list("cheese" = 2,"taco shell" = 2) +/obj/item/weapon/reagent_containers/food/snacks/taco/New() + ..() + reagents.add_reagent("protein", 3) + +/obj/item/weapon/reagent_containers/food/snacks/rawcutlet + name = "raw cutlet" + desc = "A thin piece of raw meat." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "rawcutlet" + bitesize = 1 + center_of_mass = list("x"=17, "y"=20) + +/obj/item/weapon/reagent_containers/food/snacks/rawcutlet/New() + ..() + reagents.add_reagent("protein", 1) + +/obj/item/weapon/reagent_containers/food/snacks/cutlet + name = "cutlet" + desc = "A tasty meat slice." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "cutlet" + bitesize = 2 + center_of_mass = list("x"=17, "y"=20) + +/obj/item/weapon/reagent_containers/food/snacks/cutlet/New() + ..() + reagents.add_reagent("protein", 2) + +/obj/item/weapon/reagent_containers/food/snacks/rawmeatball + name = "raw meatball" + desc = "A raw meatball." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "rawmeatball" + bitesize = 2 + center_of_mass = list("x"=16, "y"=15) + +/obj/item/weapon/reagent_containers/food/snacks/rawmeatball/New() + ..() + reagents.add_reagent("protein", 2) + +/obj/item/weapon/reagent_containers/food/snacks/hotdog + name = "hotdog" + desc = "Unrelated to dogs, maybe." + icon_state = "hotdog" + bitesize = 2 + center_of_mass = list("x"=16, "y"=17) + +/obj/item/weapon/reagent_containers/food/snacks/hotdog/New() + ..() + reagents.add_reagent("protein", 6) + +/obj/item/weapon/reagent_containers/food/snacks/hotdog/old + name = "old hotdog" + desc = "Covered in mold. You're not gonna eat that, are you?" + +/obj/item/weapon/reagent_containers/food/snacks/hotdog/old/New() + ..() + reagents.add_reagent("mold", 6) + +/obj/item/weapon/reagent_containers/food/snacks/flatbread + name = "flatbread" + desc = "Bland but filling." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "flatbread" + bitesize = 2 + center_of_mass = list("x"=16, "y"=16) + nutriment_amt = 3 + nutriment_desc = list("bread" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/flatbread/New() + ..() + +// potato + knife = raw sticks +/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(obj/item/weapon/W, mob/user) + if(seed && seed.kitchen_tag && seed.kitchen_tag == "potato" && istype(W,/obj/item/weapon/material/knife)) + new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src)) + user << "You cut the potato." + qdel(src) + else + ..() + +/obj/item/weapon/reagent_containers/food/snacks/rawsticks + name = "raw potato sticks" + desc = "Raw fries, not very tasty." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "rawsticks" + bitesize = 2 + center_of_mass = list("x"=16, "y"=12) + nutriment_amt = 3 + nutriment_desc = list("raw potato" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/rawsticks/New() + ..() + +/obj/item/weapon/reagent_containers/food/snacks/liquidfood + name = "\improper LiquidFood Ration" + desc = "A prepackaged grey slurry of all the essential nutrients for a spacefarer on the go. Should this be crunchy?" + icon_state = "liquidfood" + trash = /obj/item/trash/liquidfood + filling_color = "#A8A8A8" + center_of_mass = list("x"=16, "y"=15) + nutriment_amt = 20 + nutriment_desc = list("chalk" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/liquidfood/New() + ..() + reagents.add_reagent("iron", 3) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/tastybread + name = "bread tube" + desc = "Bread in a tube. Chewy...and surprisingly tasty." + icon_state = "tastybread" + trash = /obj/item/trash/tastybread + filling_color = "#A66829" + center_of_mass = list("x"=17, "y"=16) + nutriment_amt = 6 + nutriment_desc = list("bread" = 2, "sweetness" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/tastybread/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks + name = "\improper SkrellSnax" + desc = "Cured fungus shipped all the way from Qerr'balak, almost like jerky! Almost." + icon_state = "skrellsnacks" + filling_color = "#A66829" + center_of_mass = list("x"=15, "y"=12) + nutriment_amt = 10 + nutriment_desc = list("mushroom" = 5, "salt" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/unajerky + name = "Moghes Imported Sissalik Jerky" + icon_state = "unathitinred" + desc = "An incredibly well made jerky, shipped in all the way from Moghes." + trash = /obj/item/trash/unajerky + filling_color = "#631212" + center_of_mass = list("x"=15, "y"=9) + +/obj/item/weapon/reagent_containers/food/snacks/unajerky/New() + ..() + reagents.add_reagent("protein", 8) + reagents.add_reagent("capsaicin", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/croissant + name = "croissant" + desc = "True French cuisine." + filling_color = "#E3D796" + icon_state = "croissant" + nutriment_amt = 6 + nutriment_desc = list("french bread" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/croissant/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatbun + name = "meat bun" + desc = "Chinese street food, in neither China nor a street." + filling_color = "#DEDEAB" + icon_state = "meatbun" + nutriment_amt = 4 + +/obj/item/weapon/reagent_containers/food/snacks/meatbun/New() + ..() + bitesize = 2 + reagents.add_reagent("protein", 4) + +/obj/item/weapon/reagent_containers/food/snacks/sashimi + name = "carp sashimi" + desc = "Expertly prepared. Still toxic." + filling_color = "#FFDEFE" + icon_state = "sashimi" + nutriment_amt = 6 + +/obj/item/weapon/reagent_containers/food/snacks/sashimi/New() + ..() + reagents.add_reagent("protein", 2) + reagents.add_reagent("carpotoxin", 2) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/benedict + name = "eggs benedict" + desc = "Hey, there's only one egg in this!" + filling_color = "#FFDF78" + icon_state = "benedict" + nutriment_amt = 4 + +/obj/item/weapon/reagent_containers/food/snacks/benedict/New() + ..() + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/beans + name = "baked beans" + desc = "Musical fruit in a slightly less musical container." + filling_color = "#FC6F28" + icon_state = "beans" + nutriment_amt = 4 + nutriment_desc = list("beans" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/beans/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sugarcookie + name = "sugar cookie" + desc = "Just like your little sister used to make." + filling_color = "#DBC94F" + icon_state = "sugarcookie" + nutriment_amt = 5 + nutriment_desc = list("sweetness" = 4, "cookie" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/New() + ..() + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/berrymuffin + name = "berry muffin" + desc = "A delicious and spongy little cake, with berries." + icon_state = "berrymuffin" + filling_color = "#E0CF9B" + center_of_mass = list("x"=17, "y"=4) + nutriment_amt = 6 + nutriment_desc = list("sweetness" = 2, "muffin" = 2, "berries" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/berrymuffin/New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin + name = "booberry muffin" + desc = "My stomach is a graveyard! No living being can quench my bloodthirst!" + icon_state = "berrymuffin" + filling_color = "#799ACE" + center_of_mass = list("x"=17, "y"=4) + nutriment_amt = 6 + nutriment_desc = list("spookiness" = 4, "muffin" = 1, "berries" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin/New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/eggroll + name = "egg roll" + desc = "Free with orders over 10 thalers." + icon_state = "eggroll" + filling_color = "#799ACE" + center_of_mass = list("x"=17, "y"=4) + nutriment_amt = 4 + nutriment_desc = list("egg" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/eggroll/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fruitsalad + name = "fruit salad" + desc = "Your standard fruit salad." + icon_state = "fruitsalad" + filling_color = "#FF3867" + nutriment_amt = 10 + nutriment_desc = list("fruit" = 10) + +/obj/item/weapon/reagent_containers/food/snacks/fruitsalad/New() + ..() + reagents.add_reagent("nutriment", 10) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/eggbowl + name = "egg bowl" + desc = "A bowl of fried rice with egg mixed in." + icon_state = "eggbowl" + trash = /obj/item/trash/snack_bowl + filling_color = "#FFFBDB" + nutriment_amt = 6 + nutriment_desc = list("rice" = 2, "egg" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/eggbowl/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/porkbowl + name = "pork bowl" + desc = "A bowl of fried rice with cuts of meat." + icon_state = "porkbowl" + trash = /obj/item/trash/snack_bowl + filling_color = "#FFFBDB" + nutriment_amt = 6 + nutriment_desc = list("rice" = 2, "meat" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/porkbowl/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tortilla + name = "tortilla" + desc = "The base for all your burritos." + icon_state = "tortilla" + nutriment_amt = 1 + nutriment_desc = list("bread" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/tortilla/New() + ..() + reagents.add_reagent("nutriment", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatburrito + name = "carne asada burrito" + desc = "The best burrito for meat lovers." + icon_state = "carneburrito" + nutriment_amt = 6 + nutriment_desc = list("tortilla" = 3, "meat" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/meatburrito/New() + ..() + reagents.add_reagent("protein", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito + name = "Cheese burrito" + desc = "It's a burrito filled with cheese." + icon_state = "cheeseburrito" + nutriment_amt = 6 + nutriment_desc = list("tortilla" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito + name = "fuego phoron burrito" + desc = "A super spicy burrito." + icon_state = "fuegoburrito" + nutriment_amt = 6 + nutriment_desc = list("chili peppers" = 5, "tortilla" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("capsaicin", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/nachos + name = "nachos" + desc = "Chips from Old Mexico." + icon_state = "nachos" + nutriment_amt = 2 + nutriment_desc = list("salt" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/nachos/New() + ..() + reagents.add_reagent("nutriment", 1) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/cheesenachos + name = "cheesy nachos" + desc = "The delicious combination of nachos and melting cheese." + icon_state = "cheesenachos" + nutriment_amt = 5 + nutriment_desc = list("salt" = 2, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cheesenachos/New() + ..() + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cubannachos + name = "cuban nachos" + desc = "That's some dangerously spicy nachos." + icon_state = "cubannachos" + nutriment_amt = 6 + nutriment_desc = list("salt" = 1, "cheese" = 2, "chili peppers" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cubannachos/New() + ..() + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("capsaicin", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/piginblanket + name = "pig in a blanket" + desc = "A sausage embedded in soft, fluffy pastry. Free this pig from its blanket prison by eating it." + icon_state = "piginblanket" + nutriment_amt = 6 + nutriment_desc = list("meat" = 3, "pastry" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/piginblanket/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 4) +======= +//Food items that are eaten normally and don't leave anything behind. +/obj/item/weapon/reagent_containers/food/snacks + name = "snack" + desc = "yummy" + icon = 'icons/obj/food.dmi' + icon_state = null + var/bitesize = 1 + var/bitecount = 0 + var/trash = null + var/slice_path + var/slices_num + var/dried_type = null + var/dry = 0 + var/nutriment_amt = 0 + var/list/nutriment_desc = list("food" = 1) + center_of_mass = list("x"=16, "y"=16) + w_class = ITEMSIZE_SMALL + force = 1 + +/obj/item/weapon/reagent_containers/food/snacks/New() + ..() + if(nutriment_amt) + reagents.add_reagent("nutriment",nutriment_amt,nutriment_desc) + +/obj/item/weapon/reagent_containers/food/snacks/New() + ..() + if(nutriment_amt) + reagents.add_reagent("nutriment", nutriment_amt) + + //Placeholder for effect that trigger on eating that aren't tied to reagents. +/obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M) + if(!usr) + usr = M + if(!reagents.total_volume) + M.visible_message("[M] finishes eating \the [src].","You finish eating \the [src].") + usr.drop_from_inventory(src) //so icons update :[ + + if(trash) + if(ispath(trash,/obj/item)) + var/obj/item/TrashItem = new trash(usr) + usr.put_in_hands(TrashItem) + else if(istype(trash,/obj/item)) + usr.put_in_hands(trash) + qdel(src) + return + +/obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob) + return + +/obj/item/weapon/reagent_containers/food/snacks/attack(mob/M as mob, mob/user as mob, def_zone) + if(reagents && !reagents.total_volume) + user << "None of [src] left!" + user.drop_from_inventory(src) + qdel(src) + return 0 + + if(istype(M, /mob/living/carbon)) + //TODO: replace with standard_feed_mob() call. + + var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25) + if(M == user) //If you're eating it yourself + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(!H.check_has_mouth()) + user << "Where do you intend to put \the [src]? You don't have a mouth!" + return + var/obj/item/blocked = H.check_mouth_coverage() + if(blocked) + user << "\The [blocked] is in the way!" + return + + user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things + if (fullness <= 50) + M << "You hungrily chew out a piece of [src] and gobble it!" + if (fullness > 50 && fullness <= 150) + M << "You hungrily begin to eat [src]." + if (fullness > 150 && fullness <= 350) + M << "You take a bite of [src]." + if (fullness > 350 && fullness <= 550) + M << "You unwillingly chew a bit of [src]." + if (fullness > (550 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat + M << "You cannot force any more of [src] to go down your throat." + return 0 + + else if(user.a_intent == I_HURT) + return ..() + + else + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(!H.check_has_mouth()) + user << "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!" + return + var/obj/item/blocked = H.check_mouth_coverage() + if(blocked) + user << "\The [blocked] is in the way!" + return + + if (fullness <= (550 * (1 + M.overeatduration / 1000))) + user.visible_message("[user] attempts to feed [M] [src].") + else + user.visible_message("[user] cannot force anymore of [src] down [M]'s throat.") + return 0 + + user.setClickCooldown(user.get_attack_speed(src)) + if(!do_mob(user, M)) return + + //Do we really care about this + add_attack_logs(user,M,"Fed with [src.name] containing [reagentlist(src)]", admin_notify = FALSE) + + user.visible_message("[user] feeds [M] [src].") + + else + user << "This creature does not seem to have a mouth!" + return + + if(reagents) //Handle ingestion of the reagent. + playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1) + if(reagents.total_volume) + if(reagents.total_volume > bitesize) + reagents.trans_to_mob(M, bitesize, CHEM_INGEST) + else + reagents.trans_to_mob(M, reagents.total_volume, CHEM_INGEST) + bitecount++ + On_Consume(M) + return 1 + + return 0 + +/obj/item/weapon/reagent_containers/food/snacks/examine(mob/user) + if(!..(user, 1)) + return + if (bitecount==0) + return + else if (bitecount==1) + user << "\The [src] was bitten by someone!" + else if (bitecount<=3) + user << "\The [src] was bitten [bitecount] times!" + else + user << "\The [src] was bitten multiple times!" + +/obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/storage)) + ..() // -> item/attackby() + return + + // Eating with forks + if(istype(W,/obj/item/weapon/material/kitchen/utensil)) + var/obj/item/weapon/material/kitchen/utensil/U = W + if(U.scoop_food) + if(!U.reagents) + U.create_reagents(5) + + if (U.reagents.total_volume > 0) + user << "You already have something on your [U]." + return + + user.visible_message( \ + "[user] scoops up some [src] with \the [U]!", \ + "You scoop up some [src] with \the [U]!" \ + ) + + src.bitecount++ + U.overlays.Cut() + U.loaded = "[src]" + var/image/I = new(U.icon, "loadedfood") + I.color = src.filling_color + U.overlays += I + + reagents.trans_to_obj(U, min(reagents.total_volume,5)) + + if (reagents.total_volume <= 0) + qdel(src) + return + + if (is_sliceable()) + //these are used to allow hiding edge items in food that is not on a table/tray + var/can_slice_here = isturf(src.loc) && ((locate(/obj/structure/table) in src.loc) || (locate(/obj/machinery/optable) in src.loc) || (locate(/obj/item/weapon/tray) in src.loc)) + var/hide_item = !has_edge(W) || !can_slice_here + + if (hide_item) + if (W.w_class >= src.w_class || is_robot_module(W)) + return + + 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) + 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("\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("\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)) + var/obj/slice = new slice_path (src.loc) + reagents.trans_to_obj(slice, reagents_per_slice) + qdel(src) + return + +/obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable() + return (slices_num && slice_path && slices_num > 0) + +/obj/item/weapon/reagent_containers/food/snacks/Destroy() + if(contents) + for(var/atom/movable/something in contents) + something.dropInto(loc) + . = ..() + +//////////////////////////////////////////////////////////////////////////////// +/// FOOD END +//////////////////////////////////////////////////////////////////////////////// +/obj/item/weapon/reagent_containers/food/snacks/attack_generic(var/mob/living/user) + if(!isanimal(user) && !isalien(user)) + return + user.visible_message("[user] nibbles away at \the [src].","You nibble away at \the [src].") + bitecount++ + if(reagents) + reagents.trans_to_mob(user, bitesize, CHEM_INGEST) + spawn(5) + if(!src && !user.client) + user.custom_emote(1,"[pick("burps", "cries for more", "burps twice", "looks at the area where the food was")]") + qdel(src) + On_Consume(user) + +////////////////////////////////////////////////// +////////////////////////////////////////////Snacks +////////////////////////////////////////////////// +//Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created +// already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten. + +//Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units Generally speaking, you don't want to go over 40 +// total for the item because you want to leave space for extra condiments. If you want effect besides healing, add a reagent for +// it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use Tricordrazine). On use +// effect (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way). + +//The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to +// 2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a +// bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all +// the bites. No more contained reagents = no more bites. + +//Here is an example of the new formatting for anyone who wants to add more food items. +///obj/item/weapon/reagent_containers/food/snacks/xenoburger //Identification path for the object. +// name = "Xenoburger" //Name that displays in the UI. +// desc = "Smells caustic. Tastes like heresy." //Duh +// icon_state = "xburger" //Refers to an icon in food.dmi +// New() //Don't mess with this. +// ..() //Same here. +// reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste +// reagents.add_reagent("nutriment", 2) // this line of code for all the contents. +// bitesize = 3 //This is the amount each bite consumes. + + + + +/obj/item/weapon/reagent_containers/food/snacks/aesirsalad + name = "Aesir salad" + desc = "Probably too incredible for mortal men to fully enjoy." + icon_state = "aesirsalad" + trash = /obj/item/trash/snack_bowl + filling_color = "#468C00" + center_of_mass = list("x"=17, "y"=11) + nutriment_amt = 8 + nutriment_desc = list("apples" = 3,"salad" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/aesirsalad/New() + ..() + reagents.add_reagent("doctorsdelight", 8) + reagents.add_reagent("tricordrazine", 8) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/candy + name = "candy" + desc = "Nougat, love it or hate it." + icon_state = "candy" + trash = /obj/item/trash/candy + filling_color = "#7D5F46" + center_of_mass = list("x"=15, "y"=15) + nutriment_amt = 1 + nutriment_desc = list("candy" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/candy/New() + ..() + reagents.add_reagent("sugar", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar + name = "protein bar" + desc = "SwoleMAX brand protein bars, guaranteed to get you feeling perfectly overconfident." + icon_state = "proteinbar" + trash = /obj/item/trash/candy/proteinbar + nutriment_amt = 9 + nutriment_desc = list("candy" = 1, "protein" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar/New() + ..() + reagents.add_reagent("protein", 4) + reagents.add_reagent("sugar", 4) + bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/candy/donor + name = "Donor Candy" + desc = "A little treat for blood donors." + trash = /obj/item/trash/candy + nutriment_amt = 9 + nutriment_desc = list("candy" = 10) + +/obj/item/weapon/reagent_containers/food/snacks/candy/donor/New() + ..() + reagents.add_reagent("sugar", 3) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/candy_corn + name = "candy corn" + desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas." + icon_state = "candy_corn" + filling_color = "#FFFCB0" + center_of_mass = list("x"=14, "y"=10) + nutriment_amt = 4 + nutriment_desc = list("candy corn" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/candy_corn/New() + ..() + reagents.add_reagent("sugar", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/chips + name = "chips" + desc = "Commander Riker's What-The-Crisps" + icon_state = "chips" + trash = /obj/item/trash/chips + filling_color = "#E8C31E" + center_of_mass = list("x"=15, "y"=15) + nutriment_amt = 3 + nutriment_desc = list("salt" = 1, "chips" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/chips/New() + ..() + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/cookie + name = "cookie" + desc = "COOKIE!!!" + icon_state = "COOKIE!!!" + filling_color = "#DBC94F" + center_of_mass = list("x"=17, "y"=18) + nutriment_amt = 5 + nutriment_desc = list("sweetness" = 3, "cookie" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/cookie/New() + ..() + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/chocolatebar + name = "Chocolate Bar" + desc = "Such sweet, fattening food." + icon_state = "chocolatebar" + filling_color = "#7D5F46" + center_of_mass = list("x"=15, "y"=15) + nutriment_amt = 2 + nutriment_desc = list("chocolate" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/New() + ..() + reagents.add_reagent("sugar", 2) + reagents.add_reagent("coco", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece + name = "chocolate piece" + desc = "A luscious milk chocolate piece filled with gooey caramel." + icon_state = "chocolatepiece" + filling_color = "#7D5F46" + center_of_mass = list("x"=15, "y"=15) + nutriment_amt = 1 + nutriment_desc = list("chocolate" = 3, "caramel" = 2, "lusciousness" = 1) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white + name = "white chocolate piece" + desc = "A creamy white chocolate piece drizzled in milk chocolate." + icon_state = "chocolatepiece_white" + filling_color = "#E2DAD3" + nutriment_desc = list("white chocolate" = 3, "creaminess" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle + name = "chocolate truffle" + desc = "A bite-sized milk chocolate truffle that could buy anyone's love." + icon_state = "chocolatepiece_truffle" + nutriment_desc = list("chocolate" = 3, "undying devotion" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/chocolateegg + name = "Chocolate Egg" + desc = "Such sweet, fattening food." + icon_state = "chocolateegg" + filling_color = "#7D5F46" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 3 + nutriment_desc = list("chocolate" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/New() + ..() + reagents.add_reagent("sugar", 2) + reagents.add_reagent("coco", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/donut + name = "donut" + desc = "Goes great with Robust Coffee." + icon_state = "donut1" + filling_color = "#D9C386" + var/overlay_state = "box-donut1" + center_of_mass = list("x"=13, "y"=16) + nutriment_desc = list("sweetness", "donut") + +/obj/item/weapon/reagent_containers/food/snacks/donut/normal + name = "donut" + desc = "Goes great with Robust Coffee." + icon_state = "donut1" + nutriment_amt = 3 + +/obj/item/weapon/reagent_containers/food/snacks/donut/normal/New() + ..() + reagents.add_reagent("nutriment", 3) + reagents.add_reagent("sprinkles", 1) + src.bitesize = 3 + if(prob(30)) + src.icon_state = "donut2" + src.overlay_state = "box-donut2" + src.name = "frosted donut" + reagents.add_reagent("sprinkles", 2) + center_of_mass = list("x"=19, "y"=16) + +/obj/item/weapon/reagent_containers/food/snacks/donut/chaos + name = "Chaos Donut" + desc = "Like life, it never quite tastes the same." + icon_state = "donut1" + filling_color = "#ED11E6" + nutriment_amt = 2 + +/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/New() + ..() + reagents.add_reagent("sprinkles", 1) + bitesize = 10 + var/chaosselect = pick(1,2,3,4,5,6,7,8,9,10) + switch(chaosselect) + if(1) + reagents.add_reagent("nutriment", 3) + if(2) + reagents.add_reagent("capsaicin", 3) + if(3) + reagents.add_reagent("frostoil", 3) + if(4) + reagents.add_reagent("sprinkles", 3) + if(5) + reagents.add_reagent("phoron", 3) + if(6) + reagents.add_reagent("coco", 3) + if(7) + reagents.add_reagent("slimejelly", 3) + if(8) + reagents.add_reagent("banana", 3) + if(9) + reagents.add_reagent("berryjuice", 3) + if(10) + reagents.add_reagent("tricordrazine", 3) + if(prob(30)) + src.icon_state = "donut2" + src.overlay_state = "box-donut2" + src.name = "Frosted Chaos Donut" + reagents.add_reagent("sprinkles", 2) + +/obj/item/weapon/reagent_containers/food/snacks/donut/jelly + name = "Jelly Donut" + desc = "You jelly?" + icon_state = "jdonut1" + filling_color = "#ED1169" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 3 + +/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/New() + ..() + reagents.add_reagent("sprinkles", 1) + reagents.add_reagent("berryjuice", 5) + bitesize = 5 + if(prob(30)) + src.icon_state = "jdonut2" + src.overlay_state = "box-donut2" + src.name = "Frosted Jelly Donut" + reagents.add_reagent("sprinkles", 2) + +/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly + name = "Jelly Donut" + desc = "You jelly?" + icon_state = "jdonut1" + filling_color = "#ED1169" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 3 + +/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/New() + ..() + reagents.add_reagent("sprinkles", 1) + reagents.add_reagent("slimejelly", 5) + bitesize = 5 + if(prob(30)) + src.icon_state = "jdonut2" + src.overlay_state = "box-donut2" + src.name = "Frosted Jelly Donut" + reagents.add_reagent("sprinkles", 2) + +/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly + name = "Jelly Donut" + desc = "You jelly?" + icon_state = "jdonut1" + filling_color = "#ED1169" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 3 + +/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/New() + ..() + reagents.add_reagent("sprinkles", 1) + reagents.add_reagent("cherryjelly", 5) + bitesize = 5 + if(prob(30)) + src.icon_state = "jdonut2" + src.overlay_state = "box-donut2" + src.name = "Frosted Jelly Donut" + reagents.add_reagent("sprinkles", 2) + +/obj/item/weapon/reagent_containers/food/snacks/egg + name = "egg" + desc = "An egg!" + icon_state = "egg" + filling_color = "#FDFFD1" + volume = 10 + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/egg/New() + ..() + reagents.add_reagent("egg", 3) + +/obj/item/weapon/reagent_containers/food/snacks/egg/afterattack(obj/O as obj, mob/user as mob, proximity) + if(istype(O,/obj/machinery/microwave)) + return ..() + if(!(proximity && O.is_open_container())) + return + user << "You crack \the [src] into \the [O]." + reagents.trans_to(O, reagents.total_volume) + user.drop_from_inventory(src) + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom) + ..() + new/obj/effect/decal/cleanable/egg_smudge(src.loc) + src.reagents.splash(hit_atom, reagents.total_volume) + src.visible_message("[src.name] has been squashed.","You hear a smack.") + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype( W, /obj/item/weapon/pen/crayon )) + var/obj/item/weapon/pen/crayon/C = W + var/clr = C.colourName + + if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow"))) + usr << "The egg refuses to take on this color!" + return + + usr << "You color \the [src] [clr]" + icon_state = "egg-[clr]" + else + ..() + +/obj/item/weapon/reagent_containers/food/snacks/egg/blue + icon_state = "egg-blue" + +/obj/item/weapon/reagent_containers/food/snacks/egg/green + icon_state = "egg-green" + +/obj/item/weapon/reagent_containers/food/snacks/egg/mime + icon_state = "egg-mime" + +/obj/item/weapon/reagent_containers/food/snacks/egg/orange + icon_state = "egg-orange" + +/obj/item/weapon/reagent_containers/food/snacks/egg/purple + icon_state = "egg-purple" + +/obj/item/weapon/reagent_containers/food/snacks/egg/rainbow + icon_state = "egg-rainbow" + +/obj/item/weapon/reagent_containers/food/snacks/egg/red + icon_state = "egg-red" + +/obj/item/weapon/reagent_containers/food/snacks/egg/yellow + icon_state = "egg-yellow" + +/obj/item/weapon/reagent_containers/food/snacks/friedegg + name = "Fried egg" + desc = "A fried egg, with a touch of salt and pepper." + icon_state = "friedegg" + filling_color = "#FFDF78" + center_of_mass = list("x"=16, "y"=14) + +/obj/item/weapon/reagent_containers/food/snacks/friedegg/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("sodiumchloride", 1) + reagents.add_reagent("blackpepper", 1) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/boiledegg + name = "Boiled egg" + desc = "A hard boiled egg." + icon_state = "egg" + filling_color = "#FFFFFF" + +/obj/item/weapon/reagent_containers/food/snacks/boiledegg/New() + ..() + reagents.add_reagent("protein", 2) + +/obj/item/weapon/reagent_containers/food/snacks/organ + name = "organ" + desc = "It's good for you." + icon = 'icons/obj/surgery.dmi' + icon_state = "appendix" + filling_color = "#E00D34" + center_of_mass = list("x"=16, "y"=16) + +/obj/item/weapon/reagent_containers/food/snacks/organ/New() + ..() + reagents.add_reagent("protein", rand(3,5)) + reagents.add_reagent("toxin", rand(1,3)) + src.bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/tofu + name = "Tofu" + icon_state = "tofu" + desc = "We all love tofu." + filling_color = "#FFFEE0" + center_of_mass = list("x"=17, "y"=10) + nutriment_amt = 3 + nutriment_desc = list("tofu" = 3, "goeyness" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/tofu/New() + ..() + src.bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/tofurkey + name = "Tofurkey" + desc = "A fake turkey made from tofu." + icon_state = "tofurkey" + filling_color = "#FFFEE0" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 12 + nutriment_desc = list("turkey" = 3, "tofu" = 5, "goeyness" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/tofurkey/New() + ..() + reagents.add_reagent("stoxin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/stuffing + name = "Stuffing" + desc = "Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in!" + icon_state = "stuffing" + filling_color = "#C9AC83" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 3 + nutriment_desc = list("dryness" = 2, "bread" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/stuffing/New() + ..() + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/carpmeat + name = "carp fillet" + desc = "A fillet of spess carp meat" + icon_state = "fishfillet" + filling_color = "#FFDEFE" + center_of_mass = list("x"=17, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/carpmeat/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("carpotoxin", 3) + src.bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/fishfingers + name = "Fish Fingers" + desc = "A finger of fish." + icon_state = "fishfingers" + filling_color = "#FFDEFE" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/fishfingers/New() + ..() + reagents.add_reagent("protein", 4) + reagents.add_reagent("carpotoxin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice + name = "huge mushroom slice" + desc = "A slice from a huge mushroom." + icon_state = "hugemushroomslice" + filling_color = "#E0D7C5" + center_of_mass = list("x"=17, "y"=16) + nutriment_amt = 3 + nutriment_desc = list("raw" = 2, "mushroom" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/New() + ..() + reagents.add_reagent("psilocybin", 3) + src.bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/tomatomeat + name = "tomato slice" + desc = "A slice from a huge tomato" + icon_state = "tomatomeat" + filling_color = "#DB0000" + center_of_mass = list("x"=17, "y"=16) + nutriment_amt = 3 + nutriment_desc = list("raw" = 2, "tomato" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/tomatomeat/New() + ..() + src.bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/bearmeat + name = "bear meat" + desc = "A very manly slab of meat." + icon_state = "bearmeat" + filling_color = "#DB0000" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/bearmeat/New() + ..() + reagents.add_reagent("protein", 12) + reagents.add_reagent("hyperzine", 5) + src.bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/xenomeat + name = "xenomeat" + desc = "A slab of green meat. Smells like acid." + icon_state = "xenomeat" + filling_color = "#43DE18" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/xenomeat/New() + ..() + reagents.add_reagent("protein", 6) + reagents.add_reagent("pacid",6) + src.bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat // Substitute for recipes requiring xeno meat. + name = "spider meat" + desc = "A slab of green meat." + icon_state = "xenomeat" + filling_color = "#43DE18" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat/New() + ..() + reagents.add_reagent("spidertoxin",6) + reagents.remove_reagent("pacid",6) + src.bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/meatball + name = "meatball" + desc = "A great meal all round." + icon_state = "meatball" + filling_color = "#DB0000" + center_of_mass = list("x"=16, "y"=16) + +/obj/item/weapon/reagent_containers/food/snacks/meatball/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sausage + name = "Sausage" + desc = "A piece of mixed, long meat." + icon_state = "sausage" + filling_color = "#DB0000" + center_of_mass = list("x"=16, "y"=16) + +/obj/item/weapon/reagent_containers/food/snacks/sausage/New() + ..() + reagents.add_reagent("protein", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket + name = "Donk-pocket" + desc = "The food of choice for the seasoned traitor." + icon_state = "donkpocket" + filling_color = "#DEDEAB" + center_of_mass = list("x"=16, "y"=10) + var/warm + var/list/heated_reagents + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/New() + ..() + reagents.add_reagent("nutriment", 2) + reagents.add_reagent("protein", 2) + + warm = 0 + heated_reagents = list("tricordrazine" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/heat() + warm = 1 + for(var/reagent in heated_reagents) + reagents.add_reagent(reagent, heated_reagents[reagent]) + bitesize = 6 + name = "Warm " + name + cooltime() + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/cooltime() + if (src.warm) + spawn(4200) + src.warm = 0 + for(var/reagent in heated_reagents) + src.reagents.del_reagent(reagent) + src.name = initial(name) + return + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket + name = "\improper Sin-pocket" + desc = "The food of choice for the veteran. Do NOT overconsume." + filling_color = "#6D6D00" + heated_reagents = list("doctorsdelight" = 5, "hyperzine" = 0.75, "synaptizine" = 0.25) + var/has_been_heated = 0 + +/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket/attack_self(mob/user) + if(has_been_heated) + user << "The heating chemicals have already been spent." + return + has_been_heated = 1 + user.visible_message("[user] crushes \the [src] package.", "You crush \the [src] package and feel a comfortable heat build up.") + spawn(200) + user << "You think \the [src] is ready to eat about now." + heat() + +/obj/item/weapon/reagent_containers/food/snacks/brainburger + name = "brainburger" + desc = "A strange looking burger. It looks almost sentient." + icon_state = "brainburger" + filling_color = "#F2B6EA" + center_of_mass = list("x"=15, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/brainburger/New() + ..() + reagents.add_reagent("protein", 6) + reagents.add_reagent("alkysine", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/ghostburger + name = "Ghost Burger" + desc = "Spooky! It doesn't look very filling." + icon_state = "ghostburger" + filling_color = "#FFF2FF" + center_of_mass = list("x"=16, "y"=11) + nutriment_desc = list("buns" = 3, "spookiness" = 3) + nutriment_amt = 2 + +/obj/item/weapon/reagent_containers/food/snacks/ghostburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/human + var/hname = "" + var/job = null + filling_color = "#D63C3C" + +/obj/item/weapon/reagent_containers/food/snacks/human/burger + name = "-burger" + desc = "A bloody burger." + icon_state = "hburger" + center_of_mass = list("x"=16, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/human/burger/New() + ..() + reagents.add_reagent("protein", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburger + name = "cheeseburger" + desc = "The cheese adds a good flavor." + icon_state = "cheeseburger" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 2 + nutriment_desc = list("cheese" = 2, "bun" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburger/New() + ..() + reagents.add_reagent("protein", 2) + +/obj/item/weapon/reagent_containers/food/snacks/monkeyburger + name = "burger" + desc = "The cornerstone of every nutritious breakfast." + icon_state = "hburger" + filling_color = "#D63C3C" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 3 + nutriment_desc = list("bun" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fishburger + 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" + filling_color = "#FFDEFE" + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/fishburger/New() + ..() + reagents.add_reagent("protein", 6) + reagents.add_reagent("carpotoxin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/tofuburger + name = "Tofu Burger" + desc = "What.. is that meat?" + icon_state = "tofuburger" + filling_color = "#FFFEE0" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 6 + nutriment_desc = list("bun" = 2, "pseudo-soy meat" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/tofuburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/roburger + name = "roburger" + desc = "The lettuce is the only organic component. Beep." + icon_state = "roburger" + filling_color = "#CCCCCC" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 2 + nutriment_desc = list("bun" = 2, "metal" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/roburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/roburgerbig + name = "roburger" + desc = "This massive patty looks like poison. Beep." + icon_state = "roburger" + filling_color = "#CCCCCC" + volume = 100 + center_of_mass = list("x"=16, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/roburgerbig/New() + ..() + bitesize = 0.1 + +/obj/item/weapon/reagent_containers/food/snacks/xenoburger + name = "xenoburger" + desc = "Smells caustic. Tastes like heresy." + icon_state = "xburger" + filling_color = "#43DE18" + center_of_mass = list("x"=16, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/xenoburger/New() + ..() + reagents.add_reagent("protein", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/clownburger + name = "Clown Burger" + desc = "This tastes funny..." + icon_state = "clownburger" + filling_color = "#FF00FF" + center_of_mass = list("x"=17, "y"=12) + nutriment_amt = 6 + nutriment_desc = list("bun" = 2, "clown shoe" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/clownburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/mimeburger + name = "Mime Burger" + desc = "Its taste defies language." + icon_state = "mimeburger" + filling_color = "#FFFFFF" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 6 + nutriment_desc = list("bun" = 2, "face paint" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/mimeburger/New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/omelette + name = "Omelette Du Fromage" + desc = "That's all you can say!" + icon_state = "omelette" + trash = /obj/item/trash/plate + filling_color = "#FFF9A8" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/omelette/New() + ..() + reagents.add_reagent("protein", 8) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/muffin + name = "Muffin" + desc = "A delicious and spongy little cake" + icon_state = "muffin" + filling_color = "#E0CF9B" + center_of_mass = list("x"=17, "y"=4) + nutriment_amt = 6 + nutriment_desc = list("sweetness" = 3, "muffin" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/muffin/New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/pie + name = "Banana Cream Pie" + desc = "Just like back home, on clown planet! HONK!" + icon_state = "pie" + trash = /obj/item/trash/plate + filling_color = "#FBFFB8" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 4 + nutriment_desc = list("pie" = 3, "cream" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/pie/New() + ..() + reagents.add_reagent("banana",5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom) + ..() + new/obj/effect/decal/cleanable/pie_smudge(src.loc) + src.visible_message("\The [src.name] splats.","You hear a splat.") + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis + name = "Berry Clafoutis" + desc = "No black birds, this is a good sign." + icon_state = "berryclafoutis" + trash = /obj/item/trash/plate + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 4 + nutriment_desc = list("sweetness" = 2, "pie" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis/New() + ..() + reagents.add_reagent("berryjuice", 5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/waffles + name = "waffles" + desc = "Mmm, waffles" + icon_state = "waffles" + trash = /obj/item/trash/waffles + filling_color = "#E6DEB5" + center_of_mass = list("x"=15, "y"=11) + nutriment_amt = 8 + nutriment_desc = list("waffle" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/waffles/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/eggplantparm + name = "Eggplant Parmigiana" + desc = "The only good recipe for eggplant." + icon_state = "eggplantparm" + trash = /obj/item/trash/plate + filling_color = "#4D2F5E" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 6 + nutriment_desc = list("cheese" = 3, "eggplant" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/eggplantparm/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/soylentgreen + name = "Soylent Green" + desc = "Not made of people. Honest." //Totally people. + icon_state = "soylent_green" + trash = /obj/item/trash/waffles + filling_color = "#B8E6B5" + center_of_mass = list("x"=15, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/soylentgreen/New() + ..() + reagents.add_reagent("protein", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/soylenviridians + name = "Soylen Virdians" + desc = "Not made of people. Honest." //Actually honest for once. + icon_state = "soylent_yellow" + trash = /obj/item/trash/waffles + filling_color = "#E6FA61" + center_of_mass = list("x"=15, "y"=11) + nutriment_amt = 10 + nutriment_desc = list("some sort of protein" = 10) //seasoned VERY well. + +/obj/item/weapon/reagent_containers/food/snacks/soylenviridians/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatpie + name = "Meat-pie" + icon_state = "meatpie" + desc = "An old barber recipe, very delicious!" + trash = /obj/item/trash/plate + filling_color = "#948051" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/meatpie/New() + ..() + reagents.add_reagent("protein", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tofupie + name = "Tofu-pie" + icon_state = "meatpie" + desc = "A delicious tofu pie." + trash = /obj/item/trash/plate + filling_color = "#FFFEE0" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 10 + nutriment_desc = list("tofu" = 2, "pie" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/tofupie/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/amanita_pie + name = "amanita pie" + desc = "Sweet and tasty poison pie." + icon_state = "amanita_pie" + filling_color = "#FFCCCC" + center_of_mass = list("x"=17, "y"=9) + nutriment_amt = 5 + nutriment_desc = list("sweetness" = 3, "mushroom" = 3, "pie" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/amanita_pie/New() + ..() + reagents.add_reagent("amatoxin", 3) + reagents.add_reagent("psilocybin", 1) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/plump_pie + name = "plump pie" + desc = "I bet you love stuff made out of plump helmets!" + icon_state = "plump_pie" + filling_color = "#B8279B" + center_of_mass = list("x"=17, "y"=9) + nutriment_amt = 8 + nutriment_desc = list("heartiness" = 2, "mushroom" = 3, "pie" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/plump_pie/New() + ..() + if(prob(10)) + name = "exceptional plump pie" + desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" + reagents.add_reagent("nutriment", 8) + reagents.add_reagent("tricordrazine", 5) + bitesize = 2 + else + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/xemeatpie + name = "Xeno-pie" + icon_state = "xenomeatpie" + desc = "A delicious meatpie. Probably heretical." + trash = /obj/item/trash/plate + filling_color = "#43DE18" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/xemeatpie/New() + ..() + reagents.add_reagent("protein", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/wingfangchu + name = "Wing Fang Chu" + desc = "A savory dish of alien wing wang in soy." + icon_state = "wingfangchu" + trash = /obj/item/trash/snack_bowl + filling_color = "#43DE18" + center_of_mass = list("x"=17, "y"=9) + +/obj/item/weapon/reagent_containers/food/snacks/wingfangchu/New() + ..() + reagents.add_reagent("protein", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/human/kabob + name = "-kabob" + icon_state = "kabob" + desc = "A human meat, on a stick." + trash = /obj/item/stack/rods + filling_color = "#A85340" + center_of_mass = list("x"=17, "y"=15) + +/obj/item/weapon/reagent_containers/food/snacks/human/kabob/New() + ..() + reagents.add_reagent("protein", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/monkeykabob + name = "Meat-kabob" + icon_state = "kabob" + desc = "Delicious meat, on a stick." + trash = /obj/item/stack/rods + filling_color = "#A85340" + center_of_mass = list("x"=17, "y"=15) + +/obj/item/weapon/reagent_containers/food/snacks/monkeykabob/New() + ..() + reagents.add_reagent("protein", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tofukabob + name = "Tofu-kabob" + icon_state = "kabob" + desc = "Vegan meat, on a stick." + trash = /obj/item/stack/rods + filling_color = "#FFFEE0" + + center_of_mass = list("x"=17, "y"=15) + nutriment_amt = 8 + nutriment_desc = list("tofu" = 3, "metal" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/tofukabob/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cubancarp + name = "Cuban Carp" + desc = "A sandwich that burns your tongue and then leaves it numb!" + icon_state = "cubancarp" + trash = /obj/item/trash/plate + filling_color = "#E9ADFF" + center_of_mass = list("x"=12, "y"=5) + nutriment_amt = 3 + nutriment_desc = list("toasted bread" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cubancarp/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("carpotoxin", 3) + reagents.add_reagent("capsaicin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/popcorn + name = "Popcorn" + desc = "Now let's find some cinema." + icon_state = "popcorn" + trash = /obj/item/trash/popcorn + var/unpopped = 0 + filling_color = "#FFFAD4" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 2 + nutriment_desc = list("popcorn" = 3) + + +/obj/item/weapon/reagent_containers/food/snacks/popcorn/New() + ..() + unpopped = rand(1,10) + bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 + +/obj/item/weapon/reagent_containers/food/snacks/popcorn/On_Consume() + if(prob(unpopped)) //lol ...what's the point? + usr << "You bite down on an un-popped kernel!" + unpopped = max(0, unpopped-1) + ..() + +/obj/item/weapon/reagent_containers/food/snacks/sosjerky + name = "Scaredy's Private Reserve Beef Jerky" + icon_state = "sosjerky" + desc = "Beef jerky made from the finest space cows." + trash = /obj/item/trash/sosjerky + filling_color = "#631212" + center_of_mass = list("x"=15, "y"=9) + +/obj/item/weapon/reagent_containers/food/snacks/sosjerky/New() + ..() + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/no_raisin + name = "4no Raisins" + icon_state = "4no_raisins" + desc = "Best raisins in the universe. Not sure why." + trash = /obj/item/trash/raisins + filling_color = "#343834" + center_of_mass = list("x"=15, "y"=4) + nutriment_amt = 6 + nutriment_desc = list("dried raisins" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/no_raisin/New() + ..() + reagents.add_reagent("nutriment", 6) + +/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie + name = "Space Twinkie" + icon_state = "space_twinkie" + desc = "Guaranteed to survive longer then you will." + filling_color = "#FFE591" + center_of_mass = list("x"=15, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie/New() + ..() + reagents.add_reagent("sugar", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers + name = "Cheesie Honkers" + icon_state = "cheesie_honkers" + desc = "Bite sized cheesie snacks that will honk all over your mouth" + trash = /obj/item/trash/cheesie + filling_color = "#FFA305" + center_of_mass = list("x"=15, "y"=9) + nutriment_amt = 4 + nutriment_desc = list("cheese" = 5, "chips" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/syndicake + name = "Syndi-Cakes" + icon_state = "syndi_cakes" + desc = "An extremely moist snack cake that tastes just as good after being nuked." + filling_color = "#FF5D05" + center_of_mass = list("x"=16, "y"=10) + trash = /obj/item/trash/syndi_cakes + nutriment_amt = 4 + nutriment_desc = list("sweetness" = 3, "cake" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/syndicake/New() + ..() + reagents.add_reagent("doctorsdelight", 5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato + name = "Loaded Baked Potato" + desc = "Totally baked." + icon_state = "loadedbakedpotato" + filling_color = "#9C7A68" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 3 + nutriment_desc = list("baked potato" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fries + name = "Space Fries" + desc = "AKA: French Fries, Freedom Fries, etc." + icon_state = "fries" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("fresh fries" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/fries/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/mashedpotato + name = "Mashed Potato" + desc = "Pillowy mounds of mashed potato." + icon_state = "mashedpotato" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("fluffy mashed potatoes" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/mashedpotato/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/bangersandmash + name = "Bangers and Mash" + desc = "An English treat." + icon_state = "bangersandmash" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("fluffy potato" = 3, "sausage" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/bangersandmash/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/cheesymash + name = "Cheesy Mashed Potato" + desc = "The only thing that could make mash better." + icon_state = "cheesymash" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("cheesy potato" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/cheesymash/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/blackpudding + name = "Black Pudding" + desc = "This doesn't seem like a pudding at all." + icon_state = "blackpudding" + filling_color = "#FF0000" + center_of_mass = list("x"=16, "y"=7) + +/obj/item/weapon/reagent_containers/food/snacks/blackpudding/New() + ..() + reagents.add_reagent("protein", 2) + reagents.add_reagent("blood", 5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/soydope + name = "Soy Dope" + desc = "Dope from a soy." + icon_state = "soydope" + trash = /obj/item/trash/plate + filling_color = "#C4BF76" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 2 + nutriment_desc = list("slime" = 2, "soy" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/soydope/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/spagetti + name = "Spaghetti" + desc = "A bundle of raw spaghetti." + icon_state = "spagetti" + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=16) + nutriment_amt = 1 + nutriment_desc = list("noodles" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/spagetti/New() + ..() + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/cheesyfries + name = "Cheesy Fries" + desc = "Fries. Covered in cheese. Duh." + icon_state = "cheesyfries" + trash = /obj/item/trash/plate + filling_color = "#EDDD00" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("fresh fries" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cheesyfries/New() + ..() + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fortunecookie + name = "Fortune cookie" + desc = "A true prophecy in each cookie!" + icon_state = "fortune_cookie" + filling_color = "#E8E79E" + center_of_mass = list("x"=15, "y"=14) + nutriment_amt = 3 + nutriment_desc = list("fortune cookie" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/badrecipe + name = "Burned mess" + desc = "Someone should be demoted from chef for this." + icon_state = "badrecipe" + filling_color = "#211F02" + center_of_mass = list("x"=16, "y"=12) + +/obj/item/weapon/reagent_containers/food/snacks/badrecipe/New() + ..() + reagents.add_reagent("toxin", 1) + reagents.add_reagent("carbon", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatsteak + name = "Meat steak" + desc = "A piece of hot spicy meat." + icon_state = "meatstake" + trash = /obj/item/trash/plate + filling_color = "#7A3D11" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/meatsteak/New() + ..() + reagents.add_reagent("protein", 4) + reagents.add_reagent("sodiumchloride", 1) + reagents.add_reagent("blackpepper", 1) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff + name = "Spacy Liberty Duff" + desc = "Jello gelatin, from Alfred Hubbard's cookbook" + icon_state = "spacylibertyduff" + trash = /obj/item/trash/snack_bowl + filling_color = "#42B873" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 6 + nutriment_desc = list("mushroom" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff/New() + ..() + reagents.add_reagent("psilocybin", 6) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/amanitajelly + name = "Amanita Jelly" + desc = "Looks curiously toxic" + icon_state = "amanitajelly" + trash = /obj/item/trash/snack_bowl + filling_color = "#ED0758" + center_of_mass = list("x"=16, "y"=5) + nutriment_amt = 6 + nutriment_desc = list("jelly" = 3, "mushroom" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/New() + ..() + reagents.add_reagent("amatoxin", 6) + reagents.add_reagent("psilocybin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/poppypretzel + name = "Poppy pretzel" + desc = "It's all twisted up!" + icon_state = "poppypretzel" + bitesize = 2 + filling_color = "#916E36" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 5 + nutriment_desc = list("poppy seeds" = 2, "pretzel" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/poppypretzel/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatballsoup + name = "Meatball soup" + desc = "You've got balls kid, BALLS!" + icon_state = "meatballsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#785210" + center_of_mass = list("x"=16, "y"=8) + +/obj/item/weapon/reagent_containers/food/snacks/meatballsoup/New() + ..() + reagents.add_reagent("protein", 8) + reagents.add_reagent("water", 5) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/slimesoup + name = "slime soup" + desc = "If no water is available, you may substitute tears." + icon_state = "slimesoup" //nonexistant? + filling_color = "#C4DBA0" + +/obj/item/weapon/reagent_containers/food/snacks/slimesoup/New() + ..() + reagents.add_reagent("slimejelly", 5) + reagents.add_reagent("water", 10) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/bloodsoup + name = "Tomato soup" + desc = "Smells like copper." + icon_state = "tomatosoup" + filling_color = "#FF0000" + center_of_mass = list("x"=16, "y"=7) + +/obj/item/weapon/reagent_containers/food/snacks/bloodsoup/New() + ..() + reagents.add_reagent("protein", 2) + reagents.add_reagent("blood", 10) + reagents.add_reagent("water", 5) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/clownstears + name = "Clown's Tears" + desc = "Not very funny." + icon_state = "clownstears" + filling_color = "#C4FBFF" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 4 + nutriment_desc = list("salt" = 1, "the worst joke" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/clownstears/New() + ..() + reagents.add_reagent("banana", 5) + reagents.add_reagent("water", 10) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup + name = "Vegetable soup" + desc = "A true vegan meal" //TODO + icon_state = "vegetablesoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#AFC4B5" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 8 + nutriment_desc = list("carot" = 2, "corn" = 2, "eggplant" = 2, "potato" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup/New() + ..() + reagents.add_reagent("water", 5) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/nettlesoup + name = "Nettle soup" + desc = "To think, the botanist would've beat you to death with one of these." + icon_state = "nettlesoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#AFC4B5" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 8 + nutriment_desc = list("salad" = 4, "egg" = 2, "potato" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/nettlesoup/New() + ..() + reagents.add_reagent("water", 5) + reagents.add_reagent("tricordrazine", 5) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/mysterysoup + name = "Mystery soup" + desc = "The mystery is, why aren't you eating it?" + icon_state = "mysterysoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#F082FF" + center_of_mass = list("x"=16, "y"=6) + nutriment_amt = 1 + nutriment_desc = list("backwash" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/mysterysoup/New() + ..() + var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10) + switch(mysteryselect) + if(1) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("capsaicin", 3) + reagents.add_reagent("tomatojuice", 2) + if(2) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("frostoil", 3) + reagents.add_reagent("tomatojuice", 2) + if(3) + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("water", 5) + reagents.add_reagent("tricordrazine", 5) + if(4) + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("water", 10) + if(5) + reagents.add_reagent("nutriment", 2) + reagents.add_reagent("banana", 10) + if(6) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("blood", 10) + if(7) + reagents.add_reagent("slimejelly", 10) + reagents.add_reagent("water", 10) + if(8) + reagents.add_reagent("carbon", 10) + reagents.add_reagent("toxin", 10) + if(9) + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("tomatojuice", 10) + if(10) + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("tomatojuice", 5) + reagents.add_reagent("imidazoline", 5) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/wishsoup + name = "Wish Soup" + desc = "I wish this was soup." + icon_state = "wishsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#D1F4FF" + center_of_mass = list("x"=16, "y"=11) + +/obj/item/weapon/reagent_containers/food/snacks/wishsoup/New() + ..() + reagents.add_reagent("water", 10) + bitesize = 5 + if(prob(25)) + src.desc = "A wish come true!" + reagents.add_reagent("nutriment", 8, list("something good" = 8)) + +/obj/item/weapon/reagent_containers/food/snacks/hotchili + name = "Hot Chili" + desc = "A five alarm Texan Chili!" + icon_state = "hotchili" + trash = /obj/item/trash/snack_bowl + filling_color = "#FF3C00" + center_of_mass = list("x"=15, "y"=9) + nutriment_amt = 3 + nutriment_desc = list("chilli peppers" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/hotchili/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("capsaicin", 3) + reagents.add_reagent("tomatojuice", 2) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/coldchili + name = "Cold Chili" + desc = "This slush is barely a liquid!" + icon_state = "coldchili" + filling_color = "#2B00FF" + center_of_mass = list("x"=15, "y"=9) + trash = /obj/item/trash/snack_bowl + nutriment_amt = 3 + nutriment_desc = list("ice peppers" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/coldchili/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("frostoil", 3) + reagents.add_reagent("tomatojuice", 2) + bitesize = 5 + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube + name = "monkey cube" + desc = "Just add water!" + flags = OPENCONTAINER + icon_state = "monkeycube" + bitesize = 12 + filling_color = "#ADAC7F" + center_of_mass = list("x"=16, "y"=14) + + var/wrapped = 0 + var/monkey_type = "Monkey" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/New() + ..() + reagents.add_reagent("protein", 10) + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user as mob) + if(wrapped) + Unwrap(user) + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand() + src.visible_message("\The [src] expands!") + var/mob/living/carbon/human/H = new(get_turf(src)) + H.set_species(monkey_type) + H.real_name = H.species.get_random_name() + H.name = H.real_name + if(ismob(loc)) + var/mob/M = loc + M.unEquip(src) + qdel(src) + return 1 + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Unwrap(mob/user as mob) + icon_state = "monkeycube" + desc = "Just add water!" + to_chat(user, "You unwrap the cube.") + wrapped = 0 + flags |= OPENCONTAINER + return + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/On_Consume(var/mob/M) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.visible_message("A screeching creature bursts out of [M]'s chest!") + var/obj/item/organ/external/organ = H.get_organ(BP_TORSO) + organ.take_damage(50, 0, 0, "Animal escaping the ribcage") + Expand() + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/on_reagent_change() + if(reagents.has_reagent("water")) + Expand() + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped + desc = "Still wrapped in some paper." + icon_state = "monkeycubewrap" + flags = 0 + wrapped = 1 + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube + name = "farwa cube" + monkey_type = "Farwa" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube + name = "farwa cube" + monkey_type = "Farwa" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube + name = "stok cube" + monkey_type = "Stok" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube + name = "stok cube" + monkey_type = "Stok" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube + name = "neaera cube" + monkey_type = "Neaera" + +/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube + name = "neaera cube" + monkey_type = "Neaera" + +/obj/item/weapon/reagent_containers/food/snacks/spellburger + name = "Spell Burger" + desc = "This is absolutely Ei Nath." + icon_state = "spellburger" + filling_color = "#D505FF" + nutriment_amt = 6 + nutriment_desc = list("magic" = 3, "buns" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/spellburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger + name = "Big Bite Burger" + desc = "Forget the Big Mac. THIS is the future!" + icon_state = "bigbiteburger" + filling_color = "#E3D681" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("buns" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger/New() + ..() + reagents.add_reagent("protein", 10) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/enchiladas + name = "Enchiladas" + desc = "Viva La Mexico!" + icon_state = "enchiladas" + trash = /obj/item/trash/tray + filling_color = "#A36A1F" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 2 + nutriment_desc = list("tortilla" = 3, "corn" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/enchiladas/New() + ..() + reagents.add_reagent("protein", 6) + reagents.add_reagent("capsaicin", 6) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight + name = "monkey's Delight" + desc = "Eeee Eee!" + icon_state = "monkeysdelight" + trash = /obj/item/trash/tray + filling_color = "#5C3C11" + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight/New() + ..() + reagents.add_reagent("protein", 10) + reagents.add_reagent("banana", 5) + reagents.add_reagent("blackpepper", 1) + reagents.add_reagent("sodiumchloride", 1) + bitesize = 6 + +/obj/item/weapon/reagent_containers/food/snacks/baguette + name = "Baguette" + desc = "Bon appetit!" + icon_state = "baguette" + filling_color = "#E3D796" + center_of_mass = list("x"=18, "y"=12) + nutriment_amt = 6 + nutriment_desc = list("french bread" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/baguette/New() + ..() + reagents.add_reagent("blackpepper", 1) + reagents.add_reagent("sodiumchloride", 1) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/fishandchips + name = "Fish and Chips" + desc = "I do say so myself chap." + icon_state = "fishandchips" + filling_color = "#E3D796" + center_of_mass = list("x"=16, "y"=16) + nutriment_amt = 3 + nutriment_desc = list("salt" = 1, "chips" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/fishandchips/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("carpotoxin", 3) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/sandwich + name = "Sandwich" + desc = "A grand creation of meat, cheese, bread, and several leaves of lettuce! Arthur Dent would be proud." + icon_state = "sandwich" + trash = /obj/item/trash/plate + filling_color = "#D9BE29" + center_of_mass = list("x"=16, "y"=4) + nutriment_amt = 3 + nutriment_desc = list("bread" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/sandwich/New() + ..() + reagents.add_reagent("protein", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich + name = "Toasted Sandwich" + desc = "Now if you only had a pepper bar." + icon_state = "toastedsandwich" + trash = /obj/item/trash/plate + filling_color = "#D9BE29" + center_of_mass = list("x"=16, "y"=4) + nutriment_amt = 3 + nutriment_desc = list("toasted bread" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich/New() + ..() + reagents.add_reagent("protein", 3) + reagents.add_reagent("carbon", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/grilledcheese + name = "Grilled Cheese Sandwich" + desc = "Goes great with Tomato soup!" + icon_state = "toastedsandwich" + trash = /obj/item/trash/plate + filling_color = "#D9BE29" + nutriment_amt = 3 + nutriment_desc = list("toasted bread" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/grilledcheese/New() + ..() + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tomatosoup + name = "Tomato Soup" + desc = "Drinking this feels like being a vampire! A tomato vampire..." + icon_state = "tomatosoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#D92929" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 5 + nutriment_desc = list("soup" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/tomatosoup/New() + ..() + reagents.add_reagent("tomatojuice", 10) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/onionsoup + name = "Onion Soup" + desc = "A soup with layers." + icon_state = "onionsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#E0C367" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 5 + nutriment_desc = list("onion" = 2, "soup" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/onionsoup/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/onionrings + name = "Onion Rings" + desc = "Crispy rings." + icon_state = "onionrings" + trash = /obj/item/trash/plate + filling_color = "#E0C367" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 5 + nutriment_desc = list("onion" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/onionrings/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles + name = "Roffle Waffles" + desc = "Waffles from Roffle. Co." + icon_state = "rofflewaffles" + trash = /obj/item/trash/waffles + filling_color = "#FF00F7" + center_of_mass = list("x"=15, "y"=11) + nutriment_amt = 8 + nutriment_desc = list("waffle" = 7, "sweetness" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles/New() + ..() + reagents.add_reagent("psilocybin", 8) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/stew + name = "Stew" + desc = "A nice and warm stew. Healthy and strong." + icon_state = "stew" + filling_color = "#9E673A" + center_of_mass = list("x"=16, "y"=5) + nutriment_amt = 6 + nutriment_desc = list("tomato" = 2, "potato" = 2, "carrot" = 2, "eggplant" = 2, "mushroom" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/stew/New() + ..() + reagents.add_reagent("protein", 4) + reagents.add_reagent("tomatojuice", 5) + reagents.add_reagent("imidazoline", 5) + reagents.add_reagent("water", 5) + bitesize = 10 + +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast + name = "Jellied Toast" + desc = "A slice of bread covered with delicious jam." + icon_state = "jellytoast" + trash = /obj/item/trash/plate + filling_color = "#B572AB" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 1 + nutriment_desc = list("toasted bread" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry/New() + ..() + reagents.add_reagent("cherryjelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime/New() + ..() + reagents.add_reagent("slimejelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/jellyburger + name = "Jelly Burger" + desc = "Culinary delight..?" + icon_state = "jellyburger" + filling_color = "#B572AB" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 5 + nutriment_desc = list("buns" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/jellyburger/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime/New() + ..() + reagents.add_reagent("slimejelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry/New() + ..() + reagents.add_reagent("cherryjelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/milosoup + name = "Milosoup" + desc = "The universes best soup! Yum!!!" + icon_state = "milosoup" + trash = /obj/item/trash/snack_bowl + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 8 + nutriment_desc = list("soy" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/milosoup/New() + ..() + reagents.add_reagent("water", 5) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat + name = "Stewed Soy Meat" + desc = "Even non-vegetarians will LOVE this!" + icon_state = "stewedsoymeat" + trash = /obj/item/trash/plate + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 8 + nutriment_desc = list("soy" = 4, "tomato" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti + name = "Boiled Spaghetti" + desc = "A plain dish of noodles, this sucks." + icon_state = "spagettiboiled" + trash = /obj/item/trash/plate + filling_color = "#FCEE81" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 2 + nutriment_desc = list("noodles" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/boiledrice + name = "Boiled Rice" + desc = "A boring dish of boring rice." + icon_state = "boiledrice" + trash = /obj/item/trash/snack_bowl + filling_color = "#FFFBDB" + center_of_mass = list("x"=17, "y"=11) + nutriment_amt = 2 + nutriment_desc = list("rice" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/boiledrice/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/ricepudding + name = "Rice Pudding" + desc = "Where's the jam?" + icon_state = "rpudding" + trash = /obj/item/trash/snack_bowl + filling_color = "#FFFBDB" + center_of_mass = list("x"=17, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("rice" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/ricepudding/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/pastatomato + name = "Spaghetti" + desc = "Spaghetti and crushed tomatoes. Just like your abusive father used to make!" + icon_state = "pastatomato" + trash = /obj/item/trash/plate + filling_color = "#DE4545" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 6 + nutriment_desc = list("tomato" = 3, "noodles" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/pastatomato/New() + ..() + reagents.add_reagent("tomatojuice", 10) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti + name = "Spaghetti & Meatballs" + desc = "Now thats a nic'e meatball!" + icon_state = "meatballspagetti" + trash = /obj/item/trash/plate + filling_color = "#DE4545" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 4 + nutriment_desc = list("noodles" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti/New() + ..() + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/spesslaw + name = "Spesslaw" + desc = "A lawyers favourite" + icon_state = "spesslaw" + filling_color = "#DE4545" + center_of_mass = list("x"=16, "y"=10) + nutriment_amt = 4 + nutriment_desc = list("noodles" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/spesslaw/New() + ..() + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/carrotfries + name = "Carrot Fries" + desc = "Tasty fries from fresh Carrots." + icon_state = "carrotfries" + trash = /obj/item/trash/plate + filling_color = "#FAA005" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 3 + nutriment_desc = list("carrot" = 3, "salt" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/carrotfries/New() + ..() + reagents.add_reagent("imidazoline", 3) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/superbiteburger + name = "Super Bite Burger" + desc = "This is a mountain of a burger. FOOD!" + icon_state = "superbiteburger" + filling_color = "#CCA26A" + center_of_mass = list("x"=16, "y"=3) + nutriment_amt = 25 + nutriment_desc = list("buns" = 25) + +/obj/item/weapon/reagent_containers/food/snacks/superbiteburger/New() + ..() + reagents.add_reagent("protein", 25) + bitesize = 10 + +/obj/item/weapon/reagent_containers/food/snacks/candiedapple + name = "Candied Apple" + desc = "An apple coated in sugary sweetness." + icon_state = "candiedapple" + filling_color = "#F21873" + center_of_mass = list("x"=15, "y"=13) + nutriment_amt = 3 + nutriment_desc = list("apple" = 3, "caramel" = 3, "sweetness" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/candiedapple/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/applepie + name = "Apple Pie" + desc = "A pie containing sweet sweet love... or apple." + icon_state = "applepie" + filling_color = "#E0EDC5" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 4 + nutriment_desc = list("sweetness" = 2, "apple" = 2, "pie" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/applepie/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/cherrypie + name = "Cherry Pie" + desc = "Taste so good, make a grown man cry." + icon_state = "cherrypie" + filling_color = "#FF525A" + center_of_mass = list("x"=16, "y"=11) + nutriment_amt = 4 + nutriment_desc = list("sweetness" = 2, "cherry" = 2, "pie" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/cherrypie/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/twobread + name = "Two Bread" + desc = "It is very bitter and winy." + icon_state = "twobread" + filling_color = "#DBCC9A" + center_of_mass = list("x"=15, "y"=12) + nutriment_amt = 2 + nutriment_desc = list("sourness" = 2, "bread" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/twobread/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich + name = "Jelly Sandwich" + desc = "You wish you had some peanut butter to go with this..." + icon_state = "jellysandwich" + trash = /obj/item/trash/plate + filling_color = "#9E3A78" + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 2 + nutriment_desc = list("bread" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime/New() + ..() + reagents.add_reagent("slimejelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry/New() + ..() + reagents.add_reagent("cherryjelly", 5) + +/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore + name = "Boiled slime Core" + desc = "A boiled red thing." + icon_state = "boiledslimecore" //nonexistant? + +/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore/New() + ..() + reagents.add_reagent("slimejelly", 5) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/mint + name = "mint" + desc = "it is only wafer thin." + icon_state = "mint" + filling_color = "#F2F2F2" + center_of_mass = list("x"=16, "y"=14) + +/obj/item/weapon/reagent_containers/food/snacks/mint/New() + ..() + reagents.add_reagent("mint", 1) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup + name = "chantrelle soup" + desc = "A delicious and hearty mushroom soup." + icon_state = "mushroomsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#E386BF" + center_of_mass = list("x"=17, "y"=10) + nutriment_amt = 8 + nutriment_desc = list("mushroom" = 8, "milk" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit + name = "plump helmet biscuit" + desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour." + icon_state = "phelmbiscuit" + filling_color = "#CFB4C4" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 5 + nutriment_desc = list("mushroom" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/New() + ..() + if(prob(10)) + name = "exceptional plump helmet biscuit" + desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" + reagents.add_reagent("nutriment", 8) + bitesize = 2 + else + reagents.add_reagent("nutriment", 5) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/chawanmushi + name = "chawanmushi" + desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat." + icon_state = "chawanmushi" + trash = /obj/item/trash/snack_bowl + filling_color = "#F0F2E4" + center_of_mass = list("x"=17, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/chawanmushi/New() + ..() + reagents.add_reagent("protein", 5) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/beetsoup + name = "beet soup" + desc = "Wait, how do you spell it again..?" + icon_state = "beetsoup" + trash = /obj/item/trash/snack_bowl + filling_color = "#FAC9FF" + center_of_mass = list("x"=15, "y"=8) + nutriment_amt = 8 + nutriment_desc = list("tomato" = 4, "beet" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/beetsoup/New() + ..() + name = pick(list("borsch","bortsch","borstch","borsh","borshch","borscht")) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tossedsalad + name = "tossed salad" + desc = "A proper salad, basic and simple, with little bits of carrot, tomato and apple intermingled. Vegan!" + icon_state = "herbsalad" + trash = /obj/item/trash/snack_bowl + filling_color = "#76B87F" + center_of_mass = list("x"=17, "y"=11) + nutriment_amt = 8 + nutriment_desc = list("salad" = 2, "tomato" = 2, "carrot" = 2, "apple" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/tossedsalad/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/validsalad + name = "valid salad" + desc = "It's just a salad of questionable 'herbs' with meatballs and fried potato slices. Nothing suspicious about it." + icon_state = "validsalad" + trash = /obj/item/trash/snack_bowl + filling_color = "#76B87F" + center_of_mass = list("x"=17, "y"=11) + nutriment_amt = 6 + nutriment_desc = list("100% real salad") + +/obj/item/weapon/reagent_containers/food/snacks/validsalad/New() + ..() + reagents.add_reagent("protein", 2) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/appletart + name = "golden apple streusel tart" + desc = "A tasty dessert that won't make it through a metal detector." + icon_state = "gappletart" + trash = /obj/item/trash/plate + filling_color = "#FFFF00" + center_of_mass = list("x"=16, "y"=18) + nutriment_amt = 8 + nutriment_desc = list("apple" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/appletart/New() + ..() + reagents.add_reagent("gold", 5) + bitesize = 3 + +/////////////////////////////////////////////////Sliceable//////////////////////////////////////// +// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels + +// sliceable is just an organization type path, it doesn't have any additional code or variables tied to it. + +/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 eloquent gentleman." + icon_state = "meatbread" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/meatbread + slices_num = 5 + filling_color = "#FF7575" + 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/slice/meatbread + 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"=16) + whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread + +/obj/item/weapon/reagent_containers/food/snacks/slice/meatbread/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/slice/xenomeatbread + slices_num = 5 + filling_color = "#8AFF75" + center_of_mass = list("x"=16, "y"=9) + 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/slice/xenomeatbread + name = "xenomeatbread slice" + desc = "A slice of delicious meatbread. Extra Heretical." + icon_state = "xenobreadslice" + trash = /obj/item/trash/plate + 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/slice/xenomeatbread/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/slice/bananabread + slices_num = 5 + filling_color = "#EDE5AD" + center_of_mass = list("x"=16, "y"=9) + 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/slice/bananabread + name = "Banana-nut bread slice" + desc = "A slice of delicious banana bread." + icon_state = "bananabreadslice" + trash = /obj/item/trash/plate + 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/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/slice/tofubread + slices_num = 5 + filling_color = "#F7FFE0" + center_of_mass = list("x"=16, "y"=9) + nutriment_desc = list("tofu" = 10) + nutriment_amt = 10 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/slice/tofubread + name = "Tofubread slice" + desc = "A slice of delicious tofubread." + icon_state = "tofubreadslice" + trash = /obj/item/trash/plate + 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/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/slice/carrotcake + slices_num = 5 + filling_color = "#FFD675" + center_of_mass = list("x"=16, "y"=10) + 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/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" + trash = /obj/item/trash/plate + 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/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/slice/braincake + slices_num = 5 + filling_color = "#E6AEDB" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("cake" = 10, "sweetness" = 10, "slime" = 15) + nutriment_amt = 5 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake/New() + ..() + reagents.add_reagent("protein", 25) + reagents.add_reagent("alkysine", 10) + bitesize = 2 + +/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" + trash = /obj/item/trash/plate + 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/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/slice/cheesecake + slices_num = 5 + filling_color = "#FAF7AF" + center_of_mass = list("x"=16, "y"=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/slice/cheesecake + name = "Cheese Cake slice" + 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/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/slice/plaincake + slices_num = 5 + filling_color = "#F7EDD5" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("cake" = 10, "sweetness" = 10, "vanilla" = 15) + nutriment_amt = 20 + +/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" + trash = /obj/item/trash/plate + 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/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/slice/orangecake + slices_num = 5 + filling_color = "#FADA8E" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("cake" = 10, "sweetness" = 10, "orange" = 15) + nutriment_amt = 20 + +/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" + trash = /obj/item/trash/plate + 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/sliceable/limecake + name = "Lime Cake" + desc = "A cake with added lime." + icon_state = "limecake" + 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_desc = list("cake" = 10, "sweetness" = 10, "lime" = 15) + nutriment_amt = 20 + + +/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" + trash = /obj/item/trash/plate + 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/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/slice/lemoncake + slices_num = 5 + filling_color = "#FAFA8E" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("cake" = 10, "sweetness" = 10, "lemon" = 15) + nutriment_amt = 20 + + +/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" + trash = /obj/item/trash/plate + 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/slice/lemoncake/filled + filled = TRUE + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake + name = "Chocolate Cake" + desc = "A cake with added chocolate." + icon_state = "chocolatecake" + 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_desc = list("cake" = 10, "sweetness" = 10, "chocolate" = 15) + nutriment_amt = 20 + +/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" + trash = /obj/item/trash/plate + 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/slice/chocolatecake/filled + filled = TRUE + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel + name = "Cheese wheel" + desc = "A big wheel of delcious Cheddar." + icon_state = "cheesewheel" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge + slices_num = 5 + filling_color = "#FFF700" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("cheese" = 10) + nutriment_amt = 10 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel/New() + ..() + reagents.add_reagent("protein", 10) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheesewedge + name = "Cheese wedge" + desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far." + icon_state = "cheesewedge" + filling_color = "#FFF700" + bitesize = 2 + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake + name = "Birthday Cake" + desc = "Happy Birthday..." + icon_state = "birthdaycake" + 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_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/slice/birthdaycake + name = "Birthday Cake slice" + desc = "A slice of your birthday." + icon_state = "birthdaycakeslice" + trash = /obj/item/trash/plate + 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/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/slice/bread + slices_num = 5 + filling_color = "#FFE396" + center_of_mass = list("x"=16, "y"=9) + 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/slice/bread + name = "Bread slice" + desc = "A slice of home." + icon_state = "breadslice" + trash = /obj/item/trash/plate + 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/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/slice/creamcheesebread + slices_num = 5 + filling_color = "#FFF896" + center_of_mass = list("x"=16, "y"=9) + 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/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"=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/watermelonslice + name = "Watermelon Slice" + desc = "A slice of watery goodness." + icon_state = "watermelonslice" + filling_color = "#FF3867" + bitesize = 2 + center_of_mass = list("x"=16, "y"=10) + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake + name = "Apple Cake" + desc = "A cake centred with apples." + icon_state = "applecake" + 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_desc = list("cake" = 10, "sweetness" = 10, "apple" = 15) + nutriment_amt = 15 + +/obj/item/weapon/reagent_containers/food/snacks/slice/applecake + name = "Apple Cake slice" + desc = "A slice of heavenly cake." + icon_state = "applecakeslice" + trash = /obj/item/trash/plate + 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/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/slice/pumpkinpie + slices_num = 5 + filling_color = "#F5B951" + center_of_mass = list("x"=16, "y"=10) + nutriment_desc = list("pie" = 5, "cream" = 5, "pumpkin" = 5) + nutriment_amt = 15 + +/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" + trash = /obj/item/trash/plate + 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/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"=16, "y"=6) + nutriment_desc = list("salt" = 1, "cracker" = 2) + nutriment_amt = 1 + + + +/////////////////////////////////////////////////PIZZA//////////////////////////////////////// + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza + slices_num = 6 + filling_color = "#BAA14C" + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita + name = "Margherita" + desc = "The golden standard of pizzas." + icon_state = "pizzamargherita" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/margherita + slices_num = 6 + center_of_mass = list("x"=16, "y"=11) + nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15) + nutriment_amt = 35 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita/New() + ..() + reagents.add_reagent("protein", 5) + reagents.add_reagent("tomatojuice", 6) + bitesize = 2 + +/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"=16, "y"=13) + whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita + +/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/slice/meatpizza + slices_num = 6 + center_of_mass = list("x"=16, "y"=11) + nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15) + nutriment_amt = 10 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza/New() + ..() + reagents.add_reagent("protein", 34) + reagents.add_reagent("tomatojuice", 6) + bitesize = 2 + +/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"=16, "y"=13) + whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza + +/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." + icon_state = "mushroompizza" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza + slices_num = 6 + center_of_mass = list("x"=16, "y"=11) + 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/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"=16, "y"=13) + whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza + +/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." + icon_state = "vegetablepizza" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza + slices_num = 6 + center_of_mass = list("x"=16, "y"=11) + 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() + ..() + reagents.add_reagent("protein", 5) + reagents.add_reagent("tomatojuice", 6) + reagents.add_reagent("imidazoline", 12) + bitesize = 2 + +/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." + icon_state = "vegetablepizzaslice" + filling_color = "#BAA14C" + bitesize = 2 + 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/slice/vegetablepizza/filled + filled = TRUE + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza + name = "moldy pizza" + desc = "This pizza might actually be alive. There's mold all over." + icon_state = "oldpizza" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/oldpizza + slices_num = 6 + center_of_mass = list("x"=16, "y"=11) + nutriment_desc = list("stale pizza crust" = 10, "moldy tomato" = 10, "moldy cheese" = 5) + nutriment_amt = 10 + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza/New() + ..() + reagents.add_reagent("protein", 5) + reagents.add_reagent("tomatojuice", 6) + reagents.add_reagent("mold", 8) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/slice/oldpizza + name = "moldy pizza slice" + desc = "This used to be pizza..." + icon_state = "old_pizza" + filling_color = "#BAA14C" + bitesize = 2 + center_of_mass = list("x"=16, "y"=13) + whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza + +/obj/item/pizzabox + name = "pizza box" + desc = "A box suited for pizzas." + icon = 'icons/obj/food.dmi' + icon_state = "pizzabox1" + + var/open = 0 // Is the box open? + var/ismessy = 0 // Fancy mess on the lid + var/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pizza // Content pizza + var/list/boxes = list() // If the boxes are stacked, they come here + var/boxtag = "" + +/obj/item/pizzabox/update_icon() + + overlays = list() + + // Set appropriate description + if( open && pizza ) + desc = "A box suited for pizzas. It appears to have a [pizza.name] inside." + 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 != "" ) + desc = "[desc] The box on top has a tag, it reads: '[toptag]'." + else + desc = "A box suited for pizzas." + + if( boxtag != "" ) + desc = "[desc] The box has a tag, it reads: '[boxtag]'." + + // Icon states and overlays + if( open ) + if( ismessy ) + icon_state = "pizzabox_messy" + else + icon_state = "pizzabox_open" + + if( pizza ) + var/image/pizzaimg = image("food.dmi", icon_state = pizza.icon_state) + pizzaimg.pixel_y = -3 + overlays += pizzaimg + + return + else + // Stupid code because byondcode sucks + var/doimgtag = 0 + if( boxes.len > 0 ) + var/obj/item/pizzabox/topbox = boxes[boxes.len] + if( topbox.boxtag != "" ) + doimgtag = 1 + else + if( boxtag != "" ) + doimgtag = 1 + + 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 ) + + if( open && pizza ) + user.put_in_hands( pizza ) + + 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 ) + ..() + return + + var/obj/item/pizzabox/box = boxes[boxes.len] + boxes -= box + + user.put_in_hands( box ) + 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 ) + + if( boxes.len > 0 ) + return + + open = !open + + 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/) ) + var/obj/item/pizzabox/box = I + + 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 ) + 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 ) + + box.update_icon() + update_icon() + + to_chat(user, "You put \the [box] ontop of \the [src]!") + else + to_chat(user, "The stack is too high!") + else + 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( src.open ) + user.drop_item() + I.loc = src + src.pizza = I + + update_icon() + + to_chat(user, "You put \the [I] in \the [src]!") + else + 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( 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 ) + boxtotagto = boxes[boxes.len] + + boxtotagto.boxtag = copytext("[boxtotagto.boxtag][t]", 1, 30) + + update_icon() + return + ..() + +/obj/item/pizzabox/margherita/New() + pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita(src) + boxtag = "Margherita Deluxe" + +/obj/item/pizzabox/vegetable/New() + pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza(src) + boxtag = "Gourmet Vegatable" + +/obj/item/pizzabox/mushroom/New() + pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza(src) + boxtag = "Mushroom Special" + +/obj/item/pizzabox/meat/New() + pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza(src) + boxtag = "Meatlover's Supreme" + +/obj/item/pizzabox/old/New() + pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza(src) + boxtag = "Deluxe Gourmet" + +/obj/item/weapon/reagent_containers/food/snacks/dionaroast + name = "roast diona" + desc = "It's like an enormous, leathery carrot. With an eye." + icon_state = "dionaroast" + trash = /obj/item/trash/plate + filling_color = "#75754B" + center_of_mass = list("x"=16, "y"=7) + nutriment_amt = 6 + nutriment_desc = list("a chorus of flavor" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/dionaroast/New() + ..() + reagents.add_reagent("radium", 2) + bitesize = 2 + +/////////////////////////////////////////// +// new old food stuff from bs12 +/////////////////////////////////////////// +/obj/item/weapon/reagent_containers/food/snacks/dough + name = "dough" + desc = "A piece of dough." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "dough" + bitesize = 2 + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 3 + nutriment_desc = list("uncooked dough" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/dough/New() + ..() + reagents.add_reagent("protein", 1) + +// Dough + rolling pin = flat dough +/obj/item/weapon/reagent_containers/food/snacks/dough/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/material/kitchen/rollingpin)) + new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src) + user << "You flatten the dough." + qdel(src) + +// slicable into 3xdoughslices +/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough + name = "flat dough" + desc = "A flattened dough." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "flat dough" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice + slices_num = 3 + center_of_mass = list("x"=16, "y"=16) + +/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/New() + ..() + reagents.add_reagent("protein", 1) + reagents.add_reagent("nutriment", 3) + +/obj/item/weapon/reagent_containers/food/snacks/doughslice + name = "dough slice" + desc = "A building block of an impressive dish." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "doughslice" + slice_path = /obj/item/weapon/reagent_containers/food/snacks/spagetti + slices_num = 1 + bitesize = 2 + center_of_mass = list("x"=17, "y"=19) + nutriment_amt = 1 + nutriment_desc = list("uncooked dough" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/doughslice/New() + ..() + +/obj/item/weapon/reagent_containers/food/snacks/bun + name = "bun" + desc = "A base for any self-respecting burger." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "bun" + bitesize = 2 + center_of_mass = list("x"=16, "y"=12) + nutriment_amt = 4 + nutriment_desc = "bun" + +/obj/item/weapon/reagent_containers/food/snacks/bun/New() + ..() + +/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/weapon/W as obj, mob/user as mob) + // Bun + meatball = burger + if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/meatball)) + new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src) + user << "You make a burger." + qdel(W) + qdel(src) + + // Bun + cutlet = hamburger + else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/cutlet)) + new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src) + user << "You make a burger." + qdel(W) + qdel(src) + + // Bun + sausage = hotdog + else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/sausage)) + new /obj/item/weapon/reagent_containers/food/snacks/hotdog(src) + user << "You make a hotdog." + qdel(W) + qdel(src) + +// Burger + cheese wedge = cheeseburger +/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob) + if(istype(W))// && !istype(src,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge)) + new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src) + user << "You make a cheeseburger." + qdel(W) + qdel(src) + return + else + ..() + +// Human Burger + cheese wedge = cheeseburger +/obj/item/weapon/reagent_containers/food/snacks/human/burger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob) + if(istype(W)) + new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src) + user << "You make a cheeseburger." + qdel(W) + qdel(src) + return + else + ..() + +/obj/item/weapon/reagent_containers/food/snacks/bunbun + name = "\improper Bun Bun" + desc = "A small bread monkey fashioned from two burger buns." + icon_state = "bunbun" + bitesize = 2 + center_of_mass = list("x"=16, "y"=8) + nutriment_amt = 8 + nutriment_desc = list("bun" = 8) + +/obj/item/weapon/reagent_containers/food/snacks/bunbun/New() + ..() + +/obj/item/weapon/reagent_containers/food/snacks/taco + name = "taco" + desc = "Take a bite!" + icon_state = "taco" + bitesize = 3 + center_of_mass = list("x"=21, "y"=12) + nutriment_amt = 4 + nutriment_desc = list("cheese" = 2,"taco shell" = 2) +/obj/item/weapon/reagent_containers/food/snacks/taco/New() + ..() + reagents.add_reagent("protein", 3) + +/obj/item/weapon/reagent_containers/food/snacks/rawcutlet + name = "raw cutlet" + desc = "A thin piece of raw meat." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "rawcutlet" + bitesize = 1 + center_of_mass = list("x"=17, "y"=20) + +/obj/item/weapon/reagent_containers/food/snacks/rawcutlet/New() + ..() + reagents.add_reagent("protein", 1) + +/obj/item/weapon/reagent_containers/food/snacks/cutlet + name = "cutlet" + desc = "A tasty meat slice." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "cutlet" + bitesize = 2 + center_of_mass = list("x"=17, "y"=20) + +/obj/item/weapon/reagent_containers/food/snacks/cutlet/New() + ..() + reagents.add_reagent("protein", 2) + +/obj/item/weapon/reagent_containers/food/snacks/rawmeatball + name = "raw meatball" + desc = "A raw meatball." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "rawmeatball" + bitesize = 2 + center_of_mass = list("x"=16, "y"=15) + +/obj/item/weapon/reagent_containers/food/snacks/rawmeatball/New() + ..() + reagents.add_reagent("protein", 2) + +/obj/item/weapon/reagent_containers/food/snacks/hotdog + name = "hotdog" + desc = "Unrelated to dogs, maybe." + icon_state = "hotdog" + bitesize = 2 + center_of_mass = list("x"=16, "y"=17) + +/obj/item/weapon/reagent_containers/food/snacks/hotdog/New() + ..() + reagents.add_reagent("protein", 6) + +/obj/item/weapon/reagent_containers/food/snacks/hotdog/old + name = "old hotdog" + desc = "Covered in mold. You're not gonna eat that, are you?" + +/obj/item/weapon/reagent_containers/food/snacks/hotdog/old/New() + ..() + reagents.add_reagent("mold", 6) + +/obj/item/weapon/reagent_containers/food/snacks/flatbread + name = "flatbread" + desc = "Bland but filling." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "flatbread" + bitesize = 2 + center_of_mass = list("x"=16, "y"=16) + nutriment_amt = 3 + nutriment_desc = list("bread" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/flatbread/New() + ..() + +// potato + knife = raw sticks +/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(obj/item/weapon/W, mob/user) + if(seed && seed.kitchen_tag && seed.kitchen_tag == "potato" && istype(W,/obj/item/weapon/material/knife)) + new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src)) + user << "You cut the potato." + qdel(src) + else + ..() + +/obj/item/weapon/reagent_containers/food/snacks/rawsticks + name = "raw potato sticks" + desc = "Raw fries, not very tasty." + icon = 'icons/obj/food_ingredients.dmi' + icon_state = "rawsticks" + bitesize = 2 + center_of_mass = list("x"=16, "y"=12) + nutriment_amt = 3 + nutriment_desc = list("raw potato" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/rawsticks/New() + ..() + +/obj/item/weapon/reagent_containers/food/snacks/liquidfood + name = "\improper LiquidFood Ration" + desc = "A prepackaged grey slurry of all the essential nutrients for a spacefarer on the go. Should this be crunchy?" + icon_state = "liquidfood" + trash = /obj/item/trash/liquidfood + filling_color = "#A8A8A8" + center_of_mass = list("x"=16, "y"=15) + nutriment_amt = 20 + nutriment_desc = list("chalk" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/liquidfood/New() + ..() + reagents.add_reagent("iron", 3) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/tastybread + name = "bread tube" + desc = "Bread in a tube. Chewy...and surprisingly tasty." + icon_state = "tastybread" + trash = /obj/item/trash/tastybread + filling_color = "#A66829" + center_of_mass = list("x"=17, "y"=16) + nutriment_amt = 6 + nutriment_desc = list("bread" = 2, "sweetness" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/tastybread/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks + name = "\improper SkrellSnax" + desc = "Cured fungus shipped all the way from Qerr'balak, almost like jerky! Almost." + icon_state = "skrellsnacks" + filling_color = "#A66829" + center_of_mass = list("x"=15, "y"=12) + nutriment_amt = 10 + nutriment_desc = list("mushroom" = 5, "salt" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks/New() + ..() + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/unajerky + name = "Moghes Imported Sissalik Jerky" + icon_state = "unathitinred" + desc = "An incredibly well made jerky, shipped in all the way from Moghes." + trash = /obj/item/trash/unajerky + filling_color = "#631212" + center_of_mass = list("x"=15, "y"=9) + +/obj/item/weapon/reagent_containers/food/snacks/unajerky/New() + ..() + reagents.add_reagent("protein", 8) + reagents.add_reagent("capsaicin", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/croissant + name = "croissant" + desc = "True French cuisine." + filling_color = "#E3D796" + icon_state = "croissant" + nutriment_amt = 6 + nutriment_desc = list("french bread" = 6) + +/obj/item/weapon/reagent_containers/food/snacks/croissant/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatbun + name = "meat bun" + desc = "Chinese street food, in neither China nor a street." + filling_color = "#DEDEAB" + icon_state = "meatbun" + nutriment_amt = 4 + +/obj/item/weapon/reagent_containers/food/snacks/meatbun/New() + ..() + bitesize = 2 + reagents.add_reagent("protein", 4) + +/obj/item/weapon/reagent_containers/food/snacks/sashimi + name = "carp sashimi" + desc = "Expertly prepared. Still toxic." + filling_color = "#FFDEFE" + icon_state = "sashimi" + nutriment_amt = 6 + +/obj/item/weapon/reagent_containers/food/snacks/sashimi/New() + ..() + reagents.add_reagent("protein", 2) + reagents.add_reagent("carpotoxin", 2) + bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/benedict + name = "eggs benedict" + desc = "Hey, there's only one egg in this!" + filling_color = "#FFDF78" + icon_state = "benedict" + nutriment_amt = 4 + +/obj/item/weapon/reagent_containers/food/snacks/benedict/New() + ..() + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/beans + name = "baked beans" + desc = "Musical fruit in a slightly less musical container." + filling_color = "#FC6F28" + icon_state = "beans" + nutriment_amt = 4 + nutriment_desc = list("beans" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/beans/New() + ..() + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/sugarcookie + name = "sugar cookie" + desc = "Just like your little sister used to make." + filling_color = "#DBC94F" + icon_state = "sugarcookie" + nutriment_amt = 5 + nutriment_desc = list("sweetness" = 4, "cookie" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/New() + ..() + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/berrymuffin + name = "berry muffin" + desc = "A delicious and spongy little cake, with berries." + icon_state = "berrymuffin" + filling_color = "#E0CF9B" + center_of_mass = list("x"=17, "y"=4) + nutriment_amt = 6 + nutriment_desc = list("sweetness" = 2, "muffin" = 2, "berries" = 2) + +/obj/item/weapon/reagent_containers/food/snacks/berrymuffin/New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin + name = "booberry muffin" + desc = "My stomach is a graveyard! No living being can quench my bloodthirst!" + icon_state = "berrymuffin" + filling_color = "#799ACE" + center_of_mass = list("x"=17, "y"=4) + nutriment_amt = 6 + nutriment_desc = list("spookiness" = 4, "muffin" = 1, "berries" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin/New() + ..() + reagents.add_reagent("nutriment", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/eggroll + name = "egg roll" + desc = "Free with orders over 10 thalers." + icon_state = "eggroll" + filling_color = "#799ACE" + center_of_mass = list("x"=17, "y"=4) + nutriment_amt = 4 + nutriment_desc = list("egg" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/eggroll/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fruitsalad + name = "fruit salad" + desc = "Your standard fruit salad." + icon_state = "fruitsalad" + filling_color = "#FF3867" + nutriment_amt = 10 + nutriment_desc = list("fruit" = 10) + +/obj/item/weapon/reagent_containers/food/snacks/fruitsalad/New() + ..() + reagents.add_reagent("nutriment", 10) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/eggbowl + name = "egg bowl" + desc = "A bowl of fried rice with egg mixed in." + icon_state = "eggbowl" + trash = /obj/item/trash/snack_bowl + filling_color = "#FFFBDB" + nutriment_amt = 6 + nutriment_desc = list("rice" = 2, "egg" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/eggbowl/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/porkbowl + name = "pork bowl" + desc = "A bowl of fried rice with cuts of meat." + icon_state = "porkbowl" + trash = /obj/item/trash/snack_bowl + filling_color = "#FFFBDB" + nutriment_amt = 6 + nutriment_desc = list("rice" = 2, "meat" = 4) + +/obj/item/weapon/reagent_containers/food/snacks/porkbowl/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/tortilla + name = "tortilla" + desc = "The base for all your burritos." + icon_state = "tortilla" + nutriment_amt = 1 + nutriment_desc = list("bread" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/tortilla/New() + ..() + reagents.add_reagent("nutriment", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/meatburrito + name = "carne asada burrito" + desc = "The best burrito for meat lovers." + icon_state = "carneburrito" + nutriment_amt = 6 + nutriment_desc = list("tortilla" = 3, "meat" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/meatburrito/New() + ..() + reagents.add_reagent("protein", 6) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito + name = "Cheese burrito" + desc = "It's a burrito filled with cheese." + icon_state = "cheeseburrito" + nutriment_amt = 6 + nutriment_desc = list("tortilla" = 3, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito + name = "fuego phoron burrito" + desc = "A super spicy burrito." + icon_state = "fuegoburrito" + nutriment_amt = 6 + nutriment_desc = list("chili peppers" = 5, "tortilla" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("capsaicin", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/nachos + name = "nachos" + desc = "Chips from Old Mexico." + icon_state = "nachos" + nutriment_amt = 2 + nutriment_desc = list("salt" = 1) + +/obj/item/weapon/reagent_containers/food/snacks/nachos/New() + ..() + reagents.add_reagent("nutriment", 1) + bitesize = 1 + +/obj/item/weapon/reagent_containers/food/snacks/cheesenachos + name = "cheesy nachos" + desc = "The delicious combination of nachos and melting cheese." + icon_state = "cheesenachos" + nutriment_amt = 5 + nutriment_desc = list("salt" = 2, "cheese" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cheesenachos/New() + ..() + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("protein", 2) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/cubannachos + name = "cuban nachos" + desc = "That's some dangerously spicy nachos." + icon_state = "cubannachos" + nutriment_amt = 6 + nutriment_desc = list("salt" = 1, "cheese" = 2, "chili peppers" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/cubannachos/New() + ..() + reagents.add_reagent("nutriment", 5) + reagents.add_reagent("capsaicin", 4) + bitesize = 2 + +/obj/item/weapon/reagent_containers/food/snacks/piginblanket + name = "pig in a blanket" + desc = "A sausage embedded in soft, fluffy pastry. Free this pig from its blanket prison by eating it." + icon_state = "piginblanket" + nutriment_amt = 6 + nutriment_desc = list("meat" = 3, "pastry" = 3) + +/obj/item/weapon/reagent_containers/food/snacks/piginblanket/New() + ..() + reagents.add_reagent("nutriment", 6) + reagents.add_reagent("protein", 4) +>>>>>>> 10e7a49... Merge pull request #5626 from lbnesquik/Kates-kitchen-fix:code/modules/food/food/snacks.dm + bitesize = 3 \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/snacks/meat.dm b/code/modules/food/food/snacks/meat.dm similarity index 94% rename from code/modules/reagents/reagent_containers/food/snacks/meat.dm rename to code/modules/food/food/snacks/meat.dm index 9e1dc52536..d6ecacea48 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/meat.dm +++ b/code/modules/food/food/snacks/meat.dm @@ -1,37 +1,37 @@ -/obj/item/weapon/reagent_containers/food/snacks/meat - name = "meat" - desc = "A slab of meat." - icon_state = "meat" - health = 180 - filling_color = "#FF1C1C" - center_of_mass = list("x"=16, "y"=14) - -/obj/item/weapon/reagent_containers/food/snacks/meat/New() - ..() - reagents.add_reagent("protein", 9) - src.bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/meat/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/material/knife)) - new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) - new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) - new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) - user << "You cut the meat into thin strips." - qdel(src) - else - ..() - -/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh - name = "synthetic meat" - desc = "A synthetic slab of flesh." - -// Seperate definitions because some food likes to know if it's human. -// TODO: rewrite kitchen code to check a var on the meat item so we can remove -// all these sybtypes. -/obj/item/weapon/reagent_containers/food/snacks/meat/human -/obj/item/weapon/reagent_containers/food/snacks/meat/monkey - //same as plain meat - -/obj/item/weapon/reagent_containers/food/snacks/meat/corgi - name = "Corgi meat" +/obj/item/weapon/reagent_containers/food/snacks/meat + name = "meat" + desc = "A slab of meat." + icon_state = "meat" + health = 180 + filling_color = "#FF1C1C" + center_of_mass = list("x"=16, "y"=14) + +/obj/item/weapon/reagent_containers/food/snacks/meat/New() + ..() + reagents.add_reagent("protein", 9) + src.bitesize = 3 + +/obj/item/weapon/reagent_containers/food/snacks/meat/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/material/knife)) + new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) + new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) + new /obj/item/weapon/reagent_containers/food/snacks/rawcutlet(src) + user << "You cut the meat into thin strips." + qdel(src) + else + ..() + +/obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh + name = "synthetic meat" + desc = "A synthetic slab of flesh." + +// Seperate definitions because some food likes to know if it's human. +// TODO: rewrite kitchen code to check a var on the meat item so we can remove +// all these sybtypes. +/obj/item/weapon/reagent_containers/food/snacks/meat/human +/obj/item/weapon/reagent_containers/food/snacks/meat/monkey + //same as plain meat + +/obj/item/weapon/reagent_containers/food/snacks/meat/corgi + name = "Corgi meat" desc = "Tastes like... well, you know." \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/food/glass/bottle.dm similarity index 96% rename from code/modules/reagents/reagent_containers/glass/bottle.dm rename to code/modules/food/glass/bottle.dm index 159ac6acf3..fcf618c201 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/food/glass/bottle.dm @@ -1,175 +1,175 @@ - -//Not to be confused with /obj/item/weapon/reagent_containers/food/drinks/bottle - -/obj/item/weapon/reagent_containers/glass/bottle - name = "bottle" - desc = "A small bottle." - icon = 'icons/obj/chemical.dmi' - icon_state = null - item_state = "atoxinbottle" - amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,25,30,60) - flags = 0 - volume = 60 - -/obj/item/weapon/reagent_containers/glass/bottle/on_reagent_change() - update_icon() - -/obj/item/weapon/reagent_containers/glass/bottle/pickup(mob/user) - ..() - update_icon() - -/obj/item/weapon/reagent_containers/glass/bottle/dropped(mob/user) - ..() - update_icon() - -/obj/item/weapon/reagent_containers/glass/bottle/attack_hand() - ..() - update_icon() - -/obj/item/weapon/reagent_containers/glass/bottle/New() - ..() - if(!icon_state) - icon_state = "bottle-[rand(1,4)]" - -/obj/item/weapon/reagent_containers/glass/bottle/update_icon() - overlays.Cut() - - if(reagents.total_volume && (icon_state == "bottle-1" || icon_state == "bottle-2" || icon_state == "bottle-3" || icon_state == "bottle-4")) - var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10") - - var/percent = round((reagents.total_volume / volume) * 100) - switch(percent) - if(0 to 9) filling.icon_state = "[icon_state]--10" - if(10 to 24) filling.icon_state = "[icon_state]-10" - if(25 to 49) filling.icon_state = "[icon_state]-25" - if(50 to 74) filling.icon_state = "[icon_state]-50" - if(75 to 79) filling.icon_state = "[icon_state]-75" - if(80 to 90) filling.icon_state = "[icon_state]-80" - if(91 to INFINITY) filling.icon_state = "[icon_state]-100" - - filling.color = reagents.get_color() - overlays += filling - - if (!is_open_container()) - var/image/lid = image(icon, src, "lid_bottle") - overlays += lid - -/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline - name = "inaprovaline bottle" - desc = "A small bottle. Contains inaprovaline - used to stabilize patients." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - prefill = list("inaprovaline" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/toxin - name = "toxin bottle" - desc = "A small bottle of toxins. Do not drink, it is poisonous." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-3" - prefill = list("toxin" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/cyanide - name = "cyanide bottle" - desc = "A small bottle of cyanide. Bitter almonds?" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-3" - prefill = list("cyanide" = 30) //volume changed to match chloral - -/obj/item/weapon/reagent_containers/glass/bottle/stoxin - name = "soporific bottle" - desc = "A small bottle of soporific. Just the fumes make you sleepy." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-3" - prefill = list("stoxin" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/chloralhydrate - name = "chloral hydrate bottle" - desc = "A small bottle of Choral Hydrate. Mickey's Favorite!" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-3" - prefill = list("chloralhydrate" = 30) //Intentionally low since it is so strong. Still enough to knock someone out. - -/obj/item/weapon/reagent_containers/glass/bottle/antitoxin - name = "dylovene bottle" - desc = "A small bottle of dylovene. Counters poisons, and repairs damage. A wonder drug." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - prefill = list("anti_toxin" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/mutagen - name = "unstable mutagen bottle" - desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-1" - prefill = list("mutagen" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/ammonia - name = "ammonia bottle" - desc = "A small bottle." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-1" - prefill = list("ammonia" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/eznutrient - name = "\improper EZ NUtrient bottle" - desc = "A small bottle." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - prefill = list("eznutrient" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/left4zed - name = "\improper Left-4-Zed bottle" - desc = "A small bottle." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - prefill = list("left4zed" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/robustharvest - name = "\improper Robust Harvest" - desc = "A small bottle." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - prefill = list("robustharvest" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/diethylamine - name = "diethylamine bottle" - desc = "A small bottle." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - prefill = list("diethylamine" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/pacid - name = "polytrinic acid bottle" - desc = "A small bottle. Contains a small amount of Polytrinic Acid" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - prefill = list("pacid" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/adminordrazine - name = "adminordrazine bottle" - desc = "A small bottle. Contains the liquid essence of the gods." - icon = 'icons/obj/drinks.dmi' - icon_state = "holyflask" - prefill = list("adminordrazine" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/capsaicin - name = "capsaicin bottle" - desc = "A small bottle. Contains hot sauce." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - prefill = list("capsaicin" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/frostoil - name = "frost oil bottle" - desc = "A small bottle. Contains cold sauce." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - prefill = list("frostoil" = 60) - -/obj/item/weapon/reagent_containers/glass/bottle/biomass - name = "biomass bottle" - desc = "A bottle of raw biomass! Gross!" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-3" + +//Not to be confused with /obj/item/weapon/reagent_containers/food/drinks/bottle + +/obj/item/weapon/reagent_containers/glass/bottle + name = "bottle" + desc = "A small bottle." + icon = 'icons/obj/chemical.dmi' + icon_state = null + item_state = "atoxinbottle" + amount_per_transfer_from_this = 10 + possible_transfer_amounts = list(5,10,15,25,30,60) + flags = 0 + volume = 60 + +/obj/item/weapon/reagent_containers/glass/bottle/on_reagent_change() + update_icon() + +/obj/item/weapon/reagent_containers/glass/bottle/pickup(mob/user) + ..() + update_icon() + +/obj/item/weapon/reagent_containers/glass/bottle/dropped(mob/user) + ..() + update_icon() + +/obj/item/weapon/reagent_containers/glass/bottle/attack_hand() + ..() + update_icon() + +/obj/item/weapon/reagent_containers/glass/bottle/New() + ..() + if(!icon_state) + icon_state = "bottle-[rand(1,4)]" + +/obj/item/weapon/reagent_containers/glass/bottle/update_icon() + overlays.Cut() + + if(reagents.total_volume && (icon_state == "bottle-1" || icon_state == "bottle-2" || icon_state == "bottle-3" || icon_state == "bottle-4")) + var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10") + + var/percent = round((reagents.total_volume / volume) * 100) + switch(percent) + if(0 to 9) filling.icon_state = "[icon_state]--10" + if(10 to 24) filling.icon_state = "[icon_state]-10" + if(25 to 49) filling.icon_state = "[icon_state]-25" + if(50 to 74) filling.icon_state = "[icon_state]-50" + if(75 to 79) filling.icon_state = "[icon_state]-75" + if(80 to 90) filling.icon_state = "[icon_state]-80" + if(91 to INFINITY) filling.icon_state = "[icon_state]-100" + + filling.color = reagents.get_color() + overlays += filling + + if (!is_open_container()) + var/image/lid = image(icon, src, "lid_bottle") + overlays += lid + +/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline + name = "inaprovaline bottle" + desc = "A small bottle. Contains inaprovaline - used to stabilize patients." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + prefill = list("inaprovaline" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/toxin + name = "toxin bottle" + desc = "A small bottle of toxins. Do not drink, it is poisonous." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-3" + prefill = list("toxin" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/cyanide + name = "cyanide bottle" + desc = "A small bottle of cyanide. Bitter almonds?" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-3" + prefill = list("cyanide" = 30) //volume changed to match chloral + +/obj/item/weapon/reagent_containers/glass/bottle/stoxin + name = "soporific bottle" + desc = "A small bottle of soporific. Just the fumes make you sleepy." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-3" + prefill = list("stoxin" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/chloralhydrate + name = "chloral hydrate bottle" + desc = "A small bottle of Choral Hydrate. Mickey's Favorite!" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-3" + prefill = list("chloralhydrate" = 30) //Intentionally low since it is so strong. Still enough to knock someone out. + +/obj/item/weapon/reagent_containers/glass/bottle/antitoxin + name = "dylovene bottle" + desc = "A small bottle of dylovene. Counters poisons, and repairs damage. A wonder drug." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + prefill = list("anti_toxin" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/mutagen + name = "unstable mutagen bottle" + desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-1" + prefill = list("mutagen" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/ammonia + name = "ammonia bottle" + desc = "A small bottle." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-1" + prefill = list("ammonia" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/eznutrient + name = "\improper EZ NUtrient bottle" + desc = "A small bottle." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + prefill = list("eznutrient" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/left4zed + name = "\improper Left-4-Zed bottle" + desc = "A small bottle." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + prefill = list("left4zed" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/robustharvest + name = "\improper Robust Harvest" + desc = "A small bottle." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + prefill = list("robustharvest" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/diethylamine + name = "diethylamine bottle" + desc = "A small bottle." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + prefill = list("diethylamine" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/pacid + name = "polytrinic acid bottle" + desc = "A small bottle. Contains a small amount of Polytrinic Acid" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + prefill = list("pacid" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/adminordrazine + name = "adminordrazine bottle" + desc = "A small bottle. Contains the liquid essence of the gods." + icon = 'icons/obj/drinks.dmi' + icon_state = "holyflask" + prefill = list("adminordrazine" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/capsaicin + name = "capsaicin bottle" + desc = "A small bottle. Contains hot sauce." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + prefill = list("capsaicin" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/frostoil + name = "frost oil bottle" + desc = "A small bottle. Contains cold sauce." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + prefill = list("frostoil" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/biomass + name = "biomass bottle" + desc = "A bottle of raw biomass! Gross!" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-3" prefill = list("biomass" = 60) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/glass/bottle/robot.dm b/code/modules/food/glass/bottle/robot.dm similarity index 97% rename from code/modules/reagents/reagent_containers/glass/bottle/robot.dm rename to code/modules/food/glass/bottle/robot.dm index fec991ab3f..78638235a2 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle/robot.dm +++ b/code/modules/food/glass/bottle/robot.dm @@ -1,25 +1,25 @@ - -/obj/item/weapon/reagent_containers/glass/bottle/robot - amount_per_transfer_from_this = 10 - possible_transfer_amounts = list(5,10,15,25,30,50,100) - flags = OPENCONTAINER - volume = 60 - var/reagent = "" - - -/obj/item/weapon/reagent_containers/glass/bottle/robot/inaprovaline - name = "internal inaprovaline bottle" - desc = "A small bottle. Contains inaprovaline - used to stabilize patients." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - reagent = "inaprovaline" - prefill = list("inaprovaline" = 60) - - -/obj/item/weapon/reagent_containers/glass/bottle/robot/antitoxin - name = "internal anti-toxin bottle" - desc = "A small bottle of Anti-toxins. Counters poisons, and repairs damage, a wonder drug." - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle-4" - reagent = "anti_toxin" - prefill = list("anti_toxin" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/robot + amount_per_transfer_from_this = 10 + possible_transfer_amounts = list(5,10,15,25,30,50,100) + flags = OPENCONTAINER + volume = 60 + var/reagent = "" + + +/obj/item/weapon/reagent_containers/glass/bottle/robot/inaprovaline + name = "internal inaprovaline bottle" + desc = "A small bottle. Contains inaprovaline - used to stabilize patients." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + reagent = "inaprovaline" + prefill = list("inaprovaline" = 60) + + +/obj/item/weapon/reagent_containers/glass/bottle/robot/antitoxin + name = "internal anti-toxin bottle" + desc = "A small bottle of Anti-toxins. Counters poisons, and repairs damage, a wonder drug." + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-4" + reagent = "anti_toxin" + prefill = list("anti_toxin" = 60) diff --git a/code/game/machinery/kitchen/cooking_machines/_cooker.dm b/code/modules/food/kitchen/cooking_machines/_cooker.dm similarity index 100% rename from code/game/machinery/kitchen/cooking_machines/_cooker.dm rename to code/modules/food/kitchen/cooking_machines/_cooker.dm diff --git a/code/game/machinery/kitchen/cooking_machines/_cooker_output.dm b/code/modules/food/kitchen/cooking_machines/_cooker_output.dm similarity index 100% rename from code/game/machinery/kitchen/cooking_machines/_cooker_output.dm rename to code/modules/food/kitchen/cooking_machines/_cooker_output.dm diff --git a/code/game/machinery/kitchen/cooking_machines/candy.dm b/code/modules/food/kitchen/cooking_machines/candy.dm similarity index 100% rename from code/game/machinery/kitchen/cooking_machines/candy.dm rename to code/modules/food/kitchen/cooking_machines/candy.dm diff --git a/code/game/machinery/kitchen/cooking_machines/cereal.dm b/code/modules/food/kitchen/cooking_machines/cereal.dm similarity index 100% rename from code/game/machinery/kitchen/cooking_machines/cereal.dm rename to code/modules/food/kitchen/cooking_machines/cereal.dm diff --git a/code/game/machinery/kitchen/cooking_machines/fryer.dm b/code/modules/food/kitchen/cooking_machines/fryer.dm similarity index 100% rename from code/game/machinery/kitchen/cooking_machines/fryer.dm rename to code/modules/food/kitchen/cooking_machines/fryer.dm diff --git a/code/game/machinery/kitchen/cooking_machines/grill.dm b/code/modules/food/kitchen/cooking_machines/grill.dm similarity index 100% rename from code/game/machinery/kitchen/cooking_machines/grill.dm rename to code/modules/food/kitchen/cooking_machines/grill.dm diff --git a/code/game/machinery/kitchen/cooking_machines/oven.dm b/code/modules/food/kitchen/cooking_machines/oven.dm similarity index 100% rename from code/game/machinery/kitchen/cooking_machines/oven.dm rename to code/modules/food/kitchen/cooking_machines/oven.dm diff --git a/code/game/machinery/kitchen/gibber.dm b/code/modules/food/kitchen/gibber.dm similarity index 96% rename from code/game/machinery/kitchen/gibber.dm rename to code/modules/food/kitchen/gibber.dm index d695253aa9..4799002cb5 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/modules/food/kitchen/gibber.dm @@ -1,236 +1,236 @@ - -/obj/machinery/gibber - name = "gibber" - desc = "The name isn't descriptive enough?" - icon = 'icons/obj/kitchen.dmi' - icon_state = "grinder" - density = 1 - anchored = 1 - req_access = list(access_kitchen,access_morgue) - - var/operating = 0 //Is it on? - var/dirty = 0 // Does it need cleaning? - var/mob/living/occupant // Mob who has been put inside - var/gib_time = 40 // Time from starting until meat appears - var/gib_throw_dir = WEST // Direction to spit meat and gibs in. - - use_power = 1 - idle_power_usage = 2 - active_power_usage = 500 - -//auto-gibs anything that bumps into it -/obj/machinery/gibber/autogibber - var/turf/input_plate - -/obj/machinery/gibber/autogibber/New() - ..() - spawn(5) - for(var/i in cardinal) - var/obj/machinery/mineral/input/input_obj = locate( /obj/machinery/mineral/input, get_step(src.loc, i) ) - if(input_obj) - if(isturf(input_obj.loc)) - input_plate = input_obj.loc - gib_throw_dir = i - qdel(input_obj) - break - - if(!input_plate) - log_misc("a [src] didn't find an input plate.") - return - -/obj/machinery/gibber/autogibber/Bumped(var/atom/A) - if(!input_plate) return - - if(ismob(A)) - var/mob/M = A - - if(M.loc == input_plate - ) - M.loc = src - M.gib() - - -/obj/machinery/gibber/New() - ..() - src.overlays += image('icons/obj/kitchen.dmi', "grjam") - -/obj/machinery/gibber/update_icon() - overlays.Cut() - if (dirty) - src.overlays += image('icons/obj/kitchen.dmi', "grbloody") - if(stat & (NOPOWER|BROKEN)) - return - if (!occupant) - src.overlays += image('icons/obj/kitchen.dmi', "grjam") - else if (operating) - src.overlays += image('icons/obj/kitchen.dmi', "gruse") - else - src.overlays += image('icons/obj/kitchen.dmi', "gridle") - -/obj/machinery/gibber/relaymove(mob/user as mob) - src.go_out() - return - -/obj/machinery/gibber/attack_hand(mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - if(operating) - user << "The gibber is locked and running, wait for it to finish." - return - else - src.startgibbing(user) - -/obj/machinery/gibber/examine() - ..() - usr << "The safety guard is [emagged ? "disabled" : "enabled"]." - -/obj/machinery/gibber/emag_act(var/remaining_charges, var/mob/user) - emagged = !emagged - user << "You [emagged ? "disable" : "enable"] the gibber safety guard." - return 1 - -/obj/machinery/gibber/attackby(var/obj/item/W, var/mob/user) - var/obj/item/weapon/grab/G = W - - if(default_unfasten_wrench(user, W, 40)) - return - - if(!istype(G)) - return ..() - - if(G.state < 2) - user << "You need a better grip to do that!" - return - - move_into_gibber(user,G.affecting) - // Grab() process should clean up the grab item, no need to del it. - -/obj/machinery/gibber/MouseDrop_T(mob/target, mob/user) - if(user.stat || user.restrained()) - return - move_into_gibber(user,target) - -/obj/machinery/gibber/proc/move_into_gibber(var/mob/user,var/mob/living/victim) - - if(src.occupant) - user << "The gibber is full, empty it first!" - return - - if(operating) - user << "The gibber is locked and running, wait for it to finish." - return - - if(!(istype(victim, /mob/living/carbon)) && !(istype(victim, /mob/living/simple_animal)) ) - user << "This is not suitable for the gibber!" - return - - if(istype(victim,/mob/living/carbon/human) && !emagged) - user << "The gibber safety guard is engaged!" - return - - - if(victim.abiotic(1)) - user << "Subject may not have abiotic items on." - return - - user.visible_message("[user] starts to put [victim] into the gibber!") - src.add_fingerprint(user) - if(do_after(user, 30) && victim.Adjacent(src) && user.Adjacent(src) && victim.Adjacent(user) && !occupant) - user.visible_message("[user] stuffs [victim] into the gibber!") - if(victim.client) - victim.client.perspective = EYE_PERSPECTIVE - victim.client.eye = src - victim.loc = src - src.occupant = victim - update_icon() - -/obj/machinery/gibber/verb/eject() - set category = "Object" - set name = "Empty Gibber" - set src in oview(1) - - if (usr.stat != 0) - return - src.go_out() - add_fingerprint(usr) - return - -/obj/machinery/gibber/proc/go_out() - if(operating || !src.occupant) - return - for(var/obj/O in src) - O.loc = src.loc - if (src.occupant.client) - src.occupant.client.eye = src.occupant.client.mob - src.occupant.client.perspective = MOB_PERSPECTIVE - src.occupant.loc = src.loc - src.occupant = null - update_icon() - return - - -/obj/machinery/gibber/proc/startgibbing(mob/user as mob) - if(src.operating) - return - if(!src.occupant) - visible_message("You hear a loud metallic grinding sound.") - return - - use_power(1000) - visible_message("You hear a loud [occupant.isSynthetic() ? "metallic" : "squelchy"] grinding sound.") - src.operating = 1 - update_icon() - - var/slab_name = occupant.name - var/slab_count = 3 - var/slab_type = /obj/item/weapon/reagent_containers/food/snacks/meat - var/slab_nutrition = src.occupant.nutrition / 15 - - // Some mobs have specific meat item types. - if(istype(src.occupant,/mob/living/simple_animal)) - var/mob/living/simple_animal/critter = src.occupant - if(critter.meat_amount) - slab_count = critter.meat_amount - if(critter.meat_type) - slab_type = critter.meat_type - else if(istype(src.occupant,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = occupant - slab_name = src.occupant.real_name - slab_type = H.isSynthetic() ? /obj/item/stack/material/steel : H.species.meat_type - - // Small mobs don't give as much nutrition. - if(issmall(src.occupant)) - slab_nutrition *= 0.5 - slab_nutrition /= slab_count - - for(var/i=1 to slab_count) - var/obj/item/weapon/reagent_containers/food/snacks/meat/new_meat = new slab_type(src, rand(3,8)) - if(istype(new_meat)) - new_meat.name = "[slab_name] [new_meat.name]" - new_meat.reagents.add_reagent("nutriment",slab_nutrition) - if(src.occupant.reagents) - src.occupant.reagents.trans_to_obj(new_meat, round(occupant.reagents.total_volume/slab_count,1)) - - add_attack_logs(user,occupant,"Used [src] to gib") - - src.occupant.ghostize() - - spawn(gib_time) - - src.operating = 0 - src.occupant.gib() - qdel(src.occupant) - - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - operating = 0 - for (var/obj/item/thing in contents) - // There's a chance that the gibber will fail to destroy some evidence. - if(istype(thing,/obj/item/organ) && prob(80)) - qdel(thing) - continue - thing.forceMove(get_turf(thing)) // Drop it onto the turf for throwing. - thing.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(0,3),emagged ? 100 : 50) // Being pelted with bits of meat and bone would hurt. - - update_icon() - - + +/obj/machinery/gibber + name = "gibber" + desc = "The name isn't descriptive enough?" + icon = 'icons/obj/kitchen.dmi' + icon_state = "grinder" + density = 1 + anchored = 1 + req_access = list(access_kitchen,access_morgue) + + var/operating = 0 //Is it on? + var/dirty = 0 // Does it need cleaning? + var/mob/living/occupant // Mob who has been put inside + var/gib_time = 40 // Time from starting until meat appears + var/gib_throw_dir = WEST // Direction to spit meat and gibs in. + + use_power = 1 + idle_power_usage = 2 + active_power_usage = 500 + +//auto-gibs anything that bumps into it +/obj/machinery/gibber/autogibber + var/turf/input_plate + +/obj/machinery/gibber/autogibber/New() + ..() + spawn(5) + for(var/i in cardinal) + var/obj/machinery/mineral/input/input_obj = locate( /obj/machinery/mineral/input, get_step(src.loc, i) ) + if(input_obj) + if(isturf(input_obj.loc)) + input_plate = input_obj.loc + gib_throw_dir = i + qdel(input_obj) + break + + if(!input_plate) + log_misc("a [src] didn't find an input plate.") + return + +/obj/machinery/gibber/autogibber/Bumped(var/atom/A) + if(!input_plate) return + + if(ismob(A)) + var/mob/M = A + + if(M.loc == input_plate + ) + M.loc = src + M.gib() + + +/obj/machinery/gibber/New() + ..() + src.overlays += image('icons/obj/kitchen.dmi', "grjam") + +/obj/machinery/gibber/update_icon() + overlays.Cut() + if (dirty) + src.overlays += image('icons/obj/kitchen.dmi', "grbloody") + if(stat & (NOPOWER|BROKEN)) + return + if (!occupant) + src.overlays += image('icons/obj/kitchen.dmi', "grjam") + else if (operating) + src.overlays += image('icons/obj/kitchen.dmi', "gruse") + else + src.overlays += image('icons/obj/kitchen.dmi', "gridle") + +/obj/machinery/gibber/relaymove(mob/user as mob) + src.go_out() + return + +/obj/machinery/gibber/attack_hand(mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return + if(operating) + user << "The gibber is locked and running, wait for it to finish." + return + else + src.startgibbing(user) + +/obj/machinery/gibber/examine() + ..() + usr << "The safety guard is [emagged ? "disabled" : "enabled"]." + +/obj/machinery/gibber/emag_act(var/remaining_charges, var/mob/user) + emagged = !emagged + user << "You [emagged ? "disable" : "enable"] the gibber safety guard." + return 1 + +/obj/machinery/gibber/attackby(var/obj/item/W, var/mob/user) + var/obj/item/weapon/grab/G = W + + if(default_unfasten_wrench(user, W, 40)) + return + + if(!istype(G)) + return ..() + + if(G.state < 2) + user << "You need a better grip to do that!" + return + + move_into_gibber(user,G.affecting) + // Grab() process should clean up the grab item, no need to del it. + +/obj/machinery/gibber/MouseDrop_T(mob/target, mob/user) + if(user.stat || user.restrained()) + return + move_into_gibber(user,target) + +/obj/machinery/gibber/proc/move_into_gibber(var/mob/user,var/mob/living/victim) + + if(src.occupant) + user << "The gibber is full, empty it first!" + return + + if(operating) + user << "The gibber is locked and running, wait for it to finish." + return + + if(!(istype(victim, /mob/living/carbon)) && !(istype(victim, /mob/living/simple_animal)) ) + user << "This is not suitable for the gibber!" + return + + if(istype(victim,/mob/living/carbon/human) && !emagged) + user << "The gibber safety guard is engaged!" + return + + + if(victim.abiotic(1)) + user << "Subject may not have abiotic items on." + return + + user.visible_message("[user] starts to put [victim] into the gibber!") + src.add_fingerprint(user) + if(do_after(user, 30) && victim.Adjacent(src) && user.Adjacent(src) && victim.Adjacent(user) && !occupant) + user.visible_message("[user] stuffs [victim] into the gibber!") + if(victim.client) + victim.client.perspective = EYE_PERSPECTIVE + victim.client.eye = src + victim.loc = src + src.occupant = victim + update_icon() + +/obj/machinery/gibber/verb/eject() + set category = "Object" + set name = "Empty Gibber" + set src in oview(1) + + if (usr.stat != 0) + return + src.go_out() + add_fingerprint(usr) + return + +/obj/machinery/gibber/proc/go_out() + if(operating || !src.occupant) + return + for(var/obj/O in src) + O.loc = src.loc + if (src.occupant.client) + src.occupant.client.eye = src.occupant.client.mob + src.occupant.client.perspective = MOB_PERSPECTIVE + src.occupant.loc = src.loc + src.occupant = null + update_icon() + return + + +/obj/machinery/gibber/proc/startgibbing(mob/user as mob) + if(src.operating) + return + if(!src.occupant) + visible_message("You hear a loud metallic grinding sound.") + return + + use_power(1000) + visible_message("You hear a loud [occupant.isSynthetic() ? "metallic" : "squelchy"] grinding sound.") + src.operating = 1 + update_icon() + + var/slab_name = occupant.name + var/slab_count = 3 + var/slab_type = /obj/item/weapon/reagent_containers/food/snacks/meat + var/slab_nutrition = src.occupant.nutrition / 15 + + // Some mobs have specific meat item types. + if(istype(src.occupant,/mob/living/simple_animal)) + var/mob/living/simple_animal/critter = src.occupant + if(critter.meat_amount) + slab_count = critter.meat_amount + if(critter.meat_type) + slab_type = critter.meat_type + else if(istype(src.occupant,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = occupant + slab_name = src.occupant.real_name + slab_type = H.isSynthetic() ? /obj/item/stack/material/steel : H.species.meat_type + + // Small mobs don't give as much nutrition. + if(issmall(src.occupant)) + slab_nutrition *= 0.5 + slab_nutrition /= slab_count + + for(var/i=1 to slab_count) + var/obj/item/weapon/reagent_containers/food/snacks/meat/new_meat = new slab_type(src, rand(3,8)) + if(istype(new_meat)) + new_meat.name = "[slab_name] [new_meat.name]" + new_meat.reagents.add_reagent("nutriment",slab_nutrition) + if(src.occupant.reagents) + src.occupant.reagents.trans_to_obj(new_meat, round(occupant.reagents.total_volume/slab_count,1)) + + add_attack_logs(user,occupant,"Used [src] to gib") + + src.occupant.ghostize() + + spawn(gib_time) + + src.operating = 0 + src.occupant.gib() + qdel(src.occupant) + + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) + operating = 0 + for (var/obj/item/thing in contents) + // There's a chance that the gibber will fail to destroy some evidence. + if(istype(thing,/obj/item/organ) && prob(80)) + qdel(thing) + continue + thing.forceMove(get_turf(thing)) // Drop it onto the turf for throwing. + thing.throw_at(get_edge_target_turf(src,gib_throw_dir),rand(0,3),emagged ? 100 : 50) // Being pelted with bits of meat and bone would hurt. + + update_icon() + + diff --git a/code/game/machinery/kitchen/icecream.dm b/code/modules/food/kitchen/icecream.dm similarity index 100% rename from code/game/machinery/kitchen/icecream.dm rename to code/modules/food/kitchen/icecream.dm diff --git a/code/game/machinery/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm similarity index 97% rename from code/game/machinery/kitchen/microwave.dm rename to code/modules/food/kitchen/microwave.dm index 1ece9225b1..7357dd5568 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -1,392 +1,392 @@ -/obj/machinery/microwave - name = "microwave" - icon = 'icons/obj/kitchen.dmi' - icon_state = "mw" - density = 1 - anchored = 1 - use_power = 1 - idle_power_usage = 5 - active_power_usage = 100 - flags = OPENCONTAINER | NOREACT - circuit = /obj/item/weapon/circuitboard/microwave - var/operating = 0 // Is it on? - var/dirty = 0 // = {0..100} Does it need cleaning? - var/broken = 0 // ={0,1,2} How broken is it??? - var/global/list/datum/recipe/available_recipes // List of the recipes you can use - var/global/list/acceptable_items // List of the items you can put in - var/global/list/acceptable_reagents // List of the reagents you can put in - var/global/max_n_of_items = 0 - - -// see code/modules/food/recipes_microwave.dm for recipes - -/******************* -* Initialising -********************/ - -/obj/machinery/microwave/New() - ..() - reagents = new/datum/reagents(100) - reagents.my_atom = src - - component_parts = list() - component_parts += new /obj/item/weapon/stock_parts/console_screen(src) - component_parts += new /obj/item/weapon/stock_parts/motor(src) - component_parts += new /obj/item/weapon/stock_parts/capacitor(src) - - if (!available_recipes) - available_recipes = new - for (var/type in (typesof(/datum/recipe)-/datum/recipe)) - available_recipes+= new type - acceptable_items = new - acceptable_reagents = new - for (var/datum/recipe/recipe in available_recipes) - for (var/item in recipe.items) - acceptable_items |= item - for (var/reagent in recipe.reagents) - acceptable_reagents |= reagent - if (recipe.items) - max_n_of_items = max(max_n_of_items,recipe.items.len) - // This will do until I can think of a fun recipe to use dionaea in - - // will also allow anything using the holder item to be microwaved into - // impure carbon. ~Z - acceptable_items |= /obj/item/weapon/holder - acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown - - RefreshParts() - -/******************* -* Item Adding -********************/ - -/obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(src.broken > 0) - if(src.broken == 2 && O.is_screwdriver()) // If it's broken and they're using a screwdriver - user.visible_message( \ - "\The [user] starts to fix part of the microwave.", \ - "You start to fix part of the microwave." \ - ) - playsound(src, O.usesound, 50, 1) - if (do_after(user,20 * O.toolspeed)) - user.visible_message( \ - "\The [user] fixes part of the microwave.", \ - "You have fixed part of the microwave." \ - ) - src.broken = 1 // Fix it a bit - else if(src.broken == 1 && O.is_wrench()) // If it's broken and they're doing the wrench - user.visible_message( \ - "\The [user] starts to fix part of the microwave.", \ - "You start to fix part of the microwave." \ - ) - if (do_after(user,20 * O.toolspeed)) - user.visible_message( \ - "\The [user] fixes the microwave.", \ - "You have fixed the microwave." \ - ) - src.icon_state = "mw" - src.broken = 0 // Fix it! - src.dirty = 0 // just to be sure - src.flags = OPENCONTAINER | NOREACT - else - to_chat(user, "It's broken!") - return 1 - else if(default_deconstruction_screwdriver(user, O)) - return - else if(default_deconstruction_crowbar(user, O)) - return - else if(default_unfasten_wrench(user, O, 10)) - return - - else if(src.dirty==100) // The microwave is all dirty so can't be used! - if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them - user.visible_message( \ - "\The [user] starts to clean the microwave.", \ - "You start to clean the microwave." \ - ) - if (do_after(user,20)) - user.visible_message( \ - "\The [user] has cleaned the microwave.", \ - "You have cleaned the microwave." \ - ) - src.dirty = 0 // It's clean! - src.broken = 0 // just to be sure - src.icon_state = "mw" - src.flags = OPENCONTAINER | NOREACT - else //Otherwise bad luck!! - to_chat(user, "It's dirty!") - return 1 - else if(is_type_in_list(O,acceptable_items)) - if (contents.len>=(max_n_of_items + component_parts.len + 1)) //Adds component_parts to the maximum number of items. The 1 is from the circuit - to_chat(user, "This [src] is full of ingredients, you cannot put more.") - return 1 - if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it - var/obj/item/stack/S = O - new O.type (src) - S.use(1) - user.visible_message( \ - "\The [user] has added one of [O] to \the [src].", \ - "You add one of [O] to \the [src].") - return - else - // user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete - user.drop_item() - O.loc = src - user.visible_message( \ - "\The [user] has added \the [O] to \the [src].", \ - "You add \the [O] to \the [src].") - return - else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ - istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ - istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ - ) - if (!O.reagents) - return 1 - for (var/datum/reagent/R in O.reagents.reagent_list) - if (!(R.id in acceptable_reagents)) - to_chat(user, "Your [O] contains components unsuitable for cookery.") - return 1 - return - else if(istype(O,/obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = O - to_chat(user, "This is ridiculous. You can not fit \the [G.affecting] in this [src].") - return 1 - else - to_chat(user, "You have no idea what you can cook with this [O].") - ..() - src.updateUsrDialog() - -/obj/machinery/microwave/attack_ai(mob/user as mob) - if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) - attack_hand(user) - -/obj/machinery/microwave/attack_hand(mob/user as mob) - user.set_machine(src) - interact(user) - -/******************* -* Microwave Menu -********************/ - -/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu - var/dat = "" - if(src.broken > 0) - dat = {"Bzzzzttttt"} - else if(src.operating) - dat = {"Microwaving in progress!
Please wait...!
"} - else if(src.dirty==100) - dat = {"This microwave is dirty!
Please clean it before use!
"} - else - var/list/items_counts = new - var/list/items_measures = new - var/list/items_measures_p = new - for (var/obj/O in ((contents - component_parts) - circuit)) - var/display_name = O.name - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) - items_measures[display_name] = "egg" - items_measures_p[display_name] = "eggs" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) - items_measures[display_name] = "tofu chunk" - items_measures_p[display_name] = "tofu chunks" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat - items_measures[display_name] = "slab of meat" - items_measures_p[display_name] = "slabs of meat" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) - display_name = "Turnovers" - items_measures[display_name] = "turnover" - items_measures_p[display_name] = "turnovers" - if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) - items_measures[display_name] = "fillet of meat" - items_measures_p[display_name] = "fillets of meat" - items_counts[display_name]++ - for (var/O in items_counts) - var/N = items_counts[O] - if (!(O in items_measures)) - dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} - else - if (N==1) - dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} - else - dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} - - for (var/datum/reagent/R in reagents.reagent_list) - var/display_name = R.name - if (R.id == "capsaicin") - display_name = "Hotsauce" - if (R.id == "frostoil") - display_name = "Coldsauce" - dat += {"[display_name]: [R.volume] unit\s
"} - - if (items_counts.len==0 && reagents.reagent_list.len==0) - dat = {"The microwave is empty
"} - else - dat = {"Ingredients:
[dat]"} - dat += {"

\ -Turn on!
\ -
Eject ingredients!
\ -"} - - to_chat(user, browse("Microwave Controls[dat]", "window=microwave")) - onclose(user, "microwave") - return - - - -/*********************************** -* Microwave Menu Handling/Cooking -************************************/ - -/obj/machinery/microwave/proc/cook() - if(stat & (NOPOWER|BROKEN)) - return - start() - if (reagents.total_volume==0 && !(locate(/obj) in ((contents - component_parts) - circuit))) //dry run - if (!wzhzhzh(10)) - abort() - return - stop() - return - - var/datum/recipe/recipe = select_recipe(available_recipes,src) - var/obj/cooked - if (!recipe) - dirty += 1 - if (prob(max(10,dirty*5))) - if (!wzhzhzh(4)) - abort() - return - muck_start() - wzhzhzh(4) - muck_finish() - cooked = fail() - cooked.loc = src.loc - return - else if (has_extra_item()) - if (!wzhzhzh(4)) - abort() - return - broke() - cooked = fail() - cooked.loc = src.loc - return - else - if (!wzhzhzh(10)) - abort() - return - stop() - cooked = fail() - cooked.loc = src.loc - return - else - var/halftime = round(recipe.time/10/2) - if (!wzhzhzh(halftime)) - abort() - return - if (!wzhzhzh(halftime)) - abort() - cooked = fail() - cooked.loc = src.loc - return - cooked = recipe.make_food(src) - stop() - if(cooked) - cooked.loc = src.loc - return - -/obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z - for (var/i=1 to seconds) - if (stat & (NOPOWER|BROKEN)) - return 0 - use_power(500) - sleep(10) - return 1 - -/obj/machinery/microwave/proc/has_extra_item() - for (var/obj/O in ((contents - component_parts) - circuit)) - if ( \ - !istype(O,/obj/item/weapon/reagent_containers/food) && \ - !istype(O, /obj/item/weapon/grown) \ - ) - return 1 - return 0 - -/obj/machinery/microwave/proc/start() - src.visible_message("The microwave turns on.", "You hear a microwave.") - src.operating = 1 - src.icon_state = "mw1" - src.updateUsrDialog() - -/obj/machinery/microwave/proc/abort() - src.operating = 0 // Turn it off again aferwards - src.icon_state = "mw" - src.updateUsrDialog() - -/obj/machinery/microwave/proc/stop() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - src.operating = 0 // Turn it off again aferwards - src.icon_state = "mw" - src.updateUsrDialog() - -/obj/machinery/microwave/proc/dispose() - for (var/obj/O in ((contents-component_parts)-circuit)) - O.loc = src.loc - if (src.reagents.total_volume) - src.dirty++ - src.reagents.clear_reagents() - usr << "You dispose of the microwave contents." - src.updateUsrDialog() - -/obj/machinery/microwave/proc/muck_start() - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound - src.icon_state = "mwbloody1" // Make it look dirty!! - -/obj/machinery/microwave/proc/muck_finish() - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - src.visible_message("The microwave gets covered in muck!") - src.dirty = 100 // Make it dirty so it can't be used util cleaned - src.flags = null //So you can't add condiments - src.icon_state = "mwbloody" // Make it look dirty too - src.operating = 0 // Turn it off again aferwards - src.updateUsrDialog() - -/obj/machinery/microwave/proc/broke() - var/datum/effect/effect/system/spark_spread/s = new - s.set_up(2, 1, src) - s.start() - src.icon_state = "mwb" // Make it look all busted up and shit - src.visible_message("The microwave breaks!") //Let them know they're stupid - src.broken = 2 // Make it broken so it can't be used util fixed - src.flags = null //So you can't add condiments - src.operating = 0 // Turn it off again aferwards - src.updateUsrDialog() - -/obj/machinery/microwave/proc/fail() - var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) - var/amount = 0 - for (var/obj/O in (((contents - ffuu) - component_parts) - circuit)) - amount++ - if (O.reagents) - var/id = O.reagents.get_master_reagent_id() - if (id) - amount+=O.reagents.get_reagent_amount(id) - qdel(O) - src.reagents.clear_reagents() - ffuu.reagents.add_reagent("carbon", amount) - ffuu.reagents.add_reagent("toxin", amount/10) - return ffuu - -/obj/machinery/microwave/Topic(href, href_list) - if(..()) - return - - usr.set_machine(src) - if(src.operating) - src.updateUsrDialog() - return - - switch(href_list["action"]) - if ("cook") - cook() - - if ("dispose") - dispose() - return +/obj/machinery/microwave + name = "microwave" + icon = 'icons/obj/kitchen.dmi' + icon_state = "mw" + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 5 + active_power_usage = 100 + flags = OPENCONTAINER | NOREACT + circuit = /obj/item/weapon/circuitboard/microwave + var/operating = 0 // Is it on? + var/dirty = 0 // = {0..100} Does it need cleaning? + var/broken = 0 // ={0,1,2} How broken is it??? + var/global/list/datum/recipe/available_recipes // List of the recipes you can use + var/global/list/acceptable_items // List of the items you can put in + var/global/list/acceptable_reagents // List of the reagents you can put in + var/global/max_n_of_items = 0 + + +// see code/modules/food/recipes_microwave.dm for recipes + +/******************* +* Initialising +********************/ + +/obj/machinery/microwave/New() + ..() + reagents = new/datum/reagents(100) + reagents.my_atom = src + + component_parts = list() + component_parts += new /obj/item/weapon/stock_parts/console_screen(src) + component_parts += new /obj/item/weapon/stock_parts/motor(src) + component_parts += new /obj/item/weapon/stock_parts/capacitor(src) + + if (!available_recipes) + available_recipes = new + for (var/type in (typesof(/datum/recipe)-/datum/recipe)) + available_recipes+= new type + acceptable_items = new + acceptable_reagents = new + for (var/datum/recipe/recipe in available_recipes) + for (var/item in recipe.items) + acceptable_items |= item + for (var/reagent in recipe.reagents) + acceptable_reagents |= reagent + if (recipe.items) + max_n_of_items = max(max_n_of_items,recipe.items.len) + // This will do until I can think of a fun recipe to use dionaea in - + // will also allow anything using the holder item to be microwaved into + // impure carbon. ~Z + acceptable_items |= /obj/item/weapon/holder + acceptable_items |= /obj/item/weapon/reagent_containers/food/snacks/grown + + RefreshParts() + +/******************* +* Item Adding +********************/ + +/obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(src.broken > 0) + if(src.broken == 2 && O.is_screwdriver()) // If it's broken and they're using a screwdriver + user.visible_message( \ + "\The [user] starts to fix part of the microwave.", \ + "You start to fix part of the microwave." \ + ) + playsound(src, O.usesound, 50, 1) + if (do_after(user,20 * O.toolspeed)) + user.visible_message( \ + "\The [user] fixes part of the microwave.", \ + "You have fixed part of the microwave." \ + ) + src.broken = 1 // Fix it a bit + else if(src.broken == 1 && O.is_wrench()) // If it's broken and they're doing the wrench + user.visible_message( \ + "\The [user] starts to fix part of the microwave.", \ + "You start to fix part of the microwave." \ + ) + if (do_after(user,20 * O.toolspeed)) + user.visible_message( \ + "\The [user] fixes the microwave.", \ + "You have fixed the microwave." \ + ) + src.icon_state = "mw" + src.broken = 0 // Fix it! + src.dirty = 0 // just to be sure + src.flags = OPENCONTAINER | NOREACT + else + to_chat(user, "It's broken!") + return 1 + else if(default_deconstruction_screwdriver(user, O)) + return + else if(default_deconstruction_crowbar(user, O)) + return + else if(default_unfasten_wrench(user, O, 10)) + return + + else if(src.dirty==100) // The microwave is all dirty so can't be used! + if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap)) // If they're trying to clean it then let them + user.visible_message( \ + "\The [user] starts to clean the microwave.", \ + "You start to clean the microwave." \ + ) + if (do_after(user,20)) + user.visible_message( \ + "\The [user] has cleaned the microwave.", \ + "You have cleaned the microwave." \ + ) + src.dirty = 0 // It's clean! + src.broken = 0 // just to be sure + src.icon_state = "mw" + src.flags = OPENCONTAINER | NOREACT + else //Otherwise bad luck!! + to_chat(user, "It's dirty!") + return 1 + else if(is_type_in_list(O,acceptable_items)) + if (contents.len>=(max_n_of_items + component_parts.len + 1)) //Adds component_parts to the maximum number of items. The 1 is from the circuit + to_chat(user, "This [src] is full of ingredients, you cannot put more.") + return 1 + if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it + var/obj/item/stack/S = O + new O.type (src) + S.use(1) + user.visible_message( \ + "\The [user] has added one of [O] to \the [src].", \ + "You add one of [O] to \the [src].") + return + else + // user.remove_from_mob(O) //This just causes problems so far as I can tell. -Pete + user.drop_item() + O.loc = src + user.visible_message( \ + "\The [user] has added \the [O] to \the [src].", \ + "You add \the [O] to \the [src].") + return + else if(istype(O,/obj/item/weapon/reagent_containers/glass) || \ + istype(O,/obj/item/weapon/reagent_containers/food/drinks) || \ + istype(O,/obj/item/weapon/reagent_containers/food/condiment) \ + ) + if (!O.reagents) + return 1 + for (var/datum/reagent/R in O.reagents.reagent_list) + if (!(R.id in acceptable_reagents)) + to_chat(user, "Your [O] contains components unsuitable for cookery.") + return 1 + return + else if(istype(O,/obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = O + to_chat(user, "This is ridiculous. You can not fit \the [G.affecting] in this [src].") + return 1 + else + to_chat(user, "You have no idea what you can cook with this [O].") + ..() + src.updateUsrDialog() + +/obj/machinery/microwave/attack_ai(mob/user as mob) + if(istype(user, /mob/living/silicon/robot) && Adjacent(user)) + attack_hand(user) + +/obj/machinery/microwave/attack_hand(mob/user as mob) + user.set_machine(src) + interact(user) + +/******************* +* Microwave Menu +********************/ + +/obj/machinery/microwave/interact(mob/user as mob) // The microwave Menu + var/dat = "" + if(src.broken > 0) + dat = {"Bzzzzttttt"} + else if(src.operating) + dat = {"Microwaving in progress!
Please wait...!
"} + else if(src.dirty==100) + dat = {"This microwave is dirty!
Please clean it before use!
"} + else + var/list/items_counts = new + var/list/items_measures = new + var/list/items_measures_p = new + for (var/obj/O in ((contents - component_parts) - circuit)) + var/display_name = O.name + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/egg)) + items_measures[display_name] = "egg" + items_measures_p[display_name] = "eggs" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/tofu)) + items_measures[display_name] = "tofu chunk" + items_measures_p[display_name] = "tofu chunks" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/meat)) //any meat + items_measures[display_name] = "slab of meat" + items_measures_p[display_name] = "slabs of meat" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/donkpocket)) + display_name = "Turnovers" + items_measures[display_name] = "turnover" + items_measures_p[display_name] = "turnovers" + if (istype(O,/obj/item/weapon/reagent_containers/food/snacks/carpmeat)) + items_measures[display_name] = "fillet of meat" + items_measures_p[display_name] = "fillets of meat" + items_counts[display_name]++ + for (var/O in items_counts) + var/N = items_counts[O] + if (!(O in items_measures)) + dat += {"[capitalize(O)]: [N] [lowertext(O)]\s
"} + else + if (N==1) + dat += {"[capitalize(O)]: [N] [items_measures[O]]
"} + else + dat += {"[capitalize(O)]: [N] [items_measures_p[O]]
"} + + for (var/datum/reagent/R in reagents.reagent_list) + var/display_name = R.name + if (R.id == "capsaicin") + display_name = "Hotsauce" + if (R.id == "frostoil") + display_name = "Coldsauce" + dat += {"[display_name]: [R.volume] unit\s
"} + + if (items_counts.len==0 && reagents.reagent_list.len==0) + dat = {"The microwave is empty
"} + else + dat = {"Ingredients:
[dat]"} + dat += {"

\ +
Turn on!
\ +
Eject ingredients!
\ +"} + + to_chat(user, browse("Microwave Controls[dat]", "window=microwave")) + onclose(user, "microwave") + return + + + +/*********************************** +* Microwave Menu Handling/Cooking +************************************/ + +/obj/machinery/microwave/proc/cook() + if(stat & (NOPOWER|BROKEN)) + return + start() + if (reagents.total_volume==0 && !(locate(/obj) in ((contents - component_parts) - circuit))) //dry run + if (!wzhzhzh(10)) + abort() + return + stop() + return + + var/datum/recipe/recipe = select_recipe(available_recipes,src) + var/obj/cooked + if (!recipe) + dirty += 1 + if (prob(max(10,dirty*5))) + if (!wzhzhzh(4)) + abort() + return + muck_start() + wzhzhzh(4) + muck_finish() + cooked = fail() + cooked.loc = src.loc + return + else if (has_extra_item()) + if (!wzhzhzh(4)) + abort() + return + broke() + cooked = fail() + cooked.loc = src.loc + return + else + if (!wzhzhzh(10)) + abort() + return + stop() + cooked = fail() + cooked.loc = src.loc + return + else + var/halftime = round(recipe.time/10/2) + if (!wzhzhzh(halftime)) + abort() + return + if (!wzhzhzh(halftime)) + abort() + cooked = fail() + cooked.loc = src.loc + return + cooked = recipe.make_food(src) + stop() + if(cooked) + cooked.loc = src.loc + return + +/obj/machinery/microwave/proc/wzhzhzh(var/seconds as num) // Whoever named this proc is fucking literally Satan. ~ Z + for (var/i=1 to seconds) + if (stat & (NOPOWER|BROKEN)) + return 0 + use_power(500) + sleep(10) + return 1 + +/obj/machinery/microwave/proc/has_extra_item() + for (var/obj/O in ((contents - component_parts) - circuit)) + if ( \ + !istype(O,/obj/item/weapon/reagent_containers/food) && \ + !istype(O, /obj/item/weapon/grown) \ + ) + return 1 + return 0 + +/obj/machinery/microwave/proc/start() + src.visible_message("The microwave turns on.", "You hear a microwave.") + src.operating = 1 + src.icon_state = "mw1" + src.updateUsrDialog() + +/obj/machinery/microwave/proc/abort() + src.operating = 0 // Turn it off again aferwards + src.icon_state = "mw" + src.updateUsrDialog() + +/obj/machinery/microwave/proc/stop() + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + src.operating = 0 // Turn it off again aferwards + src.icon_state = "mw" + src.updateUsrDialog() + +/obj/machinery/microwave/proc/dispose() + for (var/obj/O in ((contents-component_parts)-circuit)) + O.loc = src.loc + if (src.reagents.total_volume) + src.dirty++ + src.reagents.clear_reagents() + usr << "You dispose of the microwave contents." + src.updateUsrDialog() + +/obj/machinery/microwave/proc/muck_start() + playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) // Play a splat sound + src.icon_state = "mwbloody1" // Make it look dirty!! + +/obj/machinery/microwave/proc/muck_finish() + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + src.visible_message("The microwave gets covered in muck!") + src.dirty = 100 // Make it dirty so it can't be used util cleaned + src.flags = null //So you can't add condiments + src.icon_state = "mwbloody" // Make it look dirty too + src.operating = 0 // Turn it off again aferwards + src.updateUsrDialog() + +/obj/machinery/microwave/proc/broke() + var/datum/effect/effect/system/spark_spread/s = new + s.set_up(2, 1, src) + s.start() + src.icon_state = "mwb" // Make it look all busted up and shit + src.visible_message("The microwave breaks!") //Let them know they're stupid + src.broken = 2 // Make it broken so it can't be used util fixed + src.flags = null //So you can't add condiments + src.operating = 0 // Turn it off again aferwards + src.updateUsrDialog() + +/obj/machinery/microwave/proc/fail() + var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/ffuu = new(src) + var/amount = 0 + for (var/obj/O in (((contents - ffuu) - component_parts) - circuit)) + amount++ + if (O.reagents) + var/id = O.reagents.get_master_reagent_id() + if (id) + amount+=O.reagents.get_reagent_amount(id) + qdel(O) + src.reagents.clear_reagents() + ffuu.reagents.add_reagent("carbon", amount) + ffuu.reagents.add_reagent("toxin", amount/10) + return ffuu + +/obj/machinery/microwave/Topic(href, href_list) + if(..()) + return + + usr.set_machine(src) + if(src.operating) + src.updateUsrDialog() + return + + switch(href_list["action"]) + if ("cook") + cook() + + if ("dispose") + dispose() + return diff --git a/code/modules/food/kitchen/smartfridge.dm b/code/modules/food/kitchen/smartfridge.dm new file mode 100644 index 0000000000..36d71a1766 --- /dev/null +++ b/code/modules/food/kitchen/smartfridge.dm @@ -0,0 +1,779 @@ +<<<<<<< HEAD:code/game/machinery/kitchen/smartfridge.dm +/* SmartFridge. Much todo +*/ +/obj/machinery/smartfridge + name = "\improper SmartFridge" + icon = 'icons/obj/vending.dmi' + icon_state = "smartfridge" + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 5 + active_power_usage = 100 + flags = NOREACT + var/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000. //VOREStation Edit - Non-global + var/icon_on = "smartfridge" + var/icon_off = "smartfridge-off" + var/icon_panel = "smartfridge-panel" + var/list/item_records = list() + var/datum/stored_item/currently_vending = null //What we're putting out of the machine. + var/seconds_electrified = 0; + var/shoot_inventory = 0 + var/locked = 0 + var/scan_id = 1 + var/is_secure = 0 + var/wrenchable = 0 + var/datum/wires/smartfridge/wires = null + +/obj/machinery/smartfridge/secure + is_secure = 1 + +/obj/machinery/smartfridge/New() + ..() + if(is_secure) + wires = new/datum/wires/smartfridge/secure(src) + else + wires = new/datum/wires/smartfridge(src) + +/obj/machinery/smartfridge/Destroy() + qdel(wires) + for(var/A in item_records) //Get rid of item records. + qdel(A) + wires = null + return ..() + +/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/)) + return 1 + return 0 + +/obj/machinery/smartfridge/seeds + name = "\improper MegaSeed Servitor" + desc = "When you need seeds fast!" + icon = 'icons/obj/vending.dmi' + icon_state = "seeds" + icon_on = "seeds" + icon_off = "seeds-off" + +/obj/machinery/smartfridge/seeds/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/seeds/)) + return 1 + return 0 + +/obj/machinery/smartfridge/secure/extract + name = "\improper Biological Sample Storage" + desc = "A refrigerated storage unit for xenobiological samples." + req_access = list(access_research) + +/obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj) + if(istype(O, /obj/item/slime_extract)) + return TRUE + if(istype(O, /obj/item/slimepotion)) + return TRUE + return FALSE + + +/obj/machinery/smartfridge/secure/medbay + name = "\improper Refrigerated Medicine Storage" + desc = "A refrigerated storage unit for storing medicine and chemicals." + icon_state = "smartfridge" //To fix the icon in the map editor. + icon_on = "smartfridge_chem" + req_one_access = list(access_medical,access_chemistry) + +/obj/machinery/smartfridge/secure/medbay/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/reagent_containers/glass/)) + return 1 + if(istype(O,/obj/item/weapon/storage/pill_bottle/)) + return 1 + if(istype(O,/obj/item/weapon/reagent_containers/pill/)) + return 1 + return 0 + +/obj/machinery/smartfridge/secure/virology + name = "\improper Refrigerated Virus Storage" + desc = "A refrigerated storage unit for storing viral material." + req_access = list(access_virology) + icon_state = "smartfridge_virology" + icon_on = "smartfridge_virology" + icon_off = "smartfridge_virology-off" + +/obj/machinery/smartfridge/secure/virology/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/reagent_containers/glass/beaker/vial/)) + return 1 + if(istype(O,/obj/item/weapon/virusdish/)) + return 1 + return 0 + +/obj/machinery/smartfridge/chemistry + name = "\improper Smart Chemical Storage" + desc = "A refrigerated storage unit for medicine and chemical storage." + +/obj/machinery/smartfridge/chemistry/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers)) + return 1 + return 0 + +/obj/machinery/smartfridge/chemistry/virology + name = "\improper Smart Virus Storage" + desc = "A refrigerated storage unit for volatile sample storage." + + +/obj/machinery/smartfridge/drinks + name = "\improper Drink Showcase" + desc = "A refrigerated storage unit for tasty tasty alcohol." + +/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment)) + return 1 + +/obj/machinery/smartfridge/drying_rack + name = "\improper Drying Rack" + desc = "A machine for drying plants." + wrenchable = 1 + icon_state = "drying_rack" + icon_on = "drying_rack_on" + icon_off = "drying_rack" + icon_panel = "drying_rack-panel" + +/obj/machinery/smartfridge/drying_rack/accept_check(var/obj/item/O as obj) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/)) + var/obj/item/weapon/reagent_containers/food/snacks/S = O + if (S.dried_type) + return 1 + return 0 + +/obj/machinery/smartfridge/drying_rack/process() + ..() + if(stat & (BROKEN|NOPOWER)) + return + if(contents.len) + dry() + update_icon() + +/obj/machinery/smartfridge/drying_rack/update_icon() + overlays.Cut() + var/not_working = stat & (BROKEN|NOPOWER) + if(not_working) + icon_state = icon_off + else + icon_state = icon_on + var/hasItems + for(var/datum/stored_item/I in item_records) + if(I.get_amount()) + hasItems = 1 + break + if(hasItems) + overlays += "drying_rack_filled" + if(!not_working) + overlays += "drying_rack_drying" + +/obj/machinery/smartfridge/drying_rack/proc/dry() + for(var/datum/stored_item/I in item_records) + for(var/obj/item/weapon/reagent_containers/food/snacks/S in I.instances) + if(S.dry) continue + if(S.dried_type == S.type) + S.dry = 1 + S.name = "dried [S.name]" + S.color = "#AAAAAA" + I.instances -= S + S.forceMove(get_turf(src)) + else + var/D = S.dried_type + new D(get_turf(src)) + qdel(S) + return + return + +/obj/machinery/smartfridge/process() + if(stat & (BROKEN|NOPOWER)) + return + if(src.seconds_electrified > 0) + src.seconds_electrified-- + if(src.shoot_inventory && prob(2)) + src.throw_item() + +/obj/machinery/smartfridge/power_change() + var/old_stat = stat + ..() + if(old_stat != stat) + update_icon() + +/obj/machinery/smartfridge/update_icon() + if(stat & (BROKEN|NOPOWER)) + icon_state = icon_off + else + icon_state = icon_on + +/******************* +* Item Adding +********************/ + +/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(O.is_screwdriver()) + panel_open = !panel_open + user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].") + playsound(src, O.usesound, 50, 1) + overlays.Cut() + if(panel_open) + overlays += image(icon, icon_panel) + GLOB.nanomanager.update_uis(src) + return + + if(wrenchable && default_unfasten_wrench(user, O, 20)) + return + + if(istype(O, /obj/item/device/multitool) || O.is_wirecutter()) + if(panel_open) + attack_hand(user) + return + + if(stat & NOPOWER) + to_chat(user, "\The [src] is unpowered and useless.") + return + + if(accept_check(O)) + user.remove_from_mob(O) + stock(O) + user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].") + + + else if(istype(O, /obj/item/weapon/storage/bag)) + var/obj/item/weapon/storage/bag/P = O + var/plants_loaded = 0 + for(var/obj/G in P.contents) + if(accept_check(G)) + P.remove_from_storage(G) //fixes ui bug - Pull Request 5515 + stock(G) + plants_loaded = 1 + if(plants_loaded) + user.visible_message("[user] loads \the [src] with \the [P].", "You load \the [src] with \the [P].") + if(P.contents.len > 0) + to_chat(user, "Some items are refused.") + + else if(istype(O, /obj/item/weapon/gripper)) // Grippers. ~Mechoid. + var/obj/item/weapon/gripper/B = O //B, for Borg. + if(!B.wrapped) + to_chat(user, "\The [B] is not holding anything.") + return + else + var/B_held = B.wrapped + to_chat(user, "You use \the [B] to put \the [B_held] into \the [src].") + return + + else + to_chat(user, "\The [src] smartly refuses [O].") + return 1 + +/obj/machinery/smartfridge/secure/emag_act(var/remaining_charges, var/mob/user) + if(!emagged) + emagged = 1 + locked = -1 + to_chat(user, "You short out the product lock on [src].") + return 1 + +/obj/machinery/smartfridge/proc/stock(obj/item/O) + var/hasRecord = FALSE //Check to see if this passes or not. + for(var/datum/stored_item/I in item_records) + if((O.type == I.item_path) && (O.name == I.item_name)) + I.add_product(O) + hasRecord = TRUE + break + if(!hasRecord) + var/datum/stored_item/item = new/datum/stored_item(src, O.type, O.name) + item.add_product(O) + item_records.Add(item) + GLOB.nanomanager.update_uis(src) + +/obj/machinery/smartfridge/proc/vend(datum/stored_item/I) + I.get_product(get_turf(src)) + GLOB.nanomanager.update_uis(src) + +/obj/machinery/smartfridge/attack_ai(mob/user as mob) + attack_hand(user) + +/obj/machinery/smartfridge/attack_hand(mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return + wires.Interact(user) + ui_interact(user) + +/******************* +* SmartFridge Menu +********************/ + +/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) + + var/data[0] + data["contents"] = null + data["electrified"] = seconds_electrified > 0 + data["shoot_inventory"] = shoot_inventory + data["locked"] = locked + data["secure"] = is_secure + + var/list/items[0] + for (var/i=1 to length(item_records)) + var/datum/stored_item/I = item_records[i] + var/count = I.get_amount() + if(count > 0) + items.Add(list(list("display_name" = html_encode(capitalize(I.item_name)), "vend" = i, "quantity" = count))) + + if(items.len > 0) + data["contents"] = items + + ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "smartfridge.tmpl", src.name, 400, 500) + ui.set_initial_data(data) + ui.open() + +/obj/machinery/smartfridge/Topic(href, href_list) + if(..()) return 0 + + var/mob/user = usr + var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main") + + src.add_fingerprint(user) + + if(href_list["close"]) + user.unset_machine() + ui.close() + return 0 + + if(href_list["vend"]) + var/index = text2num(href_list["vend"]) + var/amount = text2num(href_list["amount"]) + var/datum/stored_item/I = item_records[index] + var/count = I.get_amount() + + // Sanity check, there are probably ways to press the button when it shouldn't be possible. + if(count > 0) + if((count - amount) < 0) + amount = count + for(var/i = 1 to amount) + vend(I) + + return 1 + return 0 + +/obj/machinery/smartfridge/proc/throw_item() + var/obj/throw_item = null + var/mob/living/target = locate() in view(7,src) + if(!target) + return 0 + + for(var/datum/stored_item/I in item_records) + throw_item = I.get_product(get_turf(src)) + if (!throw_item) + continue + break + + if(!throw_item) + return 0 + spawn(0) + throw_item.throw_at(target,16,3,src) + src.visible_message("[src] launches [throw_item.name] at [target.name]!") + return 1 + +/************************ +* Secure SmartFridges +*************************/ + +/obj/machinery/smartfridge/secure/Topic(href, href_list) + if(stat & (NOPOWER|BROKEN)) + return 0 + if(usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) + if(!allowed(usr) && !emagged && locked != -1 && href_list["vend"]) + to_chat(usr, "Access denied.") + return 0 + return ..() +======= +/* SmartFridge. Much todo +*/ +/obj/machinery/smartfridge + name = "\improper SmartFridge" + icon = 'icons/obj/vending.dmi' + icon_state = "smartfridge" + density = 1 + anchored = 1 + use_power = 1 + idle_power_usage = 5 + active_power_usage = 100 + flags = NOREACT + var/global/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000. + var/icon_on = "smartfridge" + var/icon_off = "smartfridge-off" + var/icon_panel = "smartfridge-panel" + var/list/item_records = list() + var/datum/stored_item/currently_vending = null //What we're putting out of the machine. + var/seconds_electrified = 0; + var/shoot_inventory = 0 + var/locked = 0 + var/scan_id = 1 + var/is_secure = 0 + var/wrenchable = 0 + var/datum/wires/smartfridge/wires = null + +/obj/machinery/smartfridge/secure + is_secure = 1 + +/obj/machinery/smartfridge/New() + ..() + if(is_secure) + wires = new/datum/wires/smartfridge/secure(src) + else + wires = new/datum/wires/smartfridge(src) + +/obj/machinery/smartfridge/Destroy() + qdel(wires) + for(var/A in item_records) //Get rid of item records. + qdel(A) + wires = null + return ..() + +/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/)) + return 1 + return 0 + +/obj/machinery/smartfridge/seeds + name = "\improper MegaSeed Servitor" + desc = "When you need seeds fast!" + icon = 'icons/obj/vending.dmi' + icon_state = "seeds" + icon_on = "seeds" + icon_off = "seeds-off" + +/obj/machinery/smartfridge/seeds/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/seeds/)) + return 1 + return 0 + +/obj/machinery/smartfridge/secure/extract + name = "\improper Biological Sample Storage" + desc = "A refrigerated storage unit for xenobiological samples." + req_access = list(access_research) + +/obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj) + if(istype(O, /obj/item/slime_extract)) + return TRUE + if(istype(O, /obj/item/slimepotion)) + return TRUE + return FALSE + + +/obj/machinery/smartfridge/secure/medbay + name = "\improper Refrigerated Medicine Storage" + desc = "A refrigerated storage unit for storing medicine and chemicals." + icon_state = "smartfridge" //To fix the icon in the map editor. + icon_on = "smartfridge_chem" + req_one_access = list(access_medical,access_chemistry) + +/obj/machinery/smartfridge/secure/medbay/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/reagent_containers/glass/)) + return 1 + if(istype(O,/obj/item/weapon/storage/pill_bottle/)) + return 1 + if(istype(O,/obj/item/weapon/reagent_containers/pill/)) + return 1 + return 0 + +/obj/machinery/smartfridge/secure/virology + name = "\improper Refrigerated Virus Storage" + desc = "A refrigerated storage unit for storing viral material." + req_access = list(access_virology) + icon_state = "smartfridge_virology" + icon_on = "smartfridge_virology" + icon_off = "smartfridge_virology-off" + +/obj/machinery/smartfridge/secure/virology/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/reagent_containers/glass/beaker/vial/)) + return 1 + if(istype(O,/obj/item/weapon/virusdish/)) + return 1 + return 0 + +/obj/machinery/smartfridge/chemistry + name = "\improper Smart Chemical Storage" + desc = "A refrigerated storage unit for medicine and chemical storage." + +/obj/machinery/smartfridge/chemistry/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers)) + return 1 + return 0 + +/obj/machinery/smartfridge/chemistry/virology + name = "\improper Smart Virus Storage" + desc = "A refrigerated storage unit for volatile sample storage." + + +/obj/machinery/smartfridge/drinks + name = "\improper Drink Showcase" + desc = "A refrigerated storage unit for tasty tasty alcohol." + +/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj) + if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment)) + return 1 + +/obj/machinery/smartfridge/drying_rack + name = "\improper Drying Rack" + desc = "A machine for drying plants." + wrenchable = 1 + icon_state = "drying_rack" + icon_on = "drying_rack_on" + icon_off = "drying_rack" + icon_panel = "drying_rack-panel" + +/obj/machinery/smartfridge/drying_rack/accept_check(var/obj/item/O as obj) + if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/)) + var/obj/item/weapon/reagent_containers/food/snacks/S = O + if (S.dried_type) + return 1 + return 0 + +/obj/machinery/smartfridge/drying_rack/process() + ..() + if(stat & (BROKEN|NOPOWER)) + return + if(contents.len) + dry() + update_icon() + +/obj/machinery/smartfridge/drying_rack/update_icon() + overlays.Cut() + var/not_working = stat & (BROKEN|NOPOWER) + if(not_working) + icon_state = icon_off + else + icon_state = icon_on + var/hasItems + for(var/datum/stored_item/I in item_records) + if(I.get_amount()) + hasItems = 1 + break + if(hasItems) + overlays += "drying_rack_filled" + if(!not_working) + overlays += "drying_rack_drying" + +/obj/machinery/smartfridge/drying_rack/proc/dry() + for(var/datum/stored_item/I in item_records) + for(var/obj/item/weapon/reagent_containers/food/snacks/S in I.instances) + if(S.dry) continue + if(S.dried_type == S.type) + S.dry = 1 + S.name = "dried [S.name]" + S.color = "#AAAAAA" + I.instances -= S + S.forceMove(get_turf(src)) + else + var/D = S.dried_type + new D(get_turf(src)) + qdel(S) + return + return + +/obj/machinery/smartfridge/process() + if(stat & (BROKEN|NOPOWER)) + return + if(src.seconds_electrified > 0) + src.seconds_electrified-- + if(src.shoot_inventory && prob(2)) + src.throw_item() + +/obj/machinery/smartfridge/power_change() + var/old_stat = stat + ..() + if(old_stat != stat) + update_icon() + +/obj/machinery/smartfridge/update_icon() + if(stat & (BROKEN|NOPOWER)) + icon_state = icon_off + else + icon_state = icon_on + +/******************* +* Item Adding +********************/ + +/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) + if(O.is_screwdriver()) + panel_open = !panel_open + user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].") + playsound(src, O.usesound, 50, 1) + overlays.Cut() + if(panel_open) + overlays += image(icon, icon_panel) + GLOB.nanomanager.update_uis(src) + return + + if(wrenchable && default_unfasten_wrench(user, O, 20)) + return + + if(istype(O, /obj/item/device/multitool) || O.is_wirecutter()) + if(panel_open) + attack_hand(user) + return + + if(stat & NOPOWER) + to_chat(user, "\The [src] is unpowered and useless.") + return + + if(accept_check(O)) + user.remove_from_mob(O) + stock(O) + user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].") + + + else if(istype(O, /obj/item/weapon/storage/bag)) + var/obj/item/weapon/storage/bag/P = O + var/plants_loaded = 0 + for(var/obj/G in P.contents) + if(accept_check(G)) + P.remove_from_storage(G) //fixes ui bug - Pull Request 5515 + stock(G) + plants_loaded = 1 + if(plants_loaded) + user.visible_message("[user] loads \the [src] with \the [P].", "You load \the [src] with \the [P].") + if(P.contents.len > 0) + to_chat(user, "Some items are refused.") + + else if(istype(O, /obj/item/weapon/gripper)) // Grippers. ~Mechoid. + var/obj/item/weapon/gripper/B = O //B, for Borg. + if(!B.wrapped) + to_chat(user, "\The [B] is not holding anything.") + return + else + var/B_held = B.wrapped + to_chat(user, "You use \the [B] to put \the [B_held] into \the [src].") + return + + else + to_chat(user, "\The [src] smartly refuses [O].") + return 1 + +/obj/machinery/smartfridge/secure/emag_act(var/remaining_charges, var/mob/user) + if(!emagged) + emagged = 1 + locked = -1 + to_chat(user, "You short out the product lock on [src].") + return 1 + +/obj/machinery/smartfridge/proc/stock(obj/item/O) + var/hasRecord = FALSE //Check to see if this passes or not. + for(var/datum/stored_item/I in item_records) + if((O.type == I.item_path) && (O.name == I.item_name)) + I.add_product(O) + hasRecord = TRUE + break + if(!hasRecord) + var/datum/stored_item/item = new/datum/stored_item(src, O.type, O.name) + item.add_product(O) + item_records.Add(item) + GLOB.nanomanager.update_uis(src) + +/obj/machinery/smartfridge/proc/vend(datum/stored_item/I) + I.get_product(get_turf(src)) + GLOB.nanomanager.update_uis(src) + +/obj/machinery/smartfridge/attack_ai(mob/user as mob) + attack_hand(user) + +/obj/machinery/smartfridge/attack_hand(mob/user as mob) + if(stat & (NOPOWER|BROKEN)) + return + wires.Interact(user) + ui_interact(user) + +/******************* +* SmartFridge Menu +********************/ + +/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + user.set_machine(src) + + var/data[0] + data["contents"] = null + data["electrified"] = seconds_electrified > 0 + data["shoot_inventory"] = shoot_inventory + data["locked"] = locked + data["secure"] = is_secure + + var/list/items[0] + for (var/i=1 to length(item_records)) + var/datum/stored_item/I = item_records[i] + var/count = I.get_amount() + if(count > 0) + items.Add(list(list("display_name" = html_encode(capitalize(I.item_name)), "vend" = i, "quantity" = count))) + + if(items.len > 0) + data["contents"] = items + + ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + ui = new(user, src, ui_key, "smartfridge.tmpl", src.name, 400, 500) + ui.set_initial_data(data) + ui.open() + +/obj/machinery/smartfridge/Topic(href, href_list) + if(..()) return 0 + + var/mob/user = usr + var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main") + + src.add_fingerprint(user) + + if(href_list["close"]) + user.unset_machine() + ui.close() + return 0 + + if(href_list["vend"]) + var/index = text2num(href_list["vend"]) + var/amount = text2num(href_list["amount"]) + var/datum/stored_item/I = item_records[index] + var/count = I.get_amount() + + // Sanity check, there are probably ways to press the button when it shouldn't be possible. + if(count > 0) + if((count - amount) < 0) + amount = count + for(var/i = 1 to amount) + vend(I) + + return 1 + return 0 + +/obj/machinery/smartfridge/proc/throw_item() + var/obj/throw_item = null + var/mob/living/target = locate() in view(7,src) + if(!target) + return 0 + + for(var/datum/stored_item/I in item_records) + throw_item = I.get_product(get_turf(src)) + if (!throw_item) + continue + break + + if(!throw_item) + return 0 + spawn(0) + throw_item.throw_at(target,16,3,src) + src.visible_message("[src] launches [throw_item.name] at [target.name]!") + return 1 + +/************************ +* Secure SmartFridges +*************************/ + +/obj/machinery/smartfridge/secure/Topic(href, href_list) + if(stat & (NOPOWER|BROKEN)) + return 0 + if(usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) + if(!allowed(usr) && !emagged && locked != -1 && href_list["vend"]) + to_chat(usr, "Access denied.") + return 0 + return ..() +>>>>>>> 10e7a49... Merge pull request #5626 from lbnesquik/Kates-kitchen-fix:code/modules/food/kitchen/smartfridge.dm diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm deleted file mode 100644 index ce2dd8e791..0000000000 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ /dev/null @@ -1,3876 +0,0 @@ -//Food items that are eaten normally and don't leave anything behind. -/obj/item/weapon/reagent_containers/food/snacks - name = "snack" - desc = "yummy" - icon = 'icons/obj/food.dmi' - icon_state = null - var/bitesize = 1 - var/bitecount = 0 - var/trash = null - var/slice_path - var/slices_num - var/dried_type = null - var/dry = 0 - var/nutriment_amt = 0 - var/list/nutriment_desc = list("food" = 1) - center_of_mass = list("x"=16, "y"=16) - w_class = ITEMSIZE_SMALL - force = 1 - -/obj/item/weapon/reagent_containers/food/snacks/New() - ..() - if(nutriment_amt) - reagents.add_reagent("nutriment",nutriment_amt,nutriment_desc) - -/obj/item/weapon/reagent_containers/food/snacks/New() - ..() - if(nutriment_amt) - reagents.add_reagent("nutriment", nutriment_amt) - - //Placeholder for effect that trigger on eating that aren't tied to reagents. -/obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M) - if(!usr) - usr = M - if(!reagents.total_volume) - M.visible_message("[M] finishes eating \the [src].","You finish eating \the [src].") - usr.drop_from_inventory(src) //so icons update :[ - - if(trash) - if(ispath(trash,/obj/item)) - var/obj/item/TrashItem = new trash(usr) - usr.put_in_hands(TrashItem) - else if(istype(trash,/obj/item)) - usr.put_in_hands(trash) - qdel(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob) - return - -/obj/item/weapon/reagent_containers/food/snacks/attack(mob/M as mob, mob/user as mob, def_zone) - if(reagents && !reagents.total_volume) - user << "None of [src] left!" - user.drop_from_inventory(src) - qdel(src) - return 0 - - if(istype(M, /mob/living/carbon)) - //TODO: replace with standard_feed_mob() call. - - var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25) - if(M == user) //If you're eating it yourself - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(!H.check_has_mouth()) - user << "Where do you intend to put \the [src]? You don't have a mouth!" - return - var/obj/item/blocked = H.check_mouth_coverage() - if(blocked) - user << "\The [blocked] is in the way!" - return - - // Vorestation edits in this section. - user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things - if (fullness <= 50) - M << "You hungrily chew out a piece of [src] and gobble it!" - if (fullness > 50 && fullness <= 150) - M << "You hungrily begin to eat [src]." - if (fullness > 150 && fullness <= 350) - M << "You take a bite of [src]." - if (fullness > 350 && fullness <= 550) - M << "You unwillingly chew a bit of [src]." - if (fullness > 550 && fullness <= 650) - M << "You swallow some more of the [src], causing your belly to swell out a little." - if (fullness > 650 && fullness <= 1000) - M << "You stuff yourself with the [src]. Your stomach feels very heavy." - if (fullness > 1000 && fullness <= 3000) - M << "You gluttonously swallow down the hunk of [src]. You're so gorged, it's hard to stand." - if (fullness > 3000 && fullness <= 5500) - M << "You force the piece of [src] down your throat. You can feel your stomach getting firm as it reaches its limits." - if (fullness > 5500 && fullness <= 6000) - M << "You barely glug down the bite of [src], causing undigested food to force into your intestines. You can't take much more of this!" - if (fullness > 6000) // There has to be a limit eventually. - M << "Your stomach blorts and aches, prompting you to stop. You literally cannot force any more of [src] to go down your throat." - return 0 - /*if (fullness > (550 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat - M << "You cannot force any more of [src] to go down your throat." - return 0*/ - - else - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(!H.check_has_mouth()) - user << "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!" - return - var/obj/item/blocked = H.check_mouth_coverage() - if(blocked) - user << "\The [blocked] is in the way!" - return - - if(!istype(M, /mob/living/carbon/slime)) //If you're feeding it to someone else. - - /*if (fullness <= (550 * (1 + M.overeatduration / 1000))) // Vorestation edit - user.visible_message("[user] attempts to feed [M] [src].") - else - user.visible_message("[user] cannot force anymore of [src] down [M]'s throat.") - return 0*/ - user.visible_message("[user] attempts to feed [M] [src].") // Vorestation edit - - user.setClickCooldown(user.get_attack_speed(src)) - if(!do_mob(user, M)) return - - //Do we really care about this - add_attack_logs(user,M,"Fed with [src.name] containing [reagentlist(src)]", admin_notify = FALSE) - - user.visible_message("[user] feeds [M] [src].") - - else - user << "This creature does not seem to have a mouth!" - return - - if(reagents) //Handle ingestion of the reagent. - playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1) - if(reagents.total_volume) - if(reagents.total_volume > bitesize) - reagents.trans_to_mob(M, bitesize, CHEM_INGEST) - else - reagents.trans_to_mob(M, reagents.total_volume, CHEM_INGEST) - bitecount++ - On_Consume(M) - return 1 - - return 0 - -/obj/item/weapon/reagent_containers/food/snacks/examine(mob/user) - if(!..(user, 1)) - return - if (bitecount==0) - return - else if (bitecount==1) - user << "\The [src] was bitten by someone!" - else if (bitecount<=3) - user << "\The [src] was bitten [bitecount] times!" - else - user << "\The [src] was bitten multiple times!" - -/obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/storage)) - ..() // -> item/attackby() - return - - // Eating with forks - if(istype(W,/obj/item/weapon/material/kitchen/utensil)) - var/obj/item/weapon/material/kitchen/utensil/U = W - if(U.scoop_food) - if(!U.reagents) - U.create_reagents(5) - - if (U.reagents.total_volume > 0) - user << "You already have something on your [U]." - return - - user.visible_message( \ - "[user] scoops up some [src] with \the [U]!", \ - "You scoop up some [src] with \the [U]!" \ - ) - - src.bitecount++ - U.overlays.Cut() - U.loaded = "[src]" - var/image/I = new(U.icon, "loadedfood") - I.color = src.filling_color - U.overlays += I - - reagents.trans_to_obj(U, min(reagents.total_volume,5)) - - if (reagents.total_volume <= 0) - qdel(src) - return - - if (is_sliceable()) - //these are used to allow hiding edge items in food that is not on a table/tray - var/can_slice_here = isturf(src.loc) && ((locate(/obj/structure/table) in src.loc) || (locate(/obj/machinery/optable) in src.loc) || (locate(/obj/item/weapon/tray) in src.loc)) - var/hide_item = !has_edge(W) || !can_slice_here - - if (hide_item) - if (W.w_class >= src.w_class || is_robot_module(W)) - return - - 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) - 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("\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("\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)) - var/obj/slice = new slice_path (src.loc) - reagents.trans_to_obj(slice, reagents_per_slice) - qdel(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable() - return (slices_num && slice_path && slices_num > 0) - -/obj/item/weapon/reagent_containers/food/snacks/Destroy() - if(contents) - for(var/atom/movable/something in contents) - something.dropInto(loc) - . = ..() - -//////////////////////////////////////////////////////////////////////////////// -/// FOOD END -//////////////////////////////////////////////////////////////////////////////// -/obj/item/weapon/reagent_containers/food/snacks/attack_generic(var/mob/living/user) - if(!isanimal(user) && !isalien(user)) - return - user.visible_message("[user] nibbles away at \the [src].","You nibble away at \the [src].") - bitecount++ - if(reagents) - reagents.trans_to_mob(user, bitesize, CHEM_INGEST) - spawn(5) - if(!src && !user.client) - user.custom_emote(1,"[pick("burps", "cries for more", "burps twice", "looks at the area where the food was")]") - qdel(src) - On_Consume(user) - -////////////////////////////////////////////////// -////////////////////////////////////////////Snacks -////////////////////////////////////////////////// -//Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created -// already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten. - -//Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units Generally speaking, you don't want to go over 40 -// total for the item because you want to leave space for extra condiments. If you want effect besides healing, add a reagent for -// it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use Tricordrazine). On use -// effect (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way). - -//The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to -// 2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a -// bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all -// the bites. No more contained reagents = no more bites. - -//Here is an example of the new formatting for anyone who wants to add more food items. -///obj/item/weapon/reagent_containers/food/snacks/xenoburger //Identification path for the object. -// name = "Xenoburger" //Name that displays in the UI. -// desc = "Smells caustic. Tastes like heresy." //Duh -// icon_state = "xburger" //Refers to an icon in food.dmi -// New() //Don't mess with this. -// ..() //Same here. -// reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste -// reagents.add_reagent("nutriment", 2) // this line of code for all the contents. -// bitesize = 3 //This is the amount each bite consumes. - - - - -/obj/item/weapon/reagent_containers/food/snacks/aesirsalad - name = "Aesir salad" - desc = "Probably too incredible for mortal men to fully enjoy." - icon_state = "aesirsalad" - trash = /obj/item/trash/snack_bowl - filling_color = "#468C00" - center_of_mass = list("x"=17, "y"=11) - nutriment_amt = 8 - nutriment_desc = list("apples" = 3,"salad" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/aesirsalad/New() - ..() - reagents.add_reagent("doctorsdelight", 8) - reagents.add_reagent("tricordrazine", 8) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/candy - name = "candy" - desc = "Nougat, love it or hate it." - icon_state = "candy" - trash = /obj/item/trash/candy - filling_color = "#7D5F46" - center_of_mass = list("x"=15, "y"=15) - nutriment_amt = 1 - nutriment_desc = list("candy" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/candy/New() - ..() - reagents.add_reagent("sugar", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar - name = "protein bar" - desc = "SwoleMAX brand protein bars, guaranteed to get you feeling perfectly overconfident." - icon_state = "proteinbar" - trash = /obj/item/trash/candy/proteinbar - nutriment_amt = 9 - nutriment_desc = list("candy" = 1, "protein" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar/New() - ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("sugar", 4) - bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/candy/donor - name = "Donor Candy" - desc = "A little treat for blood donors." - trash = /obj/item/trash/candy - nutriment_amt = 9 - nutriment_desc = list("candy" = 10) - -/obj/item/weapon/reagent_containers/food/snacks/candy/donor/New() - ..() - reagents.add_reagent("sugar", 3) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/candy_corn - name = "candy corn" - desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas." - icon_state = "candy_corn" - filling_color = "#FFFCB0" - center_of_mass = list("x"=14, "y"=10) - nutriment_amt = 4 - nutriment_desc = list("candy corn" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/candy_corn/New() - ..() - reagents.add_reagent("sugar", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/chips - name = "chips" - desc = "Commander Riker's What-The-Crisps" - icon_state = "chips" - trash = /obj/item/trash/chips - filling_color = "#E8C31E" - center_of_mass = list("x"=15, "y"=15) - nutriment_amt = 3 - nutriment_desc = list("salt" = 1, "chips" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/chips/New() - ..() - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/cookie - name = "cookie" - desc = "COOKIE!!!" - icon_state = "COOKIE!!!" - filling_color = "#DBC94F" - center_of_mass = list("x"=17, "y"=18) - nutriment_amt = 5 - nutriment_desc = list("sweetness" = 3, "cookie" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/cookie/New() - ..() - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar - name = "Chocolate Bar" - desc = "Such sweet, fattening food." - icon_state = "chocolatebar" - filling_color = "#7D5F46" - center_of_mass = list("x"=15, "y"=15) - nutriment_amt = 2 - nutriment_desc = list("chocolate" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/New() - ..() - reagents.add_reagent("sugar", 2) - reagents.add_reagent("coco", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece - name = "chocolate piece" - desc = "A luscious milk chocolate piece filled with gooey caramel." - icon_state = "chocolatepiece" - filling_color = "#7D5F46" - center_of_mass = list("x"=15, "y"=15) - nutriment_amt = 1 - nutriment_desc = list("chocolate" = 3, "caramel" = 2, "lusciousness" = 1) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white - name = "white chocolate piece" - desc = "A creamy white chocolate piece drizzled in milk chocolate." - icon_state = "chocolatepiece_white" - filling_color = "#E2DAD3" - nutriment_desc = list("white chocolate" = 3, "creaminess" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle - name = "chocolate truffle" - desc = "A bite-sized milk chocolate truffle that could buy anyone's love." - icon_state = "chocolatepiece_truffle" - nutriment_desc = list("chocolate" = 3, "undying devotion" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/chocolateegg - name = "Chocolate Egg" - desc = "Such sweet, fattening food." - icon_state = "chocolateegg" - filling_color = "#7D5F46" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 3 - nutriment_desc = list("chocolate" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/New() - ..() - reagents.add_reagent("sugar", 2) - reagents.add_reagent("coco", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/donut - name = "donut" - desc = "Goes great with Robust Coffee." - icon_state = "donut1" - filling_color = "#D9C386" - var/overlay_state = "box-donut1" - center_of_mass = list("x"=13, "y"=16) - nutriment_desc = list("sweetness", "donut") - -/obj/item/weapon/reagent_containers/food/snacks/donut/normal - name = "donut" - desc = "Goes great with Robust Coffee." - icon_state = "donut1" - nutriment_amt = 3 - -/obj/item/weapon/reagent_containers/food/snacks/donut/normal/New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sprinkles", 1) - src.bitesize = 3 - if(prob(30)) - src.icon_state = "donut2" - src.overlay_state = "box-donut2" - src.name = "frosted donut" - reagents.add_reagent("sprinkles", 2) - center_of_mass = list("x"=19, "y"=16) - -/obj/item/weapon/reagent_containers/food/snacks/donut/chaos - name = "Chaos Donut" - desc = "Like life, it never quite tastes the same." - icon_state = "donut1" - filling_color = "#ED11E6" - nutriment_amt = 2 - -/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/New() - ..() - reagents.add_reagent("sprinkles", 1) - bitesize = 10 - var/chaosselect = pick(1,2,3,4,5,6,7,8,9,10) - switch(chaosselect) - if(1) - reagents.add_reagent("nutriment", 3) - if(2) - reagents.add_reagent("capsaicin", 3) - if(3) - reagents.add_reagent("frostoil", 3) - if(4) - reagents.add_reagent("sprinkles", 3) - if(5) - reagents.add_reagent("phoron", 3) - if(6) - reagents.add_reagent("coco", 3) - if(7) - reagents.add_reagent("slimejelly", 3) - if(8) - reagents.add_reagent("banana", 3) - if(9) - reagents.add_reagent("berryjuice", 3) - if(10) - reagents.add_reagent("tricordrazine", 3) - if(prob(30)) - src.icon_state = "donut2" - src.overlay_state = "box-donut2" - src.name = "Frosted Chaos Donut" - reagents.add_reagent("sprinkles", 2) - -/obj/item/weapon/reagent_containers/food/snacks/donut/jelly - name = "Jelly Donut" - desc = "You jelly?" - icon_state = "jdonut1" - filling_color = "#ED1169" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 3 - -/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/New() - ..() - reagents.add_reagent("sprinkles", 1) - reagents.add_reagent("berryjuice", 5) - bitesize = 5 - if(prob(30)) - src.icon_state = "jdonut2" - src.overlay_state = "box-donut2" - src.name = "Frosted Jelly Donut" - reagents.add_reagent("sprinkles", 2) - -/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly - name = "Jelly Donut" - desc = "You jelly?" - icon_state = "jdonut1" - filling_color = "#ED1169" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 3 - -/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/New() - ..() - reagents.add_reagent("sprinkles", 1) - reagents.add_reagent("slimejelly", 5) - bitesize = 5 - if(prob(30)) - src.icon_state = "jdonut2" - src.overlay_state = "box-donut2" - src.name = "Frosted Jelly Donut" - reagents.add_reagent("sprinkles", 2) - -/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly - name = "Jelly Donut" - desc = "You jelly?" - icon_state = "jdonut1" - filling_color = "#ED1169" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 3 - -/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/New() - ..() - reagents.add_reagent("sprinkles", 1) - reagents.add_reagent("cherryjelly", 5) - bitesize = 5 - if(prob(30)) - src.icon_state = "jdonut2" - src.overlay_state = "box-donut2" - src.name = "Frosted Jelly Donut" - reagents.add_reagent("sprinkles", 2) - -/obj/item/weapon/reagent_containers/food/snacks/egg - name = "egg" - desc = "An egg!" - icon_state = "egg" - filling_color = "#FDFFD1" - volume = 10 - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/egg/New() - ..() - reagents.add_reagent("egg", 3) - -/obj/item/weapon/reagent_containers/food/snacks/egg/afterattack(obj/O as obj, mob/user as mob, proximity) - if(istype(O,/obj/machinery/microwave)) - return ..() - if(!(proximity && O.is_open_container())) - return - user << "You crack \the [src] into \the [O]." - reagents.trans_to(O, reagents.total_volume) - user.drop_from_inventory(src) - qdel(src) - -/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom) - ..() - new/obj/effect/decal/cleanable/egg_smudge(src.loc) - src.reagents.splash(hit_atom, reagents.total_volume) - src.visible_message("[src.name] has been squashed.","You hear a smack.") - qdel(src) - -/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype( W, /obj/item/weapon/pen/crayon )) - var/obj/item/weapon/pen/crayon/C = W - var/clr = C.colourName - - if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow"))) - usr << "The egg refuses to take on this color!" - return - - usr << "You color \the [src] [clr]" - icon_state = "egg-[clr]" - else - ..() - -/obj/item/weapon/reagent_containers/food/snacks/egg/blue - icon_state = "egg-blue" - -/obj/item/weapon/reagent_containers/food/snacks/egg/green - icon_state = "egg-green" - -/obj/item/weapon/reagent_containers/food/snacks/egg/mime - icon_state = "egg-mime" - -/obj/item/weapon/reagent_containers/food/snacks/egg/orange - icon_state = "egg-orange" - -/obj/item/weapon/reagent_containers/food/snacks/egg/purple - icon_state = "egg-purple" - -/obj/item/weapon/reagent_containers/food/snacks/egg/rainbow - icon_state = "egg-rainbow" - -/obj/item/weapon/reagent_containers/food/snacks/egg/red - icon_state = "egg-red" - -/obj/item/weapon/reagent_containers/food/snacks/egg/yellow - icon_state = "egg-yellow" - -/obj/item/weapon/reagent_containers/food/snacks/friedegg - name = "Fried egg" - desc = "A fried egg, with a touch of salt and pepper." - icon_state = "friedegg" - filling_color = "#FFDF78" - center_of_mass = list("x"=16, "y"=14) - -/obj/item/weapon/reagent_containers/food/snacks/friedegg/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("sodiumchloride", 1) - reagents.add_reagent("blackpepper", 1) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/boiledegg - name = "Boiled egg" - desc = "A hard boiled egg." - icon_state = "egg" - filling_color = "#FFFFFF" - -/obj/item/weapon/reagent_containers/food/snacks/boiledegg/New() - ..() - reagents.add_reagent("protein", 2) - -/obj/item/weapon/reagent_containers/food/snacks/organ - name = "organ" - desc = "It's good for you." - icon = 'icons/obj/surgery.dmi' - icon_state = "appendix" - filling_color = "#E00D34" - center_of_mass = list("x"=16, "y"=16) - -/obj/item/weapon/reagent_containers/food/snacks/organ/New() - ..() - reagents.add_reagent("protein", rand(3,5)) - reagents.add_reagent("toxin", rand(1,3)) - src.bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/tofu - name = "Tofu" - icon_state = "tofu" - desc = "We all love tofu." - filling_color = "#FFFEE0" - center_of_mass = list("x"=17, "y"=10) - nutriment_amt = 3 - nutriment_desc = list("tofu" = 3, "goeyness" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/tofu/New() - ..() - src.bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/tofurkey - name = "Tofurkey" - desc = "A fake turkey made from tofu." - icon_state = "tofurkey" - filling_color = "#FFFEE0" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 12 - nutriment_desc = list("turkey" = 3, "tofu" = 5, "goeyness" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/tofurkey/New() - ..() - reagents.add_reagent("stoxin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/stuffing - name = "Stuffing" - desc = "Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in!" - icon_state = "stuffing" - filling_color = "#C9AC83" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 3 - nutriment_desc = list("dryness" = 2, "bread" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/stuffing/New() - ..() - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/carpmeat - name = "carp fillet" - desc = "A fillet of spess carp meat" - icon_state = "fishfillet" - filling_color = "#FFDEFE" - center_of_mass = list("x"=17, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/carpmeat/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("carpotoxin", 3) - src.bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/fishfingers - name = "Fish Fingers" - desc = "A finger of fish." - icon_state = "fishfingers" - filling_color = "#FFDEFE" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/fishfingers/New() - ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("carpotoxin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice - name = "huge mushroom slice" - desc = "A slice from a huge mushroom." - icon_state = "hugemushroomslice" - filling_color = "#E0D7C5" - center_of_mass = list("x"=17, "y"=16) - nutriment_amt = 3 - nutriment_desc = list("raw" = 2, "mushroom" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/New() - ..() - reagents.add_reagent("psilocybin", 3) - src.bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/tomatomeat - name = "tomato slice" - desc = "A slice from a huge tomato" - icon_state = "tomatomeat" - filling_color = "#DB0000" - center_of_mass = list("x"=17, "y"=16) - nutriment_amt = 3 - nutriment_desc = list("raw" = 2, "tomato" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/tomatomeat/New() - ..() - src.bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/bearmeat - name = "bear meat" - desc = "A very manly slab of meat." - icon_state = "bearmeat" - filling_color = "#DB0000" - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/bearmeat/New() - ..() - reagents.add_reagent("protein", 12) - reagents.add_reagent("hyperzine", 5) - src.bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/xenomeat - name = "xenomeat" - desc = "A slab of green meat. Smells like acid." - icon_state = "xenomeat" - filling_color = "#43DE18" - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/New() - ..() - reagents.add_reagent("protein", 6) - reagents.add_reagent("pacid",6) - src.bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat // Substitute for recipes requiring xeno meat. - name = "spider meat" - desc = "A slab of green meat." - icon_state = "xenomeat" - filling_color = "#43DE18" - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat/New() - ..() - reagents.add_reagent("spidertoxin",6) - reagents.remove_reagent("pacid",6) - src.bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/meatball - name = "meatball" - desc = "A great meal all round." - icon_state = "meatball" - filling_color = "#DB0000" - center_of_mass = list("x"=16, "y"=16) - -/obj/item/weapon/reagent_containers/food/snacks/meatball/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/sausage - name = "Sausage" - desc = "A piece of mixed, long meat." - icon_state = "sausage" - filling_color = "#DB0000" - center_of_mass = list("x"=16, "y"=16) - -/obj/item/weapon/reagent_containers/food/snacks/sausage/New() - ..() - reagents.add_reagent("protein", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket - name = "Donk-pocket" - desc = "The food of choice for the seasoned traitor." - icon_state = "donkpocket" - filling_color = "#DEDEAB" - center_of_mass = list("x"=16, "y"=10) - var/warm - var/list/heated_reagents - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("protein", 2) - - warm = 0 - heated_reagents = list("tricordrazine" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/heat() - warm = 1 - for(var/reagent in heated_reagents) - reagents.add_reagent(reagent, heated_reagents[reagent]) - bitesize = 6 - name = "Warm " + name - cooltime() - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/cooltime() - if (src.warm) - spawn(4200) - src.warm = 0 - for(var/reagent in heated_reagents) - src.reagents.del_reagent(reagent) - src.name = initial(name) - return - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket - name = "\improper Sin-pocket" - desc = "The food of choice for the veteran. Do NOT overconsume." - filling_color = "#6D6D00" - heated_reagents = list("doctorsdelight" = 5, "hyperzine" = 0.75, "synaptizine" = 0.25) - var/has_been_heated = 0 - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket/attack_self(mob/user) - if(has_been_heated) - user << "The heating chemicals have already been spent." - return - has_been_heated = 1 - user.visible_message("[user] crushes \the [src] package.", "You crush \the [src] package and feel a comfortable heat build up.") - spawn(200) - user << "You think \the [src] is ready to eat about now." - heat() - -/obj/item/weapon/reagent_containers/food/snacks/brainburger - name = "brainburger" - desc = "A strange looking burger. It looks almost sentient." - icon_state = "brainburger" - filling_color = "#F2B6EA" - center_of_mass = list("x"=15, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/brainburger/New() - ..() - reagents.add_reagent("protein", 6) - reagents.add_reagent("alkysine", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/ghostburger - name = "Ghost Burger" - desc = "Spooky! It doesn't look very filling." - icon_state = "ghostburger" - filling_color = "#FFF2FF" - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("buns" = 3, "spookiness" = 3) - nutriment_amt = 2 - -/obj/item/weapon/reagent_containers/food/snacks/ghostburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/human - var/hname = "" - var/job = null - filling_color = "#D63C3C" - -/obj/item/weapon/reagent_containers/food/snacks/human/burger - name = "-burger" - desc = "A bloody burger." - icon_state = "hburger" - center_of_mass = list("x"=16, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/human/burger/New() - ..() - reagents.add_reagent("protein", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheeseburger - name = "cheeseburger" - desc = "The cheese adds a good flavor." - icon_state = "cheeseburger" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 2 - nutriment_desc = list("cheese" = 2, "bun" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/cheeseburger/New() - ..() - reagents.add_reagent("protein", 2) - -/obj/item/weapon/reagent_containers/food/snacks/monkeyburger - name = "burger" - desc = "The cornerstone of every nutritious breakfast." - icon_state = "hburger" - filling_color = "#D63C3C" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 3 - nutriment_desc = list("bun" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fishburger - 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" - filling_color = "#FFDEFE" - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/fishburger/New() - ..() - reagents.add_reagent("protein", 6) - reagents.add_reagent("carpotoxin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/tofuburger - name = "Tofu Burger" - desc = "What.. is that meat?" - icon_state = "tofuburger" - filling_color = "#FFFEE0" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 6 - nutriment_desc = list("bun" = 2, "pseudo-soy meat" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/tofuburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/roburger - name = "roburger" - desc = "The lettuce is the only organic component. Beep." - icon_state = "roburger" - filling_color = "#CCCCCC" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 2 - nutriment_desc = list("bun" = 2, "metal" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/roburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/roburgerbig - name = "roburger" - desc = "This massive patty looks like poison. Beep." - icon_state = "roburger" - filling_color = "#CCCCCC" - volume = 100 - center_of_mass = list("x"=16, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/roburgerbig/New() - ..() - bitesize = 0.1 - -/obj/item/weapon/reagent_containers/food/snacks/xenoburger - name = "xenoburger" - desc = "Smells caustic. Tastes like heresy." - icon_state = "xburger" - filling_color = "#43DE18" - center_of_mass = list("x"=16, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/xenoburger/New() - ..() - reagents.add_reagent("protein", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/clownburger - name = "Clown Burger" - desc = "This tastes funny..." - icon_state = "clownburger" - filling_color = "#FF00FF" - center_of_mass = list("x"=17, "y"=12) - nutriment_amt = 6 - nutriment_desc = list("bun" = 2, "clown shoe" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/clownburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/mimeburger - name = "Mime Burger" - desc = "Its taste defies language." - icon_state = "mimeburger" - filling_color = "#FFFFFF" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 6 - nutriment_desc = list("bun" = 2, "face paint" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/mimeburger/New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/omelette - name = "Omelette Du Fromage" - desc = "That's all you can say!" - icon_state = "omelette" - trash = /obj/item/trash/plate - filling_color = "#FFF9A8" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/omelette/New() - ..() - reagents.add_reagent("protein", 8) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/muffin - name = "Muffin" - desc = "A delicious and spongy little cake" - icon_state = "muffin" - filling_color = "#E0CF9B" - center_of_mass = list("x"=17, "y"=4) - nutriment_amt = 6 - nutriment_desc = list("sweetness" = 3, "muffin" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/muffin/New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/pie - name = "Banana Cream Pie" - desc = "Just like back home, on clown planet! HONK!" - icon_state = "pie" - trash = /obj/item/trash/plate - filling_color = "#FBFFB8" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 4 - nutriment_desc = list("pie" = 3, "cream" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/pie/New() - ..() - reagents.add_reagent("banana",5) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom) - ..() - new/obj/effect/decal/cleanable/pie_smudge(src.loc) - src.visible_message("\The [src.name] splats.","You hear a splat.") - qdel(src) - -/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis - name = "Berry Clafoutis" - desc = "No black birds, this is a good sign." - icon_state = "berryclafoutis" - trash = /obj/item/trash/plate - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 4 - nutriment_desc = list("sweetness" = 2, "pie" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis/New() - ..() - reagents.add_reagent("berryjuice", 5) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/waffles - name = "waffles" - desc = "Mmm, waffles" - icon_state = "waffles" - trash = /obj/item/trash/waffles - filling_color = "#E6DEB5" - center_of_mass = list("x"=15, "y"=11) - nutriment_amt = 8 - nutriment_desc = list("waffle" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/waffles/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/eggplantparm - name = "Eggplant Parmigiana" - desc = "The only good recipe for eggplant." - icon_state = "eggplantparm" - trash = /obj/item/trash/plate - filling_color = "#4D2F5E" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 6 - nutriment_desc = list("cheese" = 3, "eggplant" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/eggplantparm/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/soylentgreen - name = "Soylent Green" - desc = "Not made of people. Honest." //Totally people. - icon_state = "soylent_green" - trash = /obj/item/trash/waffles - filling_color = "#B8E6B5" - center_of_mass = list("x"=15, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/soylentgreen/New() - ..() - reagents.add_reagent("protein", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/soylenviridians - name = "Soylen Virdians" - desc = "Not made of people. Honest." //Actually honest for once. - icon_state = "soylent_yellow" - trash = /obj/item/trash/waffles - filling_color = "#E6FA61" - center_of_mass = list("x"=15, "y"=11) - nutriment_amt = 10 - nutriment_desc = list("some sort of protein" = 10) //seasoned VERY well. - -/obj/item/weapon/reagent_containers/food/snacks/soylenviridians/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatpie - name = "Meat-pie" - icon_state = "meatpie" - desc = "An old barber recipe, very delicious!" - trash = /obj/item/trash/plate - filling_color = "#948051" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/meatpie/New() - ..() - reagents.add_reagent("protein", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tofupie - name = "Tofu-pie" - icon_state = "meatpie" - desc = "A delicious tofu pie." - trash = /obj/item/trash/plate - filling_color = "#FFFEE0" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 10 - nutriment_desc = list("tofu" = 2, "pie" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/tofupie/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/amanita_pie - name = "amanita pie" - desc = "Sweet and tasty poison pie." - icon_state = "amanita_pie" - filling_color = "#FFCCCC" - center_of_mass = list("x"=17, "y"=9) - nutriment_amt = 5 - nutriment_desc = list("sweetness" = 3, "mushroom" = 3, "pie" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/amanita_pie/New() - ..() - reagents.add_reagent("amatoxin", 3) - reagents.add_reagent("psilocybin", 1) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/plump_pie - name = "plump pie" - desc = "I bet you love stuff made out of plump helmets!" - icon_state = "plump_pie" - filling_color = "#B8279B" - center_of_mass = list("x"=17, "y"=9) - nutriment_amt = 8 - nutriment_desc = list("heartiness" = 2, "mushroom" = 3, "pie" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/plump_pie/New() - ..() - if(prob(10)) - name = "exceptional plump pie" - desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("tricordrazine", 5) - bitesize = 2 - else - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/xemeatpie - name = "Xeno-pie" - icon_state = "xenomeatpie" - desc = "A delicious meatpie. Probably heretical." - trash = /obj/item/trash/plate - filling_color = "#43DE18" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/xemeatpie/New() - ..() - reagents.add_reagent("protein", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/wingfangchu - name = "Wing Fang Chu" - desc = "A savory dish of alien wing wang in soy." - icon_state = "wingfangchu" - trash = /obj/item/trash/snack_bowl - filling_color = "#43DE18" - center_of_mass = list("x"=17, "y"=9) - -/obj/item/weapon/reagent_containers/food/snacks/wingfangchu/New() - ..() - reagents.add_reagent("protein", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/human/kabob - name = "-kabob" - icon_state = "kabob" - desc = "A human meat, on a stick." - trash = /obj/item/stack/rods - filling_color = "#A85340" - center_of_mass = list("x"=17, "y"=15) - -/obj/item/weapon/reagent_containers/food/snacks/human/kabob/New() - ..() - reagents.add_reagent("protein", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/monkeykabob - name = "Meat-kabob" - icon_state = "kabob" - desc = "Delicious meat, on a stick." - trash = /obj/item/stack/rods - filling_color = "#A85340" - center_of_mass = list("x"=17, "y"=15) - -/obj/item/weapon/reagent_containers/food/snacks/monkeykabob/New() - ..() - reagents.add_reagent("protein", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tofukabob - name = "Tofu-kabob" - icon_state = "kabob" - desc = "Vegan meat, on a stick." - trash = /obj/item/stack/rods - filling_color = "#FFFEE0" - - center_of_mass = list("x"=17, "y"=15) - nutriment_amt = 8 - nutriment_desc = list("tofu" = 3, "metal" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/tofukabob/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cubancarp - name = "Cuban Carp" - desc = "A sandwich that burns your tongue and then leaves it numb!" - icon_state = "cubancarp" - trash = /obj/item/trash/plate - filling_color = "#E9ADFF" - center_of_mass = list("x"=12, "y"=5) - nutriment_amt = 3 - nutriment_desc = list("toasted bread" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cubancarp/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("carpotoxin", 3) - reagents.add_reagent("capsaicin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/popcorn - name = "Popcorn" - desc = "Now let's find some cinema." - icon_state = "popcorn" - trash = /obj/item/trash/popcorn - var/unpopped = 0 - filling_color = "#FFFAD4" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 2 - nutriment_desc = list("popcorn" = 3) - - -/obj/item/weapon/reagent_containers/food/snacks/popcorn/New() - ..() - unpopped = rand(1,10) - bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 - -/obj/item/weapon/reagent_containers/food/snacks/popcorn/On_Consume() - if(prob(unpopped)) //lol ...what's the point? - usr << "You bite down on an un-popped kernel!" - unpopped = max(0, unpopped-1) - ..() - -/obj/item/weapon/reagent_containers/food/snacks/sosjerky - name = "Scaredy's Private Reserve Beef Jerky" - icon_state = "sosjerky" - desc = "Beef jerky made from the finest space cows." - trash = /obj/item/trash/sosjerky - filling_color = "#631212" - center_of_mass = list("x"=15, "y"=9) - -/obj/item/weapon/reagent_containers/food/snacks/sosjerky/New() - ..() - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/no_raisin - name = "4no Raisins" - icon_state = "4no_raisins" - desc = "Best raisins in the universe. Not sure why." - trash = /obj/item/trash/raisins - filling_color = "#343834" - center_of_mass = list("x"=15, "y"=4) - nutriment_amt = 6 - nutriment_desc = list("dried raisins" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/no_raisin/New() - ..() - reagents.add_reagent("nutriment", 6) - -/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie - name = "Space Twinkie" - icon_state = "space_twinkie" - desc = "Guaranteed to survive longer then you will." - filling_color = "#FFE591" - center_of_mass = list("x"=15, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie/New() - ..() - reagents.add_reagent("sugar", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers - name = "Cheesie Honkers" - icon_state = "cheesie_honkers" - desc = "Bite sized cheesie snacks that will honk all over your mouth" - trash = /obj/item/trash/cheesie - filling_color = "#FFA305" - center_of_mass = list("x"=15, "y"=9) - nutriment_amt = 4 - nutriment_desc = list("cheese" = 5, "chips" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/syndicake - name = "Syndi-Cakes" - icon_state = "syndi_cakes" - desc = "An extremely moist snack cake that tastes just as good after being nuked." - filling_color = "#FF5D05" - center_of_mass = list("x"=16, "y"=10) - trash = /obj/item/trash/syndi_cakes - nutriment_amt = 4 - nutriment_desc = list("sweetness" = 3, "cake" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/syndicake/New() - ..() - reagents.add_reagent("doctorsdelight", 5) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato - name = "Loaded Baked Potato" - desc = "Totally baked." - icon_state = "loadedbakedpotato" - filling_color = "#9C7A68" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 3 - nutriment_desc = list("baked potato" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fries - name = "Space Fries" - desc = "AKA: French Fries, Freedom Fries, etc." - icon_state = "fries" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("fresh fries" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/fries/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/mashedpotato - name = "Mashed Potato" - desc = "Pillowy mounds of mashed potato." - icon_state = "mashedpotato" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("fluffy mashed potatoes" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/mashedpotato/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/bangersandmash - name = "Bangers and Mash" - desc = "An English treat." - icon_state = "bangersandmash" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("fluffy potato" = 3, "sausage" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/bangersandmash/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/cheesymash - name = "Cheesy Mashed Potato" - desc = "The only thing that could make mash better." - icon_state = "cheesymash" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("cheesy potato" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/cheesymash/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/blackpudding - name = "Black Pudding" - desc = "This doesn't seem like a pudding at all." - icon_state = "blackpudding" - filling_color = "#FF0000" - center_of_mass = list("x"=16, "y"=7) - -/obj/item/weapon/reagent_containers/food/snacks/blackpudding/New() - ..() - reagents.add_reagent("protein", 2) - reagents.add_reagent("blood", 5) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/soydope - name = "Soy Dope" - desc = "Dope from a soy." - icon_state = "soydope" - trash = /obj/item/trash/plate - filling_color = "#C4BF76" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 2 - nutriment_desc = list("slime" = 2, "soy" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/soydope/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/spagetti - name = "Spaghetti" - desc = "A bundle of raw spaghetti." - icon_state = "spagetti" - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=16) - nutriment_amt = 1 - nutriment_desc = list("noodles" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/spagetti/New() - ..() - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/cheesyfries - name = "Cheesy Fries" - desc = "Fries. Covered in cheese. Duh." - icon_state = "cheesyfries" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("fresh fries" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cheesyfries/New() - ..() - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fortunecookie - name = "Fortune cookie" - desc = "A true prophecy in each cookie!" - icon_state = "fortune_cookie" - filling_color = "#E8E79E" - center_of_mass = list("x"=15, "y"=14) - nutriment_amt = 3 - nutriment_desc = list("fortune cookie" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/badrecipe - name = "Burned mess" - desc = "Someone should be demoted from chef for this." - icon_state = "badrecipe" - filling_color = "#211F02" - center_of_mass = list("x"=16, "y"=12) - -/obj/item/weapon/reagent_containers/food/snacks/badrecipe/New() - ..() - reagents.add_reagent("toxin", 1) - reagents.add_reagent("carbon", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatsteak - name = "Meat steak" - desc = "A piece of hot spicy meat." - icon_state = "meatstake" - trash = /obj/item/trash/plate - filling_color = "#7A3D11" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/meatsteak/New() - ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("sodiumchloride", 1) - reagents.add_reagent("blackpepper", 1) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff - name = "Spacy Liberty Duff" - desc = "Jello gelatin, from Alfred Hubbard's cookbook" - icon_state = "spacylibertyduff" - trash = /obj/item/trash/snack_bowl - filling_color = "#42B873" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 6 - nutriment_desc = list("mushroom" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff/New() - ..() - reagents.add_reagent("psilocybin", 6) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/amanitajelly - name = "Amanita Jelly" - desc = "Looks curiously toxic" - icon_state = "amanitajelly" - trash = /obj/item/trash/snack_bowl - filling_color = "#ED0758" - center_of_mass = list("x"=16, "y"=5) - nutriment_amt = 6 - nutriment_desc = list("jelly" = 3, "mushroom" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/New() - ..() - reagents.add_reagent("amatoxin", 6) - reagents.add_reagent("psilocybin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/poppypretzel - name = "Poppy pretzel" - desc = "It's all twisted up!" - icon_state = "poppypretzel" - bitesize = 2 - filling_color = "#916E36" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 5 - nutriment_desc = list("poppy seeds" = 2, "pretzel" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/poppypretzel/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatballsoup - name = "Meatball soup" - desc = "You've got balls kid, BALLS!" - icon_state = "meatballsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#785210" - center_of_mass = list("x"=16, "y"=8) - -/obj/item/weapon/reagent_containers/food/snacks/meatballsoup/New() - ..() - reagents.add_reagent("protein", 8) - reagents.add_reagent("water", 5) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/slimesoup - name = "slime soup" - desc = "If no water is available, you may substitute tears." - icon_state = "slimesoup" //nonexistant? - filling_color = "#C4DBA0" - -/obj/item/weapon/reagent_containers/food/snacks/slimesoup/New() - ..() - reagents.add_reagent("slimejelly", 5) - reagents.add_reagent("water", 10) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/bloodsoup - name = "Tomato soup" - desc = "Smells like copper." - icon_state = "tomatosoup" - filling_color = "#FF0000" - center_of_mass = list("x"=16, "y"=7) - -/obj/item/weapon/reagent_containers/food/snacks/bloodsoup/New() - ..() - reagents.add_reagent("protein", 2) - reagents.add_reagent("blood", 10) - reagents.add_reagent("water", 5) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/clownstears - name = "Clown's Tears" - desc = "Not very funny." - icon_state = "clownstears" - filling_color = "#C4FBFF" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 4 - nutriment_desc = list("salt" = 1, "the worst joke" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/clownstears/New() - ..() - reagents.add_reagent("banana", 5) - reagents.add_reagent("water", 10) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup - name = "Vegetable soup" - desc = "A true vegan meal" //TODO - icon_state = "vegetablesoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#AFC4B5" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 8 - nutriment_desc = list("carot" = 2, "corn" = 2, "eggplant" = 2, "potato" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup/New() - ..() - reagents.add_reagent("water", 5) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/nettlesoup - name = "Nettle soup" - desc = "To think, the botanist would've beat you to death with one of these." - icon_state = "nettlesoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#AFC4B5" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 8 - nutriment_desc = list("salad" = 4, "egg" = 2, "potato" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/nettlesoup/New() - ..() - reagents.add_reagent("water", 5) - reagents.add_reagent("tricordrazine", 5) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/mysterysoup - name = "Mystery soup" - desc = "The mystery is, why aren't you eating it?" - icon_state = "mysterysoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#F082FF" - center_of_mass = list("x"=16, "y"=6) - nutriment_amt = 1 - nutriment_desc = list("backwash" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/mysterysoup/New() - ..() - var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10) - switch(mysteryselect) - if(1) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("capsaicin", 3) - reagents.add_reagent("tomatojuice", 2) - if(2) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("frostoil", 3) - reagents.add_reagent("tomatojuice", 2) - if(3) - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("water", 5) - reagents.add_reagent("tricordrazine", 5) - if(4) - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("water", 10) - if(5) - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("banana", 10) - if(6) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("blood", 10) - if(7) - reagents.add_reagent("slimejelly", 10) - reagents.add_reagent("water", 10) - if(8) - reagents.add_reagent("carbon", 10) - reagents.add_reagent("toxin", 10) - if(9) - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("tomatojuice", 10) - if(10) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("tomatojuice", 5) - reagents.add_reagent("imidazoline", 5) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/wishsoup - name = "Wish Soup" - desc = "I wish this was soup." - icon_state = "wishsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#D1F4FF" - center_of_mass = list("x"=16, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/wishsoup/New() - ..() - reagents.add_reagent("water", 10) - bitesize = 5 - if(prob(25)) - src.desc = "A wish come true!" - reagents.add_reagent("nutriment", 8, list("something good" = 8)) - -/obj/item/weapon/reagent_containers/food/snacks/hotchili - name = "Hot Chili" - desc = "A five alarm Texan Chili!" - icon_state = "hotchili" - trash = /obj/item/trash/snack_bowl - filling_color = "#FF3C00" - center_of_mass = list("x"=15, "y"=9) - nutriment_amt = 3 - nutriment_desc = list("chilli peppers" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/hotchili/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("capsaicin", 3) - reagents.add_reagent("tomatojuice", 2) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/coldchili - name = "Cold Chili" - desc = "This slush is barely a liquid!" - icon_state = "coldchili" - filling_color = "#2B00FF" - center_of_mass = list("x"=15, "y"=9) - trash = /obj/item/trash/snack_bowl - nutriment_amt = 3 - nutriment_desc = list("ice peppers" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/coldchili/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("frostoil", 3) - reagents.add_reagent("tomatojuice", 2) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube - name = "monkey cube" - desc = "Just add water!" - flags = OPENCONTAINER - icon_state = "monkeycube" - bitesize = 12 - filling_color = "#ADAC7F" - center_of_mass = list("x"=16, "y"=14) - - var/wrapped = 0 - var/monkey_type = "Monkey" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/New() - ..() - reagents.add_reagent("protein", 10) - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user as mob) - if(wrapped) - Unwrap(user) - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand() - src.visible_message("\The [src] expands!") - var/mob/living/carbon/human/H = new(get_turf(src)) - H.set_species(monkey_type) - H.real_name = H.species.get_random_name() - H.name = H.real_name - if(ismob(loc)) - var/mob/M = loc - M.unEquip(src) - qdel(src) - return 1 - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Unwrap(mob/user as mob) - icon_state = "monkeycube" - desc = "Just add water!" - to_chat(user, "You unwrap the cube.") - wrapped = 0 - flags |= OPENCONTAINER - return - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/On_Consume(var/mob/M) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - H.visible_message("A screeching creature bursts out of [M]'s chest!") - var/obj/item/organ/external/organ = H.get_organ(BP_TORSO) - organ.take_damage(50, 0, 0, "Animal escaping the ribcage") - Expand() - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/on_reagent_change() - if(reagents.has_reagent("water")) - Expand() - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped - desc = "Still wrapped in some paper." - icon_state = "monkeycubewrap" - flags = 0 - wrapped = 1 - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube - name = "farwa cube" - monkey_type = "Farwa" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube - name = "farwa cube" - monkey_type = "Farwa" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube - name = "stok cube" - monkey_type = "Stok" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube - name = "stok cube" - monkey_type = "Stok" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube - name = "neaera cube" - monkey_type = "Neaera" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube - name = "neaera cube" - monkey_type = "Neaera" - -/obj/item/weapon/reagent_containers/food/snacks/spellburger - name = "Spell Burger" - desc = "This is absolutely Ei Nath." - icon_state = "spellburger" - filling_color = "#D505FF" - nutriment_amt = 6 - nutriment_desc = list("magic" = 3, "buns" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/spellburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger - name = "Big Bite Burger" - desc = "Forget the Big Mac. THIS is the future!" - icon_state = "bigbiteburger" - filling_color = "#E3D681" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("buns" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger/New() - ..() - reagents.add_reagent("protein", 10) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/enchiladas - name = "Enchiladas" - desc = "Viva La Mexico!" - icon_state = "enchiladas" - trash = /obj/item/trash/tray - filling_color = "#A36A1F" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 2 - nutriment_desc = list("tortilla" = 3, "corn" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/enchiladas/New() - ..() - reagents.add_reagent("protein", 6) - reagents.add_reagent("capsaicin", 6) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight - name = "monkey's Delight" - desc = "Eeee Eee!" - icon_state = "monkeysdelight" - trash = /obj/item/trash/tray - filling_color = "#5C3C11" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight/New() - ..() - reagents.add_reagent("protein", 10) - reagents.add_reagent("banana", 5) - reagents.add_reagent("blackpepper", 1) - reagents.add_reagent("sodiumchloride", 1) - bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/baguette - name = "Baguette" - desc = "Bon appetit!" - icon_state = "baguette" - filling_color = "#E3D796" - center_of_mass = list("x"=18, "y"=12) - nutriment_amt = 6 - nutriment_desc = list("french bread" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/baguette/New() - ..() - reagents.add_reagent("blackpepper", 1) - reagents.add_reagent("sodiumchloride", 1) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/fishandchips - name = "Fish and Chips" - desc = "I do say so myself chap." - icon_state = "fishandchips" - filling_color = "#E3D796" - center_of_mass = list("x"=16, "y"=16) - nutriment_amt = 3 - nutriment_desc = list("salt" = 1, "chips" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/fishandchips/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("carpotoxin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/sandwich - name = "Sandwich" - desc = "A grand creation of meat, cheese, bread, and several leaves of lettuce! Arthur Dent would be proud." - icon_state = "sandwich" - trash = /obj/item/trash/plate - filling_color = "#D9BE29" - center_of_mass = list("x"=16, "y"=4) - nutriment_amt = 3 - nutriment_desc = list("bread" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/sandwich/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich - name = "Toasted Sandwich" - desc = "Now if you only had a pepper bar." - icon_state = "toastedsandwich" - trash = /obj/item/trash/plate - filling_color = "#D9BE29" - center_of_mass = list("x"=16, "y"=4) - nutriment_amt = 3 - nutriment_desc = list("toasted bread" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("carbon", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/grilledcheese - name = "Grilled Cheese Sandwich" - desc = "Goes great with Tomato soup!" - icon_state = "toastedsandwich" - trash = /obj/item/trash/plate - filling_color = "#D9BE29" - nutriment_amt = 3 - nutriment_desc = list("toasted bread" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/grilledcheese/New() - ..() - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tomatosoup - name = "Tomato Soup" - desc = "Drinking this feels like being a vampire! A tomato vampire..." - icon_state = "tomatosoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#D92929" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 5 - nutriment_desc = list("soup" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/tomatosoup/New() - ..() - reagents.add_reagent("tomatojuice", 10) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/onionsoup - name = "Onion Soup" - desc = "A soup with layers." - icon_state = "onionsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#E0C367" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 5 - nutriment_desc = list("onion" = 2, "soup" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/onionsoup/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/onionrings - name = "Onion Rings" - desc = "Crispy rings." - icon_state = "onionrings" - trash = /obj/item/trash/plate - filling_color = "#E0C367" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 5 - nutriment_desc = list("onion" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/onionrings/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles - name = "Roffle Waffles" - desc = "Waffles from Roffle. Co." - icon_state = "rofflewaffles" - trash = /obj/item/trash/waffles - filling_color = "#FF00F7" - center_of_mass = list("x"=15, "y"=11) - nutriment_amt = 8 - nutriment_desc = list("waffle" = 7, "sweetness" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles/New() - ..() - reagents.add_reagent("psilocybin", 8) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/stew - name = "Stew" - desc = "A nice and warm stew. Healthy and strong." - icon_state = "stew" - filling_color = "#9E673A" - center_of_mass = list("x"=16, "y"=5) - nutriment_amt = 6 - nutriment_desc = list("tomato" = 2, "potato" = 2, "carrot" = 2, "eggplant" = 2, "mushroom" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/stew/New() - ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("tomatojuice", 5) - reagents.add_reagent("imidazoline", 5) - reagents.add_reagent("water", 5) - bitesize = 10 - -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast - name = "Jellied Toast" - desc = "A slice of bread covered with delicious jam." - icon_state = "jellytoast" - trash = /obj/item/trash/plate - filling_color = "#B572AB" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 1 - nutriment_desc = list("toasted bread" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry/New() - ..() - reagents.add_reagent("cherryjelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime/New() - ..() - reagents.add_reagent("slimejelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/jellyburger - name = "Jelly Burger" - desc = "Culinary delight..?" - icon_state = "jellyburger" - filling_color = "#B572AB" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 5 - nutriment_desc = list("buns" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/jellyburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime/New() - ..() - reagents.add_reagent("slimejelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry/New() - ..() - reagents.add_reagent("cherryjelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/milosoup - name = "Milosoup" - desc = "The universes best soup! Yum!!!" - icon_state = "milosoup" - trash = /obj/item/trash/snack_bowl - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 8 - nutriment_desc = list("soy" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/milosoup/New() - ..() - reagents.add_reagent("water", 5) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat - name = "Stewed Soy Meat" - desc = "Even non-vegetarians will LOVE this!" - icon_state = "stewedsoymeat" - trash = /obj/item/trash/plate - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 8 - nutriment_desc = list("soy" = 4, "tomato" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti - name = "Boiled Spaghetti" - desc = "A plain dish of noodles, this sucks." - icon_state = "spagettiboiled" - trash = /obj/item/trash/plate - filling_color = "#FCEE81" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 2 - nutriment_desc = list("noodles" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/boiledrice - name = "Boiled Rice" - desc = "A boring dish of boring rice." - icon_state = "boiledrice" - trash = /obj/item/trash/snack_bowl - filling_color = "#FFFBDB" - center_of_mass = list("x"=17, "y"=11) - nutriment_amt = 2 - nutriment_desc = list("rice" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/boiledrice/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/ricepudding - name = "Rice Pudding" - desc = "Where's the jam?" - icon_state = "rpudding" - trash = /obj/item/trash/snack_bowl - filling_color = "#FFFBDB" - center_of_mass = list("x"=17, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("rice" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/ricepudding/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/pastatomato - name = "Spaghetti" - desc = "Spaghetti and crushed tomatoes. Just like your abusive father used to make!" - icon_state = "pastatomato" - trash = /obj/item/trash/plate - filling_color = "#DE4545" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 6 - nutriment_desc = list("tomato" = 3, "noodles" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/pastatomato/New() - ..() - reagents.add_reagent("tomatojuice", 10) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti - name = "Spaghetti & Meatballs" - desc = "Now thats a nic'e meatball!" - icon_state = "meatballspagetti" - trash = /obj/item/trash/plate - filling_color = "#DE4545" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 4 - nutriment_desc = list("noodles" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti/New() - ..() - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/spesslaw - name = "Spesslaw" - desc = "A lawyers favourite" - icon_state = "spesslaw" - filling_color = "#DE4545" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 4 - nutriment_desc = list("noodles" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/spesslaw/New() - ..() - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/carrotfries - name = "Carrot Fries" - desc = "Tasty fries from fresh Carrots." - icon_state = "carrotfries" - trash = /obj/item/trash/plate - filling_color = "#FAA005" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 3 - nutriment_desc = list("carrot" = 3, "salt" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/carrotfries/New() - ..() - reagents.add_reagent("imidazoline", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/superbiteburger - name = "Super Bite Burger" - desc = "This is a mountain of a burger. FOOD!" - icon_state = "superbiteburger" - filling_color = "#CCA26A" - center_of_mass = list("x"=16, "y"=3) - nutriment_amt = 25 - nutriment_desc = list("buns" = 25) - -/obj/item/weapon/reagent_containers/food/snacks/superbiteburger/New() - ..() - reagents.add_reagent("protein", 25) - bitesize = 10 - -/obj/item/weapon/reagent_containers/food/snacks/candiedapple - name = "Candied Apple" - desc = "An apple coated in sugary sweetness." - icon_state = "candiedapple" - filling_color = "#F21873" - center_of_mass = list("x"=15, "y"=13) - nutriment_amt = 3 - nutriment_desc = list("apple" = 3, "caramel" = 3, "sweetness" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/candiedapple/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/applepie - name = "Apple Pie" - desc = "A pie containing sweet sweet love... or apple." - icon_state = "applepie" - filling_color = "#E0EDC5" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 4 - nutriment_desc = list("sweetness" = 2, "apple" = 2, "pie" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/applepie/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/cherrypie - name = "Cherry Pie" - desc = "Taste so good, make a grown man cry." - icon_state = "cherrypie" - filling_color = "#FF525A" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("sweetness" = 2, "cherry" = 2, "pie" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/cherrypie/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/twobread - name = "Two Bread" - desc = "It is very bitter and winy." - icon_state = "twobread" - filling_color = "#DBCC9A" - center_of_mass = list("x"=15, "y"=12) - nutriment_amt = 2 - nutriment_desc = list("sourness" = 2, "bread" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/twobread/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich - name = "Jelly Sandwich" - desc = "You wish you had some peanut butter to go with this..." - icon_state = "jellysandwich" - trash = /obj/item/trash/plate - filling_color = "#9E3A78" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 2 - nutriment_desc = list("bread" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime/New() - ..() - reagents.add_reagent("slimejelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry/New() - ..() - reagents.add_reagent("cherryjelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore - name = "Boiled slime Core" - desc = "A boiled red thing." - icon_state = "boiledslimecore" //nonexistant? - -/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore/New() - ..() - reagents.add_reagent("slimejelly", 5) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/mint - name = "mint" - desc = "it is only wafer thin." - icon_state = "mint" - filling_color = "#F2F2F2" - center_of_mass = list("x"=16, "y"=14) - -/obj/item/weapon/reagent_containers/food/snacks/mint/New() - ..() - reagents.add_reagent("mint", 1) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup - name = "chantrelle soup" - desc = "A delicious and hearty mushroom soup." - icon_state = "mushroomsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#E386BF" - center_of_mass = list("x"=17, "y"=10) - nutriment_amt = 8 - nutriment_desc = list("mushroom" = 8, "milk" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit - name = "plump helmet biscuit" - desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour." - icon_state = "phelmbiscuit" - filling_color = "#CFB4C4" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 5 - nutriment_desc = list("mushroom" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/New() - ..() - if(prob(10)) - name = "exceptional plump helmet biscuit" - desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" - reagents.add_reagent("nutriment", 8) - bitesize = 2 - else - reagents.add_reagent("nutriment", 5) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/chawanmushi - name = "chawanmushi" - desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat." - icon_state = "chawanmushi" - trash = /obj/item/trash/snack_bowl - filling_color = "#F0F2E4" - center_of_mass = list("x"=17, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/chawanmushi/New() - ..() - reagents.add_reagent("protein", 5) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/beetsoup - name = "beet soup" - desc = "Wait, how do you spell it again..?" - icon_state = "beetsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#FAC9FF" - center_of_mass = list("x"=15, "y"=8) - nutriment_amt = 8 - nutriment_desc = list("tomato" = 4, "beet" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/beetsoup/New() - ..() - name = pick(list("borsch","bortsch","borstch","borsh","borshch","borscht")) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tossedsalad - name = "tossed salad" - desc = "A proper salad, basic and simple, with little bits of carrot, tomato and apple intermingled. Vegan!" - icon_state = "herbsalad" - trash = /obj/item/trash/snack_bowl - filling_color = "#76B87F" - center_of_mass = list("x"=17, "y"=11) - nutriment_amt = 8 - nutriment_desc = list("salad" = 2, "tomato" = 2, "carrot" = 2, "apple" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/tossedsalad/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/validsalad - name = "valid salad" - desc = "It's just a salad of questionable 'herbs' with meatballs and fried potato slices. Nothing suspicious about it." - icon_state = "validsalad" - trash = /obj/item/trash/snack_bowl - filling_color = "#76B87F" - center_of_mass = list("x"=17, "y"=11) - nutriment_amt = 6 - nutriment_desc = list("100% real salad") - -/obj/item/weapon/reagent_containers/food/snacks/validsalad/New() - ..() - reagents.add_reagent("protein", 2) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/appletart - name = "golden apple streusel tart" - desc = "A tasty dessert that won't make it through a metal detector." - icon_state = "gappletart" - trash = /obj/item/trash/plate - filling_color = "#FFFF00" - center_of_mass = list("x"=16, "y"=18) - nutriment_amt = 8 - nutriment_desc = list("apple" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/appletart/New() - ..() - reagents.add_reagent("gold", 5) - bitesize = 3 - -/////////////////////////////////////////////////Sliceable//////////////////////////////////////// -// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels - -// sliceable is just an organization type path, it doesn't have any additional code or variables tied to it. - -/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 eloquent gentleman." - icon_state = "meatbread" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/meatbread - slices_num = 5 - filling_color = "#FF7575" - 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/slice/meatbread - 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"=16) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread - -/obj/item/weapon/reagent_containers/food/snacks/slice/meatbread/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/slice/xenomeatbread - slices_num = 5 - filling_color = "#8AFF75" - center_of_mass = list("x"=16, "y"=9) - 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/slice/xenomeatbread - name = "xenomeatbread slice" - desc = "A slice of delicious meatbread. Extra Heretical." - icon_state = "xenobreadslice" - trash = /obj/item/trash/plate - 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/slice/xenomeatbread/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/slice/bananabread - slices_num = 5 - filling_color = "#EDE5AD" - center_of_mass = list("x"=16, "y"=9) - 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/slice/bananabread - name = "Banana-nut bread slice" - desc = "A slice of delicious banana bread." - icon_state = "bananabreadslice" - trash = /obj/item/trash/plate - 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/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/slice/tofubread - slices_num = 5 - filling_color = "#F7FFE0" - center_of_mass = list("x"=16, "y"=9) - nutriment_desc = list("tofu" = 10) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/slice/tofubread - name = "Tofubread slice" - desc = "A slice of delicious tofubread." - icon_state = "tofubreadslice" - trash = /obj/item/trash/plate - 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/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/slice/carrotcake - slices_num = 5 - filling_color = "#FFD675" - center_of_mass = list("x"=16, "y"=10) - 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/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" - trash = /obj/item/trash/plate - 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/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/slice/braincake - slices_num = 5 - filling_color = "#E6AEDB" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("cake" = 10, "sweetness" = 10, "slime" = 15) - nutriment_amt = 5 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake/New() - ..() - reagents.add_reagent("protein", 25) - reagents.add_reagent("alkysine", 10) - bitesize = 2 - -/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" - trash = /obj/item/trash/plate - 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/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/slice/cheesecake - slices_num = 5 - filling_color = "#FAF7AF" - center_of_mass = list("x"=16, "y"=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/slice/cheesecake - name = "Cheese Cake slice" - 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/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/slice/plaincake - slices_num = 5 - filling_color = "#F7EDD5" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("cake" = 10, "sweetness" = 10, "vanilla" = 15) - nutriment_amt = 20 - -/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" - trash = /obj/item/trash/plate - 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/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/slice/orangecake - slices_num = 5 - filling_color = "#FADA8E" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("cake" = 10, "sweetness" = 10, "orange" = 15) - nutriment_amt = 20 - -/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" - trash = /obj/item/trash/plate - 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/sliceable/limecake - name = "Lime Cake" - desc = "A cake with added lime." - icon_state = "limecake" - 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_desc = list("cake" = 10, "sweetness" = 10, "lime" = 15) - nutriment_amt = 20 - - -/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" - trash = /obj/item/trash/plate - 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/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/slice/lemoncake - slices_num = 5 - filling_color = "#FAFA8E" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("cake" = 10, "sweetness" = 10, "lemon" = 15) - nutriment_amt = 20 - - -/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" - trash = /obj/item/trash/plate - 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/slice/lemoncake/filled - filled = TRUE - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake - name = "Chocolate Cake" - desc = "A cake with added chocolate." - icon_state = "chocolatecake" - 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_desc = list("cake" = 10, "sweetness" = 10, "chocolate" = 15) - nutriment_amt = 20 - -/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" - trash = /obj/item/trash/plate - 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/slice/chocolatecake/filled - filled = TRUE - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel - name = "Cheese wheel" - desc = "A big wheel of delcious Cheddar." - icon_state = "cheesewheel" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - slices_num = 5 - filling_color = "#FFF700" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("cheese" = 10) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel/New() - ..() - reagents.add_reagent("protein", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheesewedge - name = "Cheese wedge" - desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far." - icon_state = "cheesewedge" - filling_color = "#FFF700" - bitesize = 2 - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake - name = "Birthday Cake" - desc = "Happy Birthday..." - icon_state = "birthdaycake" - 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_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/slice/birthdaycake - name = "Birthday Cake slice" - desc = "A slice of your birthday." - icon_state = "birthdaycakeslice" - trash = /obj/item/trash/plate - 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/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/slice/bread - slices_num = 5 - filling_color = "#FFE396" - center_of_mass = list("x"=16, "y"=9) - 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/slice/bread - name = "Bread slice" - desc = "A slice of home." - icon_state = "breadslice" - trash = /obj/item/trash/plate - 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/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/slice/creamcheesebread - slices_num = 5 - filling_color = "#FFF896" - center_of_mass = list("x"=16, "y"=9) - 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/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"=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/watermelonslice - name = "Watermelon Slice" - desc = "A slice of watery goodness." - icon_state = "watermelonslice" - filling_color = "#FF3867" - bitesize = 2 - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake - name = "Apple Cake" - desc = "A cake centred with apples." - icon_state = "applecake" - 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_desc = list("cake" = 10, "sweetness" = 10, "apple" = 15) - nutriment_amt = 15 - -/obj/item/weapon/reagent_containers/food/snacks/slice/applecake - name = "Apple Cake slice" - desc = "A slice of heavenly cake." - icon_state = "applecakeslice" - trash = /obj/item/trash/plate - 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/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/slice/pumpkinpie - slices_num = 5 - filling_color = "#F5B951" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("pie" = 5, "cream" = 5, "pumpkin" = 5) - nutriment_amt = 15 - -/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" - trash = /obj/item/trash/plate - 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/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"=16, "y"=6) - nutriment_desc = list("salt" = 1, "cracker" = 2) - nutriment_amt = 1 - - - -/////////////////////////////////////////////////PIZZA//////////////////////////////////////// - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza - slices_num = 6 - filling_color = "#BAA14C" - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita - name = "Margherita" - desc = "The golden standard of pizzas." - icon_state = "pizzamargherita" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/margherita - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15) - nutriment_amt = 35 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita/New() - ..() - reagents.add_reagent("protein", 5) - reagents.add_reagent("tomatojuice", 6) - bitesize = 2 - -/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"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita - -/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/slice/meatpizza - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza/New() - ..() - reagents.add_reagent("protein", 34) - reagents.add_reagent("tomatojuice", 6) - bitesize = 2 - -/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"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza - -/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." - icon_state = "mushroompizza" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - 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/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"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza - -/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." - icon_state = "vegetablepizza" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - 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() - ..() - reagents.add_reagent("protein", 5) - reagents.add_reagent("tomatojuice", 6) - reagents.add_reagent("imidazoline", 12) - bitesize = 2 - -/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." - icon_state = "vegetablepizzaslice" - filling_color = "#BAA14C" - bitesize = 2 - 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/slice/vegetablepizza/filled - filled = TRUE - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza - name = "moldy pizza" - desc = "This pizza might actually be alive. There's mold all over." - icon_state = "oldpizza" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/oldpizza - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("stale pizza crust" = 10, "moldy tomato" = 10, "moldy cheese" = 5) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza/New() - ..() - reagents.add_reagent("protein", 5) - reagents.add_reagent("tomatojuice", 6) - reagents.add_reagent("mold", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/slice/oldpizza - name = "moldy pizza slice" - desc = "This used to be pizza..." - icon_state = "old_pizza" - filling_color = "#BAA14C" - bitesize = 2 - center_of_mass = list("x"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza - -/obj/item/pizzabox - name = "pizza box" - desc = "A box suited for pizzas." - icon = 'icons/obj/food.dmi' - icon_state = "pizzabox1" - - var/open = 0 // Is the box open? - var/ismessy = 0 // Fancy mess on the lid - var/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pizza // Content pizza - var/list/boxes = list() // If the boxes are stacked, they come here - var/boxtag = "" - -/obj/item/pizzabox/update_icon() - - overlays = list() - - // Set appropriate description - if( open && pizza ) - desc = "A box suited for pizzas. It appears to have a [pizza.name] inside." - 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 != "" ) - desc = "[desc] The box on top has a tag, it reads: '[toptag]'." - else - desc = "A box suited for pizzas." - - if( boxtag != "" ) - desc = "[desc] The box has a tag, it reads: '[boxtag]'." - - // Icon states and overlays - if( open ) - if( ismessy ) - icon_state = "pizzabox_messy" - else - icon_state = "pizzabox_open" - - if( pizza ) - var/image/pizzaimg = image("food.dmi", icon_state = pizza.icon_state) - pizzaimg.pixel_y = -3 - overlays += pizzaimg - - return - else - // Stupid code because byondcode sucks - var/doimgtag = 0 - if( boxes.len > 0 ) - var/obj/item/pizzabox/topbox = boxes[boxes.len] - if( topbox.boxtag != "" ) - doimgtag = 1 - else - if( boxtag != "" ) - doimgtag = 1 - - 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 ) - - if( open && pizza ) - user.put_in_hands( pizza ) - - 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 ) - ..() - return - - var/obj/item/pizzabox/box = boxes[boxes.len] - boxes -= box - - user.put_in_hands( box ) - 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 ) - - if( boxes.len > 0 ) - return - - open = !open - - 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/) ) - var/obj/item/pizzabox/box = I - - 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 ) - 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 ) - - box.update_icon() - update_icon() - - to_chat(user, "You put \the [box] ontop of \the [src]!") - else - to_chat(user, "The stack is too high!") - else - 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( src.open ) - user.drop_item() - I.loc = src - src.pizza = I - - update_icon() - - to_chat(user, "You put \the [I] in \the [src]!") - else - 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( 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 ) - boxtotagto = boxes[boxes.len] - - boxtotagto.boxtag = copytext("[boxtotagto.boxtag][t]", 1, 30) - - update_icon() - return - ..() - -/obj/item/pizzabox/margherita/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita(src) - boxtag = "Margherita Deluxe" - -/obj/item/pizzabox/vegetable/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza(src) - boxtag = "Gourmet Vegatable" - -/obj/item/pizzabox/mushroom/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza(src) - boxtag = "Mushroom Special" - -/obj/item/pizzabox/meat/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza(src) - boxtag = "Meatlover's Supreme" - -/obj/item/pizzabox/old/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza(src) - boxtag = "Deluxe Gourmet" - -/obj/item/weapon/reagent_containers/food/snacks/dionaroast - name = "roast diona" - desc = "It's like an enormous, leathery carrot. With an eye." - icon_state = "dionaroast" - trash = /obj/item/trash/plate - filling_color = "#75754B" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 6 - nutriment_desc = list("a chorus of flavor" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/dionaroast/New() - ..() - reagents.add_reagent("radium", 2) - bitesize = 2 - -/////////////////////////////////////////// -// new old food stuff from bs12 -/////////////////////////////////////////// -/obj/item/weapon/reagent_containers/food/snacks/dough - name = "dough" - desc = "A piece of dough." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "dough" - bitesize = 2 - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 3 - nutriment_desc = list("uncooked dough" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/dough/New() - ..() - reagents.add_reagent("protein", 1) - -// Dough + rolling pin = flat dough -/obj/item/weapon/reagent_containers/food/snacks/dough/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/material/kitchen/rollingpin)) - new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src) - user << "You flatten the dough." - qdel(src) - -// slicable into 3xdoughslices -/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough - name = "flat dough" - desc = "A flattened dough." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "flat dough" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice - slices_num = 3 - center_of_mass = list("x"=16, "y"=16) - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/New() - ..() - reagents.add_reagent("protein", 1) - reagents.add_reagent("nutriment", 3) - -/obj/item/weapon/reagent_containers/food/snacks/doughslice - name = "dough slice" - desc = "A building block of an impressive dish." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "doughslice" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/spagetti - slices_num = 1 - bitesize = 2 - center_of_mass = list("x"=17, "y"=19) - nutriment_amt = 1 - nutriment_desc = list("uncooked dough" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/doughslice/New() - ..() - -/obj/item/weapon/reagent_containers/food/snacks/bun - name = "bun" - desc = "A base for any self-respecting burger." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "bun" - bitesize = 2 - center_of_mass = list("x"=16, "y"=12) - nutriment_amt = 4 - nutriment_desc = "bun" - -/obj/item/weapon/reagent_containers/food/snacks/bun/New() - ..() - -/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/weapon/W as obj, mob/user as mob) - // Bun + meatball = burger - if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/meatball)) - new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src) - user << "You make a burger." - qdel(W) - qdel(src) - - // Bun + cutlet = hamburger - else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/cutlet)) - new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src) - user << "You make a burger." - qdel(W) - qdel(src) - - // Bun + sausage = hotdog - else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/sausage)) - new /obj/item/weapon/reagent_containers/food/snacks/hotdog(src) - user << "You make a hotdog." - qdel(W) - qdel(src) - -// Burger + cheese wedge = cheeseburger -/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob) - if(istype(W))// && !istype(src,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge)) - new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src) - user << "You make a cheeseburger." - qdel(W) - qdel(src) - return - else - ..() - -// Human Burger + cheese wedge = cheeseburger -/obj/item/weapon/reagent_containers/food/snacks/human/burger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob) - if(istype(W)) - new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src) - user << "You make a cheeseburger." - qdel(W) - qdel(src) - return - else - ..() - -/obj/item/weapon/reagent_containers/food/snacks/bunbun - name = "\improper Bun Bun" - desc = "A small bread monkey fashioned from two burger buns." - icon_state = "bunbun" - bitesize = 2 - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 8 - nutriment_desc = list("bun" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/bunbun/New() - ..() - -/obj/item/weapon/reagent_containers/food/snacks/taco - name = "taco" - desc = "Take a bite!" - icon_state = "taco" - bitesize = 3 - center_of_mass = list("x"=21, "y"=12) - nutriment_amt = 4 - nutriment_desc = list("cheese" = 2,"taco shell" = 2) -/obj/item/weapon/reagent_containers/food/snacks/taco/New() - ..() - reagents.add_reagent("protein", 3) - -/obj/item/weapon/reagent_containers/food/snacks/rawcutlet - name = "raw cutlet" - desc = "A thin piece of raw meat." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "rawcutlet" - bitesize = 1 - center_of_mass = list("x"=17, "y"=20) - -/obj/item/weapon/reagent_containers/food/snacks/rawcutlet/New() - ..() - reagents.add_reagent("protein", 1) - -/obj/item/weapon/reagent_containers/food/snacks/cutlet - name = "cutlet" - desc = "A tasty meat slice." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "cutlet" - bitesize = 2 - center_of_mass = list("x"=17, "y"=20) - -/obj/item/weapon/reagent_containers/food/snacks/cutlet/New() - ..() - reagents.add_reagent("protein", 2) - -/obj/item/weapon/reagent_containers/food/snacks/rawmeatball - name = "raw meatball" - desc = "A raw meatball." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "rawmeatball" - bitesize = 2 - center_of_mass = list("x"=16, "y"=15) - -/obj/item/weapon/reagent_containers/food/snacks/rawmeatball/New() - ..() - reagents.add_reagent("protein", 2) - -/obj/item/weapon/reagent_containers/food/snacks/hotdog - name = "hotdog" - desc = "Unrelated to dogs, maybe." - icon_state = "hotdog" - bitesize = 2 - center_of_mass = list("x"=16, "y"=17) - -/obj/item/weapon/reagent_containers/food/snacks/hotdog/New() - ..() - reagents.add_reagent("protein", 6) - -/obj/item/weapon/reagent_containers/food/snacks/hotdog/old - name = "old hotdog" - desc = "Covered in mold. You're not gonna eat that, are you?" - -/obj/item/weapon/reagent_containers/food/snacks/hotdog/old/New() - ..() - reagents.add_reagent("mold", 6) - -/obj/item/weapon/reagent_containers/food/snacks/flatbread - name = "flatbread" - desc = "Bland but filling." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "flatbread" - bitesize = 2 - center_of_mass = list("x"=16, "y"=16) - nutriment_amt = 3 - nutriment_desc = list("bread" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/flatbread/New() - ..() - -// potato + knife = raw sticks -/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(obj/item/weapon/W, mob/user) - if(seed && seed.kitchen_tag && seed.kitchen_tag == "potato" && istype(W,/obj/item/weapon/material/knife)) - new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src)) - user << "You cut the potato." - qdel(src) - else - ..() - -/obj/item/weapon/reagent_containers/food/snacks/rawsticks - name = "raw potato sticks" - desc = "Raw fries, not very tasty." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "rawsticks" - bitesize = 2 - center_of_mass = list("x"=16, "y"=12) - nutriment_amt = 3 - nutriment_desc = list("raw potato" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/rawsticks/New() - ..() - -/obj/item/weapon/reagent_containers/food/snacks/liquidfood - name = "\improper LiquidFood Ration" - desc = "A prepackaged grey slurry of all the essential nutrients for a spacefarer on the go. Should this be crunchy?" - icon_state = "liquidfood" - trash = /obj/item/trash/liquidfood - filling_color = "#A8A8A8" - center_of_mass = list("x"=16, "y"=15) - nutriment_amt = 20 - nutriment_desc = list("chalk" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/liquidfood/New() - ..() - reagents.add_reagent("iron", 3) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/tastybread - name = "bread tube" - desc = "Bread in a tube. Chewy...and surprisingly tasty." - icon_state = "tastybread" - trash = /obj/item/trash/tastybread - filling_color = "#A66829" - center_of_mass = list("x"=17, "y"=16) - nutriment_amt = 6 - nutriment_desc = list("bread" = 2, "sweetness" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/tastybread/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks - name = "\improper SkrellSnax" - desc = "Cured fungus shipped all the way from Qerr'balak, almost like jerky! Almost." - icon_state = "skrellsnacks" - filling_color = "#A66829" - center_of_mass = list("x"=15, "y"=12) - nutriment_amt = 10 - nutriment_desc = list("mushroom" = 5, "salt" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/unajerky - name = "Moghes Imported Sissalik Jerky" - icon_state = "unathitinred" - desc = "An incredibly well made jerky, shipped in all the way from Moghes." - trash = /obj/item/trash/unajerky - filling_color = "#631212" - center_of_mass = list("x"=15, "y"=9) - -/obj/item/weapon/reagent_containers/food/snacks/unajerky/New() - ..() - reagents.add_reagent("protein", 8) - reagents.add_reagent("capsaicin", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/croissant - name = "croissant" - desc = "True French cuisine." - filling_color = "#E3D796" - icon_state = "croissant" - nutriment_amt = 6 - nutriment_desc = list("french bread" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/croissant/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatbun - name = "meat bun" - desc = "Chinese street food, in neither China nor a street." - filling_color = "#DEDEAB" - icon_state = "meatbun" - nutriment_amt = 4 - -/obj/item/weapon/reagent_containers/food/snacks/meatbun/New() - ..() - bitesize = 2 - reagents.add_reagent("protein", 4) - -/obj/item/weapon/reagent_containers/food/snacks/sashimi - name = "carp sashimi" - desc = "Expertly prepared. Still toxic." - filling_color = "#FFDEFE" - icon_state = "sashimi" - nutriment_amt = 6 - -/obj/item/weapon/reagent_containers/food/snacks/sashimi/New() - ..() - reagents.add_reagent("protein", 2) - reagents.add_reagent("carpotoxin", 2) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/benedict - name = "eggs benedict" - desc = "Hey, there's only one egg in this!" - filling_color = "#FFDF78" - icon_state = "benedict" - nutriment_amt = 4 - -/obj/item/weapon/reagent_containers/food/snacks/benedict/New() - ..() - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/beans - name = "baked beans" - desc = "Musical fruit in a slightly less musical container." - filling_color = "#FC6F28" - icon_state = "beans" - nutriment_amt = 4 - nutriment_desc = list("beans" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/beans/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/sugarcookie - name = "sugar cookie" - desc = "Just like your little sister used to make." - filling_color = "#DBC94F" - icon_state = "sugarcookie" - nutriment_amt = 5 - nutriment_desc = list("sweetness" = 4, "cookie" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/New() - ..() - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/berrymuffin - name = "berry muffin" - desc = "A delicious and spongy little cake, with berries." - icon_state = "berrymuffin" - filling_color = "#E0CF9B" - center_of_mass = list("x"=17, "y"=4) - nutriment_amt = 6 - nutriment_desc = list("sweetness" = 2, "muffin" = 2, "berries" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/berrymuffin/New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin - name = "booberry muffin" - desc = "My stomach is a graveyard! No living being can quench my bloodthirst!" - icon_state = "berrymuffin" - filling_color = "#799ACE" - center_of_mass = list("x"=17, "y"=4) - nutriment_amt = 6 - nutriment_desc = list("spookiness" = 4, "muffin" = 1, "berries" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin/New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/eggroll - name = "egg roll" - desc = "Free with orders over 10 thalers." - icon_state = "eggroll" - filling_color = "#799ACE" - center_of_mass = list("x"=17, "y"=4) - nutriment_amt = 4 - nutriment_desc = list("egg" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/eggroll/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fruitsalad - name = "fruit salad" - desc = "Your standard fruit salad." - icon_state = "fruitsalad" - filling_color = "#FF3867" - nutriment_amt = 10 - nutriment_desc = list("fruit" = 10) - -/obj/item/weapon/reagent_containers/food/snacks/fruitsalad/New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/eggbowl - name = "egg bowl" - desc = "A bowl of fried rice with egg mixed in." - icon_state = "eggbowl" - trash = /obj/item/trash/snack_bowl - filling_color = "#FFFBDB" - nutriment_amt = 6 - nutriment_desc = list("rice" = 2, "egg" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/eggbowl/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/porkbowl - name = "pork bowl" - desc = "A bowl of fried rice with cuts of meat." - icon_state = "porkbowl" - trash = /obj/item/trash/snack_bowl - filling_color = "#FFFBDB" - nutriment_amt = 6 - nutriment_desc = list("rice" = 2, "meat" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/porkbowl/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tortilla - name = "tortilla" - desc = "The base for all your burritos." - icon_state = "tortilla" - nutriment_amt = 1 - nutriment_desc = list("bread" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/tortilla/New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatburrito - name = "carne asada burrito" - desc = "The best burrito for meat lovers." - icon_state = "carneburrito" - nutriment_amt = 6 - nutriment_desc = list("tortilla" = 3, "meat" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/meatburrito/New() - ..() - reagents.add_reagent("protein", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito - name = "Cheese burrito" - desc = "It's a burrito filled with cheese." - icon_state = "cheeseburrito" - nutriment_amt = 6 - nutriment_desc = list("tortilla" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito - name = "fuego phoron burrito" - desc = "A super spicy burrito." - icon_state = "fuegoburrito" - nutriment_amt = 6 - nutriment_desc = list("chili peppers" = 5, "tortilla" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("capsaicin", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/nachos - name = "nachos" - desc = "Chips from Old Mexico." - icon_state = "nachos" - nutriment_amt = 2 - nutriment_desc = list("salt" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/nachos/New() - ..() - reagents.add_reagent("nutriment", 1) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/cheesenachos - name = "cheesy nachos" - desc = "The delicious combination of nachos and melting cheese." - icon_state = "cheesenachos" - nutriment_amt = 5 - nutriment_desc = list("salt" = 2, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cheesenachos/New() - ..() - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cubannachos - name = "cuban nachos" - desc = "That's some dangerously spicy nachos." - icon_state = "cubannachos" - nutriment_amt = 6 - nutriment_desc = list("salt" = 1, "cheese" = 2, "chili peppers" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cubannachos/New() - ..() - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("capsaicin", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/piginblanket - name = "pig in a blanket" - desc = "A sausage embedded in soft, fluffy pastry. Free this pig from its blanket prison by eating it." - icon_state = "piginblanket" - nutriment_amt = 6 - nutriment_desc = list("meat" = 3, "pastry" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/piginblanket/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 4) - bitesize = 3 \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index de26117640..d9135cf612 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -830,6 +830,7 @@ #include "code\game\machinery\embedded_controller\embedded_controller_base.dm" #include "code\game\machinery\embedded_controller\embedded_program_base.dm" #include "code\game\machinery\embedded_controller\simple_docking_controller.dm" +<<<<<<< HEAD:vorestation.dme #include "code\game\machinery\kitchen\gibber.dm" #include "code\game\machinery\kitchen\icecream.dm" #include "code\game\machinery\kitchen\microwave.dm" @@ -842,6 +843,8 @@ #include "code\game\machinery\kitchen\cooking_machines\fryer.dm" #include "code\game\machinery\kitchen\cooking_machines\grill.dm" #include "code\game\machinery\kitchen\cooking_machines\oven.dm" +======= +>>>>>>> 10e7a49... Merge pull request #5626 from lbnesquik/Kates-kitchen-fix:polaris.dme #include "code\game\machinery\pipe\construction.dm" #include "code\game\machinery\pipe\pipe_dispenser.dm" #include "code\game\machinery\pipe\pipe_recipes.dm" @@ -1757,9 +1760,44 @@ #include "code\modules\flufftext\Hallucination.dm" #include "code\modules\flufftext\look_up.dm" #include "code\modules\flufftext\TextFilters.dm" +#include "code\modules\food\food.dm" #include "code\modules\food\recipe_dump.dm" #include "code\modules\food\recipes_microwave.dm" +<<<<<<< HEAD:vorestation.dme #include "code\modules\food\recipes_microwave_vr.dm" +======= +#include "code\modules\food\drinkingglass\drinkingglass.dm" +#include "code\modules\food\drinkingglass\extras.dm" +#include "code\modules\food\drinkingglass\glass_boxes.dm" +#include "code\modules\food\drinkingglass\glass_types.dm" +#include "code\modules\food\drinkingglass\metaglass.dm" +#include "code\modules\food\drinkingglass\shaker.dm" +#include "code\modules\food\food\cans.dm" +#include "code\modules\food\food\condiment.dm" +#include "code\modules\food\food\drinks.dm" +#include "code\modules\food\food\lunch.dm" +#include "code\modules\food\food\sandwich.dm" +#include "code\modules\food\food\snacks.dm" +#include "code\modules\food\food\drinks\bottle.dm" +#include "code\modules\food\food\drinks\cup.dm" +#include "code\modules\food\food\drinks\drinkingglass.dm" +#include "code\modules\food\food\drinks\jar.dm" +#include "code\modules\food\food\drinks\bottle\robot.dm" +#include "code\modules\food\food\snacks\meat.dm" +#include "code\modules\food\glass\bottle.dm" +#include "code\modules\food\glass\bottle\robot.dm" +#include "code\modules\food\kitchen\gibber.dm" +#include "code\modules\food\kitchen\icecream.dm" +#include "code\modules\food\kitchen\microwave.dm" +#include "code\modules\food\kitchen\smartfridge.dm" +#include "code\modules\food\kitchen\cooking_machines\_cooker.dm" +#include "code\modules\food\kitchen\cooking_machines\_cooker_output.dm" +#include "code\modules\food\kitchen\cooking_machines\candy.dm" +#include "code\modules\food\kitchen\cooking_machines\cereal.dm" +#include "code\modules\food\kitchen\cooking_machines\fryer.dm" +#include "code\modules\food\kitchen\cooking_machines\grill.dm" +#include "code\modules\food\kitchen\cooking_machines\oven.dm" +>>>>>>> 10e7a49... Merge pull request #5626 from lbnesquik/Kates-kitchen-fix:polaris.dme #include "code\modules\gamemaster\controller.dm" #include "code\modules\gamemaster\defines.dm" #include "code\modules\gamemaster\game_master.dm" @@ -2600,7 +2638,6 @@ #include "code\modules\reagents\reagent_containers\blood_pack_vr.dm" #include "code\modules\reagents\reagent_containers\borghydro.dm" #include "code\modules\reagents\reagent_containers\dropper.dm" -#include "code\modules\reagents\reagent_containers\food.dm" #include "code\modules\reagents\reagent_containers\glass.dm" #include "code\modules\reagents\reagent_containers\glass_vr.dm" #include "code\modules\reagents\reagent_containers\hypospray.dm" @@ -2609,6 +2646,7 @@ #include "code\modules\reagents\reagent_containers\spray.dm" #include "code\modules\reagents\reagent_containers\spray_vr.dm" #include "code\modules\reagents\reagent_containers\syringes.dm" +<<<<<<< HEAD:vorestation.dme #include "code\modules\reagents\reagent_containers\syringes_vr.dm" #include "code\modules\reagents\reagent_containers\drinkingglass\drinkingglass.dm" #include "code\modules\reagents\reagent_containers\drinkingglass\extras.dm" @@ -2632,6 +2670,8 @@ #include "code\modules\reagents\reagent_containers\glass\bottle.dm" #include "code\modules\reagents\reagent_containers\glass\bottle_vr.dm" #include "code\modules\reagents\reagent_containers\glass\bottle\robot.dm" +======= +>>>>>>> 10e7a49... Merge pull request #5626 from lbnesquik/Kates-kitchen-fix:polaris.dme #include "code\modules\recycling\conveyor2.dm" #include "code\modules\recycling\disposal-construction.dm" #include "code\modules\recycling\disposal.dm" From 8fc3cdfb3e764b97b00f66761687d93616e3e5d9 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Mon, 15 Oct 2018 14:48:10 -0500 Subject: [PATCH 04/18] Merge pull request #5647 from lbnesquik/Kates-Mining-Tweak Add a noise for mining scanners. --- code/modules/mining/drilling/scanner.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mining/drilling/scanner.dm b/code/modules/mining/drilling/scanner.dm index 4a8c3c59b6..0df256c131 100644 --- a/code/modules/mining/drilling/scanner.dm +++ b/code/modules/mining/drilling/scanner.dm @@ -9,6 +9,7 @@ /obj/item/weapon/mining_scanner/attack_self(mob/user as mob) user << "You begin sweeping \the [src] about, scanning for metal deposits." + playsound(loc, 'sound/items/goggles_charge.ogg', 50, 1, -6) if(!do_after(user, 50)) return From 6bf9647ff76b6878f05102a6dc6f7ca1b5c04a03 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Mon, 15 Oct 2018 14:47:11 -0500 Subject: [PATCH 06/18] Merge pull request #5652 from Cerebulon/excavation_sprite Fixes missing sprites when excavating rocks --- code/modules/mining/mine_turfs.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index cf0f036eea..11ac4dcae9 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -452,6 +452,8 @@ var/list/mining_overlay_cache = list() //update overlays displaying excavation level if( !(excav_overlay && excavation_level > 0) || update_excav_overlay ) var/excav_quadrant = round(excavation_level / 25) + 1 + if(excav_quadrant > 5) + excav_quadrant = 5 cut_overlay(excav_overlay) excav_overlay = "overlay_excv[excav_quadrant]_[rand(1,3)]" add_overlay(excav_overlay) From 6e5a5f5edc61b54f0d627b323d1aff8b595a44d2 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Mon, 15 Oct 2018 14:48:58 -0500 Subject: [PATCH 08/18] Fix a couple of ticket bugs --- code/modules/admin/verbs/adminhelp.dm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index c27272a421..72afa8bbe4 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -267,7 +267,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) AddInteraction("Reopened by [key_name_admin(usr)]") if(initiator) - to_chat(initiator, "Ticket [TicketHref("#[id]")] was reopened by [key_name(usr)].") + to_chat(initiator, "Ticket [TicketHref("#[id]")] was reopened by [key_name(usr,FALSE,FALSE)].") var/msg = "Ticket [TicketHref("#[id]")] reopened by [key_name_admin(usr)]." message_admins(msg) log_admin(msg) @@ -293,7 +293,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) GLOB.ahelp_tickets.ListInsert(src) AddInteraction("Closed by [key_name_admin(usr)].") if(initiator) - to_chat(initiator, "Ticket [TicketHref("#[id]")] was closed by [key_name(usr)].") + to_chat(initiator, "Ticket [TicketHref("#[id]")] was closed by [key_name(usr,FALSE,FALSE)].") if(!silent) feedback_inc("ahelp_close") var/msg = "Ticket [TicketHref("#[id]")] closed by [key_name_admin(usr)]." @@ -310,7 +310,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) AddInteraction("Resolved by [key_name_admin(usr)].") if(initiator) - to_chat(initiator, "Ticket [TicketHref("#[id]")] was marked resolved by [key_name(usr)].") + to_chat(initiator, "Ticket [TicketHref("#[id]")] was marked resolved by [key_name(usr,FALSE,FALSE)].") if(!silent) feedback_inc("ahelp_resolve") var/msg = "Ticket [TicketHref("#[id]")] resolved by [key_name_admin(usr)]" @@ -360,13 +360,13 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(state != AHELP_ACTIVE) return - var/msg = "Your AdminHelp is being handled by [key_name(usr)] please be patient." + var/msg = "Your AdminHelp is being handled by [key_name(usr,FALSE,FALSE)] please be patient." if(initiator) to_chat(initiator, msg) feedback_inc("ahelp_icissue") - msg = "Ticket [TicketHref("#[id]")] being handled by [key_name(usr)]" + msg = "Ticket [TicketHref("#[id]")] being handled by [key_name(usr,FALSE,FALSE)]" message_admins(msg) log_admin(msg) AddInteraction("[key_name_admin(usr)] is now handling this ticket.") @@ -550,7 +550,11 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) . = list("total" = list(), "noflags" = list(), "afk" = list(), "stealth" = list(), "present" = list()) for(var/client/X in admins) .["total"] += X +<<<<<<< HEAD if(requiredflags != 0 && !check_rights(rights_required = requiredflags, show_msg = FALSE, C = X)) //VOREStation Edit +======= + if(requiredflags != 0 && !check_rights(rights_required = requiredflags, show_msg = FALSE, C = X)) +>>>>>>> 7b1db0e... Merge pull request #5670 from VOREStation/pol-ticketpriv .["noflags"] += X else if(X.is_afk()) .["afk"] += X From 34ee689609fcc52a64ec638380fb26666b3667af Mon Sep 17 00:00:00 2001 From: Anewbe Date: Mon, 15 Oct 2018 14:51:02 -0500 Subject: [PATCH 09/18] Merge pull request #5671 from lbnesquik/Kates-Fax-Fix Prevent people from removing papers from any distances. --- code/modules/paperwork/faxmachine.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 707c89409e..8a2940b90d 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -78,6 +78,9 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins else if(href_list["remove"]) if(copyitem) + if(get_dist(usr, src) >= 2) + to_chat(usr, "\The [copyitem] is too far away for you to remove it.") + return copyitem.loc = usr.loc usr.put_in_hands(copyitem) to_chat(usr, "You take \the [copyitem] out of \the [src].") From 26089f3a72e29c1bae30d4083d8fc1d520bd6193 Mon Sep 17 00:00:00 2001 From: Kates <24830358+lbnesquik@users.noreply.github.com> Date: Mon, 15 Oct 2018 21:52:33 +0200 Subject: [PATCH 11/18] Magazines improvements --- code/game/sound.dm | 2 +- code/modules/projectiles/ammunition.dm | 5 +++++ code/modules/projectiles/ammunition/magazines.dm | 9 ++------- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/game/sound.dm b/code/game/sound.dm index 99a6a5efe8..d1569259a0 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -135,9 +135,9 @@ if ("thunder") soundin = pick('sound/effects/thunder/thunder1.ogg', 'sound/effects/thunder/thunder2.ogg', 'sound/effects/thunder/thunder3.ogg', 'sound/effects/thunder/thunder4.ogg', 'sound/effects/thunder/thunder5.ogg', 'sound/effects/thunder/thunder6.ogg', 'sound/effects/thunder/thunder7.ogg', 'sound/effects/thunder/thunder8.ogg', 'sound/effects/thunder/thunder9.ogg', 'sound/effects/thunder/thunder10.ogg') + if ("casing_sound") soundin = pick('sound/weapons/casingfall1.ogg','sound/weapons/casingfall2.ogg','sound/weapons/casingfall3.ogg') return soundin //Are these even used? -var/list/casing_sound = list ('sound/weapons/casingfall1.ogg','sound/weapons/casingfall2.ogg','sound/weapons/casingfall3.ogg') var/list/keyboard_sound = list ('sound/effects/keyboard/keyboard1.ogg','sound/effects/keyboard/keyboard2.ogg','sound/effects/keyboard/keyboard3.ogg', 'sound/effects/keyboard/keyboard4.ogg') var/list/bodyfall_sound = list('sound/effects/bodyfall1.ogg','sound/effects/bodyfall2.ogg','sound/effects/bodyfall3.ogg','sound/effects/bodyfall4.ogg') diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 52e02bd7ba..4f27c593c7 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -147,6 +147,11 @@ to_chat(user, "[src] is already empty!") return to_chat(user, "You empty [src].") + playsound(user.loc, "casing_sound", 50, 1) + spawn(7) + playsound(user.loc, "casing_sound", 50, 1) + spawn(10) + playsound(user.loc, "casing_sound", 50, 1) for(var/obj/item/ammo_casing/C in stored_ammo) C.loc = user.loc C.set_dir(pick(cardinal)) diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 6f88fed227..cfd96ac2aa 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -327,7 +327,7 @@ /obj/item/ammo_magazine/m9mmR/saber desc = "A very high capacity double stack magazine made specially for the SABER SMG. Filled with 22 9mm bullets." - icon_state = "S9mm-22" + icon_state = "S9mm" mag_type = MAGAZINE ammo_type = /obj/item/ammo_casing/a9mm matter = list(DEFAULT_WALL_MATERIAL = 1200) @@ -338,14 +338,9 @@ /obj/item/ammo_magazine/m9mmR/saber/ap desc = "A high capacity double stack magazine made specially for the SABER SMG. Filled with 22 9mm armor piercing bullets." - icon_state = "S9mm-22" - mag_type = MAGAZINE + icon_state = "S9mm" ammo_type = /obj/item/ammo_casing/a9mm/ap matter = list(DEFAULT_WALL_MATERIAL = 2000) - caliber = "9mm" - max_ammo = 22 - origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1) - multiple_sprites = 1 /obj/item/ammo_magazine/m9mmR/saber/empty initial_ammo = 0 From 66b142a01417dff28bfa9aecd69ce02e537e5732 Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Mon, 15 Oct 2018 16:59:52 -0400 Subject: [PATCH 12/18] Fix .dme conflict --- vorestation.dme | 44 -------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/vorestation.dme b/vorestation.dme index d9135cf612..248b61203d 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -830,21 +830,6 @@ #include "code\game\machinery\embedded_controller\embedded_controller_base.dm" #include "code\game\machinery\embedded_controller\embedded_program_base.dm" #include "code\game\machinery\embedded_controller\simple_docking_controller.dm" -<<<<<<< HEAD:vorestation.dme -#include "code\game\machinery\kitchen\gibber.dm" -#include "code\game\machinery\kitchen\icecream.dm" -#include "code\game\machinery\kitchen\microwave.dm" -#include "code\game\machinery\kitchen\smartfridge.dm" -#include "code\game\machinery\kitchen\smartfridge_vr.dm" -#include "code\game\machinery\kitchen\cooking_machines\_cooker.dm" -#include "code\game\machinery\kitchen\cooking_machines\_cooker_output.dm" -#include "code\game\machinery\kitchen\cooking_machines\candy.dm" -#include "code\game\machinery\kitchen\cooking_machines\cereal.dm" -#include "code\game\machinery\kitchen\cooking_machines\fryer.dm" -#include "code\game\machinery\kitchen\cooking_machines\grill.dm" -#include "code\game\machinery\kitchen\cooking_machines\oven.dm" -======= ->>>>>>> 10e7a49... Merge pull request #5626 from lbnesquik/Kates-kitchen-fix:polaris.dme #include "code\game\machinery\pipe\construction.dm" #include "code\game\machinery\pipe\pipe_dispenser.dm" #include "code\game\machinery\pipe\pipe_recipes.dm" @@ -1763,9 +1748,7 @@ #include "code\modules\food\food.dm" #include "code\modules\food\recipe_dump.dm" #include "code\modules\food\recipes_microwave.dm" -<<<<<<< HEAD:vorestation.dme #include "code\modules\food\recipes_microwave_vr.dm" -======= #include "code\modules\food\drinkingglass\drinkingglass.dm" #include "code\modules\food\drinkingglass\extras.dm" #include "code\modules\food\drinkingglass\glass_boxes.dm" @@ -1797,7 +1780,6 @@ #include "code\modules\food\kitchen\cooking_machines\fryer.dm" #include "code\modules\food\kitchen\cooking_machines\grill.dm" #include "code\modules\food\kitchen\cooking_machines\oven.dm" ->>>>>>> 10e7a49... Merge pull request #5626 from lbnesquik/Kates-kitchen-fix:polaris.dme #include "code\modules\gamemaster\controller.dm" #include "code\modules\gamemaster\defines.dm" #include "code\modules\gamemaster\game_master.dm" @@ -2646,32 +2628,6 @@ #include "code\modules\reagents\reagent_containers\spray.dm" #include "code\modules\reagents\reagent_containers\spray_vr.dm" #include "code\modules\reagents\reagent_containers\syringes.dm" -<<<<<<< HEAD:vorestation.dme -#include "code\modules\reagents\reagent_containers\syringes_vr.dm" -#include "code\modules\reagents\reagent_containers\drinkingglass\drinkingglass.dm" -#include "code\modules\reagents\reagent_containers\drinkingglass\extras.dm" -#include "code\modules\reagents\reagent_containers\drinkingglass\glass_boxes.dm" -#include "code\modules\reagents\reagent_containers\drinkingglass\glass_types.dm" -#include "code\modules\reagents\reagent_containers\drinkingglass\metaglass.dm" -#include "code\modules\reagents\reagent_containers\drinkingglass\shaker.dm" -#include "code\modules\reagents\reagent_containers\food\cans.dm" -#include "code\modules\reagents\reagent_containers\food\condiment.dm" -#include "code\modules\reagents\reagent_containers\food\drinks.dm" -#include "code\modules\reagents\reagent_containers\food\lunch.dm" -#include "code\modules\reagents\reagent_containers\food\sandwich.dm" -#include "code\modules\reagents\reagent_containers\food\snacks.dm" -#include "code\modules\reagents\reagent_containers\food\snacks_vr.dm" -#include "code\modules\reagents\reagent_containers\food\z_custom_food_vr.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\bottle.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\cup.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\jar.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\bottle\robot.dm" -#include "code\modules\reagents\reagent_containers\food\snacks\meat.dm" -#include "code\modules\reagents\reagent_containers\glass\bottle.dm" -#include "code\modules\reagents\reagent_containers\glass\bottle_vr.dm" -#include "code\modules\reagents\reagent_containers\glass\bottle\robot.dm" -======= ->>>>>>> 10e7a49... Merge pull request #5626 from lbnesquik/Kates-kitchen-fix:polaris.dme #include "code\modules\recycling\conveyor2.dm" #include "code\modules\recycling\disposal-construction.dm" #include "code\modules\recycling\disposal.dm" From ce187f64eda990e5d8b6d78ae8955e2b6f86579a Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 16 Oct 2018 12:05:32 -0400 Subject: [PATCH 13/18] Fixup other vorestation things Stop using the web editor please --- code/modules/food/food/snacks.dm | 3864 ----------------- .../food/snacks_vr.dm | 0 .../food/z_custom_food_vr.dm | 0 code/modules/food/kitchen/smartfridge.dm | 391 -- vorestation.dme | 2 + 5 files changed, 2 insertions(+), 4255 deletions(-) rename code/modules/{reagents/reagent_containers => food}/food/snacks_vr.dm (100%) rename code/modules/{reagents/reagent_containers => food}/food/z_custom_food_vr.dm (100%) diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 048221ff16..ce2dd8e791 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -1,4 +1,3 @@ -<<<<<<< HEAD:code/modules/reagents/reagent_containers/food/snacks.dm //Food items that are eaten normally and don't leave anything behind. /obj/item/weapon/reagent_containers/food/snacks name = "snack" @@ -3874,3867 +3873,4 @@ ..() reagents.add_reagent("nutriment", 6) reagents.add_reagent("protein", 4) -======= -//Food items that are eaten normally and don't leave anything behind. -/obj/item/weapon/reagent_containers/food/snacks - name = "snack" - desc = "yummy" - icon = 'icons/obj/food.dmi' - icon_state = null - var/bitesize = 1 - var/bitecount = 0 - var/trash = null - var/slice_path - var/slices_num - var/dried_type = null - var/dry = 0 - var/nutriment_amt = 0 - var/list/nutriment_desc = list("food" = 1) - center_of_mass = list("x"=16, "y"=16) - w_class = ITEMSIZE_SMALL - force = 1 - -/obj/item/weapon/reagent_containers/food/snacks/New() - ..() - if(nutriment_amt) - reagents.add_reagent("nutriment",nutriment_amt,nutriment_desc) - -/obj/item/weapon/reagent_containers/food/snacks/New() - ..() - if(nutriment_amt) - reagents.add_reagent("nutriment", nutriment_amt) - - //Placeholder for effect that trigger on eating that aren't tied to reagents. -/obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M) - if(!usr) - usr = M - if(!reagents.total_volume) - M.visible_message("[M] finishes eating \the [src].","You finish eating \the [src].") - usr.drop_from_inventory(src) //so icons update :[ - - if(trash) - if(ispath(trash,/obj/item)) - var/obj/item/TrashItem = new trash(usr) - usr.put_in_hands(TrashItem) - else if(istype(trash,/obj/item)) - usr.put_in_hands(trash) - qdel(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/attack_self(mob/user as mob) - return - -/obj/item/weapon/reagent_containers/food/snacks/attack(mob/M as mob, mob/user as mob, def_zone) - if(reagents && !reagents.total_volume) - user << "None of [src] left!" - user.drop_from_inventory(src) - qdel(src) - return 0 - - if(istype(M, /mob/living/carbon)) - //TODO: replace with standard_feed_mob() call. - - var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25) - if(M == user) //If you're eating it yourself - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(!H.check_has_mouth()) - user << "Where do you intend to put \the [src]? You don't have a mouth!" - return - var/obj/item/blocked = H.check_mouth_coverage() - if(blocked) - user << "\The [blocked] is in the way!" - return - - user.setClickCooldown(user.get_attack_speed(src)) //puts a limit on how fast people can eat/drink things - if (fullness <= 50) - M << "You hungrily chew out a piece of [src] and gobble it!" - if (fullness > 50 && fullness <= 150) - M << "You hungrily begin to eat [src]." - if (fullness > 150 && fullness <= 350) - M << "You take a bite of [src]." - if (fullness > 350 && fullness <= 550) - M << "You unwillingly chew a bit of [src]." - if (fullness > (550 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat - M << "You cannot force any more of [src] to go down your throat." - return 0 - - else if(user.a_intent == I_HURT) - return ..() - - else - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(!H.check_has_mouth()) - user << "Where do you intend to put \the [src]? \The [H] doesn't have a mouth!" - return - var/obj/item/blocked = H.check_mouth_coverage() - if(blocked) - user << "\The [blocked] is in the way!" - return - - if (fullness <= (550 * (1 + M.overeatduration / 1000))) - user.visible_message("[user] attempts to feed [M] [src].") - else - user.visible_message("[user] cannot force anymore of [src] down [M]'s throat.") - return 0 - - user.setClickCooldown(user.get_attack_speed(src)) - if(!do_mob(user, M)) return - - //Do we really care about this - add_attack_logs(user,M,"Fed with [src.name] containing [reagentlist(src)]", admin_notify = FALSE) - - user.visible_message("[user] feeds [M] [src].") - - else - user << "This creature does not seem to have a mouth!" - return - - if(reagents) //Handle ingestion of the reagent. - playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1) - if(reagents.total_volume) - if(reagents.total_volume > bitesize) - reagents.trans_to_mob(M, bitesize, CHEM_INGEST) - else - reagents.trans_to_mob(M, reagents.total_volume, CHEM_INGEST) - bitecount++ - On_Consume(M) - return 1 - - return 0 - -/obj/item/weapon/reagent_containers/food/snacks/examine(mob/user) - if(!..(user, 1)) - return - if (bitecount==0) - return - else if (bitecount==1) - user << "\The [src] was bitten by someone!" - else if (bitecount<=3) - user << "\The [src] was bitten [bitecount] times!" - else - user << "\The [src] was bitten multiple times!" - -/obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/storage)) - ..() // -> item/attackby() - return - - // Eating with forks - if(istype(W,/obj/item/weapon/material/kitchen/utensil)) - var/obj/item/weapon/material/kitchen/utensil/U = W - if(U.scoop_food) - if(!U.reagents) - U.create_reagents(5) - - if (U.reagents.total_volume > 0) - user << "You already have something on your [U]." - return - - user.visible_message( \ - "[user] scoops up some [src] with \the [U]!", \ - "You scoop up some [src] with \the [U]!" \ - ) - - src.bitecount++ - U.overlays.Cut() - U.loaded = "[src]" - var/image/I = new(U.icon, "loadedfood") - I.color = src.filling_color - U.overlays += I - - reagents.trans_to_obj(U, min(reagents.total_volume,5)) - - if (reagents.total_volume <= 0) - qdel(src) - return - - if (is_sliceable()) - //these are used to allow hiding edge items in food that is not on a table/tray - var/can_slice_here = isturf(src.loc) && ((locate(/obj/structure/table) in src.loc) || (locate(/obj/machinery/optable) in src.loc) || (locate(/obj/item/weapon/tray) in src.loc)) - var/hide_item = !has_edge(W) || !can_slice_here - - if (hide_item) - if (W.w_class >= src.w_class || is_robot_module(W)) - return - - 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) - 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("\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("\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)) - var/obj/slice = new slice_path (src.loc) - reagents.trans_to_obj(slice, reagents_per_slice) - qdel(src) - return - -/obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable() - return (slices_num && slice_path && slices_num > 0) - -/obj/item/weapon/reagent_containers/food/snacks/Destroy() - if(contents) - for(var/atom/movable/something in contents) - something.dropInto(loc) - . = ..() - -//////////////////////////////////////////////////////////////////////////////// -/// FOOD END -//////////////////////////////////////////////////////////////////////////////// -/obj/item/weapon/reagent_containers/food/snacks/attack_generic(var/mob/living/user) - if(!isanimal(user) && !isalien(user)) - return - user.visible_message("[user] nibbles away at \the [src].","You nibble away at \the [src].") - bitecount++ - if(reagents) - reagents.trans_to_mob(user, bitesize, CHEM_INGEST) - spawn(5) - if(!src && !user.client) - user.custom_emote(1,"[pick("burps", "cries for more", "burps twice", "looks at the area where the food was")]") - qdel(src) - On_Consume(user) - -////////////////////////////////////////////////// -////////////////////////////////////////////Snacks -////////////////////////////////////////////////// -//Items in the "Snacks" subcategory are food items that people actually eat. The key points are that they are created -// already filled with reagents and are destroyed when empty. Additionally, they make a "munching" noise when eaten. - -//Notes by Darem: Food in the "snacks" subtype can hold a maximum of 50 units Generally speaking, you don't want to go over 40 -// total for the item because you want to leave space for extra condiments. If you want effect besides healing, add a reagent for -// it. Try to stick to existing reagents when possible (so if you want a stronger healing effect, just use Tricordrazine). On use -// effect (such as the old officer eating a donut code) requires a unique reagent (unless you can figure out a better way). - -//The nutriment reagent and bitesize variable replace the old heal_amt and amount variables. Each unit of nutriment is equal to -// 2 of the old heal_amt variable. Bitesize is the rate at which the reagents are consumed. So if you have 6 nutriment and a -// bitesize of 2, then it'll take 3 bites to eat. Unlike the old system, the contained reagents are evenly spread among all -// the bites. No more contained reagents = no more bites. - -//Here is an example of the new formatting for anyone who wants to add more food items. -///obj/item/weapon/reagent_containers/food/snacks/xenoburger //Identification path for the object. -// name = "Xenoburger" //Name that displays in the UI. -// desc = "Smells caustic. Tastes like heresy." //Duh -// icon_state = "xburger" //Refers to an icon in food.dmi -// New() //Don't mess with this. -// ..() //Same here. -// reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste -// reagents.add_reagent("nutriment", 2) // this line of code for all the contents. -// bitesize = 3 //This is the amount each bite consumes. - - - - -/obj/item/weapon/reagent_containers/food/snacks/aesirsalad - name = "Aesir salad" - desc = "Probably too incredible for mortal men to fully enjoy." - icon_state = "aesirsalad" - trash = /obj/item/trash/snack_bowl - filling_color = "#468C00" - center_of_mass = list("x"=17, "y"=11) - nutriment_amt = 8 - nutriment_desc = list("apples" = 3,"salad" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/aesirsalad/New() - ..() - reagents.add_reagent("doctorsdelight", 8) - reagents.add_reagent("tricordrazine", 8) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/candy - name = "candy" - desc = "Nougat, love it or hate it." - icon_state = "candy" - trash = /obj/item/trash/candy - filling_color = "#7D5F46" - center_of_mass = list("x"=15, "y"=15) - nutriment_amt = 1 - nutriment_desc = list("candy" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/candy/New() - ..() - reagents.add_reagent("sugar", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar - name = "protein bar" - desc = "SwoleMAX brand protein bars, guaranteed to get you feeling perfectly overconfident." - icon_state = "proteinbar" - trash = /obj/item/trash/candy/proteinbar - nutriment_amt = 9 - nutriment_desc = list("candy" = 1, "protein" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/candy/proteinbar/New() - ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("sugar", 4) - bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/candy/donor - name = "Donor Candy" - desc = "A little treat for blood donors." - trash = /obj/item/trash/candy - nutriment_amt = 9 - nutriment_desc = list("candy" = 10) - -/obj/item/weapon/reagent_containers/food/snacks/candy/donor/New() - ..() - reagents.add_reagent("sugar", 3) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/candy_corn - name = "candy corn" - desc = "It's a handful of candy corn. Cannot be stored in a detective's hat, alas." - icon_state = "candy_corn" - filling_color = "#FFFCB0" - center_of_mass = list("x"=14, "y"=10) - nutriment_amt = 4 - nutriment_desc = list("candy corn" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/candy_corn/New() - ..() - reagents.add_reagent("sugar", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/chips - name = "chips" - desc = "Commander Riker's What-The-Crisps" - icon_state = "chips" - trash = /obj/item/trash/chips - filling_color = "#E8C31E" - center_of_mass = list("x"=15, "y"=15) - nutriment_amt = 3 - nutriment_desc = list("salt" = 1, "chips" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/chips/New() - ..() - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/cookie - name = "cookie" - desc = "COOKIE!!!" - icon_state = "COOKIE!!!" - filling_color = "#DBC94F" - center_of_mass = list("x"=17, "y"=18) - nutriment_amt = 5 - nutriment_desc = list("sweetness" = 3, "cookie" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/cookie/New() - ..() - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar - name = "Chocolate Bar" - desc = "Such sweet, fattening food." - icon_state = "chocolatebar" - filling_color = "#7D5F46" - center_of_mass = list("x"=15, "y"=15) - nutriment_amt = 2 - nutriment_desc = list("chocolate" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/chocolatebar/New() - ..() - reagents.add_reagent("sugar", 2) - reagents.add_reagent("coco", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece - name = "chocolate piece" - desc = "A luscious milk chocolate piece filled with gooey caramel." - icon_state = "chocolatepiece" - filling_color = "#7D5F46" - center_of_mass = list("x"=15, "y"=15) - nutriment_amt = 1 - nutriment_desc = list("chocolate" = 3, "caramel" = 2, "lusciousness" = 1) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/white - name = "white chocolate piece" - desc = "A creamy white chocolate piece drizzled in milk chocolate." - icon_state = "chocolatepiece_white" - filling_color = "#E2DAD3" - nutriment_desc = list("white chocolate" = 3, "creaminess" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/chocolatepiece/truffle - name = "chocolate truffle" - desc = "A bite-sized milk chocolate truffle that could buy anyone's love." - icon_state = "chocolatepiece_truffle" - nutriment_desc = list("chocolate" = 3, "undying devotion" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/chocolateegg - name = "Chocolate Egg" - desc = "Such sweet, fattening food." - icon_state = "chocolateegg" - filling_color = "#7D5F46" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 3 - nutriment_desc = list("chocolate" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/New() - ..() - reagents.add_reagent("sugar", 2) - reagents.add_reagent("coco", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/donut - name = "donut" - desc = "Goes great with Robust Coffee." - icon_state = "donut1" - filling_color = "#D9C386" - var/overlay_state = "box-donut1" - center_of_mass = list("x"=13, "y"=16) - nutriment_desc = list("sweetness", "donut") - -/obj/item/weapon/reagent_containers/food/snacks/donut/normal - name = "donut" - desc = "Goes great with Robust Coffee." - icon_state = "donut1" - nutriment_amt = 3 - -/obj/item/weapon/reagent_containers/food/snacks/donut/normal/New() - ..() - reagents.add_reagent("nutriment", 3) - reagents.add_reagent("sprinkles", 1) - src.bitesize = 3 - if(prob(30)) - src.icon_state = "donut2" - src.overlay_state = "box-donut2" - src.name = "frosted donut" - reagents.add_reagent("sprinkles", 2) - center_of_mass = list("x"=19, "y"=16) - -/obj/item/weapon/reagent_containers/food/snacks/donut/chaos - name = "Chaos Donut" - desc = "Like life, it never quite tastes the same." - icon_state = "donut1" - filling_color = "#ED11E6" - nutriment_amt = 2 - -/obj/item/weapon/reagent_containers/food/snacks/donut/chaos/New() - ..() - reagents.add_reagent("sprinkles", 1) - bitesize = 10 - var/chaosselect = pick(1,2,3,4,5,6,7,8,9,10) - switch(chaosselect) - if(1) - reagents.add_reagent("nutriment", 3) - if(2) - reagents.add_reagent("capsaicin", 3) - if(3) - reagents.add_reagent("frostoil", 3) - if(4) - reagents.add_reagent("sprinkles", 3) - if(5) - reagents.add_reagent("phoron", 3) - if(6) - reagents.add_reagent("coco", 3) - if(7) - reagents.add_reagent("slimejelly", 3) - if(8) - reagents.add_reagent("banana", 3) - if(9) - reagents.add_reagent("berryjuice", 3) - if(10) - reagents.add_reagent("tricordrazine", 3) - if(prob(30)) - src.icon_state = "donut2" - src.overlay_state = "box-donut2" - src.name = "Frosted Chaos Donut" - reagents.add_reagent("sprinkles", 2) - -/obj/item/weapon/reagent_containers/food/snacks/donut/jelly - name = "Jelly Donut" - desc = "You jelly?" - icon_state = "jdonut1" - filling_color = "#ED1169" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 3 - -/obj/item/weapon/reagent_containers/food/snacks/donut/jelly/New() - ..() - reagents.add_reagent("sprinkles", 1) - reagents.add_reagent("berryjuice", 5) - bitesize = 5 - if(prob(30)) - src.icon_state = "jdonut2" - src.overlay_state = "box-donut2" - src.name = "Frosted Jelly Donut" - reagents.add_reagent("sprinkles", 2) - -/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly - name = "Jelly Donut" - desc = "You jelly?" - icon_state = "jdonut1" - filling_color = "#ED1169" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 3 - -/obj/item/weapon/reagent_containers/food/snacks/donut/slimejelly/New() - ..() - reagents.add_reagent("sprinkles", 1) - reagents.add_reagent("slimejelly", 5) - bitesize = 5 - if(prob(30)) - src.icon_state = "jdonut2" - src.overlay_state = "box-donut2" - src.name = "Frosted Jelly Donut" - reagents.add_reagent("sprinkles", 2) - -/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly - name = "Jelly Donut" - desc = "You jelly?" - icon_state = "jdonut1" - filling_color = "#ED1169" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 3 - -/obj/item/weapon/reagent_containers/food/snacks/donut/cherryjelly/New() - ..() - reagents.add_reagent("sprinkles", 1) - reagents.add_reagent("cherryjelly", 5) - bitesize = 5 - if(prob(30)) - src.icon_state = "jdonut2" - src.overlay_state = "box-donut2" - src.name = "Frosted Jelly Donut" - reagents.add_reagent("sprinkles", 2) - -/obj/item/weapon/reagent_containers/food/snacks/egg - name = "egg" - desc = "An egg!" - icon_state = "egg" - filling_color = "#FDFFD1" - volume = 10 - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/egg/New() - ..() - reagents.add_reagent("egg", 3) - -/obj/item/weapon/reagent_containers/food/snacks/egg/afterattack(obj/O as obj, mob/user as mob, proximity) - if(istype(O,/obj/machinery/microwave)) - return ..() - if(!(proximity && O.is_open_container())) - return - user << "You crack \the [src] into \the [O]." - reagents.trans_to(O, reagents.total_volume) - user.drop_from_inventory(src) - qdel(src) - -/obj/item/weapon/reagent_containers/food/snacks/egg/throw_impact(atom/hit_atom) - ..() - new/obj/effect/decal/cleanable/egg_smudge(src.loc) - src.reagents.splash(hit_atom, reagents.total_volume) - src.visible_message("[src.name] has been squashed.","You hear a smack.") - qdel(src) - -/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype( W, /obj/item/weapon/pen/crayon )) - var/obj/item/weapon/pen/crayon/C = W - var/clr = C.colourName - - if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow"))) - usr << "The egg refuses to take on this color!" - return - - usr << "You color \the [src] [clr]" - icon_state = "egg-[clr]" - else - ..() - -/obj/item/weapon/reagent_containers/food/snacks/egg/blue - icon_state = "egg-blue" - -/obj/item/weapon/reagent_containers/food/snacks/egg/green - icon_state = "egg-green" - -/obj/item/weapon/reagent_containers/food/snacks/egg/mime - icon_state = "egg-mime" - -/obj/item/weapon/reagent_containers/food/snacks/egg/orange - icon_state = "egg-orange" - -/obj/item/weapon/reagent_containers/food/snacks/egg/purple - icon_state = "egg-purple" - -/obj/item/weapon/reagent_containers/food/snacks/egg/rainbow - icon_state = "egg-rainbow" - -/obj/item/weapon/reagent_containers/food/snacks/egg/red - icon_state = "egg-red" - -/obj/item/weapon/reagent_containers/food/snacks/egg/yellow - icon_state = "egg-yellow" - -/obj/item/weapon/reagent_containers/food/snacks/friedegg - name = "Fried egg" - desc = "A fried egg, with a touch of salt and pepper." - icon_state = "friedegg" - filling_color = "#FFDF78" - center_of_mass = list("x"=16, "y"=14) - -/obj/item/weapon/reagent_containers/food/snacks/friedegg/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("sodiumchloride", 1) - reagents.add_reagent("blackpepper", 1) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/boiledegg - name = "Boiled egg" - desc = "A hard boiled egg." - icon_state = "egg" - filling_color = "#FFFFFF" - -/obj/item/weapon/reagent_containers/food/snacks/boiledegg/New() - ..() - reagents.add_reagent("protein", 2) - -/obj/item/weapon/reagent_containers/food/snacks/organ - name = "organ" - desc = "It's good for you." - icon = 'icons/obj/surgery.dmi' - icon_state = "appendix" - filling_color = "#E00D34" - center_of_mass = list("x"=16, "y"=16) - -/obj/item/weapon/reagent_containers/food/snacks/organ/New() - ..() - reagents.add_reagent("protein", rand(3,5)) - reagents.add_reagent("toxin", rand(1,3)) - src.bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/tofu - name = "Tofu" - icon_state = "tofu" - desc = "We all love tofu." - filling_color = "#FFFEE0" - center_of_mass = list("x"=17, "y"=10) - nutriment_amt = 3 - nutriment_desc = list("tofu" = 3, "goeyness" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/tofu/New() - ..() - src.bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/tofurkey - name = "Tofurkey" - desc = "A fake turkey made from tofu." - icon_state = "tofurkey" - filling_color = "#FFFEE0" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 12 - nutriment_desc = list("turkey" = 3, "tofu" = 5, "goeyness" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/tofurkey/New() - ..() - reagents.add_reagent("stoxin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/stuffing - name = "Stuffing" - desc = "Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in!" - icon_state = "stuffing" - filling_color = "#C9AC83" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 3 - nutriment_desc = list("dryness" = 2, "bread" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/stuffing/New() - ..() - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/carpmeat - name = "carp fillet" - desc = "A fillet of spess carp meat" - icon_state = "fishfillet" - filling_color = "#FFDEFE" - center_of_mass = list("x"=17, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/carpmeat/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("carpotoxin", 3) - src.bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/fishfingers - name = "Fish Fingers" - desc = "A finger of fish." - icon_state = "fishfingers" - filling_color = "#FFDEFE" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/fishfingers/New() - ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("carpotoxin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice - name = "huge mushroom slice" - desc = "A slice from a huge mushroom." - icon_state = "hugemushroomslice" - filling_color = "#E0D7C5" - center_of_mass = list("x"=17, "y"=16) - nutriment_amt = 3 - nutriment_desc = list("raw" = 2, "mushroom" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/hugemushroomslice/New() - ..() - reagents.add_reagent("psilocybin", 3) - src.bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/tomatomeat - name = "tomato slice" - desc = "A slice from a huge tomato" - icon_state = "tomatomeat" - filling_color = "#DB0000" - center_of_mass = list("x"=17, "y"=16) - nutriment_amt = 3 - nutriment_desc = list("raw" = 2, "tomato" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/tomatomeat/New() - ..() - src.bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/bearmeat - name = "bear meat" - desc = "A very manly slab of meat." - icon_state = "bearmeat" - filling_color = "#DB0000" - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/bearmeat/New() - ..() - reagents.add_reagent("protein", 12) - reagents.add_reagent("hyperzine", 5) - src.bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/xenomeat - name = "xenomeat" - desc = "A slab of green meat. Smells like acid." - icon_state = "xenomeat" - filling_color = "#43DE18" - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/New() - ..() - reagents.add_reagent("protein", 6) - reagents.add_reagent("pacid",6) - src.bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat // Substitute for recipes requiring xeno meat. - name = "spider meat" - desc = "A slab of green meat." - icon_state = "xenomeat" - filling_color = "#43DE18" - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/xenomeat/spidermeat/New() - ..() - reagents.add_reagent("spidertoxin",6) - reagents.remove_reagent("pacid",6) - src.bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/meatball - name = "meatball" - desc = "A great meal all round." - icon_state = "meatball" - filling_color = "#DB0000" - center_of_mass = list("x"=16, "y"=16) - -/obj/item/weapon/reagent_containers/food/snacks/meatball/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/sausage - name = "Sausage" - desc = "A piece of mixed, long meat." - icon_state = "sausage" - filling_color = "#DB0000" - center_of_mass = list("x"=16, "y"=16) - -/obj/item/weapon/reagent_containers/food/snacks/sausage/New() - ..() - reagents.add_reagent("protein", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket - name = "Donk-pocket" - desc = "The food of choice for the seasoned traitor." - icon_state = "donkpocket" - filling_color = "#DEDEAB" - center_of_mass = list("x"=16, "y"=10) - var/warm - var/list/heated_reagents - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/New() - ..() - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("protein", 2) - - warm = 0 - heated_reagents = list("tricordrazine" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/heat() - warm = 1 - for(var/reagent in heated_reagents) - reagents.add_reagent(reagent, heated_reagents[reagent]) - bitesize = 6 - name = "Warm " + name - cooltime() - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/cooltime() - if (src.warm) - spawn(4200) - src.warm = 0 - for(var/reagent in heated_reagents) - src.reagents.del_reagent(reagent) - src.name = initial(name) - return - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket - name = "\improper Sin-pocket" - desc = "The food of choice for the veteran. Do NOT overconsume." - filling_color = "#6D6D00" - heated_reagents = list("doctorsdelight" = 5, "hyperzine" = 0.75, "synaptizine" = 0.25) - var/has_been_heated = 0 - -/obj/item/weapon/reagent_containers/food/snacks/donkpocket/sinpocket/attack_self(mob/user) - if(has_been_heated) - user << "The heating chemicals have already been spent." - return - has_been_heated = 1 - user.visible_message("[user] crushes \the [src] package.", "You crush \the [src] package and feel a comfortable heat build up.") - spawn(200) - user << "You think \the [src] is ready to eat about now." - heat() - -/obj/item/weapon/reagent_containers/food/snacks/brainburger - name = "brainburger" - desc = "A strange looking burger. It looks almost sentient." - icon_state = "brainburger" - filling_color = "#F2B6EA" - center_of_mass = list("x"=15, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/brainburger/New() - ..() - reagents.add_reagent("protein", 6) - reagents.add_reagent("alkysine", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/ghostburger - name = "Ghost Burger" - desc = "Spooky! It doesn't look very filling." - icon_state = "ghostburger" - filling_color = "#FFF2FF" - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("buns" = 3, "spookiness" = 3) - nutriment_amt = 2 - -/obj/item/weapon/reagent_containers/food/snacks/ghostburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/human - var/hname = "" - var/job = null - filling_color = "#D63C3C" - -/obj/item/weapon/reagent_containers/food/snacks/human/burger - name = "-burger" - desc = "A bloody burger." - icon_state = "hburger" - center_of_mass = list("x"=16, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/human/burger/New() - ..() - reagents.add_reagent("protein", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheeseburger - name = "cheeseburger" - desc = "The cheese adds a good flavor." - icon_state = "cheeseburger" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 2 - nutriment_desc = list("cheese" = 2, "bun" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/cheeseburger/New() - ..() - reagents.add_reagent("protein", 2) - -/obj/item/weapon/reagent_containers/food/snacks/monkeyburger - name = "burger" - desc = "The cornerstone of every nutritious breakfast." - icon_state = "hburger" - filling_color = "#D63C3C" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 3 - nutriment_desc = list("bun" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fishburger - 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" - filling_color = "#FFDEFE" - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/fishburger/New() - ..() - reagents.add_reagent("protein", 6) - reagents.add_reagent("carpotoxin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/tofuburger - name = "Tofu Burger" - desc = "What.. is that meat?" - icon_state = "tofuburger" - filling_color = "#FFFEE0" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 6 - nutriment_desc = list("bun" = 2, "pseudo-soy meat" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/tofuburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/roburger - name = "roburger" - desc = "The lettuce is the only organic component. Beep." - icon_state = "roburger" - filling_color = "#CCCCCC" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 2 - nutriment_desc = list("bun" = 2, "metal" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/roburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/roburgerbig - name = "roburger" - desc = "This massive patty looks like poison. Beep." - icon_state = "roburger" - filling_color = "#CCCCCC" - volume = 100 - center_of_mass = list("x"=16, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/roburgerbig/New() - ..() - bitesize = 0.1 - -/obj/item/weapon/reagent_containers/food/snacks/xenoburger - name = "xenoburger" - desc = "Smells caustic. Tastes like heresy." - icon_state = "xburger" - filling_color = "#43DE18" - center_of_mass = list("x"=16, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/xenoburger/New() - ..() - reagents.add_reagent("protein", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/clownburger - name = "Clown Burger" - desc = "This tastes funny..." - icon_state = "clownburger" - filling_color = "#FF00FF" - center_of_mass = list("x"=17, "y"=12) - nutriment_amt = 6 - nutriment_desc = list("bun" = 2, "clown shoe" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/clownburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/mimeburger - name = "Mime Burger" - desc = "Its taste defies language." - icon_state = "mimeburger" - filling_color = "#FFFFFF" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 6 - nutriment_desc = list("bun" = 2, "face paint" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/mimeburger/New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/omelette - name = "Omelette Du Fromage" - desc = "That's all you can say!" - icon_state = "omelette" - trash = /obj/item/trash/plate - filling_color = "#FFF9A8" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/omelette/New() - ..() - reagents.add_reagent("protein", 8) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/muffin - name = "Muffin" - desc = "A delicious and spongy little cake" - icon_state = "muffin" - filling_color = "#E0CF9B" - center_of_mass = list("x"=17, "y"=4) - nutriment_amt = 6 - nutriment_desc = list("sweetness" = 3, "muffin" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/muffin/New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/pie - name = "Banana Cream Pie" - desc = "Just like back home, on clown planet! HONK!" - icon_state = "pie" - trash = /obj/item/trash/plate - filling_color = "#FBFFB8" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 4 - nutriment_desc = list("pie" = 3, "cream" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/pie/New() - ..() - reagents.add_reagent("banana",5) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom) - ..() - new/obj/effect/decal/cleanable/pie_smudge(src.loc) - src.visible_message("\The [src.name] splats.","You hear a splat.") - qdel(src) - -/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis - name = "Berry Clafoutis" - desc = "No black birds, this is a good sign." - icon_state = "berryclafoutis" - trash = /obj/item/trash/plate - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 4 - nutriment_desc = list("sweetness" = 2, "pie" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/berryclafoutis/New() - ..() - reagents.add_reagent("berryjuice", 5) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/waffles - name = "waffles" - desc = "Mmm, waffles" - icon_state = "waffles" - trash = /obj/item/trash/waffles - filling_color = "#E6DEB5" - center_of_mass = list("x"=15, "y"=11) - nutriment_amt = 8 - nutriment_desc = list("waffle" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/waffles/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/eggplantparm - name = "Eggplant Parmigiana" - desc = "The only good recipe for eggplant." - icon_state = "eggplantparm" - trash = /obj/item/trash/plate - filling_color = "#4D2F5E" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 6 - nutriment_desc = list("cheese" = 3, "eggplant" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/eggplantparm/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/soylentgreen - name = "Soylent Green" - desc = "Not made of people. Honest." //Totally people. - icon_state = "soylent_green" - trash = /obj/item/trash/waffles - filling_color = "#B8E6B5" - center_of_mass = list("x"=15, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/soylentgreen/New() - ..() - reagents.add_reagent("protein", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/soylenviridians - name = "Soylen Virdians" - desc = "Not made of people. Honest." //Actually honest for once. - icon_state = "soylent_yellow" - trash = /obj/item/trash/waffles - filling_color = "#E6FA61" - center_of_mass = list("x"=15, "y"=11) - nutriment_amt = 10 - nutriment_desc = list("some sort of protein" = 10) //seasoned VERY well. - -/obj/item/weapon/reagent_containers/food/snacks/soylenviridians/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatpie - name = "Meat-pie" - icon_state = "meatpie" - desc = "An old barber recipe, very delicious!" - trash = /obj/item/trash/plate - filling_color = "#948051" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/meatpie/New() - ..() - reagents.add_reagent("protein", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tofupie - name = "Tofu-pie" - icon_state = "meatpie" - desc = "A delicious tofu pie." - trash = /obj/item/trash/plate - filling_color = "#FFFEE0" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 10 - nutriment_desc = list("tofu" = 2, "pie" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/tofupie/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/amanita_pie - name = "amanita pie" - desc = "Sweet and tasty poison pie." - icon_state = "amanita_pie" - filling_color = "#FFCCCC" - center_of_mass = list("x"=17, "y"=9) - nutriment_amt = 5 - nutriment_desc = list("sweetness" = 3, "mushroom" = 3, "pie" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/amanita_pie/New() - ..() - reagents.add_reagent("amatoxin", 3) - reagents.add_reagent("psilocybin", 1) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/plump_pie - name = "plump pie" - desc = "I bet you love stuff made out of plump helmets!" - icon_state = "plump_pie" - filling_color = "#B8279B" - center_of_mass = list("x"=17, "y"=9) - nutriment_amt = 8 - nutriment_desc = list("heartiness" = 2, "mushroom" = 3, "pie" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/plump_pie/New() - ..() - if(prob(10)) - name = "exceptional plump pie" - desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" - reagents.add_reagent("nutriment", 8) - reagents.add_reagent("tricordrazine", 5) - bitesize = 2 - else - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/xemeatpie - name = "Xeno-pie" - icon_state = "xenomeatpie" - desc = "A delicious meatpie. Probably heretical." - trash = /obj/item/trash/plate - filling_color = "#43DE18" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/xemeatpie/New() - ..() - reagents.add_reagent("protein", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/wingfangchu - name = "Wing Fang Chu" - desc = "A savory dish of alien wing wang in soy." - icon_state = "wingfangchu" - trash = /obj/item/trash/snack_bowl - filling_color = "#43DE18" - center_of_mass = list("x"=17, "y"=9) - -/obj/item/weapon/reagent_containers/food/snacks/wingfangchu/New() - ..() - reagents.add_reagent("protein", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/human/kabob - name = "-kabob" - icon_state = "kabob" - desc = "A human meat, on a stick." - trash = /obj/item/stack/rods - filling_color = "#A85340" - center_of_mass = list("x"=17, "y"=15) - -/obj/item/weapon/reagent_containers/food/snacks/human/kabob/New() - ..() - reagents.add_reagent("protein", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/monkeykabob - name = "Meat-kabob" - icon_state = "kabob" - desc = "Delicious meat, on a stick." - trash = /obj/item/stack/rods - filling_color = "#A85340" - center_of_mass = list("x"=17, "y"=15) - -/obj/item/weapon/reagent_containers/food/snacks/monkeykabob/New() - ..() - reagents.add_reagent("protein", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tofukabob - name = "Tofu-kabob" - icon_state = "kabob" - desc = "Vegan meat, on a stick." - trash = /obj/item/stack/rods - filling_color = "#FFFEE0" - - center_of_mass = list("x"=17, "y"=15) - nutriment_amt = 8 - nutriment_desc = list("tofu" = 3, "metal" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/tofukabob/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cubancarp - name = "Cuban Carp" - desc = "A sandwich that burns your tongue and then leaves it numb!" - icon_state = "cubancarp" - trash = /obj/item/trash/plate - filling_color = "#E9ADFF" - center_of_mass = list("x"=12, "y"=5) - nutriment_amt = 3 - nutriment_desc = list("toasted bread" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cubancarp/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("carpotoxin", 3) - reagents.add_reagent("capsaicin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/popcorn - name = "Popcorn" - desc = "Now let's find some cinema." - icon_state = "popcorn" - trash = /obj/item/trash/popcorn - var/unpopped = 0 - filling_color = "#FFFAD4" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 2 - nutriment_desc = list("popcorn" = 3) - - -/obj/item/weapon/reagent_containers/food/snacks/popcorn/New() - ..() - unpopped = rand(1,10) - bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 - -/obj/item/weapon/reagent_containers/food/snacks/popcorn/On_Consume() - if(prob(unpopped)) //lol ...what's the point? - usr << "You bite down on an un-popped kernel!" - unpopped = max(0, unpopped-1) - ..() - -/obj/item/weapon/reagent_containers/food/snacks/sosjerky - name = "Scaredy's Private Reserve Beef Jerky" - icon_state = "sosjerky" - desc = "Beef jerky made from the finest space cows." - trash = /obj/item/trash/sosjerky - filling_color = "#631212" - center_of_mass = list("x"=15, "y"=9) - -/obj/item/weapon/reagent_containers/food/snacks/sosjerky/New() - ..() - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/no_raisin - name = "4no Raisins" - icon_state = "4no_raisins" - desc = "Best raisins in the universe. Not sure why." - trash = /obj/item/trash/raisins - filling_color = "#343834" - center_of_mass = list("x"=15, "y"=4) - nutriment_amt = 6 - nutriment_desc = list("dried raisins" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/no_raisin/New() - ..() - reagents.add_reagent("nutriment", 6) - -/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie - name = "Space Twinkie" - icon_state = "space_twinkie" - desc = "Guaranteed to survive longer then you will." - filling_color = "#FFE591" - center_of_mass = list("x"=15, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/spacetwinkie/New() - ..() - reagents.add_reagent("sugar", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers - name = "Cheesie Honkers" - icon_state = "cheesie_honkers" - desc = "Bite sized cheesie snacks that will honk all over your mouth" - trash = /obj/item/trash/cheesie - filling_color = "#FFA305" - center_of_mass = list("x"=15, "y"=9) - nutriment_amt = 4 - nutriment_desc = list("cheese" = 5, "chips" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/syndicake - name = "Syndi-Cakes" - icon_state = "syndi_cakes" - desc = "An extremely moist snack cake that tastes just as good after being nuked." - filling_color = "#FF5D05" - center_of_mass = list("x"=16, "y"=10) - trash = /obj/item/trash/syndi_cakes - nutriment_amt = 4 - nutriment_desc = list("sweetness" = 3, "cake" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/syndicake/New() - ..() - reagents.add_reagent("doctorsdelight", 5) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato - name = "Loaded Baked Potato" - desc = "Totally baked." - icon_state = "loadedbakedpotato" - filling_color = "#9C7A68" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 3 - nutriment_desc = list("baked potato" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fries - name = "Space Fries" - desc = "AKA: French Fries, Freedom Fries, etc." - icon_state = "fries" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("fresh fries" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/fries/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/mashedpotato - name = "Mashed Potato" - desc = "Pillowy mounds of mashed potato." - icon_state = "mashedpotato" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("fluffy mashed potatoes" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/mashedpotato/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/bangersandmash - name = "Bangers and Mash" - desc = "An English treat." - icon_state = "bangersandmash" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("fluffy potato" = 3, "sausage" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/bangersandmash/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/cheesymash - name = "Cheesy Mashed Potato" - desc = "The only thing that could make mash better." - icon_state = "cheesymash" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("cheesy potato" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/cheesymash/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/blackpudding - name = "Black Pudding" - desc = "This doesn't seem like a pudding at all." - icon_state = "blackpudding" - filling_color = "#FF0000" - center_of_mass = list("x"=16, "y"=7) - -/obj/item/weapon/reagent_containers/food/snacks/blackpudding/New() - ..() - reagents.add_reagent("protein", 2) - reagents.add_reagent("blood", 5) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/soydope - name = "Soy Dope" - desc = "Dope from a soy." - icon_state = "soydope" - trash = /obj/item/trash/plate - filling_color = "#C4BF76" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 2 - nutriment_desc = list("slime" = 2, "soy" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/soydope/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/spagetti - name = "Spaghetti" - desc = "A bundle of raw spaghetti." - icon_state = "spagetti" - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=16) - nutriment_amt = 1 - nutriment_desc = list("noodles" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/spagetti/New() - ..() - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/cheesyfries - name = "Cheesy Fries" - desc = "Fries. Covered in cheese. Duh." - icon_state = "cheesyfries" - trash = /obj/item/trash/plate - filling_color = "#EDDD00" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("fresh fries" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cheesyfries/New() - ..() - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fortunecookie - name = "Fortune cookie" - desc = "A true prophecy in each cookie!" - icon_state = "fortune_cookie" - filling_color = "#E8E79E" - center_of_mass = list("x"=15, "y"=14) - nutriment_amt = 3 - nutriment_desc = list("fortune cookie" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/fortunecookie/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/badrecipe - name = "Burned mess" - desc = "Someone should be demoted from chef for this." - icon_state = "badrecipe" - filling_color = "#211F02" - center_of_mass = list("x"=16, "y"=12) - -/obj/item/weapon/reagent_containers/food/snacks/badrecipe/New() - ..() - reagents.add_reagent("toxin", 1) - reagents.add_reagent("carbon", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatsteak - name = "Meat steak" - desc = "A piece of hot spicy meat." - icon_state = "meatstake" - trash = /obj/item/trash/plate - filling_color = "#7A3D11" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/meatsteak/New() - ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("sodiumchloride", 1) - reagents.add_reagent("blackpepper", 1) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff - name = "Spacy Liberty Duff" - desc = "Jello gelatin, from Alfred Hubbard's cookbook" - icon_state = "spacylibertyduff" - trash = /obj/item/trash/snack_bowl - filling_color = "#42B873" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 6 - nutriment_desc = list("mushroom" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/spacylibertyduff/New() - ..() - reagents.add_reagent("psilocybin", 6) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/amanitajelly - name = "Amanita Jelly" - desc = "Looks curiously toxic" - icon_state = "amanitajelly" - trash = /obj/item/trash/snack_bowl - filling_color = "#ED0758" - center_of_mass = list("x"=16, "y"=5) - nutriment_amt = 6 - nutriment_desc = list("jelly" = 3, "mushroom" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/amanitajelly/New() - ..() - reagents.add_reagent("amatoxin", 6) - reagents.add_reagent("psilocybin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/poppypretzel - name = "Poppy pretzel" - desc = "It's all twisted up!" - icon_state = "poppypretzel" - bitesize = 2 - filling_color = "#916E36" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 5 - nutriment_desc = list("poppy seeds" = 2, "pretzel" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/poppypretzel/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatballsoup - name = "Meatball soup" - desc = "You've got balls kid, BALLS!" - icon_state = "meatballsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#785210" - center_of_mass = list("x"=16, "y"=8) - -/obj/item/weapon/reagent_containers/food/snacks/meatballsoup/New() - ..() - reagents.add_reagent("protein", 8) - reagents.add_reagent("water", 5) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/slimesoup - name = "slime soup" - desc = "If no water is available, you may substitute tears." - icon_state = "slimesoup" //nonexistant? - filling_color = "#C4DBA0" - -/obj/item/weapon/reagent_containers/food/snacks/slimesoup/New() - ..() - reagents.add_reagent("slimejelly", 5) - reagents.add_reagent("water", 10) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/bloodsoup - name = "Tomato soup" - desc = "Smells like copper." - icon_state = "tomatosoup" - filling_color = "#FF0000" - center_of_mass = list("x"=16, "y"=7) - -/obj/item/weapon/reagent_containers/food/snacks/bloodsoup/New() - ..() - reagents.add_reagent("protein", 2) - reagents.add_reagent("blood", 10) - reagents.add_reagent("water", 5) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/clownstears - name = "Clown's Tears" - desc = "Not very funny." - icon_state = "clownstears" - filling_color = "#C4FBFF" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 4 - nutriment_desc = list("salt" = 1, "the worst joke" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/clownstears/New() - ..() - reagents.add_reagent("banana", 5) - reagents.add_reagent("water", 10) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup - name = "Vegetable soup" - desc = "A true vegan meal" //TODO - icon_state = "vegetablesoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#AFC4B5" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 8 - nutriment_desc = list("carot" = 2, "corn" = 2, "eggplant" = 2, "potato" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/vegetablesoup/New() - ..() - reagents.add_reagent("water", 5) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/nettlesoup - name = "Nettle soup" - desc = "To think, the botanist would've beat you to death with one of these." - icon_state = "nettlesoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#AFC4B5" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 8 - nutriment_desc = list("salad" = 4, "egg" = 2, "potato" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/nettlesoup/New() - ..() - reagents.add_reagent("water", 5) - reagents.add_reagent("tricordrazine", 5) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/mysterysoup - name = "Mystery soup" - desc = "The mystery is, why aren't you eating it?" - icon_state = "mysterysoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#F082FF" - center_of_mass = list("x"=16, "y"=6) - nutriment_amt = 1 - nutriment_desc = list("backwash" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/mysterysoup/New() - ..() - var/mysteryselect = pick(1,2,3,4,5,6,7,8,9,10) - switch(mysteryselect) - if(1) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("capsaicin", 3) - reagents.add_reagent("tomatojuice", 2) - if(2) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("frostoil", 3) - reagents.add_reagent("tomatojuice", 2) - if(3) - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("water", 5) - reagents.add_reagent("tricordrazine", 5) - if(4) - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("water", 10) - if(5) - reagents.add_reagent("nutriment", 2) - reagents.add_reagent("banana", 10) - if(6) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("blood", 10) - if(7) - reagents.add_reagent("slimejelly", 10) - reagents.add_reagent("water", 10) - if(8) - reagents.add_reagent("carbon", 10) - reagents.add_reagent("toxin", 10) - if(9) - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("tomatojuice", 10) - if(10) - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("tomatojuice", 5) - reagents.add_reagent("imidazoline", 5) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/wishsoup - name = "Wish Soup" - desc = "I wish this was soup." - icon_state = "wishsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#D1F4FF" - center_of_mass = list("x"=16, "y"=11) - -/obj/item/weapon/reagent_containers/food/snacks/wishsoup/New() - ..() - reagents.add_reagent("water", 10) - bitesize = 5 - if(prob(25)) - src.desc = "A wish come true!" - reagents.add_reagent("nutriment", 8, list("something good" = 8)) - -/obj/item/weapon/reagent_containers/food/snacks/hotchili - name = "Hot Chili" - desc = "A five alarm Texan Chili!" - icon_state = "hotchili" - trash = /obj/item/trash/snack_bowl - filling_color = "#FF3C00" - center_of_mass = list("x"=15, "y"=9) - nutriment_amt = 3 - nutriment_desc = list("chilli peppers" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/hotchili/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("capsaicin", 3) - reagents.add_reagent("tomatojuice", 2) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/coldchili - name = "Cold Chili" - desc = "This slush is barely a liquid!" - icon_state = "coldchili" - filling_color = "#2B00FF" - center_of_mass = list("x"=15, "y"=9) - trash = /obj/item/trash/snack_bowl - nutriment_amt = 3 - nutriment_desc = list("ice peppers" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/coldchili/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("frostoil", 3) - reagents.add_reagent("tomatojuice", 2) - bitesize = 5 - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube - name = "monkey cube" - desc = "Just add water!" - flags = OPENCONTAINER - icon_state = "monkeycube" - bitesize = 12 - filling_color = "#ADAC7F" - center_of_mass = list("x"=16, "y"=14) - - var/wrapped = 0 - var/monkey_type = "Monkey" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/New() - ..() - reagents.add_reagent("protein", 10) - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/attack_self(mob/user as mob) - if(wrapped) - Unwrap(user) - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Expand() - src.visible_message("\The [src] expands!") - var/mob/living/carbon/human/H = new(get_turf(src)) - H.set_species(monkey_type) - H.real_name = H.species.get_random_name() - H.name = H.real_name - if(ismob(loc)) - var/mob/M = loc - M.unEquip(src) - qdel(src) - return 1 - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/proc/Unwrap(mob/user as mob) - icon_state = "monkeycube" - desc = "Just add water!" - to_chat(user, "You unwrap the cube.") - wrapped = 0 - flags |= OPENCONTAINER - return - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/On_Consume(var/mob/M) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - H.visible_message("A screeching creature bursts out of [M]'s chest!") - var/obj/item/organ/external/organ = H.get_organ(BP_TORSO) - organ.take_damage(50, 0, 0, "Animal escaping the ribcage") - Expand() - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/on_reagent_change() - if(reagents.has_reagent("water")) - Expand() - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped - desc = "Still wrapped in some paper." - icon_state = "monkeycubewrap" - flags = 0 - wrapped = 1 - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube - name = "farwa cube" - monkey_type = "Farwa" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube - name = "farwa cube" - monkey_type = "Farwa" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube - name = "stok cube" - monkey_type = "Stok" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube - name = "stok cube" - monkey_type = "Stok" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube - name = "neaera cube" - monkey_type = "Neaera" - -/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube - name = "neaera cube" - monkey_type = "Neaera" - -/obj/item/weapon/reagent_containers/food/snacks/spellburger - name = "Spell Burger" - desc = "This is absolutely Ei Nath." - icon_state = "spellburger" - filling_color = "#D505FF" - nutriment_amt = 6 - nutriment_desc = list("magic" = 3, "buns" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/spellburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger - name = "Big Bite Burger" - desc = "Forget the Big Mac. THIS is the future!" - icon_state = "bigbiteburger" - filling_color = "#E3D681" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("buns" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/bigbiteburger/New() - ..() - reagents.add_reagent("protein", 10) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/enchiladas - name = "Enchiladas" - desc = "Viva La Mexico!" - icon_state = "enchiladas" - trash = /obj/item/trash/tray - filling_color = "#A36A1F" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 2 - nutriment_desc = list("tortilla" = 3, "corn" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/enchiladas/New() - ..() - reagents.add_reagent("protein", 6) - reagents.add_reagent("capsaicin", 6) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight - name = "monkey's Delight" - desc = "Eeee Eee!" - icon_state = "monkeysdelight" - trash = /obj/item/trash/tray - filling_color = "#5C3C11" - center_of_mass = list("x"=16, "y"=13) - -/obj/item/weapon/reagent_containers/food/snacks/monkeysdelight/New() - ..() - reagents.add_reagent("protein", 10) - reagents.add_reagent("banana", 5) - reagents.add_reagent("blackpepper", 1) - reagents.add_reagent("sodiumchloride", 1) - bitesize = 6 - -/obj/item/weapon/reagent_containers/food/snacks/baguette - name = "Baguette" - desc = "Bon appetit!" - icon_state = "baguette" - filling_color = "#E3D796" - center_of_mass = list("x"=18, "y"=12) - nutriment_amt = 6 - nutriment_desc = list("french bread" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/baguette/New() - ..() - reagents.add_reagent("blackpepper", 1) - reagents.add_reagent("sodiumchloride", 1) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/fishandchips - name = "Fish and Chips" - desc = "I do say so myself chap." - icon_state = "fishandchips" - filling_color = "#E3D796" - center_of_mass = list("x"=16, "y"=16) - nutriment_amt = 3 - nutriment_desc = list("salt" = 1, "chips" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/fishandchips/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("carpotoxin", 3) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/sandwich - name = "Sandwich" - desc = "A grand creation of meat, cheese, bread, and several leaves of lettuce! Arthur Dent would be proud." - icon_state = "sandwich" - trash = /obj/item/trash/plate - filling_color = "#D9BE29" - center_of_mass = list("x"=16, "y"=4) - nutriment_amt = 3 - nutriment_desc = list("bread" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/sandwich/New() - ..() - reagents.add_reagent("protein", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich - name = "Toasted Sandwich" - desc = "Now if you only had a pepper bar." - icon_state = "toastedsandwich" - trash = /obj/item/trash/plate - filling_color = "#D9BE29" - center_of_mass = list("x"=16, "y"=4) - nutriment_amt = 3 - nutriment_desc = list("toasted bread" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/toastedsandwich/New() - ..() - reagents.add_reagent("protein", 3) - reagents.add_reagent("carbon", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/grilledcheese - name = "Grilled Cheese Sandwich" - desc = "Goes great with Tomato soup!" - icon_state = "toastedsandwich" - trash = /obj/item/trash/plate - filling_color = "#D9BE29" - nutriment_amt = 3 - nutriment_desc = list("toasted bread" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/grilledcheese/New() - ..() - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tomatosoup - name = "Tomato Soup" - desc = "Drinking this feels like being a vampire! A tomato vampire..." - icon_state = "tomatosoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#D92929" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 5 - nutriment_desc = list("soup" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/tomatosoup/New() - ..() - reagents.add_reagent("tomatojuice", 10) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/onionsoup - name = "Onion Soup" - desc = "A soup with layers." - icon_state = "onionsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#E0C367" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 5 - nutriment_desc = list("onion" = 2, "soup" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/onionsoup/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/onionrings - name = "Onion Rings" - desc = "Crispy rings." - icon_state = "onionrings" - trash = /obj/item/trash/plate - filling_color = "#E0C367" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 5 - nutriment_desc = list("onion" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/onionrings/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles - name = "Roffle Waffles" - desc = "Waffles from Roffle. Co." - icon_state = "rofflewaffles" - trash = /obj/item/trash/waffles - filling_color = "#FF00F7" - center_of_mass = list("x"=15, "y"=11) - nutriment_amt = 8 - nutriment_desc = list("waffle" = 7, "sweetness" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/rofflewaffles/New() - ..() - reagents.add_reagent("psilocybin", 8) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/stew - name = "Stew" - desc = "A nice and warm stew. Healthy and strong." - icon_state = "stew" - filling_color = "#9E673A" - center_of_mass = list("x"=16, "y"=5) - nutriment_amt = 6 - nutriment_desc = list("tomato" = 2, "potato" = 2, "carrot" = 2, "eggplant" = 2, "mushroom" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/stew/New() - ..() - reagents.add_reagent("protein", 4) - reagents.add_reagent("tomatojuice", 5) - reagents.add_reagent("imidazoline", 5) - reagents.add_reagent("water", 5) - bitesize = 10 - -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast - name = "Jellied Toast" - desc = "A slice of bread covered with delicious jam." - icon_state = "jellytoast" - trash = /obj/item/trash/plate - filling_color = "#B572AB" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 1 - nutriment_desc = list("toasted bread" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry/New() - ..() - reagents.add_reagent("cherryjelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime/New() - ..() - reagents.add_reagent("slimejelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/jellyburger - name = "Jelly Burger" - desc = "Culinary delight..?" - icon_state = "jellyburger" - filling_color = "#B572AB" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 5 - nutriment_desc = list("buns" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/jellyburger/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime/New() - ..() - reagents.add_reagent("slimejelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry/New() - ..() - reagents.add_reagent("cherryjelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/milosoup - name = "Milosoup" - desc = "The universes best soup! Yum!!!" - icon_state = "milosoup" - trash = /obj/item/trash/snack_bowl - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 8 - nutriment_desc = list("soy" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/milosoup/New() - ..() - reagents.add_reagent("water", 5) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat - name = "Stewed Soy Meat" - desc = "Even non-vegetarians will LOVE this!" - icon_state = "stewedsoymeat" - trash = /obj/item/trash/plate - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 8 - nutriment_desc = list("soy" = 4, "tomato" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti - name = "Boiled Spaghetti" - desc = "A plain dish of noodles, this sucks." - icon_state = "spagettiboiled" - trash = /obj/item/trash/plate - filling_color = "#FCEE81" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 2 - nutriment_desc = list("noodles" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/boiledrice - name = "Boiled Rice" - desc = "A boring dish of boring rice." - icon_state = "boiledrice" - trash = /obj/item/trash/snack_bowl - filling_color = "#FFFBDB" - center_of_mass = list("x"=17, "y"=11) - nutriment_amt = 2 - nutriment_desc = list("rice" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/boiledrice/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/ricepudding - name = "Rice Pudding" - desc = "Where's the jam?" - icon_state = "rpudding" - trash = /obj/item/trash/snack_bowl - filling_color = "#FFFBDB" - center_of_mass = list("x"=17, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("rice" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/ricepudding/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/pastatomato - name = "Spaghetti" - desc = "Spaghetti and crushed tomatoes. Just like your abusive father used to make!" - icon_state = "pastatomato" - trash = /obj/item/trash/plate - filling_color = "#DE4545" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 6 - nutriment_desc = list("tomato" = 3, "noodles" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/pastatomato/New() - ..() - reagents.add_reagent("tomatojuice", 10) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti - name = "Spaghetti & Meatballs" - desc = "Now thats a nic'e meatball!" - icon_state = "meatballspagetti" - trash = /obj/item/trash/plate - filling_color = "#DE4545" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 4 - nutriment_desc = list("noodles" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti/New() - ..() - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/spesslaw - name = "Spesslaw" - desc = "A lawyers favourite" - icon_state = "spesslaw" - filling_color = "#DE4545" - center_of_mass = list("x"=16, "y"=10) - nutriment_amt = 4 - nutriment_desc = list("noodles" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/spesslaw/New() - ..() - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/carrotfries - name = "Carrot Fries" - desc = "Tasty fries from fresh Carrots." - icon_state = "carrotfries" - trash = /obj/item/trash/plate - filling_color = "#FAA005" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 3 - nutriment_desc = list("carrot" = 3, "salt" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/carrotfries/New() - ..() - reagents.add_reagent("imidazoline", 3) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/superbiteburger - name = "Super Bite Burger" - desc = "This is a mountain of a burger. FOOD!" - icon_state = "superbiteburger" - filling_color = "#CCA26A" - center_of_mass = list("x"=16, "y"=3) - nutriment_amt = 25 - nutriment_desc = list("buns" = 25) - -/obj/item/weapon/reagent_containers/food/snacks/superbiteburger/New() - ..() - reagents.add_reagent("protein", 25) - bitesize = 10 - -/obj/item/weapon/reagent_containers/food/snacks/candiedapple - name = "Candied Apple" - desc = "An apple coated in sugary sweetness." - icon_state = "candiedapple" - filling_color = "#F21873" - center_of_mass = list("x"=15, "y"=13) - nutriment_amt = 3 - nutriment_desc = list("apple" = 3, "caramel" = 3, "sweetness" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/candiedapple/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/applepie - name = "Apple Pie" - desc = "A pie containing sweet sweet love... or apple." - icon_state = "applepie" - filling_color = "#E0EDC5" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 4 - nutriment_desc = list("sweetness" = 2, "apple" = 2, "pie" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/applepie/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/cherrypie - name = "Cherry Pie" - desc = "Taste so good, make a grown man cry." - icon_state = "cherrypie" - filling_color = "#FF525A" - center_of_mass = list("x"=16, "y"=11) - nutriment_amt = 4 - nutriment_desc = list("sweetness" = 2, "cherry" = 2, "pie" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/cherrypie/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/twobread - name = "Two Bread" - desc = "It is very bitter and winy." - icon_state = "twobread" - filling_color = "#DBCC9A" - center_of_mass = list("x"=15, "y"=12) - nutriment_amt = 2 - nutriment_desc = list("sourness" = 2, "bread" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/twobread/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich - name = "Jelly Sandwich" - desc = "You wish you had some peanut butter to go with this..." - icon_state = "jellysandwich" - trash = /obj/item/trash/plate - filling_color = "#9E3A78" - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 2 - nutriment_desc = list("bread" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime/New() - ..() - reagents.add_reagent("slimejelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry/New() - ..() - reagents.add_reagent("cherryjelly", 5) - -/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore - name = "Boiled slime Core" - desc = "A boiled red thing." - icon_state = "boiledslimecore" //nonexistant? - -/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore/New() - ..() - reagents.add_reagent("slimejelly", 5) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/mint - name = "mint" - desc = "it is only wafer thin." - icon_state = "mint" - filling_color = "#F2F2F2" - center_of_mass = list("x"=16, "y"=14) - -/obj/item/weapon/reagent_containers/food/snacks/mint/New() - ..() - reagents.add_reagent("mint", 1) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup - name = "chantrelle soup" - desc = "A delicious and hearty mushroom soup." - icon_state = "mushroomsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#E386BF" - center_of_mass = list("x"=17, "y"=10) - nutriment_amt = 8 - nutriment_desc = list("mushroom" = 8, "milk" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/mushroomsoup/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit - name = "plump helmet biscuit" - desc = "This is a finely-prepared plump helmet biscuit. The ingredients are exceptionally minced plump helmet, and well-minced dwarven wheat flour." - icon_state = "phelmbiscuit" - filling_color = "#CFB4C4" - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 5 - nutriment_desc = list("mushroom" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit/New() - ..() - if(prob(10)) - name = "exceptional plump helmet biscuit" - desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" - reagents.add_reagent("nutriment", 8) - bitesize = 2 - else - reagents.add_reagent("nutriment", 5) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/chawanmushi - name = "chawanmushi" - desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat." - icon_state = "chawanmushi" - trash = /obj/item/trash/snack_bowl - filling_color = "#F0F2E4" - center_of_mass = list("x"=17, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/chawanmushi/New() - ..() - reagents.add_reagent("protein", 5) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/beetsoup - name = "beet soup" - desc = "Wait, how do you spell it again..?" - icon_state = "beetsoup" - trash = /obj/item/trash/snack_bowl - filling_color = "#FAC9FF" - center_of_mass = list("x"=15, "y"=8) - nutriment_amt = 8 - nutriment_desc = list("tomato" = 4, "beet" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/beetsoup/New() - ..() - name = pick(list("borsch","bortsch","borstch","borsh","borshch","borscht")) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tossedsalad - name = "tossed salad" - desc = "A proper salad, basic and simple, with little bits of carrot, tomato and apple intermingled. Vegan!" - icon_state = "herbsalad" - trash = /obj/item/trash/snack_bowl - filling_color = "#76B87F" - center_of_mass = list("x"=17, "y"=11) - nutriment_amt = 8 - nutriment_desc = list("salad" = 2, "tomato" = 2, "carrot" = 2, "apple" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/tossedsalad/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/validsalad - name = "valid salad" - desc = "It's just a salad of questionable 'herbs' with meatballs and fried potato slices. Nothing suspicious about it." - icon_state = "validsalad" - trash = /obj/item/trash/snack_bowl - filling_color = "#76B87F" - center_of_mass = list("x"=17, "y"=11) - nutriment_amt = 6 - nutriment_desc = list("100% real salad") - -/obj/item/weapon/reagent_containers/food/snacks/validsalad/New() - ..() - reagents.add_reagent("protein", 2) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/appletart - name = "golden apple streusel tart" - desc = "A tasty dessert that won't make it through a metal detector." - icon_state = "gappletart" - trash = /obj/item/trash/plate - filling_color = "#FFFF00" - center_of_mass = list("x"=16, "y"=18) - nutriment_amt = 8 - nutriment_desc = list("apple" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/appletart/New() - ..() - reagents.add_reagent("gold", 5) - bitesize = 3 - -/////////////////////////////////////////////////Sliceable//////////////////////////////////////// -// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels - -// sliceable is just an organization type path, it doesn't have any additional code or variables tied to it. - -/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 eloquent gentleman." - icon_state = "meatbread" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/meatbread - slices_num = 5 - filling_color = "#FF7575" - 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/slice/meatbread - 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"=16) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread - -/obj/item/weapon/reagent_containers/food/snacks/slice/meatbread/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/slice/xenomeatbread - slices_num = 5 - filling_color = "#8AFF75" - center_of_mass = list("x"=16, "y"=9) - 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/slice/xenomeatbread - name = "xenomeatbread slice" - desc = "A slice of delicious meatbread. Extra Heretical." - icon_state = "xenobreadslice" - trash = /obj/item/trash/plate - 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/slice/xenomeatbread/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/slice/bananabread - slices_num = 5 - filling_color = "#EDE5AD" - center_of_mass = list("x"=16, "y"=9) - 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/slice/bananabread - name = "Banana-nut bread slice" - desc = "A slice of delicious banana bread." - icon_state = "bananabreadslice" - trash = /obj/item/trash/plate - 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/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/slice/tofubread - slices_num = 5 - filling_color = "#F7FFE0" - center_of_mass = list("x"=16, "y"=9) - nutriment_desc = list("tofu" = 10) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/tofubread/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/slice/tofubread - name = "Tofubread slice" - desc = "A slice of delicious tofubread." - icon_state = "tofubreadslice" - trash = /obj/item/trash/plate - 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/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/slice/carrotcake - slices_num = 5 - filling_color = "#FFD675" - center_of_mass = list("x"=16, "y"=10) - 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/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" - trash = /obj/item/trash/plate - 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/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/slice/braincake - slices_num = 5 - filling_color = "#E6AEDB" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("cake" = 10, "sweetness" = 10, "slime" = 15) - nutriment_amt = 5 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/braincake/New() - ..() - reagents.add_reagent("protein", 25) - reagents.add_reagent("alkysine", 10) - bitesize = 2 - -/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" - trash = /obj/item/trash/plate - 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/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/slice/cheesecake - slices_num = 5 - filling_color = "#FAF7AF" - center_of_mass = list("x"=16, "y"=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/slice/cheesecake - name = "Cheese Cake slice" - 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/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/slice/plaincake - slices_num = 5 - filling_color = "#F7EDD5" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("cake" = 10, "sweetness" = 10, "vanilla" = 15) - nutriment_amt = 20 - -/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" - trash = /obj/item/trash/plate - 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/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/slice/orangecake - slices_num = 5 - filling_color = "#FADA8E" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("cake" = 10, "sweetness" = 10, "orange" = 15) - nutriment_amt = 20 - -/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" - trash = /obj/item/trash/plate - 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/sliceable/limecake - name = "Lime Cake" - desc = "A cake with added lime." - icon_state = "limecake" - 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_desc = list("cake" = 10, "sweetness" = 10, "lime" = 15) - nutriment_amt = 20 - - -/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" - trash = /obj/item/trash/plate - 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/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/slice/lemoncake - slices_num = 5 - filling_color = "#FAFA8E" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("cake" = 10, "sweetness" = 10, "lemon" = 15) - nutriment_amt = 20 - - -/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" - trash = /obj/item/trash/plate - 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/slice/lemoncake/filled - filled = TRUE - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/chocolatecake - name = "Chocolate Cake" - desc = "A cake with added chocolate." - icon_state = "chocolatecake" - 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_desc = list("cake" = 10, "sweetness" = 10, "chocolate" = 15) - nutriment_amt = 20 - -/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" - trash = /obj/item/trash/plate - 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/slice/chocolatecake/filled - filled = TRUE - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel - name = "Cheese wheel" - desc = "A big wheel of delcious Cheddar." - icon_state = "cheesewheel" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/cheesewedge - slices_num = 5 - filling_color = "#FFF700" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("cheese" = 10) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel/New() - ..() - reagents.add_reagent("protein", 10) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheesewedge - name = "Cheese wedge" - desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far." - icon_state = "cheesewedge" - filling_color = "#FFF700" - bitesize = 2 - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake - name = "Birthday Cake" - desc = "Happy Birthday..." - icon_state = "birthdaycake" - 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_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/slice/birthdaycake - name = "Birthday Cake slice" - desc = "A slice of your birthday." - icon_state = "birthdaycakeslice" - trash = /obj/item/trash/plate - 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/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/slice/bread - slices_num = 5 - filling_color = "#FFE396" - center_of_mass = list("x"=16, "y"=9) - 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/slice/bread - name = "Bread slice" - desc = "A slice of home." - icon_state = "breadslice" - trash = /obj/item/trash/plate - 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/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/slice/creamcheesebread - slices_num = 5 - filling_color = "#FFF896" - center_of_mass = list("x"=16, "y"=9) - 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/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"=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/watermelonslice - name = "Watermelon Slice" - desc = "A slice of watery goodness." - icon_state = "watermelonslice" - filling_color = "#FF3867" - bitesize = 2 - center_of_mass = list("x"=16, "y"=10) - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/applecake - name = "Apple Cake" - desc = "A cake centred with apples." - icon_state = "applecake" - 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_desc = list("cake" = 10, "sweetness" = 10, "apple" = 15) - nutriment_amt = 15 - -/obj/item/weapon/reagent_containers/food/snacks/slice/applecake - name = "Apple Cake slice" - desc = "A slice of heavenly cake." - icon_state = "applecakeslice" - trash = /obj/item/trash/plate - 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/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/slice/pumpkinpie - slices_num = 5 - filling_color = "#F5B951" - center_of_mass = list("x"=16, "y"=10) - nutriment_desc = list("pie" = 5, "cream" = 5, "pumpkin" = 5) - nutriment_amt = 15 - -/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" - trash = /obj/item/trash/plate - 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/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"=16, "y"=6) - nutriment_desc = list("salt" = 1, "cracker" = 2) - nutriment_amt = 1 - - - -/////////////////////////////////////////////////PIZZA//////////////////////////////////////// - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza - slices_num = 6 - filling_color = "#BAA14C" - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita - name = "Margherita" - desc = "The golden standard of pizzas." - icon_state = "pizzamargherita" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/margherita - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15) - nutriment_amt = 35 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita/New() - ..() - reagents.add_reagent("protein", 5) - reagents.add_reagent("tomatojuice", 6) - bitesize = 2 - -/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"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita - -/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/slice/meatpizza - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("pizza crust" = 10, "tomato" = 10, "cheese" = 15) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza/New() - ..() - reagents.add_reagent("protein", 34) - reagents.add_reagent("tomatojuice", 6) - bitesize = 2 - -/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"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza - -/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." - icon_state = "mushroompizza" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/mushroompizza - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - 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/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"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza - -/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." - icon_state = "vegetablepizza" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/vegetablepizza - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - 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() - ..() - reagents.add_reagent("protein", 5) - reagents.add_reagent("tomatojuice", 6) - reagents.add_reagent("imidazoline", 12) - bitesize = 2 - -/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." - icon_state = "vegetablepizzaslice" - filling_color = "#BAA14C" - bitesize = 2 - 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/slice/vegetablepizza/filled - filled = TRUE - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza - name = "moldy pizza" - desc = "This pizza might actually be alive. There's mold all over." - icon_state = "oldpizza" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/slice/oldpizza - slices_num = 6 - center_of_mass = list("x"=16, "y"=11) - nutriment_desc = list("stale pizza crust" = 10, "moldy tomato" = 10, "moldy cheese" = 5) - nutriment_amt = 10 - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza/New() - ..() - reagents.add_reagent("protein", 5) - reagents.add_reagent("tomatojuice", 6) - reagents.add_reagent("mold", 8) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/slice/oldpizza - name = "moldy pizza slice" - desc = "This used to be pizza..." - icon_state = "old_pizza" - filling_color = "#BAA14C" - bitesize = 2 - center_of_mass = list("x"=16, "y"=13) - whole_path = /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza - -/obj/item/pizzabox - name = "pizza box" - desc = "A box suited for pizzas." - icon = 'icons/obj/food.dmi' - icon_state = "pizzabox1" - - var/open = 0 // Is the box open? - var/ismessy = 0 // Fancy mess on the lid - var/obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/pizza // Content pizza - var/list/boxes = list() // If the boxes are stacked, they come here - var/boxtag = "" - -/obj/item/pizzabox/update_icon() - - overlays = list() - - // Set appropriate description - if( open && pizza ) - desc = "A box suited for pizzas. It appears to have a [pizza.name] inside." - 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 != "" ) - desc = "[desc] The box on top has a tag, it reads: '[toptag]'." - else - desc = "A box suited for pizzas." - - if( boxtag != "" ) - desc = "[desc] The box has a tag, it reads: '[boxtag]'." - - // Icon states and overlays - if( open ) - if( ismessy ) - icon_state = "pizzabox_messy" - else - icon_state = "pizzabox_open" - - if( pizza ) - var/image/pizzaimg = image("food.dmi", icon_state = pizza.icon_state) - pizzaimg.pixel_y = -3 - overlays += pizzaimg - - return - else - // Stupid code because byondcode sucks - var/doimgtag = 0 - if( boxes.len > 0 ) - var/obj/item/pizzabox/topbox = boxes[boxes.len] - if( topbox.boxtag != "" ) - doimgtag = 1 - else - if( boxtag != "" ) - doimgtag = 1 - - 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 ) - - if( open && pizza ) - user.put_in_hands( pizza ) - - 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 ) - ..() - return - - var/obj/item/pizzabox/box = boxes[boxes.len] - boxes -= box - - user.put_in_hands( box ) - 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 ) - - if( boxes.len > 0 ) - return - - open = !open - - 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/) ) - var/obj/item/pizzabox/box = I - - 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 ) - 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 ) - - box.update_icon() - update_icon() - - to_chat(user, "You put \the [box] ontop of \the [src]!") - else - to_chat(user, "The stack is too high!") - else - 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( src.open ) - user.drop_item() - I.loc = src - src.pizza = I - - update_icon() - - to_chat(user, "You put \the [I] in \the [src]!") - else - 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( 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 ) - boxtotagto = boxes[boxes.len] - - boxtotagto.boxtag = copytext("[boxtotagto.boxtag][t]", 1, 30) - - update_icon() - return - ..() - -/obj/item/pizzabox/margherita/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/margherita(src) - boxtag = "Margherita Deluxe" - -/obj/item/pizzabox/vegetable/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza(src) - boxtag = "Gourmet Vegatable" - -/obj/item/pizzabox/mushroom/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/mushroompizza(src) - boxtag = "Mushroom Special" - -/obj/item/pizzabox/meat/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza(src) - boxtag = "Meatlover's Supreme" - -/obj/item/pizzabox/old/New() - pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/oldpizza(src) - boxtag = "Deluxe Gourmet" - -/obj/item/weapon/reagent_containers/food/snacks/dionaroast - name = "roast diona" - desc = "It's like an enormous, leathery carrot. With an eye." - icon_state = "dionaroast" - trash = /obj/item/trash/plate - filling_color = "#75754B" - center_of_mass = list("x"=16, "y"=7) - nutriment_amt = 6 - nutriment_desc = list("a chorus of flavor" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/dionaroast/New() - ..() - reagents.add_reagent("radium", 2) - bitesize = 2 - -/////////////////////////////////////////// -// new old food stuff from bs12 -/////////////////////////////////////////// -/obj/item/weapon/reagent_containers/food/snacks/dough - name = "dough" - desc = "A piece of dough." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "dough" - bitesize = 2 - center_of_mass = list("x"=16, "y"=13) - nutriment_amt = 3 - nutriment_desc = list("uncooked dough" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/dough/New() - ..() - reagents.add_reagent("protein", 1) - -// Dough + rolling pin = flat dough -/obj/item/weapon/reagent_containers/food/snacks/dough/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/material/kitchen/rollingpin)) - new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src) - user << "You flatten the dough." - qdel(src) - -// slicable into 3xdoughslices -/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough - name = "flat dough" - desc = "A flattened dough." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "flat dough" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice - slices_num = 3 - center_of_mass = list("x"=16, "y"=16) - -/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/New() - ..() - reagents.add_reagent("protein", 1) - reagents.add_reagent("nutriment", 3) - -/obj/item/weapon/reagent_containers/food/snacks/doughslice - name = "dough slice" - desc = "A building block of an impressive dish." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "doughslice" - slice_path = /obj/item/weapon/reagent_containers/food/snacks/spagetti - slices_num = 1 - bitesize = 2 - center_of_mass = list("x"=17, "y"=19) - nutriment_amt = 1 - nutriment_desc = list("uncooked dough" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/doughslice/New() - ..() - -/obj/item/weapon/reagent_containers/food/snacks/bun - name = "bun" - desc = "A base for any self-respecting burger." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "bun" - bitesize = 2 - center_of_mass = list("x"=16, "y"=12) - nutriment_amt = 4 - nutriment_desc = "bun" - -/obj/item/weapon/reagent_containers/food/snacks/bun/New() - ..() - -/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/weapon/W as obj, mob/user as mob) - // Bun + meatball = burger - if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/meatball)) - new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src) - user << "You make a burger." - qdel(W) - qdel(src) - - // Bun + cutlet = hamburger - else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/cutlet)) - new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src) - user << "You make a burger." - qdel(W) - qdel(src) - - // Bun + sausage = hotdog - else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/sausage)) - new /obj/item/weapon/reagent_containers/food/snacks/hotdog(src) - user << "You make a hotdog." - qdel(W) - qdel(src) - -// Burger + cheese wedge = cheeseburger -/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob) - if(istype(W))// && !istype(src,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge)) - new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src) - user << "You make a cheeseburger." - qdel(W) - qdel(src) - return - else - ..() - -// Human Burger + cheese wedge = cheeseburger -/obj/item/weapon/reagent_containers/food/snacks/human/burger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob) - if(istype(W)) - new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src) - user << "You make a cheeseburger." - qdel(W) - qdel(src) - return - else - ..() - -/obj/item/weapon/reagent_containers/food/snacks/bunbun - name = "\improper Bun Bun" - desc = "A small bread monkey fashioned from two burger buns." - icon_state = "bunbun" - bitesize = 2 - center_of_mass = list("x"=16, "y"=8) - nutriment_amt = 8 - nutriment_desc = list("bun" = 8) - -/obj/item/weapon/reagent_containers/food/snacks/bunbun/New() - ..() - -/obj/item/weapon/reagent_containers/food/snacks/taco - name = "taco" - desc = "Take a bite!" - icon_state = "taco" - bitesize = 3 - center_of_mass = list("x"=21, "y"=12) - nutriment_amt = 4 - nutriment_desc = list("cheese" = 2,"taco shell" = 2) -/obj/item/weapon/reagent_containers/food/snacks/taco/New() - ..() - reagents.add_reagent("protein", 3) - -/obj/item/weapon/reagent_containers/food/snacks/rawcutlet - name = "raw cutlet" - desc = "A thin piece of raw meat." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "rawcutlet" - bitesize = 1 - center_of_mass = list("x"=17, "y"=20) - -/obj/item/weapon/reagent_containers/food/snacks/rawcutlet/New() - ..() - reagents.add_reagent("protein", 1) - -/obj/item/weapon/reagent_containers/food/snacks/cutlet - name = "cutlet" - desc = "A tasty meat slice." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "cutlet" - bitesize = 2 - center_of_mass = list("x"=17, "y"=20) - -/obj/item/weapon/reagent_containers/food/snacks/cutlet/New() - ..() - reagents.add_reagent("protein", 2) - -/obj/item/weapon/reagent_containers/food/snacks/rawmeatball - name = "raw meatball" - desc = "A raw meatball." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "rawmeatball" - bitesize = 2 - center_of_mass = list("x"=16, "y"=15) - -/obj/item/weapon/reagent_containers/food/snacks/rawmeatball/New() - ..() - reagents.add_reagent("protein", 2) - -/obj/item/weapon/reagent_containers/food/snacks/hotdog - name = "hotdog" - desc = "Unrelated to dogs, maybe." - icon_state = "hotdog" - bitesize = 2 - center_of_mass = list("x"=16, "y"=17) - -/obj/item/weapon/reagent_containers/food/snacks/hotdog/New() - ..() - reagents.add_reagent("protein", 6) - -/obj/item/weapon/reagent_containers/food/snacks/hotdog/old - name = "old hotdog" - desc = "Covered in mold. You're not gonna eat that, are you?" - -/obj/item/weapon/reagent_containers/food/snacks/hotdog/old/New() - ..() - reagents.add_reagent("mold", 6) - -/obj/item/weapon/reagent_containers/food/snacks/flatbread - name = "flatbread" - desc = "Bland but filling." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "flatbread" - bitesize = 2 - center_of_mass = list("x"=16, "y"=16) - nutriment_amt = 3 - nutriment_desc = list("bread" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/flatbread/New() - ..() - -// potato + knife = raw sticks -/obj/item/weapon/reagent_containers/food/snacks/grown/attackby(obj/item/weapon/W, mob/user) - if(seed && seed.kitchen_tag && seed.kitchen_tag == "potato" && istype(W,/obj/item/weapon/material/knife)) - new /obj/item/weapon/reagent_containers/food/snacks/rawsticks(get_turf(src)) - user << "You cut the potato." - qdel(src) - else - ..() - -/obj/item/weapon/reagent_containers/food/snacks/rawsticks - name = "raw potato sticks" - desc = "Raw fries, not very tasty." - icon = 'icons/obj/food_ingredients.dmi' - icon_state = "rawsticks" - bitesize = 2 - center_of_mass = list("x"=16, "y"=12) - nutriment_amt = 3 - nutriment_desc = list("raw potato" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/rawsticks/New() - ..() - -/obj/item/weapon/reagent_containers/food/snacks/liquidfood - name = "\improper LiquidFood Ration" - desc = "A prepackaged grey slurry of all the essential nutrients for a spacefarer on the go. Should this be crunchy?" - icon_state = "liquidfood" - trash = /obj/item/trash/liquidfood - filling_color = "#A8A8A8" - center_of_mass = list("x"=16, "y"=15) - nutriment_amt = 20 - nutriment_desc = list("chalk" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/liquidfood/New() - ..() - reagents.add_reagent("iron", 3) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/tastybread - name = "bread tube" - desc = "Bread in a tube. Chewy...and surprisingly tasty." - icon_state = "tastybread" - trash = /obj/item/trash/tastybread - filling_color = "#A66829" - center_of_mass = list("x"=17, "y"=16) - nutriment_amt = 6 - nutriment_desc = list("bread" = 2, "sweetness" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/tastybread/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks - name = "\improper SkrellSnax" - desc = "Cured fungus shipped all the way from Qerr'balak, almost like jerky! Almost." - icon_state = "skrellsnacks" - filling_color = "#A66829" - center_of_mass = list("x"=15, "y"=12) - nutriment_amt = 10 - nutriment_desc = list("mushroom" = 5, "salt" = 5) - -/obj/item/weapon/reagent_containers/food/snacks/skrellsnacks/New() - ..() - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/unajerky - name = "Moghes Imported Sissalik Jerky" - icon_state = "unathitinred" - desc = "An incredibly well made jerky, shipped in all the way from Moghes." - trash = /obj/item/trash/unajerky - filling_color = "#631212" - center_of_mass = list("x"=15, "y"=9) - -/obj/item/weapon/reagent_containers/food/snacks/unajerky/New() - ..() - reagents.add_reagent("protein", 8) - reagents.add_reagent("capsaicin", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/croissant - name = "croissant" - desc = "True French cuisine." - filling_color = "#E3D796" - icon_state = "croissant" - nutriment_amt = 6 - nutriment_desc = list("french bread" = 6) - -/obj/item/weapon/reagent_containers/food/snacks/croissant/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatbun - name = "meat bun" - desc = "Chinese street food, in neither China nor a street." - filling_color = "#DEDEAB" - icon_state = "meatbun" - nutriment_amt = 4 - -/obj/item/weapon/reagent_containers/food/snacks/meatbun/New() - ..() - bitesize = 2 - reagents.add_reagent("protein", 4) - -/obj/item/weapon/reagent_containers/food/snacks/sashimi - name = "carp sashimi" - desc = "Expertly prepared. Still toxic." - filling_color = "#FFDEFE" - icon_state = "sashimi" - nutriment_amt = 6 - -/obj/item/weapon/reagent_containers/food/snacks/sashimi/New() - ..() - reagents.add_reagent("protein", 2) - reagents.add_reagent("carpotoxin", 2) - bitesize = 3 - -/obj/item/weapon/reagent_containers/food/snacks/benedict - name = "eggs benedict" - desc = "Hey, there's only one egg in this!" - filling_color = "#FFDF78" - icon_state = "benedict" - nutriment_amt = 4 - -/obj/item/weapon/reagent_containers/food/snacks/benedict/New() - ..() - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/beans - name = "baked beans" - desc = "Musical fruit in a slightly less musical container." - filling_color = "#FC6F28" - icon_state = "beans" - nutriment_amt = 4 - nutriment_desc = list("beans" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/beans/New() - ..() - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/sugarcookie - name = "sugar cookie" - desc = "Just like your little sister used to make." - filling_color = "#DBC94F" - icon_state = "sugarcookie" - nutriment_amt = 5 - nutriment_desc = list("sweetness" = 4, "cookie" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/sugarcookie/New() - ..() - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/berrymuffin - name = "berry muffin" - desc = "A delicious and spongy little cake, with berries." - icon_state = "berrymuffin" - filling_color = "#E0CF9B" - center_of_mass = list("x"=17, "y"=4) - nutriment_amt = 6 - nutriment_desc = list("sweetness" = 2, "muffin" = 2, "berries" = 2) - -/obj/item/weapon/reagent_containers/food/snacks/berrymuffin/New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin - name = "booberry muffin" - desc = "My stomach is a graveyard! No living being can quench my bloodthirst!" - icon_state = "berrymuffin" - filling_color = "#799ACE" - center_of_mass = list("x"=17, "y"=4) - nutriment_amt = 6 - nutriment_desc = list("spookiness" = 4, "muffin" = 1, "berries" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/ghostmuffin/New() - ..() - reagents.add_reagent("nutriment", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/eggroll - name = "egg roll" - desc = "Free with orders over 10 thalers." - icon_state = "eggroll" - filling_color = "#799ACE" - center_of_mass = list("x"=17, "y"=4) - nutriment_amt = 4 - nutriment_desc = list("egg" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/eggroll/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fruitsalad - name = "fruit salad" - desc = "Your standard fruit salad." - icon_state = "fruitsalad" - filling_color = "#FF3867" - nutriment_amt = 10 - nutriment_desc = list("fruit" = 10) - -/obj/item/weapon/reagent_containers/food/snacks/fruitsalad/New() - ..() - reagents.add_reagent("nutriment", 10) - bitesize = 4 - -/obj/item/weapon/reagent_containers/food/snacks/eggbowl - name = "egg bowl" - desc = "A bowl of fried rice with egg mixed in." - icon_state = "eggbowl" - trash = /obj/item/trash/snack_bowl - filling_color = "#FFFBDB" - nutriment_amt = 6 - nutriment_desc = list("rice" = 2, "egg" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/eggbowl/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/porkbowl - name = "pork bowl" - desc = "A bowl of fried rice with cuts of meat." - icon_state = "porkbowl" - trash = /obj/item/trash/snack_bowl - filling_color = "#FFFBDB" - nutriment_amt = 6 - nutriment_desc = list("rice" = 2, "meat" = 4) - -/obj/item/weapon/reagent_containers/food/snacks/porkbowl/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/tortilla - name = "tortilla" - desc = "The base for all your burritos." - icon_state = "tortilla" - nutriment_amt = 1 - nutriment_desc = list("bread" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/tortilla/New() - ..() - reagents.add_reagent("nutriment", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/meatburrito - name = "carne asada burrito" - desc = "The best burrito for meat lovers." - icon_state = "carneburrito" - nutriment_amt = 6 - nutriment_desc = list("tortilla" = 3, "meat" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/meatburrito/New() - ..() - reagents.add_reagent("protein", 6) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito - name = "Cheese burrito" - desc = "It's a burrito filled with cheese." - icon_state = "cheeseburrito" - nutriment_amt = 6 - nutriment_desc = list("tortilla" = 3, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cheeseburrito/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito - name = "fuego phoron burrito" - desc = "A super spicy burrito." - icon_state = "fuegoburrito" - nutriment_amt = 6 - nutriment_desc = list("chili peppers" = 5, "tortilla" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/fuegoburrito/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("capsaicin", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/nachos - name = "nachos" - desc = "Chips from Old Mexico." - icon_state = "nachos" - nutriment_amt = 2 - nutriment_desc = list("salt" = 1) - -/obj/item/weapon/reagent_containers/food/snacks/nachos/New() - ..() - reagents.add_reagent("nutriment", 1) - bitesize = 1 - -/obj/item/weapon/reagent_containers/food/snacks/cheesenachos - name = "cheesy nachos" - desc = "The delicious combination of nachos and melting cheese." - icon_state = "cheesenachos" - nutriment_amt = 5 - nutriment_desc = list("salt" = 2, "cheese" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cheesenachos/New() - ..() - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("protein", 2) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/cubannachos - name = "cuban nachos" - desc = "That's some dangerously spicy nachos." - icon_state = "cubannachos" - nutriment_amt = 6 - nutriment_desc = list("salt" = 1, "cheese" = 2, "chili peppers" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/cubannachos/New() - ..() - reagents.add_reagent("nutriment", 5) - reagents.add_reagent("capsaicin", 4) - bitesize = 2 - -/obj/item/weapon/reagent_containers/food/snacks/piginblanket - name = "pig in a blanket" - desc = "A sausage embedded in soft, fluffy pastry. Free this pig from its blanket prison by eating it." - icon_state = "piginblanket" - nutriment_amt = 6 - nutriment_desc = list("meat" = 3, "pastry" = 3) - -/obj/item/weapon/reagent_containers/food/snacks/piginblanket/New() - ..() - reagents.add_reagent("nutriment", 6) - reagents.add_reagent("protein", 4) ->>>>>>> 10e7a49... Merge pull request #5626 from lbnesquik/Kates-kitchen-fix:code/modules/food/food/snacks.dm bitesize = 3 \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/snacks_vr.dm b/code/modules/food/food/snacks_vr.dm similarity index 100% rename from code/modules/reagents/reagent_containers/food/snacks_vr.dm rename to code/modules/food/food/snacks_vr.dm diff --git a/code/modules/reagents/reagent_containers/food/z_custom_food_vr.dm b/code/modules/food/food/z_custom_food_vr.dm similarity index 100% rename from code/modules/reagents/reagent_containers/food/z_custom_food_vr.dm rename to code/modules/food/food/z_custom_food_vr.dm diff --git a/code/modules/food/kitchen/smartfridge.dm b/code/modules/food/kitchen/smartfridge.dm index 36d71a1766..005f7749b6 100644 --- a/code/modules/food/kitchen/smartfridge.dm +++ b/code/modules/food/kitchen/smartfridge.dm @@ -1,4 +1,3 @@ -<<<<<<< HEAD:code/game/machinery/kitchen/smartfridge.dm /* SmartFridge. Much todo */ /obj/machinery/smartfridge @@ -387,393 +386,3 @@ to_chat(usr, "Access denied.") return 0 return ..() -======= -/* SmartFridge. Much todo -*/ -/obj/machinery/smartfridge - name = "\improper SmartFridge" - icon = 'icons/obj/vending.dmi' - icon_state = "smartfridge" - density = 1 - anchored = 1 - use_power = 1 - idle_power_usage = 5 - active_power_usage = 100 - flags = NOREACT - var/global/max_n_of_items = 999 // Sorry but the BYOND infinite loop detector doesn't look things over 1000. - var/icon_on = "smartfridge" - var/icon_off = "smartfridge-off" - var/icon_panel = "smartfridge-panel" - var/list/item_records = list() - var/datum/stored_item/currently_vending = null //What we're putting out of the machine. - var/seconds_electrified = 0; - var/shoot_inventory = 0 - var/locked = 0 - var/scan_id = 1 - var/is_secure = 0 - var/wrenchable = 0 - var/datum/wires/smartfridge/wires = null - -/obj/machinery/smartfridge/secure - is_secure = 1 - -/obj/machinery/smartfridge/New() - ..() - if(is_secure) - wires = new/datum/wires/smartfridge/secure(src) - else - wires = new/datum/wires/smartfridge(src) - -/obj/machinery/smartfridge/Destroy() - qdel(wires) - for(var/A in item_records) //Get rid of item records. - qdel(A) - wires = null - return ..() - -/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/)) - return 1 - return 0 - -/obj/machinery/smartfridge/seeds - name = "\improper MegaSeed Servitor" - desc = "When you need seeds fast!" - icon = 'icons/obj/vending.dmi' - icon_state = "seeds" - icon_on = "seeds" - icon_off = "seeds-off" - -/obj/machinery/smartfridge/seeds/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/seeds/)) - return 1 - return 0 - -/obj/machinery/smartfridge/secure/extract - name = "\improper Biological Sample Storage" - desc = "A refrigerated storage unit for xenobiological samples." - req_access = list(access_research) - -/obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj) - if(istype(O, /obj/item/slime_extract)) - return TRUE - if(istype(O, /obj/item/slimepotion)) - return TRUE - return FALSE - - -/obj/machinery/smartfridge/secure/medbay - name = "\improper Refrigerated Medicine Storage" - desc = "A refrigerated storage unit for storing medicine and chemicals." - icon_state = "smartfridge" //To fix the icon in the map editor. - icon_on = "smartfridge_chem" - req_one_access = list(access_medical,access_chemistry) - -/obj/machinery/smartfridge/secure/medbay/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/reagent_containers/glass/)) - return 1 - if(istype(O,/obj/item/weapon/storage/pill_bottle/)) - return 1 - if(istype(O,/obj/item/weapon/reagent_containers/pill/)) - return 1 - return 0 - -/obj/machinery/smartfridge/secure/virology - name = "\improper Refrigerated Virus Storage" - desc = "A refrigerated storage unit for storing viral material." - req_access = list(access_virology) - icon_state = "smartfridge_virology" - icon_on = "smartfridge_virology" - icon_off = "smartfridge_virology-off" - -/obj/machinery/smartfridge/secure/virology/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/reagent_containers/glass/beaker/vial/)) - return 1 - if(istype(O,/obj/item/weapon/virusdish/)) - return 1 - return 0 - -/obj/machinery/smartfridge/chemistry - name = "\improper Smart Chemical Storage" - desc = "A refrigerated storage unit for medicine and chemical storage." - -/obj/machinery/smartfridge/chemistry/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/storage/pill_bottle) || istype(O,/obj/item/weapon/reagent_containers)) - return 1 - return 0 - -/obj/machinery/smartfridge/chemistry/virology - name = "\improper Smart Virus Storage" - desc = "A refrigerated storage unit for volatile sample storage." - - -/obj/machinery/smartfridge/drinks - name = "\improper Drink Showcase" - desc = "A refrigerated storage unit for tasty tasty alcohol." - -/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/weapon/reagent_containers/glass) || istype(O,/obj/item/weapon/reagent_containers/food/drinks) || istype(O,/obj/item/weapon/reagent_containers/food/condiment)) - return 1 - -/obj/machinery/smartfridge/drying_rack - name = "\improper Drying Rack" - desc = "A machine for drying plants." - wrenchable = 1 - icon_state = "drying_rack" - icon_on = "drying_rack_on" - icon_off = "drying_rack" - icon_panel = "drying_rack-panel" - -/obj/machinery/smartfridge/drying_rack/accept_check(var/obj/item/O as obj) - if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/)) - var/obj/item/weapon/reagent_containers/food/snacks/S = O - if (S.dried_type) - return 1 - return 0 - -/obj/machinery/smartfridge/drying_rack/process() - ..() - if(stat & (BROKEN|NOPOWER)) - return - if(contents.len) - dry() - update_icon() - -/obj/machinery/smartfridge/drying_rack/update_icon() - overlays.Cut() - var/not_working = stat & (BROKEN|NOPOWER) - if(not_working) - icon_state = icon_off - else - icon_state = icon_on - var/hasItems - for(var/datum/stored_item/I in item_records) - if(I.get_amount()) - hasItems = 1 - break - if(hasItems) - overlays += "drying_rack_filled" - if(!not_working) - overlays += "drying_rack_drying" - -/obj/machinery/smartfridge/drying_rack/proc/dry() - for(var/datum/stored_item/I in item_records) - for(var/obj/item/weapon/reagent_containers/food/snacks/S in I.instances) - if(S.dry) continue - if(S.dried_type == S.type) - S.dry = 1 - S.name = "dried [S.name]" - S.color = "#AAAAAA" - I.instances -= S - S.forceMove(get_turf(src)) - else - var/D = S.dried_type - new D(get_turf(src)) - qdel(S) - return - return - -/obj/machinery/smartfridge/process() - if(stat & (BROKEN|NOPOWER)) - return - if(src.seconds_electrified > 0) - src.seconds_electrified-- - if(src.shoot_inventory && prob(2)) - src.throw_item() - -/obj/machinery/smartfridge/power_change() - var/old_stat = stat - ..() - if(old_stat != stat) - update_icon() - -/obj/machinery/smartfridge/update_icon() - if(stat & (BROKEN|NOPOWER)) - icon_state = icon_off - else - icon_state = icon_on - -/******************* -* Item Adding -********************/ - -/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) - if(O.is_screwdriver()) - panel_open = !panel_open - user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].") - playsound(src, O.usesound, 50, 1) - overlays.Cut() - if(panel_open) - overlays += image(icon, icon_panel) - GLOB.nanomanager.update_uis(src) - return - - if(wrenchable && default_unfasten_wrench(user, O, 20)) - return - - if(istype(O, /obj/item/device/multitool) || O.is_wirecutter()) - if(panel_open) - attack_hand(user) - return - - if(stat & NOPOWER) - to_chat(user, "\The [src] is unpowered and useless.") - return - - if(accept_check(O)) - user.remove_from_mob(O) - stock(O) - user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].") - - - else if(istype(O, /obj/item/weapon/storage/bag)) - var/obj/item/weapon/storage/bag/P = O - var/plants_loaded = 0 - for(var/obj/G in P.contents) - if(accept_check(G)) - P.remove_from_storage(G) //fixes ui bug - Pull Request 5515 - stock(G) - plants_loaded = 1 - if(plants_loaded) - user.visible_message("[user] loads \the [src] with \the [P].", "You load \the [src] with \the [P].") - if(P.contents.len > 0) - to_chat(user, "Some items are refused.") - - else if(istype(O, /obj/item/weapon/gripper)) // Grippers. ~Mechoid. - var/obj/item/weapon/gripper/B = O //B, for Borg. - if(!B.wrapped) - to_chat(user, "\The [B] is not holding anything.") - return - else - var/B_held = B.wrapped - to_chat(user, "You use \the [B] to put \the [B_held] into \the [src].") - return - - else - to_chat(user, "\The [src] smartly refuses [O].") - return 1 - -/obj/machinery/smartfridge/secure/emag_act(var/remaining_charges, var/mob/user) - if(!emagged) - emagged = 1 - locked = -1 - to_chat(user, "You short out the product lock on [src].") - return 1 - -/obj/machinery/smartfridge/proc/stock(obj/item/O) - var/hasRecord = FALSE //Check to see if this passes or not. - for(var/datum/stored_item/I in item_records) - if((O.type == I.item_path) && (O.name == I.item_name)) - I.add_product(O) - hasRecord = TRUE - break - if(!hasRecord) - var/datum/stored_item/item = new/datum/stored_item(src, O.type, O.name) - item.add_product(O) - item_records.Add(item) - GLOB.nanomanager.update_uis(src) - -/obj/machinery/smartfridge/proc/vend(datum/stored_item/I) - I.get_product(get_turf(src)) - GLOB.nanomanager.update_uis(src) - -/obj/machinery/smartfridge/attack_ai(mob/user as mob) - attack_hand(user) - -/obj/machinery/smartfridge/attack_hand(mob/user as mob) - if(stat & (NOPOWER|BROKEN)) - return - wires.Interact(user) - ui_interact(user) - -/******************* -* SmartFridge Menu -********************/ - -/obj/machinery/smartfridge/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - user.set_machine(src) - - var/data[0] - data["contents"] = null - data["electrified"] = seconds_electrified > 0 - data["shoot_inventory"] = shoot_inventory - data["locked"] = locked - data["secure"] = is_secure - - var/list/items[0] - for (var/i=1 to length(item_records)) - var/datum/stored_item/I = item_records[i] - var/count = I.get_amount() - if(count > 0) - items.Add(list(list("display_name" = html_encode(capitalize(I.item_name)), "vend" = i, "quantity" = count))) - - if(items.len > 0) - data["contents"] = items - - ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) - if(!ui) - ui = new(user, src, ui_key, "smartfridge.tmpl", src.name, 400, 500) - ui.set_initial_data(data) - ui.open() - -/obj/machinery/smartfridge/Topic(href, href_list) - if(..()) return 0 - - var/mob/user = usr - var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main") - - src.add_fingerprint(user) - - if(href_list["close"]) - user.unset_machine() - ui.close() - return 0 - - if(href_list["vend"]) - var/index = text2num(href_list["vend"]) - var/amount = text2num(href_list["amount"]) - var/datum/stored_item/I = item_records[index] - var/count = I.get_amount() - - // Sanity check, there are probably ways to press the button when it shouldn't be possible. - if(count > 0) - if((count - amount) < 0) - amount = count - for(var/i = 1 to amount) - vend(I) - - return 1 - return 0 - -/obj/machinery/smartfridge/proc/throw_item() - var/obj/throw_item = null - var/mob/living/target = locate() in view(7,src) - if(!target) - return 0 - - for(var/datum/stored_item/I in item_records) - throw_item = I.get_product(get_turf(src)) - if (!throw_item) - continue - break - - if(!throw_item) - return 0 - spawn(0) - throw_item.throw_at(target,16,3,src) - src.visible_message("[src] launches [throw_item.name] at [target.name]!") - return 1 - -/************************ -* Secure SmartFridges -*************************/ - -/obj/machinery/smartfridge/secure/Topic(href, href_list) - if(stat & (NOPOWER|BROKEN)) - return 0 - if(usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) - if(!allowed(usr) && !emagged && locked != -1 && href_list["vend"]) - to_chat(usr, "Access denied.") - return 0 - return ..() ->>>>>>> 10e7a49... Merge pull request #5626 from lbnesquik/Kates-kitchen-fix:code/modules/food/kitchen/smartfridge.dm diff --git a/vorestation.dme b/vorestation.dme index 248b61203d..33482fb5b4 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1761,6 +1761,8 @@ #include "code\modules\food\food\lunch.dm" #include "code\modules\food\food\sandwich.dm" #include "code\modules\food\food\snacks.dm" +#include "code\modules\food\food\snacks_vr.dm" +#include "code\modules\food\food\z_custom_food_vr.dm" #include "code\modules\food\food\drinks\bottle.dm" #include "code\modules\food\food\drinks\cup.dm" #include "code\modules\food\food\drinks\drinkingglass.dm" From 9dc2f288a0d0b53aa916154d90a27254314c15cf Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Tue, 16 Oct 2018 12:08:31 -0400 Subject: [PATCH 14/18] Clean up two-way merge --- code/modules/admin/verbs/adminhelp.dm | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 72afa8bbe4..13607dcb76 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -550,11 +550,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) . = list("total" = list(), "noflags" = list(), "afk" = list(), "stealth" = list(), "present" = list()) for(var/client/X in admins) .["total"] += X -<<<<<<< HEAD - if(requiredflags != 0 && !check_rights(rights_required = requiredflags, show_msg = FALSE, C = X)) //VOREStation Edit -======= if(requiredflags != 0 && !check_rights(rights_required = requiredflags, show_msg = FALSE, C = X)) ->>>>>>> 7b1db0e... Merge pull request #5670 from VOREStation/pol-ticketpriv .["noflags"] += X else if(X.is_afk()) .["afk"] += X @@ -663,4 +659,4 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) else return founds - return msg \ No newline at end of file + return msg From 9007553a6ce1c1a73b90297d6856eb70ba4cb728 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Tue, 16 Oct 2018 13:04:18 -0500 Subject: [PATCH 15/18] Merge pull request #5678 from Neerti/anchored_fix Fixes two anchored-related bugs, taped papers and the medbay phone. --- code/game/objects/items/devices/radio/radio.dm | 1 + code/game/objects/items/weapons/tape.dm | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 6061cbf7d5..231693305f 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -769,6 +769,7 @@ var/global/list/default_medbay_channels = list( icon_state = "red_phone" listening = 1 name = "phone" + anchored = FALSE /obj/item/device/radio/phone/medbay frequency = MED_I_FREQ diff --git a/code/game/objects/items/weapons/tape.dm b/code/game/objects/items/weapons/tape.dm index e3afddba4c..ce2f0dabfc 100644 --- a/code/game/objects/items/weapons/tape.dm +++ b/code/game/objects/items/weapons/tape.dm @@ -140,7 +140,7 @@ icon_state = "tape" w_class = ITEMSIZE_TINY plane = MOB_PLANE - anchored = 1 //it's sticky, no you cant move it + anchored = FALSE var/obj/item/weapon/stuck = null @@ -180,6 +180,10 @@ qdel(I) to_chat(user, "You place \the [I] back into \the [src].") +/obj/item/weapon/ducttape/attack_hand(mob/living/L) + anchored = FALSE + return ..() // Pick it up now that it's unanchored. + /obj/item/weapon/ducttape/afterattack(var/A, mob/user, flag, params) if(!in_range(user, A) || istype(A, /obj/machinery/door) || !stuck) @@ -198,6 +202,7 @@ user.drop_from_inventory(src) playsound(src, 'sound/effects/tape.ogg',25) forceMove(source_turf) + anchored = TRUE if(params) var/list/mouse_control = params2list(params) From 62ac0986ca32965f0d23e25622400dd499eca322 Mon Sep 17 00:00:00 2001 From: Neerti Date: Tue, 16 Oct 2018 14:17:17 -0400 Subject: [PATCH 17/18] Makes RCDs Clean Again --- code/__defines/misc.dm | 16 +- code/datums/progressbar.dm | 1 + code/game/atoms.dm | 10 + code/game/machinery/doors/airlock.dm | 21 + code/game/mecha/equipment/tools/tools.dm | 111 ++--- code/game/objects/items/weapons/RCD.dm | 433 +++++++++++------- code/game/objects/structures/girders.dm | 51 +++ code/game/objects/structures/grille.dm | 39 +- code/game/objects/structures/window.dm | 17 + code/game/turfs/flooring/flooring_premade.dm | 12 +- code/game/turfs/simulated/floor.dm | 68 +++ .../game/turfs/simulated/outdoors/outdoors.dm | 1 + code/game/turfs/simulated/walls.dm | 24 + code/game/turfs/space/space.dm | 1 + code/game/turfs/space/transit.dm | 1 + code/game/turfs/turf.dm | 26 ++ code/game/turfs/unsimulated.dm | 11 +- .../spacesuits/rig/modules/utility.dm | 2 +- code/modules/mining/mine_turfs.dm | 3 + .../silicon/robot/robot_modules/station.dm | 4 +- .../silicon/robot/robot_modules/syndicate.dm | 2 +- code/modules/multiz/turf.dm | 1 + html/changelogs/Neerti-RCDs.yml | 37 ++ icons/obj/items.dmi | Bin 63500 -> 62769 bytes icons/obj/tools.dmi | Bin 10116 -> 13415 bytes 25 files changed, 621 insertions(+), 271 deletions(-) create mode 100644 html/changelogs/Neerti-RCDs.yml diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index d8c4c69e0a..aa334224ad 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -288,4 +288,18 @@ var/global/list/##LIST_NAME = list();\ #define IS_SCREWDRIVER "screwdriver" #define IS_CROWBAR "crowbar" #define IS_WIRECUTTER "wirecutter" -#define IS_WRENCH "wrench" \ No newline at end of file +#define IS_WRENCH "wrench" + +// RCD modes. Used on the RCD, and gets passed to an object's rcd_act() when an RCD is used on it, to determine what happens. +#define RCD_FLOORWALL "Floor / Wall" // Builds plating on space/ground/open tiles. Builds a wall when on floors. Finishes walls when used on girders. +#define RCD_AIRLOCK "Airlock" // Builds an airlock on the tile if one isn't already there. +#define RCD_WINDOWGRILLE "Window / Grille" // Builds a full tile window and grille pair on floors. +#define RCD_DECONSTRUCT "Deconstruction" // Removes various things. Still consumes compressed matter. + +#define RCD_VALUE_MODE "mode" +#define RCD_VALUE_DELAY "delay" +#define RCD_VALUE_COST "cost" + + +#define RCD_SHEETS_PER_MATTER_UNIT 4 // Each physical material sheet is worth four matter units. +#define RCD_MAX_CAPACITY 30 * RCD_SHEETS_PER_MATTER_UNIT \ No newline at end of file diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index 8d2edbeeb9..bf38ab7a1c 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -15,6 +15,7 @@ bar = image('icons/effects/progessbar.dmi', target, "prog_bar_0") bar.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA bar.pixel_y = 32 + bar.plane = PLANE_PLAYER_HUD src.user = user if(user) client = user.client diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 983c92cdf5..d1289a23de 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -209,6 +209,16 @@ /atom/proc/fire_act() return + +// Returns an assoc list of RCD information. +// Example would be: list(RCD_VALUE_MODE = RCD_DECONSTRUCT, RCD_VALUE_DELAY = 50, RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 4) +// This occurs before rcd_act() is called, and it won't be called if it returns FALSE. +/atom/proc/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + return FALSE + +/atom/proc/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + return + /atom/proc/melt() return diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 327b1e11cd..541e461f27 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1260,3 +1260,24 @@ About the new airlock wires panel: src.open() src.lock() return + + +/obj/machinery/door/airlock/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_DECONSTRUCT) + // Old RCD code made it cost 10 units to decon an airlock. + // Now the new one costs ten "sheets". + return list( + RCD_VALUE_MODE = RCD_DECONSTRUCT, + RCD_VALUE_DELAY = 5 SECONDS, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 10 + ) + return FALSE + +/obj/machinery/door/airlock/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_DECONSTRUCT) + to_chat(user, span("notice", "You deconstruct \the [src].")) + qdel(src) + return TRUE + return FALSE diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index dd4472282c..73bddbb433 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -244,100 +244,43 @@ equip_cooldown = 10 energy_drain = 250 range = MELEE|RANGED - var/mode = 0 //0 - deconstruct, 1 - wall or floor, 2 - airlock. - var/disabled = 0 //malf - equip_type = EQUIP_SPECIAL + var/obj/item/weapon/rcd/electric/mounted/mecha/my_rcd = null + +/obj/item/mecha_parts/mecha_equipment/tool/rcd/initialize() + my_rcd = new(src) + return ..() + +/obj/item/mecha_parts/mecha_equipment/tool/rcd/Destroy() + QDEL_NULL(my_rcd) + return ..() /obj/item/mecha_parts/mecha_equipment/tool/rcd/action(atom/target) - if(istype(target,/area/shuttle)||istype(target, /turf/space/transit))//>implying these are ever made -Sieve - disabled = 1 - else - disabled = 0 - if(!istype(target, /turf) && !istype(target, /obj/machinery/door/airlock)) - target = get_turf(target) - if(!action_checks(target) || disabled || get_dist(chassis, target)>3) return - playsound(chassis, 'sound/machines/click.ogg', 50, 1) - //meh - switch(mode) - if(0) - if (istype(target, /turf/simulated/wall)) - occupant_message("Deconstructing [target]...") - set_ready_state(0) - if(do_after_cooldown(target)) - if(disabled) return - chassis.spark_system.start() - target:ChangeTurf(/turf/simulated/floor/plating) - playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) - chassis.use_power(energy_drain) - else if (istype(target, /turf/simulated/floor)) - occupant_message("Deconstructing [target]...") - set_ready_state(0) - if(do_after_cooldown(target)) - if(disabled) return - chassis.spark_system.start() - target:ChangeTurf(get_base_turf_by_area(target)) - playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) - chassis.use_power(energy_drain) - else if (istype(target, /obj/machinery/door/airlock)) - occupant_message("Deconstructing [target]...") - set_ready_state(0) - if(do_after_cooldown(target)) - if(disabled) return - chassis.spark_system.start() - qdel(target) - playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) - chassis.use_power(energy_drain) - if(1) - if(istype(target, /turf/space) || istype(target,get_base_turf_by_area(target))) - occupant_message("Building Floor...") - set_ready_state(0) - if(do_after_cooldown(target)) - if(disabled) return - target:ChangeTurf(/turf/simulated/floor/plating) - playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) - chassis.spark_system.start() - chassis.use_power(energy_drain*2) - else if(istype(target, /turf/simulated/floor)) - occupant_message("Building Wall...") - set_ready_state(0) - if(do_after_cooldown(target)) - if(disabled) return - target:ChangeTurf(/turf/simulated/wall) - playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) - chassis.spark_system.start() - chassis.use_power(energy_drain*2) - if(2) - if(istype(target, /turf/simulated/floor)) - occupant_message("Building Airlock...") - set_ready_state(0) - if(do_after_cooldown(target)) - if(disabled) return - chassis.spark_system.start() - var/obj/machinery/door/airlock/T = new /obj/machinery/door/airlock(target) - T.autoclose = 1 - playsound(target, 'sound/items/Deconstruct.ogg', 50, 1) - playsound(target, 'sound/effects/sparks2.ogg', 50, 1) - chassis.use_power(energy_drain*2) - return + if(!action_checks(target) || get_dist(chassis, target) > 3) + return FALSE + + my_rcd.use_rcd(target, chassis.occupant) /obj/item/mecha_parts/mecha_equipment/tool/rcd/Topic(href,href_list) ..() if(href_list["mode"]) - mode = text2num(href_list["mode"]) - switch(mode) - if(0) - occupant_message("Switched RCD to Deconstruct.") - if(1) - occupant_message("Switched RCD to Construct.") - if(2) - occupant_message("Switched RCD to Construct Airlock.") - return - + my_rcd.mode_index = text2num(href_list["mode"]) + occupant_message("RCD reconfigured to '[my_rcd.modes[my_rcd.mode_index]]'.") +/* /obj/item/mecha_parts/mecha_equipment/tool/rcd/get_equip_info() return "[..()] \[
D|C|A\]" +*/ +/obj/item/mecha_parts/mecha_equipment/tool/rcd/get_equip_info() + var/list/content = list(..()) // This is all for one line, in the interest of string tree conservation. + var/i = 1 + content += "
" + for(var/mode in my_rcd.modes) + content += " [mode]" + if(i < my_rcd.modes.len) + content += "
" + i++ - + return content.Join() /obj/item/mecha_parts/mecha_equipment/teleporter diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index d9543fed20..a0587d5dbb 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -1,167 +1,291 @@ -//Contains the rapid construction device. +// Contains the rapid construction device. /obj/item/weapon/rcd name = "rapid construction device" - desc = "A device used to rapidly build walls and floors." - icon = 'icons/obj/items.dmi' + desc = "A device used to rapidly build and deconstruct. Reload with compressed matter cartridges." + icon = 'icons/obj/tools.dmi' icon_state = "rcd" - opacity = 0 - density = 0 - anchored = 0.0 - flags = CONDUCT - force = 10.0 - throwforce = 10.0 + item_state = "rcd" + flags = CONDUCT | NOBLUDGEON + force = 10 + throwforce = 10 throw_speed = 1 throw_range = 5 w_class = ITEMSIZE_NORMAL origin_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 2) matter = list(DEFAULT_WALL_MATERIAL = 50000) - preserve_item = 1 + preserve_item = TRUE // RCDs are pretty important. var/datum/effect/effect/system/spark_spread/spark_system var/stored_matter = 0 - var/max_stored_matter = 30 - var/working = 0 - var/mode = 1 - var/list/modes = list("Floor & Walls","Airlock","Deconstruct") - var/canRwall = 0 - var/disabled = 0 + var/max_stored_matter = RCD_MAX_CAPACITY + var/ranged = FALSE + var/busy = FALSE + var/allow_concurrent_building = FALSE // If true, allows for multiple RCD builds at the same time. + var/mode_index = 1 + var/list/modes = list(RCD_FLOORWALL, RCD_AIRLOCK, RCD_WINDOWGRILLE, RCD_DECONSTRUCT) + var/can_remove_rwalls = FALSE + var/airlock_type = /obj/machinery/door/airlock + var/window_type = /obj/structure/window/reinforced/full + var/material_to_use = DEFAULT_WALL_MATERIAL // So badmins can make RCDs that print diamond walls. + var/make_rwalls = FALSE // If true, when building walls, they will be reinforced. -/obj/item/weapon/rcd/attack() - return 0 - -/obj/item/weapon/rcd/proc/can_use(var/mob/user,var/turf/T) - var/usable = 0 - if(user.Adjacent(T) && user.get_active_hand() == src && !user.stat && !user.restrained()) - usable = 1 - if(!user.IsAdvancedToolUser() && istype(user, /mob/living/simple_animal)) - var/mob/living/simple_animal/S = user - if(!S.IsHumanoidToolUser(src)) - usable = 0 - return usable - -/obj/item/weapon/rcd/examine() - ..() - if(src.type == /obj/item/weapon/rcd && loc == usr) - usr << "It currently holds [stored_matter]/[max_stored_matter] matter-units." - -/obj/item/weapon/rcd/New() - ..() +/obj/item/weapon/rcd/initialize() src.spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) + return ..() /obj/item/weapon/rcd/Destroy() - qdel(spark_system) + QDEL_NULL(spark_system) spark_system = null return ..() -/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user) +/obj/item/weapon/rcd/examine(mob/user) + ..() + to_chat(user, display_resources()) +// Used to show how much stuff (matter units, cell charge, etc) is left inside. +/obj/item/weapon/rcd/proc/display_resources() + return "It currently holds [stored_matter]/[max_stored_matter] matter-units." + +// Used to add new cartridges. +/obj/item/weapon/rcd/attackby(obj/item/weapon/W, mob/user) if(istype(W, /obj/item/weapon/rcd_ammo)) var/obj/item/weapon/rcd_ammo/cartridge = W if((stored_matter + cartridge.remaining) > max_stored_matter) - to_chat(user, "The RCD can't hold that many additional matter-units.") - return + to_chat(user, span("warning", "The RCD can't hold that many additional matter-units.")) + return FALSE stored_matter += cartridge.remaining user.drop_from_inventory(W) qdel(W) playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - to_chat(user, "The RCD now holds [stored_matter]/[max_stored_matter] matter-units.") - return - ..() + to_chat(user, span("notice", "The RCD now holds [stored_matter]/[max_stored_matter] matter-units.")) + return TRUE + return ..() -/obj/item/weapon/rcd/attack_self(mob/user) - //Change the mode - if(++mode > 3) mode = 1 - user << "Changed mode to '[modes[mode]]'" - playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) - if(prob(20)) src.spark_system.start() - -/obj/item/weapon/rcd/afterattack(atom/A, mob/user, proximity) - if(!proximity) return - if(disabled && !isrobot(user)) - return 0 - if(istype(get_area(A),/area/shuttle)||istype(get_area(A),/turf/space/transit)) - return 0 - return alter_turf(A,user,(mode == 3)) - -/obj/item/weapon/rcd/proc/useResource(var/amount, var/mob/user) - if(stored_matter < amount) - return 0 - stored_matter -= amount - return 1 - -/obj/item/weapon/rcd/proc/alter_turf(var/turf/T,var/mob/user,var/deconstruct) - - var/build_cost = 0 - var/build_type - var/build_turf - var/build_delay - var/build_other - - if(working == 1) - return 0 - - if(mode == 3 && istype(T,/obj/machinery/door/airlock)) - build_cost = 10 - build_delay = 50 - build_type = "airlock" - else if(mode == 2 && !deconstruct && istype(T,/turf/simulated/floor)) - build_cost = 10 - build_delay = 50 - build_type = "airlock" - build_other = /obj/machinery/door/airlock - else if(!deconstruct && isturf(T) && (istype(T,/turf/space) || istype(T,get_base_turf_by_area(T)))) - build_cost = 1 - build_type = "floor" - build_turf = /turf/simulated/floor/airless - else if(!deconstruct && istype(T,/turf/simulated/mineral/floor)) - build_cost = 1 - build_type = "floor" - build_turf = /turf/simulated/floor/plating - else if(deconstruct && istype(T,/turf/simulated/wall)) - var/turf/simulated/wall/W = T - build_delay = deconstruct ? 50 : 40 - build_cost = 5 - build_type = (!canRwall && W.reinf_material) ? null : "wall" - build_turf = /turf/simulated/floor - else if(istype(T,/turf/simulated/floor) || (istype(T,/turf/simulated/mineral) && !T.density)) - var/turf/simulated/F = T - build_delay = deconstruct ? 50 : 20 - build_cost = deconstruct ? 10 : 3 - build_type = deconstruct ? "floor" : "wall" - build_turf = deconstruct ? get_base_turf_by_area(F) : /turf/simulated/wall - - if(!build_type) - working = 0 - return 0 - - if(!useResource(build_cost, user)) - user << "Insufficient resources." - return 0 - - playsound(src.loc, 'sound/machines/click.ogg', 50, 1) - - working = 1 - user << "[(deconstruct ? "Deconstructing" : "Building")] [build_type]..." - - if(build_delay && !do_after(user, build_delay)) - working = 0 - return 0 - - working = 0 - if(build_delay && !can_use(user,T)) - return 0 - - if(build_turf) - T.ChangeTurf(build_turf, preserve_outdoors = TRUE) - else if(build_other) - new build_other(T) +// Changes which mode it is on. +/obj/item/weapon/rcd/attack_self(mob/living/user) + if(mode_index >= modes.len) // Shouldn't overflow unless someone messes with it in VV poorly but better safe than sorry. + mode_index = 1 else - qdel(T) + mode_index++ - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - return 1 + to_chat(user, span("notice", "Changed mode to '[modes[mode_index]]'.")) + playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) + if(prob(20)) + src.spark_system.start() + +// Removes resources if the RCD can afford it. +/obj/item/weapon/rcd/proc/consume_resources(amount) + if(!can_afford(amount)) + return FALSE + stored_matter -= amount + return TRUE + +// Useful for testing before actually paying (e.g. before a do_after() ). +/obj/item/weapon/rcd/proc/can_afford(amount) + return stored_matter >= amount + +/obj/item/weapon/rcd/afterattack(atom/A, mob/living/user, proximity) + if(!ranged && !proximity) + return FALSE + use_rcd(A, user) + +// Used to call rcd_act() on the atom hit. +/obj/item/weapon/rcd/proc/use_rcd(atom/A, mob/living/user) + if(busy && !allow_concurrent_building) + to_chat(user, span("warning", "\The [src] is busy finishing its current operation, be patient.")) + return FALSE + + var/list/rcd_results = A.rcd_values(user, src, modes[mode_index]) + if(!rcd_results) + to_chat(user, span("warning", "\The [src] blinks a red light as you point it towards \the [A], indicating \ + that it won't work. Try changing the mode, or use it on something else.")) + return FALSE + if(!can_afford(rcd_results[RCD_VALUE_COST])) + to_chat(user, span("warning", "\The [src] lacks the required material to start.")) + return FALSE + + playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) + + var/true_delay = rcd_results[RCD_VALUE_DELAY] * toolspeed + + var/datum/beam/rcd_beam = null + if(ranged) + var/atom/movable/beam_origin = user // This is needed because mecha pilots are inside an object and the beam won't be made if it tries to attach to them.. + if(!isturf(beam_origin.loc)) + beam_origin = user.loc + rcd_beam = beam_origin.Beam(A, icon_state = "rped_upgrade", time = max(true_delay, 5)) + busy = TRUE + + if(do_after(user, true_delay, target = A)) + busy = FALSE + // Doing another check in case we lost matter during the delay for whatever reason. + if(!can_afford(rcd_results[RCD_VALUE_COST])) + to_chat(user, span("warning", "\The [src] lacks the required material to finish the operation.")) + return FALSE + if(A.rcd_act(user, src, rcd_results[RCD_VALUE_MODE])) + consume_resources(rcd_results[RCD_VALUE_COST]) + playsound(get_turf(A), 'sound/items/deconstruct.ogg', 50, 1) + return TRUE + + // If they moved, kill the beam immediately. + qdel(rcd_beam) + busy = FALSE + return FALSE + +// RCD variants. + +// This one starts full. +/obj/item/weapon/rcd/loaded/initialize() + stored_matter = max_stored_matter + return ..() + +// This one makes cooler walls by using an alternative material. +/obj/item/weapon/rcd/shipwright + name = "shipwright's rapid construction device" + desc = "A device used to rapidly build and deconstruct. This version creates a stronger variant of wall, often \ + used in the construction of hulls for starships. Reload with compressed matter cartridges." + material_to_use = MAT_STEELHULL + +/obj/item/weapon/rcd/shipwright/loaded/initialize() + stored_matter = max_stored_matter + return ..() + + +/obj/item/weapon/rcd/advanced + name = "advanced rapid construction device" + desc = "A device used to rapidly build and deconstruct. This version works at a range, builds faster, and has a much larger capacity. \ + Reload with compressed matter cartridges." + icon_state = "adv_rcd" + ranged = TRUE + toolspeed = 0.5 // Twice as fast. + max_stored_matter = RCD_MAX_CAPACITY * 3 // Three times capacity. + +/obj/item/weapon/rcd/advanced/loaded/initialize() + stored_matter = max_stored_matter + return ..() + + +// Electric RCDs. +// Currently just a base for the mounted RCDs. +// Currently there isn't a way to swap out the cells. +// One could be added if there is demand to do so. +/obj/item/weapon/rcd/electric + name = "electric rapid construction device" + desc = "A device used to rapidly build and deconstruct. It runs directly off of electricity, no matter cartridges needed." + icon_state = "electric_rcd" + var/obj/item/weapon/cell/cell = null + var/make_cell = TRUE // If false, initialize() won't spawn a cell for this. + var/electric_cost_coefficent = 83.33 // Higher numbers make it less efficent. 86.3... means it should matche the standard RCD capacity on a 10k cell. + +/obj/item/weapon/rcd/electric/initialize() + if(make_cell) + cell = new /obj/item/weapon/cell/high(src) + return ..() + +/obj/item/weapon/rcd/electric/Destroy() + if(cell) + QDEL_NULL(cell) + return ..() + +/obj/item/weapon/rcd/electric/get_cell() + return cell + +/obj/item/weapon/rcd/electric/can_afford(amount) // This makes it so borgs won't drain their last sliver of charge by mistake, as a bonus. + var/obj/item/weapon/cell/cell = get_cell() + if(cell) + return cell.check_charge(amount * electric_cost_coefficent) + return FALSE + +/obj/item/weapon/rcd/electric/consume_resources(amount) + if(!can_afford(amount)) + return FALSE + var/obj/item/weapon/cell/cell = get_cell() + return cell.checked_use(amount * electric_cost_coefficent) + +/obj/item/weapon/rcd/electric/display_resources() + var/obj/item/weapon/cell/cell = get_cell() + if(cell) + return "The power source connected to \the [src] has a charge of [cell.percent()]%." + return "It lacks a source of power, and cannot function." + + + +// 'Mounted' RCDs, used for borgs/RIGs/Mechas, all of which use their cells to drive the RCD. +/obj/item/weapon/rcd/electric/mounted + name = "mounted electric rapid construction device" + desc = "A device used to rapidly build and deconstruct. It runs directly off of electricity from an external power source." + make_cell = FALSE + +/obj/item/weapon/rcd/electric/mounted/get_cell() + return get_external_power_supply() + +/obj/item/weapon/rcd/electric/mounted/proc/get_external_power_supply() + if(isrobot(loc)) // In a borg. + var/mob/living/silicon/robot/R = loc + return R.cell + if(istype(loc, /obj/item/rig_module)) // In a RIG. + var/obj/item/rig_module/module = loc + if(module.holder) // Is it attached to a RIG? + return module.holder.cell + if(istype(loc, /obj/item/mecha_parts/mecha_equipment)) // In a mech. + var/obj/item/mecha_parts/mecha_equipment/ME = loc + if(ME.chassis) // Is the part attached to a mech? + return ME.chassis.cell + return null + + +// RCDs for borgs. +/obj/item/weapon/rcd/electric/mounted/borg + can_remove_rwalls = TRUE + desc = "A device used to rapidly build and deconstruct. It runs directly off of electricity, drawing directly from your cell." + electric_cost_coefficent = 41.66 // Twice as efficent, out of pity. + toolspeed = 0.5 // Twice as fast, since borg versions typically have this. + +/obj/item/weapon/rcd/electric/mounted/borg/lesser + can_remove_rwalls = FALSE + + +// RCDs for RIGs. +/obj/item/weapon/rcd/electric/mounted/rig + + +// RCDs for Mechs. +/obj/item/weapon/rcd/electric/mounted/mecha + ranged = TRUE + toolspeed = 0.5 + + +// Infinite use RCD for debugging/adminbuse. +/obj/item/weapon/rcd/debug + name = "self-repleshing rapid construction device" + desc = "An RCD that appears to be plated with gold. For some reason it also seems to just \ + be vastly superior to all other RCDs ever created, possibly due to it being colored gold." + icon_state = "debug_rcd" + ranged = TRUE + can_remove_rwalls = TRUE + allow_concurrent_building = TRUE + toolspeed = 0.25 // Four times as fast. + +/obj/item/weapon/rcd/debug/can_afford(amount) + return TRUE + +/obj/item/weapon/rcd/debug/consume_resources(amount) + return TRUE + +/obj/item/weapon/rcd/debug/attackby(obj/item/weapon/W, mob/user) + if(istype(W, /obj/item/weapon/rcd_ammo)) + to_chat(user, span("notice", "\The [src] makes its own material, no need to add more.")) + return FALSE + return ..() + +/obj/item/weapon/rcd/debug/display_resources() + return "It has UNLIMITED POWER!" + + + +// Ammo for the (non-electric) RCDs. /obj/item/weapon/rcd_ammo name = "compressed matter cartridge" desc = "Highly compressed matter for the RCD." @@ -171,50 +295,11 @@ w_class = ITEMSIZE_SMALL origin_tech = list(TECH_MATERIAL = 2) matter = list(DEFAULT_WALL_MATERIAL = 30000,"glass" = 15000) - var/remaining = 10 + var/remaining = RCD_MAX_CAPACITY / 3 /obj/item/weapon/rcd_ammo/large name = "high-capacity matter cartridge" desc = "Do not ingest." matter = list(DEFAULT_WALL_MATERIAL = 45000,"glass" = 22500) - remaining = 30 origin_tech = list(TECH_MATERIAL = 4) - -/obj/item/weapon/rcd/borg - canRwall = 1 - -/obj/item/weapon/rcd/borg/lesser - canRwall = FALSE - -/obj/item/weapon/rcd/borg/useResource(var/amount, var/mob/user) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - if(R.cell) - var/cost = amount*30 - if(R.cell.charge >= cost) - R.cell.use(cost) - return 1 - return 0 - -/obj/item/weapon/rcd/borg/attackby() - return - -/obj/item/weapon/rcd/borg/can_use(var/mob/user,var/turf/T) - return (user.Adjacent(T) && !user.stat) - - -/obj/item/weapon/rcd/mounted/useResource(var/amount, var/mob/user) - var/cost = amount*130 //so that a rig with default powercell can build ~2.5x the stuff a fully-loaded RCD can. - if(istype(loc,/obj/item/rig_module)) - var/obj/item/rig_module/module = loc - if(module.holder && module.holder.cell) - if(module.holder.cell.charge >= cost) - module.holder.cell.use(cost) - return 1 - return 0 - -/obj/item/weapon/rcd/mounted/attackby() - return - -/obj/item/weapon/rcd/mounted/can_use(var/mob/user,var/turf/T) - return (user.Adjacent(T) && !user.stat && !user.restrained()) + remaining = RCD_MAX_CAPACITY diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index b61d01d2a4..058398d850 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -353,3 +353,54 @@ to_chat(user, "You drill through the girder!") new /obj/effect/decal/remains/human(get_turf(src)) dismantle() + + +/obj/structure/girder/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + var/turf/simulated/T = get_turf(src) + if(!istype(T) || T.density) + return FALSE + + switch(passed_mode) + if(RCD_FLOORWALL) + // Finishing a wall costs two sheets. + var/cost = RCD_SHEETS_PER_MATTER_UNIT * 2 + // Rwalls cost three to finish. + if(the_rcd.make_rwalls) + cost += RCD_SHEETS_PER_MATTER_UNIT * 1 + return list( + RCD_VALUE_MODE = RCD_FLOORWALL, + RCD_VALUE_DELAY = 2 SECONDS, + RCD_VALUE_COST = cost + ) + if(RCD_DECONSTRUCT) + return list( + RCD_VALUE_MODE = RCD_DECONSTRUCT, + RCD_VALUE_DELAY = 2 SECONDS, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 5 + ) + return FALSE + +/obj/structure/girder/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + var/turf/simulated/T = get_turf(src) + if(!istype(T) || T.density) // Should stop future bugs of people bringing girders to centcom and RCDing them, or somehow putting a girder on a durasteel wall and deconning it. + return FALSE + + switch(passed_mode) + if(RCD_FLOORWALL) + to_chat(user, span("notice", "You finish a wall.")) + // This is mostly the same as using on a floor. The girder's material is preserved, however. + T.ChangeTurf(/turf/simulated/wall) + var/turf/simulated/wall/new_T = get_turf(src) // Ref to the wall we just built. + // Apparently set_material(...) for walls requires refs to the material singletons and not strings. + // This is different from how other material objects with their own set_material(...) do it, but whatever. + var/material/M = name_to_material[the_rcd.material_to_use] + new_T.set_material(M, the_rcd.make_rwalls ? M : null, girder_material) + new_T.add_hiddenprint(user) + qdel(src) + return TRUE + + if(RCD_DECONSTRUCT) + to_chat(user, span("notice", "You deconstruct \the [src].")) + qdel(src) + return TRUE + diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index f8d532688c..50fa3e8c6e 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -96,7 +96,9 @@ /obj/structure/grille/attackby(obj/item/W as obj, mob/user as mob) if(!istype(W)) return - if(W.is_wirecutter()) + if(istype(W, /obj/item/weapon/rcd)) // To stop us from hitting the grille when building windows, because grilles don't let parent handle it properly. + return FALSE + else if(W.is_wirecutter()) if(!shock(user, 100)) playsound(src, W.usesound, 100, 1) new /obj/item/stack/rods(get_turf(src), destroyed ? 1 : 2) @@ -252,3 +254,38 @@ /obj/structure/grille/broken/rustic icon_state = "grillerustic-b" + + +/obj/structure/grille/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_WINDOWGRILLE) + // A full tile window costs 4 glass sheets. + return list( + RCD_VALUE_MODE = RCD_WINDOWGRILLE, + RCD_VALUE_DELAY = 2 SECONDS, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 4 + ) + + if(RCD_DECONSTRUCT) + return list( + RCD_VALUE_MODE = RCD_DECONSTRUCT, + RCD_VALUE_DELAY = 2 SECONDS, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 2 + ) + return FALSE + +/obj/structure/grille/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_DECONSTRUCT) + to_chat(user, span("notice", "You deconstruct \the [src].")) + qdel(src) + return TRUE + if(RCD_WINDOWGRILLE) + if(locate(/obj/structure/window) in loc) + return FALSE + to_chat(user, span("notice", "You construct a window.")) + var/obj/structure/window/WD = new the_rcd.window_type(loc) + WD.anchored = TRUE + return TRUE + return FALSE + diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 5ada656156..5c7adf8f0e 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -647,3 +647,20 @@ MT.update_icon() return TRUE . = ..() + +/obj/structure/window/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_DECONSTRUCT) + return list( + RCD_VALUE_MODE = RCD_DECONSTRUCT, + RCD_VALUE_DELAY = 5 SECONDS, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 5 + ) + +/obj/structure/window/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_DECONSTRUCT) + to_chat(user, span("notice", "You deconstruct \the [src].")) + qdel(src) + return TRUE + return FALSE diff --git a/code/game/turfs/flooring/flooring_premade.dm b/code/game/turfs/flooring/flooring_premade.dm index d80e5f249e..e3e955ff17 100644 --- a/code/game/turfs/flooring/flooring_premade.dm +++ b/code/game/turfs/flooring/flooring_premade.dm @@ -298,7 +298,7 @@ initial_flooring = /decl/flooring/tiling/asteroidfloor /turf/simulated/floor/tiled/asteroid_steel/airless - name = "airless plating" + name = "plating" oxygen = 0 nitrogen = 0 @@ -332,25 +332,25 @@ temperature = TCMB /turf/simulated/floor/airless - name = "airless plating" + name = "plating" oxygen = 0 nitrogen = 0 temperature = TCMB /turf/simulated/floor/tiled/airless - name = "airless floor" + name = "floor" oxygen = 0 nitrogen = 0 temperature = TCMB /turf/simulated/floor/bluegrid/airless - name = "airless floor" + name = "floor" oxygen = 0 nitrogen = 0 temperature = TCMB /turf/simulated/floor/greengrid/airless - name = "airless floor" + name = "floor" oxygen = 0 nitrogen = 0 temperature = TCMB @@ -359,7 +359,7 @@ oxygen = 0 /turf/simulated/floor/tiled/white/airless - name = "airless floor" + name = "floor" oxygen = 0 nitrogen = 0 temperature = TCMB diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 9f3a8e67b0..b615c0cc42 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -91,3 +91,71 @@ /turf/simulated/floor/levelupdate() for(var/obj/O in src) O.hide(O.hides_under_flooring() && src.flooring) + +/turf/simulated/floor/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_FLOORWALL) + // A wall costs four sheets to build (two for the grider and two for finishing it). + var/cost = RCD_SHEETS_PER_MATTER_UNIT * 4 + // R-walls cost five sheets, however. + if(the_rcd.make_rwalls) + cost += RCD_SHEETS_PER_MATTER_UNIT * 1 + return list( + RCD_VALUE_MODE = RCD_FLOORWALL, + RCD_VALUE_DELAY = 2 SECONDS, + RCD_VALUE_COST = cost + ) + if(RCD_AIRLOCK) + // Airlock assemblies cost four sheets. Let's just add another for the electronics/wires/etc. + return list( + RCD_VALUE_MODE = RCD_AIRLOCK, + RCD_VALUE_DELAY = 5 SECONDS, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 5 + ) + if(RCD_WINDOWGRILLE) + // One steel sheet for the girder (two rods, which is one sheet). + return list( + RCD_VALUE_MODE = RCD_WINDOWGRILLE, + RCD_VALUE_DELAY = 1 SECOND, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 1 + ) + if(RCD_DECONSTRUCT) + // Old RCDs made deconning the floor cost 10 units (IE, three times on full RCD). + // Now it's ten sheets worth of units (which is the same capacity-wise, three times on full RCD). + return list( + RCD_VALUE_MODE = RCD_DECONSTRUCT, + RCD_VALUE_DELAY = 5 SECONDS, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 10 + ) + return FALSE + + +/turf/simulated/floor/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_FLOORWALL) + to_chat(user, span("notice", "You build a wall.")) + ChangeTurf(/turf/simulated/wall) + var/turf/simulated/wall/T = get_turf(src) // Ref to the wall we just built. + // Apparently set_material(...) for walls requires refs to the material singletons and not strings. + // This is different from how other material objects with their own set_material(...) do it, but whatever. + var/material/M = name_to_material[the_rcd.material_to_use] + T.set_material(M, the_rcd.make_rwalls ? M : null, M) + T.add_hiddenprint(user) + return TRUE + if(RCD_AIRLOCK) + if(locate(/obj/machinery/door/airlock) in src) + return FALSE // No more airlock stacking. + to_chat(user, span("notice", "You build an airlock.")) + new the_rcd.airlock_type(src) + return TRUE + if(RCD_WINDOWGRILLE) + if(locate(/obj/structure/grille) in src) + return FALSE + to_chat(user, span("notice", "You construct the grille.")) + var/obj/structure/grille/G = new(src) + G.anchored = TRUE + return TRUE + if(RCD_DECONSTRUCT) + to_chat(user, span("notice", "You deconstruct \the [src].")) + ChangeTurf(get_base_turf_by_area(src), preserve_outdoors = TRUE) + return TRUE diff --git a/code/game/turfs/simulated/outdoors/outdoors.dm b/code/game/turfs/simulated/outdoors/outdoors.dm index fc373c0577..968816dc6a 100644 --- a/code/game/turfs/simulated/outdoors/outdoors.dm +++ b/code/game/turfs/simulated/outdoors/outdoors.dm @@ -15,6 +15,7 @@ var/list/turf_edge_cache = list() edge_blending_priority = 1 outdoors = TRUE // This variable is used for weather effects. can_dirty = FALSE // Looks hideous with dirt on it. + can_build_into_floor = TRUE // When a turf gets demoted or promoted, this list gets adjusted. The top-most layer is the layer on the bottom of the list, due to how pop() works. var/list/turf_layers = list(/turf/simulated/floor/outdoors/rocks) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index b64ba73ee3..136b8eeba6 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -287,3 +287,27 @@ W.burn((temperature/4)) for(var/obj/machinery/door/airlock/phoron/D in range(3,src)) D.ignite(temperature/4) + +/turf/simulated/wall/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + if(material.integrity > 1000) // Don't decon things like elevatorium. + return FALSE + if(reinf_material && !the_rcd.can_remove_rwalls) // Gotta do it the old fashioned way if your RCD can't. + return FALSE + + if(passed_mode == RCD_DECONSTRUCT) + var/delay_to_use = material.integrity / 3 // Steel has 150 integrity, so it'll take five seconds to down a regular wall. + if(reinf_material) + delay_to_use += reinf_material.integrity / 3 + return list( + RCD_VALUE_MODE = RCD_DECONSTRUCT, + RCD_VALUE_DELAY = delay_to_use, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 5 + ) + return FALSE + +/turf/simulated/wall/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + if(passed_mode == RCD_DECONSTRUCT) + to_chat(user, span("notice", "You deconstruct \the [src].")) + ChangeTurf(/turf/simulated/floor/airless, preserve_outdoors = TRUE) + return TRUE + return FALSE diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index ed48013050..d9a41718a8 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -6,6 +6,7 @@ temperature = T20C thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT + can_build_into_floor = TRUE var/keep_sprite = FALSE // heat_capacity = 700000 No. diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index 79550c3f30..0bfcb4e0f6 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -1,5 +1,6 @@ /turf/space/transit keep_sprite = TRUE + can_build_into_floor = FALSE var/pushdirection // push things that get caught in the transit tile this direction //Overwrite because we dont want people building rods in space. diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 8d26d11543..0c18524346 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -31,6 +31,7 @@ var/list/footstep_sounds = null var/block_tele = FALSE // If true, most forms of teleporting to or from this turf tile will fail. + var/can_build_into_floor = FALSE // Used for things like RCDs (and maybe lattices/floor tiles in the future), to see if a floor should replace it. /turf/New() ..() @@ -321,3 +322,28 @@ var/const/enterloopsanity = 100 /turf/AllowDrop() return TRUE + +// This is all the way up here since its the common ancestor for things that need to get replaced with a floor when an RCD is used on them. +// More specialized turfs like walls should instead override this. +// The code for applying lattices/floor tiles onto lattices could also utilize something similar in the future. +/turf/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + if(density || !can_build_into_floor) + return FALSE + if(passed_mode == RCD_FLOORWALL) + var/obj/structure/lattice/L = locate() in src + // A lattice costs one rod to make. A sheet can make two rods, meaning a lattice costs half of a sheet. + // A sheet also makes four floor tiles, meaning it costs 1/4th of a sheet to place a floor tile on a lattice. + // Therefore it should cost 3/4ths of a sheet if a lattice is not present, or 1/4th of a sheet if it does. + return list( + RCD_VALUE_MODE = RCD_FLOORWALL, + RCD_VALUE_DELAY = 0, + RCD_VALUE_COST = L ? RCD_SHEETS_PER_MATTER_UNIT * 0.25 : RCD_SHEETS_PER_MATTER_UNIT * 0.75 + ) + return FALSE + +/turf/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + if(passed_mode == RCD_FLOORWALL) + to_chat(user, span("notice", "You build a floor.")) + ChangeTurf(/turf/simulated/floor/airless, preserve_outdoors = TRUE) + return TRUE + return FALSE diff --git a/code/game/turfs/unsimulated.dm b/code/game/turfs/unsimulated.dm index b4c1999b48..fe6a77cb08 100644 --- a/code/game/turfs/unsimulated.dm +++ b/code/game/turfs/unsimulated.dm @@ -4,6 +4,7 @@ nitrogen = MOLES_N2STANDARD initialized = TRUE // Don't call init on unsimulated turfs (at least not yet) +<<<<<<< HEAD //VOREStation Add /turf/unsimulated/fake_space name = "\proper space" @@ -14,4 +15,12 @@ /turf/unsimulated/fake_space/New() ..() icon_state = "[((x + y) ^ ~(x * y) + z) % 25]" -//VOREStation Add End \ No newline at end of file +//VOREStation Add End +======= +// Better nip this just in case. +/turf/unsimulated/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + return FALSE + +/turf/unsimulated/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) + return FALSE +>>>>>>> 3b72438... Makes RCDs Clean Again (#5679) diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index 583f491d5e..058c1118ca 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -94,7 +94,7 @@ usable = 1 engage_string = "Configure RCD" - device_type = /obj/item/weapon/rcd/mounted + device_type = /obj/item/weapon/rcd/electric/mounted/rig /obj/item/rig_module/device/New() ..() diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 11ac4dcae9..4ff5fd7e17 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -62,6 +62,7 @@ var/list/mining_overlay_cache = list() density = 0 opacity = 0 blocks_air = 0 + can_build_into_floor = TRUE /turf/simulated/mineral/floor/ignore_mapgen ignore_mapgen = 1 @@ -72,6 +73,7 @@ var/list/mining_overlay_cache = list() density = 0 opacity = 0 blocks_air = 0 + can_build_into_floor = TRUE update_general() /turf/simulated/mineral/proc/make_wall() @@ -80,6 +82,7 @@ var/list/mining_overlay_cache = list() density = 1 opacity = 1 blocks_air = 1 + can_build_into_floor = FALSE update_general() /turf/simulated/mineral/proc/update_general() diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index 90b51ac415..2416b339ff 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -423,7 +423,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/inflatable_dispenser/robot(src) src.emag = new /obj/item/weapon/melee/baton/robot/arm(src) src.modules += new /obj/item/device/geiger(src) - src.modules += new /obj/item/weapon/rcd/borg(src) + src.modules += new /obj/item/weapon/rcd/electric/mounted/borg(src) src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src) src.modules += new /obj/item/weapon/gripper/no_use/loader(src) @@ -890,7 +890,7 @@ var/global/list/robot_modules = list( /obj/item/weapon/robot_module/drone/construction/New() ..() - src.modules += new /obj/item/weapon/rcd/borg(src) + src.modules += new /obj/item/weapon/rcd/electric/mounted/borg/lesser(src) /obj/item/weapon/robot_module/drone/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) var/obj/item/device/lightreplacer/LR = locate() in src.modules diff --git a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm index 3c8e981c3b..72caaa2d73 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm @@ -83,7 +83,7 @@ src.modules += new /obj/item/weapon/tool/wirecutters/cyborg(src) src.modules += new /obj/item/device/multitool/ai_detector(src) src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src) - src.modules += new /obj/item/weapon/rcd/borg/lesser(src) // Can't eat rwalls to prevent AI core cheese. + src.modules += new /obj/item/weapon/rcd/electric/mounted/borg/lesser(src) // Can't eat rwalls to prevent AI core cheese. src.modules += new /obj/item/weapon/melee/energy/sword/ionic_rapier(src) // FBP repair. diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index ae44c58412..cbf7623267 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -26,6 +26,7 @@ plane = OPENSPACE_PLANE_START pathweight = 100000 //Seriously, don't try and path over this one numbnuts dynamic_lighting = 0 // Someday lets do proper lighting z-transfer. Until then we are leaving this off so it looks nicer. + can_build_into_floor = TRUE var/turf/below diff --git a/html/changelogs/Neerti-RCDs.yml b/html/changelogs/Neerti-RCDs.yml new file mode 100644 index 0000000000..04c5778974 --- /dev/null +++ b/html/changelogs/Neerti-RCDs.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Neerti + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "RCDs can now build grilles and windows, with a new mode. They can also finish walls when used on girders on floor/wall mode." + - rscadd: "Adds various new RCDs that are not obtainable at the moment." diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index a8e41841c3308b755354345e89804ec21c12c3d9..d33437164e95bdb5d72f815669f01b42120b3d59 100644 GIT binary patch literal 62769 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

y;K&$CYiFahfleB%cjHcLrg$FLDayv?%OH$?mt1 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

3q;YhJupKWe?K9=v)KB)BWV5X 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

Rl$pa_%fwxBJ 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¥S= zn;g9_C#~IoUJNE~Cuv6PA(wOS2+VVT7ya7>gRWp`hzFwhuXn?M+9I4>uaBOzg%mh+ z1nyXW4bVA61WC1nk}Gz}Z+1YYs0VPPkH7-^U)~1%%&aW8$i8LdBCXu!IZI&Zc7MHx zl^jVV938P`Scn_x;|$3XgyS3GZ{st@mkfvfjPSQrh zYbl(6oh<0_q76pXh7bTG%lCwE7B(|6RQQ|Dl+^=gxRb_EAiHr;Dxqq~)-v~$5WtA(?w9j}Ya3NT{J5?0cOW24;j z@|9XqmYu5S5*SKFsb6Eo{Ujjq14Tvf*T$!-D1RCn|C6X0&CU?272}z52=&K+E;A^4 zV(muUUhKSXMhW)Z&#{WPs9iDqMqR|8%cyr!PKmF>hUU=TmIO@UZccr%RJPGD#vVy( zOTm>$+IqINVf+U1gCL0PPUtVKyz4(N*@ufy2g&Qz%rEZ~Un%2leAShRzCBAEJu)z8 zi<^+$t)`8`erCpybIX*4^qRLGZipB_qb?*-T9rfAk9ru#yKGx*c!=HZS@ka&zG@5cA>$C(PP&fk@} zWts^I2vb8)t1;dtzR8C@GMp)8_!@?v5@atJ_L3SOFoAkImS5^G0rvbnu;vuoJk}s; zS<|6c_TzZ^vPL!7K#36aHlXU_1TFFA9Yflk0%Ej2KMx#?q||NA<)!3L5D%0wg~@d4 zMN>Yx+5b>sE+!ULt0{Uadu8Q>$1HeN%=7OgV9Gq@E{>2Shk*3b_--#MPCAd0%5x$l z|K!rL=9S^QN7U;6nDJj4!?#o7Ek$te7Aee65KCG}G82b{2RAzW(+Zoj^#x8)ZOHuT ze){`f34G!l4+?5suX+MH5@%q4@+oWYmh@;%Zz6;CSozWOA&D+!9a8g1}+lX>^sHXXl)Tt&4%s15mpg|lp!DL8SK$*;!L z;L=l(I=|&&776Df6G8yG6`c?zjWPfQ=YXXn;+6?# z9PbWb<~`k@f?BH{mWbT+f%8tozy3!>B}|}wPm%PMU)5*SRw&CsH}NP8kBogBS?Kd?CJw3iZVtW;Ve=cU&%|Q zF=$6}{8yZw>e?cA&68FDS76Ji(AEXrDRY({H{Xdy~ BMneDq diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index 9cbb46748aed4cfc660b96fd2c8abd68482eb187..b25a6cbc56d957786fa5406f74afc80872dbfce6 100644 GIT binary patch literal 13415 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 IxRLLF1HH4G!2kdN literal 10116 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 Date: Tue, 16 Oct 2018 14:42:54 -0400 Subject: [PATCH 18/18] VS Changes to unsimulated.dm --- code/game/turfs/unsimulated.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/turfs/unsimulated.dm b/code/game/turfs/unsimulated.dm index fe6a77cb08..894fac57b2 100644 --- a/code/game/turfs/unsimulated.dm +++ b/code/game/turfs/unsimulated.dm @@ -4,7 +4,6 @@ nitrogen = MOLES_N2STANDARD initialized = TRUE // Don't call init on unsimulated turfs (at least not yet) -<<<<<<< HEAD //VOREStation Add /turf/unsimulated/fake_space name = "\proper space" @@ -16,11 +15,10 @@ ..() icon_state = "[((x + y) ^ ~(x * y) + z) % 25]" //VOREStation Add End -======= + // Better nip this just in case. /turf/unsimulated/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) return FALSE /turf/unsimulated/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) return FALSE ->>>>>>> 3b72438... Makes RCDs Clean Again (#5679)