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"