diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
index accedb543d..5abaa00c60 100644
--- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
@@ -197,7 +197,7 @@
)
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm
index cacdf5240b..1f1c4ff1ae 100644
--- a/code/ATMOSPHERICS/components/binary_devices/pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm
@@ -140,7 +140,7 @@ Thus, the two variables affect pump operation are set in New():
)
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/ATMOSPHERICS/components/omni_devices/filter.dm b/code/ATMOSPHERICS/components/omni_devices/filter.dm
index 428f37fcfa..6fbd91f861 100644
--- a/code/ATMOSPHERICS/components/omni_devices/filter.dm
+++ b/code/ATMOSPHERICS/components/omni_devices/filter.dm
@@ -93,7 +93,7 @@
data = build_uidata()
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "omni_filter.tmpl", "Omni Filter Control", 330, 330)
@@ -181,7 +181,7 @@
switch_filter(dir_flag(href_list["dir"]), mode_return_switch(new_filter))
update_icon()
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
return
/obj/machinery/atmospherics/omni/atmos_filter/proc/mode_return_switch(var/mode)
diff --git a/code/ATMOSPHERICS/components/omni_devices/mixer.dm b/code/ATMOSPHERICS/components/omni_devices/mixer.dm
index fc00be6ba4..47c78427f0 100644
--- a/code/ATMOSPHERICS/components/omni_devices/mixer.dm
+++ b/code/ATMOSPHERICS/components/omni_devices/mixer.dm
@@ -131,7 +131,7 @@
data = build_uidata()
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "omni_mixer.tmpl", "Omni Mixer Control", 360, 330)
@@ -200,7 +200,7 @@
con_lock(dir_flag(href_list["dir"]))
update_icon()
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
return
/obj/machinery/atmospherics/omni/mixer/proc/switch_mode(var/port = NORTH, var/mode = ATM_NONE)
diff --git a/code/ATMOSPHERICS/components/unary/cold_sink.dm b/code/ATMOSPHERICS/components/unary/cold_sink.dm
index 8ff0aa7479..d4bfb73311 100644
--- a/code/ATMOSPHERICS/components/unary/cold_sink.dm
+++ b/code/ATMOSPHERICS/components/unary/cold_sink.dm
@@ -83,7 +83,7 @@
data["gasTemperatureClass"] = temp_class
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/ATMOSPHERICS/components/unary/heat_source.dm b/code/ATMOSPHERICS/components/unary/heat_source.dm
index 69e638bc22..9729e1d387 100644
--- a/code/ATMOSPHERICS/components/unary/heat_source.dm
+++ b/code/ATMOSPHERICS/components/unary/heat_source.dm
@@ -103,7 +103,7 @@
data["gasTemperatureClass"] = temp_class
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm
index 98e7ca633c..4f48416da8 100644
--- a/code/__defines/subsystems.dm
+++ b/code/__defines/subsystems.dm
@@ -52,7 +52,8 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G
// Subsystem init_order, from highest priority to lowest priority
// Subsystems shutdown in the reverse of the order they initialize in
// The numbers just define the ordering, they are meaningless otherwise.
-#define INIT_ORDER_MAPPING 20 // VOREStation Edit
+#define INIT_ORDER_CHEMISTRY 18
+#define INIT_ORDER_MAPPING 17
#define INIT_ORDER_DECALS 16
#define INIT_ORDER_ATOMS 15
#define INIT_ORDER_MACHINES 10
diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm
index 057e468bb4..a3687b9b99 100644
--- a/code/_helpers/global_lists.dm
+++ b/code/_helpers/global_lists.dm
@@ -13,8 +13,6 @@ var/global/list/dead_mob_list = list() //List of all dead mobs, including cli
var/global/list/listening_objects = list() //List of all objects which care about receiving messages (communicators, radios, etc)
var/global/list/cable_list = list() //Index for all cables, so that powernets don't have to look through the entire world all the time
-var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions
-var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff
var/global/list/landmarks_list = list() //list of all landmarks created
var/global/list/surgery_steps = list() //list of all surgery steps |BS12
var/global/list/side_effects = list() //list of all medical sideeffects types by thier names |BS12
diff --git a/code/controllers/Processes/air.dm b/code/controllers/Processes/air.dm
deleted file mode 100644
index bdb9fe7fbd..0000000000
--- a/code/controllers/Processes/air.dm
+++ /dev/null
@@ -1,23 +0,0 @@
-/datum/controller/process/air/setup()
- name = "air"
- schedule_interval = 20 // every 2 seconds
- start_delay = 4
-
- if(!air_master)
- air_master = new
- air_master.Setup()
-
-/datum/controller/process/air/doWork()
- if(!air_processing_killed)
- if(!air_master.Tick()) //Runtimed.
- air_master.failed_ticks++
-
- if(air_master.failed_ticks > 5)
- world << "RUNTIMES IN ATMOS TICKER. Killing air simulation!"
- world.log << "### ZAS SHUTDOWN"
-
- message_admins("ZASALERT: Shutting down! status: [air_master.tick_progress]")
- log_admin("ZASALERT: Shutting down! status: [air_master.tick_progress]")
-
- air_processing_killed = TRUE
- air_master.failed_ticks = 0
diff --git a/code/controllers/Processes/chemistry.dm b/code/controllers/Processes/chemistry.dm
deleted file mode 100644
index 084de83e28..0000000000
--- a/code/controllers/Processes/chemistry.dm
+++ /dev/null
@@ -1,33 +0,0 @@
-var/datum/controller/process/chemistry/chemistryProcess
-
-/datum/controller/process/chemistry
- var/list/active_holders
- var/list/chemical_reactions
- var/list/chemical_reagents
-
-/datum/controller/process/chemistry/setup()
- name = "chemistry"
- schedule_interval = 20 // every 2 seconds
- chemistryProcess = src
- active_holders = list()
- chemical_reactions = chemical_reactions_list
- chemical_reagents = chemical_reagents_list
-
-/datum/controller/process/chemistry/statProcess()
- ..()
- stat(null, "[active_holders.len] reagent holder\s")
-
-/datum/controller/process/chemistry/doWork()
- for(last_object in active_holders)
- var/datum/reagents/holder = last_object
- if(!holder.process_reactions())
- active_holders -= holder
- SCHECK
-
-/datum/controller/process/chemistry/proc/mark_for_update(var/datum/reagents/holder)
- if(holder in active_holders)
- return
-
- //Process once, right away. If we still need to continue then add to the active_holders list and continue later
- if(holder.process_reactions())
- active_holders += holder
diff --git a/code/controllers/Processes/event.dm b/code/controllers/Processes/event.dm
deleted file mode 100644
index 72bc01613d..0000000000
--- a/code/controllers/Processes/event.dm
+++ /dev/null
@@ -1,6 +0,0 @@
-/datum/controller/process/event/setup()
- name = "event controller"
- schedule_interval = 20 // every 2 seconds
-
-/datum/controller/process/event/doWork()
- event_manager.process()
\ No newline at end of file
diff --git a/code/controllers/Processes/nanoui.dm b/code/controllers/Processes/nanoui.dm
deleted file mode 100644
index 0f720600bc..0000000000
--- a/code/controllers/Processes/nanoui.dm
+++ /dev/null
@@ -1,19 +0,0 @@
-/datum/controller/process/nanoui/setup()
- name = "nanoui"
- schedule_interval = 20 // every 2 seconds
-
-/datum/controller/process/nanoui/statProcess()
- ..()
- stat(null, "[GLOB.nanomanager.processing_uis.len] UIs")
-
-/datum/controller/process/nanoui/doWork()
- for(last_object in GLOB.nanomanager.processing_uis)
- var/datum/nanoui/NUI = last_object
- if(istype(NUI) && !QDELETED(NUI))
- try
- NUI.process()
- catch(var/exception/e)
- catchException(e, NUI)
- else
- catchBadType(NUI)
- GLOB.nanomanager.processing_uis -= NUI
\ No newline at end of file
diff --git a/code/controllers/Processes/turf.dm b/code/controllers/Processes/turf.dm
deleted file mode 100644
index bfced8f93b..0000000000
--- a/code/controllers/Processes/turf.dm
+++ /dev/null
@@ -1,16 +0,0 @@
-var/global/list/turf/processing_turfs = list()
-
-/datum/controller/process/turf/setup()
- name = "turf"
- schedule_interval = 20 // every 2 seconds
-
-/datum/controller/process/turf/doWork()
- for(last_object in processing_turfs)
- var/turf/T = last_object
- if(T.process() == PROCESS_KILL)
- processing_turfs.Remove(T)
- SCHECK
-
-/datum/controller/process/turf/statProcess()
- ..()
- stat(null, "[processing_turfs.len] turf\s")
\ No newline at end of file
diff --git a/code/controllers/subsystems/creation.dm b/code/controllers/subsystems/creation.dm
deleted file mode 100644
index 6f7b33dc47..0000000000
--- a/code/controllers/subsystems/creation.dm
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// Creation subsystem, which is responsible for initializing newly created objects.
-//
-SUBSYSTEM_DEF(creation)
- name = "Creation"
- priority = 14
- wait = 5
-// flags = SS_POST_FIRE_TIMING|SS_BACKGROUND|SS_NO_INIT
- flags = SS_NO_FIRE|SS_NO_INIT
- runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY
-
- var/list/atoms_needing_initialize = list()
-
- var/map_loading = FALSE
-
-/datum/controller/subsystem/creation/StartLoadingMap(var/quiet)
- map_loading = TRUE
-
-/datum/controller/subsystem/creation/StopLoadingMap(var/quiet)
- map_loading = FALSE
-
-/datum/controller/subsystem/creation/proc/initialize_late_atoms()
- admin_notice("Initializing atoms in submap.", R_DEBUG)
- var/total_atoms = atoms_needing_initialize.len
- for(var/atom/movable/A in atoms_needing_initialize)
- if(!QDELETED(A))
- A.Initialize()
- atoms_needing_initialize -= A
- admin_notice("Initalized [total_atoms] atoms in submap.", R_DEBUG)
\ No newline at end of file
diff --git a/code/controllers/subsystems/events.dm b/code/controllers/subsystems/events.dm
new file mode 100644
index 0000000000..24ce81fab4
--- /dev/null
+++ b/code/controllers/subsystems/events.dm
@@ -0,0 +1,72 @@
+SUBSYSTEM_DEF(events)
+ name = "Events"
+ wait = 20
+
+ var/list/datum/event/active_events = list()
+ var/list/datum/event/finished_events = list()
+
+ var/list/datum/event/allEvents
+ var/list/datum/event_container/event_containers
+
+ var/datum/event_meta/new_event = new
+
+/datum/controller/subsystem/events/Initialize()
+ event_containers = list(
+ EVENT_LEVEL_MUNDANE = new/datum/event_container/mundane,
+ EVENT_LEVEL_MODERATE = new/datum/event_container/moderate,
+ EVENT_LEVEL_MAJOR = new/datum/event_container/major
+ )
+ allEvents = typesof(/datum/event) - /datum/event
+ return ..()
+
+/datum/controller/subsystem/events/fire(resumed)
+ for(var/datum/event/E in active_events)
+ E.process()
+
+ for(var/i = EVENT_LEVEL_MUNDANE to EVENT_LEVEL_MAJOR)
+ var/list/datum/event_container/EC = event_containers[i]
+ EC.process()
+
+/datum/controller/subsystem/events/Recover()
+ if(SSevents.active_events)
+ active_events |= SSevents.active_events
+ if(SSevents.finished_events)
+ finished_events |= SSevents.finished_events
+
+/datum/controller/subsystem/events/proc/event_complete(var/datum/event/E)
+ if(!E.event_meta || !E.severity) // datum/event is used here and there for random reasons, maintaining "backwards compatibility"
+ log_debug("Event of '[E.type]' with missing meta-data has completed.")
+ return
+
+ finished_events += E
+
+ // Add the event back to the list of available events
+ var/datum/event_container/EC = event_containers[E.severity]
+ var/datum/event_meta/EM = E.event_meta
+ if(EM.add_to_queue)
+ EC.available_events += EM
+
+ log_debug("Event '[EM.name]' has completed at [worldtime2stationtime(world.time)].")
+
+/datum/controller/subsystem/events/proc/delay_events(var/severity, var/delay)
+ var/list/datum/event_container/EC = event_containers[severity]
+ EC.next_event_time += delay
+
+/datum/controller/subsystem/events/proc/RoundEnd()
+ if(!report_at_round_end)
+ return
+
+ to_chat(world, "
Random Events This Round:")
+ for(var/datum/event/E in active_events|finished_events)
+ var/datum/event_meta/EM = E.event_meta
+ if(EM.name == "Nothing")
+ continue
+ var/message = "'[EM.name]' began at [worldtime2stationtime(E.startedAt)] "
+ if(E.isRunning)
+ message += "and is still running."
+ else
+ if(E.endedAt - E.startedAt > MinutesToTicks(5)) // Only mention end time if the entire duration was more than 5 minutes
+ message += "and ended at [worldtime2stationtime(E.endedAt)]."
+ else
+ message += "and ran to completion."
+ to_chat(world, message)
diff --git a/code/controllers/subsystems/nanoui.dm b/code/controllers/subsystems/nanoui.dm
new file mode 100644
index 0000000000..c31449addc
--- /dev/null
+++ b/code/controllers/subsystems/nanoui.dm
@@ -0,0 +1,42 @@
+SUBSYSTEM_DEF(nanoui)
+ name = "NanoUI"
+ wait = 20
+ // a list of current open /nanoui UIs, grouped by src_object and ui_key
+ var/list/open_uis = list()
+ // a list of current open /nanoui UIs, not grouped, for use in processing
+ var/list/processing_uis = list()
+ // a list of asset filenames which are to be sent to the client on user logon
+ var/list/asset_files = list()
+
+/datum/controller/subsystem/nanoui/Initialize()
+ var/list/nano_asset_dirs = list(\
+ "nano/css/",\
+ "nano/images/",\
+ "nano/js/",\
+ "nano/templates/"\
+ )
+
+ var/list/filenames = null
+ for (var/path in nano_asset_dirs)
+ filenames = flist(path)
+ for(var/filename in filenames)
+ if(copytext(filename, length(filename)) != "/") // filenames which end in "/" are actually directories, which we want to ignore
+ if(fexists(path + filename))
+ asset_files.Add(fcopy_rsc(path + filename)) // add this file to asset_files for sending to clients when they connect
+ return ..()
+
+/datum/controller/subsystem/nanoui/Recover()
+ if(SSnanoui.open_uis)
+ open_uis |= SSnanoui.open_uis
+ if(SSnanoui.processing_uis)
+ processing_uis |= SSnanoui.processing_uis
+ if(SSnanoui.asset_files)
+ asset_files |= SSnanoui.asset_files
+
+/datum/controller/subsystem/nanoui/stat_entry()
+ return ..("[processing_uis.len] UIs")
+
+/datum/controller/subsystem/nanoui/fire(resumed)
+ for(var/thing in processing_uis)
+ var/datum/nanoui/UI = thing
+ UI.process()
diff --git a/code/controllers/subsystems/processing/chemistry.dm b/code/controllers/subsystems/processing/chemistry.dm
new file mode 100644
index 0000000000..67b74d3ab6
--- /dev/null
+++ b/code/controllers/subsystems/processing/chemistry.dm
@@ -0,0 +1,43 @@
+PROCESSING_SUBSYSTEM_DEF(chemistry)
+ name = "Chemistry"
+ wait = 20
+ flags = SS_BACKGROUND|SS_POST_FIRE_TIMING
+ init_order = INIT_ORDER_CHEMISTRY
+ var/list/chemical_reactions = list()
+ var/list/chemical_reagents = list()
+
+/datum/controller/subsystem/processing/chemistry/Recover()
+ chemical_reactions = SSchemistry.chemical_reactions
+ chemical_reagents = SSchemistry.chemical_reagents
+
+/datum/controller/subsystem/processing/chemistry/Initialize()
+ initialize_chemical_reactions()
+ initialize_chemical_reagents()
+
+//Chemical Reactions - Initialises all /datum/chemical_reaction into a list
+// It is filtered into multiple lists within a list.
+// For example:
+// chemical_reaction_list["phoron"] is a list of all reactions relating to phoron
+// Note that entries in the list are NOT duplicated. So if a reaction pertains to
+// more than one chemical it will still only appear in only one of the sublists.
+/datum/controller/subsystem/processing/chemistry/proc/initialize_chemical_reactions()
+ var/paths = typesof(/datum/chemical_reaction) - /datum/chemical_reaction
+ SSchemistry.chemical_reactions = list()
+
+ for(var/path in paths)
+ var/datum/chemical_reaction/D = new path()
+ if(D.required_reagents && D.required_reagents.len)
+ var/reagent_id = D.required_reagents[1]
+ if(!chemical_reactions[reagent_id])
+ chemical_reactions[reagent_id] = list()
+ chemical_reactions[reagent_id] += D
+
+//Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id
+/datum/controller/subsystem/processing/chemistry/proc/initialize_chemical_reagents()
+ var/paths = typesof(/datum/reagent) - /datum/reagent
+ chemical_reagents = list()
+ for(var/path in paths)
+ var/datum/reagent/D = new path()
+ if(!D.name)
+ continue
+ chemical_reagents[D.id] = D
diff --git a/code/controllers/subsystems/processing/turfs.dm b/code/controllers/subsystems/processing/turfs.dm
new file mode 100644
index 0000000000..941513527e
--- /dev/null
+++ b/code/controllers/subsystems/processing/turfs.dm
@@ -0,0 +1,3 @@
+PROCESSING_SUBSYSTEM_DEF(turfs)
+ name = "Turf Processing"
+ wait = 20
diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm
index 4adcee3fd0..6d01f6ee59 100644
--- a/code/controllers/verbs.dm
+++ b/code/controllers/verbs.dm
@@ -63,7 +63,7 @@
usr.client.debug_variables(antag)
message_admins("Admin [key_name_admin(usr)] is debugging the [antag.role_text] template.")
-/client/proc/debug_controller(controller in list("Master","Ticker","Ticker Process","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data","Event","Plants","Alarm","Nano","Chemistry","Vote","Xenobio","Planets"))
+/client/proc/debug_controller(controller in list("Master","Ticker","Ticker Process","Air","Jobs","Radio","Supply","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data","Plants","Alarm","Xenobio"))
set category = "Debug"
set name = "Debug Controller"
set desc = "Debug the various periodic loop controllers for the game (be careful!)"
@@ -91,9 +91,6 @@
if("Supply")
debug_variables(supply_controller)
feedback_add_details("admin_verb","DSupply")
- if("Shuttles")
- debug_variables(shuttle_controller)
- feedback_add_details("admin_verb","DShuttles")
if("Emergency Shuttle")
debug_variables(emergency_shuttle)
feedback_add_details("admin_verb","DEmergency")
@@ -112,21 +109,12 @@
if("Gas Data")
debug_variables(gas_data)
feedback_add_details("admin_verb","DGasdata")
- if("Event")
- debug_variables(event_manager)
- feedback_add_details("admin_verb", "DEvent")
if("Plants")
debug_variables(plant_controller)
feedback_add_details("admin_verb", "DPlants")
if("Alarm")
debug_variables(alarm_manager)
feedback_add_details("admin_verb", "DAlarm")
- if("Nano")
- debug_variables(GLOB.nanomanager)
- feedback_add_details("admin_verb", "DNano")
- if("Chemistry")
- debug_variables(chemistryProcess)
- feedback_add_details("admin_verb", "DChem")
message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.")
return
diff --git a/code/datums/datum.dm b/code/datums/datum.dm
index 36d430a0ed..4cb2db4846 100644
--- a/code/datums/datum.dm
+++ b/code/datums/datum.dm
@@ -30,5 +30,5 @@
weakref = null // Clear this reference to ensure it's kept for as brief duration as possible.
tag = null
- GLOB.nanomanager.close_uis(src)
+ SSnanoui.close_uis(src)
return QDEL_HINT_QUEUE
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index fdca613460..67cf23a3cb 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -85,7 +85,7 @@
current.verbs -= /datum/changeling/proc/EvolutionMenu
current.mind = null
- GLOB.nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user
+ SSnanoui.user_transferred(current, new_character) // transfer active NanoUI instances to new user
if(new_character.mind) //remove any mind currently in our new body's mind variable
new_character.mind.current = null
diff --git a/code/datums/wires/radio.dm b/code/datums/wires/radio.dm
index dcd708c5f6..d059a0b091 100644
--- a/code/datums/wires/radio.dm
+++ b/code/datums/wires/radio.dm
@@ -24,7 +24,7 @@ var/const/WIRE_TRANSMIT = 4
if(WIRE_TRANSMIT)
R.broadcasting = !R.broadcasting && !IsIndexCut(WIRE_SIGNAL)
- GLOB.nanomanager.update_uis(holder)
+ SSnanoui.update_uis(holder)
/datum/wires/radio/UpdateCut(var/index, var/mended)
var/obj/item/device/radio/R = holder
@@ -38,4 +38,4 @@ var/const/WIRE_TRANSMIT = 4
if(WIRE_TRANSMIT)
R.broadcasting = mended && !IsIndexCut(WIRE_SIGNAL)
- GLOB.nanomanager.update_uis(holder)
+ SSnanoui.update_uis(holder)
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 4d71c4af27..3f108d6586 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -524,7 +524,7 @@
var/atom/L = loc
if(!L)
return null
- return L.AllowDrop() ? L : get_turf(L)
+ return L.AllowDrop() ? L : L.drop_location()
/atom/proc/AllowDrop()
return FALSE
diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm
index 623ccc11a3..998b712828 100644
--- a/code/game/dna/dna_modifier.dm
+++ b/code/game/dna/dna_modifier.dm
@@ -270,7 +270,7 @@
I.loc = src
src.disk = I
user << "You insert [I]."
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
return
else
..()
@@ -428,7 +428,7 @@
data["beakerVolume"] += R.volume
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
@@ -465,7 +465,7 @@
irradiating = src.radiation_duration
var/lock_state = src.connected.locked
src.connected.locked = 1//lock it
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
sleep(10*src.radiation_duration) // sleep for radiation_duration seconds
@@ -566,7 +566,7 @@
irradiating = src.radiation_duration
var/lock_state = src.connected.locked
src.connected.locked = 1//lock it
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
sleep(10*src.radiation_duration) // sleep for radiation_duration seconds
@@ -624,7 +624,7 @@
irradiating = src.radiation_duration
var/lock_state = src.connected.locked
src.connected.locked = 1 //lock it
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
sleep(10*src.radiation_duration) // sleep for radiation_duration seconds
@@ -751,7 +751,7 @@
irradiating = 2
var/lock_state = src.connected.locked
src.connected.locked = 1//lock it
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
sleep(10*2) // sleep for 2 seconds
diff --git a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm
index 4559911b79..99e28f5ef7 100644
--- a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm
+++ b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm
@@ -16,11 +16,11 @@
/turf/unsimulated/wall/supermatter/New()
..()
- processing_turfs.Add(src)
+ START_PROCESSING(SSturfs, src)
next_check = world.time+5 SECONDS
/turf/unsimulated/wall/supermatter/Destroy()
- processing_turfs.Remove(src)
+ STOP_PROCESSING(SSturfs, src)
..()
/turf/unsimulated/wall/supermatter/process()
@@ -57,7 +57,7 @@
T.ChangeTurf(type)
if((spawned & (NORTH|SOUTH|EAST|WEST)) == (NORTH|SOUTH|EAST|WEST))
- processing_turfs -= src
+ STOP_PROCESSING(SSturfs, src)
return
/turf/unsimulated/wall/supermatter/attack_generic(mob/user as mob)
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 23a80006ce..29139b3a3a 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -176,12 +176,12 @@ var/global/list/additional_antag_types = list()
/datum/game_mode/proc/refresh_event_modifiers()
if(event_delay_mod_moderate || event_delay_mod_major)
- event_manager.report_at_round_end = 1
+ SSevents.report_at_round_end = TRUE
if(event_delay_mod_moderate)
- var/datum/event_container/EModerate = event_manager.event_containers[EVENT_LEVEL_MODERATE]
+ var/datum/event_container/EModerate = SSevents.event_containers[EVENT_LEVEL_MODERATE]
EModerate.delay_modifier = event_delay_mod_moderate
if(event_delay_mod_moderate)
- var/datum/event_container/EMajor = event_manager.event_containers[EVENT_LEVEL_MAJOR]
+ var/datum/event_container/EMajor = SSevents.event_containers[EVENT_LEVEL_MAJOR]
EMajor.delay_modifier = event_delay_mod_major
/datum/game_mode/proc/pre_setup()
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index f25deb9e97..c1e0b3fdd1 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -439,7 +439,7 @@ var/global/datum/controller/gameticker/ticker
mode.declare_completion()//To declare normal completion.
//Ask the event manager to print round end information
- event_manager.RoundEnd()
+ SSevents.RoundEnd()
//Print a list of antagonists to the server log
var/list/total_antagonists = list()
diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm
index 49a4b342ef..57b05a8346 100644
--- a/code/game/machinery/Sleeper.dm
+++ b/code/game/machinery/Sleeper.dm
@@ -109,7 +109,7 @@
break
data["stasis"] = stasis_level_name
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "sleeper.tmpl", "Sleeper UI", 600, 600, state = state)
ui.set_initial_data(data)
diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm
index 2062f92db4..c101202b38 100644
--- a/code/game/machinery/adv_med.dm
+++ b/code/game/machinery/adv_med.dm
@@ -389,7 +389,7 @@
occupantData = attempt_vr(scanner,"get_occupant_data_vr",list(occupantData,H)) //VOREStation Insert
data["occupant"] = occupantData
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "adv_med.tmpl", "Body Scanner", 690, 800)
ui.set_initial_data(data)
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index 570a8a2965..82fd1fe259 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -497,7 +497,7 @@
if(!(locked && !remote_connection) || remote_access || issilicon(user))
populate_controls(data)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "air_alarm.tmpl", name, 325, 625, master_ui = master_ui, state = state)
ui.set_initial_data(data)
@@ -965,7 +965,7 @@ FIRE ALARM
else if(href_list["time"])
timing = text2num(href_list["time"])
last_process = world.timeofday
- START_PROCESSING(SSobj, src)
+ START_PROCESSING(SSobj, src)
else if(href_list["tp"])
var/tp = text2num(href_list["tp"])
time += tp
diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm
index 839470f356..c18d2b9e93 100644
--- a/code/game/machinery/atmo_control.dm
+++ b/code/game/machinery/atmo_control.dm
@@ -117,7 +117,7 @@ obj/machinery/computer/general_air_control/Destroy()
data["sensors"] = sensors_ui
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmo_control.tmpl", name, 525, 600)
ui.set_initial_data(data)
@@ -174,7 +174,7 @@ obj/machinery/computer/general_air_control/Destroy()
data["input_flow_setting"] = round(input_flow_setting, 0.1)
data["pressure_setting"] = pressure_setting
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmo_control.tmpl", name, 660, 500)
ui.set_initial_data(data)
@@ -284,7 +284,7 @@ obj/machinery/computer/general_air_control/Destroy()
data["input_flow_setting"] = round(input_flow_setting, 0.1)
data["pressure_setting"] = pressure_setting
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmo_control.tmpl", name, 650, 500)
ui.set_initial_data(data)
@@ -416,7 +416,7 @@ obj/machinery/computer/general_air_control/Destroy()
else
data["device_info"] = null
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmo_control.tmpl", name, 650, 500)
ui.set_initial_data(data)
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 1749b68ac9..85544958cf 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -261,7 +261,7 @@ update_flag
..()
- GLOB.nanomanager.update_uis(src) // Update all NanoUIs attached to src
+ SSnanoui.update_uis(src) // Update all NanoUIs attached to src
/obj/machinery/portable_atmospherics/canister/attack_ai(var/mob/user as mob)
return src.attack_hand(user)
@@ -289,7 +289,7 @@ update_flag
data["holdingTank"] = list("name" = holding.name, "tankPressure" = round(holding.air_contents.return_pressure()))
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm
index 7e2c786734..758c2a57cb 100644
--- a/code/game/machinery/atmoalter/pump.dm
+++ b/code/game/machinery/atmoalter/pump.dm
@@ -138,7 +138,7 @@
if (holding)
data["holdingTank"] = list("name" = holding.name, "tankPressure" = round(holding.air_contents.return_pressure() > 0 ? holding.air_contents.return_pressure() : 0))
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "portpump.tmpl", "Portable Pump", 480, 410, state = physical_state)
ui.set_initial_data(data)
diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm
index f249d7a8e7..b367d08d55 100644
--- a/code/game/machinery/atmoalter/scrubber.dm
+++ b/code/game/machinery/atmoalter/scrubber.dm
@@ -114,7 +114,7 @@
if (holding)
data["holdingTank"] = list("name" = holding.name, "tankPressure" = round(holding.air_contents.return_pressure() > 0 ? holding.air_contents.return_pressure() : 0))
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "portscrubber.tmpl", "Portable Scrubber", 480, 400, state = physical_state)
ui.set_initial_data(data)
diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index ef1beeaac0..d81070e1f2 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -55,7 +55,7 @@
data["table"] = table
data["victim"] = victim_ui
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "operating.tmpl", src.name, 380, 400)
ui.set_initial_data(data)
@@ -69,4 +69,4 @@
usr.set_machine(src)
src.add_fingerprint(usr)
- GLOB.nanomanager.update_uis(src)
\ No newline at end of file
+ SSnanoui.update_uis(src)
\ No newline at end of file
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index dbd96823c1..282e91dc3e 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -139,7 +139,7 @@
data["enemyHP"] = enemy_hp
data["gameOver"] = gameover
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "arcade_battle.tmpl", src.name, 400, 300)
ui.set_initial_data(data)
@@ -201,7 +201,7 @@
emagged = 0
src.add_fingerprint(usr)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
return
/obj/machinery/computer/arcade/battle/proc/arcade_action()
diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm
index d757ae777d..e2b3fc4638 100644
--- a/code/game/machinery/computer/atmos_alert.dm
+++ b/code/game/machinery/computer/atmos_alert.dm
@@ -37,7 +37,7 @@ var/global/list/minor_air_alarms = list()
data["priority_alarms"] = major_alarms
data["minor_alarms"] = minor_alarms
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmos_alert.tmpl", src.name, 500, 500)
ui.set_initial_data(data)
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index c05a886046..4ac34cf157 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -49,7 +49,7 @@
switch_to_camera(user, current_camera)
data["map_levels"] = using_map.get_map_levels(src.z)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "sec_camera.tmpl", "Camera Console", 900, 800)
@@ -152,7 +152,7 @@
/obj/machinery/computer/security/process()
if(cache_id != camera_repository.camera_cache_id)
cache_id = camera_repository.camera_cache_id
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/computer/security/proc/can_access_camera(var/obj/machinery/camera/C)
var/list/shared_networks = src.network & C.network
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm
index d23c199db0..d5d4cd2176 100644
--- a/code/game/machinery/computer/card.dm
+++ b/code/game/machinery/computer/card.dm
@@ -68,7 +68,7 @@
id_card.forceMove(src)
modify = id_card
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
attack_hand(user)
/obj/machinery/computer/card/attack_ai(var/mob/user as mob)
@@ -139,7 +139,7 @@
data["regions"] = regions
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "identification_computer.tmpl", src.name, 600, 700)
ui.set_initial_data(data)
@@ -235,7 +235,7 @@
modify.registered_name = temp_name
else
src.visible_message("[src] buzzes rudely.")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if ("account")
if (is_authenticated())
@@ -243,7 +243,7 @@
if ((modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf)))
var/account_num = text2num(href_list["account"])
modify.associated_account_number = account_num
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if ("mode")
mode = text2num(href_list["mode_target"])
@@ -253,7 +253,7 @@
printing = 1
spawn(50)
printing = null
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
var/obj/item/weapon/paper/P = new(loc)
if (mode)
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 44a1f69945..96e6f6b5f9 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -146,7 +146,7 @@
data["diskette"] = diskette
data["temp"] = temp
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "cloning.tmpl", src.name, 400, 450)
ui.set_initial_data(data)
@@ -284,7 +284,7 @@
temp = ""
scantemp = ""
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
add_fingerprint(usr)
/obj/machinery/computer/cloning/proc/scan_mob(mob/living/carbon/human/subject as mob)
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index f08662a5ec..f8bd0877f9 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -501,8 +501,8 @@
//delay events in case of an autotransfer
if (isnull(user))
- event_manager.delay_events(EVENT_LEVEL_MODERATE, 9000) //15 minutes
- event_manager.delay_events(EVENT_LEVEL_MAJOR, 9000)
+ SSevents.delay_events(EVENT_LEVEL_MODERATE, 9000) //15 minutes
+ SSevents.delay_events(EVENT_LEVEL_MAJOR, 9000)
log_game("[user? key_name(user) : "Autotransfer"] has called the shuttle.")
message_admins("[user? key_name_admin(user) : "Autotransfer"] has called the shuttle.", 1)
diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm
index eaea426c07..a1fd7199b2 100644
--- a/code/game/machinery/computer/guestpass.dm
+++ b/code/game/machinery/computer/guestpass.dm
@@ -104,7 +104,7 @@
if(!giver && user.unEquip(I))
I.forceMove(src)
giver = I
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
else if(giver)
user << "There is already ID card inside."
return
@@ -150,7 +150,7 @@
data["log"] = internal_log
data["uid"] = uid
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "guest_pass.tmpl", src.name, 400, 520)
ui.set_initial_data(data)
@@ -242,4 +242,4 @@
usr << "Cannot issue pass without issuing ID."
src.add_fingerprint(usr)
- GLOB.nanomanager.update_uis(src)
\ No newline at end of file
+ SSnanoui.update_uis(src)
\ No newline at end of file
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index c6c2c94a9e..3e06e19e52 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -19,7 +19,7 @@
data["is_ai"] = issilicon(user)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "robot_control.tmpl", "Robotic Control Console", 400, 500)
ui.set_initial_data(data)
diff --git a/code/game/machinery/computer/supply.dm b/code/game/machinery/computer/supply.dm
index fcaa2b4d8a..1495836cb7 100644
--- a/code/game/machinery/computer/supply.dm
+++ b/code/game/machinery/computer/supply.dm
@@ -169,7 +169,7 @@
data["contraband"] = can_order_contraband || (authorization & SUP_CONTRABAND)
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/game/machinery/computer3/lapvend.dm b/code/game/machinery/computer3/lapvend.dm
index 79f297157c..7c4e458832 100644
--- a/code/game/machinery/computer3/lapvend.dm
+++ b/code/game/machinery/computer3/lapvend.dm
@@ -34,11 +34,11 @@
if(vendmode == 1 && I)
scan_id(I, W)
vendmode = 0
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if(vendmode == 2 && I)
if(reimburse_id(I, W))
vendmode = 0
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if(vendmode == 0)
if(istype(W, /obj/item/device/laptop))
var/obj/item/device/laptop/L = W
@@ -48,7 +48,7 @@
L.loc = src
vendmode = 2
to_chat(user, "You slot your [L.name] into \The [src.name]")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
else
..()
@@ -77,7 +77,7 @@
data["power"] = power
data["total"] = total()
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "laptop_vendor.tmpl", src.name, 480, 425)
ui.set_initial_data(data)
@@ -136,7 +136,7 @@
vendmode = 0
src.add_fingerprint(usr)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/lapvend/proc/vend()
if(cardreader > 0)
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 809ada22c8..b4927f441c 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -141,7 +141,7 @@
data["beakerVolume"] += R.volume
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index d1ee4846df..9c1a9a75b0 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -727,7 +727,7 @@ About the new airlock wires panel:
data["commands"] = commands
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "door_control.tmpl", "Door Controls", 450, 350, state = state)
ui.set_initial_data(data)
diff --git a/code/game/machinery/embedded_controller/airlock_controllers.dm b/code/game/machinery/embedded_controller/airlock_controllers.dm
index 11893fa5ca..0f8b797289 100644
--- a/code/game/machinery/embedded_controller/airlock_controllers.dm
+++ b/code/game/machinery/embedded_controller/airlock_controllers.dm
@@ -33,7 +33,7 @@
"secure" = program.memory["secure"]
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "advanced_airlock_console.tmpl", name, 470, 290)
@@ -89,7 +89,7 @@
"processing" = program.memory["processing"],
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "simple_airlock_console.tmpl", name, 470, 290)
@@ -153,7 +153,7 @@
"processing" = program.memory["processing"]
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "door_access_console.tmpl", name, 330, 220)
diff --git a/code/game/machinery/embedded_controller/airlock_docking_controller.dm b/code/game/machinery/embedded_controller/airlock_docking_controller.dm
index fa7d5dfa04..e88b046c10 100644
--- a/code/game/machinery/embedded_controller/airlock_docking_controller.dm
+++ b/code/game/machinery/embedded_controller/airlock_docking_controller.dm
@@ -24,7 +24,7 @@
"override_enabled" = docking_program.override_enabled,
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "docking_airlock_console.tmpl", name, 470, 290)
diff --git a/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm b/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm
index bdce39de14..5614d0be63 100644
--- a/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm
+++ b/code/game/machinery/embedded_controller/airlock_docking_controller_multi.dm
@@ -35,7 +35,7 @@
"airlocks" = airlocks,
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "multi_docking_console.tmpl", name, 470, 290)
@@ -73,7 +73,7 @@
"override_enabled" = airlock_program.override_enabled,
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "docking_airlock_console.tmpl", name, 470, 290)
diff --git a/code/game/machinery/embedded_controller/simple_docking_controller.dm b/code/game/machinery/embedded_controller/simple_docking_controller.dm
index 8e5c941bbf..14b27b2512 100644
--- a/code/game/machinery/embedded_controller/simple_docking_controller.dm
+++ b/code/game/machinery/embedded_controller/simple_docking_controller.dm
@@ -19,7 +19,7 @@
"door_lock" = docking_program.memory["door_status"]["lock"],
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "simple_docking_console.tmpl", name, 470, 290)
diff --git a/code/game/machinery/exonet_node.dm b/code/game/machinery/exonet_node.dm
index fee3fbd0ec..fbfbc04abf 100644
--- a/code/game/machinery/exonet_node.dm
+++ b/code/game/machinery/exonet_node.dm
@@ -123,7 +123,7 @@
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
@@ -167,7 +167,7 @@
log_game(msg)
update_icon()
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
add_fingerprint(usr)
// Proc: get_exonet_node()
diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm
index b952f678bb..475f22a7d7 100644
--- a/code/game/machinery/jukebox.dm
+++ b/code/game/machinery/jukebox.dm
@@ -265,7 +265,7 @@
data["tracks"] = nano_tracks
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "jukebox.tmpl", title, 450, 600)
ui.set_initial_data(data)
diff --git a/code/game/machinery/oxygen_pump.dm b/code/game/machinery/oxygen_pump.dm
index 0720b03b26..74cc399beb 100644
--- a/code/game/machinery/oxygen_pump.dm
+++ b/code/game/machinery/oxygen_pump.dm
@@ -202,7 +202,7 @@
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index 4953236007..d300bb6b83 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -271,7 +271,7 @@ var/list/turret_icons
settings[++settings.len] = list("category" = "Neutralize All Entities", "setting" = "check_all", "value" = check_all)
data["settings"] = settings
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "turret_control.tmpl", "Turret Controls", 500, 300)
ui.set_initial_data(data)
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 5c81cfe31f..42c2cda3f9 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -127,7 +127,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
data["msgVerified"] = msgVerified
data["announceAuth"] = announceAuth
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "request_console.tmpl", "[department] Request Console", 520, 410)
ui.set_initial_data(data)
diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm
index c1911d6a05..4319e11127 100644
--- a/code/game/machinery/turret_control.dm
+++ b/code/game/machinery/turret_control.dm
@@ -137,7 +137,7 @@
data["settings"] = settings
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "turret_control.tmpl", "Turret Controls", 500, 300)
ui.set_initial_data(data)
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 66cd186fc4..033cc6180d 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -68,8 +68,8 @@
var/has_logs = 0 //defaults to 0, set to anything else for vendor to have logs
-/obj/machinery/vending/New()
- ..()
+/obj/machinery/vending/Initialize()
+ . = ..()
wires = new(src)
spawn(4)
if(product_slogans)
@@ -86,10 +86,6 @@
build_inventory()
power_change()
- return
-
- return
-
/**
* Build produdct_records from the products lists
*
@@ -173,7 +169,7 @@
vend(currently_vending, usr)
return
else if(handled)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
return // don't smack that machine with your 2 thalers
if(I || istype(W, /obj/item/weapon/spacecash))
@@ -187,7 +183,7 @@
if(panel_open)
overlays += image(icon, "[initial(icon_state)]-panel")
- GLOB.nanomanager.update_uis(src) // Speaker switch is on the main UI, not wires UI
+ SSnanoui.update_uis(src) // Speaker switch is on the main UI, not wires UI
return
else if(istype(W, /obj/item/device/multitool) || W.is_wirecutter())
if(panel_open)
@@ -199,7 +195,7 @@
coin = W
categories |= CAT_COIN
to_chat(user, "You insert \the [W] into \the [src].")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
return
else if(W.is_wrench())
playsound(src, W.usesound, 100, 1)
@@ -403,7 +399,7 @@
else
data["panel"] = 0
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "vending_machine.tmpl", name, 440, 600)
ui.set_initial_data(data)
@@ -463,7 +459,7 @@
shut_up = !shut_up
add_fingerprint(usr)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/vending/proc/vend(datum/stored_item/vending_product/R, mob/user)
if((!allowed(usr)) && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH
@@ -474,7 +470,7 @@
vend_ready = 0 //One thing at a time!!
status_message = "Vending..."
status_error = 0
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if(R.category & CAT_COIN)
if(!coin)
@@ -516,7 +512,7 @@
status_error = 0
vend_ready = 1
currently_vending = null
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
return 1
@@ -572,7 +568,7 @@
if(has_logs)
do_logging(R, user)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/vending/process()
if(stat & (BROKEN|NOPOWER))
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index cf54e0fc3c..b621d97cba 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -177,12 +177,11 @@
var/spray_amount = 5 //units of liquid per particle. 5 is enough to wet the floor - it's a big fire extinguisher, so should be fine
var/max_water = 1000
-/obj/item/mecha_parts/mecha_equipment/tool/extinguisher/New()
+/obj/item/mecha_parts/mecha_equipment/tool/extinguisher/Initialize()
+ . = ..()
reagents = new/datum/reagents(max_water)
reagents.my_atom = src
reagents.add_reagent("water", max_water)
- ..()
- return
/obj/item/mecha_parts/mecha_equipment/tool/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch.
if(!action_checks(target) || get_dist(chassis, target)>3) return
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 5a80ed7cc3..e4818d0c79 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -103,7 +103,7 @@
if(current)
data["builtperc"] = round((progress / current.time) * 100)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "mechfab.tmpl", "Exosuit Fabricator UI", 800, 600)
ui.set_initial_data(data)
diff --git a/code/game/mecha/mech_prosthetics.dm b/code/game/mecha/mech_prosthetics.dm
index c77bf27a92..e40db24878 100644
--- a/code/game/mecha/mech_prosthetics.dm
+++ b/code/game/mecha/mech_prosthetics.dm
@@ -113,7 +113,7 @@
if(current)
data["builtperc"] = round((progress / current.time) * 100)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "mechfab.tmpl", "Prosthetics Fab UI", 800, 600)
ui.set_initial_data(data)
diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm
index cc67c59517..e8c7a0d08d 100644
--- a/code/game/objects/items/contraband.dm
+++ b/code/game/objects/items/contraband.dm
@@ -40,8 +40,8 @@
list("impedrezene" = 15) = 2,
list("zombiepowder" = 10) = 1)
-/obj/item/weapon/reagent_containers/glass/beaker/vial/random/New()
- ..()
+/obj/item/weapon/reagent_containers/glass/beaker/vial/random/Initialize()
+ . = ..()
if(is_open_container())
flags ^= OPENCONTAINER
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 14c341ce34..c2a77936c4 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -467,7 +467,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
ui_tick++
- var/datum/nanoui/old_ui = GLOB.nanomanager.get_open_ui(user, src, "main")
+ var/datum/nanoui/old_ui = SSnanoui.get_open_ui(user, src, "main")
var/auto_update = 1
if(mode in no_auto_update)
auto_update = 0
@@ -647,7 +647,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
nanoUI = data
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
@@ -685,7 +685,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
..()
var/mob/user = usr
- var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main")
+ var/datum/nanoui/ui = SSnanoui.get_open_ui(user, src, "main")
var/mob/living/U = usr
//Looking for master was kind of pointless since PDAs don't appear to have one.
//if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ) )
@@ -1130,7 +1130,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
ai.show_message("Intercepted message from [who]: [t]")
P.new_message_from_pda(src, t)
- GLOB.nanomanager.update_user_uis(U, src) // Update the sending user's PDA UI so that they can see the new message
+ SSnanoui.update_user_uis(U, src) // Update the sending user's PDA UI so that they can see the new message
else
to_chat(U, "ERROR: Messaging server is not responding.")
@@ -1150,7 +1150,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(L)
if(reception_message)
L << reception_message
- GLOB.nanomanager.update_user_uis(L, src) // Update the receiving user's PDA UI so that they can see the new message
+ SSnanoui.update_user_uis(L, src) // Update the receiving user's PDA UI so that they can see the new message
/obj/item/device/pda/proc/new_news(var/message)
new_info(news_silent, newstone, news_silent ? "" : "\icon[src] [message]")
@@ -1196,7 +1196,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(can_use(usr))
mode = 0
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
to_chat(usr, "You press the reset button on \the [src].")
else
to_chat(usr, "You cannot do this while restrained.")
@@ -1297,7 +1297,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
user.drop_item()
cartridge.loc = src
to_chat(usr, "You insert [cartridge] into [src].")
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
if(cartridge.radio)
cartridge.radio.hostpda = src
@@ -1325,7 +1325,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
C.loc = src
pai = C
to_chat(user, "You slot \the [C] into \the [src].")
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
else if(istype(C, /obj/item/weapon/pen))
var/obj/item/weapon/pen/O = locate() in src
if(O)
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index d700008220..181764d126 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -43,7 +43,7 @@
data["laws"] = laws
data["has_laws"] = laws.len
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "aicard.tmpl", "[name]", 600, 400, state = state)
ui.set_initial_data(data)
diff --git a/code/game/objects/items/devices/communicator/UI.dm b/code/game/objects/items/devices/communicator/UI.dm
index d414232a80..69f5bd0d4b 100644
--- a/code/game/objects/items/devices/communicator/UI.dm
+++ b/code/game/objects/items/devices/communicator/UI.dm
@@ -125,7 +125,7 @@
// The value element is the actual data, and can take any form necessary for the template
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
@@ -261,7 +261,7 @@
notehtml = note
if(href_list["switch_template"])
- var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(usr, src, "main")
+ var/datum/nanoui/ui = SSnanoui.get_open_ui(usr, src, "main")
if(ui)
ui.add_template("Body", href_list["switch_template"])
@@ -276,5 +276,5 @@
if(href_list["cartridge_topic"] && cartridge) // Has to have a cartridge to perform these functions
cartridge.Topic(href, href_list)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
add_fingerprint(usr)
diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm
index 6324af7fb5..b9a8eff8a4 100644
--- a/code/game/objects/items/devices/communicator/communicator.dm
+++ b/code/game/objects/items/devices/communicator/communicator.dm
@@ -234,7 +234,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
cartridge.forceMove(src)
to_chat(usr, "You slot \the [cartridge] into \the [src].")
modules[++modules.len] = list("module" = "External Device", "icon" = "external64", "number" = EXTRTAB)
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
return
// Proc: attack_self()
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 681956e6d0..67eb06a33a 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -122,7 +122,7 @@ var/global/list/default_medbay_channels = list(
if(syndie)
data["useSyndMode"] = 1
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "radio_basic.tmpl", "[name]", 400, 430)
ui.set_initial_data(data)
@@ -233,7 +233,7 @@ var/global/list/default_medbay_channels = list(
return 1
if(.)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel) //BS12 EDIT
var/datum/radio_frequency/connection = null
@@ -725,7 +725,7 @@ var/global/list/default_medbay_channels = list(
. = 1
if(.)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/item/device/radio/borg/interact(mob/user as mob)
if(!on)
@@ -754,7 +754,7 @@ var/global/list/default_medbay_channels = list(
data["has_subspace"] = 1
data["subspace"] = subspace_transmission
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "radio_basic.tmpl", "[name]", 400, 430)
ui.set_initial_data(data)
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index 8abc2eabc2..ccd339e180 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -37,7 +37,7 @@
log_game("[key_name_admin(user)] attached both tanks to a transfer valve.")
update_icon()
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
//TODO: Have this take an assemblyholder
else if(isassembly(item))
var/obj/item/device/assembly/A = item
@@ -58,7 +58,7 @@
message_admins("[key_name_admin(user)] attached a [item] to a transfer valve. (JMP)")
log_game("[key_name_admin(user)] attached a [item] to a transfer valve.")
attacher = user
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
return
@@ -81,7 +81,7 @@
data["valveOpen"] = valve_open ? 1 : 0
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/game/objects/items/devices/uplink.dm b/code/game/objects/items/devices/uplink.dm
index 0bdb5a6b72..ea7006a73b 100644
--- a/code/game/objects/items/devices/uplink.dm
+++ b/code/game/objects/items/devices/uplink.dm
@@ -72,7 +72,7 @@
discount_amount = pick(90;0.9, 80;0.8, 70;0.7, 60;0.6, 50;0.5, 40;0.4, 30;0.3, 20;0.2, 10;0.1)
next_offer_time = world.time + offer_time
update_nano_data()
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
// Toggles the uplink on and off. Normally this will bypass the item's normal functions and go to the uplink menu, if activated.
/obj/item/device/uplink/hidden/proc/toggle()
@@ -110,7 +110,7 @@
data += nanoui_data
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui) // No auto-refresh
ui = new(user, src, ui_key, "uplink.tmpl", title, 450, 600, state = inventory_state)
data["menu"] = 0
@@ -138,7 +138,7 @@
UI.buy(src, usr)
else if(href_list["lock"])
toggle()
- var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main")
+ var/datum/nanoui/ui = SSnanoui.get_open_ui(user, src, "main")
ui.close()
else if(href_list["return"])
nanoui_menu = round(nanoui_menu/10)
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index bd24642c67..e4082b3352 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -91,8 +91,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/brand
blood_sprite_state = null //Can't bloody these
-/obj/item/clothing/mask/smokable/New()
- ..()
+/obj/item/clothing/mask/smokable/Initialize()
+ . = ..()
flags |= NOREACT // so it doesn't react until you light it
create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15
if(smoketime && !max_smoketime)
@@ -177,7 +177,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
T.visible_message(flavor_text)
update_icon()
set_light(2, 0.25, "#E38F46")
- START_PROCESSING(SSobj, src)
+ START_PROCESSING(SSobj, src)
/obj/item/clothing/mask/smokable/proc/die(var/nomessage = 0)
var/turf/T = get_turf(src)
@@ -280,8 +280,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
weldermes = "USER casually lights the NAME with FLAME."
ignitermes = "USER fiddles with FLAME, and manages to light their NAME."
-/obj/item/clothing/mask/smokable/cigarette/New()
- ..()
+/obj/item/clothing/mask/smokable/cigarette/Initialize()
+ . = ..()
if(nicotine_amt)
reagents.add_reagent("nicotine", nicotine_amt)
@@ -363,8 +363,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
slot_flags = SLOT_EARS
throwforce = 1
-/obj/item/weapon/cigbutt/New()
- ..()
+/obj/item/weapon/cigbutt/Initialize()
+ . = ..()
pixel_x = rand(-10,10)
pixel_y = rand(-10,10)
transform = turn(transform,rand(0,360))
@@ -541,7 +541,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
user.visible_message("After a few attempts, [user] manages to light the [src], they however burn their finger in the process.")
set_light(2)
- START_PROCESSING(SSobj, src)
+ START_PROCESSING(SSobj, src)
else
lit = 0
icon_state = "[base_state]"
diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm
index 7124cb489f..cb6a4e4a42 100644
--- a/code/game/objects/items/weapons/clown_items.dm
+++ b/code/game/objects/items/weapons/clown_items.dm
@@ -15,11 +15,11 @@
/*
* Soap
*/
-/obj/item/weapon/soap/New()
- ..()
+/obj/item/weapon/soap/Initialize()
+ . = ..()
create_reagents(5)
wet()
-
+
/obj/item/weapon/soap/proc/wet()
reagents.add_reagent("cleaner", 5)
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index eba48464f0..06649d7982 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -34,22 +34,20 @@
spray_particles = 3
sprite_name = "miniFE"
-/obj/item/weapon/extinguisher/New()
+/obj/item/weapon/extinguisher/Initialize()
create_reagents(max_water)
reagents.add_reagent("water", max_water)
- ..()
+ . = ..()
/obj/item/weapon/extinguisher/examine(mob/user)
if(..(user, 0))
- user << text("\icon[] [] contains [] units of water left!", src, src.name, src.reagents.total_volume)
- return
+ to_chat(user, text("\icon[] [] contains [] units of water left!", src, src.name, src.reagents.total_volume))
/obj/item/weapon/extinguisher/attack_self(mob/user as mob)
safety = !safety
- src.icon_state = "[sprite_name][!safety]"
- src.desc = "The safety is [safety ? "on" : "off"]."
- user << "The safety is [safety ? "on" : "off"]."
- return
+ icon_state = "[sprite_name][!safety]"
+ desc = "The safety is [safety ? "on" : "off"]."
+ to_chat(user, "The safety is [safety ? "on" : "off"].")
/obj/item/weapon/extinguisher/proc/propel_object(var/obj/O, mob/user, movementdirection)
if(O.anchored) return
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index c5c8075c63..36dcf9d44c 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -16,177 +16,184 @@
var/list/allowed_containers = list(/obj/item/weapon/reagent_containers/glass/beaker, /obj/item/weapon/reagent_containers/glass/bottle)
var/affected_area = 3
- New()
- create_reagents(1000)
+/obj/item/weapon/grenade/chem_grenade/Initialize()
+ . = ..()
+ create_reagents(1000)
+<<<<<<< HEAD
Destroy()
QDEL_NULL(detonator)
QDEL_LIST_NULL(beakers)
return ..()
+=======
+/obj/item/weapon/grenade/chem_grenade/Destroy()
+ QDEL_NULL(detonator)
+ QDEL_LIST_NULL(beakers)
+ return ..()
+>>>>>>> 46c79c7... [READY]Makes a bunch of processes subsystems instead (#5814
- attack_self(mob/user as mob)
- if(!stage || stage==1)
- if(detonator)
+/obj/item/weapon/grenade/chem_grenade/attack_self(mob/user as mob)
+ if(!stage || stage==1)
+ if(detonator)
// detonator.loc=src.loc
- detonator.detached()
- usr.put_in_hands(detonator)
- detonator=null
- det_time = null
- stage=0
- icon_state = initial(icon_state)
- else if(beakers.len)
- for(var/obj/B in beakers)
- if(istype(B))
- beakers -= B
- user.put_in_hands(B)
- name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
- if(stage > 1 && !active && clown_check(user))
- to_chat(user, "You prime \the [name]!")
+ detonator.detached()
+ usr.put_in_hands(detonator)
+ detonator=null
+ det_time = null
+ stage=0
+ icon_state = initial(icon_state)
+ else if(beakers.len)
+ for(var/obj/B in beakers)
+ if(istype(B))
+ beakers -= B
+ user.put_in_hands(B)
+ name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
+ if(stage > 1 && !active && clown_check(user))
+ to_chat(user, "You prime \the [name]!")
- msg_admin_attack("[key_name_admin(user)] primed \a [src]")
+ msg_admin_attack("[key_name_admin(user)] primed \a [src]")
- activate()
- add_fingerprint(user)
- if(iscarbon(user))
- var/mob/living/carbon/C = user
- C.throw_mode_on()
+ activate()
+ add_fingerprint(user)
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ C.throw_mode_on()
- attackby(obj/item/weapon/W as obj, mob/user as mob)
-
- if(istype(W,/obj/item/device/assembly_holder) && (!stage || stage==1) && path != 2)
- var/obj/item/device/assembly_holder/det = W
- if(istype(det.a_left,det.a_right.type) || (!isigniter(det.a_left) && !isigniter(det.a_right)))
- to_chat(user, "Assembly must contain one igniter.")
- return
- if(!det.secured)
- to_chat(user, "Assembly must be secured with screwdriver.")
- return
+/obj/item/weapon/grenade/chem_grenade/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W,/obj/item/device/assembly_holder) && (!stage || stage==1) && path != 2)
+ var/obj/item/device/assembly_holder/det = W
+ if(istype(det.a_left,det.a_right.type) || (!isigniter(det.a_left) && !isigniter(det.a_right)))
+ to_chat(user, "Assembly must contain one igniter.")
+ return
+ if(!det.secured)
+ to_chat(user, "Assembly must be secured with screwdriver.")
+ return
+ path = 1
+ to_chat(user, "You add [W] to the metal casing.")
+ playsound(src.loc, 'sound/items/Screwdriver2.ogg', 25, -3)
+ user.remove_from_mob(det)
+ det.loc = src
+ detonator = det
+ if(istimer(detonator.a_left))
+ var/obj/item/device/assembly/timer/T = detonator.a_left
+ det_time = 10*T.time
+ if(istimer(detonator.a_right))
+ var/obj/item/device/assembly/timer/T = detonator.a_right
+ det_time = 10*T.time
+ icon_state = initial(icon_state) +"_ass"
+ name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
+ stage = 1
+ else if(W.is_screwdriver() && path != 2)
+ if(stage == 1)
path = 1
- to_chat(user, "You add [W] to the metal casing.")
- playsound(src.loc, 'sound/items/Screwdriver2.ogg', 25, -3)
- user.remove_from_mob(det)
- det.loc = src
- detonator = det
- if(istimer(detonator.a_left))
+ if(beakers.len)
+ to_chat(user, "You lock the assembly.")
+ name = "grenade"
+ else
+// to_chat(user, "You need to add at least one beaker before locking the assembly.")
+ to_chat(user, "You lock the empty assembly.")
+ name = "fake grenade"
+ playsound(src, W.usesound, 50, 1)
+ icon_state = initial(icon_state) +"_locked"
+ stage = 2
+ else if(stage == 2)
+ if(active && prob(95))
+ to_chat(user, "You trigger the assembly!")
+ detonate()
+ return
+ else
+ to_chat(user, "You unlock the assembly.")
+ playsound(src.loc, W.usesound, 50, -3)
+ name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
+ icon_state = initial(icon_state) + (detonator?"_ass":"")
+ stage = 1
+ active = 0
+ else if(is_type_in_list(W, allowed_containers) && (!stage || stage==1) && path != 2)
+ path = 1
+ if(beakers.len == 2)
+ to_chat(user, "The grenade can not hold more containers.")
+ return
+ else
+ if(W.reagents.total_volume)
+ to_chat(user, "You add \the [W] to the assembly.")
+ user.drop_item()
+ W.loc = src
+ beakers += W
+ stage = 1
+ name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
+ else
+ to_chat(user, "\The [W] is empty.")
+
+/obj/item/weapon/grenade/chem_grenade/examine(mob/user)
+ ..(user)
+ if(detonator)
+ to_chat(user, "With attached [detonator.name]")
+
+/obj/item/weapon/grenade/chem_grenade/activate(mob/user as mob)
+ if(active) return
+
+ if(detonator)
+ if(!isigniter(detonator.a_left))
+ detonator.a_left.activate()
+ active = 1
+ if(!isigniter(detonator.a_right))
+ detonator.a_right.activate()
+ active = 1
+ if(active)
+ icon_state = initial(icon_state) + "_active"
+
+ if(user)
+ msg_admin_attack("[key_name_admin(user)] primed \a [src.name]")
+
+ return
+
+/obj/item/weapon/grenade/chem_grenade/proc/primed(var/primed = 1)
+ if(active)
+ icon_state = initial(icon_state) + (primed?"_primed":"_active")
+
+/obj/item/weapon/grenade/chem_grenade/detonate()
+ if(!stage || stage<2) return
+
+ var/has_reagents = 0
+ for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
+ if(G.reagents.total_volume) has_reagents = 1
+
+ active = 0
+ if(!has_reagents)
+ icon_state = initial(icon_state) +"_locked"
+ playsound(src.loc, 'sound/items/Screwdriver2.ogg', 50, 1)
+ spawn(0) //Otherwise det_time is erroneously set to 0 after this
+ if(istimer(detonator.a_left)) //Make sure description reflects that the timer has been reset
var/obj/item/device/assembly/timer/T = detonator.a_left
det_time = 10*T.time
if(istimer(detonator.a_right))
var/obj/item/device/assembly/timer/T = detonator.a_right
det_time = 10*T.time
- icon_state = initial(icon_state) +"_ass"
- name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
- stage = 1
- else if(W.is_screwdriver() && path != 2)
- if(stage == 1)
- path = 1
- if(beakers.len)
- to_chat(user, "You lock the assembly.")
- name = "grenade"
- else
-// to_chat(user, "You need to add at least one beaker before locking the assembly.")
- to_chat(user, "You lock the empty assembly.")
- name = "fake grenade"
- playsound(src, W.usesound, 50, 1)
- icon_state = initial(icon_state) +"_locked"
- stage = 2
- else if(stage == 2)
- if(active && prob(95))
- to_chat(user, "You trigger the assembly!")
- detonate()
- return
- else
- to_chat(user, "You unlock the assembly.")
- playsound(src.loc, W.usesound, 50, -3)
- name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
- icon_state = initial(icon_state) + (detonator?"_ass":"")
- stage = 1
- active = 0
- else if(is_type_in_list(W, allowed_containers) && (!stage || stage==1) && path != 2)
- path = 1
- if(beakers.len == 2)
- to_chat(user, "The grenade can not hold more containers.")
- return
- else
- if(W.reagents.total_volume)
- to_chat(user, "You add \the [W] to the assembly.")
- user.drop_item()
- W.loc = src
- beakers += W
- stage = 1
- name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
- else
- to_chat(user, "\The [W] is empty.")
-
- examine(mob/user)
- ..(user)
- if(detonator)
- to_chat(user, "With attached [detonator.name]")
-
- activate(mob/user as mob)
- if(active) return
-
- if(detonator)
- if(!isigniter(detonator.a_left))
- detonator.a_left.activate()
- active = 1
- if(!isigniter(detonator.a_right))
- detonator.a_right.activate()
- active = 1
- if(active)
- icon_state = initial(icon_state) + "_active"
-
- if(user)
- msg_admin_attack("[key_name_admin(user)] primed \a [src.name]")
-
return
- proc/primed(var/primed = 1)
- if(active)
- icon_state = initial(icon_state) + (primed?"_primed":"_active")
+ playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1)
- detonate()
- if(!stage || stage<2) return
+ for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
+ G.reagents.trans_to_obj(src, G.reagents.total_volume)
- var/has_reagents = 0
- for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
- if(G.reagents.total_volume) has_reagents = 1
+ if(src.reagents.total_volume) //The possible reactions didnt use up all reagents.
+ var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread()
+ steam.set_up(10, 0, get_turf(src))
+ steam.attach(src)
+ steam.start()
- active = 0
- if(!has_reagents)
- icon_state = initial(icon_state) +"_locked"
- playsound(src.loc, 'sound/items/Screwdriver2.ogg', 50, 1)
- spawn(0) //Otherwise det_time is erroneously set to 0 after this
- if(istimer(detonator.a_left)) //Make sure description reflects that the timer has been reset
- var/obj/item/device/assembly/timer/T = detonator.a_left
- det_time = 10*T.time
- if(istimer(detonator.a_right))
- var/obj/item/device/assembly/timer/T = detonator.a_right
- det_time = 10*T.time
- return
+ for(var/atom/A in view(affected_area, src.loc))
+ if( A == src ) continue
+ src.reagents.touch(A)
- playsound(src.loc, 'sound/effects/bamf.ogg', 50, 1)
+ if(istype(loc, /mob/living/carbon)) //drop dat grenade if it goes off in your hand
+ var/mob/living/carbon/C = loc
+ C.drop_from_inventory(src)
+ C.throw_mode_off()
- for(var/obj/item/weapon/reagent_containers/glass/G in beakers)
- G.reagents.trans_to_obj(src, G.reagents.total_volume)
-
- if(src.reagents.total_volume) //The possible reactions didnt use up all reagents.
- var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread()
- steam.set_up(10, 0, get_turf(src))
- steam.attach(src)
- steam.start()
-
- for(var/atom/A in view(affected_area, src.loc))
- if( A == src ) continue
- src.reagents.touch(A)
-
- if(istype(loc, /mob/living/carbon)) //drop dat grenade if it goes off in your hand
- var/mob/living/carbon/C = loc
- C.drop_from_inventory(src)
- C.throw_mode_off()
-
- invisibility = INVISIBILITY_MAXIMUM //Why am i doing this?
- spawn(50) //To make sure all reagents can work
- qdel(src) //correctly before deleting the grenade.
+ invisibility = INVISIBILITY_MAXIMUM //Why am i doing this?
+ spawn(50) //To make sure all reagents can work
+ qdel(src) //correctly before deleting the grenade.
/obj/item/weapon/grenade/chem_grenade/large
@@ -203,20 +210,20 @@
path = 1
stage = 2
- New()
- ..()
- var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
- var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
+/obj/item/weapon/grenade/chem_grenade/metalfoam/Initialize()
+ . = ..()
+ var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
+ var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
- B1.reagents.add_reagent("aluminum", 30)
- B2.reagents.add_reagent("foaming_agent", 10)
- B2.reagents.add_reagent("pacid", 10)
+ B1.reagents.add_reagent("aluminum", 30)
+ B2.reagents.add_reagent("foaming_agent", 10)
+ B2.reagents.add_reagent("pacid", 10)
- detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
+ detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
- beakers += B1
- beakers += B2
- icon_state = initial(icon_state) +"_locked"
+ beakers += B1
+ beakers += B2
+ icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/incendiary
name = "incendiary grenade"
@@ -224,22 +231,22 @@
path = 1
stage = 2
- New()
- ..()
- var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
- var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
+/obj/item/weapon/grenade/chem_grenade/incendiary/Initialize()
+ . = ..()
+ var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
+ var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
- B1.reagents.add_reagent("aluminum", 15)
- B1.reagents.add_reagent("fuel",20)
- B2.reagents.add_reagent("phoron", 15)
- B2.reagents.add_reagent("sacid", 15)
- B1.reagents.add_reagent("fuel",20)
+ B1.reagents.add_reagent("aluminum", 15)
+ B1.reagents.add_reagent("fuel",20)
+ B2.reagents.add_reagent("phoron", 15)
+ B2.reagents.add_reagent("sacid", 15)
+ B1.reagents.add_reagent("fuel",20)
- detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
+ detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
- beakers += B1
- beakers += B2
- icon_state = initial(icon_state) +"_locked"
+ beakers += B1
+ beakers += B2
+ icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/antiweed
name = "weedkiller grenade"
@@ -247,21 +254,21 @@
path = 1
stage = 2
- New()
- ..()
- var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
- var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
+/obj/item/weapon/grenade/chem_grenade/antiweed/Initialize()
+ . = ..()
+ var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
+ var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
- B1.reagents.add_reagent("plantbgone", 25)
- B1.reagents.add_reagent("potassium", 25)
- B2.reagents.add_reagent("phosphorus", 25)
- B2.reagents.add_reagent("sugar", 25)
+ B1.reagents.add_reagent("plantbgone", 25)
+ B1.reagents.add_reagent("potassium", 25)
+ B2.reagents.add_reagent("phosphorus", 25)
+ B2.reagents.add_reagent("sugar", 25)
- detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
+ detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
- beakers += B1
- beakers += B2
- icon_state = "grenade"
+ beakers += B1
+ beakers += B2
+ icon_state = "grenade"
/obj/item/weapon/grenade/chem_grenade/cleaner
name = "cleaner grenade"
@@ -269,20 +276,20 @@
stage = 2
path = 1
- New()
- ..()
- var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
- var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
+/obj/item/weapon/grenade/chem_grenade/cleaner/Initialize()
+ . = ..()
+ var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src)
+ var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
- B1.reagents.add_reagent("fluorosurfactant", 40)
- B2.reagents.add_reagent("water", 40)
- B2.reagents.add_reagent("cleaner", 10)
+ B1.reagents.add_reagent("fluorosurfactant", 40)
+ B2.reagents.add_reagent("water", 40)
+ B2.reagents.add_reagent("cleaner", 10)
- detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
+ detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
- beakers += B1
- beakers += B2
- icon_state = initial(icon_state) +"_locked"
+ beakers += B1
+ beakers += B2
+ icon_state = initial(icon_state) +"_locked"
/obj/item/weapon/grenade/chem_grenade/teargas
name = "tear gas grenade"
@@ -290,19 +297,19 @@
stage = 2
path = 1
- New()
- ..()
- var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
- var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
+/obj/item/weapon/grenade/chem_grenade/teargas/Initialize()
+ . = ..()
+ var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
+ var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
- B1.reagents.add_reagent("phosphorus", 40)
- B1.reagents.add_reagent("potassium", 40)
- B1.reagents.add_reagent("condensedcapsaicin", 40)
- B2.reagents.add_reagent("sugar", 40)
- B2.reagents.add_reagent("condensedcapsaicin", 80)
+ B1.reagents.add_reagent("phosphorus", 40)
+ B1.reagents.add_reagent("potassium", 40)
+ B1.reagents.add_reagent("condensedcapsaicin", 40)
+ B2.reagents.add_reagent("sugar", 40)
+ B2.reagents.add_reagent("condensedcapsaicin", 80)
- detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
+ detonator = new/obj/item/device/assembly_holder/timer_igniter(src)
- beakers += B1
- beakers += B2
- icon_state = initial(icon_state) +"_locked"
\ No newline at end of file
+ beakers += B1
+ beakers += B2
+ icon_state = initial(icon_state) +"_locked"
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index 8f6ce1864f..eaed5f9f4c 100644
--- a/code/game/objects/items/weapons/grenades/flashbang.dm
+++ b/code/game/objects/items/weapons/grenades/flashbang.dm
@@ -26,7 +26,6 @@
new/obj/effect/effect/smoke/illumination(src.loc, 5, range=30, power=30, color="#FFFFFF")
qdel(src)
- return
/obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/carbon/M) // Added a new proc called 'bang' that takes a location and a person to be banged.
to_chat(M, "BANG") // Called during the loop that bangs people in lockers/containers and when banging
diff --git a/code/game/objects/items/weapons/id cards/syndicate_ids.dm b/code/game/objects/items/weapons/id cards/syndicate_ids.dm
index e1ceb489dd..bbf05718fc 100644
--- a/code/game/objects/items/weapons/id cards/syndicate_ids.dm
+++ b/code/game/objects/items/weapons/id cards/syndicate_ids.dm
@@ -58,7 +58,7 @@
data["electronic_warfare"] = electronic_warfare
data["entries"] = entries
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "agent_id_card.tmpl", "Fake ID", 600, 400)
ui.set_initial_data(data)
@@ -185,7 +185,7 @@
. = 1
// Always update the UI, or buttons will spin indefinitely
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/var/global/list/id_card_states
/proc/id_card_states()
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 79197e7a7b..1bac8523a6 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -264,7 +264,7 @@ var/list/global/tank_gauge_cache = list()
data["maskConnected"] = 1
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm
index ecc87a813e..5ec90e1129 100644
--- a/code/game/objects/items/weapons/tools/weldingtool.dm
+++ b/code/game/objects/items/weapons/tools/weldingtool.dm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
#define WELDER_FUEL_BURN_INTERVAL 13
/*
* Welding Tool
@@ -47,12 +48,12 @@
R.add_reagent("fuel", max_fuel)
update_icon()
if(always_process)
- START_PROCESSING(SSobj, src)
+ processing_objects |= src
..()
/obj/item/weapon/weldingtool/Destroy()
if(welding || always_process)
- STOP_PROCESSING(SSobj, src)
+ processing_objects -= src
return ..()
/obj/item/weapon/weldingtool/examine(mob/user)
@@ -60,7 +61,7 @@
if(max_fuel)
to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ))
-/obj/item/weapon/weldingtool/attack(atom/A, mob/living/user, def_zone)
+/obj/item/weapon/weldingtool/attack(var/atom/A, var/mob/living/user, var/def_zone)
if(ishuman(A) && user.a_intent == I_HELP)
var/mob/living/carbon/human/H = A
var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting]
@@ -115,13 +116,18 @@
..()
return
+
/obj/item/weapon/weldingtool/process()
if(welding)
++burned_fuel_for
if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
remove_fuel(1)
+
+
+
if(get_fuel() < 1)
setWelding(0)
+
//I'm not sure what this does. I assume it has to do with starting fires...
//...but it doesnt check to see if the welder is on or not.
var/turf/location = src.loc
@@ -132,6 +138,7 @@
if (istype(location, /turf))
location.hotspot_expose(700, 5)
+
/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob, proximity)
if(!proximity) return
if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1)
@@ -192,7 +199,7 @@
//Returns whether or not the welding tool is currently on.
/obj/item/weapon/weldingtool/proc/isOn()
- return welding
+ return src.welding
/obj/item/weapon/weldingtool/update_icon()
..()
@@ -208,7 +215,7 @@
// Fuel counter overlay.
if(change_icons && get_max_fuel())
var/ratio = get_fuel() / get_max_fuel()
- ratio = CEILING(ratio * 4, 1) * 25
+ ratio = Ceiling(ratio*4) * 25
var/image/I = image(icon, src, "[icon_state][ratio]")
overlays.Add(I)
@@ -277,7 +284,7 @@
welding = 1
update_icon()
if(!always_process)
- START_PROCESSING(SSobj, src)
+ processing_objects |= src
else
if(M)
var/msg = max_fuel ? "welding fuel" : "charge"
@@ -286,7 +293,7 @@
//Otherwise
else if(!set_welding && welding)
if(!always_process)
- STOP_PROCESSING(SSobj, src)
+ processing_objects -= src
if(M)
to_chat(M, "You switch \the [src] off.")
else if(T)
@@ -604,6 +611,611 @@
toolspeed = 0.5
#undef WELDER_FUEL_BURN_INTERVAL
+=======
+#define WELDER_FUEL_BURN_INTERVAL 13
+/*
+ * Welding Tool
+ */
+/obj/item/weapon/weldingtool
+ name = "\improper welding tool"
+ icon = 'icons/obj/tools.dmi'
+ icon_state = "welder"
+ item_state = "welder"
+ flags = CONDUCT
+ slot_flags = SLOT_BELT
+
+ //Amount of OUCH when it's thrown
+ force = 3.0
+ throwforce = 5.0
+ throw_speed = 1
+ throw_range = 5
+ w_class = ITEMSIZE_SMALL
+
+ //Cost to make in the autolathe
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 30)
+
+ //R&D tech level
+ origin_tech = list(TECH_ENGINEERING = 1)
+
+ //Welding tool specific stuff
+ var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
+ var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
+ var/max_fuel = 20 //The max amount of fuel the welder can hold
+
+ var/acti_sound = 'sound/items/welderactivate.ogg'
+ var/deac_sound = 'sound/items/welderdeactivate.ogg'
+ usesound = 'sound/items/Welder2.ogg'
+ var/change_icons = TRUE
+ var/flame_intensity = 2 //how powerful the emitted light is when used.
+ var/flame_color = "#FF9933" // What color the welder light emits when its on. Default is an orange-ish color.
+ var/eye_safety_modifier = 0 // Increasing this will make less eye protection needed to stop eye damage. IE at 1, sunglasses will fully protect.
+ var/burned_fuel_for = 0 // Keeps track of how long the welder's been on, used to gradually empty the welder if left one, without RNG.
+ var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel.
+ toolspeed = 1
+
+/obj/item/weapon/weldingtool/Initialize()
+ . = ..()
+// var/random_fuel = min(rand(10,20),max_fuel)
+ var/datum/reagents/R = new/datum/reagents(max_fuel)
+ reagents = R
+ R.my_atom = src
+ R.add_reagent("fuel", max_fuel)
+ update_icon()
+ if(always_process)
+ processing_objects |= src
+ ..()
+
+/obj/item/weapon/weldingtool/Destroy()
+ if(welding || always_process)
+ STOP_PROCESSING(SSobj, src)
+ return ..()
+
+/obj/item/weapon/weldingtool/examine(mob/user)
+ if(..(user, 0))
+ if(max_fuel)
+ to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ))
+
+/obj/item/weapon/weldingtool/attack(atom/A, mob/living/user, def_zone)
+ if(ishuman(A) && user.a_intent == I_HELP)
+ var/mob/living/carbon/human/H = A
+ var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting]
+
+ if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
+ return ..()
+
+ if(!welding)
+ to_chat(user, "You'll need to turn [src] on to patch the damage on [H]'s [S.name]!")
+ return 1
+
+ if(S.robo_repair(15, BRUTE, "some dents", src, user))
+ remove_fuel(1, user)
+ return 1
+
+ return ..()
+
+/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/living/user as mob)
+ if(istype(W,/obj/item/weapon/tool/screwdriver))
+ if(welding)
+ to_chat(user, "Stop welding first!")
+ return
+ status = !status
+ if(status)
+ to_chat(user, "You secure the welder.")
+ else
+ to_chat(user, "The welder can now be attached and modified.")
+ src.add_fingerprint(user)
+ return
+
+ if((!status) && (istype(W,/obj/item/stack/rods)))
+ var/obj/item/stack/rods/R = W
+ R.use(1)
+ var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc)
+ src.loc = F
+ F.weldtool = src
+ if (user.client)
+ user.client.screen -= src
+ if (user.r_hand == src)
+ user.remove_from_mob(src)
+ else
+ user.remove_from_mob(src)
+ src.master = F
+ src.layer = initial(src.layer)
+ user.remove_from_mob(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = F
+ src.add_fingerprint(user)
+ return
+
+ ..()
+ return
+
+/obj/item/weapon/weldingtool/process()
+ if(welding)
+ ++burned_fuel_for
+ if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
+ remove_fuel(1)
+ if(get_fuel() < 1)
+ setWelding(0)
+ //I'm not sure what this does. I assume it has to do with starting fires...
+ //...but it doesnt check to see if the welder is on or not.
+ var/turf/location = src.loc
+ if(istype(location, /mob/living))
+ var/mob/living/M = location
+ if(M.item_is_in_hands(src))
+ location = get_turf(M)
+ if (istype(location, /turf))
+ location.hotspot_expose(700, 5)
+
+/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob, proximity)
+ if(!proximity) return
+ if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1)
+ if(!welding && max_fuel)
+ O.reagents.trans_to_obj(src, max_fuel)
+ to_chat(user, "Welder refueled")
+ playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
+ return
+ else if(!welding)
+ to_chat(user, "[src] doesn't use fuel.")
+ return
+ else
+ message_admins("[key_name_admin(user)] triggered a fueltank explosion with a welding tool.")
+ log_game("[key_name(user)] triggered a fueltank explosion with a welding tool.")
+ to_chat(user, "You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done.")
+ var/obj/structure/reagent_dispensers/fueltank/tank = O
+ tank.explode()
+ return
+ if (src.welding)
+ remove_fuel(1)
+ var/turf/location = get_turf(user)
+ if(isliving(O))
+ var/mob/living/L = O
+ L.IgniteMob()
+ if (istype(location, /turf))
+ location.hotspot_expose(700, 50, 1)
+/obj/item/weapon/weldingtool/attack_self(mob/user)
+ setWelding(!welding, user)
+
+//Returns the amount of fuel in the welder
+/obj/item/weapon/weldingtool/proc/get_fuel()
+ return reagents.get_reagent_amount("fuel")
+
+/obj/item/weapon/weldingtool/proc/get_max_fuel()
+ return max_fuel
+
+//Removes fuel from the welding tool. If a mob is passed, it will perform an eyecheck on the mob. This should probably be renamed to use()
+/obj/item/weapon/weldingtool/proc/remove_fuel(var/amount = 1, var/mob/M = null)
+ if(!welding)
+ return 0
+ if(amount)
+ burned_fuel_for = 0 // Reset the counter since we're removing fuel.
+ if(get_fuel() >= amount)
+ reagents.remove_reagent("fuel", amount)
+ if(M)
+ eyecheck(M)
+ update_icon()
+ return 1
+ else
+ if(M)
+ to_chat(M, "You need more welding fuel to complete this task.")
+ update_icon()
+ return 0
+
+//Returns whether or not the welding tool is currently on.
+/obj/item/weapon/weldingtool/proc/isOn()
+ return welding
+
+/obj/item/weapon/weldingtool/update_icon()
+ ..()
+ overlays.Cut()
+ // Welding overlay.
+ if(welding)
+ var/image/I = image(icon, src, "[icon_state]-on")
+ overlays.Add(I)
+ item_state = "[initial(item_state)]1"
+ else
+ item_state = initial(item_state)
+
+ // Fuel counter overlay.
+ if(change_icons && get_max_fuel())
+ var/ratio = get_fuel() / get_max_fuel()
+ ratio = CEILING(ratio * 4, 1) * 25
+ var/image/I = image(icon, src, "[icon_state][ratio]")
+ overlays.Add(I)
+
+ // Lights
+ if(welding && flame_intensity)
+ set_light(flame_intensity, flame_intensity, flame_color)
+ else
+ set_light(0)
+
+// icon_state = welding ? "[icon_state]1" : "[initial(icon_state)]"
+ var/mob/M = loc
+ if(istype(M))
+ M.update_inv_l_hand()
+ M.update_inv_r_hand()
+
+/obj/item/weapon/weldingtool/MouseDrop(obj/over_object as obj)
+ if(!canremove)
+ return
+
+ if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
+
+ if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
+ return
+
+ if (!( istype(over_object, /obj/screen) ))
+ return ..()
+
+ //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
+ //there's got to be a better way of doing this.
+ if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
+ return
+
+ if (( usr.restrained() ) || ( usr.stat ))
+ return
+
+ if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
+ return
+
+ switch(over_object.name)
+ if("r_hand")
+ usr.u_equip(src)
+ usr.put_in_r_hand(src)
+ if("l_hand")
+ usr.u_equip(src)
+ usr.put_in_l_hand(src)
+ src.add_fingerprint(usr)
+
+//Sets the welding state of the welding tool. If you see W.welding = 1 anywhere, please change it to W.setWelding(1)
+//so that the welding tool updates accordingly
+/obj/item/weapon/weldingtool/proc/setWelding(var/set_welding, var/mob/M)
+ if(!status) return
+
+ var/turf/T = get_turf(src)
+ //If we're turning it on
+ if(set_welding && !welding)
+ if (get_fuel() > 0)
+ if(M)
+ to_chat(M, "You switch the [src] on.")
+ else if(T)
+ T.visible_message("\The [src] turns on.")
+ playsound(loc, acti_sound, 50, 1)
+ src.force = 15
+ src.damtype = "fire"
+ src.w_class = ITEMSIZE_LARGE
+ src.hitsound = 'sound/items/welder.ogg'
+ welding = 1
+ update_icon()
+ if(!always_process)
+ START_PROCESSING(SSobj, src)
+ else
+ if(M)
+ var/msg = max_fuel ? "welding fuel" : "charge"
+ to_chat(M, "You need more [msg] to complete this task.")
+ return
+ //Otherwise
+ else if(!set_welding && welding)
+ if(!always_process)
+ STOP_PROCESSING(SSobj, src)
+ if(M)
+ to_chat(M, "You switch \the [src] off.")
+ else if(T)
+ T.visible_message("\The [src] turns off.")
+ playsound(loc, deac_sound, 50, 1)
+ src.force = 3
+ src.damtype = "brute"
+ src.w_class = initial(src.w_class)
+ src.welding = 0
+ src.hitsound = initial(src.hitsound)
+ update_icon()
+
+//Decides whether or not to damage a player's eyes based on what they're wearing as protection
+//Note: This should probably be moved to mob
+/obj/item/weapon/weldingtool/proc/eyecheck(mob/living/carbon/user)
+ if(!istype(user))
+ return 1
+ var/safety = user.eyecheck()
+ safety = between(-1, safety + eye_safety_modifier, 2)
+ if(istype(user, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = user
+ var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
+ if(!E)
+ return
+ switch(safety)
+ if(1)
+ to_chat(usr, "Your eyes sting a little.")
+ E.damage += rand(1, 2)
+ if(E.damage > 12)
+ user.eye_blurry += rand(3,6)
+ if(0)
+ to_chat(usr, "Your eyes burn.")
+ E.damage += rand(2, 4)
+ if(E.damage > 10)
+ E.damage += rand(4,10)
+ if(-1)
+ to_chat(usr, "Your thermals intensify the welder's glow. Your eyes itch and burn severely.")
+ user.eye_blurry += rand(12,20)
+ E.damage += rand(12, 16)
+ if(safety<2)
+
+ if(E.damage > 10)
+ to_chat(user, "Your eyes are really starting to hurt. This can't be good for you!")
+
+ if (E.damage >= E.min_broken_damage)
+ to_chat(user, "You go blind!")
+ user.sdisabilities |= BLIND
+ else if (E.damage >= E.min_bruised_damage)
+ to_chat(user, "You go blind!")
+ user.Blind(5)
+ user.eye_blurry = 5
+ user.disabilities |= NEARSIGHTED
+ spawn(100)
+ user.disabilities &= ~NEARSIGHTED
+ return
+
+/obj/item/weapon/weldingtool/is_hot()
+ return isOn()
+
+/obj/item/weapon/weldingtool/largetank
+ name = "industrial welding tool"
+ desc = "A slightly larger welder with a larger tank."
+ icon_state = "indwelder"
+ max_fuel = 40
+ origin_tech = list(TECH_ENGINEERING = 2, TECH_PHORON = 2)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 60)
+
+/obj/item/weapon/weldingtool/largetank/cyborg
+ name = "integrated welding tool"
+ desc = "An advanced welder designed to be used in robotic systems."
+ toolspeed = 0.5
+
+/obj/item/weapon/weldingtool/hugetank
+ name = "upgraded welding tool"
+ desc = "A much larger welder with a huge tank."
+ icon_state = "indwelder"
+ max_fuel = 80
+ w_class = ITEMSIZE_NORMAL
+ origin_tech = list(TECH_ENGINEERING = 3)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
+
+/obj/item/weapon/weldingtool/mini
+ name = "emergency welding tool"
+ desc = "A miniature welder used during emergencies."
+ icon_state = "miniwelder"
+ max_fuel = 10
+ w_class = ITEMSIZE_SMALL
+ matter = list(MAT_METAL = 30, MAT_GLASS = 10)
+ change_icons = 0
+ toolspeed = 2
+ eye_safety_modifier = 1 // Safer on eyes.
+
+/obj/item/weapon/weldingtool/alien
+ name = "alien welding tool"
+ desc = "An alien welding tool. Whatever fuel it uses, it never runs out."
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "welder"
+ toolspeed = 0.1
+ flame_color = "#6699FF" // Light bluish.
+ eye_safety_modifier = 2
+ change_icons = 0
+ origin_tech = list(TECH_PHORON = 5 ,TECH_ENGINEERING = 5)
+ always_process = TRUE
+
+/obj/item/weapon/weldingtool/alien/process()
+ if(get_fuel() <= get_max_fuel())
+ reagents.add_reagent("fuel", 1)
+ ..()
+
+/obj/item/weapon/weldingtool/experimental
+ name = "experimental welding tool"
+ desc = "An experimental welder capable of synthesizing its own fuel from waste compounds. It can output a flame hotter than regular welders."
+ icon_state = "exwelder"
+ max_fuel = 40
+ w_class = ITEMSIZE_NORMAL
+ origin_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
+ toolspeed = 0.5
+ change_icons = 0
+ flame_intensity = 3
+ always_process = TRUE
+ var/nextrefueltick = 0
+
+/obj/item/weapon/weldingtool/experimental/process()
+ ..()
+ if(get_fuel() < get_max_fuel() && nextrefueltick < world.time)
+ nextrefueltick = world.time + 10
+ reagents.add_reagent("fuel", 1)
+
+/*
+ * Backpack Welder.
+ */
+
+/obj/item/weapon/weldingtool/tubefed
+ name = "tube-fed welding tool"
+ desc = "A bulky, cooler-burning welding tool that draws from a worn welding tank."
+ icon_state = "tubewelder"
+ max_fuel = 10
+ w_class = ITEMSIZE_NO_CONTAINER
+ matter = null
+ toolspeed = 1.25
+ change_icons = 0
+ flame_intensity = 1
+ eye_safety_modifier = 1
+ always_process = TRUE
+ var/obj/item/weapon/weldpack/mounted_pack = null
+
+/obj/item/weapon/weldingtool/tubefed/New(location)
+ ..()
+ if(istype(location, /obj/item/weapon/weldpack))
+ var/obj/item/weapon/weldpack/holder = location
+ mounted_pack = holder
+ else
+ qdel(src)
+
+/obj/item/weapon/weldingtool/tubefed/Destroy()
+ mounted_pack.nozzle = null
+ mounted_pack = null
+ return ..()
+
+/obj/item/weapon/weldingtool/tubefed/process()
+ if(mounted_pack)
+ if(!istype(mounted_pack.loc,/mob/living/carbon/human))
+ mounted_pack.return_nozzle()
+ else
+ var/mob/living/carbon/human/H = mounted_pack.loc
+ if(H.back != mounted_pack)
+ mounted_pack.return_nozzle()
+
+ if(mounted_pack.loc != src.loc && src.loc != mounted_pack)
+ mounted_pack.return_nozzle()
+ visible_message("\The [src] retracts to its fueltank.")
+
+ if(get_fuel() <= get_max_fuel())
+ mounted_pack.reagents.trans_to_obj(src, 1)
+
+ ..()
+
+/obj/item/weapon/weldingtool/tubefed/dropped(mob/user)
+ ..()
+ if(src.loc != user)
+ mounted_pack.return_nozzle()
+ to_chat(user, "\The [src] retracts to its fueltank.")
+
+/*
+ * Electric/Arc Welder
+ */
+
+/obj/item/weapon/weldingtool/electric //AND HIS WELDING WAS ELECTRIC
+ name = "electric welding tool"
+ desc = "A welder which runs off of electricity."
+ icon_state = "arcwelder"
+ max_fuel = 0 //We'll handle the consumption later.
+ item_state = "ewelder"
+ var/obj/item/weapon/cell/power_supply //What type of power cell this uses
+ var/charge_cost = 24 //The rough equivalent of 1 unit of fuel, based on us wanting 10 welds per battery
+ var/cell_type = /obj/item/weapon/cell/device
+ var/use_external_power = 0 //If in a borg or hardsuit, this needs to = 1
+ flame_color = "#00CCFF" // Blue-ish, to set it apart from the gas flames.
+ acti_sound = 'sound/effects/sparks4.ogg'
+ deac_sound = 'sound/effects/sparks4.ogg'
+
+/obj/item/weapon/weldingtool/electric/unloaded/New()
+ cell_type = null
+
+/obj/item/weapon/weldingtool/electric/New()
+ ..()
+ if(cell_type == null)
+ update_icon()
+ else if(cell_type)
+ power_supply = new cell_type(src)
+ else
+ power_supply = new /obj/item/weapon/cell/device(src)
+ update_icon()
+
+/obj/item/weapon/weldingtool/electric/get_cell()
+ return power_supply
+
+/obj/item/weapon/weldingtool/electric/examine(mob/user)
+ if(get_dist(src, user) > 1)
+ to_chat(user, desc)
+ else // The << need to stay, for some reason
+ if(power_supply)
+ user << text("\icon[] The [] has [] charge left.", src, src.name, get_fuel())
+ else
+ user << text("\icon[] The [] has no power cell!", src, src.name)
+
+/obj/item/weapon/weldingtool/electric/get_fuel()
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(external)
+ return external.charge
+ else if(power_supply)
+ return power_supply.charge
+ else
+ return 0
+
+/obj/item/weapon/weldingtool/electric/get_max_fuel()
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(external)
+ return external.maxcharge
+ else if(power_supply)
+ return power_supply.maxcharge
+ return 0
+
+/obj/item/weapon/weldingtool/electric/remove_fuel(var/amount = 1, var/mob/M = null)
+ if(!welding)
+ return 0
+ if(get_fuel() >= amount)
+ power_supply.checked_use(charge_cost)
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(!external || !external.use(charge_cost)) //Take power from the borg...
+ power_supply.give(charge_cost) //Give it back to the cell.
+ if(M)
+ eyecheck(M)
+ update_icon()
+ return 1
+ else
+ if(M)
+ to_chat(M, "You need more energy to complete this task.")
+ update_icon()
+ return 0
+
+/obj/item/weapon/weldingtool/electric/attack_hand(mob/user as mob)
+ if(user.get_inactive_hand() == src)
+ if(power_supply)
+ power_supply.update_icon()
+ user.put_in_hands(power_supply)
+ power_supply = null
+ to_chat(user, "You remove the cell from the [src].")
+ setWelding(0)
+ update_icon()
+ return
+ ..()
+ else
+ return ..()
+
+/obj/item/weapon/weldingtool/electric/attackby(obj/item/weapon/W, mob/user as mob)
+ if(istype(W, /obj/item/weapon/cell))
+ if(istype(W, /obj/item/weapon/cell/device))
+ if(!power_supply)
+ user.drop_item()
+ W.loc = src
+ power_supply = W
+ to_chat(user, "You install a cell in \the [src].")
+ update_icon()
+ else
+ to_chat(user, "\The [src] already has a cell.")
+ else
+ to_chat(user, "\The [src] cannot use that type of cell.")
+ else
+ ..()
+
+/obj/item/weapon/weldingtool/electric/proc/get_external_power_supply()
+ if(isrobot(src.loc))
+ var/mob/living/silicon/robot/R = src.loc
+ return R.cell
+ if(istype(src.loc, /obj/item/rig_module))
+ var/obj/item/rig_module/module = src.loc
+ if(module.holder && module.holder.wearer)
+ var/mob/living/carbon/human/H = module.holder.wearer
+ if(istype(H) && H.back)
+ var/obj/item/weapon/rig/suit = H.back
+ if(istype(suit))
+ return suit.cell
+ return null
+
+/obj/item/weapon/weldingtool/electric/mounted
+ use_external_power = 1
+
+/obj/item/weapon/weldingtool/electric/mounted/cyborg
+ toolspeed = 0.5
+
+#undef WELDER_FUEL_BURN_INTERVAL
+>>>>>>> 46c79c7... [READY]Makes a bunch of processes subsystems instead (#5814
/obj/item/weapon/weldingtool/attack_self(mob/user)
- setWelding(!welding, user)
\ No newline at end of file
+ setWelding(!welding, user)
+ START_PROCESSING(SSobj, src)
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/weldbackpack.dm b/code/game/objects/items/weapons/weldbackpack.dm
index 0312ca55f8..5df0c9dbe3 100644
--- a/code/game/objects/items/weapons/weldbackpack.dm
+++ b/code/game/objects/items/weapons/weldbackpack.dm
@@ -9,7 +9,8 @@
var/obj/item/weapon/nozzle = null //Attached welder, or other spray device.
var/nozzle_attached = 0
-/obj/item/weapon/weldpack/New()
+/obj/item/weapon/weldpack/Initialize()
+ . = ..()
var/datum/reagents/R = new/datum/reagents(max_fuel) //Lotsa refills
reagents = R
R.my_atom = src
diff --git a/code/game/objects/random/_random.dm b/code/game/objects/random/_random.dm
index 1ef0b38f63..8a146f82c4 100644
--- a/code/game/objects/random/_random.dm
+++ b/code/game/objects/random/_random.dm
@@ -4,27 +4,27 @@
icon = 'icons/misc/mark.dmi'
icon_state = "rup"
var/spawn_nothing_percentage = 0 // this variable determines the likelyhood that this random object will not spawn anything
+ var/drop_get_turf = TRUE
// creates a new object and deletes itself
-/obj/random/New()
- ..()
- spawn()
- if(istype(src.loc, /obj/structure/loot_pile)) //Spawning from a lootpile is weird, need to wait until we're out of it to do our work.
- while(istype(src.loc, /obj/structure/loot_pile))
- sleep(1)
- if (!prob(spawn_nothing_percentage))
- spawn_item()
- qdel(src)
+/obj/random/Initialize()
+ . = ..()
+ if (!prob(spawn_nothing_percentage))
+ spawn_item()
+ qdel(src)
// this function should return a specific item to spawn
/obj/random/proc/item_to_spawn()
return 0
+/obj/random/drop_location()
+ return drop_get_turf? get_turf(src) : ..()
+
// creates the random item
/obj/random/proc/spawn_item()
var/build_path = item_to_spawn()
- var/atom/A = new build_path(src.loc)
+ var/atom/A = new build_path(drop_location())
if(pixel_x || pixel_y)
A.pixel_x = pixel_x
A.pixel_y = pixel_y
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 5f051a4e78..8ff7ee844f 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -102,7 +102,7 @@ GLOBAL_LIST_BOILERPLATE(all_janitorial_carts, /obj/structure/janitorialcart)
data["replacer"] = myreplacer ? capitalize(myreplacer.name) : null
data["signs"] = signs ? "[signs] sign\s" : null
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "janitorcart.tmpl", "Janitorial cart", 240, 160)
ui.set_initial_data(data)
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 136b8eeba6..cb1a0f631a 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -39,11 +39,10 @@
if(!isnull(rmaterialtype))
reinf_material = get_material_by_name(rmaterialtype)
update_material()
-
- processing_turfs |= src
+ START_PROCESSING(SSturfs, src)
/turf/simulated/wall/Destroy()
- processing_turfs -= src
+ STOP_PROCESSING(SSturfs, src)
dismantle_wall(null,null,1)
..()
diff --git a/code/global.dm b/code/global.dm
index 1f22567d8e..ce0d041d26 100644
--- a/code/global.dm
+++ b/code/global.dm
@@ -107,7 +107,6 @@ var/gravity_is_on = 1
var/join_motd = null
-var/datum/event_manager/event_manager = new() // Event Manager, the manager for events.
var/datum/game_master/game_master = new() // Game Master, an AI for choosing events.
var/datum/metric/metric = new() // Metric datum, used to keep track of the round.
diff --git a/code/modules/admin/view_variables/topic.dm b/code/modules/admin/view_variables/topic.dm
index 16550f6712..d6eb6bcbf5 100644
--- a/code/modules/admin/view_variables/topic.dm
+++ b/code/modules/admin/view_variables/topic.dm
@@ -474,7 +474,7 @@
usr << "This can only be done on mobs with clients"
return
- GLOB.nanomanager.send_resources(H.client)
+ SSnanoui.send_resources(H.client)
usr << "Resource files sent"
H << "Your NanoUI Resource files have been refreshed"
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index 95455bba3f..70136b44a1 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -152,7 +152,7 @@
log_client_to_db()
send_resources()
- GLOB.nanomanager.send_resources(src)
+ SSnanoui.send_resources(src)
if(!void)
void = new()
diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm
index 736f3bb4d2..4205f8f379 100644
--- a/code/modules/clothing/spacesuits/rig/rig.dm
+++ b/code/modules/clothing/spacesuits/rig/rig.dm
@@ -126,7 +126,7 @@
spark_system.set_up(5, 0, src)
spark_system.attach(src)
- START_PROCESSING(SSobj, src)
+ START_PROCESSING(SSobj, src)
if(initial_modules && initial_modules.len)
for(var/path in initial_modules)
@@ -610,7 +610,7 @@
if(module_list.len)
data["modules"] = module_list
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, ((src.loc != user) ? ai_interface_path : interface_path), interface_title, 480, 550, state = nano_state)
ui.set_initial_data(data)
diff --git a/code/modules/detectivework/microscope/dnascanner.dm b/code/modules/detectivework/microscope/dnascanner.dm
index d45555f40d..413fe14d01 100644
--- a/code/modules/detectivework/microscope/dnascanner.dm
+++ b/code/modules/detectivework/microscope/dnascanner.dm
@@ -61,7 +61,7 @@
data["bloodsamp_desc"] = (bloodsamp ? (bloodsamp.desc ? bloodsamp.desc : "No information on record.") : "")
data["lidstate"] = closed
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data)
if (!ui)
ui = new(user, src, ui_key, "dnaforensics.tmpl", "QuikScan DNA Analyzer", 540, 326)
ui.set_initial_data(data)
diff --git a/code/modules/detectivework/tools/luminol.dm b/code/modules/detectivework/tools/luminol.dm
index ddf00a628a..48636370bc 100644
--- a/code/modules/detectivework/tools/luminol.dm
+++ b/code/modules/detectivework/tools/luminol.dm
@@ -8,6 +8,6 @@
possible_transfer_amounts = list(5,10)
volume = 250
-/obj/item/weapon/reagent_containers/spray/luminol/New()
- ..()
+/obj/item/weapon/reagent_containers/spray/luminol/Initialize()
+ . = ..()
reagents.add_reagent("luminol", 250)
\ No newline at end of file
diff --git a/code/modules/detectivework/tools/rag.dm b/code/modules/detectivework/tools/rag.dm
index 1ff202778c..1f09765a0b 100644
--- a/code/modules/detectivework/tools/rag.dm
+++ b/code/modules/detectivework/tools/rag.dm
@@ -29,8 +29,8 @@
var/on_fire = 0
var/burn_time = 20 //if the rag burns for too long it turns to ashes
-/obj/item/weapon/reagent_containers/glass/rag/New()
- ..()
+/obj/item/weapon/reagent_containers/glass/rag/Initialize()
+ . = ..()
update_name()
/obj/item/weapon/reagent_containers/glass/rag/Destroy()
diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm
index 507a516981..f1fcdcf071 100644
--- a/code/modules/economy/Accounts_DB.dm
+++ b/code/modules/economy/Accounts_DB.dm
@@ -53,7 +53,7 @@
O.loc = src
held_card = O
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
attack_hand(user)
@@ -107,7 +107,7 @@
if (accounts.len > 0)
data["accounts"] = accounts
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "accounts_terminal.tmpl", src.name, 400, 640)
ui.set_initial_data(data)
@@ -117,7 +117,7 @@
if(..())
return 1
- var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(usr, src, "main")
+ var/datum/nanoui/ui = SSnanoui.get_open_ui(usr, src, "main")
if(href_list["choice"])
switch(href_list["choice"])
diff --git a/code/modules/events/event.dm b/code/modules/events/event.dm
index 5311cb28b4..3af0e94982 100644
--- a/code/modules/events/event.dm
+++ b/code/modules/events/event.dm
@@ -123,12 +123,12 @@
end()
endedAt = world.time
- event_manager.active_events -= src
- event_manager.event_complete(src)
+ SSevents.active_events -= src
+ SSevents.event_complete(src)
/datum/event/New(var/datum/event_meta/EM)
// event needs to be responsible for this, as stuff like APLUs currently make their own events for curious reasons
- event_manager.active_events += src
+ SSevents.active_events += src
event_meta = EM
severity = event_meta.severity
diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm
index e4c728f1df..1097cf452f 100644
--- a/code/modules/events/event_manager.dm
+++ b/code/modules/events/event_manager.dm
@@ -1,4 +1,5 @@
-/datum/event_manager
+//The UI portion. Should probably be made its own thing/made into a NanoUI thing later.
+/datum/controller/subsystem/events
var/window_x = 700
var/window_y = 600
var/report_at_round_end = 0
@@ -8,6 +9,7 @@
var/row_options3 = " width='150px'"
var/datum/event_container/selected_event_container = null
+<<<<<<< HEAD
var/list/datum/event/active_events = list()
var/list/datum/event/finished_events = list()
@@ -51,6 +53,9 @@
EC.next_event_time += delay
/datum/event_manager/proc/Interact(var/mob/living/user)
+=======
+/datum/controller/subsystem/events/proc/Interact(var/mob/living/user)
+>>>>>>> 46c79c7... [READY]Makes a bunch of processes subsystems instead (#5814
var/html = GetInteractWindow()
@@ -58,27 +63,7 @@
popup.set_content(html)
popup.open()
-/datum/event_manager/proc/RoundEnd()
- if(!report_at_round_end)
- return
-
- world << "
Random Events This Round:"
- for(var/datum/event/E in active_events|finished_events)
- var/datum/event_meta/EM = E.event_meta
- if(EM.name == "Nothing")
- continue
- var/message = "'[EM.name]' began at [worldtime2stationtime(E.startedAt)] "
- if(E.isRunning)
- message += "and is still running."
- else
- if(E.endedAt - E.startedAt > MinutesToTicks(5)) // Only mention end time if the entire duration was more than 5 minutes
- message += "and ended at [worldtime2stationtime(E.endedAt)]."
- else
- message += "and ran to completion."
-
- world << message
-
-/datum/event_manager/proc/GetInteractWindow()
+/datum/controller/subsystem/events/proc/GetInteractWindow()
var/html = "Refresh"
html += "Pause All - [config.allow_random_events ? "Pause" : "Resume"]"
@@ -187,11 +172,10 @@
return html
-/datum/event_manager/Topic(href, href_list)
+/datum/controller/subsystem/events/Topic(href, href_list)
if(..())
return
-
if(href_list["toggle_report"])
report_at_round_end = !report_at_round_end
log_and_message_admins("has [report_at_round_end ? "enabled" : "disabled"] the round end event report.")
@@ -284,7 +268,7 @@
Interact(usr)
-/client/proc/forceEvent(var/type in event_manager.allEvents)
+/client/proc/forceEvent(var/type in SSevents.allEvents)
set name = "Trigger Event (Debug Only)"
set category = "Debug"
@@ -298,7 +282,5 @@
/client/proc/event_manager_panel()
set name = "Event Manager Panel"
set category = "Admin"
- if(event_manager)
- event_manager.Interact(usr)
+ SSevents.Interact(usr)
feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
- return
diff --git a/code/modules/food/food.dm b/code/modules/food/food.dm
index 330dfaab7e..1e91e48ae0 100644
--- a/code/modules/food/food.dm
+++ b/code/modules/food/food.dm
@@ -11,8 +11,8 @@
var/list/center_of_mass = list() // Used for table placement
-/obj/item/weapon/reagent_containers/food/New()
- ..()
+/obj/item/weapon/reagent_containers/food/Initialize()
+ . = ..()
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)
diff --git a/code/modules/food/food/cans.dm b/code/modules/food/food/cans.dm
index f67af64c3b..60d748ff18 100644
--- a/code/modules/food/food/cans.dm
+++ b/code/modules/food/food/cans.dm
@@ -11,8 +11,8 @@
icon_state = "cola"
center_of_mass = list("x"=16, "y"=10)
-/obj/item/weapon/reagent_containers/food/drinks/cans/cola/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/cans/cola/Initialize()
+ . = ..()
reagents.add_reagent("cola", 30)
/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle
@@ -21,8 +21,8 @@
icon_state = "waterbottle"
center_of_mass = list("x"=15, "y"=8)
-/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle/Initialize()
+ . = ..()
reagents.add_reagent("water", 30)
/obj/item/weapon/reagent_containers/food/drinks/cans/space_mountain_wind
@@ -41,8 +41,8 @@
icon_state = "thirteen_loko"
center_of_mass = list("x"=16, "y"=8)
-/obj/item/weapon/reagent_containers/food/drinks/cans/thirteenloko/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/cans/thirteenloko/Initialize()
+ . = ..()
reagents.add_reagent("thirteenloko", 30)
/obj/item/weapon/reagent_containers/food/drinks/cans/dr_gibb
@@ -61,8 +61,8 @@
icon_state = "starkist"
center_of_mass = list("x"=16, "y"=10)
-/obj/item/weapon/reagent_containers/food/drinks/cans/starkist/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/cans/starkist/Initialize()
+ . = ..()
reagents.add_reagent("brownstar", 30)
/obj/item/weapon/reagent_containers/food/drinks/cans/space_up
@@ -111,8 +111,8 @@
icon_state = "tonic"
center_of_mass = list("x"=16, "y"=10)
-/obj/item/weapon/reagent_containers/food/drinks/cans/tonic/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/cans/tonic/Initialize()
+ . = ..()
reagents.add_reagent("tonic", 50)
/obj/item/weapon/reagent_containers/food/drinks/cans/sodawater
@@ -121,8 +121,8 @@
icon_state = "sodawater"
center_of_mass = list("x"=16, "y"=10)
-/obj/item/weapon/reagent_containers/food/drinks/cans/sodawater/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/cans/sodawater/Initialize()
+ . = ..()
reagents.add_reagent("sodawater", 50)
/obj/item/weapon/reagent_containers/food/drinks/cans/gingerale
@@ -131,6 +131,6 @@
icon_state = "gingerale"
center_of_mass = list("x"=16, "y"=10)
-/obj/item/weapon/reagent_containers/food/drinks/cans/gingerale/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/cans/gingerale/Initialize()
+ . = ..()
reagents.add_reagent("gingerale", 30)
\ No newline at end of file
diff --git a/code/modules/food/food/condiment.dm b/code/modules/food/food/condiment.dm
index 8ab7f34c79..377679f778 100644
--- a/code/modules/food/food/condiment.dm
+++ b/code/modules/food/food/condiment.dm
@@ -118,12 +118,12 @@
desc = "Used in cooking various dishes."
icon_state = "enzyme"
-/obj/item/weapon/reagent_containers/food/condiment/enzyme/New()
- ..()
+/obj/item/weapon/reagent_containers/food/condiment/enzyme/Initialize()
+ . = ..()
reagents.add_reagent("enzyme", 50)
-/obj/item/weapon/reagent_containers/food/condiment/sugar/New()
- ..()
+/obj/item/weapon/reagent_containers/food/condiment/sugar/Initialize()
+ . = ..()
reagents.add_reagent("sugar", 50)
/obj/item/weapon/reagent_containers/food/condiment/small
@@ -140,8 +140,8 @@
desc = "Salt. From space oceans, presumably."
icon_state = "saltshakersmall"
-/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker/New()
- ..()
+/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker/Initialize()
+ . = ..()
reagents.add_reagent("sodiumchloride", 20)
/obj/item/weapon/reagent_containers/food/condiment/small/peppermill
@@ -149,8 +149,8 @@
desc = "Often used to flavor food or make people sneeze."
icon_state = "peppermillsmall"
-/obj/item/weapon/reagent_containers/food/condiment/small/peppermill/New()
- ..()
+/obj/item/weapon/reagent_containers/food/condiment/small/peppermill/Initialize()
+ . = ..()
reagents.add_reagent("blackpepper", 20)
/obj/item/weapon/reagent_containers/food/condiment/small/sugar
@@ -158,8 +158,8 @@
desc = "Sweetness in a bottle"
icon_state = "sugarsmall"
-/obj/item/weapon/reagent_containers/food/condiment/small/sugar/New()
- ..()
+/obj/item/weapon/reagent_containers/food/condiment/small/sugar/Initialize()
+ . = ..()
reagents.add_reagent("sugar", 20)
/obj/item/weapon/reagent_containers/food/condiment/flour
@@ -171,8 +171,8 @@
/obj/item/weapon/reagent_containers/food/condiment/flour/on_reagent_change()
return
-/obj/item/weapon/reagent_containers/food/condiment/flour/New()
- ..()
+/obj/item/weapon/reagent_containers/food/condiment/flour/Initialize()
+ . = ..()
reagents.add_reagent("flour", 30)
src.pixel_x = rand(-10.0, 10)
src.pixel_y = rand(-10.0, 10)
diff --git a/code/modules/food/food/drinks.dm b/code/modules/food/food/drinks.dm
index af4dd0fb53..8ebfd39021 100644
--- a/code/modules/food/food/drinks.dm
+++ b/code/modules/food/food/drinks.dm
@@ -117,8 +117,8 @@
item_state = "carton"
center_of_mass = list("x"=16, "y"=9)
-/obj/item/weapon/reagent_containers/food/drinks/milk/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/milk/Initialize()
+ . = ..()
reagents.add_reagent("milk", 50)
/obj/item/weapon/reagent_containers/food/drinks/soymilk
@@ -127,8 +127,8 @@
icon_state = "soymilk"
item_state = "carton"
center_of_mass = list("x"=16, "y"=9)
-/obj/item/weapon/reagent_containers/food/drinks/soymilk/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/soymilk/Initialize()
+ . = ..()
reagents.add_reagent("soymilk", 50)
/obj/item/weapon/reagent_containers/food/drinks/smallmilk
@@ -138,8 +138,8 @@
icon_state = "mini-milk"
item_state = "carton"
center_of_mass = list("x"=16, "y"=9)
-/obj/item/weapon/reagent_containers/food/drinks/smallmilk/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/smallmilk/Initialize()
+ . = ..()
reagents.add_reagent("milk", 30)
/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk
@@ -149,8 +149,8 @@
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()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/smallchocmilk/Initialize()
+ . = ..()
reagents.add_reagent("chocolate_milk", 30)
/obj/item/weapon/reagent_containers/food/drinks/coffee
@@ -158,8 +158,8 @@
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()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/coffee/Initialize()
+ . = ..()
reagents.add_reagent("coffee", 30)
/obj/item/weapon/reagent_containers/food/drinks/tea
@@ -169,8 +169,8 @@
item_state = "coffee"
center_of_mass = list("x"=16, "y"=14)
-/obj/item/weapon/reagent_containers/food/drinks/tea/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/tea/Initialize()
+ . = ..()
reagents.add_reagent("tea", 30)
/obj/item/weapon/reagent_containers/food/drinks/ice
@@ -178,8 +178,8 @@
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()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/ice/Initialize()
+ . = ..()
reagents.add_reagent("ice", 30)
/obj/item/weapon/reagent_containers/food/drinks/h_chocolate
@@ -210,8 +210,8 @@
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/Initialize()
+ . = ..()
/obj/item/weapon/reagent_containers/food/drinks/sillycup/on_reagent_change()
..()
diff --git a/code/modules/food/food/drinks/bottle.dm b/code/modules/food/food/drinks/bottle.dm
index d3b5e5bc66..aad0c94f70 100644
--- a/code/modules/food/food/drinks/bottle.dm
+++ b/code/modules/food/food/drinks/bottle.dm
@@ -14,8 +14,8 @@
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()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/Initialize()
+ . = ..()
if(isGlass) unacidable = 1
/obj/item/weapon/reagent_containers/food/drinks/bottle/Destroy()
@@ -193,8 +193,8 @@
icon_state = "ginbottle"
center_of_mass = list("x"=16, "y"=4)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/gin/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/gin/Initialize()
+ . = ..()
reagents.add_reagent("gin", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey
@@ -203,8 +203,8 @@
icon_state = "whiskeybottle"
center_of_mass = list("x"=16, "y"=3)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey/Initialize()
+ . = ..()
reagents.add_reagent("whiskey", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey
@@ -213,8 +213,8 @@
icon_state = "whiskeybottle2"
center_of_mass = list("x"=16, "y"=3)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/specialwhiskey/Initialize()
+ . = ..()
reagents.add_reagent("specialwhiskey", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka
@@ -223,8 +223,8 @@
icon_state = "vodkabottle"
center_of_mass = list("x"=17, "y"=3)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka/Initialize()
+ . = ..()
reagents.add_reagent("vodka", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla
@@ -233,8 +233,8 @@
icon_state = "tequillabottle"
center_of_mass = list("x"=16, "y"=3)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/tequilla/Initialize()
+ . = ..()
reagents.add_reagent("tequilla", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing
@@ -243,8 +243,8 @@
icon_state = "bottleofnothing"
center_of_mass = list("x"=17, "y"=5)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing/Initialize()
+ . = ..()
reagents.add_reagent("nothing", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/patron
@@ -253,8 +253,8 @@
icon_state = "patronbottle"
center_of_mass = list("x"=16, "y"=6)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/patron/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/patron/Initialize()
+ . = ..()
reagents.add_reagent("patron", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/rum
@@ -263,8 +263,8 @@
icon_state = "rumbottle"
center_of_mass = list("x"=16, "y"=8)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/rum/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/rum/Initialize()
+ . = ..()
reagents.add_reagent("rum", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater
@@ -273,8 +273,8 @@
icon_state = "holyflask"
center_of_mass = list("x"=17, "y"=10)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater/Initialize()
+ . = ..()
reagents.add_reagent("holywater", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth
@@ -283,8 +283,8 @@
icon_state = "vermouthbottle"
center_of_mass = list("x"=17, "y"=3)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/vermouth/Initialize()
+ . = ..()
reagents.add_reagent("vermouth", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua
@@ -293,8 +293,8 @@
icon_state = "kahluabottle"
center_of_mass = list("x"=17, "y"=3)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/kahlua/Initialize()
+ . = ..()
reagents.add_reagent("kahlua", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager
@@ -303,8 +303,8 @@
icon_state = "goldschlagerbottle"
center_of_mass = list("x"=15, "y"=3)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager/Initialize()
+ . = ..()
reagents.add_reagent("goldschlager", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac
@@ -313,8 +313,8 @@
icon_state = "cognacbottle"
center_of_mass = list("x"=16, "y"=6)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/cognac/Initialize()
+ . = ..()
reagents.add_reagent("cognac", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/wine
@@ -323,8 +323,8 @@
icon_state = "winebottle"
center_of_mass = list("x"=16, "y"=4)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/wine/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/wine/Initialize()
+ . = ..()
reagents.add_reagent("wine", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe
@@ -333,8 +333,8 @@
icon_state = "absinthebottle"
center_of_mass = list("x"=16, "y"=6)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/Initialize()
+ . = ..()
reagents.add_reagent("absinthe", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor
@@ -343,8 +343,8 @@
icon_state = "alco-green" //Placeholder.
center_of_mass = list("x"=16, "y"=6)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/melonliquor/Initialize()
+ . = ..()
reagents.add_reagent("melonliquor", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao
@@ -353,8 +353,8 @@
icon_state = "alco-blue" //Placeholder.
center_of_mass = list("x"=16, "y"=6)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/bluecuracao/Initialize()
+ . = ..()
reagents.add_reagent("bluecuracao", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine
@@ -363,8 +363,8 @@
icon_state = "grenadinebottle"
center_of_mass = list("x"=16, "y"=6)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/grenadine/Initialize()
+ . = ..()
reagents.add_reagent("grenadine", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/cola
@@ -373,8 +373,8 @@
icon_state = "colabottle"
center_of_mass = list("x"=16, "y"=6)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/cola/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/cola/Initialize()
+ . = ..()
reagents.add_reagent("cola", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/space_up
@@ -403,8 +403,8 @@
icon_state = "pwinebottle"
center_of_mass = list("x"=16, "y"=4)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/pwine/Initialize()
+ . = ..()
reagents.add_reagent("pwine", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew
@@ -413,8 +413,8 @@
icon_state = "redeemersbrew"
center_of_mass = list("x"=16, "y"=3)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/redeemersbrew/Initialize()
+ . = ..()
reagents.add_reagent("unathiliquor", 100)
//////////////////////////JUICES AND STUFF ///////////////////////
@@ -427,8 +427,8 @@
center_of_mass = list("x"=16, "y"=7)
isGlass = 0
-/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice/Initialize()
+ . = ..()
reagents.add_reagent("orangejuice", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice
@@ -439,8 +439,8 @@
center_of_mass = list("x"=16, "y"=7)
isGlass = 0
-/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/applejuice/Initialize()
+ . = ..()
reagents.add_reagent("applejuice", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/milk
@@ -451,8 +451,8 @@
center_of_mass = list("x"=16, "y"=9)
isGlass = 0
-/obj/item/weapon/reagent_containers/food/drinks/bottle/milk/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/milk/Initialize()
+ . = ..()
reagents.add_reagent("milk", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/cream
@@ -463,8 +463,8 @@
center_of_mass = list("x"=16, "y"=8)
isGlass = 0
-/obj/item/weapon/reagent_containers/food/drinks/bottle/cream/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/cream/Initialize()
+ . = ..()
reagents.add_reagent("cream", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice
@@ -475,8 +475,8 @@
center_of_mass = list("x"=16, "y"=8)
isGlass = 0
-/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/tomatojuice/Initialize()
+ . = ..()
reagents.add_reagent("tomatojuice", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice
@@ -487,8 +487,8 @@
center_of_mass = list("x"=16, "y"=8)
isGlass = 0
-/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/limejuice/Initialize()
+ . = ..()
reagents.add_reagent("limejuice", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice
@@ -499,8 +499,8 @@
center_of_mass = list("x"=16, "y"=8)
isGlass = 0
-/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/lemonjuice/Initialize()
+ . = ..()
reagents.add_reagent("lemonjuice", 100)
//Small bottles
@@ -516,8 +516,8 @@
icon_state = "beer"
center_of_mass = list("x"=16, "y"=12)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/small/beer/Initialize()
+ . = ..()
reagents.add_reagent("beer", 30)
/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale
@@ -527,8 +527,8 @@
item_state = "beer"
center_of_mass = list("x"=16, "y"=10)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/small/ale/Initialize()
+ . = ..()
reagents.add_reagent("ale", 30)
/obj/item/weapon/reagent_containers/food/drinks/bottle/sake
@@ -537,8 +537,8 @@
icon_state = "sakebottle"
center_of_mass = list("x"=16, "y"=3)
-/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/sake/Initialize()
+ . = ..()
reagents.add_reagent("sake", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne
@@ -546,6 +546,6 @@
desc = "For those special occassions."
icon_state = "champagne"
-/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/bottle/champagne/Initialize()
+ . = ..()
reagents.add_reagent("champagne", 100)
\ No newline at end of file
diff --git a/code/modules/food/food/drinks/drinkingglass.dm b/code/modules/food/food/drinks/drinkingglass.dm
index b8183fd1fc..7324dc8ad8 100644
--- a/code/modules/food/food/drinks/drinkingglass.dm
+++ b/code/modules/food/food/drinks/drinkingglass.dm
@@ -141,8 +141,8 @@
volume = 100
matter = list("plastic" = 2000)
-/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/Initialize()
+ . = ..()
icon_state = pick("fitness-cup_black", "fitness-cup_red", "fitness-cup_black")
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/on_reagent_change()
@@ -169,8 +169,8 @@
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake
name = "protein shake"
-/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake/New()
- ..()
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/fitnessflask/proteinshake/Initialize()
+ . = ..()
reagents.add_reagent("nutriment", 30)
reagents.add_reagent("iron", 10)
reagents.add_reagent("protein", 15)
diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm
index ce2dd8e791..64c94898de 100644
--- a/code/modules/food/food/snacks.dm
+++ b/code/modules/food/food/snacks.dm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
//Food items that are eaten normally and don't leave anything behind.
/obj/item/weapon/reagent_containers/food/snacks
name = "snack"
@@ -3873,4 +3874,3867 @@
..()
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/Initialize()
+ . = ..()
+ if(nutriment_amt)
+ reagents.add_reagent("nutriment",nutriment_amt,nutriment_desc)
+
+/obj/item/weapon/reagent_containers/food/snacks/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ bitesize = 3
+
+/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry/Initialize()
+ . = ..()
+ reagents.add_reagent("cherryjelly", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ bitesize = 2
+
+/obj/item/weapon/reagent_containers/food/snacks/jellyburger/slime/Initialize()
+ . = ..()
+ reagents.add_reagent("slimejelly", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/jellyburger/cherry/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ bitesize = 3
+
+/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime/Initialize()
+ . = ..()
+ reagents.add_reagent("slimejelly", 5)
+
+/obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+
+/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/Initialize()
+ . = ..()
+
+/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/Initialize()
+ . = ..()
+
+/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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+
+// 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/Initialize()
+ . = ..()
+
+/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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ 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/Initialize()
+ . = ..()
+ reagents.add_reagent("nutriment", 6)
+ reagents.add_reagent("protein", 4)
+>>>>>>> 46c79c7... [READY]Makes a bunch of processes subsystems instead (#5814
bitesize = 3
\ No newline at end of file
diff --git a/code/modules/food/food/snacks/meat.dm b/code/modules/food/food/snacks/meat.dm
index d6ecacea48..9d472b8c34 100644
--- a/code/modules/food/food/snacks/meat.dm
+++ b/code/modules/food/food/snacks/meat.dm
@@ -6,8 +6,8 @@
filling_color = "#FF1C1C"
center_of_mass = list("x"=16, "y"=14)
-/obj/item/weapon/reagent_containers/food/snacks/meat/New()
- ..()
+/obj/item/weapon/reagent_containers/food/snacks/meat/Initialize()
+ . = ..()
reagents.add_reagent("protein", 9)
src.bitesize = 3
diff --git a/code/modules/food/glass/bottle.dm b/code/modules/food/glass/bottle.dm
index fcf618c201..7396076892 100644
--- a/code/modules/food/glass/bottle.dm
+++ b/code/modules/food/glass/bottle.dm
@@ -27,8 +27,8 @@
..()
update_icon()
-/obj/item/weapon/reagent_containers/glass/bottle/New()
- ..()
+/obj/item/weapon/reagent_containers/glass/bottle/Initialize()
+ . = ..()
if(!icon_state)
icon_state = "bottle-[rand(1,4)]"
diff --git a/code/modules/food/kitchen/smartfridge.dm b/code/modules/food/kitchen/smartfridge.dm
index d1b9381216..0213ef089b 100644
--- a/code/modules/food/kitchen/smartfridge.dm
+++ b/code/modules/food/kitchen/smartfridge.dm
@@ -216,7 +216,7 @@
overlays.Cut()
if(panel_open)
overlays += image(icon, icon_panel)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
return
if(wrenchable && default_unfasten_wrench(user, O, 20))
@@ -282,11 +282,11 @@
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)
+ SSnanoui.update_uis(src)
/obj/machinery/smartfridge/proc/vend(datum/stored_item/I)
I.get_product(get_turf(src))
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/smartfridge/attack_ai(mob/user as mob)
attack_hand(user)
@@ -321,7 +321,7 @@
if(items.len > 0)
data["contents"] = items
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.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)
@@ -331,7 +331,7 @@
if(..()) return 0
var/mob/user = usr
- var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main")
+ var/datum/nanoui/ui = SSnanoui.get_open_ui(user, src, "main")
src.add_fingerprint(user)
diff --git a/code/modules/food/recipe_dump.dm b/code/modules/food/recipe_dump.dm
index 19f7988826..a458a568cf 100644
--- a/code/modules/food/recipe_dump.dm
+++ b/code/modules/food/recipe_dump.dm
@@ -68,14 +68,14 @@
//Reagents can be resolved to nicer names as well
for(var/Rp in food_recipes)
for(var/rid in food_recipes[Rp]["Reagents"])
- var/datum/reagent/Rd = chemical_reagents_list[rid]
+ var/datum/reagent/Rd = SSchemistry.chemical_reagents[rid]
var/R_name = Rd.name
var/amt = food_recipes[Rp]["Reagents"][rid]
food_recipes[Rp]["Reagents"] -= rid
food_recipes[Rp]["Reagents"][R_name] = amt
for(var/Rp in drink_recipes)
for(var/rid in drink_recipes[Rp]["Reagents"])
- var/datum/reagent/Rd = chemical_reagents_list[rid]
+ var/datum/reagent/Rd = SSchemistry.chemical_reagents[rid]
var/R_name = Rd.name
var/amt = drink_recipes[Rp]["Reagents"][rid]
drink_recipes[Rp]["Reagents"] -= rid
diff --git a/code/modules/holodeck/HolodeckControl.dm b/code/modules/holodeck/HolodeckControl.dm
index ee33b66cba..4cce81a2a6 100644
--- a/code/modules/holodeck/HolodeckControl.dm
+++ b/code/modules/holodeck/HolodeckControl.dm
@@ -112,7 +112,7 @@
else
data["gravity"] = null
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "holodeck.tmpl", src.name, 400, 550)
ui.set_initial_data(data)
@@ -152,7 +152,7 @@
src.add_fingerprint(usr)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/computer/HolodeckControl/emag_act(var/remaining_charges, var/mob/user as mob)
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm
index 0118088b27..9ed2d836a6 100644
--- a/code/modules/hydroponics/seed.dm
+++ b/code/modules/hydroponics/seed.dm
@@ -437,7 +437,7 @@
for(var/x=1;x<=additional_chems;x++)
- var/new_chem = pick(chemical_reagents_list)
+ var/new_chem = pick(SSchemistry.chemical_reagents)
if(new_chem in banned_chems)
continue
banned_chems += new_chem
diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm
index 8d7ebdf314..4601f23484 100644
--- a/code/modules/hydroponics/seed_machines.dm
+++ b/code/modules/hydroponics/seed_machines.dm
@@ -162,7 +162,7 @@
data["hasGenetics"] = 0
data["sourceName"] = 0
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "botany_isolator.tmpl", "Lysis-isolation Centrifuge UI", 470, 450)
ui.set_initial_data(data)
@@ -292,7 +292,7 @@
else
data["loaded"] = 0
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "botany_editor.tmpl", "Bioballistic Delivery UI", 470, 450)
ui.set_initial_data(data)
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index 5e416755e0..42f7dece0c 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -20,7 +20,8 @@
var/adult_name
var/instance_num
-/mob/living/carbon/alien/New()
+/mob/living/carbon/alien/Initialize()
+ . = ..()
time_of_birth = world.time
@@ -37,8 +38,6 @@
gender = NEUTER
- ..()
-
/mob/living/carbon/alien/u_equip(obj/item/W as obj)
return
diff --git a/code/modules/mob/living/carbon/alien/diona/diona.dm b/code/modules/mob/living/carbon/alien/diona/diona.dm
index 5d497d0a08..3d09887f34 100644
--- a/code/modules/mob/living/carbon/alien/diona/diona.dm
+++ b/code/modules/mob/living/carbon/alien/diona/diona.dm
@@ -20,9 +20,8 @@
holder_type = /obj/item/weapon/holder/diona
var/obj/item/hat
-/mob/living/carbon/alien/diona/New()
-
- ..()
+/mob/living/carbon/alien/diona/Initialize()
+ . = ..()
species = all_species[SPECIES_DIONA]
add_language(LANGUAGE_ROOTGLOBAL)
add_language(LANGUAGE_GALCOM)
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index 7870c710c7..e39f66c479 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -9,7 +9,7 @@
health = 25
faction = "xeno"
-/mob/living/carbon/alien/larva/New()
- ..()
+/mob/living/carbon/alien/larva/Initialize()
+ . = ..()
add_language("Xenomorph") //Bonus language.
internal_organs |= new /obj/item/organ/internal/xenos/hivenode(src)
diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm
index 561dd0c139..a75deb25d0 100644
--- a/code/modules/mob/living/carbon/brain/brain.dm
+++ b/code/modules/mob/living/carbon/brain/brain.dm
@@ -10,45 +10,45 @@
icon_state = "brain1"
no_vore = TRUE //VOREStation Edit - PLEASE. lol.
- New()
- var/datum/reagents/R = new/datum/reagents(1000)
- reagents = R
- R.my_atom = src
- ..()
+/mob/living/carbon/brain/Initialize()
+ . = ..()
+ var/datum/reagents/R = new/datum/reagents(1000)
+ reagents = R
+ R.my_atom = src
- Destroy()
- if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting.
- if(stat!=DEAD) //If not dead.
- death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA
- ghostize() //Ghostize checks for key so nothing else is necessary.
- return ..()
+/mob/living/carbon/brain/Destroy()
+ if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting.
+ if(stat!=DEAD) //If not dead.
+ death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA
+ ghostize() //Ghostize checks for key so nothing else is necessary.
+ return ..()
- say_understands(var/other)//Goddamn is this hackish, but this say code is so odd
- if (istype(other, /mob/living/silicon/ai))
- if(!(container && istype(container, /obj/item/device/mmi)))
- return 0
- else
- return 1
- if (istype(other, /mob/living/silicon/decoy))
- if(!(container && istype(container, /obj/item/device/mmi)))
- return 0
- else
- return 1
- if (istype(other, /mob/living/silicon/pai))
- if(!(container && istype(container, /obj/item/device/mmi)))
- return 0
- else
- return 1
- if (istype(other, /mob/living/silicon/robot))
- if(!(container && istype(container, /obj/item/device/mmi)))
- return 0
- else
- return 1
- if (istype(other, /mob/living/carbon/human))
+/mob/living/carbon/brain/say_understands(var/other)//Goddamn is this hackish, but this say code is so odd
+ if (istype(other, /mob/living/silicon/ai))
+ if(!(container && istype(container, /obj/item/device/mmi)))
+ return 0
+ else
return 1
- if (istype(other, /mob/living/simple_mob/slime))
+ if (istype(other, /mob/living/silicon/decoy))
+ if(!(container && istype(container, /obj/item/device/mmi)))
+ return 0
+ else
return 1
- return ..()
+ if (istype(other, /mob/living/silicon/pai))
+ if(!(container && istype(container, /obj/item/device/mmi)))
+ return 0
+ else
+ return 1
+ if (istype(other, /mob/living/silicon/robot))
+ if(!(container && istype(container, /obj/item/device/mmi)))
+ return 0
+ else
+ return 1
+ if (istype(other, /mob/living/carbon/human))
+ return 1
+ if (istype(other, /mob/living/simple_mob/slime))
+ return 1
+ return ..()
/mob/living/carbon/brain/update_canmove()
if(in_contents_of(/obj/mecha) || istype(loc, /obj/item/device/mmi))
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 81b7deca18..9aa78d44cf 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -1,4 +1,5 @@
-/mob/living/carbon/New()
+/mob/living/carbon/Initialize()
+ . = ..()
//setup reagent holders
bloodstr = new/datum/reagents/metabolism/bloodstream(500, src)
ingested = new/datum/reagents/metabolism/ingested(500, src)
@@ -6,7 +7,6 @@
reagents = bloodstr
if (!default_language && species_language)
default_language = all_languages[species_language]
- ..()
/mob/living/carbon/Life()
..()
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index ac4a03189b..9af501a92e 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -20,8 +20,7 @@
var/active_regen = FALSE //Used for the regenerate proc in human_powers.dm
var/active_regen_delay = 300
-/mob/living/carbon/human/New(var/new_loc, var/new_species = null)
-
+/mob/living/carbon/human/Initialize(mapload, var/new_species = null)
if(!dna)
dna = new /datum/dna(null)
// Species name is handled by set_species()
@@ -42,7 +41,7 @@
human_mob_list |= src
- ..()
+ . = ..()
hide_underwear.Cut()
for(var/category in global_underwear.categories_by_name)
diff --git a/code/modules/mob/living/carbon/human/npcs.dm b/code/modules/mob/living/carbon/human/npcs.dm
index 0457c7b584..4c294a595e 100644
--- a/code/modules/mob/living/carbon/human/npcs.dm
+++ b/code/modules/mob/living/carbon/human/npcs.dm
@@ -5,6 +5,7 @@
worn_state = "punpun"
species_restricted = list("Monkey")
+<<<<<<< HEAD
/mob/living/carbon/human/monkey/punpun/New()
spawn(1)
// VoreStation Edit - Move Constructor inside Spawn
@@ -14,3 +15,11 @@
real_name = name
w_uniform = new /obj/item/clothing/under/punpun(src)
regenerate_icons()
+=======
+/mob/living/carbon/human/monkey/punpun/Initialize()
+ . = ..()
+ name = "Pun Pun"
+ real_name = name
+ w_uniform = new /obj/item/clothing/under/punpun(src)
+ regenerate_icons()
+>>>>>>> 46c79c7... [READY]Makes a bunch of processes subsystems instead (#5814
diff --git a/code/modules/mob/living/carbon/metroid/items.dm b/code/modules/mob/living/carbon/metroid/items.dm
index a290996f7e..62a99850e1 100644
--- a/code/modules/mob/living/carbon/metroid/items.dm
+++ b/code/modules/mob/living/carbon/metroid/items.dm
@@ -356,8 +356,8 @@
origin_tech = list(TECH_BIO = 4)
var/grown = 0
-/obj/item/weapon/reagent_containers/food/snacks/egg/slime/New()
- ..()
+/obj/item/weapon/reagent_containers/food/snacks/egg/slime/Initialize()
+ . = ..()
reagents.add_reagent("nutriment", 4)
reagents.add_reagent("slimejelly", 1)
spawn(rand(1200,1500))//the egg takes a while to "ripen"
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 1b3720dc33..ac2417a077 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -201,7 +201,7 @@
medicalActive1 = null
medicalActive2 = null
medical_cannotfind = 0
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
usr << "You reset your record-viewing software."
/mob/living/silicon/pai/cancel_camera()
diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm
index bef2c93403..85d98c1663 100644
--- a/code/modules/mob/living/silicon/pai/software.dm
+++ b/code/modules/mob/living/silicon/pai/software.dm
@@ -90,7 +90,7 @@ var/global/list/default_pai_software = list()
data["emotions"] = emotions
data["current_emotion"] = card.current_emotion
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "pai_interface.tmpl", "pAI Software Interface", 450, 600)
ui.set_initial_data(data)
diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm
index ebea6068e7..fdaa992816 100644
--- a/code/modules/mob/living/silicon/pai/software_modules.dm
+++ b/code/modules/mob/living/silicon/pai/software_modules.dm
@@ -36,7 +36,7 @@
data["prime"] = user.pai_law0
data["supplemental"] = user.pai_laws
- ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_directives.tmpl", "pAI Directives", 450, 600)
@@ -102,7 +102,7 @@
data["channels"] = channels
- ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
ui = new(user, user, id, "pai_radio.tmpl", "Radio Configuration", 300, 150)
ui.set_initial_data(data)
@@ -128,7 +128,7 @@
// This is dumb, but NanoUI breaks if it has no data to send
data["manifest"] = PDA_Manifest
- ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "crew_manifest.tmpl", "Crew Manifest", 450, 600)
@@ -178,7 +178,7 @@
data["messages"] = messages
- ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_messenger.tmpl", "Digital Messenger", 450, 600)
@@ -236,7 +236,7 @@
data["medical"] = M ? M.fields : null
data["could_not_find"] = user.medical_cannotfind
- ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_medrecords.tmpl", "Medical Records", 450, 600)
@@ -290,7 +290,7 @@
data["security"] = S ? S.fields : null
data["could_not_find"] = user.security_cannotfind
- ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_secrecords.tmpl", "Security Records", 450, 600)
@@ -340,7 +340,7 @@
data["progress_b"] = user.hackprogress % 10
data["aborted"] = user.hack_aborted
- ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_doorjack.tmpl", "Door Jack", 300, 150)
@@ -431,7 +431,7 @@
gases[++gases.len] = gas
data["gas"] = gases
- ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_atmosphere.tmpl", "Atmosphere Sensor", 350, 300)
@@ -503,7 +503,7 @@
data["frequency"] = format_frequency(user.sradio.frequency)
data["code"] = user.sradio.code
- ui = GLOB.nanomanager.try_update_ui(user, user, id, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, user, id, ui, data, force_open)
if(!ui)
// Don't copy-paste this unless you're making a pAI software module!
ui = new(user, user, id, "pai_signaller.tmpl", "Signaller", 320, 150)
diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm
index 6f26f5f519..6ad5f542a3 100644
--- a/code/modules/mob/logout.dm
+++ b/code/modules/mob/logout.dm
@@ -1,5 +1,5 @@
/mob/Logout()
- GLOB.nanomanager.user_logout(src) // this is used to clean up (remove) this user's Nano UIs
+ SSnanoui.user_logout(src) // this is used to clean up (remove) this user's Nano UIs
player_list -= src
update_client_z(null)
log_access_out(src)
diff --git a/code/modules/nano/interaction/remote.dm b/code/modules/nano/interaction/remote.dm
index 2e18386bde..8e6ded6c84 100644
--- a/code/modules/nano/interaction/remote.dm
+++ b/code/modules/nano/interaction/remote.dm
@@ -18,7 +18,7 @@
src.remoter_state = null
// Force an UI update before we go, ensuring that any windows we may have opened for the remote target closes.
- GLOB.nanomanager.update_uis(remote_target.nano_container())
+ SSnanoui.update_uis(remote_target.nano_container())
remote_target = null
return ..()
diff --git a/code/modules/nano/modules/alarm_monitor.dm b/code/modules/nano/modules/alarm_monitor.dm
index c5a851bacc..ec43035ed8 100644
--- a/code/modules/nano/modules/alarm_monitor.dm
+++ b/code/modules/nano/modules/alarm_monitor.dm
@@ -80,7 +80,7 @@
"lost_sources" = lost_sources.len ? sanitize(english_list(lost_sources, nothing_text = "", and_text = ", ")) : ""))
data["categories"] = categories
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "alarm_monitor.tmpl", "Alarm Monitoring Console", 800, 800, state = state)
ui.set_initial_data(data)
diff --git a/code/modules/nano/modules/atmos_control.dm b/code/modules/nano/modules/atmos_control.dm
index c8c5e8b613..3924f65af7 100644
--- a/code/modules/nano/modules/atmos_control.dm
+++ b/code/modules/nano/modules/atmos_control.dm
@@ -48,7 +48,7 @@
data["alarms"] = alarms
data["map_levels"] = using_map.get_map_levels(T.z)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "atmos_control.tmpl", src.name, 625, 625, state = state)
// adding a template with the key "mapContent" enables the map ui functionality
diff --git a/code/modules/nano/modules/crew_monitor.dm b/code/modules/nano/modules/crew_monitor.dm
index 4a721ab709..319da90715 100644
--- a/code/modules/nano/modules/crew_monitor.dm
+++ b/code/modules/nano/modules/crew_monitor.dm
@@ -25,7 +25,7 @@
for(var/z in (data["map_levels"] | T.z)) // Always show crew from the current Z even if we can't show a map
data["crewmembers"] += crew_repository.health_data(z)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "crew_monitor.tmpl", "Crew Monitoring Computer", 900, 800, state = state)
diff --git a/code/modules/nano/modules/human_appearance.dm b/code/modules/nano/modules/human_appearance.dm
index 33203944a1..3d790b1194 100644
--- a/code/modules/nano/modules/human_appearance.dm
+++ b/code/modules/nano/modules/human_appearance.dm
@@ -145,7 +145,7 @@
data["change_hair_color"] = can_change(APPEARANCE_HAIR_COLOR)
data["change_facial_hair_color"] = can_change(APPEARANCE_FACIAL_HAIR_COLOR)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "appearance_changer.tmpl", "[src]", 800, 450, state = state)
ui.set_initial_data(data)
diff --git a/code/modules/nano/modules/law_manager.dm b/code/modules/nano/modules/law_manager.dm
index 0b56c7b32a..7dec394257 100644
--- a/code/modules/nano/modules/law_manager.dm
+++ b/code/modules/nano/modules/law_manager.dm
@@ -176,7 +176,7 @@
data["channels"] = channels
data["law_sets"] = package_multiple_laws(data["isAdmin"] ? admin_laws : player_laws)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "law_manager.tmpl", sanitize("[src] - [owner]"), 800, is_malf(user) ? 600 : 400, state = state)
ui.set_initial_data(data)
diff --git a/code/modules/nano/modules/power_monitor.dm b/code/modules/nano/modules/power_monitor.dm
index af1e155530..ae5dc44f29 100644
--- a/code/modules/nano/modules/power_monitor.dm
+++ b/code/modules/nano/modules/power_monitor.dm
@@ -28,7 +28,7 @@
data["focus"] = focus.return_reading_data()
data["map_levels"] = using_map.get_map_levels(T.z)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "power_monitor.tmpl", "Power Monitoring Console", 800, 500, state = state)
// adding a template with the key "mapContent" enables the map ui functionality
diff --git a/code/modules/nano/modules/rcon.dm b/code/modules/nano/modules/rcon.dm
index 19d89a1500..1612b19812 100644
--- a/code/modules/nano/modules/rcon.dm
+++ b/code/modules/nano/modules/rcon.dm
@@ -38,7 +38,7 @@
data["hide_smes_details"] = hide_SMES_details
data["hide_breakers"] = hide_breakers
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "rcon.tmpl", "RCON Console", 600, 400, state = state)
ui.set_initial_data(data)
diff --git a/code/modules/nano/nanomanager.dm b/code/modules/nano/nanomanager.dm
index b1639f9194..afa779895a 100644
--- a/code/modules/nano/nanomanager.dm
+++ b/code/modules/nano/nanomanager.dm
@@ -1,38 +1,3 @@
-GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the manager for Nano UIs.
-
-// This is the window/UI manager for Nano UI
-// There should only ever be one (global) instance of nanomanger
-/datum/nanomanager
- // a list of current open /nanoui UIs, grouped by src_object and ui_key
- var/open_uis[0]
- // a list of current open /nanoui UIs, not grouped, for use in processing
- var/list/processing_uis = list()
- // a list of asset filenames which are to be sent to the client on user logon
- var/list/asset_files = list()
-
- /**
- * Create a new nanomanager instance.
- * This proc generates a list of assets which are to be sent to each client on connect
- *
- * @return /nanomanager new nanomanager object
- */
-/datum/nanomanager/New()
- var/list/nano_asset_dirs = list(\
- "nano/css/",\
- "nano/images/",\
- "nano/js/",\
- "nano/templates/"\
- )
-
- var/list/filenames = null
- for (var/path in nano_asset_dirs)
- filenames = flist(path)
- for(var/filename in filenames)
- if(copytext(filename, length(filename)) != "/") // filenames which end in "/" are actually directories, which we want to ignore
- if(fexists(path + filename))
- asset_files.Add(fcopy_rsc(path + filename)) // add this file to asset_files for sending to clients when they connect
-
- return
/**
* Get an open /nanoui ui for the current user, src_object and ui_key and try to update it with data
@@ -46,7 +11,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
*
* @return /nanoui Returns the found ui, for null if none exists
*/
-/datum/nanomanager/proc/try_update_ui(var/mob/user, src_object, ui_key, var/datum/nanoui/ui, data, var/force_open = 0)
+/datum/controller/subsystem/nanoui/proc/try_update_ui(var/mob/user, src_object, ui_key, var/datum/nanoui/ui, data, var/force_open = 0)
if (isnull(ui)) // no ui has been passed, so we'll search for one
{
ui = get_open_ui(user, src_object, ui_key)
@@ -71,7 +36,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
*
* @return /nanoui Returns the found ui, or null if none exists
*/
-/datum/nanomanager/proc/get_open_ui(var/mob/user, src_object, ui_key)
+/datum/controller/subsystem/nanoui/proc/get_open_ui(var/mob/user, src_object, ui_key)
var/src_object_key = "\ref[src_object]"
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
//testing("nanomanager/get_open_ui mob [user.name] [src_object:name] [ui_key] - there are no uis open")
@@ -94,7 +59,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
*
* @return int The number of uis updated
*/
-/datum/nanomanager/proc/update_uis(src_object)
+/datum/controller/subsystem/nanoui/proc/update_uis(src_object)
var/src_object_key = "\ref[src_object]"
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
return 0
@@ -114,7 +79,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
*
* @return int The number of uis close
*/
-/datum/nanomanager/proc/close_uis(src_object)
+/datum/controller/subsystem/nanoui/proc/close_uis(src_object)
var/src_object_key = "\ref[src_object]"
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
return 0
@@ -136,7 +101,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
*
* @return int The number of uis updated
*/
-/datum/nanomanager/proc/update_user_uis(var/mob/user, src_object = null, ui_key = null)
+/datum/controller/subsystem/nanoui/proc/update_user_uis(var/mob/user, src_object = null, ui_key = null)
if (isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0)
return 0 // has no open uis
@@ -157,7 +122,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
*
* @return int The number of uis closed
*/
-/datum/nanomanager/proc/close_user_uis(var/mob/user, src_object = null, ui_key = null)
+/datum/controller/subsystem/nanoui/proc/close_user_uis(var/mob/user, src_object = null, ui_key = null)
if (isnull(user.open_uis) || !istype(user.open_uis, /list) || open_uis.len == 0)
//testing("nanomanager/close_user_uis mob [user.name] has no open uis")
return 0 // has no open uis
@@ -180,7 +145,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
*
* @return nothing
*/
-/datum/nanomanager/proc/ui_opened(var/datum/nanoui/ui)
+/datum/controller/subsystem/nanoui/proc/ui_opened(var/datum/nanoui/ui)
var/src_object_key = "\ref[ui.src_object]"
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
open_uis[src_object_key] = list(ui.ui_key = list())
@@ -201,7 +166,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
*
* @return int 0 if no ui was removed, 1 if removed successfully
*/
-/datum/nanomanager/proc/ui_closed(var/datum/nanoui/ui)
+/datum/controller/subsystem/nanoui/proc/ui_closed(var/datum/nanoui/ui)
var/src_object_key = "\ref[ui.src_object]"
if (isnull(open_uis[src_object_key]) || !istype(open_uis[src_object_key], /list))
return 0 // wasn't open
@@ -228,7 +193,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
*/
//
-/datum/nanomanager/proc/user_logout(var/mob/user)
+/datum/controller/subsystem/nanoui/proc/user_logout(var/mob/user)
//testing("nanomanager/user_logout user [user.name]")
return close_user_uis(user)
@@ -241,7 +206,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
*
* @return nothing
*/
-/datum/nanomanager/proc/user_transferred(var/mob/oldMob, var/mob/newMob)
+/datum/controller/subsystem/nanoui/proc/user_transferred(var/mob/oldMob, var/mob/newMob)
//testing("nanomanager/user_transferred from mob [oldMob.name] to mob [newMob.name]")
if (!oldMob || isnull(oldMob.open_uis) || !istype(oldMob.open_uis, /list) || open_uis.len == 0)
//testing("nanomanager/user_transferred mob [oldMob.name] has no open uis")
@@ -267,7 +232,7 @@ GLOBAL_DATUM_INIT(nanomanager, /datum/nanomanager, new) // NanoManager, the mana
* @return nothing
*/
-/datum/nanomanager/proc/send_resources(client)
+/datum/controller/subsystem/nanoui/proc/send_resources(client)
for(var/file in asset_files)
client << browse_rsc(file) // send the file to the client
diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm
index 4e4dd6af5b..43f98e3361 100644
--- a/code/modules/nano/nanoui.dm
+++ b/code/modules/nano/nanoui.dm
@@ -412,7 +412,7 @@ nanoui is used to open and update nano browser uis
winset(user, "mapwindow.map", "focus=true") // return keyboard focus to map
on_close_winset()
//onclose(user, window_id)
- GLOB.nanomanager.ui_opened(src)
+ SSnanoui.ui_opened(src)
/**
* Reinitialise this UI, potentially with a different template and/or initial data
@@ -433,7 +433,7 @@ nanoui is used to open and update nano browser uis
*/
/datum/nanoui/proc/close()
is_auto_updating = 0
- GLOB.nanomanager.ui_closed(src)
+ SSnanoui.ui_closed(src)
user << browse(null, "window=[window_id]")
for(var/datum/nanoui/child in children)
child.close()
@@ -492,7 +492,7 @@ nanoui is used to open and update nano browser uis
map_update = 1
if ((src_object && src_object.Topic(href, href_list, state)) || map_update)
- GLOB.nanomanager.update_uis(src_object) // update all UIs attached to src_object
+ SSnanoui.update_uis(src_object) // update all UIs attached to src_object
/**
* Process this UI, updating the entire UI or just the status (aka visibility)
diff --git a/code/modules/overmap/ships/computers/engine_control.dm b/code/modules/overmap/ships/computers/engine_control.dm
index 85ac9cf993..15870339e3 100644
--- a/code/modules/overmap/ships/computers/engine_control.dm
+++ b/code/modules/overmap/ships/computers/engine_control.dm
@@ -52,7 +52,7 @@
data["engines_info"] = enginfo
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "engines_control.tmpl", "[linked.name] Engines Control", 380, 530)
ui.set_initial_data(data)
diff --git a/code/modules/overmap/ships/computers/helm.dm b/code/modules/overmap/ships/computers/helm.dm
index 58048bac5f..307cbaeec5 100644
--- a/code/modules/overmap/ships/computers/helm.dm
+++ b/code/modules/overmap/ships/computers/helm.dm
@@ -104,7 +104,7 @@
data["locations"] = locations
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "helm.tmpl", "[linked.name] Helm Control", 380, 530)
ui.set_initial_data(data)
diff --git a/code/modules/overmap/ships/computers/shuttle.dm b/code/modules/overmap/ships/computers/shuttle.dm
index 8d6ecefcc7..09bf47512d 100644
--- a/code/modules/overmap/ships/computers/shuttle.dm
+++ b/code/modules/overmap/ships/computers/shuttle.dm
@@ -103,7 +103,7 @@
"can_force" = can_go && shuttle.can_force(),
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "shuttle_control_console_exploration.tmpl", "[shuttle_tag] Shuttle Control", 470, 310)
diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm
index 8a2940b90d..add0d03d22 100644
--- a/code/modules/paperwork/faxmachine.dm
+++ b/code/modules/paperwork/faxmachine.dm
@@ -57,7 +57,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
data["cooldown"] = sendcooldown
data["destination"] = destination
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "fax.tmpl", src.name, 500, 500)
ui.set_initial_data(data)
@@ -116,7 +116,7 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins
if(href_list["logout"])
authenticated = 0
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/photocopier/faxmachine/proc/sendfax(var/destination)
if(stat & (BROKEN|NOPOWER))
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index c5c087f7d8..24ad752845 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -50,7 +50,7 @@
else
data["isSilicon"] = null
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "photocopier.tmpl", src.name, 300, 250)
ui.set_initial_data(data)
@@ -118,7 +118,7 @@
toner -= 5
sleep(15)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/photocopier/attackby(obj/item/O as obj, mob/user as mob)
if(istype(O, /obj/item/weapon/paper) || istype(O, /obj/item/weapon/photo) || istype(O, /obj/item/weapon/paper_bundle))
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 7aa085c198..7b464f6f50 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -822,7 +822,7 @@
)
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm
index bb808a49e2..2eadfc520a 100644
--- a/code/modules/power/generator.dm
+++ b/code/modules/power/generator.dm
@@ -211,7 +211,7 @@
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 6563cb7fdb..5e4c2e6207 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -327,7 +327,7 @@
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "pacman.tmpl", src.name, 500, 560)
ui.set_initial_data(data)
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index 2e97d735ba..ad76cb061f 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -328,7 +328,7 @@
data["outputting"] = 0 // smes is not outputting
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index ebf59a2d40..e436497fc5 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -333,7 +333,7 @@
data["ambient_pressure"] = round(env.return_pressure())
data["detonating"] = grav_pulling
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "supermatter_crystal.tmpl", "Supermatter Crystal", 500, 300)
ui.set_initial_data(data)
diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm
index 71566d74e8..dbc90a634d 100644
--- a/code/modules/power/turbine.dm
+++ b/code/modules/power/turbine.dm
@@ -365,7 +365,7 @@
data["temp"] = compressor.gas_contained.temperature
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm
index ab83fbe8a0..2d906381d1 100644
--- a/code/modules/reagents/Chemistry-Holder.dm
+++ b/code/modules/reagents/Chemistry-Holder.dm
@@ -12,27 +12,24 @@
my_atom = A
//I dislike having these here but map-objects are initialised before world/New() is called. >_>
- if(!chemical_reagents_list)
+ if(!SSchemistry.chemical_reagents)
//Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id
var/paths = typesof(/datum/reagent) - /datum/reagent
- chemical_reagents_list = list()
+ SSchemistry.chemical_reagents = list()
for(var/path in paths)
var/datum/reagent/D = new path()
if(!D.name)
continue
- chemical_reagents_list[D.id] = D
+ SSchemistry.chemical_reagents[D.id] = D
/datum/reagents/Destroy()
- . = ..()
- if(chemistryProcess)
- chemistryProcess.active_holders -= src
-
+ STOP_PROCESSING(SSchemistry, src)
for(var/datum/reagent/R in reagent_list)
qdel(R)
- reagent_list.Cut()
reagent_list = null
if(my_atom && my_atom.reagents == src)
my_atom.reagents = null
+ return ..()
/* Internal procs */
@@ -80,17 +77,14 @@
return
/datum/reagents/proc/handle_reactions()
- if(chemistryProcess)
- chemistryProcess.mark_for_update(src)
+ START_PROCESSING(SSchemistry, src)
//returns 1 if the holder should continue reactiong, 0 otherwise.
-/datum/reagents/proc/process_reactions()
- if(!my_atom) // No reactions in temporary holders
- return 0
- if(!my_atom.loc) //No reactions inside GC'd containers
- return 0
+/datum/reagents/process()
+ if(QDELETED(my_atom)) //No container, no reaction.
+ return PROCESS_KILL
if(my_atom.flags & NOREACT) // No reactions here
- return 0
+ return PROCESS_KILL
var/reaction_occured
var/list/effect_reactions = list()
@@ -100,7 +94,7 @@
//need to rebuild this to account for chain reactions
for(var/datum/reagent/R in reagent_list)
- eligible_reactions |= chemical_reactions_list[R.id]
+ eligible_reactions |= SSchemistry.chemical_reactions[R.id]
for(var/datum/chemical_reaction/C in eligible_reactions)
if(C.can_happen(src) && C.process(src))
@@ -116,7 +110,8 @@
C.post_reaction(src)
update_total()
- return reaction_occured
+ if(!reaction_occured)
+ return PROCESS_KILL
/* Holder-to-chemical */
@@ -138,7 +133,7 @@
if(my_atom)
my_atom.on_reagent_change()
return 1
- var/datum/reagent/D = chemical_reagents_list[id]
+ var/datum/reagent/D = SSchemistry.chemical_reagents[id]
if(D)
var/datum/reagent/R = new D.type()
reagent_list += R
@@ -152,7 +147,7 @@
my_atom.on_reagent_change()
return 1
else
- warning("[my_atom] attempted to add a reagent called '[id]' which doesn't exist. ([usr])")
+ crash_with("[my_atom] attempted to add a reagent called '[id]' which doesn't exist. ([usr])")
return 0
/datum/reagents/proc/remove_reagent(var/id, var/amount, var/safety = 0)
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 65c5d4c783..5a893c8bb1 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -134,7 +134,7 @@
data["bottleSpritesAmount"] = list(1, 2, 3, 4) //how many bottle sprites there are. Sprites are taken from chemical.dmi and can be found in nano/images/pill.png
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "chem_master.tmpl", src.name, 575, 400)
ui.set_initial_data(data)
@@ -282,7 +282,7 @@
else if(href_list["bottle_sprite"])
bottlesprite = href_list["bottle_sprite"]
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/chem_master/attack_ai(mob/user as mob)
return src.attack_hand(user)
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index ce7227ce46..21775ea17e 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -1,13 +1,4 @@
-//Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent id
-/proc/initialize_chemical_reagents()
- var/paths = typesof(/datum/reagent) - /datum/reagent
- chemical_reagents_list = list()
- for(var/path in paths)
- var/datum/reagent/D = new path()
- if(!D.name)
- continue
- chemical_reagents_list[D.id] = D
/datum/reagent
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 8948e37b3b..a822ae3555 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -1,22 +1,3 @@
-
-//Chemical Reactions - Initialises all /datum/chemical_reaction into a list
-// It is filtered into multiple lists within a list.
-// For example:
-// chemical_reaction_list["phoron"] is a list of all reactions relating to phoron
-// Note that entries in the list are NOT duplicated. So if a reaction pertains to
-// more than one chemical it will still only appear in only one of the sublists.
-/proc/initialize_chemical_reactions()
- var/paths = typesof(/datum/chemical_reaction) - /datum/chemical_reaction
- chemical_reactions_list = list()
-
- for(var/path in paths)
- var/datum/chemical_reaction/D = new path()
- if(D.required_reagents && D.required_reagents.len)
- var/reagent_id = D.required_reagents[1]
- if(!chemical_reactions_list[reagent_id])
- chemical_reactions_list[reagent_id] = list()
- chemical_reactions_list[reagent_id] += D
-
//helper that ensures the reaction rate holds after iterating
//Ex. REACTION_RATE(0.3) means that 30% of the reagents will react each chemistry tick (~2 seconds by default).
#define REACTION_RATE(rate) (1.0 - (1.0-rate)**(1.0/PROCESS_REACTION_ITER))
diff --git a/code/modules/reagents/dispenser/cartridge.dm b/code/modules/reagents/dispenser/cartridge.dm
index 3a129d4872..70142fabd8 100644
--- a/code/modules/reagents/dispenser/cartridge.dm
+++ b/code/modules/reagents/dispenser/cartridge.dm
@@ -14,11 +14,11 @@
var/spawn_reagent = null
var/label = ""
-/obj/item/weapon/reagent_containers/chem_disp_cartridge/New()
- ..()
+/obj/item/weapon/reagent_containers/chem_disp_cartridge/Initialize()
+ . = ..()
if(spawn_reagent)
reagents.add_reagent(spawn_reagent, volume)
- var/datum/reagent/R = chemical_reagents_list[spawn_reagent]
+ var/datum/reagent/R = SSchemistry.chemical_reagents[spawn_reagent]
setLabel(R.name)
/obj/item/weapon/reagent_containers/chem_disp_cartridge/examine(mob/user)
diff --git a/code/modules/reagents/dispenser/cartridge_spawn.dm b/code/modules/reagents/dispenser/cartridge_spawn.dm
index 730e191891..ba9b727047 100644
--- a/code/modules/reagents/dispenser/cartridge_spawn.dm
+++ b/code/modules/reagents/dispenser/cartridge_spawn.dm
@@ -1,4 +1,4 @@
-/client/proc/spawn_chemdisp_cartridge(size in list("small", "medium", "large"), reagent in chemical_reagents_list)
+/client/proc/spawn_chemdisp_cartridge(size in list("small", "medium", "large"), reagent in SSchemistry.chemical_reagents)
set name = "Spawn Chemical Dispenser Cartridge"
set category = "Admin"
@@ -8,6 +8,6 @@
if("medium") C = new /obj/item/weapon/reagent_containers/chem_disp_cartridge/medium(usr.loc)
if("large") C = new /obj/item/weapon/reagent_containers/chem_disp_cartridge(usr.loc)
C.reagents.add_reagent(reagent, C.volume)
- var/datum/reagent/R = chemical_reagents_list[reagent]
+ var/datum/reagent/R = SSchemistry.chemical_reagents[reagent]
C.setLabel(R.name)
log_admin("[key_name(usr)] spawned a [size] reagent container containing [reagent] at ([usr.x],[usr.y],[usr.z])")
diff --git a/code/modules/reagents/dispenser/dispenser2.dm b/code/modules/reagents/dispenser/dispenser2.dm
index 14f8fc9898..38c6cf39da 100644
--- a/code/modules/reagents/dispenser/dispenser2.dm
+++ b/code/modules/reagents/dispenser/dispenser2.dm
@@ -17,9 +17,8 @@
idle_power_usage = 100
anchored = 1
-/obj/machinery/chemical_dispenser/New()
- ..()
-
+/obj/machinery/chemical_dispenser/Initialize()
+ . = ..()
if(spawn_cartridges)
for(var/type in spawn_cartridges)
add_cartridge(new type(src))
@@ -56,12 +55,12 @@
C.loc = src
cartridges[C.label] = C
cartridges = sortAssoc(cartridges)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/chemical_dispenser/proc/remove_cartridge(label)
. = cartridges[label]
cartridges -= label
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/chemical_dispenser/attackby(obj/item/weapon/W, mob/user)
if(W.is_wrench())
@@ -107,7 +106,7 @@
user.drop_from_inventory(RC)
RC.loc = src
to_chat(user, "You set \the [RC] on \the [src].")
- GLOB.nanomanager.update_uis(src) // update all UIs attached to src
+ SSnanoui.update_uis(src) // update all UIs attached to src
else
return ..()
@@ -141,7 +140,7 @@
data["chemicals"] = chemicals
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "chem_disp.tmpl", ui_title, 390, 680)
ui.set_initial_data(data)
diff --git a/code/modules/reagents/dispenser/dispenser2_energy.dm b/code/modules/reagents/dispenser/dispenser2_energy.dm
index f540811c11..c889b2fe9d 100644
--- a/code/modules/reagents/dispenser/dispenser2_energy.dm
+++ b/code/modules/reagents/dispenser/dispenser2_energy.dm
@@ -13,7 +13,7 @@
process_tick = 15
. = 0
for(var/id in dispense_reagents)
- var/datum/reagent/R = chemical_reagents_list[id]
+ var/datum/reagent/R = SSchemistry.chemical_reagents[id]
if(!R)
crash_with("[src] at [x],[y],[z] failed to find reagent '[id]'!")
dispense_reagents -= id
@@ -25,7 +25,7 @@
C.reagents.add_reagent(id, to_restore)
. = 1
if(.)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/chemical_dispenser
dispense_reagents = list(
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index e6bb3260b9..8f6be28b80 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -16,8 +16,8 @@
if(N)
amount_per_transfer_from_this = N
-/obj/item/weapon/reagent_containers/New()
- ..()
+/obj/item/weapon/reagent_containers/Initialize()
+ . = ..()
if(!possible_transfer_amounts)
src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT
create_reagents(volume)
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index 0f40a83e20..fe6ddb87dc 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -3,8 +3,8 @@
desc = "This box contains blood packs."
icon_state = "sterile"
-/obj/item/weapon/storage/box/bloodpacks/New()
- ..()
+/obj/item/weapon/storage/box/bloodpacks/Initialize()
+ . = ..()
new /obj/item/weapon/reagent_containers/blood/empty(src)
new /obj/item/weapon/reagent_containers/blood/empty(src)
new /obj/item/weapon/reagent_containers/blood/empty(src)
@@ -26,8 +26,8 @@
var/blood_type = null
-/obj/item/weapon/reagent_containers/blood/New()
- ..()
+/obj/item/weapon/reagent_containers/blood/Initialize()
+ . = ..()
base_name = name
base_desc = desc
if(blood_type != null)
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index 20147cc738..df99bca9e1 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -34,15 +34,15 @@
bypass_protection = TRUE // Because mercs tend to be in spacesuits.
reagent_ids = list("healing_nanites", "hyperzine", "tramadol", "oxycodone", "spaceacillin", "peridaxon", "osteodaxon", "myelamine", "synthblood")
-/obj/item/weapon/reagent_containers/borghypo/New()
- ..()
+/obj/item/weapon/reagent_containers/borghypo/Initialize()
+ . = ..()
for(var/T in reagent_ids)
reagent_volumes[T] = volume
- var/datum/reagent/R = chemical_reagents_list[T]
+ var/datum/reagent/R = SSchemistry.chemical_reagents[T]
reagent_names += R.name
- START_PROCESSING(SSobj, src)
+ START_PROCESSING(SSobj, src)
/obj/item/weapon/reagent_containers/borghypo/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -112,14 +112,14 @@
if(t)
playsound(loc, 'sound/effects/pop.ogg', 50, 0)
mode = t
- var/datum/reagent/R = chemical_reagents_list[reagent_ids[mode]]
+ var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]]
usr << "Synthesizer is now producing '[R.name]'."
/obj/item/weapon/reagent_containers/borghypo/examine(mob/user)
if(!..(user, 2))
return
- var/datum/reagent/R = chemical_reagents_list[reagent_ids[mode]]
+ var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]]
user << "It is currently producing [R.name] and has [reagent_volumes[reagent_ids[mode]]] out of [volume] units left."
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 1b70001c28..4cc781fdea 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -47,8 +47,8 @@
/obj/machinery/radiocarbon_spectrometer
)
-/obj/item/weapon/reagent_containers/glass/New()
- ..()
+/obj/item/weapon/reagent_containers/glass/Initialize()
+ . = ..()
if(LAZYLEN(prefill))
for(var/R in prefill)
reagents.add_reagent(R,prefill[R])
@@ -150,8 +150,8 @@
item_state = "beaker"
matter = list("glass" = 500)
-/obj/item/weapon/reagent_containers/glass/beaker/New()
- ..()
+/obj/item/weapon/reagent_containers/glass/beaker/Initialize()
+ . = ..()
desc += " Can hold up to [volume] units."
/obj/item/weapon/reagent_containers/glass/beaker/on_reagent_change()
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index efa9ff81c1..eb3d3e1975 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -19,14 +19,13 @@
var/list/filled_reagents = list()
var/hyposound // What sound do we play on use?
-/obj/item/weapon/reagent_containers/hypospray/New()
- ..()
+/obj/item/weapon/reagent_containers/hypospray/Initialize()
+ . = ..()
if(filled)
if(filled_reagents)
for(var/r in filled_reagents)
reagents.add_reagent(r, filled_reagents[r])
update_icon()
- return
/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M as mob, mob/user as mob)
if(!reagents.total_volume)
@@ -83,8 +82,8 @@
var/obj/item/weapon/reagent_containers/glass/beaker/vial/loaded_vial //Wow, what a name.
volume = 0
-/obj/item/weapon/reagent_containers/hypospray/vial/New()
- ..()
+/obj/item/weapon/reagent_containers/hypospray/vial/Initialize()
+ . = ..()
loaded_vial = new /obj/item/weapon/reagent_containers/glass/beaker/vial(src) //Comes with an empty vial
volume = loaded_vial.volume
reagents.maximum_volume = loaded_vial.reagents.maximum_volume
@@ -147,8 +146,8 @@
filled = 0
filled_reagents = list()
-/obj/item/weapon/reagent_containers/hypospray/autoinjector/used/New()
- ..()
+/obj/item/weapon/reagent_containers/hypospray/autoinjector/used/Initialize()
+ . = ..()
flags &= ~OPENCONTAINER
icon_state = "[initial(icon_state)]0"
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index c93df31ec4..6426af5472 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -12,10 +12,8 @@
slot_flags = SLOT_EARS
volume = 60
-
-
-/obj/item/weapon/reagent_containers/pill/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/Initialize()
+ . = ..()
if(!icon_state)
icon_state = "pill[rand(1, 20)]"
@@ -98,28 +96,26 @@
desc = "Neutralizes many common toxins. Contains 25 units of Dylovene."
icon_state = "pill17"
-/obj/item/weapon/reagent_containers/pill/antitox/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/antitox/Initialize()
+ . = ..()
reagents.add_reagent("anti_toxin", 25)
-
/obj/item/weapon/reagent_containers/pill/tox
name = "Toxins pill"
desc = "Highly toxic." //this is cooler without "contains 50u toxin"
icon_state = "pill5"
-/obj/item/weapon/reagent_containers/pill/tox/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/tox/Initialize()
+ . = ..()
reagents.add_reagent("toxin", 50)
-
/obj/item/weapon/reagent_containers/pill/cyanide
name = "Cyanide pill"
desc = "Don't swallow this." //this is cooler without "contains 50u cyanide"
icon_state = "pill5"
-/obj/item/weapon/reagent_containers/pill/cyanide/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/cyanide/Initialize()
+ . = ..()
reagents.add_reagent("cyanide", 50)
@@ -128,8 +124,8 @@
desc = "It's magic. We don't have to explain it." //it's space magic you don't need the quantity
icon_state = "pill16"
-/obj/item/weapon/reagent_containers/pill/adminordrazine/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/adminordrazine/Initialize()
+ . = ..()
reagents.add_reagent("adminordrazine", 50)
/obj/item/weapon/reagent_containers/pill/stox
@@ -137,8 +133,8 @@
desc = "Commonly used to treat insomnia. Contains 15 units of Soporific."
icon_state = "pill8"
-/obj/item/weapon/reagent_containers/pill/stox/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/stox/Initialize()
+ . = ..()
reagents.add_reagent("stoxin", 15)
@@ -147,8 +143,8 @@
desc = "Used to treat burns. Contains 15 units of Kelotane."
icon_state = "pill11"
-/obj/item/weapon/reagent_containers/pill/kelotane/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/kelotane/Initialize()
+ . = ..()
reagents.add_reagent("kelotane", 15)
@@ -157,8 +153,8 @@
desc = "Paracetamol! A painkiller for the ages. Chewables! Contains 15 units of Paracetamol."
icon_state = "pill8"
-/obj/item/weapon/reagent_containers/pill/paracetamol/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/paracetamol/Initialize()
+ . = ..()
reagents.add_reagent("paracetamol", 15)
@@ -167,8 +163,8 @@
desc = "A simple painkiller. Contains 15 units of Tramadol."
icon_state = "pill8"
-/obj/item/weapon/reagent_containers/pill/tramadol/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/tramadol/Initialize()
+ . = ..()
reagents.add_reagent("tramadol", 15)
@@ -177,8 +173,8 @@
desc = "Improves the ability to concentrate. Contains 15 units of Methylphenidate."
icon_state = "pill8"
-/obj/item/weapon/reagent_containers/pill/methylphenidate/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/methylphenidate/Initialize()
+ . = ..()
reagents.add_reagent("methylphenidate", 15)
@@ -187,18 +183,17 @@
desc = "Mild anti-depressant. Contains 15 units of Citalopram."
icon_state = "pill8"
-/obj/item/weapon/reagent_containers/pill/citalopram/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/citalopram/Initialize()
+ . = ..()
reagents.add_reagent("citalopram", 15)
-
/obj/item/weapon/reagent_containers/pill/dexalin
name = "Dexalin pill"
desc = "Used to treat oxygen deprivation. Contains 15 units of Dexalin."
icon_state = "pill16"
-/obj/item/weapon/reagent_containers/pill/dexalin/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/dexalin/Initialize()
+ . = ..()
reagents.add_reagent("dexalin", 15)
@@ -207,38 +202,35 @@
desc = "Used to treat extreme oxygen deprivation. Contains 15 units of Dexalin Plus."
icon_state = "pill8"
-/obj/item/weapon/reagent_containers/pill/dexalin_plus/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/dexalin_plus/Initialize()
+ . = ..()
reagents.add_reagent("dexalinp", 15)
-
/obj/item/weapon/reagent_containers/pill/dermaline
name = "Dermaline pill"
desc = "Used to treat burn wounds. Contains 15 units of Dermaline."
icon_state = "pill12"
-/obj/item/weapon/reagent_containers/pill/dermaline/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/dermaline/Initialize()
+ . = ..()
reagents.add_reagent("dermaline", 15)
-
/obj/item/weapon/reagent_containers/pill/dylovene
name = "Dylovene pill"
desc = "A broad-spectrum anti-toxin. Contains 15 units of Dylovene."
icon_state = "pill13"
-/obj/item/weapon/reagent_containers/pill/dylovene/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/dylovene/Initialize()
+ . = ..()
reagents.add_reagent("anti_toxin", 15)
-
/obj/item/weapon/reagent_containers/pill/inaprovaline
name = "Inaprovaline pill"
desc = "Used to stabilize patients. Contains 30 units of Inaprovaline."
icon_state = "pill20"
-/obj/item/weapon/reagent_containers/pill/inaprovaline/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/inaprovaline/Initialize()
+ . = ..()
reagents.add_reagent("inaprovaline", 30)
@@ -247,8 +239,8 @@
desc = "Used to treat physical injuries. Contains 20 units of Bicaridine."
icon_state = "pill18"
-/obj/item/weapon/reagent_containers/pill/bicaridine/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/bicaridine/Initialize()
+ . = ..()
reagents.add_reagent("bicaridine", 20)
@@ -257,8 +249,8 @@
desc = "A theta-lactam antibiotic. Effective against many diseases likely to be encountered in space. Contains 15 units of Spaceacillin."
icon_state = "pill19"
-/obj/item/weapon/reagent_containers/pill/spaceacillin/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/spaceacillin/Initialize()
+ . = ..()
reagents.add_reagent("spaceacillin", 15)
@@ -267,8 +259,8 @@
desc = "Used to neutralise chemicals in the stomach. Contains 15 units of Carbon."
icon_state = "pill7"
-/obj/item/weapon/reagent_containers/pill/carbon/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/carbon/Initialize()
+ . = ..()
reagents.add_reagent("carbon", 15)
@@ -277,8 +269,8 @@
desc = "Used to aid in blood regeneration after bleeding. Contains 15 units of Iron."
icon_state = "pill4"
-/obj/item/weapon/reagent_containers/pill/iron/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/iron/Initialize()
+ . = ..()
reagents.add_reagent("iron", 15)
//Not-quite-medicine
@@ -287,8 +279,8 @@
desc = "Happy happy joy joy!" //we're not giving quantities for shady maint drugs
icon_state = "pill18"
-/obj/item/weapon/reagent_containers/pill/happy/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/happy/Initialize()
+ . = ..()
reagents.add_reagent("space_drugs", 15)
reagents.add_reagent("sugar", 15)
@@ -298,8 +290,8 @@
desc = "Zoooom!"
icon_state = "pill18"
-/obj/item/weapon/reagent_containers/pill/zoom/New()
- ..()
+/obj/item/weapon/reagent_containers/pill/zoom/Initialize()
+ . = ..()
reagents.add_reagent("impedrezene", 10)
reagents.add_reagent("synaptizine", 5)
reagents.add_reagent("hyperzine", 5)
@@ -309,6 +301,12 @@
desc = "Guaranteed to get you slim!"
icon_state = "pill9"
+<<<<<<< HEAD
/obj/item/weapon/reagent_containers/pill/diet/New()
..()
reagents.add_reagent("lipozine", 15) //VOREStation Edit
+=======
+/obj/item/weapon/reagent_containers/pill/diet/Initialize()
+ . = ..()
+ reagents.add_reagent("lipozine", 2)
+>>>>>>> 46c79c7... [READY]Makes a bunch of processes subsystems instead (#5814
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 136bb34026..cdc6983b35 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -17,8 +17,8 @@
var/list/spray_sizes = list(1,3)
volume = 250
-/obj/item/weapon/reagent_containers/spray/New()
- ..()
+/obj/item/weapon/reagent_containers/spray/Initialize()
+ . = ..()
src.verbs -= /obj/item/weapon/reagent_containers/verb/set_APTFT
/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob, proximity)
@@ -102,16 +102,16 @@
desc = "BLAM!-brand non-foaming space cleaner!"
volume = 50
-/obj/item/weapon/reagent_containers/spray/cleaner/New()
- ..()
+/obj/item/weapon/reagent_containers/spray/cleaner/Initialize()
+ . = ..()
reagents.add_reagent("cleaner", volume)
/obj/item/weapon/reagent_containers/spray/sterilizine
name = "sterilizine"
desc = "Great for hiding incriminating bloodstains and sterilizing scalpels."
-/obj/item/weapon/reagent_containers/spray/sterilizine/New()
- ..()
+/obj/item/weapon/reagent_containers/spray/sterilizine/Initialize()
+ . = ..()
reagents.add_reagent("sterilizine", volume)
/obj/item/weapon/reagent_containers/spray/pepper
@@ -122,10 +122,10 @@
item_state = "pepperspray"
possible_transfer_amounts = null
volume = 40
- var/safety = 1
+ var/safety = TRUE
-/obj/item/weapon/reagent_containers/spray/pepper/New()
- ..()
+/obj/item/weapon/reagent_containers/spray/pepper/Initialize()
+ . = ..()
reagents.add_reagent("condensedcapsaicin", 40)
/obj/item/weapon/reagent_containers/spray/pepper/examine(mob/user)
@@ -140,7 +140,7 @@
if(safety)
usr << "The safety is on!"
return
- ..()
+ . = ..()
/obj/item/weapon/reagent_containers/spray/waterflower
name = "water flower"
@@ -152,8 +152,8 @@
possible_transfer_amounts = null
volume = 10
-/obj/item/weapon/reagent_containers/spray/waterflower/New()
- ..()
+/obj/item/weapon/reagent_containers/spray/waterflower/Initialize()
+ . = ..()
reagents.add_reagent("water", 10)
/obj/item/weapon/reagent_containers/spray/chemsprayer
@@ -196,6 +196,6 @@
item_state = "plantbgone"
volume = 100
-/obj/item/weapon/reagent_containers/spray/plantbgone/New()
- ..()
+/obj/item/weapon/reagent_containers/spray/plantbgone/Initialize()
+ . = ..()
reagents.add_reagent("plantbgone", 100)
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 804b4a85d2..39bb0fd88a 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -330,8 +330,8 @@
name = "Syringe (inaprovaline)"
desc = "Contains inaprovaline - used to stabilize patients."
-/obj/item/weapon/reagent_containers/syringe/inaprovaline/New()
- ..()
+/obj/item/weapon/reagent_containers/syringe/inaprovaline/Initialize()
+ . = ..()
reagents.add_reagent("inaprovaline", 15)
//mode = SYRINGE_INJECT //VOREStation Edit - Starts capped
//update_icon()
@@ -340,8 +340,8 @@
name = "Syringe (anti-toxin)"
desc = "Contains anti-toxins."
-/obj/item/weapon/reagent_containers/syringe/antitoxin/New()
- ..()
+/obj/item/weapon/reagent_containers/syringe/antitoxin/Initialize()
+ . = ..()
reagents.add_reagent("anti_toxin", 15)
//mode = SYRINGE_INJECT //VOREStation Edit - Starts capped
//update_icon()
@@ -350,8 +350,8 @@
name = "Syringe (spaceacillin)"
desc = "Contains antiviral agents."
-/obj/item/weapon/reagent_containers/syringe/antiviral/New()
- ..()
+/obj/item/weapon/reagent_containers/syringe/antiviral/Initialize()
+ . = ..()
reagents.add_reagent("spaceacillin", 15)
//mode = SYRINGE_INJECT //VOREStation Edit - Starts capped
//update_icon()
@@ -360,16 +360,16 @@
name = "Syringe (drugs)"
desc = "Contains aggressive drugs meant for torture."
-/obj/item/weapon/reagent_containers/syringe/drugs/New()
- ..()
+/obj/item/weapon/reagent_containers/syringe/drugs/Initialize()
+ . = ..()
reagents.add_reagent("space_drugs", 5)
reagents.add_reagent("mindbreaker", 5)
reagents.add_reagent("cryptobiolin", 5)
//mode = SYRINGE_INJECT //VOREStation Edit - Starts capped
//update_icon()
-/obj/item/weapon/reagent_containers/syringe/ld50_syringe/choral/New()
- ..()
+/obj/item/weapon/reagent_containers/syringe/ld50_syringe/choral/Initialize()
+ . = ..()
reagents.add_reagent("chloralhydrate", 50)
mode = SYRINGE_INJECT
update_icon()
@@ -378,7 +378,13 @@
name = "Syringe (anabolic steroids)"
desc = "Contains drugs for muscle growth."
+<<<<<<< HEAD
/obj/item/weapon/reagent_containers/syringe/steroid/New()
..()
//reagents.add_reagent("adrenaline",5) //VOREStation Edit - No thanks.
+=======
+/obj/item/weapon/reagent_containers/syringe/steroid/Initialize()
+ . = ..()
+ reagents.add_reagent("adrenaline",5)
+>>>>>>> 46c79c7... [READY]Makes a bunch of processes subsystems instead (#5814
reagents.add_reagent("hyperzine",10)
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index d40fc51610..d2b4dc149d 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -16,13 +16,13 @@
attackby(obj/item/weapon/W as obj, mob/user as mob)
return
-/obj/structure/reagent_dispensers/New()
+/obj/structure/reagent_dispensers/Initialize()
var/datum/reagents/R = new/datum/reagents(5000)
reagents = R
R.my_atom = src
if (!possible_transfer_amounts)
src.verbs -= /obj/structure/reagent_dispensers/verb/set_APTFT
- ..()
+ . = ..()
/obj/structure/reagent_dispensers/examine(mob/user)
if(!..(user, 2))
@@ -73,8 +73,8 @@
icon_state = "watertank"
amount_per_transfer_from_this = 10
-/obj/structure/reagent_dispensers/watertank/New()
- ..()
+/obj/structure/reagent_dispensers/watertank/Initialize()
+ . = ..()
reagents.add_reagent("water", 1000)
/obj/structure/reagent_dispensers/watertank/high
@@ -82,8 +82,8 @@
desc = "A highly-pressurized water tank made to hold vast amounts of water.."
icon_state = "watertank_high"
-/obj/structure/reagent_dispensers/watertank/high/New()
- ..()
+/obj/structure/reagent_dispensers/watertank/high/Initialize()
+ . = ..()
reagents.add_reagent("water", 4000)
/obj/structure/reagent_dispensers/fueltank
@@ -95,8 +95,8 @@
var/modded = 0
var/obj/item/device/assembly_holder/rig = null
-/obj/structure/reagent_dispensers/fueltank/New()
- ..()
+/obj/structure/reagent_dispensers/fueltank/Initialize()
+ . = ..()
reagents.add_reagent("fuel",1000)
/obj/structure/reagent_dispensers/fueltank/examine(mob/user)
@@ -205,8 +205,8 @@
density = 0
amount_per_transfer_from_this = 45
-/obj/structure/reagent_dispensers/peppertank/New()
- ..()
+/obj/structure/reagent_dispensers/peppertank/Initialize()
+ . = ..()
reagents.add_reagent("condensedcapsaicin",1000)
@@ -227,8 +227,8 @@
cupholder = 1
cups = 10
-/obj/structure/reagent_dispensers/water_cooler/New()
- ..()
+/obj/structure/reagent_dispensers/water_cooler/Initialize()
+ . = ..()
if(bottle)
reagents.add_reagent("water",120)
update_icon()
@@ -352,8 +352,8 @@
icon_state = "beertankTEMP"
amount_per_transfer_from_this = 10
-/obj/structure/reagent_dispensers/beerkeg/New()
- ..()
+/obj/structure/reagent_dispensers/beerkeg/Initialize()
+ . = ..()
reagents.add_reagent("beer",1000)
/obj/structure/reagent_dispensers/beerkeg/fakenuke
@@ -370,8 +370,8 @@
amount_per_transfer_from_this = 10
anchored = 1
-/obj/structure/reagent_dispensers/virusfood/New()
- ..()
+/obj/structure/reagent_dispensers/virusfood/Initialize()
+ . = ..()
reagents.add_reagent("virusfood", 1000)
/obj/structure/reagent_dispensers/acid
@@ -382,6 +382,6 @@
amount_per_transfer_from_this = 10
anchored = 1
-/obj/structure/reagent_dispensers/acid/New()
- ..()
+/obj/structure/reagent_dispensers/acid/Initialize()
+ . = ..()
reagents.add_reagent("sacid", 1000)
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index 850df76645..70ca9692f3 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -22,8 +22,8 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
idle_power_usage = 30
active_power_usage = 2500
-/obj/machinery/r_n_d/circuit_imprinter/New()
- ..()
+/obj/machinery/r_n_d/circuit_imprinter/Initialize()
+ . = ..()
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/manipulator(src)
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index 1e1d54f9bc..bea555b70c 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -17,8 +17,8 @@
materials = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0, "plastic" = 0, "gold" = 0, "silver" = 0, "osmium" = 0, "phoron" = 0, "uranium" = 0, "diamond" = 0)
-/obj/machinery/r_n_d/protolathe/New()
- ..()
+/obj/machinery/r_n_d/protolathe/Initialize()
+ . = ..()
component_parts = list()
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(src)
diff --git a/code/modules/shuttles/escape_pods.dm b/code/modules/shuttles/escape_pods.dm
index e79f5d9b20..60c1e4bd0d 100644
--- a/code/modules/shuttles/escape_pods.dm
+++ b/code/modules/shuttles/escape_pods.dm
@@ -55,7 +55,7 @@
"is_armed" = pod.arming_controller.armed,
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "escape_pod_console.tmpl", name, 470, 290)
@@ -102,7 +102,7 @@
"armed" = armed,
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "escape_pod_berth_console.tmpl", name, 470, 290)
diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm
index 01924be412..3d5422f4f1 100644
--- a/code/modules/shuttles/shuttle_console.dm
+++ b/code/modules/shuttles/shuttle_console.dm
@@ -57,7 +57,7 @@
"can_force" = shuttle.can_force(),
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "shuttle_control_console.tmpl", "[shuttle_tag] Shuttle Control", 470, 310)
diff --git a/code/modules/shuttles/shuttle_emergency.dm b/code/modules/shuttles/shuttle_emergency.dm
index 7db9ae2b62..86b8e29809 100644
--- a/code/modules/shuttles/shuttle_emergency.dm
+++ b/code/modules/shuttles/shuttle_emergency.dm
@@ -233,7 +233,7 @@
"user" = debug? user : null,
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "escape_shuttle_control_console.tmpl", "Shuttle Control", 470, 420)
diff --git a/code/modules/shuttles/shuttles_web.dm b/code/modules/shuttles/shuttles_web.dm
index c717e51adc..3726ce23cd 100644
--- a/code/modules/shuttles/shuttles_web.dm
+++ b/code/modules/shuttles/shuttles_web.dm
@@ -350,7 +350,7 @@
"sensors" = sensors
)
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if(!ui)
ui = new(user, src, ui_key, "flight.tmpl", "[shuttle.visible_name] Flight Computer", 500, 500)
diff --git a/code/modules/virus2/centrifuge.dm b/code/modules/virus2/centrifuge.dm
index 73e43be704..433a26977b 100644
--- a/code/modules/virus2/centrifuge.dm
+++ b/code/modules/virus2/centrifuge.dm
@@ -26,7 +26,7 @@
O.loc = src
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
src.attack_hand(user)
@@ -74,7 +74,7 @@
data["antibodies"] = antigens2string(A.data["antibodies"], none=null)
data["is_antibody_sample"] = 1
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "isolation_centrifuge.tmpl", src.name, 400, 500)
ui.set_initial_data(data)
@@ -98,7 +98,7 @@
if (..()) return 1
var/mob/user = usr
- var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main")
+ var/datum/nanoui/ui = SSnanoui.get_open_ui(user, src, "main")
src.add_fingerprint(user)
@@ -160,7 +160,7 @@
sample.reagents.remove_reagent("blood", amt)
sample.reagents.add_reagent("antibodies", amt, data)
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
update_icon()
ping("\The [src] pings, \"Antibody isolated.\"")
@@ -170,7 +170,7 @@
dish.virus2 = virus2
virus2 = null
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
update_icon()
ping("\The [src] pings, \"Pathogen isolated.\"")
diff --git a/code/modules/virus2/diseasesplicer.dm b/code/modules/virus2/diseasesplicer.dm
index b5db3fa96a..95657498a0 100644
--- a/code/modules/virus2/diseasesplicer.dm
+++ b/code/modules/virus2/diseasesplicer.dm
@@ -81,7 +81,7 @@
else
data["info"] = "No dish loaded."
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "disease_splicer.tmpl", src.name, 400, 600)
ui.set_initial_data(data)
@@ -95,12 +95,12 @@
scanning -= 1
if(!scanning)
ping("\The [src] pings, \"Analysis complete.\"")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if(splicing)
splicing -= 1
if(!splicing)
ping("\The [src] pings, \"Splicing operation complete.\"")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if(burning)
burning -= 1
if(!burning)
@@ -122,13 +122,13 @@
d.species = species_buffer
ping("\The [src] pings, \"Backup disk saved.\"")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/computer/diseasesplicer/Topic(href, href_list)
if(..()) return 1
var/mob/user = usr
- var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main")
+ var/datum/nanoui/ui = SSnanoui.get_open_ui(user, src, "main")
src.add_fingerprint(user)
diff --git a/code/modules/virus2/dishincubator.dm b/code/modules/virus2/dishincubator.dm
index 3ecad1d691..379d7ef533 100644
--- a/code/modules/virus2/dishincubator.dm
+++ b/code/modules/virus2/dishincubator.dm
@@ -29,7 +29,7 @@
O.loc = src
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
src.attack_hand(user)
return
@@ -45,7 +45,7 @@
O.loc = src
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
src.attack_hand(user)
@@ -85,7 +85,7 @@
for (var/ID in virus)
data["blood_already_infected"] = virus[ID]
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "dish_incubator.tmpl", src.name, 400, 600)
ui.set_initial_data(data)
@@ -104,7 +104,7 @@
foodsupply -= 1
dish.growth += 3
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if(radiation)
if(radiation > 50 & prob(5))
@@ -117,24 +117,24 @@
else if(prob(5))
dish.virus2.minormutate()
radiation -= 1
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if(toxins && prob(5))
dish.virus2.infectionchance -= 1
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if(toxins > 50)
dish.growth = 0
dish.virus2 = null
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
else if(!dish)
on = 0
icon_state = "incubator"
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if(beaker)
if(foodsupply < 100 && beaker.reagents.remove_reagent("virusfood",5))
if(foodsupply + 10 <= 100)
foodsupply += 10
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
if (locate(/datum/reagent/toxin) in beaker.reagents.reagent_list && toxins < 100)
for(var/datum/reagent/toxin/T in beaker.reagents.reagent_list)
@@ -143,13 +143,13 @@
if(toxins > 100)
toxins = 100
break
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
/obj/machinery/disease2/incubator/Topic(href, href_list)
if (..()) return 1
var/mob/user = usr
- var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main")
+ var/datum/nanoui/ui = SSnanoui.get_open_ui(user, src, "main")
src.add_fingerprint(user)
diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm
index d7db2633ad..c4ea02b873 100644
--- a/code/modules/virus2/effect.dm
+++ b/code/modules/virus2/effect.dm
@@ -354,7 +354,7 @@
data = pick("bicaridine", "kelotane", "anti_toxin", "inaprovaline", "space_drugs", "sugar",
"tramadol", "dexalin", "cryptobiolin", "impedrezene", "hyperzine", "ethylredoxrazine",
"mindbreaker", "glucose")
- var/datum/reagent/R = chemical_reagents_list[data]
+ var/datum/reagent/R = SSchemistry.chemical_reagents[data]
name = "[initial(name)] ([initial(R.name)])"
/datum/disease2/effect/chem_synthesis/activate(var/mob/living/carbon/mob,var/multiplier)
diff --git a/code/modules/virus2/isolator.dm b/code/modules/virus2/isolator.dm
index 8fa61e173b..da2c543fc8 100644
--- a/code/modules/virus2/isolator.dm
+++ b/code/modules/virus2/isolator.dm
@@ -43,7 +43,7 @@
S.loc = src
user.visible_message("[user] adds \a [O] to \the [src]!", "You add \a [O] to \the [src]!")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
update_icon()
src.attack_hand(user)
@@ -103,7 +103,7 @@
"name" = entry.fields["name"], \
"description" = replacetext(desc, "\n", ""))
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
ui = new(user, src, ui_key, "pathogenic_isolator.tmpl", src.name, 400, 500)
ui.set_initial_data(data)
@@ -119,14 +119,14 @@
virus2 = null
ping("\The [src] pings, \"Viral strain isolated.\"")
- GLOB.nanomanager.update_uis(src)
+ SSnanoui.update_uis(src)
update_icon()
/obj/machinery/disease2/isolator/Topic(href, href_list)
if (..()) return 1
var/mob/user = usr
- var/datum/nanoui/ui = GLOB.nanomanager.get_open_ui(user, src, "main")
+ var/datum/nanoui/ui = SSnanoui.get_open_ui(user, src, "main")
src.add_fingerprint(user)
diff --git a/code/modules/xenoarcheaology/finds/special.dm b/code/modules/xenoarcheaology/finds/special.dm
index 040c42e20f..758c4f894d 100644
--- a/code/modules/xenoarcheaology/finds/special.dm
+++ b/code/modules/xenoarcheaology/finds/special.dm
@@ -5,8 +5,12 @@
/obj/item/weapon/reagent_containers/glass/replenishing
var/spawning_id
+<<<<<<< HEAD
/obj/item/weapon/reagent_containers/glass/replenishing/New()
..()
+=======
+/obj/item/weapon/reagent_containers/glass/replenishing/Initialize()
+ . = ..()
START_PROCESSING(SSobj, src)
spawning_id = pick("blood","holywater","lube","stoxin","ethanol","ice","glycerol","fuel","cleaner")
diff --git a/code/modules/xenoarcheaology/tools/coolant_tank.dm b/code/modules/xenoarcheaology/tools/coolant_tank.dm
index 1ee02211cf..df6c901517 100644
--- a/code/modules/xenoarcheaology/tools/coolant_tank.dm
+++ b/code/modules/xenoarcheaology/tools/coolant_tank.dm
@@ -5,8 +5,8 @@
icon_state = "coolanttank"
amount_per_transfer_from_this = 10
-/obj/structure/reagent_dispensers/coolanttank/New()
- ..()
+/obj/structure/reagent_dispensers/coolanttank/Initialize()
+ . = ..()
reagents.add_reagent("coolant", 1000)
/obj/structure/reagent_dispensers/coolanttank/bullet_act(var/obj/item/projectile/Proj)
diff --git a/code/modules/xenoarcheaology/tools/geosample_scanner.dm b/code/modules/xenoarcheaology/tools/geosample_scanner.dm
index 003a5639da..b97a34e48f 100644
--- a/code/modules/xenoarcheaology/tools/geosample_scanner.dm
+++ b/code/modules/xenoarcheaology/tools/geosample_scanner.dm
@@ -150,7 +150,7 @@
data["rad_shield_on"] = rad_shield
// update the ui if it exists, returns null if no ui is passed/found
- ui = GLOB.nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open)
if (!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
diff --git a/code/modules/xenobio/items/slime_objects.dm b/code/modules/xenobio/items/slime_objects.dm
index 27f6f863eb..aa368f6dd6 100644
--- a/code/modules/xenobio/items/slime_objects.dm
+++ b/code/modules/xenobio/items/slime_objects.dm
@@ -123,6 +123,6 @@
nutriment_amt = 25 // Very filling.
nutriment_desc = list("slime" = 10, "sweetness" = 10, "bliss" = 5)
-/obj/item/weapon/reagent_containers/food/snacks/slime/New()
- ..()
+/obj/item/weapon/reagent_containers/food/snacks/slime/Initialize()
+ . = ..()
bitesize = 5
\ No newline at end of file
diff --git a/code/unit_tests/research_tests.dm b/code/unit_tests/research_tests.dm
index 93bf79a0da..24d307c5e6 100644
--- a/code/unit_tests/research_tests.dm
+++ b/code/unit_tests/research_tests.dm
@@ -60,7 +60,7 @@
number_of_issues++
for(var/reagent_name in design.chemicals)
- if(!(reagent_name in chemical_reagents_list))
+ if(!(reagent_name in SSchemistry.chemical_reagents))
log_unit_test("The entry [design_type] has invalid chemical type [reagent_name]")
number_of_issues++
diff --git a/code/world.dm b/code/world.dm
index ccd0bc26d0..3e33f474b0 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -19,8 +19,6 @@ var/global/datum/global_init/init = new ()
makeDatumRefLists()
load_configuration()
- initialize_chemical_reagents()
- initialize_chemical_reactions()
initialize_integrated_circuits_list()
qdel(src) //we're done
diff --git a/vorestation.dme b/vorestation.dme
index 8ef0fc1910..1d7234e483 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -201,15 +201,13 @@
#include "code\controllers\verbs.dm"
#include "code\controllers\observer_listener\atom\observer.dm"
#include "code\controllers\Processes\alarm.dm"
-#include "code\controllers\Processes\chemistry.dm"
#include "code\controllers\Processes\emergencyShuttle.dm"
-#include "code\controllers\Processes\event.dm"
#include "code\controllers\Processes\game_master.dm"
#include "code\controllers\Processes\nanoui.dm"
+#include "code\controllers\Processes\mob.dm"
#include "code\controllers\Processes\radiation.dm"
#include "code\controllers\Processes\supply.dm"
#include "code\controllers\Processes\ticker.dm"
-#include "code\controllers\Processes\turf.dm"
#include "code\controllers\ProcessScheduler\core\process.dm"
#include "code\controllers\ProcessScheduler\core\processScheduler.dm"
#include "code\controllers\subsystems\ai.dm"
@@ -218,13 +216,19 @@
#include "code\controllers\subsystems\atoms.dm"
#include "code\controllers\subsystems\bellies_vr.dm"
#include "code\controllers\subsystems\circuits.dm"
+#include "code\controllers\subsystems\events.dm"
#include "code\controllers\subsystems\garbage.dm"
#include "code\controllers\subsystems\holomaps.dm"
#include "code\controllers\subsystems\inactivity.dm"
#include "code\controllers\subsystems\lighting.dm"
#include "code\controllers\subsystems\machines.dm"
+<<<<<<< HEAD:vorestation.dme
#include "code\controllers\subsystems\mapping_vr.dm"
#include "code\controllers\subsystems\mobs.dm"
+=======
+#include "code\controllers\subsystems\mapping.dm"
+#include "code\controllers\subsystems\nanoui.dm"
+>>>>>>> 46c79c7... [READY]Makes a bunch of processes subsystems instead (#5814:polaris.dme
#include "code\controllers\subsystems\orbits.dm"
#include "code\controllers\subsystems\overlays.dm"
#include "code\controllers\subsystems\persist_vr.dm"
@@ -236,9 +240,11 @@
#include "code\controllers\subsystems\transcore_vr.dm"
#include "code\controllers\subsystems\vote.dm"
#include "code\controllers\subsystems\xenoarch.dm"
+#include "code\controllers\subsystems\processing\chemistry.dm"
#include "code\controllers\subsystems\processing\fastprocess.dm"
#include "code\controllers\subsystems\processing\obj.dm"
#include "code\controllers\subsystems\processing\processing.dm"
+#include "code\controllers\subsystems\processing\turfs.dm"
#include "code\datums\ai_law_sets.dm"
#include "code\datums\ai_laws.dm"
#include "code\datums\beam.dm"