diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm index 21f2d38090..b66fbdf3d5 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm @@ -28,7 +28,7 @@ "g" = ( /obj/structure/reagent_dispensers/water_cooler{ name = "punch cooler"; - reagent_id = "bacchus_blessing" + reagent_id = /datum/reagent/consumable/ethanol/bacchus_blessing }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood{ diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index e5038c0730..1464dd9529 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -3410,7 +3410,7 @@ "lq" = ( /obj/structure/table, /obj/item/reagent_containers/glass/beaker{ - list_reagents = list("sacid" = 50) + list_reagents = list(/datum/reagent/toxin/acid = 50) }, /obj/item/paper/crumpled/bloody/ruins/thederelict/unfinished, /obj/item/pen, diff --git a/_maps/templates/shelter_1.dmm b/_maps/templates/shelter_1.dmm index f5b2e141f4..7f95fba10f 100644 --- a/_maps/templates/shelter_1.dmm +++ b/_maps/templates/shelter_1.dmm @@ -50,9 +50,7 @@ /area/survivalpod) "l" = ( /obj/structure/tubes, -/obj/structure/chair/comfy/black{ - dir = 8 - }, +/obj/machinery/recharge_station, /turf/open/floor/pod, /area/survivalpod) "m" = ( diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index 80de4438da..825cb26e3a 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -67,8 +67,7 @@ layer = 3 }, /obj/machinery/door/window/survival_pod{ - dir = 1; - icon_state = "windoor" + dir = 1 }, /turf/open/floor/carpet/black, /area/survivalpod) @@ -133,7 +132,6 @@ /area/survivalpod) "u" = ( /obj/machinery/door/window/survival_pod{ - icon_state = "windoor"; dir = 1 }, /turf/open/floor/carpet/black, @@ -169,10 +167,10 @@ /area/survivalpod) "y" = ( /obj/structure/sink/kitchen{ - icon_state = "sink_alt"; dir = 4; pixel_x = -13 }, +/obj/machinery/recharge_station/upgraded, /turf/open/floor/carpet/black, /area/survivalpod) "z" = ( diff --git a/_maps/templates/shelter_3.dmm b/_maps/templates/shelter_3.dmm index b71da1fba0..bb400f29ac 100644 --- a/_maps/templates/shelter_3.dmm +++ b/_maps/templates/shelter_3.dmm @@ -268,6 +268,10 @@ /obj/structure/fans/tiny, /turf/open/floor/carpet/black, /area/survivalpod) +"T" = ( +/obj/machinery/recharge_station/fullupgrade, +/turf/open/floor/carpet/black, +/area/survivalpod) (1,1,1) = {" a @@ -287,7 +291,7 @@ b f q s -x +T y D F diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index f5ea8d835f..2756be76fb 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -130,33 +130,24 @@ #define NECK (1<<11) #define FULL_BODY (~0) +//flags for alternate styles: These are hard sprited so don't set this if you didn't put the effort in +#define NORMAL_STYLE 0 +#define ALT_STYLE 1 + //flags for female outfits: How much the game can safely "take off" the uniform without it looking weird #define NO_FEMALE_UNIFORM 0 #define FEMALE_UNIFORM_FULL 1 #define FEMALE_UNIFORM_TOP 2 -//flags for alternate styles: These are hard sprited so don't set this if you didn't put the effort in -#define NORMAL_STYLE 0 -#define ALT_STYLE 1 - -#define NORMAL_SUIT_STYLE 0 -#define DIGITIGRADE_SUIT_STYLE 1 - -//Tauric Specific suits -#define NOT_TAURIC 0 -#define SNEK_TAURIC 1 -#define PAW_TAURIC 2 -#define HOOF_TAURIC 3 - -//Helmets/masks for muzzles or beaks -#define NORMAL_FACED 0 -#define MUZZLE_FACED 1 -#define BEAKED_FACED 2 - -//flags for outfits that have mutantrace variants (try not to use this): Currently only needed if you're trying to add tight fitting bootyshorts -#define NO_MUTANTRACE_VARIATION 0 -#define MUTANTRACE_VARIATION 1 +//flags for outfits that have mutantrace variants: These are hard sprited too. +#define STYLE_DIGITIGRADE (1<<0) //jumpsuits, suits and shoes +#define STYLE_MUZZLE (1<<1) //hats or masks +#define STYLE_SNEK_TAURIC (1<<2) //taur-friendly suits +#define STYLE_PAW_TAURIC (1<<3) +#define STYLE_HOOF_TAURIC (1<<4) +#define STYLE_ALL_TAURIC (STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC|STYLE_HOOF_TAURIC) +//digitigrade legs settings. #define NOT_DIGITIGRADE 0 #define FULL_DIGITIGRADE 1 #define SQUISHED_DIGITIGRADE 2 diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index c194e578c9..5c54843df2 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -47,6 +47,7 @@ // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. +#define INIT_ORDER_FAIL2TOPIC 22 #define INIT_ORDER_TITLE 20 #define INIT_ORDER_GARBAGE 19 #define INIT_ORDER_DBCORE 18 diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 3ee77d3edc..4dd590d9a1 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -78,7 +78,6 @@ if (CONFIG_GET(flag/log_manifest)) WRITE_LOG(GLOB.world_manifest_log, "[ckey] \\ [body.real_name] \\ [mind.assigned_role] \\ [mind.special_role ? mind.special_role : "NONE"] \\ [latejoin ? "LATEJOIN":"ROUNDSTART"]") - /proc/log_say(text) if (CONFIG_GET(flag/log_say)) WRITE_LOG(GLOB.world_game_log, "SAY: [text]") @@ -121,7 +120,6 @@ if (CONFIG_GET(flag/log_vote)) WRITE_LOG(GLOB.world_game_log, "VOTE: [text]") - /proc/log_topic(text) WRITE_LOG(GLOB.world_game_log, "TOPIC: [text]") @@ -141,6 +139,9 @@ if (CONFIG_GET(flag/log_job_debug)) WRITE_LOG(GLOB.world_job_debug_log, "JOB: [text]") +/proc/log_subsystem(subsystem, text) + WRITE_LOG(GLOB.subsystem_log, "[subsystem]: [text]") + /* Log to both DD and the logfile. */ /proc/log_world(text) #ifdef USE_CUSTOM_ERROR_HANDLER diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index 1f5b82f7bf..4b52187e13 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -43,6 +43,13 @@ var/static/blacklisted_areas = typecacheof(list( /area/space, )) + + if(creator) + if(creator.create_area_cooldown >= world.time) + to_chat(creator, "You're trying to create a new area a little too fast.") + return + creator.create_area_cooldown = world.time + 10 + var/list/turfs = detect_room(get_turf(creator), area_or_turf_fail_types) if(!turfs) to_chat(creator, "The new area must be completely airtight and not a part of a shuttle.") diff --git a/code/__HELPERS/cmp.dm b/code/__HELPERS/cmp.dm index 4a86f57fcd..c95896d853 100644 --- a/code/__HELPERS/cmp.dm +++ b/code/__HELPERS/cmp.dm @@ -97,6 +97,9 @@ GLOBAL_VAR_INIT(cmp_field, "name") /proc/cmp_numbered_displays_name_dsc(datum/numbered_display/A, datum/numbered_display/B) return sorttext(B.sample_object.name, A.sample_object.name) +/proc/cmp_reagents_asc(datum/reagent/a, datum/reagent/b) + return sorttext(initial(b.name),initial(a.name)) + /proc/cmp_quirk_asc(datum/quirk/A, datum/quirk/B) var/a_sign = num2sign(initial(A.value) * -1) var/b_sign = num2sign(initial(B.value) * -1) diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 1707c3a536..3577402b36 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -61,26 +61,6 @@ GLOBAL_LIST_EMPTY(latejoiners) //CIT CHANGE - All latejoining people, for traito var/mob/M = i M.update_config_movespeed() -GLOBAL_LIST_INIT(noodle_taurs, list( - "Naga", - "Tentacle" - )) - -GLOBAL_LIST_INIT(paw_taurs, list( - "Fox", - "Wolf", - "Otie", - "Drake", - "Lab", - "Shepherd", - "Husky", - "Eevee", - "Panther", - "Horse", - "Cow", - "Tiger" - )) - //blood types GLOBAL_LIST_INIT(regular_bloods,list( "O-", diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index 5ca3513e66..01d5051dba 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -30,6 +30,8 @@ GLOBAL_VAR(world_virus_log) GLOBAL_PROTECT(world_virus_log) GLOBAL_VAR(world_map_error_log) GLOBAL_PROTECT(world_map_error_log) +GLOBAL_VAR(subsystem_log) +GLOBAL_PROTECT(subsystem_log) GLOBAL_LIST_EMPTY(bombers) GLOBAL_PROTECT(bombers) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 14954524fa..730a3f17f4 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -236,7 +236,6 @@ if(!(M.config_tag in modes)) // ensure each mode is added only once modes += M.config_tag mode_names[M.config_tag] = M.name - probabilities[M.config_tag] = M.probability mode_reports[M.config_tag] = M.generate_report() if(probabilities[M.config_tag]>0) mode_false_report_weight[M.config_tag] = M.false_report_weight @@ -342,6 +341,9 @@ if(probabilities[M.config_tag]<=0) qdel(M) continue + if(M.config_tag in SSvote.stored_modetier_results && SSvote.stored_modetier_results[M.config_tag] < Get(/datum/config_entry/number/dropped_modes)) + qdel(M) + continue if(min_pop[M.config_tag]) M.required_players = min_pop[M.config_tag] if(max_pop[M.config_tag]) diff --git a/code/controllers/configuration/entries/fail2topic.dm b/code/controllers/configuration/entries/fail2topic.dm new file mode 100644 index 0000000000..7ed09b378a --- /dev/null +++ b/code/controllers/configuration/entries/fail2topic.dm @@ -0,0 +1,19 @@ +/datum/config_entry/number/fail2topic_rate_limit + config_entry_value = 10 //deciseconds + +/datum/config_entry/number/fail2topic_max_fails + config_entry_value = 5 + +/datum/config_entry/string/fail2topic_rule_name + config_entry_value = "_dd_fail2topic" + protection = CONFIG_ENTRY_LOCKED //affects physical server configuration, no touchies!! + +/datum/config_entry/flag/fail2topic_enabled + config_entry_value = TRUE + +/datum/config_entry/number/topic_max_size + config_entry_value = 8192 + +/datum/config_entry/keyed_list/topic_rate_limit_whitelist + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_FLAG diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index b95ef43d37..8b6bbe83b4 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -378,9 +378,9 @@ /datum/config_entry/keyed_list/box_random_engine key_mode = KEY_MODE_TEXT - value_mode = VALUE_MODE_FLAG + value_mode = VALUE_MODE_NUM lowercase = FALSE - splitter = "-" + splitter = "," /datum/config_entry/number/auto_transfer_delay config_entry_value = 72000 @@ -394,3 +394,9 @@ /datum/config_entry/flag/allow_clockwork_marauder_on_station config_entry_value = TRUE + +/datum/config_entry/flag/modetier_voting + config_entry_value = TRUE + +/datum/config_entry/number/dropped_modes + config_entry_value = 3 diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 125da84a30..7244212630 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -54,7 +54,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/static/restart_clear = 0 var/static/restart_timeout = 0 var/static/restart_count = 0 - + var/static/random_seed //current tick limit, assigned before running a subsystem. @@ -69,7 +69,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new if(!random_seed) random_seed = (TEST_RUN_PARAMETER in world.params) ? 29051994 : rand(1, 1e9) rand_seed(random_seed) - + var/list/_subsystems = list() subsystems = _subsystems if (Master != src) diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 4fe0812c56..3be4f36270 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -155,6 +155,8 @@ if(SS_SLEEPING) state = SS_PAUSING +/datum/controller/subsystem/proc/subsystem_log(msg) + return log_subsystem(name, msg) //used to initialize the subsystem AFTER the map has loaded /datum/controller/subsystem/Initialize(start_timeofday) @@ -162,7 +164,7 @@ var/time = (REALTIMEOFDAY - start_timeofday) / 10 var/msg = "Initialized [name] subsystem within [time] second[time == 1 ? "" : "s"]!" to_chat(world, "[msg]") - log_world(msg) + log_subsystem("INIT", msg) return time //hook for printing stats to the "MC" statuspanel for admins to see performance and related stats etc. diff --git a/code/controllers/subsystem/fail2topic.dm b/code/controllers/subsystem/fail2topic.dm new file mode 100644 index 0000000000..a589ae2462 --- /dev/null +++ b/code/controllers/subsystem/fail2topic.dm @@ -0,0 +1,113 @@ +SUBSYSTEM_DEF(fail2topic) + name = "Fail2Topic" + init_order = INIT_ORDER_FAIL2TOPIC + flags = SS_BACKGROUND + runlevels = ALL + + var/list/rate_limiting = list() + var/list/fail_counts = list() + var/list/active_bans = list() + + var/rate_limit + var/max_fails + var/rule_name + var/enabled = FALSE + +/datum/controller/subsystem/fail2topic/Initialize(timeofday) + rate_limit = CONFIG_GET(number/fail2topic_rate_limit) + max_fails = CONFIG_GET(number/fail2topic_max_fails) + rule_name = CONFIG_GET(string/fail2topic_rule_name) + enabled = CONFIG_GET(flag/fail2topic_enabled) + + DropFirewallRule() // Clear the old bans if any still remain + + if (world.system_type == UNIX && enabled) + enabled = FALSE + subsystem_log("DISABLED - UNIX systems are not supported.") + if(!enabled) + flags |= SS_NO_FIRE + can_fire = FALSE + + return ..() + +/datum/controller/subsystem/fail2topic/fire() + while (rate_limiting.len) + var/ip = rate_limiting[1] + var/last_attempt = rate_limiting[ip] + + if (world.time - last_attempt > rate_limit) + rate_limiting -= ip + fail_counts -= ip + + if (MC_TICK_CHECK) + return + +/datum/controller/subsystem/fail2topic/Shutdown() + DropFirewallRule() + +/datum/controller/subsystem/fail2topic/proc/IsRateLimited(ip) + var/last_attempt = rate_limiting[ip] + + var/static/datum/config_entry/keyed_list/topic_rate_limit_whitelist/cached_whitelist_entry + if(!istype(cached_whitelist_entry)) + cached_whitelist_entry = CONFIG_GET(keyed_list/topic_rate_limit_whitelist) + + if(istype(cached_whitelist_entry)) + if(cached_whitelist_entry.config_entry_value[ip]) + return FALSE + + if (active_bans[ip]) + return TRUE + + rate_limiting[ip] = world.time + + if (isnull(last_attempt)) + return FALSE + + if (world.time - last_attempt > rate_limit) + fail_counts -= ip + return FALSE + else + var/failures = fail_counts[ip] + + if (isnull(failures)) + fail_counts[ip] = 1 + return TRUE + else if (failures > max_fails) + BanFromFirewall(ip) + return TRUE + else + fail_counts[ip] = failures + 1 + return TRUE + +/datum/controller/subsystem/fail2topic/proc/BanFromFirewall(ip) + if (!enabled) + return + + active_bans[ip] = world.time + fail_counts -= ip + rate_limiting -= ip + + . = shell("netsh advfirewall firewall add rule name=\"[rule_name]\" dir=in interface=any action=block remoteip=[ip]") + + if (.) + subsystem_log("Failed to ban [ip]. Exit code: [.].") + else if (isnull(.)) + subsystem_log("Failed to invoke shell to ban [ip].") + else + subsystem_log("Banned [ip].") + +/datum/controller/subsystem/fail2topic/proc/DropFirewallRule() + if (!enabled) + return + + active_bans = list() + + . = shell("netsh advfirewall firewall delete rule name=\"[rule_name]\"") + + if (.) + subsystem_log("Failed to drop firewall rule. Exit code: [.].") + else if (isnull(.)) + subsystem_log("Failed to invoke shell for firewall rule drop.") + else + subsystem_log("Firewall rule dropped.") diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 45c8e3c8fe..0948e428ff 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -221,6 +221,12 @@ SUBSYSTEM_DEF(ticker) var/init_start = world.timeofday //Create and announce mode var/list/datum/game_mode/runnable_modes + if(SSvote.mode && (SSvote.mode == "roundtype" || SSvote.mode == "dynamic" || SSvote.mode == "mode tiers")) + SSvote.result() + SSpersistence.SaveSavedVotes() + for(var/client/C in SSvote.voting) + C << browse(null, "window=vote;can_close=0") + SSvote.reset() if(GLOB.master_mode == "random" || GLOB.master_mode == "secret") runnable_modes = config.get_runnable_modes() @@ -484,9 +490,10 @@ SUBSYSTEM_DEF(ticker) SSticker.modevoted = TRUE var/dynamic = CONFIG_GET(flag/dynamic_voting) if(dynamic) - SSvote.initiate_vote("dynamic","server",hideresults=TRUE,votesystem=SCORE_VOTING,forced=TRUE,vote_time = 2 MINUTES) + SSvote.initiate_vote("dynamic","server",hideresults=TRUE,votesystem=SCORE_VOTING,forced=TRUE,vote_time = 20 MINUTES) else - SSvote.initiate_vote("roundtype","server",hideresults=TRUE,votesystem=PLURALITY_VOTING,forced=TRUE, vote_time = 2 MINUTES) + SSvote.initiate_vote("roundtype","server",hideresults=TRUE,votesystem=PLURALITY_VOTING,forced=TRUE, \ + vote_time = (CONFIG_GET(flag/modetier_voting) ? 1 MINUTES : 20 MINUTES)) /datum/controller/subsystem/ticker/Recover() current_state = SSticker.current_state diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 573c89a5af..f82954276e 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -15,6 +15,7 @@ SUBSYSTEM_DEF(vote) var/vote_system = PLURALITY_VOTING var/question = null var/list/choices = list() + var/list/scores = list() var/list/choice_descs = list() // optional descriptions var/list/voted = list() var/list/voting = list() @@ -26,6 +27,8 @@ SUBSYSTEM_DEF(vote) var/list/stored_gamemode_votes = list() //Basically the last voted gamemode is stored here for end-of-round use. + var/list/stored_modetier_results = list() // The aggregated tier list of the modes available in secret. + /datum/controller/subsystem/vote/fire() //called by master_controller if(mode) if(end_time < world.time) @@ -33,7 +36,8 @@ SUBSYSTEM_DEF(vote) SSpersistence.SaveSavedVotes() for(var/client/C in voting) C << browse(null, "window=vote;can_close=0") - reset() + if(end_time < world.time) // result() can change this + reset() else if(next_pop < world.time) var/datum/browser/client_popup for(var/client/C in voting) @@ -54,6 +58,7 @@ SUBSYSTEM_DEF(vote) choice_descs.Cut() voted.Cut() voting.Cut() + scores.Cut() obfuscated = FALSE //CIT CHANGE - obfuscated votes remove_action_buttons() @@ -116,10 +121,8 @@ SUBSYSTEM_DEF(vote) var/opposite_pref = d[j][i] if(pref_number>opposite_pref) p[i][j] = d[i][j] - p[j][i] = 0 else p[i][j] = 0 - p[j][i] = d[i][j] for(var/i in 1 to choices.len) for(var/j in 1 to choices.len) if(i != j) @@ -180,6 +183,22 @@ SUBSYSTEM_DEF(vote) score.Cut(median_pos,median_pos+1) choices[score_name]++ +/datum/controller/subsystem/vote/proc/calculate_scores(var/blackbox_text) + var/list/scores_by_choice = list() + for(var/choice in choices) + scores_by_choice[choice] = list() + for(var/ckey in voted) + var/list/this_vote = voted[ckey] + for(var/choice in this_vote) + sorted_insert(scores_by_choice[choice],this_vote[choice],/proc/cmp_numeric_asc) + var/middle_score = round(GLOB.vote_score_options.len/2,1) + for(var/score_name in scores_by_choice) + var/list/score = scores_by_choice[score_name] + for(var/S in score) + scores[score_name] += S-middle_score + SSblackbox.record_feedback("nested tally","voting",scores[score_name],list(blackbox_text,"Total scores",score_name)) + + /datum/controller/subsystem/vote/proc/announce_result() var/vote_title_text var/text @@ -234,6 +253,8 @@ SUBSYSTEM_DEF(vote) var/admintext = "Obfuscated results" if(vote_system == RANKED_CHOICE_VOTING) admintext += "\nIt should be noted that this is not a raw tally of votes (impossible in ranked choice) but the score determined by the schulze method of voting, so the numbers will look weird!" + else if(vote_system == SCORE_VOTING) + admintext += "\nIt should be noted that this is not a raw tally of votes but the number of runoffs done by majority judgement!" for(var/i=1,i<=choices.len,i++) var/votes = choices[choices[i]] admintext += "\n[choices[i]]: [votes]" @@ -252,6 +273,12 @@ SUBSYSTEM_DEF(vote) SSticker.save_mode(.) message_admins("The gamemode has been voted for, and has been changed to: [GLOB.master_mode]") log_admin("Gamemode has been voted for and switched to: [GLOB.master_mode].") + if(CONFIG_GET(flag/modetier_voting)) + reset() + started_time = 0 + initiate_vote("mode tiers","server",hideresults=FALSE,votesystem=RANKED_CHOICE_VOTING,forced=TRUE, vote_time = 30 MINUTES) + to_chat(world,"The vote will end right as the round starts.") + return . if("restart") if(. == "Restart Round") restart = 1 @@ -262,6 +289,8 @@ SUBSYSTEM_DEF(vote) restart = 1 else GLOB.master_mode = . + if("mode tiers") + stored_modetier_results = choices.Copy() if("dynamic") if(SSticker.current_state > GAME_STATE_PREGAME)//Don't change the mode if the round already started. return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.") @@ -382,6 +411,13 @@ SUBSYSTEM_DEF(vote) choices |= M if("roundtype") //CIT CHANGE - adds the roundstart secret/extended vote choices.Add("secret", "extended") + if("mode tiers") + var/list/modes_to_add = config.votable_modes + var/list/probabilities = CONFIG_GET(keyed_list/probability) + for(var/tag in modes_to_add) + if(probabilities[tag] <= 0) + modes_to_add -= tag + choices.Add(modes_to_add) if("dynamic") for(var/T in config.storyteller_cache) var/datum/dynamic_storyteller/S = T diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index feac1de972..dfaa6f061d 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -947,21 +947,25 @@ if(A.reagents) var/chosen_id - var/list/reagent_options = sortList(GLOB.chemical_reagents_list) - switch(alert(usr, "Choose a method.", "Add Reagents", "Enter ID", "Choose ID")) - if("Enter ID") + switch(alert(usr, "Choose a method.", "Add Reagents", "Search", "Choose from a list", "I'm feeling lucky")) + if("Search") var/valid_id while(!valid_id) - chosen_id = stripped_input(usr, "Enter the ID of the reagent you want to add.") - if(!chosen_id) //Get me out of here! + chosen_id = input(usr, "Enter the ID of the reagent you want to add.", "Search reagents") as null|text + if(isnull(chosen_id)) //Get me out of here! break - for(var/ID in reagent_options) - if(ID == chosen_id) - valid_id = 1 + if(!ispath(text2path(chosen_id))) + chosen_id = pick_closest_path(chosen_id, make_types_fancy(subtypesof(/datum/reagent))) + if(ispath(chosen_id)) + valid_id = TRUE + else + valid_id = TRUE if(!valid_id) to_chat(usr, "A reagent with that ID doesn't exist!") - if("Choose ID") - chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in reagent_options + if("Choose from a list") + chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in subtypesof(/datum/reagent) + if("I'm feeling lucky") + chosen_id = pick(subtypesof(/datum/reagent)) if(chosen_id) var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", A.reagents.maximum_volume) as num if(amount) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 8a6966666e..056f99c7a4 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -103,7 +103,7 @@ if(!(spread_flags & DISEASE_SPREAD_AIRBORNE) && !force_spread) return - if(affected_mob.reagents.has_reagent("spaceacillin") || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) + if(affected_mob.reagents.has_reagent(/datum/reagent/medicine/spaceacillin) || (affected_mob.satiety > 0 && prob(affected_mob.satiety/10))) return var/spread_range = 2 diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 8d5e915b31..a844254ef9 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -36,37 +36,41 @@ // The order goes from easy to cure to hard to cure. Keep in mind that sentient diseases pick two cures from tier 6 and up, ensure they wont react away in bodies. var/static/list/advance_cures = list( list( // level 1 - "copper", "silver", "iodine", "iron", "carbon" + /datum/reagent/copper, /datum/reagent/silver, /datum/reagent/iodine, /datum/reagent/iron, /datum/reagent/carbon ), list( // level 2 - "potassium", "ethanol", "lithium", "silicon", "bromine" + /datum/reagent/potassium, /datum/reagent/consumable/ethanol, /datum/reagent/lithium, + /datum/reagent/silicon, /datum/reagent/bromine ), list( // level 3 - "sodiumchloride", "sugar", "orangejuice", "tomatojuice", "milk" + /datum/reagent/consumable/sodiumchloride, /datum/reagent/consumable/sugar, /datum/reagent/consumable/orangejuice, + /datum/reagent/consumable/tomatojuice, /datum/reagent/consumable/milk ), list( //level 4 - "spaceacillin", "salglu_solution", "epinephrine", "charcoal" + /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution, + /datum/reagent/medicine/epinephrine, /datum/reagent/medicine/charcoal ), list( //level 5 - "oil", "synaptizine", "mannitol", "space_drugs", "cryptobiolin" + /datum/reagent/oil, /datum/reagent/medicine/synaptizine, /datum/reagent/medicine/mannitol, + /datum/reagent/drug/space_drugs, /datum/reagent/cryptobiolin ), list( // level 6 - "phenol", "inacusiate", "oculine", "antihol" + /datum/reagent/phenol, /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/oculine, /datum/reagent/medicine/antihol ), list( // level 7 - "leporazine", "mindbreaker", "corazone" + /datum/reagent/medicine/leporazine, /datum/reagent/toxin/mindbreaker, /datum/reagent/medicine/corazone ), list( // level 8 - "pax", "happiness", "ephedrine" + /datum/reagent/pax, /datum/reagent/drug/happiness, /datum/reagent/medicine/ephedrine ), list( // level 9 - "lipolicide", "sal_acid" + /datum/reagent/toxin/lipolicide, /datum/reagent/medicine/sal_acid ), list( // level 10 - "haloperidol", "aranesp", "diphenhydramine" + /datum/reagent/medicine/haloperidol, /datum/reagent/drug/aranesp, /datum/reagent/medicine/diphenhydramine ), list( //level 11 - "modafinil", "anacea" + /datum/reagent/medicine/modafinil, /datum/reagent/toxin/anacea ) ) diff --git a/code/datums/diseases/advance/symptoms/choking.dm b/code/datums/diseases/advance/symptoms/choking.dm index a54b132de1..069c62cf3f 100644 --- a/code/datums/diseases/advance/symptoms/choking.dm +++ b/code/datums/diseases/advance/symptoms/choking.dm @@ -138,7 +138,7 @@ Bonus var/get_damage = rand(15,21) * power M.adjustOxyLoss(get_damage) if(paralysis) - M.reagents.add_reagent_list(list("pancuronium" = 3, "sodium_thiopental" = 3)) + M.reagents.add_reagent_list(list(/datum/reagent/toxin/pancuronium = 3, /datum/reagent/toxin/sodium_thiopental = 3)) return 1 /datum/symptom/asphyxiation/proc/Asphyxiate_death(mob/living/M, datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index f85024a7a9..6429db9439 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -156,7 +156,7 @@ Bonus M.adjust_fire_stacks(get_stacks) M.adjustFireLoss(get_stacks/2) if(chems) - M.reagents.add_reagent("clf3", 2 * power) + M.reagents.add_reagent(/datum/reagent/clf3, 2 * power) return 1 /datum/symptom/alkali/proc/Alkali_fire_stage_5(mob/living/M, datum/disease/advance/A) @@ -164,5 +164,5 @@ Bonus M.adjust_fire_stacks(get_stacks) M.adjustFireLoss(get_stacks) if(chems) - M.reagents.add_reagent_list(list("napalm" = 4 * power, "clf3" = 4 * power)) + M.reagents.add_reagent_list(list(/datum/reagent/napalm = 4 * power, /datum/reagent/clf3 = 4 * power)) return 1 diff --git a/code/datums/diseases/advance/symptoms/flesh_eating.dm b/code/datums/diseases/advance/symptoms/flesh_eating.dm index c38acc8e9e..d1e9d3fdca 100644 --- a/code/datums/diseases/advance/symptoms/flesh_eating.dm +++ b/code/datums/diseases/advance/symptoms/flesh_eating.dm @@ -124,7 +124,7 @@ Bonus var/get_damage = rand(6,10) M.adjustBruteLoss(get_damage) if(chems) - M.reagents.add_reagent_list(list("heparin" = 2, "lipolicide" = 2)) + M.reagents.add_reagent_list(list(/datum/reagent/toxin/heparin = 2, /datum/reagent/toxin/lipolicide = 2)) if(zombie) - M.reagents.add_reagent("romerol", 1) + M.reagents.add_reagent(/datum/reagent/romerol, 1) return 1 \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 8b205db756..d41e0bf225 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -117,8 +117,9 @@ power = 2 /datum/symptom/heal/chem/Heal(mob/living/M, datum/disease/advance/A, actual_power) - for(var/datum/reagent/R in M.reagents.reagent_list) //Not just toxins! - M.reagents.remove_reagent(R.id, actual_power) + for(var/E in M.reagents.reagent_list) //Not just toxins! + var/datum/reagent/R = E + M.reagents.remove_reagent(R.type, actual_power) if(food_conversion) M.nutrition += 0.3 if(prob(2)) @@ -329,11 +330,11 @@ if(M.fire_stacks < 0) M.fire_stacks = min(M.fire_stacks + 1 * absorption_coeff, 0) . += power - if(M.reagents.has_reagent("holywater")) - M.reagents.remove_reagent("holywater", 0.5 * absorption_coeff) + if(M.reagents.has_reagent(/datum/reagent/water/holywater)) + M.reagents.remove_reagent(/datum/reagent/water/holywater, 0.5 * absorption_coeff) . += power * 0.75 - else if(M.reagents.has_reagent("water")) - M.reagents.remove_reagent("water", 0.5 * absorption_coeff) + else if(M.reagents.has_reagent(/datum/reagent/water)) + M.reagents.remove_reagent(/datum/reagent/water, 0.5 * absorption_coeff) . += power * 0.5 /datum/symptom/heal/water/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) @@ -392,7 +393,7 @@ plasmamount = environment.gases[/datum/gas/plasma] if(plasmamount && plasmamount > GLOB.meta_gas_visibility[/datum/gas/plasma]) //if there's enough plasma in the air to see . += power * 0.5 - if(M.reagents.has_reagent("plasma")) + if(M.reagents.has_reagent(/datum/reagent/toxin/plasma)) . += power * 0.75 /datum/symptom/heal/plasma/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index 2705e0b168..1f8cc8d7af 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -44,10 +44,10 @@ if(A.stage >= 4) M.drowsyness = max(0, M.drowsyness - 2) - if(M.reagents.has_reagent("mindbreaker")) - M.reagents.remove_reagent("mindbreaker", 5) - if(M.reagents.has_reagent("histamine")) - M.reagents.remove_reagent("histamine", 5) + if(M.reagents.has_reagent(/datum/reagent/toxin/mindbreaker)) + M.reagents.remove_reagent(/datum/reagent/toxin/mindbreaker, 5) + if(M.reagents.has_reagent(/datum/reagent/toxin/histamine)) + M.reagents.remove_reagent(/datum/reagent/toxin/histamine, 5) M.hallucination = max(0, M.hallucination - 10) if(A.stage >= 5) diff --git a/code/datums/diseases/anxiety.dm b/code/datums/diseases/anxiety.dm index 2d96157bb0..20ecceb224 100644 --- a/code/datums/diseases/anxiety.dm +++ b/code/datums/diseases/anxiety.dm @@ -5,7 +5,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Ethanol" - cures = list("ethanol") + cures = list(/datum/reagent/consumable/ethanol) agent = "Excess Lepidopticides" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate butterflies." diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm index ab64fd515c..edd6f151c9 100644 --- a/code/datums/diseases/beesease.dm +++ b/code/datums/diseases/beesease.dm @@ -5,7 +5,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Sugar" - cures = list("sugar") + cures = list(/datum/reagent/consumable/sugar) agent = "Apidae Infection" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated subject will regurgitate bees." diff --git a/code/datums/diseases/brainrot.dm b/code/datums/diseases/brainrot.dm index 98ae74270b..1028d1fff4 100644 --- a/code/datums/diseases/brainrot.dm +++ b/code/datums/diseases/brainrot.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Mannitol" - cures = list("mannitol") + cures = list(/datum/reagent/medicine/mannitol) agent = "Cryptococcus Cosmosis" viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 15//higher chance to cure, since two reagents are required diff --git a/code/datums/diseases/cold.dm b/code/datums/diseases/cold.dm index 22d45ffb29..8bbb05e17c 100644 --- a/code/datums/diseases/cold.dm +++ b/code/datums/diseases/cold.dm @@ -2,7 +2,7 @@ name = "The Cold" max_stages = 3 cure_text = "Rest & Spaceacillin" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) agent = "XY-rhinovirus" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) permeability_mod = 0.5 diff --git a/code/datums/diseases/cold9.dm b/code/datums/diseases/cold9.dm index da5e67a4fb..eea3147107 100644 --- a/code/datums/diseases/cold9.dm +++ b/code/datums/diseases/cold9.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Common Cold Anti-bodies & Spaceacillin" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) agent = "ICE9-rhinovirus" viable_mobtypes = list(/mob/living/carbon/human) desc = "If left untreated the subject will slow, as if partly frozen." diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 267dd711a3..972a7f4e18 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Mutadone" - cures = list("mutadone") + cures = list(/datum/reagent/medicine/mutadone) disease_flags = CAN_CARRY|CAN_RESIST|CURABLE agent = "S4E1 retrovirus" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/fake_gbs.dm b/code/datums/diseases/fake_gbs.dm index add60c73f1..70bcc67d21 100644 --- a/code/datums/diseases/fake_gbs.dm +++ b/code/datums/diseases/fake_gbs.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Synaptizine & Sulfur" - cures = list("synaptizine","sulfur") + cures = list(/datum/reagent/medicine/synaptizine,/datum/reagent/sulfur) agent = "Gravitokinetic Bipotential SADS-" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) desc = "If left untreated death will occur." diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm index e1943937ba..4fc646a590 100644 --- a/code/datums/diseases/flu.dm +++ b/code/datums/diseases/flu.dm @@ -3,7 +3,7 @@ max_stages = 3 spread_text = "Airborne" cure_text = "Spaceacillin" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) cure_chance = 10 agent = "H13N1 flu virion" viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey) diff --git a/code/datums/diseases/fluspanish.dm b/code/datums/diseases/fluspanish.dm index 9577ca43d0..1557ddfbd8 100644 --- a/code/datums/diseases/fluspanish.dm +++ b/code/datums/diseases/fluspanish.dm @@ -3,7 +3,7 @@ max_stages = 3 spread_text = "Airborne" cure_text = "Spaceacillin & Anti-bodies to the common flu" - cures = list("spaceacillin") + cures = list(/datum/reagent/medicine/spaceacillin) cure_chance = 10 agent = "1nqu1s1t10n flu virion" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm index 0487b1c815..8a6eab6048 100644 --- a/code/datums/diseases/gbs.dm +++ b/code/datums/diseases/gbs.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Synaptizine & Sulfur" - cures = list("synaptizine","sulfur") + cures = list(/datum/reagent/medicine/synaptizine,/datum/reagent/sulfur) cure_chance = 15//higher chance to cure, since two reagents are required agent = "Gravitokinetic Bipotential SADS+" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/heart_failure.dm b/code/datums/diseases/heart_failure.dm index 2389052a54..196cd95f69 100644 --- a/code/datums/diseases/heart_failure.dm +++ b/code/datums/diseases/heart_failure.dm @@ -58,7 +58,7 @@ H.visible_message("[H] clutches at [H.p_their()] chest as if [H.p_their()] heart is stopping!") H.adjustStaminaLoss(60) H.set_heartattack(TRUE) - H.reagents.add_reagent("corazone", 3) // To give the victim a final chance to shock their heart before losing consciousness + H.reagents.add_reagent(/datum/reagent/medicine/corazone, 3) // To give the victim a final chance to shock their heart before losing consciousness cure() else diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 7c5f05c440..cb00f571aa 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "Iron" - cures = list("iron") + cures = list(/datum/reagent/iron) agent = "Fukkos Miracos" viable_mobtypes = list(/mob/living/carbon/human) disease_flags = CAN_CARRY|CAN_RESIST|CURABLE diff --git a/code/datums/diseases/parrotpossession.dm b/code/datums/diseases/parrotpossession.dm index d9c4b324f6..68e962055a 100644 --- a/code/datums/diseases/parrotpossession.dm +++ b/code/datums/diseases/parrotpossession.dm @@ -5,7 +5,7 @@ spread_flags = DISEASE_SPREAD_SPECIAL disease_flags = CURABLE cure_text = "Holy Water." - cures = list("holywater") + cures = list(/datum/reagent/water/holywater) cure_chance = 20 agent = "Avian Vengence" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm index b2241d59ba..392e1bc85f 100644 --- a/code/datums/diseases/pierrot_throat.dm +++ b/code/datums/diseases/pierrot_throat.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "Banana products, especially banana bread." - cures = list("banana") + cures = list(/datum/reagent/consumable/banana) cure_chance = 75 agent = "H0NI<42 Virus" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/diseases/retrovirus.dm b/code/datums/diseases/retrovirus.dm index fe099e495b..5854249e54 100644 --- a/code/datums/diseases/retrovirus.dm +++ b/code/datums/diseases/retrovirus.dm @@ -17,7 +17,7 @@ ..() agent = "Virus class [pick("A","B","C","D","E","F")][pick("A","B","C","D","E","F")]-[rand(50,300)]" if(prob(40)) - cures = list("mutadone") + cures = list(/datum/reagent/medicine/mutadone) else restcure = 1 diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index 52e9c2e19f..da6e7da8df 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -4,7 +4,7 @@ spread_text = "On contact" spread_flags = DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS cure_text = "Chick Chicky Boom!" - cures = list("plasma") + cures = list(/datum/reagent/toxin/plasma) agent = "Unknown" viable_mobtypes = list(/mob/living/carbon/human) permeability_mod = 1 diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 083a1f9c6c..1c214c8516 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -93,7 +93,7 @@ /datum/disease/transformation/jungle_fever name = "Jungle Fever" cure_text = "Death." - cures = list("adminordrazine") + cures = list(/datum/reagent/medicine/adminordrazine) spread_text = "Monkey Bites" spread_flags = DISEASE_SPREAD_SPECIAL viable_mobtypes = list(/mob/living/carbon/monkey, /mob/living/carbon/human) @@ -156,7 +156,7 @@ name = "Robotic Transformation" cure_text = "An injection of copper." - cures = list("copper") + cures = list(/datum/reagent/copper) cure_chance = 5 agent = "R2D2 Nanomachines" desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg." @@ -189,7 +189,7 @@ name = "Xenomorph Transformation" cure_text = "Spaceacillin & Glycerol" - cures = list("spaceacillin", "glycerol") + cures = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/glycerol) cure_chance = 5 agent = "Rip-LEY Alien Microbes" desc = "This disease changes the victim into a xenomorph." @@ -218,7 +218,7 @@ /datum/disease/transformation/slime name = "Advanced Mutation Transformation" cure_text = "frost oil" - cures = list("frostoil") + cures = list(/datum/reagent/consumable/frostoil) cure_chance = 80 agent = "Advanced Mutation Toxin" desc = "This highly concentrated extract converts anything into more of itself." @@ -247,7 +247,7 @@ /datum/disease/transformation/corgi name = "The Barkening" cure_text = "Death" - cures = list("adminordrazine") + cures = list(/datum/reagent/medicine/adminordrazine) agent = "Fell Doge Majicks" desc = "This disease transforms the victim into a corgi." severity = DISEASE_SEVERITY_BIOHAZARD @@ -272,7 +272,7 @@ /datum/disease/transformation/morph name = "Gluttony's Blessing" cure_text = "nothing" - cures = list("adminordrazine") + cures = list(/datum/reagent/medicine/adminordrazine) agent = "Gluttony's Blessing" desc = "A 'gift' from somewhere terrible." stage_prob = 20 @@ -289,7 +289,7 @@ /datum/disease/transformation/gondola name = "Gondola Transformation" cure_text = "Condensed Capsaicin, ingested or injected." //getting pepper sprayed doesn't help - cures = list("condensedcapsaicin") //beats the hippie crap right out of your system + cures = list(/datum/reagent/consumable/condensedcapsaicin) //beats the hippie crap right out of your system cure_chance = 80 stage_prob = 5 agent = "Tranquility" @@ -310,17 +310,17 @@ if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent_list(list("pax" = 5)) + affected_mob.reagents.add_reagent(/datum/reagent/pax, 5) if(3) if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent_list(list("pax" = 5)) + affected_mob.reagents.add_reagent(/datum/reagent/pax, 5) if(4) if (prob(5)) affected_mob.emote("smile") if (prob(20)) - affected_mob.reagents.add_reagent_list(list("pax" = 5)) + affected_mob.reagents.add_reagent(/datum/reagent/pax, 5) if (prob(2)) to_chat(affected_mob, "You let go of what you were holding.") var/obj/item/I = affected_mob.get_active_held_item() diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm index 788107c4b6..23902603ce 100644 --- a/code/datums/diseases/tuberculosis.dm +++ b/code/datums/diseases/tuberculosis.dm @@ -4,7 +4,7 @@ max_stages = 5 spread_text = "Airborne" cure_text = "Spaceacillin & salbutamol" - cures = list("spaceacillin", "salbutamol") + cures = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salbutamol) agent = "Fungal Tubercle bacillus Cosmosis" viable_mobtypes = list(/mob/living/carbon/human) cure_chance = 5//like hell are you getting out of hell diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index b288046380..244cc819d8 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -3,7 +3,7 @@ max_stages = 4 spread_text = "Airborne" cure_text = "The Manly Dorf" - cures = list("manlydorf") + cures = list(/datum/reagent/consumable/ethanol/manly_dorf) cure_chance = 100 agent = "Rincewindus Vulgaris" viable_mobtypes = list(/mob/living/carbon/human) diff --git a/code/datums/elements/wuv.dm b/code/datums/elements/wuv.dm new file mode 100644 index 0000000000..84f327500f --- /dev/null +++ b/code/datums/elements/wuv.dm @@ -0,0 +1,60 @@ + +/datum/element/wuv //D'awwwww + element_flags = ELEMENT_BESPOKE + id_arg_index = 2 + //the for the me emote proc call when petted. + var/pet_emote + //whether the emote is visible or audible + var/pet_type + //same as above, except when harmed. "You are going into orbit, you stupid mutt!" + var/punt_emote + //same as pet_type + var/punt_type + //mood typepath for the moodlet signal when petted. + var/pet_moodlet + //same as above but for harm + var/punt_moodlet + +/datum/element/wuv/Attach(datum/target, pet, pet_t, pet_mood, punt, punt_t, punt_mood) + . = ..() + + if(!isliving(target)) + return ELEMENT_INCOMPATIBLE + + pet_emote = pet + pet_type = pet_t + punt_emote = punt + punt_type = punt_t + pet_moodlet = pet_mood + punt_moodlet = punt_mood + + RegisterSignal(target, COMSIG_MOB_ATTACK_HAND, .proc/on_attack_hand) + +/datum/element/wuv/proc/on_attack_hand(datum/source, mob/user) + var/mob/living/L = source + + if(L.stat == DEAD) + return + //we want to delay the effect to be displayed after the mob is petted, not before. + switch(user.a_intent) + if(INTENT_HARM, INTENT_DISARM) + addtimer(CALLBACK(src, .proc/kick_the_dog, source, user), 1) + if(INTENT_HELP) + addtimer(CALLBACK(src, .proc/pet_the_dog, source, user), 1) + +/datum/element/wuv/proc/pet_the_dog(mob/target, mob/user) + if(!QDELETED(target) || !QDELETED(user) || target.stat != CONSCIOUS) + return + new /obj/effect/temp_visual/heart(target.loc) + if(pet_emote) + target.emote("me", pet_type, pet_emote) + if(pet_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1)) //prevents unlimited happiness petting park exploit. + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, pet_moodlet, target) + +/datum/element/wuv/proc/kick_the_dog(mob/target, mob/user) + if(!QDELETED(target) || !QDELETED(user) || target.stat != CONSCIOUS) + return + if(punt_emote) + target.emote("me", punt_type, punt_emote) + if(punt_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1)) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, punt_moodlet, target) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 5c92c83fb5..8ae45ff720 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -525,7 +525,7 @@ if(!objective) to_chat(usr,"Invalid objective.") return - //qdel(objective) Needs cleaning objective destroys + qdel(objective) //TODO: Needs cleaning objective destroys (whatever that means) message_admins("[key_name_admin(usr)] removed an objective for [current]: [objective.explanation_text]") log_admin("[key_name(usr)] removed an objective for [current]: [objective.explanation_text]") diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index 94fd08535f..98a8eade59 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -23,10 +23,13 @@ mood_change = 3 timeout = 3000 -/datum/mood_event/pet_corgi - description = "Corgis are adorable! I can't stop petting them!\n" - mood_change = 3 - timeout = 3000 +/datum/mood_event/pet_animal + description = "Animals are adorable! I can't stop petting them!\n" + mood_change = 2 + timeout = 5 MINUTES + +/datum/mood_event/pet_animal/add_effects(mob/animal) + description = "\The [animal.name] is adorable! I can't stop petting [animal.p_them()]!\n" /datum/mood_event/honk description = "Maybe clowns aren't so bad after all. Honk!\n" diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm index 0ceb4443de..c4d0d6f9c6 100644 --- a/code/datums/recipe.dm +++ b/code/datums/recipe.dm @@ -88,7 +88,7 @@ var/obj/result_obj = new result(container) for (var/obj/O in (container.contents-result_obj)) if (O.reagents) - O.reagents.del_reagent("nutriment") + O.reagents.del_reagent(/datum/reagent/consumable/nutriment) O.reagents.update_total() O.reagents.trans_to(result_obj, O.reagents.total_volume) qdel(O) diff --git a/code/datums/ruins/station.dm b/code/datums/ruins/station.dm index 624081156a..e637b6178f 100644 --- a/code/datums/ruins/station.dm +++ b/code/datums/ruins/station.dm @@ -8,29 +8,29 @@ /datum/map_template/ruin/station/box/engine id = "engine_sm" suffix = "Box/Engine/engine_sm.dmm" - name = "Engine SM" + name = "Box SM" /datum/map_template/ruin/station/box/engine/onebythree id = "engine_sm_1x3" suffix = "Box/Engine/engine_sm_1x3.dmm" - name = "Engine SM 1x3" + name = "Box SM 1x3" /datum/map_template/ruin/station/box/engine/fivebyfive id = "engine_sm_5x5" suffix = "Box/Engine/engine_sm_5x5.dmm" - name = "Engine SM 5x5" + name = "Box SM 5x5" /datum/map_template/ruin/station/box/engine/threesm id = "engine_sm_3x" suffix = "Box/Engine/engine_sm_3x.dmm" - name = "Engine SM 3x" + name = "Box SM 3x" /datum/map_template/ruin/station/box/engine/singulo id = "engine_singulo" suffix = "Box/Engine/engine_singulo.dmm" - name = "Engine Singulo" + name = "Box Singulo" /datum/map_template/ruin/station/box/engine/tesla id = "engine_tesla" suffix = "Box/Engine/engine_tesla.dmm" - name = "Engine Tesla" \ No newline at end of file + name = "Box Tesla" diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index f5f012e7f9..036d8193fb 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -99,6 +99,12 @@ id = "Mesmerize" alert_type = /obj/screen/alert/status_effect/mesmerized +/datum/status_effect/no_combat_mode/mesmerize/on_apply() + ADD_TRAIT(owner, TRAIT_MUTE, "mesmerize") + +/datum/status_effect/no_combat_mode/mesmerize/on_remove() + REMOVE_TRAIT(owner, TRAIT_MUTE, "mesmerize") + /obj/screen/alert/status_effect/mesmerized name = "Mesmerized" desc = "You cant tear your sight from who is in front of you...Their gaze is simply too enthralling.." @@ -302,7 +308,7 @@ /datum/status_effect/cultghost/tick() if(owner.reagents) - owner.reagents.del_reagent("holywater") //can't be deconverted + owner.reagents.del_reagent(/datum/reagent/water/holywater) //can't be deconverted /datum/status_effect/crusher_mark id = "crusher_mark" diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 3319259381..c5217d8e4b 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -289,7 +289,7 @@ medical_record_text = "Patient suffers from acute Reality Dissociation Syndrome and experiences vivid hallucinations." /datum/quirk/insanity/on_process() - if(quirk_holder.reagents.has_reagent("mindbreaker")) + if(quirk_holder.reagents.has_reagent(/datum/reagent/toxin/mindbreaker)) quirk_holder.hallucination = 0 return if(prob(2)) //we'll all be mad soon enough diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index e712a38df1..8be3174f50 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -122,6 +122,15 @@ gain_text = "You feel like exposing yourself to the world." lose_text = "Indecent exposure doesn't sound as charming to you anymore." +/datum/quirk/coldblooded + name = "Cold-blooded" + desc = "Your body doesn't create its own internal heat, requiring external heat regulation." + value = 0 + medical_record_text = "Patient is ectothermic." + mob_trait = TRAIT_COLDBLOODED + gain_text = "You feel cold-blooded." + lose_text = "You feel more warm-blooded." + /datum/quirk/alcohol_intolerance name = "Alcohol Intolerance" desc = "You take toxin damage from alcohol rather than getting drunk." diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index 0c43d33a4b..e01b525e02 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -25,16 +25,16 @@ var/key_valid var/require_comms_key = FALSE -/datum/world_topic/proc/TryRun(list/input) +/datum/world_topic/proc/TryRun(list/input, addr) key_valid = config && (CONFIG_GET(string/comms_key) == input["key"]) if(require_comms_key && !key_valid) return "Bad Key" input -= "key" - . = Run(input) + . = Run(input, addr) if(islist(.)) . = list2params(.) -/datum/world_topic/proc/Run(list/input) +/datum/world_topic/proc/Run(list/input, addr) CRASH("Run() not implemented for [type]!") // TOPICS @@ -43,7 +43,7 @@ keyword = "ping" log = FALSE -/datum/world_topic/ping/Run(list/input) +/datum/world_topic/ping/Run(list/input, addr) . = 0 for (var/client/C in GLOB.clients) ++. @@ -52,7 +52,7 @@ keyword = "playing" log = FALSE -/datum/world_topic/playing/Run(list/input) +/datum/world_topic/playing/Run(list/input, addr) return GLOB.player_list.len /datum/world_topic/pr_announce @@ -60,7 +60,7 @@ require_comms_key = TRUE var/static/list/PRcounts = list() //PR id -> number of times announced this round -/datum/world_topic/pr_announce/Run(list/input) +/datum/world_topic/pr_announce/Run(list/input, addr) var/list/payload = json_decode(input["payload"]) var/id = "[payload["pull_request"]["id"]]" if(!PRcounts[id]) @@ -78,14 +78,14 @@ keyword = "Ahelp" require_comms_key = TRUE -/datum/world_topic/ahelp_relay/Run(list/input) +/datum/world_topic/ahelp_relay/Run(list/input, addr) relay_msg_admins("HELP: [input["source"]] [input["message_sender"]]: [input["message"]]") /datum/world_topic/comms_console keyword = "Comms_Console" require_comms_key = TRUE -/datum/world_topic/comms_console/Run(list/input) +/datum/world_topic/comms_console/Run(list/input, addr) minor_announce(input["message"], "Incoming message from [input["message_sender"]]") for(var/obj/machinery/computer/communications/CM in GLOB.machines) CM.overrideCooldown() @@ -94,17 +94,17 @@ keyword = "News_Report" require_comms_key = TRUE -/datum/world_topic/news_report/Run(list/input) +/datum/world_topic/news_report/Run(list/input, addr) minor_announce(input["message"], "Breaking Update From [input["message_sender"]]") /datum/world_topic/server_hop keyword = "server_hop" -/datum/world_topic/server_hop/Run(list/input) +/datum/world_topic/server_hop/Run(list/input, addr) var/expected_key = input[keyword] for(var/mob/dead/observer/O in GLOB.player_list) if(O.key == expected_key) - if(O.client) + if(O.client?.address == addr) new /obj/screen/splash(O.client, TRUE) break @@ -112,14 +112,14 @@ keyword = "adminmsg" require_comms_key = TRUE -/datum/world_topic/adminmsg/Run(list/input) +/datum/world_topic/adminmsg/Run(list/input, addr) return IrcPm(input[keyword], input["msg"], input["sender"]) /datum/world_topic/namecheck keyword = "namecheck" require_comms_key = TRUE -/datum/world_topic/namecheck/Run(list/input) +/datum/world_topic/namecheck/Run(list/input, addr) //Oh this is a hack, someone refactor the functionality out of the chat command PLS var/datum/tgs_chat_command/namecheck/NC = new var/datum/tgs_chat_user/user = new @@ -131,13 +131,13 @@ keyword = "adminwho" require_comms_key = TRUE -/datum/world_topic/adminwho/Run(list/input) +/datum/world_topic/adminwho/Run(list/input, addr) return ircadminwho() /datum/world_topic/status keyword = "status" -/datum/world_topic/status/Run(list/input) +/datum/world_topic/status/Run(list/input, addr) . = list() .["version"] = GLOB.game_version .["mode"] = "hidden" //CIT CHANGE - hides the gamemode in topic() calls to prevent meta'ing the gamemode diff --git a/code/game/gamemodes/bloodsucker/bloodsucker.dm b/code/game/gamemodes/bloodsucker/bloodsucker.dm index e784fd836d..ca2ebfe00d 100644 --- a/code/game/gamemodes/bloodsucker/bloodsucker.dm +++ b/code/game/gamemodes/bloodsucker/bloodsucker.dm @@ -9,6 +9,8 @@ var/list/vassal_allowed_antags = list(/datum/antagonist/brother, /datum/antagonist/traitor, /datum/antagonist/traitor/internal_affairs, /datum/antagonist/survivalist, \ /datum/antagonist/rev, /datum/antagonist/nukeop, /datum/antagonist/pirate, /datum/antagonist/cult, /datum/antagonist/abductee) // The antags you're allowed to be if turning Vassal. +/proc/isvamp(mob/living/M) + return istype(M) && M.mind && M.mind.has_antag_datum(/datum/antagonist/bloodsucker) /datum/game_mode/bloodsucker name = "bloodsucker" diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 9b52ddda1e..0945875ac9 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -8,7 +8,7 @@ spray_range = 1 stream_range = 1 volume = 30 - list_reagents = list("lube" = 30) + list_reagents = list(/datum/reagent/lube = 30) //COMBAT CLOWN SHOES //Clown shoes with combat stats and noslip. Of course they still squeak. @@ -165,7 +165,7 @@ customfoodfilling = FALSE seed = null tastes = list("explosives" = 10) - list_reagents = list("vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) /obj/item/grown/bananapeel/bombanana desc = "A peel from a banana. Why is it beeping?" diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 520721560a..4fd4a7929d 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -14,14 +14,14 @@ circuit = /obj/item/circuitboard/machine/sleeper req_access = list(ACCESS_CMO) //Used for reagent deletion and addition of non medicines var/efficiency = 1 - var/min_health = -25 + var/min_health = 30 var/list/available_chems var/controls_inside = FALSE var/list/possible_chems = list( - list("epinephrine", "morphine", "salbutamol", "bicaridine", "kelotane"), - list("oculine","inacusiate"), - list("antitoxin", "mutadone", "mannitol", "pen_acid"), - list("omnizine") + list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/morphine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane), + list(/datum/reagent/medicine/oculine,/datum/reagent/medicine/inacusiate), + list(/datum/reagent/medicine/antitoxin, /datum/reagent/medicine/mutadone, /datum/reagent/medicine/mannitol, /datum/reagent/medicine/pen_acid), + list(/datum/reagent/medicine/omnizine) ) var/list/chem_buttons //Used when emagged to scramble which chem is used, eg: antitoxin -> morphine var/scrambled_chems = FALSE //Are chem buttons scrambled? used as a warning @@ -106,7 +106,7 @@ return if(is_operational() && occupant) var/datum/reagent/R = pick(reagents.reagent_list) - inject_chem(R.id, occupant) + inject_chem(R.type, occupant) open_machine() //Is this too much? if(severity == EMP_HEAVY) @@ -217,9 +217,9 @@ for(var/chem in available_chems) var/datum/reagent/R = reagents.has_reagent(chem) R = GLOB.chemical_reagents_list[chem] - data["synthchems"] += list(list("name" = R.name, "id" = R.id, "synth_allowed" = synth_allowed(chem))) + data["synthchems"] += list(list("name" = R.name, "id" = R.type, "synth_allowed" = synth_allowed(chem))) for(var/datum/reagent/R in reagents.reagent_list) - data["chems"] += list(list("name" = R.name, "id" = R.id, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.id))) + data["chems"] += list(list("name" = R.name, "id" = R.type, "vol" = R.volume, "purity" = R.purity, "allowed" = chem_allowed(R.type))) data["occupant"] = list() var/mob/living/mob_occupant = occupant @@ -289,23 +289,23 @@ open_machine() . = TRUE if("inject") - var/chem = params["chem"] + var/chem = text2path(params["chem"]) var/amount = text2num(params["volume"]) - if(!is_operational() || !mob_occupant) + if(!is_operational() || !mob_occupant || isnull(chem)) return - if(mob_occupant.health < min_health && chem != "epinephrine") + if(mob_occupant.health < min_health && chem != /datum/reagent/medicine/epinephrine) return if(inject_chem(chem, usr, amount)) . = TRUE if(scrambled_chems && prob(5)) to_chat(usr, "Chemical system re-route detected, results may not be as expected!") if("synth") - var/chem = params["chem"] + var/chem = text2path(params["chem"]) if(!is_operational()) return reagents.add_reagent(chem_buttons[chem], 10) //other_purity = 0.75 for when the mechanics are in if("purge") - var/chem = params["chem"] + var/chem = text2path(params["chem"]) if(allowed(usr)) if(!is_operational()) return @@ -342,7 +342,7 @@ if(!mob_occupant || !mob_occupant.reagents) return var/amount = mob_occupant.reagents.get_reagent_amount(chem) + 10 <= 20 * efficiency - var/occ_health = mob_occupant.health > min_health || chem == "epinephrine" + var/occ_health = mob_occupant.health > min_health || chem == /datum/reagent/medicine/epinephrine return amount && occ_health /obj/machinery/sleeper/proc/synth_allowed(chem) diff --git a/code/game/machinery/bloodbankgen.dm b/code/game/machinery/bloodbankgen.dm index c92e55084d..948e9b98f9 100644 --- a/code/game/machinery/bloodbankgen.dm +++ b/code/game/machinery/bloodbankgen.dm @@ -123,15 +123,15 @@ if(reagents.total_volume >= reagents.maximum_volume || !bag || !bag.reagents.total_volume) beep_stop_pumping() return - var/blood_amount = bag.reagents.get_reagent_amount("blood") + var/blood_amount = bag.reagents.get_reagent_amount(/datum/reagent/blood) //monitor the machine and blood bag's reagents storage. var/amount = min(blood_amount, min(transfer_amount, reagents.maximum_volume - reagents.total_volume)) if(!amount) beep_stop_pumping() return var/bonus = bag.blood_type == "SY" ? 0 : 5 * efficiency //no infinite loops using synthetics. - reagents.add_reagent("syntheticblood", amount + bonus) - bag.reagents.remove_reagent("blood", amount) + reagents.add_reagent(/datum/reagent/blood/synthetics, amount + bonus) + bag.reagents.remove_reagent(/datum/reagent/blood, amount) update_icon() if(filling) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index e683d67be2..97b260f3bf 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -155,6 +155,8 @@ mess = TRUE update_icon() return FALSE + if(isvamp(clonemind)) //If the mind is a bloodsucker + return FALSE attempting = TRUE //One at a time!! countdown.start() diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 394cc4593d..7330ae26e7 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -88,7 +88,7 @@ occupant_status += "" occupant_status += "
Health:
[viable_occupant.health] %
" occupant_status += "
Radiation Level:
[viable_occupant.radiation/(RAD_MOB_SAFE/100)] %
" - var/rejuvenators = viable_occupant.reagents.get_reagent_amount("potass_iodide") + var/rejuvenators = viable_occupant.reagents.get_reagent_amount(/datum/reagent/medicine/potass_iodide) occupant_status += "
Rejuvenators:
[rejuvenators] units
" occupant_status += "
Unique Enzymes :
[viable_occupant.dna.unique_enzymes]
" occupant_status += "
Last Operation:
[last_change ? last_change : "----"]
" @@ -342,9 +342,9 @@ current_screen = href_list["text"] if("rejuv") if(viable_occupant && viable_occupant.reagents) - var/potassiodide_amount = viable_occupant.reagents.get_reagent_amount("potass_iodide") + var/potassiodide_amount = viable_occupant.reagents.get_reagent_amount(/datum/reagent/medicine/potass_iodide) var/can_add = max(min(REJUVENATORS_MAX - potassiodide_amount, REJUVENATORS_INJECT), 0) - viable_occupant.reagents.add_reagent("potass_iodide", can_add) + viable_occupant.reagents.add_reagent(/datum/reagent/medicine/potass_iodide, can_add) if("setbufferlabel") var/text = sanitize(input(usr, "Input a new label:", "Input an Text", null) as text|null) if(num && text) diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 1c25c7b242..65f7602215 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -7,26 +7,51 @@ GLOBAL_LIST_EMPTY(doppler_arrays) icon_state = "tdoppler" density = TRUE var/integrated = FALSE + var/list_limit = 100 + var/cooldown = 10 + var/next_announce = 0 var/max_dist = 150 verb_say = "states coldly" + var/list/message_log = list() /obj/machinery/doppler_array/Initialize() . = ..() GLOB.doppler_arrays += src /obj/machinery/doppler_array/ComponentInitialize() + . = ..() AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE,null,null,CALLBACK(src,.proc/rot_message)) /obj/machinery/doppler_array/Destroy() GLOB.doppler_arrays -= src return ..() -/obj/machinery/doppler_array/examine(mob/user) +/obj/machinery/doppler_array/ui_interact(mob/user) . = ..() - . += "Its dish is facing to the [dir2text(dir)]." + if(stat) + return FALSE -/obj/machinery/doppler_array/process() - return PROCESS_KILL + var/list/dat = list() + for(var/i in 1 to LAZYLEN(message_log)) + dat += "Log recording #[i]: [message_log[i]]

" + dat += "Delete logs
" + dat += "
" + dat += "(Refresh)
" + dat += "" + var/datum/browser/popup = new(user, "computer", name, 400, 500) + popup.set_content(dat.Join(" ")) + popup.open() + +/obj/machinery/doppler_array/Topic(href, href_list) + if(..()) + return + if(href_list["delete_log"]) + LAZYCLEARLIST(message_log) + if(href_list["refresh"]) + updateUsrDialog() + + updateUsrDialog() + return /obj/machinery/doppler_array/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/wrench)) @@ -46,15 +71,18 @@ GLOBAL_LIST_EMPTY(doppler_arrays) to_chat(user, "You adjust [src]'s dish to face to the [dir2text(dir)].") playsound(src, 'sound/items/screwdriver2.ogg', 50, 1) -/obj/machinery/doppler_array/proc/sense_explosion(turf/epicenter,devastation_range,heavy_impact_range,light_impact_range, - took,orig_dev_range,orig_heavy_range,orig_light_range) +/obj/machinery/doppler_array/proc/sense_explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, + took, orig_dev_range, orig_heavy_range, orig_light_range) if(stat & NOPOWER) return FALSE var/turf/zone = get_turf(src) - if(zone.z != epicenter.z) return FALSE + if(next_announce > world.time) + return FALSE + next_announce = world.time + cooldown + var/distance = get_dist(epicenter, zone) var/direct = get_dir(zone, epicenter) @@ -80,8 +108,19 @@ GLOBAL_LIST_EMPTY(doppler_arrays) else for(var/message in messages) say(message) + if(LAZYLEN(message_log) > list_limit) + say("Storage buffer is full! Clearing buffers...") + LAZYCLEARLIST(message_log) + LAZYADD(message_log, messages.Join(" ")) return TRUE +/obj/machinery/doppler_array/examine(mob/user) + . = ..() + . += "Its dish is facing to the [dir2text(dir)]." + +/obj/machinery/doppler_array/process() + return PROCESS_KILL + /obj/machinery/doppler_array/power_change() if(stat & BROKEN) icon_state = "[initial(icon_state)]-broken" diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 71f39608b5..8f7fce8e3e 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -256,7 +256,6 @@ return return ..() - /obj/machinery/firealarm/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() if(.) //damage received diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 794509801b..bf9400219b 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -89,7 +89,7 @@ selected_category = href_list["category"] if(href_list["disposeI"]) //Get rid of a reagent incase you add the wrong one by mistake - reagents.del_reagent(href_list["disposeI"]) + reagents.del_reagent(text2path(href_list["disposeI"])) if(href_list["make"]) @@ -100,10 +100,10 @@ return - var/synth_cost = being_built.reagents_list["synthflesh"]*prod_coeff + var/synth_cost = being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff var/power = max(2000, synth_cost/5) - if(reagents.has_reagent("synthflesh", being_built.reagents_list["synthflesh"]*prod_coeff)) + if(reagents.has_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) busy = TRUE use_power(power) flick("limbgrower_fill",src) @@ -117,8 +117,8 @@ return /obj/machinery/limbgrower/proc/build_item() - if(reagents.has_reagent("synthflesh", being_built.reagents_list["synthflesh"]*prod_coeff)) //sanity check, if this happens we are in big trouble - reagents.remove_reagent("synthflesh",being_built.reagents_list["synthflesh"]*prod_coeff) + if(reagents.has_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) //sanity check, if this happens we are in big trouble + reagents.remove_reagent(/datum/reagent/medicine/synthflesh, being_built.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff) var/buildpath = being_built.build_path if(ispath(buildpath, /obj/item/bodypart)) //This feels like spatgheti code, but i need to initilise a limb somehow build_limb(buildpath) @@ -198,7 +198,7 @@ for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
" + dat += "Purge
" dat += "" return dat @@ -208,12 +208,12 @@ return dat /obj/machinery/limbgrower/proc/can_build(datum/design/D) - return (reagents.has_reagent("synthflesh", D.reagents_list["synthflesh"]*prod_coeff)) //Return whether the machine has enough synthflesh to produce the design + return (reagents.has_reagent(/datum/reagent/medicine/synthflesh, D.reagents_list[/datum/reagent/medicine/synthflesh]*prod_coeff)) //Return whether the machine has enough synthflesh to produce the design /obj/machinery/limbgrower/proc/get_design_cost(datum/design/D) var/dat if(D.reagents_list["synthflesh"]) - dat += "[D.reagents_list["synthflesh"] * prod_coeff] Synthetic flesh " + dat += "[D.reagents_list[/datum/reagent/medicine/synthflesh] * prod_coeff] Synthetic flesh " return dat /obj/machinery/limbgrower/emag_act(mob/user) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 4ed541ef10..c0f563d44d 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -18,6 +18,28 @@ . = ..() update_icon() +/obj/machinery/recharge_station/upgraded + +/obj/machinery/recharge_station/upgraded/Initialize() + . = ..() + component_parts = list() + component_parts += new /obj/item/circuitboard/machine/cyborgrecharger(null) + component_parts += new /obj/item/stock_parts/capacitor/super(null) + component_parts += new /obj/item/stock_parts/manipulator/pico(null) + component_parts += new /obj/item/stock_parts/cell/hyper(null) + RefreshParts() + +/obj/machinery/recharge_station/fullupgrade + +/obj/machinery/recharge_station/fullupgrade/Initialize() + . = ..() + component_parts = list() + component_parts += new /obj/item/circuitboard/machine/cyborgrecharger(null) + component_parts += new /obj/item/stock_parts/capacitor/quadratic(null) + component_parts += new /obj/item/stock_parts/manipulator/femto(null) + component_parts += new /obj/item/stock_parts/cell/bluespace(null) + RefreshParts() + /obj/machinery/recharge_station/RefreshParts() recharge_speed = 0 repairs = 0 diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index ae3fdb15b4..4d6c94ac88 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -191,11 +191,11 @@ if(!R || !patient || !SG || !(SG in chassis.equipment)) return 0 var/to_inject = min(R.volume, inject_amount) - if(to_inject && patient.reagents.get_reagent_amount(R.id) + to_inject <= inject_amount*2) + if(to_inject && patient.reagents.get_reagent_amount(R.type) + to_inject <= inject_amount*2) occupant_message("Injecting [patient] with [to_inject] units of [R.name].") log_message("Injecting [patient] with [to_inject] units of [R.name].") log_combat(chassis.occupant, patient, "injected", "[name] ([R] - [to_inject] units)") - SG.reagents.trans_id_to(patient,R.id,to_inject) + SG.reagents.trans_id_to(patient,R.type,to_inject) update_equip_info() return @@ -228,8 +228,8 @@ M.AdjustStun(-80) M.AdjustKnockdown(-80) M.AdjustUnconscious(-80) - if(M.reagents.get_reagent_amount("epinephrine") < 5) - M.reagents.add_reagent("epinephrine", 5) + if(M.reagents.get_reagent_amount(/datum/reagent/medicine/epinephrine) < 5) + M.reagents.add_reagent(/datum/reagent/medicine/epinephrine, 5) chassis.use_power(energy_drain) update_equip_info() @@ -259,7 +259,7 @@ . = ..() create_reagents(max_volume, NO_REACT) syringes = new - known_reagents = list("epinephrine"="Epinephrine","charcoal"="Charcoal") + known_reagents = list(/datum/reagent/medicine/epinephrine = "Epinephrine", /datum/reagent/medicine/charcoal = "Charcoal") processed_reagents = new /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/detach() @@ -330,8 +330,7 @@ if(M.can_inject(null, 1)) if(mechsyringe.reagents) for(var/datum/reagent/A in mechsyringe.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," + R += "[A.name] ([num2text(A.volume)]" mechsyringe.icon_state = initial(mechsyringe.icon_state) mechsyringe.icon = initial(mechsyringe.icon) mechsyringe.reagents.reaction(M, INJECT) @@ -445,7 +444,7 @@ var/output for(var/datum/reagent/R in reagents.reagent_list) if(R.volume > 0) - output += "[R]: [round(R.volume,0.001)] - Purge Reagent
" + output += "[R]: [round(R.volume,0.001)] - Purge Reagent
" if(output) output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" return output || "None" @@ -481,7 +480,7 @@ return 0 occupant_message("Analyzing reagents...") for(var/datum/reagent/R in A.reagents.reagent_list) - if(R.can_synth && add_known_reagent(R.id,R.name)) + if(R.can_synth && add_known_reagent(R.type,R.name)) occupant_message("Reagent analyzed, identified as [R.name] and added to database.") send_byjax(chassis.occupant,"msyringegun.browser","reagents_form",get_reagents_form()) occupant_message("Analyzis complete.") diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index ca8e8cecd9..30576a739d 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -171,7 +171,7 @@ /obj/item/mecha_parts/mecha_equipment/extinguisher/Initialize() . = ..() create_reagents(1000) - reagents.add_reagent("water", 1000) + reagents.add_reagent(/datum/reagent/water, 1000) /obj/item/mecha_parts/mecha_equipment/extinguisher/action(atom/target) //copypasted from extinguisher. TODO: Rewrite from scratch. if(!action_checks(target) || get_dist(chassis, target)>3) diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index 62a62b569d..dd335e8b37 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -286,10 +286,10 @@ /obj/mecha/proc/mech_toxin_damage(mob/living/target) playsound(src, 'sound/effects/spray2.ogg', 50, 1) if(target.reagents) - if(target.reagents.get_reagent_amount("cryptobiolin") + force < force*2) - target.reagents.add_reagent("cryptobiolin", force/2) - if(target.reagents.get_reagent_amount("toxin") + force < force*2) - target.reagents.add_reagent("toxin", force/2.5) + if(target.reagents.get_reagent_amount(/datum/reagent/cryptobiolin) + force < force*2) + target.reagents.add_reagent(/datum/reagent/cryptobiolin, force/2) + if(target.reagents.get_reagent_amount(/datum/reagent/toxin) + force < force*2) + target.reagents.add_reagent(/datum/reagent/toxin, force/2.5) /obj/mecha/mech_melee_attack(obj/mecha/M) diff --git a/code/game/objects/effects/decals/cleanable/aliens.dm b/code/game/objects/effects/decals/cleanable/aliens.dm index a4d0da1bbe..0c52f57ae9 100644 --- a/code/game/objects/effects/decals/cleanable/aliens.dm +++ b/code/game/objects/effects/decals/cleanable/aliens.dm @@ -9,7 +9,7 @@ /obj/effect/decal/cleanable/blood/gibs/xeno color = BLOOD_COLOR_XENO - gibs_reagent_id = "liquidxenogibs" + gibs_reagent_id = /datum/reagent/liquidgibs/xeno gibs_bloodtype = "X*" /obj/effect/decal/cleanable/blood/gibs/xeno/Initialize(mapload, list/datum/disease/diseases) diff --git a/code/game/objects/effects/decals/cleanable/gibs.dm b/code/game/objects/effects/decals/cleanable/gibs.dm index 03eeca7d0b..9680dc2034 100644 --- a/code/game/objects/effects/decals/cleanable/gibs.dm +++ b/code/game/objects/effects/decals/cleanable/gibs.dm @@ -6,7 +6,7 @@ random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6") mergeable_decal = FALSE var/body_colors = "#e3ba84" //a default color just in case. - var/gibs_reagent_id = "liquidgibs" + var/gibs_reagent_id = /datum/reagent/liquidgibs var/gibs_bloodtype = "A+" /obj/effect/decal/cleanable/blood/gibs/Initialize(mapload, list/datum/disease/diseases) @@ -120,7 +120,6 @@ //Lizards /obj/effect/decal/cleanable/blood/gibs/human/lizard body_colors = "117720" - gibs_reagent_id = "liquidgibs" gibs_bloodtype = "L" /obj/effect/decal/cleanable/blood/gibs/human/lizard/Initialize(mapload, list/datum/disease/diseases) @@ -148,7 +147,7 @@ // Slime Gibs /obj/effect/decal/cleanable/blood/gibs/slime desc = "They look gooey and gruesome." - gibs_reagent_id = "liquidslimegibs" + gibs_reagent_id = /datum/reagent/liquidgibs/slime gibs_bloodtype = "GEL" /obj/effect/decal/cleanable/blood/gibs/slime/Initialize(mapload, list/datum/disease/diseases) @@ -187,7 +186,7 @@ /obj/effect/decal/cleanable/blood/gibs/synth desc = "They look sludgy and disgusting." - gibs_reagent_id = "liquidsyntheticgibs" + gibs_reagent_id = /datum/reagent/liquidgibs/synth gibs_bloodtype = "SY" /obj/effect/decal/cleanable/blood/gibs/synth/Initialize(mapload, list/datum/disease/diseases) @@ -198,7 +197,7 @@ /obj/effect/decal/cleanable/blood/gibs/ipc desc = "They look sharp yet oozing." body_colors = "00ff00" - gibs_reagent_id = "liquidoilgibs" + gibs_reagent_id = /datum/reagent/liquidgibs/oil gibs_bloodtype = "HF" /obj/effect/decal/cleanable/blood/gibs/ipc/Initialize(mapload, list/datum/disease/diseases) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 6f92e94759..6466ab594f 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -13,7 +13,7 @@ /obj/effect/decal/cleanable/ash/Initialize() . = ..() - reagents.add_reagent("ash", 30) + reagents.add_reagent(/datum/reagent/ash, 30) pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) @@ -27,7 +27,7 @@ /obj/effect/decal/cleanable/ash/large/Initialize() . = ..() - reagents.add_reagent("ash", 30) //double the amount of ash. + reagents.add_reagent(/datum/reagent/ash, 30) //double the amount of ash. /obj/effect/decal/cleanable/glass name = "tiny shards" @@ -131,12 +131,10 @@ playsound(get_turf(src), 'sound/items/drink.ogg', 50, 1) //slurp H.visible_message("[H] extends a small proboscis into the vomit pool, sucking it with a slurping sound.") if(reagents) - for(var/datum/reagent/R in reagents.reagent_list) - if (istype(R, /datum/reagent/consumable)) - var/datum/reagent/consumable/nutri_check = R - if(nutri_check.nutriment_factor >0) - H.nutrition += nutri_check.nutriment_factor * nutri_check.volume - reagents.remove_reagent(nutri_check.id,nutri_check.volume) + for(var/datum/reagent/consumable/R in reagents.reagent_list) + if(R.nutriment_factor > 0) + H.nutrition += R.nutriment_factor * R.volume + reagents.del_reagent(R.type) reagents.trans_to(H, reagents.total_volume) qdel(src) diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 02bf51bdd9..3e94abbf93 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -13,7 +13,7 @@ /obj/effect/decal/cleanable/robot_debris/Initialize(mapload, list/datum/disease/diseases) . = ..() - reagents.add_reagent("liquidoilgibs", 5) + reagents.add_reagent(/datum/reagent/liquidgibs, 5) /obj/effect/decal/cleanable/robot_debris/proc/streak(list/directions) set waitfor = 0 @@ -53,8 +53,8 @@ /obj/effect/decal/cleanable/oil/Initialize() . = ..() - reagents.add_reagent("oil", 30) - reagents.add_reagent("liquidoilgibs", 5) + reagents.add_reagent(/datum/reagent/oil, 30) + reagents.add_reagent(/datum/reagent/liquidgibs/oil, 5) /obj/effect/decal/cleanable/oil/streak random_icon_states = list("streak1", "streak2", "streak3", "streak4", "streak5") diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index b6deaa1d06..da9c210234 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -55,7 +55,7 @@ var/obj/effect/decal/cleanable/plasma/P = (locate(/obj/effect/decal/cleanable/plasma) in get_turf(src)) if(!P) P = new(loc) - P.reagents.add_reagent("stable_plasma", absorbed_plasma) + P.reagents.add_reagent(/datum/reagent/stable_plasma, absorbed_plasma) flick("[icon_state]-disolve", src) QDEL_IN(src, 5) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index e01010baa5..0d4ca3d311 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -435,7 +435,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) //------Station Rooms Landmarks------------// /obj/effect/landmark/stationroom - var/list/template_names = list() + var/list/templates = list() layer = BULLET_HOLE_LAYER /obj/effect/landmark/stationroom/New() @@ -452,11 +452,11 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) if(!T) return FALSE if(!template_name) - for(var/t in template_names) + for(var/t in templates) if(!SSmapping.station_room_templates[t]) log_world("Station room spawner placed at ([T.x], [T.y], [T.z]) has invalid ruin name of \"[t]\" in its list") - template_names -= t - template_name = safepick(template_names) + templates -= t + template_name = pickweight(templates) if(!template_name) GLOB.stationroom_landmarks -= src qdel(src) @@ -474,10 +474,10 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) // The landmark for the Engine on Box /obj/effect/landmark/stationroom/box/engine - template_names = list("Engine SM", "Engine Singulo", "Engine Tesla") + templates = list("Engine SM" = 3, "Engine Singulo" = 3, "Engine Tesla" = 3) icon = 'icons/rooms/box/engine.dmi' /obj/effect/landmark/stationroom/box/engine/New() . = ..() - template_names = CONFIG_GET(keyed_list/box_random_engine) \ No newline at end of file + templates = CONFIG_GET(keyed_list/box_random_engine) diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 08f698e018..91133234d6 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -136,7 +136,7 @@ victim.put_in_hands(chainsaw, forced = TRUE) chainsaw.attack_self(victim) chainsaw.wield(victim) - victim.reagents.add_reagent("adminordrazine",25) + victim.reagents.add_reagent(/datum/reagent/medicine/adminordrazine,25) to_chat(victim, "KILL, KILL, KILL! YOU HAVE NO ALLIES ANYMORE, KILL THEM ALL!") victim.client.color = pure_red diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index a410827347..b50acb33af 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -52,7 +52,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/interaction_flags_item = INTERACT_ITEM_ATTACK_HAND_PICKUP //Citadel Edit for digitigrade stuff - var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. + var/mutantrace_variation = NONE //Are there special sprites for specific situations? Don't use this unless you need to. var/item_color = null //this needs deprecating, soonish diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index a68f2ecff6..ba0766de00 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -182,7 +182,7 @@ RSF to_chat(user, "Fabricating Cookie..") var/obj/item/reagent_containers/food/snacks/cookie/S = new /obj/item/reagent_containers/food/snacks/cookie(T) if(toxin) - S.reagents.add_reagent("chloralhydrate", 10) + S.reagents.add_reagent(/datum/reagent/toxin/chloralhydrate, 10) if (iscyborg(user)) var/mob/living/silicon/robot/R = user R.cell.charge -= 100 diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index d8a21de35a..083246396b 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -68,7 +68,7 @@ // make some colorful reagent, and apply it to the lungs L.create_reagents(10) - L.reagents.add_reagent("colorful_reagent", 10) + L.reagents.add_reagent(/datum/reagent/colorful_reagent, 10) L.reagents.reaction(L, TOUCH, 1) // TODO maybe add some colorful vomit? @@ -81,7 +81,7 @@ return (TOXLOSS|OXYLOSS) else if(can_use(user) && !L) user.visible_message("[user] is spraying toner on [user.p_them()]self from [src]! It looks like [user.p_theyre()] trying to commit suicide.") - user.reagents.add_reagent("colorful_reagent", 1) + user.reagents.add_reagent(/datum/reagent/colorful_reagent, 1) user.reagents.reaction(user, TOUCH, 1) return TOXLOSS diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index 25ae182253..c725148d9a 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -120,4 +120,4 @@ flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_SMALL materials = list(MAT_METAL=50, MAT_GLASS=50) - grind_results = list("iron" = 10, "silicon" = 10) + grind_results = list(/datum/reagent/iron = 10, /datum/reagent/silicon = 10) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 884f5c4400..3838f90f9b 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -25,7 +25,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/smoketime = 5 w_class = WEIGHT_CLASS_TINY heat = 1000 - grind_results = list("phosphorus" = 2) + grind_results = list(/datum/reagent/phosphorus = 2) /obj/item/match/process() smoketime-- @@ -113,7 +113,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/lastHolder = null var/smoketime = 300 var/chem_volume = 30 - var/list/list_reagents = list("nicotine" = 15) + var/list/list_reagents = list(/datum/reagent/drug/nicotine = 15) heat = 1000 /obj/item/clothing/mask/cigarette/suicide_act(mob/user) @@ -169,15 +169,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM hitsound = 'sound/items/welder.ogg' damtype = "fire" force = 4 - if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire + if(reagents.get_reagent_amount(/datum/reagent/toxin/plasma)) // the plasma explodes when exposed to fire var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) + e.set_up(round(reagents.get_reagent_amount(/datum/reagent/toxin/plasma) / 2.5, 1), get_turf(src), 0, 0) e.start() qdel(src) return - if(reagents.get_reagent_amount("welding_fuel")) // the fuel explodes, too, but much less violently + if(reagents.get_reagent_amount(/datum/reagent/fuel)) // the fuel explodes, too, but much less violently var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount("welding_fuel") / 5, 1), get_turf(src), 0, 0) + e.set_up(round(reagents.get_reagent_amount(/datum/reagent/fuel) / 5, 1), get_turf(src), 0, 0) e.start() qdel(src) return @@ -268,29 +268,29 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/uplift desc = "An Uplift Smooth brand cigarette." - list_reagents = list("nicotine" = 7.5, "menthol" = 7.5) + list_reagents = list(/datum/reagent/drug/nicotine = 7.5, /datum/reagent/consumable/menthol = 7.5) /obj/item/clothing/mask/cigarette/robust desc = "A Robust brand cigarette." /obj/item/clothing/mask/cigarette/robustgold desc = "A Robust Gold brand cigarette." - list_reagents = list("nicotine" = 15, "gold" = 1) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/gold = 1) /obj/item/clothing/mask/cigarette/carp desc = "A Carp Classic brand cigarette." /obj/item/clothing/mask/cigarette/syndicate desc = "An unknown brand cigarette." - list_reagents = list("nicotine" = 15, "omnizine" = 15) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/medicine/omnizine = 15) /obj/item/clothing/mask/cigarette/shadyjims desc = "A Shady Jim's Super Slims cigarette." - list_reagents = list("nicotine" = 15, "lipolicide" = 4, "ammonia" = 2, "plantbgone" = 1, "toxin" = 1.5) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/toxin/lipolicide = 4, /datum/reagent/ammonia = 2, /datum/reagent/toxin/plantbgone = 1, /datum/reagent/toxin = 1.5) /obj/item/clothing/mask/cigarette/xeno desc = "A Xeno Filtered brand cigarette." - list_reagents = list ("nicotine" = 20, "regen_jelly" = 15, "krokodil" = 4) + list_reagents = list (/datum/reagent/drug/nicotine = 20, /datum/reagent/medicine/regen_jelly = 15, /datum/reagent/drug/krokodil = 4) // Rollies. @@ -313,17 +313,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM src.pixel_y = rand(-5, 5) /obj/item/clothing/mask/cigarette/rollie/nicotine - list_reagents = list("nicotine" = 15) + list_reagents = list(/datum/reagent/drug/nicotine = 15) /obj/item/clothing/mask/cigarette/rollie/trippy - list_reagents = list("nicotine" = 15, "mushroomhallucinogen" = 35) + list_reagents = list(/datum/reagent/drug/nicotine = 15, /datum/reagent/drug/mushroomhallucinogen = 35) starts_lit = TRUE /obj/item/clothing/mask/cigarette/rollie/cannabis - list_reagents = list("space_drugs" = 15, "lipolicide" = 35) + list_reagents = list(/datum/reagent/drug/space_drugs = 15, /datum/reagent/toxin/lipolicide = 35) /obj/item/clothing/mask/cigarette/rollie/mindbreaker - list_reagents = list("mindbreaker" = 35, "lipolicide" = 15) + list_reagents = list(/datum/reagent/toxin/mindbreaker = 35, /datum/reagent/toxin/lipolicide = 15) /obj/item/cigbutt/roach name = "roach" @@ -377,7 +377,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_state = "cigbutt" w_class = WEIGHT_CLASS_TINY throwforce = 0 - grind_results = list("carbon" = 2) + grind_results = list(/datum/reagent/carbon = 2) /obj/item/cigbutt/cigarbutt name = "cigar butt" @@ -506,7 +506,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM heat = 1500 resistance_flags = FIRE_PROOF light_color = LIGHT_COLOR_FIRE - grind_results = list("iron" = 1, "welding_fuel" = 5, "oil" = 5) + grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/oil = 5) /obj/item/lighter/Initialize() . = ..() @@ -665,7 +665,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM heat = 3000 //Blue flame! light_color = LIGHT_COLOR_CYAN overlay_state = "slime" - grind_results = list("iron" = 1, "welding_fuel" = 5, "pyroxadone" = 5) + grind_results = list(/datum/reagent/iron = 1, /datum/reagent/fuel = 5, /datum/reagent/medicine/pyroxadone = 5) /////////// @@ -719,7 +719,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/vape/Initialize(mapload, param_color) . = ..() create_reagents(chem_volume, NO_REACT) // so it doesn't react until you light it - reagents.add_reagent("nicotine", 50) + reagents.add_reagent(/datum/reagent/drug/nicotine, 50) if(!icon_state) if(!param_color) param_color = pick("red","blue","black","white","green","purple","yellow","orange") @@ -810,14 +810,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.reaction(C, INGEST, fraction) if(!reagents.trans_to(C, REAGENTS_METABOLISM)) reagents.remove_any(REAGENTS_METABOLISM) - if(reagents.get_reagent_amount("welding_fuel")) + if(reagents.get_reagent_amount(/datum/reagent/fuel)) //HOT STUFF C.fire_stacks = 2 C.IgniteMob() - if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire + if(reagents.get_reagent_amount(/datum/reagent/toxin/plasma)) // the plasma explodes when exposed to fire var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) + e.set_up(round(reagents.get_reagent_amount(/datum/reagent/toxin/plasma) / 2.5, 1), get_turf(src), 0, 0) e.start() qdel(src) return diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 8106733ac6..5f87f9ffd9 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -12,7 +12,7 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' materials = list(MAT_GLASS=1000) w_class = WEIGHT_CLASS_SMALL - grind_results = list("silicon" = 20) + grind_results = list(/datum/reagent/silicon = 20) var/build_path = null /obj/item/circuitboard/proc/apply_default_parts(obj/machinery/M) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 0ff54d884f..26c992b0bc 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -23,7 +23,7 @@ throwforce = 0 throw_speed = 3 throw_range = 7 - grind_results = list("lye" = 10) + grind_results = list(/datum/reagent/lye = 10) var/cleanspeed = 50 //slower than mop force_string = "robust... against germs" @@ -180,4 +180,4 @@ name = "Canned Laughter" desc = "Just looking at this makes you want to giggle." icon_state = "laughter" - list_reagents = list("laughter" = 50) \ No newline at end of file + list_reagents = list(/datum/reagent/consumable/laughter = 50) \ No newline at end of file diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 41ab418cf2..143354b496 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -59,7 +59,7 @@ var/edible = TRUE // That doesn't mean eating it is a good idea - var/list/reagent_contents = list("nutriment" = 1) + var/list/reagent_contents = list(/datum/reagent/consumable/nutriment = 1) // If the user can toggle the colour, a la vanilla spraycan var/can_change_colour = FALSE @@ -485,63 +485,63 @@ icon_state = "crayonred" paint_color = "#DA0000" item_color = "red" - reagent_contents = list("nutriment" = 1, "redcrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/red = 1) /obj/item/toy/crayon/orange icon_state = "crayonorange" paint_color = "#FF9300" item_color = "orange" - reagent_contents = list("nutriment" = 1, "orangecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/orange = 1) /obj/item/toy/crayon/yellow icon_state = "crayonyellow" paint_color = "#FFF200" item_color = "yellow" - reagent_contents = list("nutriment" = 1, "yellowcrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/yellow = 1) /obj/item/toy/crayon/green icon_state = "crayongreen" paint_color = "#A8E61D" item_color = "green" - reagent_contents = list("nutriment" = 1, "greencrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/green = 1) /obj/item/toy/crayon/blue icon_state = "crayonblue" paint_color = "#00B7EF" item_color = "blue" - reagent_contents = list("nutriment" = 1, "bluecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/blue = 1) /obj/item/toy/crayon/purple icon_state = "crayonpurple" paint_color = "#DA00FF" item_color = "purple" - reagent_contents = list("nutriment" = 1, "purplecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/purple = 1) /obj/item/toy/crayon/black icon_state = "crayonblack" paint_color = "#1C1C1C" //Not completely black because total black looks bad. So Mostly Black. item_color = "black" - reagent_contents = list("nutriment" = 1, "blackcrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1) /obj/item/toy/crayon/white icon_state = "crayonwhite" paint_color = "#FFFFFF" item_color = "white" - reagent_contents = list("nutriment" = 1, "whitecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/white = 1) /obj/item/toy/crayon/mime icon_state = "crayonmime" desc = "A very sad-looking crayon." paint_color = "#FFFFFF" item_color = "mime" - reagent_contents = list("nutriment" = 1, "invisiblecrayonpowder" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent/crayonpowder/invisible = 1) charges = -1 /obj/item/toy/crayon/rainbow icon_state = "crayonrainbow" paint_color = "#FFF000" item_color = "rainbow" - reagent_contents = list("nutriment" = 1, "colorful_reagent" = 1) + reagent_contents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1) drawtype = RANDOM_ANY // just the default starter. charges = -1 @@ -621,7 +621,7 @@ can_change_colour = TRUE gang = TRUE //Gang check is true for all things upon the honored hierarchy of spraycans, except those that are FALSE. - reagent_contents = list("welding_fuel" = 1, "ethanol" = 1) + reagent_contents = list(/datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol = 1) pre_noise = TRUE post_noise = FALSE @@ -778,7 +778,7 @@ volume_multiplier = 25 charges = 100 - reagent_contents = list("clf3" = 1) + reagent_contents = list(/datum/reagent/clf3 = 1) actually_paints = FALSE paint_color = "#000000" @@ -791,7 +791,7 @@ use_overlays = FALSE gang = FALSE - reagent_contents = list("lube" = 1, "banana" = 1) + reagent_contents = list(/datum/reagent/lube = 1, /datum/reagent/consumable/banana = 1) volume_multiplier = 5 /obj/item/toy/crayon/spraycan/lubecan/isValidSurface(surface) @@ -811,7 +811,7 @@ pre_noise = FALSE post_noise = FALSE - reagent_contents = list("nothing" = 1, "mutetoxin" = 1) + reagent_contents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/toxin/mutetoxin = 1) /obj/item/toy/crayon/spraycan/gang charges = 20 // Charges back to 20, which is the default value for them. diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index d97c07bf87..ccffa413a6 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -700,10 +700,10 @@ GLOBAL_LIST_EMPTY(PDAs) U << browse(null, "window=pda") return -/obj/item/pda/proc/remove_id() - if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) +/obj/item/pda/proc/remove_id(mob/user) + if(issilicon(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return - do_remove_id(usr) + do_remove_id(user) /obj/item/pda/proc/do_remove_id(mob/user) if(!id) @@ -827,23 +827,23 @@ GLOBAL_LIST_EMPTY(PDAs) /obj/item/pda/proc/create_message(mob/living/U, obj/item/pda/P) send_message(U,list(P)) -/obj/item/pda/AltClick() +/obj/item/pda/AltClick(mob/user) . = ..() if(id) - remove_id() + remove_id(user) playsound(src, 'sound/machines/terminal_eject_disc.ogg', 50, 1) else - remove_pen() + remove_pen(user) playsound(src, 'sound/machines/button4.ogg', 50, 1) return TRUE -/obj/item/pda/CtrlClick() +/obj/item/pda/CtrlClick(mob/user) ..() if(isturf(loc)) //stops the user from dragging the PDA by ctrl-clicking it. return - remove_pen() + remove_pen(user) /obj/item/pda/verb/verb_toggle_light() set category = "Object" @@ -857,7 +857,7 @@ GLOBAL_LIST_EMPTY(PDAs) set src in usr if(id) - remove_id() + remove_id(usr) else to_chat(usr, "This PDA does not have an ID in it!") @@ -896,7 +896,7 @@ GLOBAL_LIST_EMPTY(PDAs) /obj/item/pda/proc/id_check(mob/user, obj/item/card/id/I) if(!I) if(id && (src in user.contents)) - remove_id() + remove_id(user) return TRUE else var/obj/item/card/id/C = user.get_active_held_item() diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index 9b4842b291..748c494737 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -12,7 +12,8 @@ var/cleaning = FALSE var/cleaning_cycles = 10 var/patient_laststat = null - var/list/injection_chems = list("antitoxin", "epinephrine", "salbutamol", "bicaridine", "kelotane") + var/list/injection_chems = list(/datum/reagent/medicine/antitoxin, /datum/reagent/medicine/epinephrine, + /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane) var/eject_port = "ingestion" var/escape_in_progress = FALSE var/message_cooldown @@ -183,7 +184,7 @@ data["chem"] = list() for(var/chem in injection_chems) var/datum/reagent/R = GLOB.chemical_reagents_list[chem] - data["chem"] += list(list("name" = R.name, "id" = R.id)) + data["chem"] += list(list("name" = R.name, "id" = R.type)) data["occupant"] = list() var/mob/living/mob_occupant = patient @@ -227,8 +228,8 @@ go_out(null, usr) . = TRUE if("inject") - var/chem = params["chem"] - if(!patient) + var/chem = text2path(params["chem"]) + if(!patient || !chem) return inject_chem(chem, usr) . = TRUE diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index c861ac1512..7313ba8ff2 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -267,7 +267,7 @@ var/produce_heat = 1500 heat = 1000 light_color = LIGHT_COLOR_FLARE - grind_results = list("sulfur" = 15) + grind_results = list(/datum/reagent/sulfur = 15) /obj/item/flashlight/flare/New() fuel = rand(800, 1000) // Sorry for changing this so much but I keep under-estimating how long X number of ticks last in seconds. @@ -430,7 +430,7 @@ color = LIGHT_COLOR_GREEN icon_state = "glowstick" item_state = "glowstick" - grind_results = list("phenol" = 15, "hydrogen" = 10, "oxygen" = 5) //Meth-in-a-stick + grind_results = list(/datum/reagent/phenol = 15, /datum/reagent/hydrogen = 10, /datum/reagent/oxygen = 5) //Meth-in-a-stick rad_flags = RAD_NO_CONTAMINATE var/fuel = 0 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 00381b9838..ee41307960 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -262,7 +262,7 @@ SLIME SCANNER temp_message += " Subject has abnormal brain fuctions." //Astrogen shenanigans - if(H.reagents.has_reagent("astral")) + if(H.reagents.has_reagent(/datum/reagent/fermi/astral)) if(H.mind) temp_message += " Warning: subject may be possesed." else @@ -465,19 +465,18 @@ SLIME SCANNER else msg += "Subject is not addicted to any reagents.\n" - if(M.reagents.has_reagent("fermiTox")) - var/datum/reagent/fermiTox = M.reagents.has_reagent("fermiTox") - switch(fermiTox.volume) - if(5 to 10) - msg += "Subject contains a low amount of toxic isomers.\n" - if(10 to 25) - msg += "Subject contains toxic isomers.\n" - if(25 to 50) - msg += "Subject contains a substantial amount of toxic isomers.\n" - if(50 to 95) - msg += "Subject contains a high amount of toxic isomers.\n" - if(95 to INFINITY) - msg += "Subject contains a extremely dangerous amount of toxic isomers.\n" + var/datum/reagent/impure/fermiTox/F = M.reagents.has_reagent(/datum/reagent/impure/fermiTox) + switch(F?.volume) + if(5 to 10) + msg += "Subject contains a low amount of toxic isomers.\n" + if(10 to 25) + msg += "Subject contains toxic isomers.\n" + if(25 to 50) + msg += "Subject contains a substantial amount of toxic isomers.\n" + if(50 to 95) + msg += "Subject contains a high amount of toxic isomers.\n" + if(95 to INFINITY) + msg += "Subject contains a extremely dangerous amount of toxic isomers.\n" msg += "*---------*" to_chat(user, msg) @@ -519,7 +518,7 @@ SLIME SCANNER throw_range = 7 tool_behaviour = TOOL_ANALYZER materials = list(MAT_METAL=30, MAT_GLASS=20) - grind_results = list("mercury" = 5, "iron" = 5, "silicon" = 5) + grind_results = list(/datum/reagent/mercury = 5, /datum/reagent/iron = 5, /datum/reagent/silicon = 5) var/cooldown = FALSE var/cooldown_time = 250 var/accuracy // 0 is the best accuracy. diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index b69d32617f..4585685cde 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -17,7 +17,7 @@ resistance_flags = FIRE_PROOF var/max_water = 50 var/last_use = 1 - var/chem = "water" + var/chem = /datum/reagent/water var/safety = TRUE var/refilling = FALSE var/tanktype = /obj/structure/reagent_dispensers/watertank diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 76d3a9fbf5..b5fee4e8d7 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -332,9 +332,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminium", 30) - B2.reagents.add_reagent("foaming_agent", 10) - B2.reagents.add_reagent("facid", 10) + B1.reagents.add_reagent(/datum/reagent/aluminium, 30) + B2.reagents.add_reagent(/datum/reagent/foaming_agent, 10) + B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 10) beakers += B1 beakers += B2 @@ -350,9 +350,9 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("aluminium", 75) - B2.reagents.add_reagent("smart_foaming_agent", 25) - B2.reagents.add_reagent("facid", 25) + B1.reagents.add_reagent(/datum/reagent/aluminium, 75) + B2.reagents.add_reagent(/datum/reagent/smart_foaming_agent, 25) + B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 25) beakers += B1 beakers += B2 @@ -368,9 +368,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("stable_plasma", 25) - B2.reagents.add_reagent("sacid", 25) + B1.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/stable_plasma, 25) + B2.reagents.add_reagent(/datum/reagent/toxin/acid, 25) beakers += B1 beakers += B2 @@ -386,10 +386,10 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/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(/datum/reagent/toxin/plantbgone, 25) + B1.reagents.add_reagent(/datum/reagent/potassium, 25) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) beakers += B1 beakers += B2 @@ -405,9 +405,9 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/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(/datum/reagent/fluorosurfactant, 40) + B2.reagents.add_reagent(/datum/reagent/water, 40) + B2.reagents.add_reagent(/datum/reagent/space_cleaner, 10) beakers += B1 beakers += B2 @@ -423,9 +423,9 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 40) - B2.reagents.add_reagent("water", 40) - B2.reagents.add_reagent("ez_clean", 60) //ensures a t h i c c distribution + B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 40) + B2.reagents.add_reagent(/datum/reagent/water, 40) + B2.reagents.add_reagent(/datum/reagent/space_cleaner/ez_clean, 60) //ensures a t h i c c distribution beakers += B1 beakers += B2 @@ -442,10 +442,10 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("condensedcapsaicin", 60) - B1.reagents.add_reagent("potassium", 40) - B2.reagents.add_reagent("phosphorus", 40) - B2.reagents.add_reagent("sugar", 40) + B1.reagents.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 60) + B1.reagents.add_reagent(/datum/reagent/potassium, 40) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 40) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 40) beakers += B1 beakers += B2 @@ -461,11 +461,11 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("facid", 290) - B1.reagents.add_reagent("potassium", 10) - B2.reagents.add_reagent("phosphorus", 10) - B2.reagents.add_reagent("sugar", 10) - B2.reagents.add_reagent("facid", 280) + B1.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 290) + B1.reagents.add_reagent(/datum/reagent/potassium, 10) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 10) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 10) + B2.reagents.add_reagent(/datum/reagent/toxin/acid/fluacid, 280) beakers += B1 beakers += B2 @@ -481,10 +481,10 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("colorful_reagent", 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent(/datum/reagent/colorful_reagent, 25) + B1.reagents.add_reagent(/datum/reagent/potassium, 25) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) beakers += B1 beakers += B2 @@ -493,7 +493,7 @@ name = "generic glitter grenade" desc = "You shouldn't see this description." stage = READY - var/glitter_type = "glitter" + var/glitter_type = /datum/reagent/glitter /obj/item/grenade/chem_grenade/glitter/Initialize() . = ..() @@ -501,9 +501,9 @@ var/obj/item/reagent_containers/glass/beaker/B2 = new(src) B1.reagents.add_reagent(glitter_type, 25) - B1.reagents.add_reagent("potassium", 25) - B2.reagents.add_reagent("phosphorus", 25) - B2.reagents.add_reagent("sugar", 25) + B1.reagents.add_reagent(/datum/reagent/potassium, 25) + B2.reagents.add_reagent(/datum/reagent/phosphorus, 25) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 25) beakers += B1 beakers += B2 @@ -511,17 +511,17 @@ /obj/item/grenade/chem_grenade/glitter/pink name = "pink glitter bomb" desc = "For that HOT glittery look." - glitter_type = "pink_glitter" + glitter_type = /datum/reagent/glitter/pink /obj/item/grenade/chem_grenade/glitter/blue name = "blue glitter bomb" desc = "For that COOL glittery look." - glitter_type = "blue_glitter" + glitter_type = /datum/reagent/glitter/blue /obj/item/grenade/chem_grenade/glitter/white name = "white glitter bomb" desc = "For that somnolent glittery look." - glitter_type = "white_glitter" + glitter_type = /datum/reagent/glitter/white /obj/item/grenade/chem_grenade/clf3 name = "clf3 grenade" @@ -533,10 +533,10 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("fluorosurfactant", 250) - B1.reagents.add_reagent("clf3", 50) - B2.reagents.add_reagent("water", 250) - B2.reagents.add_reagent("clf3", 50) + B1.reagents.add_reagent(/datum/reagent/fluorosurfactant, 250) + B1.reagents.add_reagent(/datum/reagent/clf3, 50) + B2.reagents.add_reagent(/datum/reagent/water, 250) + B2.reagents.add_reagent(/datum/reagent/clf3, 50) beakers += B1 beakers += B2 @@ -551,13 +551,13 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("cryptobiolin", 75) - B1.reagents.add_reagent("water", 50) - B1.reagents.add_reagent("mutetoxin", 50) - B1.reagents.add_reagent("spore", 75) - B1.reagents.add_reagent("itching_powder", 50) - B2.reagents.add_reagent("fluorosurfactant", 150) - B2.reagents.add_reagent("mutagen", 150) + B1.reagents.add_reagent(/datum/reagent/cryptobiolin, 75) + B1.reagents.add_reagent(/datum/reagent/water, 50) + B1.reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 50) + B1.reagents.add_reagent(/datum/reagent/toxin/spore, 75) + B1.reagents.add_reagent(/datum/reagent/toxin/itching_powder, 50) + B2.reagents.add_reagent(/datum/reagent/fluorosurfactant, 150) + B2.reagents.add_reagent(/datum/reagent/toxin/mutagen, 150) beakers += B1 beakers += B2 @@ -571,11 +571,11 @@ var/obj/item/reagent_containers/glass/beaker/bluespace/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/bluespace/B2 = new(src) - B1.reagents.add_reagent("potassium", 50) - B1.reagents.add_reagent("phosphorus", 50) - B1.reagents.add_reagent("fungalspores", 200) - B2.reagents.add_reagent("blood", 250) - B2.reagents.add_reagent("sugar", 50) + B1.reagents.add_reagent(/datum/reagent/potassium, 50) + B1.reagents.add_reagent(/datum/reagent/phosphorus, 50) + B1.reagents.add_reagent(/datum/reagent/fungalspores, 200) + B2.reagents.add_reagent(/datum/reagent/blood, 250) + B2.reagents.add_reagent(/datum/reagent/consumable/sugar, 50) beakers += B1 beakers += B2 @@ -591,8 +591,8 @@ var/obj/item/reagent_containers/glass/beaker/large/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/large/B2 = new(src) - B1.reagents.add_reagent("potassium", 100) - B2.reagents.add_reagent("holywater", 100) + B1.reagents.add_reagent(/datum/reagent/potassium, 100) + B2.reagents.add_reagent(/datum/reagent/water/holywater, 100) beakers += B1 beakers += B2 diff --git a/code/game/objects/items/grenades/clusterbuster.dm b/code/game/objects/items/grenades/clusterbuster.dm index 923361de3c..c16b4a30a1 100644 --- a/code/game/objects/items/grenades/clusterbuster.dm +++ b/code/game/objects/items/grenades/clusterbuster.dm @@ -94,11 +94,11 @@ var/chem = pick(slime_chems) var/amount = 5 if(chem == "lesser plasma") //In the rare case we get another rainbow. - chem = "plasma" + chem = /datum/reagent/toxin/plasma amount = 4 if(chem == "holy water and uranium") - chem = "uranium" - reagents.add_reagent("holywater") + chem = /datum/reagent/uranium + reagents.add_reagent(/datum/reagent/water/holywater) reagents.add_reagent(chem,amount) /obj/effect/payload_spawner/random_slime/spawn_payload(type, numspawned) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index c6c5547e54..5367f3461c 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -308,7 +308,7 @@ block_chance = 50 var/shield_icon = "shield-red" -/obj/item/nullrod/staff/worn_overlays(isinhands) +/obj/item/nullrod/staff/worn_overlays(isinhands, icon_file, style_flags = NONE) . = list() if(isinhands) . += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_LAYER + 0.01) @@ -789,7 +789,7 @@ praying = TRUE if(do_after(user, 20, target = M)) - M.reagents?.add_reagent("holywater", 5) + M.reagents?.add_reagent(/datum/reagent/water/holywater, 5) to_chat(M, "[user]'s prayer to [deity_name] has eased your pain!") M.adjustToxLoss(-5, TRUE, TRUE) M.adjustOxyLoss(-5) diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 40f2741a17..16ac2ad692 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -75,7 +75,7 @@ L.SetKnockdown(0) L.SetSleeping(0) L.SetUnconscious(0) - L.reagents.add_reagent("muscle_stimulant", CLAMP(5 - L.reagents.get_reagent_amount("muscle_stimulant"), 0, 5)) //If you don't have legs or get bola'd, tough luck! + L.reagents.add_reagent(/datum/reagent/medicine/muscle_stimulant, CLAMP(5 - L.reagents.get_reagent_amount(/datum/reagent/medicine/muscle_stimulant), 0, 5)) //If you don't have legs or get bola'd, tough luck! colorize(L) /obj/item/hot_potato/examine(mob/user) diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index 75b0c67798..6cdc5ee824 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -33,7 +33,7 @@ /obj/item/implant/adrenalin/activate() . = ..() uses-- - imp_in.do_adrenaline(150, TRUE, 0, 0, TRUE, list("inaprovaline" = 3, "synaptizine" = 10, "regen_jelly" = 10, "stimulants" = 10), "You feel a sudden surge of energy!") + imp_in.do_adrenaline(150, TRUE, 0, 0, TRUE, list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/stimulants = 10), "You feel a sudden surge of energy!") to_chat(imp_in, "You feel a sudden surge of energy!") if(!uses) qdel(src) diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index ef2aa825e7..6665d91c2b 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -41,10 +41,10 @@ if(forkload) if(M == user) M.visible_message("[user] eats a delicious forkful of omelette!") - M.reagents.add_reagent(forkload.id, 1) + M.reagents.add_reagent(forkload.type, 1) else M.visible_message("[user] feeds [M] a delicious forkful of omelette!") - M.reagents.add_reagent(forkload.id, 1) + M.reagents.add_reagent(forkload.type, 1) icon_state = "fork" forkload = null diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 4549dc73b6..4d60716d0c 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -339,7 +339,7 @@ . = ..() . += "Alt-click to recolor it." -/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file) +/obj/item/melee/transforming/energy/sword/cx/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(active) if(isinhands) diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index 5d384a9346..a8b28f2544 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -25,7 +25,7 @@ /obj/item/mop/proc/clean(turf/A) - if(reagents.has_reagent("water", 1) || reagents.has_reagent("holywater", 1) || reagents.has_reagent("vodka", 1) || reagents.has_reagent("cleaner", 1)) + if(reagents.has_reagent(/datum/reagent/water, 1) || reagents.has_reagent(/datum/reagent/water/holywater, 1) || reagents.has_reagent(/datum/reagent/consumable/ethanol/vodka, 1) || reagents.has_reagent(/datum/reagent/space_cleaner, 1)) SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM) A.clean_blood() for(var/obj/effect/O in A) @@ -98,7 +98,7 @@ stamusage = 1 var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water. var/refill_rate = 1 //Rate per process() tick mop refills itself - var/refill_reagent = "water" //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING + var/refill_reagent = /datum/reagent/water //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING /obj/item/mop/advanced/New() ..() diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index ddc49a456c..5fd9600a97 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -98,7 +98,7 @@ /obj/item/banner/medical/special_inspiration(mob/living/carbon/human/H) H.adjustToxLoss(-15) H.setOxyLoss(0) - H.reagents.add_reagent("inaprovaline", 5) + H.reagents.add_reagent(/datum/reagent/medicine/inaprovaline, 5) /obj/item/banner/science name = "sciencia banner" diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index c09f5b1b65..a0d58709c8 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -814,3 +814,93 @@ return else to_chat(user, "Your gripper cannot hold \the [target].") + +/obj/item/weapon/gripper/mining + name = "shelter capsule deployer" + desc = "A simple grasping tool for carrying and deploying shelter capsules." + icon_state = "gripper_mining" + can_hold = list( + /obj/item/survivalcapsule + ) + +/obj/item/weapon/gripper/mining/attack_self() + if(wrapped) + wrapped.forceMove(get_turf(wrapped)) + wrapped.attack_self() + wrapped = null + return + +/obj/item/gun/energy/plasmacutter/cyborg + name = "cyborg plasma cutter" + desc = "A basic variation of the plasma cutter, compressed into a cyborg chassis. Less effective than normal plasma cutters." + force = 15 + ammo_type = list(/obj/item/ammo_casing/energy/plasma/weak) + can_charge = FALSE + selfcharge = EGUN_SELFCHARGE_BORG + cell_type = /obj/item/stock_parts/cell/secborg + charge_delay = 5 + +/obj/item/cyborg_clamp + name = "cyborg loading clamp" + desc = "Equipment for supply cyborgs. Lifts objects and loads them into cargo. Will not carry living beings." + icon = 'icons/mecha/mecha_equipment.dmi' + icon_state = "mecha_clamp" + tool_behaviour = TOOL_RETRACTOR + item_flags = NOBLUDGEON + flags_1 = NONE + var/cargo_capacity = 8 + var/cargo = list() + +/obj/item/cyborg_clamp/attack(mob/M, mob/user, def_zone) + return + +/obj/item/cyborg_clamp/afterattack(atom/movable/target, mob/user, proximity) + . = ..() + if(!proximity) + return FALSE + if(isobj(target)) + var/obj/O = target + if(!O.anchored) + if(contents.len < cargo_capacity) + user.visible_message("[user] lifts [target] and starts to load it into its cargo compartment.") + O.anchored = TRUE + if(do_mob(user, O, 20)) + for(var/mob/chump in target.GetAllContents()) + to_chat(user, "Error: Living entity detected in [target]. Cannot load.") + O.anchored = initial(O.anchored) + return + for(var/obj/item/disk/nuclear/diskie in target.GetAllContents()) + to_chat(user, "Error: Nuclear class authorization device detected in [target]. Cannot load.") + O.anchored = initial(O.anchored) + return + if(contents.len < cargo_capacity) //check both before and after + cargo += O + O.forceMove(src) + O.anchored = FALSE + to_chat(user, "[target] successfully loaded.") + playsound(loc, 'sound/effects/bin_close.ogg', 50, 0) + else + to_chat(user, "Not enough room in cargo compartment! Maximum of [cargo_capacity] objects!") + O.anchored = initial(O.anchored) + return + else + O.anchored = initial(O.anchored) + else + to_chat(user, "Not enough room in cargo compartment! Maximum of eight objects!") + else + to_chat(user, "[target] is firmly secured!") + +/obj/item/cyborg_clamp/attack_self(mob/user) + var/obj/chosen_cargo = input(user, "Drop what?") as null|anything in cargo + if(!chosen_cargo) + return + chosen_cargo.forceMove(get_turf(chosen_cargo)) + cargo -= chosen_cargo + user.visible_message("[user] unloads [chosen_cargo] from its cargo.") + playsound(loc, 'sound/effects/bin_close.ogg', 50, 0) + +/obj/item/card/id/miningborg + name = "mining point card" + desc = "A robotic ID strip used for claiming and transferring mining points. Must be held in an active slot to transfer points." + access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) + icon_state = "data_1" \ No newline at end of file diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index bf363f959c..8c743cc3de 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -173,32 +173,64 @@ R.module.basic_modules += S R.module.add_module(S, FALSE, TRUE) -/obj/item/borg/upgrade/soh - name = "mining cyborg satchel of holding" - desc = "A satchel of holding replacement for mining cyborg's ore satchel module." +/obj/item/borg/upgrade/premiumka + name = "mining cyborg premium KA" + desc = "A premium kinetic accelerator replacement for the mining module's standard kinetic accelerator." icon_state = "cyborg_upgrade3" require_module = 1 module_type = list(/obj/item/robot_module/miner) -/obj/item/borg/upgrade/soh/action(mob/living/silicon/robot/R) +/obj/item/borg/upgrade/premiumka/action(mob/living/silicon/robot/R, user = usr) . = ..() if(.) - for(var/obj/item/storage/bag/ore/cyborg/S in R.module) - R.module.remove_module(S, TRUE) + for(var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA in R.module) + for(var/obj/item/borg/upgrade/modkit/M in KA.modkits) + M.uninstall(src) + R.module.remove_module(KA, TRUE) - var/obj/item/storage/bag/ore/holding/H = new /obj/item/storage/bag/ore/holding(R.module) - R.module.basic_modules += H - R.module.add_module(H, FALSE, TRUE) + var/obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg/PKA = new /obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg(R.module) + R.module.basic_modules += PKA + R.module.add_module(PKA, FALSE, TRUE) -/obj/item/borg/upgrade/soh/deactivate(mob/living/silicon/robot/R, user = usr) +/obj/item/borg/upgrade/premiumka/deactivate(mob/living/silicon/robot/R, user = usr) . = ..() if (.) - for(var/obj/item/storage/bag/ore/holding/H in R.module) - R.module.remove_module(H, TRUE) + for(var/obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg/PKA in R.module) + for(var/obj/item/borg/upgrade/modkit/M in PKA.modkits) + M.uninstall(src) + R.module.remove_module(PKA, TRUE) - var/obj/item/storage/bag/ore/cyborg/S = new (R.module) - R.module.basic_modules += S - R.module.add_module(S, FALSE, TRUE) + var/obj/item/gun/energy/kinetic_accelerator/cyborg/KA = new (R.module) + R.module.basic_modules += KA + R.module.add_module(KA, FALSE, TRUE) + + +/obj/item/borg/upgrade/advcutter + name = "mining cyborg advanced plasma cutter" + desc = "An upgrade for the mining cyborgs plasma cutter, bringing it to advanced operation." + icon_state = "cyborg_upgrade3" + require_module = 1 + module_type = list(/obj/item/robot_module/miner) + +/obj/item/borg/upgrade/advcutter/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + for(var/obj/item/gun/energy/plasmacutter/cyborg/C in R.module) + C.name = "advanced cyborg plasma cutter" + C.desc = "An improved version of the cyborg plasma cutter. Baring functionality identical to the standard hand held version." + C.icon_state = "adv_plasmacutter" + for(var/obj/item/ammo_casing/energy/plasma/weak/L in C.ammo_type) + L.projectile_type = /obj/item/projectile/plasma/adv + +/obj/item/borg/upgrade/advcutter/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + for(var/obj/item/gun/energy/plasmacutter/cyborg/C in R.module) + C.name = initial(name) + C.desc = initial(desc) + C.icon_state = initial(icon_state) + for(var/obj/item/ammo_casing/energy/plasma/weak/L in C.ammo_type) + L.projectile_type = initial(L.projectile_type) /obj/item/borg/upgrade/tboh name = "janitor cyborg trash bag of holding" @@ -434,15 +466,15 @@ name = "medical cyborg expanded hypospray" desc = "An upgrade to the Medical module's hypospray, allowing it \ to treat a wider range of conditions and problems." - additional_reagents = list("mannitol", "oculine", "inacusiate", - "mutadone", "haloperidol") + additional_reagents = list(/datum/reagent/medicine/mannitol, /datum/reagent/medicine/oculine, /datum/reagent/medicine/inacusiate, + /datum/reagent/medicine/mutadone, /datum/reagent/medicine/haloperidol) /obj/item/borg/upgrade/hypospray/high_strength name = "medical cyborg high-strength hypospray" desc = "An upgrade to the Medical module's hypospray, containing \ stronger versions of existing chemicals." - additional_reagents = list("oxandrolone", "sal_acid", "rezadone", - "pen_acid") + additional_reagents = list(/datum/reagent/medicine/oxandrolone, /datum/reagent/medicine/sal_acid, + /datum/reagent/medicine/rezadone, /datum/reagent/medicine/pen_acid) /obj/item/borg/upgrade/piercing_hypospray name = "cyborg piercing hypospray" diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm index 49a735af9c..a660e76da1 100644 --- a/code/game/objects/items/stacks/bscrystal.dm +++ b/code/game/objects/items/stacks/bscrystal.dm @@ -10,7 +10,7 @@ points = 50 var/blink_range = 8 // The teleport range when crushed/thrown at someone. refined_type = /obj/item/stack/sheet/bluespace_crystal - grind_results = list("bluespace" = 20) + grind_results = list(/datum/reagent/bluespace = 20) /obj/item/stack/ore/bluespace_crystal/refined name = "refined bluespace crystal" @@ -53,7 +53,7 @@ blink_range = 4 // Not as good as the organic stuff! points = 0 //nice try refined_type = null - grind_results = list("bluespace" = 10, "silicon" = 20) + grind_results = list(/datum/reagent/bluespace = 10, /datum/reagent/silicon = 20) //Polycrystals, aka stacks /obj/item/stack/sheet/bluespace_crystal @@ -66,7 +66,7 @@ materials = list(MAT_BLUESPACE=MINERAL_MATERIAL_AMOUNT) attack_verb = list("bluespace polybashed", "bluespace polybattered", "bluespace polybludgeoned", "bluespace polythrashed", "bluespace polysmashed") novariants = TRUE - grind_results = list("bluespace" = 20) + grind_results = list(/datum/reagent/bluespace = 20) point_value = 30 var/crystal_type = /obj/item/stack/ore/bluespace_crystal/refined diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 178bdd8a5e..14c20af6b3 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -57,7 +57,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' var/heal_brute = 20 self_delay = 20 - grind_results = list("styptic_powder" = 10) + grind_results = list(/datum/reagent/medicine/styptic_powder = 10) /obj/item/stack/medical/bruise_pack/heal(mob/living/M, mob/user) if(M.stat == DEAD) @@ -140,7 +140,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' var/heal_burn = 20 self_delay = 20 - grind_results = list("silver_sulfadiazine" = 10) + grind_results = list(/datum/reagent/medicine/silver_sulfadiazine = 10) /obj/item/stack/medical/ointment/heal(mob/living/M, mob/user) if(M.stat == DEAD) diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index c2c6015747..c42cfbe571 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -11,7 +11,7 @@ throw_range = 7 flags_1 = CONDUCT_1 max_amount = 60 - grind_results = list("silicon" = 20, "copper" = 5) + grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/copper = 5) /obj/item/stack/light_w/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/stack/sheet/metal)) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index fe42f88f56..d89793f08e 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -108,7 +108,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ sheettype = "diamond" materials = list(MAT_DIAMOND=MINERAL_MATERIAL_AMOUNT) novariants = TRUE - grind_results = list("carbon" = 20) + grind_results = list(/datum/reagent/carbon = 20) point_value = 25 merge_type = /obj/item/stack/sheet/mineral/diamond @@ -135,7 +135,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ sheettype = "uranium" materials = list(MAT_URANIUM=MINERAL_MATERIAL_AMOUNT) novariants = TRUE - grind_results = list("uranium" = 20) + grind_results = list(/datum/reagent/uranium = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/uranium @@ -162,7 +162,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ resistance_flags = FLAMMABLE max_integrity = 100 materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT) - grind_results = list("plasma" = 20) + grind_results = list(/datum/reagent/toxin/plasma = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/plasma @@ -203,7 +203,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ singular_name = "gold bar" sheettype = "gold" materials = list(MAT_GOLD=MINERAL_MATERIAL_AMOUNT) - grind_results = list("gold" = 20) + grind_results = list(/datum/reagent/gold = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/gold @@ -232,7 +232,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ singular_name = "silver bar" sheettype = "silver" materials = list(MAT_SILVER=MINERAL_MATERIAL_AMOUNT) - grind_results = list("silver" = 20) + grind_results = list(/datum/reagent/silver = 20) point_value = 20 merge_type = /obj/item/stack/sheet/mineral/silver tableVariant = /obj/structure/table/optable @@ -262,7 +262,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \ sheettype = "bananium" materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) novariants = TRUE - grind_results = list("banana" = 20) + grind_results = list(/datum/reagent/consumable/banana = 20) point_value = 50 merge_type = /obj/item/stack/sheet/mineral/bananium @@ -342,7 +342,7 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \ singular_name = "snow block" force = 1 throwforce = 2 - grind_results = list("ice" = 20) + grind_results = list(/datum/reagent/consumable/ice = 20) merge_type = /obj/item/stack/sheet/mineral/snow GLOBAL_LIST_INIT(snow_recipes, list ( \ @@ -422,7 +422,7 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \ icon_state = "slag" singular_name = "coal lump" merge_type = /obj/item/stack/sheet/mineral/coal - grind_results = list("carbon" = 20) + grind_results = list(/datum/reagent/carbon = 20) /obj/item/stack/sheet/mineral/coal/attackby(obj/item/W, mob/user, params) if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index b20f412620..89536ab53e 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -106,7 +106,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ flags_1 = CONDUCT_1 resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/metal - grind_results = list("iron" = 20) + grind_results = list(/datum/reagent/iron = 20) point_value = 2 tableVariant = /obj/structure/table @@ -168,7 +168,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80) resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/plasteel - grind_results = list("iron" = 20, "plasma" = 20) + grind_results = list(/datum/reagent/iron = 20, /datum/reagent/toxin/plasma = 20) point_value = 23 tableVariant = /obj/structure/table/reinforced @@ -238,7 +238,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/mineral/wood novariants = TRUE - grind_results = list("carbon" = 20) + grind_results = list(/datum/reagent/carbon = 20) /obj/item/stack/sheet/mineral/wood/attackby(obj/item/W, mob/user, params) // NOTE: sheet_types.dm is where the WOOD stack lives. Maybe move this over there. @@ -296,7 +296,7 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0) resistance_flags = FLAMMABLE merge_type = /obj/item/stack/sheet/mineral/bamboo - grind_results = list("carbon" = 5) + grind_results = list(/datum/reagent/carbon = 5) /obj/item/stack/sheet/mineral/bamboo/Initialize(mapload, new_amount, merge = TRUE) recipes = GLOB.bamboo_recipes @@ -511,7 +511,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ sheettype = "runed" merge_type = /obj/item/stack/sheet/runed_metal novariants = TRUE - grind_results = list("iron" = 5, "blood" = 15) + grind_results = list(/datum/reagent/iron = 5, /datum/reagent/blood = 15) /obj/item/stack/sheet/runed_metal/ratvar_act() new /obj/item/stack/tile/brass(loc, amount) @@ -586,7 +586,7 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ throw_range = 3 turf_type = /turf/open/floor/clockwork novariants = FALSE - grind_results = list("iron" = 5, "teslium" = 15, "holyoil" = 1) + grind_results = list(/datum/reagent/iron = 5, /datum/reagent/teslium = 15, /datum/reagent/fuel/holyoil = 1) merge_type = /obj/item/stack/tile/brass tableVariant = /obj/structure/table/reinforced/brass @@ -639,7 +639,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ throw_range = 3 turf_type = /turf/open/floor/bronze novariants = FALSE - grind_results = list("iron" = 5, "copper" = 3) //we have no "tin" reagent so this is the closest thing + grind_results = list(/datum/reagent/iron = 5, /datum/reagent/copper = 3) //we have no "tin" reagent so this is the closest thing merge_type = /obj/item/stack/tile/bronze tableVariant = /obj/structure/table/bronze @@ -693,7 +693,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ w_class = WEIGHT_CLASS_NORMAL throw_speed = 1 throw_range = 3 - grind_results = list("carbon" = 10) + grind_results = list(/datum/reagent/carbon = 10) merge_type = /obj/item/stack/sheet/bone GLOBAL_LIST_INIT(plastic_recipes, list( diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index eafa79798e..7664da6ce4 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -110,6 +110,7 @@ var/spam_protection = FALSE //If this is TRUE, the holder won't receive any messages when they fail to pick up ore through crossing it var/mob/listeningTo rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE + var/range = null /obj/item/storage/bag/ore/ComponentInitialize() . = ..() @@ -130,7 +131,8 @@ /obj/item/storage/bag/ore/dropped() . = ..() - UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) + if(listeningTo) + UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) listeningTo = null /obj/item/storage/bag/ore/proc/Pickup_ores(mob/living/user) @@ -141,12 +143,21 @@ return if (istype(user.pulling, /obj/structure/ore_box)) box = user.pulling + if(issilicon(user)) + var/mob/living/silicon/robot/borgo = user + for(var/obj/item/cyborg_clamp/C in borgo.module.modules) + for(var/obj/structure/ore_box/B in C) + box = B + var/datum/component/storage/STR = GetComponent(/datum/component/storage) if(STR) for(var/A in tile) if (!is_type_in_typecache(A, STR.can_hold)) continue if (box) + if(range) + for(var/obj/item/stack/ore/ore in range(range, user)) + user.transferItemToLoc(ore, box) user.transferItemToLoc(A, box) show_message = TRUE else if(SEND_SIGNAL(src, COMSIG_TRY_STORAGE_INSERT, A, user, TRUE)) @@ -168,6 +179,7 @@ /obj/item/storage/bag/ore/cyborg name = "cyborg mining satchel" + range = 1 /obj/item/storage/bag/ore/cyborg/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 6c250029a6..0961726e6e 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -24,7 +24,7 @@ add_overlay(M) ..() -/obj/item/storage/belt/worn_overlays(isinhands, icon_file) +/obj/item/storage/belt/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(!isinhands && worn_overlays) for(var/obj/item/I in contents) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index c658eee3d5..e47021c1f6 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -163,16 +163,16 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", for(var/obj/effect/rune/R in orange(2,user)) R.invisibility = 0 if(user.mind && (user.mind.isholy)) - if(A.reagents && A.reagents.has_reagent("water")) // blesses all the water in the holder + if(A.reagents && A.reagents.has_reagent(/datum/reagent/water)) // blesses all the water in the holder to_chat(user, "You bless [A].") - var/water2holy = A.reagents.get_reagent_amount("water") - A.reagents.del_reagent("water") - A.reagents.add_reagent("holywater",water2holy) - if(A.reagents && A.reagents.has_reagent("unholywater")) // yeah yeah, copy pasted code - sue me + var/water2holy = A.reagents.get_reagent_amount(/datum/reagent/water) + A.reagents.del_reagent(/datum/reagent/water) + A.reagents.add_reagent(/datum/reagent/water/holywater,water2holy) + if(A.reagents && A.reagents.has_reagent(/datum/reagent/fuel/unholywater)) // yeah yeah, copy pasted code - sue me to_chat(user, "You purify [A].") - var/unholy2clean = A.reagents.get_reagent_amount("unholywater") - A.reagents.del_reagent("unholywater") - A.reagents.add_reagent("holywater",unholy2clean) + var/unholy2clean = A.reagents.get_reagent_amount(/datum/reagent/fuel/unholywater) + A.reagents.del_reagent(/datum/reagent/fuel/unholywater) + A.reagents.add_reagent(/datum/reagent/water/holywater,unholy2clean) if(istype(A, /obj/item/twohanded/required/cult_bastard) && !iscultist(user)) var/obj/item/twohanded/required/cult_bastard/sword = A to_chat(user, "You begin to exorcise [sword].") diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 8c96e567d1..0ff20f16c5 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -205,7 +205,7 @@ new /obj/item/healthanalyzer/advanced(src) new /obj/item/reagent_containers/syringe/lethal/choral(src) // what the fuck does anyone use this piece of shit for new /obj/item/clothing/glasses/hud/health/night(src) - + /* * Pill Bottles */ @@ -439,8 +439,8 @@ if(empty) return new /obj/item/hypospray/mkii/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/tricord(src) /obj/item/storage/hypospraykit/fire name = "burn treatment hypospray kit" @@ -452,8 +452,8 @@ if(empty) return new /obj/item/hypospray/mkii/burn(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/kelotane(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/kelotane(src) /obj/item/storage/hypospraykit/toxin name = "toxin treatment hypospray kit" @@ -464,8 +464,8 @@ if(empty) return new /obj/item/hypospray/mkii/toxin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin(src) /obj/item/storage/hypospraykit/o2 name = "oxygen deprivation hypospray kit" @@ -476,8 +476,8 @@ if(empty) return new /obj/item/hypospray/mkii/oxygen(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/dexalin(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/dexalin(src) /obj/item/storage/hypospraykit/enlarge name = "organomegaly trauma hypospray kit" @@ -488,12 +488,12 @@ if(empty) return new /obj/item/hypospray/mkii/enlarge(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/breastreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/breastreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/breastreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/penisreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/penisreduction(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/penisreduction(src) /obj/item/storage/hypospraykit/brute name = "brute trauma hypospray kit" @@ -504,8 +504,8 @@ if(empty) return new /obj/item/hypospray/mkii/brute(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine(src) - new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine(src) + new /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine(src) /obj/item/storage/hypospraykit/tactical name = "combat hypospray kit" @@ -517,8 +517,8 @@ return new /obj/item/defibrillator/compact/combat/loaded(src) new /obj/item/hypospray/mkii/CMO/combat(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/combat(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/combat(src) /obj/item/storage/hypospraykit/cmo name = "deluxe hypospray kit" @@ -537,11 +537,11 @@ if(empty) return new /obj/item/hypospray/mkii/CMO(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin(src) - new /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/tricord(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/charcoal(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/salglu(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/dexalin(src) + new /obj/item/reagent_containers/glass/bottle/vial/large/synthflesh(src) /obj/item/storage/box/vials name = "box of hypovials" diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index f3be8cefc8..c1cbf534ca 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -148,7 +148,7 @@ /obj/item/watertank/janitor/Initialize() . = ..() - reagents.add_reagent("cleaner", 500) + reagents.add_reagent(/datum/reagent/space_cleaner, 500) /obj/item/reagent_containers/spray/mister/janitor name = "janitor spray nozzle" @@ -184,7 +184,7 @@ /obj/item/watertank/atmos/Initialize() . = ..() - reagents.add_reagent("water", 200) + reagents.add_reagent(/datum/reagent/water, 200) /obj/item/watertank/atmos/make_noz() return new /obj/item/extinguisher/mini/nozzle(src) @@ -376,7 +376,7 @@ filling.color = mix_color_from_reagents(reagents.reagent_list) add_overlay(filling) -/obj/item/reagent_containers/chemtank/worn_overlays(var/isinhands = FALSE) //apply chemcolor and level +/obj/item/reagent_containers/chemtank/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) //apply chemcolor and level . = list() //inhands + reagent_filling if(!isinhands && reagents.total_volume) @@ -436,13 +436,13 @@ /obj/item/watertank/op/Initialize() . = ..() - reagents.add_reagent("mutagen",350) - reagents.add_reagent("napalm",125) - reagents.add_reagent("welding_fuel",125) - reagents.add_reagent("clf3",300) - reagents.add_reagent("cryptobiolin",350) - reagents.add_reagent("plasma",250) - reagents.add_reagent("condensedcapsaicin",500) + reagents.add_reagent(/datum/reagent/toxin/mutagen,350) + reagents.add_reagent(/datum/reagent/napalm,125) + reagents.add_reagent(/datum/reagent/fuel,125) + reagents.add_reagent(/datum/reagent/clf3,300) + reagents.add_reagent(/datum/reagent/cryptobiolin,350) + reagents.add_reagent(/datum/reagent/toxin/plasma,250) + reagents.add_reagent(/datum/reagent/consumable/condensedcapsaicin,500) /obj/item/reagent_containers/spray/mister/op desc = "A mister nozzle attached to several extended water tanks. It suspiciously has a compressor in the system and is labelled entirely in New Cyrillic." diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 91a94e05c3..599577a85b 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -53,7 +53,7 @@ base_overlay.appearance_flags = RESET_COLOR add_overlay(base_overlay) -/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/screwdriver/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(isinhands && random_color) var/mutable_appearance/M = mutable_appearance(icon_file, "screwdriver_head") diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 65b240c528..a74ce67128 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -37,7 +37,7 @@ /obj/item/weldingtool/Initialize() . = ..() create_reagents(max_fuel) - reagents.add_reagent("welding_fuel", max_fuel) + reagents.add_reagent(/datum/reagent/fuel, max_fuel) update_icon() @@ -97,7 +97,7 @@ /obj/item/weldingtool/proc/explode() var/turf/T = get_turf(loc) - var/plasmaAmount = reagents.get_reagent_amount("plasma") + var/plasmaAmount = reagents.get_reagent_amount(/datum/reagent/toxin/plasma) dyn_explosion(T, plasmaAmount/5)//20 plasma in a standard welder has a 4 power explosion. no breaches, but enough to kill/dismember holder qdel(src) @@ -142,7 +142,7 @@ /obj/item/weldingtool/attack_self(mob/user) - if(src.reagents.has_reagent("plasma")) + if(src.reagents.has_reagent(/datum/reagent/toxin/plasma)) message_admins("[ADMIN_LOOKUPFLW(user)] activated a rigged welder at [AREACOORD(user)].") explode() switched_on(user) @@ -154,7 +154,7 @@ // Returns the amount of fuel in the welder /obj/item/weldingtool/proc/get_fuel() - return reagents.get_reagent_amount("welding_fuel") + return reagents.get_reagent_amount(/datum/reagent/fuel) // Uses fuel from the welding tool. @@ -165,7 +165,7 @@ if(used) burned_fuel_for = 0 if(get_fuel() >= used) - reagents.remove_reagent("welding_fuel", used) + reagents.remove_reagent(/datum/reagent/fuel, used) check_fuel() return TRUE else @@ -333,7 +333,7 @@ /obj/item/weldingtool/abductor/process() if(get_fuel() <= max_fuel) - reagents.add_reagent("welding_fuel", 1) + reagents.add_reagent(/datum/reagent/fuel, 1) ..() /obj/item/weldingtool/hugetank @@ -377,7 +377,7 @@ ..() if(get_fuel() < max_fuel && nextrefueltick < world.time) nextrefueltick = world.time + 10 - reagents.add_reagent("welding_fuel", 1) + reagents.add_reagent(/datum/reagent/fuel, 1) /obj/item/weldingtool/advanced name = "advanced welding tool" @@ -390,7 +390,7 @@ /obj/item/weldingtool/advanced/process() if(get_fuel() <= max_fuel) - reagents.add_reagent("welding_fuel", 1) + reagents.add_reagent(/datum/reagent/fuel, 1) ..() #undef WELDER_FUEL_BURN_INTERVAL diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 08c43f0437..cf891f5a47 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -353,7 +353,7 @@ update_light() return TRUE -/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file) +/obj/item/toy/sword/cx/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(active) if(isinhands) diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index b2158eb1c8..97f53d3ca7 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -70,12 +70,12 @@ name = "crushed can" icon_state = "cola" resistance_flags = NONE - grind_results = list("aluminium" = 10) + grind_results = list(/datum/reagent/aluminium = 10) /obj/item/trash/boritos name = "boritos bag" icon_state = "boritos" - grind_results = list("aluminium" = 1) //from the mylar bag + grind_results = list(/datum/reagent/aluminium = 1) //from the mylar bag /obj/item/trash/attack(mob/M, mob/living/user) return diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index d7891feaa0..84f14f50a5 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -556,7 +556,7 @@ update_light() return TRUE -/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file) +/obj/item/twohanded/dualsaber/hypereutactic/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(isinhands) var/mutable_appearance/gem_inhand = mutable_appearance(icon_file, "hypereutactic_gem") diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index e61a17b4ec..9fa4d730b6 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -88,6 +88,28 @@ else return ..() +/obj/structure/chair/alt_attack_hand(mob/living/user) + if(Adjacent(user) && istype(user)) + if(!item_chair || !user.can_hold_items() || !has_buckled_mobs() || buckled_mobs.len > 1 || dir != user.dir || flags_1 & NODECONSTRUCT_1) + return TRUE + if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + to_chat(user, "You can't do that right now!") + return TRUE + if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) + to_chat(user, "You're too exhausted for that.") + return TRUE + var/mob/living/poordude = buckled_mobs[1] + if(!istype(poordude)) + return TRUE + user.visible_message("[user] pulls [src] out from under [poordude].", "You pull [src] out from under [poordude].") + var/C = new item_chair(loc) + user.put_in_hands(C) + poordude.Knockdown(20)//rip in peace + user.adjustStaminaLoss(5) + unbuckle_all_mobs(TRUE) + qdel(src) + return TRUE + /obj/structure/chair/attack_tk(mob/user) if(!anchored || has_buckled_mobs() || !isturf(user.loc)) ..() diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 82a0c4d32f..9935fc8ec5 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -252,7 +252,7 @@ LINEN BINS add_overlay(g_mouth) add_overlay(g_eyes) -/obj/item/bedsheet/gondola/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/bedsheet/gondola/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = ..() if(!isinhands) . += mutable_appearance(icon_file, g_mouth) diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index aad68b2166..645d1e5d7a 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -22,7 +22,9 @@ if(opened || move_delay || user.stat || user.IsStun() || user.IsKnockdown() || user.IsUnconscious() || !isturf(loc) || !has_gravity(loc)) return move_delay = TRUE - if(step(src, direction)) + var/oldloc = loc + step(src, direction) + if(oldloc != loc) addtimer(CALLBACK(src, .proc/ResetMoveDelay), (use_mob_movespeed ? user.movement_delay() : CONFIG_GET(number/movedelay/walk_delay)) * move_speed_multiplier) else ResetMoveDelay() diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 771b4bc04e..8b078802f0 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -237,6 +237,12 @@ start_showpiece_type = /obj/item/clothing/mask/facehugger/lamarr req_access = list(ACCESS_RD) +/obj/structure/displaycase/clown + desc = "In the event of clown, honk glass." + alert = TRUE + start_showpiece_type = /obj/item/bikehorn + req_access = list(ACCESS_CENT_GENERAL) + /obj/structure/displaycase/trophy name = "trophy display case" desc = "Store your trophies of accomplishment in here, and they will stay forever." diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index e7a0ac2d04..1da8a26b52 100644 --- a/code/game/objects/structures/divine.dm +++ b/code/game/objects/structures/divine.dm @@ -39,7 +39,7 @@ return last_process = world.time to_chat(user, "The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards.") - user.reagents.add_reagent("godblood",20) + user.reagents.add_reagent(/datum/reagent/medicine/omnizine/godblood,20) update_icon() addtimer(CALLBACK(src, /atom/.proc/update_icon), time_between_uses) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index c0519f2504..205e87329b 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -84,7 +84,7 @@ /obj/structure/grille/attack_animal(mob/user) . = ..() - if(!shock(user, 70)) + if(!shock(user, 70) && !QDELETED(src)) //Last hit still shocks but shouldn't deal damage to the grille) take_damage(rand(5,10), BRUTE, "melee", 1) /obj/structure/grille/attack_paw(mob/user) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index a7eaea0d16..c41d6d32af 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -18,7 +18,7 @@ // flags = CONDUCT_1 /obj/structure/lattice/examine(mob/user) - ..() + . = ..() . += deconstruction_hints(user) /obj/structure/lattice/proc/deconstruction_hints(mob/user) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 99f8875aef..0bb081625b 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -182,6 +182,17 @@ else return ..() +/obj/structure/table/alt_attack_hand(mob/user) + if(user && Adjacent(user) && !user.incapacitated()) + user.setClickCooldown(CLICK_CD_MELEE) + if(istype(user) && user.a_intent == INTENT_HARM) + user.visible_message("[user] slams [user.p_their()] palms down on [src].", "You slam your palms down on [src].") + playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 50, 1) + else + user.visible_message("[user] slaps [user.p_their()] hands on [src].", "You slap your hands on [src].") + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + user.do_attack_animation(src) + return TRUE /obj/structure/table/deconstruct(disassembled = TRUE, wrench_disassembly = 0) if(!(flags_1 & NODECONSTRUCT_1)) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index e2e0f703f7..a8f95e30da 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -103,7 +103,7 @@ if (!open) return var/obj/item/reagent_containers/RG = I - RG.reagents.add_reagent("water", min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) + RG.reagents.add_reagent(/datum/reagent/water, min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) to_chat(user, "You fill [RG] from [src]. Gross.") else return ..() @@ -201,7 +201,7 @@ icon = 'icons/obj/items_and_weapons.dmi' icon_state = "urinalcake" w_class = WEIGHT_CLASS_TINY - list_reagents = list("chlorine" = 3, "ammonia" = 1) + list_reagents = list(/datum/reagent/chlorine = 3, /datum/reagent/ammonia = 1) /obj/item/reagent_containers/food/urinalcake/attack_self(mob/living/user) user.visible_message("[user] squishes [src]!", "You squish [src].", "You hear a squish.") @@ -463,7 +463,7 @@ desc = "A sink used for washing one's hands and face." anchored = TRUE var/busy = FALSE //Something's being washed at the moment - var/dispensedreagent = "water" // for whenever plumbing happens + var/dispensedreagent = /datum/reagent/water // for whenever plumbing happens /obj/structure/sink/attack_hand(mob/living/user) @@ -538,7 +538,7 @@ return if(istype(O, /obj/item/mop)) - O.reagents.add_reagent("[dispensedreagent]", 5) + O.reagents.add_reagent(dispensedreagent, 5) to_chat(user, "You wet [O] in [src].") playsound(loc, 'sound/effects/slosh.ogg', 25, 1) return diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 3f46994da9..f9153ff8bf 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -177,7 +177,7 @@ I.play_tool_sound(src, 80) return remove_tile(user, silent) -/turf/open/floor/proc/remove_tile(mob/user, silent = FALSE, make_tile = TRUE) +/turf/open/floor/proc/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE) if(broken || burnt) broken = 0 burnt = 0 @@ -191,24 +191,20 @@ return make_plating() /turf/open/floor/singularity_pull(S, current_size) - ..() - if(current_size == STAGE_THREE) - if(prob(30)) + . = ..() + switch(current_size) + if(STAGE_THREE) + if(floor_tile && prob(30)) + remove_tile() + if(STAGE_FOUR) + if(floor_tile && prob(50)) + remove_tile() + if(STAGE_FIVE to INFINITY) if(floor_tile) - new floor_tile(src) - make_plating() - else if(current_size == STAGE_FOUR) - if(prob(50)) - if(floor_tile) - new floor_tile(src) - make_plating() - else if(current_size >= STAGE_FIVE) - if(floor_tile) - if(prob(70)) - new floor_tile(src) - make_plating() - else if(prob(50)) - ReplaceWithLattice() + if(prob(70)) + remove_tile() + else if(prob(50)) + ReplaceWithLattice() /turf/open/floor/narsie_act(force, ignore_mobs, probability = 20) . = ..() diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index 82f1a88253..f38a8a3d9b 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -44,7 +44,7 @@ C.play_tool_sound(src, 80) return remove_tile(user, silent, (C.tool_behaviour == TOOL_SCREWDRIVER)) -/turf/open/floor/wood/remove_tile(mob/user, silent = FALSE, make_tile = TRUE) +/turf/open/floor/wood/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE) if(broken || burnt) broken = 0 burnt = 0 diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm index 28ffbbd1ff..7816341a0a 100644 --- a/code/game/turfs/simulated/floor/reinf_floor.dm +++ b/code/game/turfs/simulated/floor/reinf_floor.dm @@ -76,14 +76,16 @@ /turf/open/floor/engine/singularity_pull(S, current_size) ..() - if(current_size >= STAGE_FIVE) + if(current_size >= STAGE_FIVE && prob(30)) if(floor_tile) - if(prob(30)) - new floor_tile(src) - make_plating() - else if(prob(30)) + remove_tile(forced = TRUE) + else ReplaceWithLattice() +/turf/open/floor/engine/remove_tile(mob/user, silent = FALSE, make_tile = TRUE, forced = FALSE) + if(forced) + return ..() + /turf/open/floor/engine/attack_paw(mob/user) return attack_hand(user) diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index aeadceb2e5..73c1c465cd 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -47,7 +47,8 @@ return ..() -/turf/closed/mineral/attackby(obj/item/I, mob/user, params) +/turf/closed/mineral/attackby(obj/item/pickaxe/I, mob/user, params) + var/stored_dir = user.dir if (!user.IsAdvancedToolUser()) to_chat(usr, "You don't have the dexterity to do this!") return @@ -63,7 +64,12 @@ to_chat(user, "You start picking...") if(I.use_tool(src, user, 40, volume=50)) + var/range = I.digrange //Store the current digrange so people don't cheese digspeed swapping for faster mining if(ismineralturf(src)) + if(I.digrange > 0) + for(var/turf/closed/mineral/M in range(user,range)) + if(get_dir(user,M)&stored_dir) + M.gets_drilled() to_chat(user, "You finish cutting into the rock.") gets_drilled(user) SSblackbox.record_feedback("tally", "pick_used_mining", 1, I.type) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index d280ba408b..e81b3d1062 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -554,12 +554,10 @@ clear_reagents_to_vomit_pool(C,V) /proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V) + for(var/datum/reagent/consumable/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food + if(R.nutriment_factor > 0) + M.reagents.del_reagent(R.type) M.reagents.trans_to(V, M.reagents.total_volume / 10) - for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food - if(istype(R, /datum/reagent/consumable)) - var/datum/reagent/consumable/nutri_check = R - if(nutri_check.nutriment_factor >0) - M.reagents.remove_reagent(R.id,R.volume) //Whatever happens after high temperature fire dies out or thermite reaction works. //Should return new turf diff --git a/code/game/world.dm b/code/game/world.dm index 4043f15f6f..034ecddfa2 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -112,6 +112,7 @@ GLOBAL_VAR(restart_counter) GLOB.world_runtime_log = "[GLOB.log_directory]/runtime.log" GLOB.query_debug_log = "[GLOB.log_directory]/query_debug.log" GLOB.world_job_debug_log = "[GLOB.log_directory]/job_debug.log" + GLOB.subsystem_log = "[GLOB.log_directory]/subsystem.log" #ifdef UNIT_TESTS GLOB.test_log = file("[GLOB.log_directory]/tests.log") @@ -126,6 +127,7 @@ GLOBAL_VAR(restart_counter) start_log(GLOB.world_qdel_log) start_log(GLOB.world_runtime_log) start_log(GLOB.world_job_debug_log) + start_log(GLOB.subsystem_log) GLOB.changelog_hash = md5('html/changelog.html') //for telling if the changelog has changed recently if(fexists(GLOB.config_error_log)) @@ -143,6 +145,14 @@ GLOBAL_VAR(restart_counter) /world/Topic(T, addr, master, key) TGS_TOPIC //redirect to server tools if necessary + if(!SSfail2topic) + return "Server not initialized." + else if(SSfail2topic.IsRateLimited(addr)) + return "Rate limited." + + if(length(T) > CONFIG_GET(number/topic_max_size)) + return "Payload too large!" + var/static/list/topic_handlers = TopicHandlers() var/list/input = params2list(T) @@ -159,7 +169,7 @@ GLOBAL_VAR(restart_counter) return handler = new handler() - return handler.TryRun(input) + return handler.TryRun(input, addr) /world/proc/AnnouncePR(announcement, list/payload) var/static/list/PRcounts = list() //PR id -> number of times announced this round diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index fce45810d1..dc6d12453d 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -795,7 +795,7 @@ icon_state = "bed" can_buckle = 1 - var/static/list/injected_reagents = list("corazone") + var/static/list/injected_reagents = list(/datum/reagent/medicine/corazone) /obj/structure/table/optable/abductor/Crossed(atom/movable/AM) . = ..() diff --git a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm index 3cb90d64bb..182fcea0c2 100644 --- a/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob/blobs/blob_mobs.dm @@ -143,9 +143,9 @@ create_reagents(10) if(overmind && overmind.blob_reagent_datum) - reagents.add_reagent(overmind.blob_reagent_datum.id, 10) + reagents.add_reagent(overmind.blob_reagent_datum.type, 10) else - reagents.add_reagent("spore", 10) + reagents.add_reagent(/datum/reagent/toxin/spore, 10) // Attach the smoke spreader and setup/start it. S.attach(location) diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm index 9174692b49..bbb8aeca30 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm @@ -84,8 +84,8 @@ //It is called from your coffin on close (by you only) if(poweron_masquerade == TRUE || owner.current.AmStaked()) return FALSE - owner.current.adjustStaminaLoss(-2 + (regenRate * -10) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more. - owner.current.adjustCloneLoss(-1 * (regenRate * 4) * mult, 0) + owner.current.adjustStaminaLoss(-2 + (regenRate * 8) * mult, 0) // Humans lose stamina damage really quickly. Vamps should heal more. + owner.current.adjustCloneLoss(-0.1 * (regenRate * 2) * mult, 0) owner.current.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1 * (regenRate * 4) * mult) //adjustBrainLoss(-1 * (regenRate * 4) * mult, 0) // No Bleeding if(ishuman(owner.current)) //NOTE Current bleeding is horrible, not to count the amount of blood ballistics delete. @@ -97,7 +97,7 @@ var/fireheal = 0 // BURN: Heal in Coffin while Fakedeath, or when damage above maxhealth (you can never fully heal fire) var/amInCoffinWhileTorpor = istype(C.loc, /obj/structure/closet/crate/coffin) && (mult == 0 || HAS_TRAIT(C, TRAIT_DEATHCOMA)) // Check for mult 0 OR death coma. (mult 0 means we're testing from coffin) if(amInCoffinWhileTorpor) - mult *= 5 // Increase multiplier if we're sleeping in a coffin. + mult *= 4 // Increase multiplier if we're sleeping in a coffin. fireheal = min(C.getFireLoss_nonProsthetic(), regenRate) // NOTE: Burn damage ONLY heals in torpor. costMult = 0.25 C.ExtinguishMob() @@ -118,6 +118,8 @@ if(bruteheal + fireheal + toxinheal > 0) // Just a check? Don't heal/spend, and return. if(mult == 0) return TRUE + if(owner.current.stat >= UNCONSCIOUS) //Faster regeneration while unconcious, so you dont have to wait all day + mult *= 2 // We have damage. Let's heal (one time) C.adjustBruteLoss(-bruteheal * mult, forced = TRUE)// Heal BRUTE / BURN in random portions throughout the body. C.adjustFireLoss(-fireheal * mult, forced = TRUE) @@ -187,19 +189,19 @@ /datum/antagonist/bloodsucker/proc/HandleDeath() // FINAL DEATH // Fire Damage? (above double health) - if (owner.current.getFireLoss_nonProsthetic() >= owner.current.getMaxHealth() * 2) + if(owner.current.getFireLoss_nonProsthetic() >= owner.current.getMaxHealth() * 1.5) FinalDeath() return // Staked while "Temp Death" or Asleep - if (owner.current.StakeCanKillMe() && owner.current.AmStaked()) + if(owner.current.StakeCanKillMe() && owner.current.AmStaked()) FinalDeath() return // Not "Alive"? - if (!owner.current || !isliving(owner.current) || isbrain(owner.current) || !get_turf(owner.current)) + if(!owner.current || !isliving(owner.current) || isbrain(owner.current) || !get_turf(owner.current)) FinalDeath() return // Missing Brain or Heart? - if (!owner.current.HaveBloodsuckerBodyparts()) + if(!owner.current.HaveBloodsuckerBodyparts()) FinalDeath() return // Disable Powers: Masquerade * NOTE * This should happen as a FLAW! @@ -212,21 +214,21 @@ var/total_toxloss = owner.current.getToxLoss() //This is neater than just putting it in total_damage var/total_damage = total_brute + total_burn + total_toxloss // Died? Convert to Torpor (fake death) - if (owner.current.stat >= DEAD) + if(owner.current.stat >= DEAD) Torpor_Begin() to_chat(owner, "Your immortal body will not yet relinquish your soul to the abyss. You enter Torpor.") + sleep(30) //To avoid spam if (poweron_masquerade == TRUE) to_chat(owner, "Your wounds will not heal until you disable the Masquerade power.") // End Torpor: else // No damage, OR toxin healed AND brute healed and NOT in coffin (since you cannot heal burn) - if (total_damage <= 0 || total_toxloss <= 0 && total_brute <= 0 && !istype(owner.current.loc, /obj/structure/closet/crate/coffin)) + if(total_damage <= 0 || total_toxloss <= 0 && total_brute <= 0 && !istype(owner.current.loc, /obj/structure/closet/crate/coffin)) // Not Daytime, Not in Torpor - if (!SSticker.mode.is_daylight() && HAS_TRAIT_FROM(owner.current, TRAIT_DEATHCOMA, "bloodsucker")) + if(!SSticker.mode.is_daylight() && HAS_TRAIT_FROM(owner.current, TRAIT_DEATHCOMA, "bloodsucker")) Torpor_End() // Fake Unconscious - if (poweron_masquerade == TRUE && total_damage >= owner.current.getMaxHealth() - HEALTH_THRESHOLD_FULLCRIT) + if(poweron_masquerade == TRUE && total_damage >= owner.current.getMaxHealth() - HEALTH_THRESHOLD_FULLCRIT) owner.current.Unconscious(20,1) - //HEALTH_THRESHOLD_CRIT 0 //HEALTH_THRESHOLD_FULLCRIT -30 //HEALTH_THRESHOLD_DEAD -100 @@ -241,8 +243,8 @@ owner.current.update_sight() owner.current.reload_fullscreen() // Disable ALL Powers - for (var/datum/action/bloodsucker/power in powers) - if (power.active && !power.can_use_in_torpor) + for(var/datum/action/bloodsucker/power in powers) + if(power.active && !power.can_use_in_torpor) power.DeactivatePower() @@ -281,7 +283,7 @@ // Free my Vassals! FreeAllVassals() // Elders get Dusted - if (vamplevel >= 4) // (vamptitle) + if(vamplevel >= 4) // (vamptitle) owner.current.visible_message("[owner.current]'s skin crackles and dries, their skin and bones withering to dust. A hollow cry whips from what is now a sandy pile of remains.", \ "Your soul escapes your withering body as the abyss welcomes you to your Final Death.", \ "You hear a dry, crackling sound.") @@ -306,7 +308,7 @@ if (!isliving(src)) return var/mob/living/L = src - if (!L.AmBloodsucker()) + if(!L.AmBloodsucker()) return // We're a vamp? Try to eat food... var/datum/antagonist/bloodsucker/bloodsuckerdatum = mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) @@ -315,7 +317,7 @@ /datum/antagonist/bloodsucker/proc/handle_eat_human_food(var/food_nutrition) // Called from snacks.dm and drinks.dm set waitfor = FALSE - if (!owner.current || !iscarbon(owner.current)) + if(!owner.current || !iscarbon(owner.current)) return var/mob/living/carbon/C = owner.current // Remove Nutrition, Give Bad Food diff --git a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm index 97b4437298..844b523135 100644 --- a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm +++ b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm @@ -35,8 +35,8 @@ var/warn_sun_burn = FALSE // So we only get the sun burn message once per day. var/had_toxlover = FALSE // LISTS - var/static/list/defaultTraits = list (TRAIT_STABLEHEART, TRAIT_NOBREATH, TRAIT_SLEEPIMMUNE, TRAIT_NOCRITDAMAGE, TRAIT_RESISTCOLD, TRAIT_RADIMMUNE, TRAIT_VIRUSIMMUNE, TRAIT_NIGHT_VISION, \ - TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_AGEUSIA, TRAIT_COLDBLOODED, TRAIT_NONATURALHEAL, TRAIT_NOMARROW, TRAIT_NOPULSE, TRAIT_NOCLONE) + var/static/list/defaultTraits = list (TRAIT_STABLEHEART, TRAIT_NOBREATH, TRAIT_SLEEPIMMUNE, TRAIT_NOCRITDAMAGE, TRAIT_RESISTCOLD, TRAIT_RADIMMUNE, TRAIT_NIGHT_VISION, \ + TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_AGEUSIA, TRAIT_COLDBLOODED, TRAIT_NONATURALHEAL, TRAIT_NOMARROW, TRAIT_NOPULSE, TRAIT_VIRUSIMMUNE) // NOTES: TRAIT_AGEUSIA <-- Doesn't like flavors. // REMOVED: TRAIT_NODEATH // TO ADD: @@ -334,7 +334,7 @@ datum/antagonist/bloodsucker/proc/SpendRank() // Assign True Reputation if(vamplevel == 4) SelectReputation(am_fledgling = FALSE, forced = TRUE) - to_chat(owner.current, "You are now a rank [vamplevel] Bloodsucker. Your strength, resistence, health, feed rate, regen rate, and maximum blood have all increased!") + to_chat(owner.current, "You are now a rank [vamplevel] Bloodsucker. Your strength, health, feed rate, regen rate, and maximum blood have all increased!") to_chat(owner.current, "Your existing powers have all ranked up as well!") update_hud(TRUE) owner.current.playsound_local(null, 'sound/effects/pope_entry.ogg', 25, 1) // Play THIS sound for user only. The "null" is where turf would go if a location was needed. Null puts it right in their head. diff --git a/code/modules/antagonists/bloodsucker/datum_vassal.dm b/code/modules/antagonists/bloodsucker/datum_vassal.dm index 71ee0bcc1d..716b7ff223 100644 --- a/code/modules/antagonists/bloodsucker/datum_vassal.dm +++ b/code/modules/antagonists/bloodsucker/datum_vassal.dm @@ -56,11 +56,6 @@ var/obj/item/organ/eyes/vassal/E = new E.Insert(owner.current) -/obj/item/organ/eyes/vassal/ - lighting_alpha = 180 // LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE <--- This is too low a value at 128. We need to SEE what the darkness is so we can hide in it. - see_in_dark = 12 - flash_protect = -1 //These eyes are weaker to flashes, but let you see in the dark - /datum/antagonist/vassal/proc/remove_thrall_eyes() var/obj/item/organ/eyes/E = new E.Insert(owner.current) diff --git a/code/modules/antagonists/bloodsucker/items/bloodsucker_organs.dm b/code/modules/antagonists/bloodsucker/items/bloodsucker_organs.dm index 5a905857c5..e4e26fe034 100644 --- a/code/modules/antagonists/bloodsucker/items/bloodsucker_organs.dm +++ b/code/modules/antagonists/bloodsucker/items/bloodsucker_organs.dm @@ -51,6 +51,11 @@ return "no" // Bloodsuckers don't have a heartbeat at all when stopped (default is "an unstable") // EYES // +/obj/item/organ/eyes/vassal/ + lighting_alpha = 180 // LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE <--- This is too low a value at 128. We need to SEE what the darkness is so we can hide in it. + see_in_dark = 12 + flash_protect = -1 //These eyes are weaker to flashes, but let you see in the dark + /obj/item/organ/eyes/vassal/bloodsucker flash_protect = 2 //Eye healing isnt working properly sight_flags = SEE_MOBS // Taken from augmented_eyesight.dm diff --git a/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm b/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm index 9db4cae1ff..b7c90523b6 100644 --- a/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm +++ b/code/modules/antagonists/bloodsucker/items/bloodsucker_stake.dm @@ -78,7 +78,7 @@ var/mob/living/carbon/C = target // Needs to be Down/Slipped in some way to Stake. if(!C.can_be_staked() || target == user) - to_chat(user, "You cant stake [target] when they are moving moving about! They have to be laying down!") + to_chat(user, "You can't stake [target] when they are moving about! They have to be laying down or grabbed by the neck!") return // Oops! Can't. if(HAS_TRAIT(C, TRAIT_PIERCEIMMUNE)) @@ -113,7 +113,7 @@ // Can this target be staked? If someone stands up before this is complete, it fails. Best used on someone stationary. /mob/living/carbon/proc/can_be_staked() //return resting || IsKnockdown() || IsUnconscious() || (stat && (stat != SOFT_CRIT || pulledby)) || (has_trait(TRAIT_FAKEDEATH)) || resting || IsStun() || IsFrozen() || (pulledby && pulledby.grab_state >= GRAB_NECK) - return (src.resting || src.lying) + return (resting || lying || IsUnconscious() || pulledby && pulledby.grab_state >= GRAB_NECK) // ABOVE: Taken from update_mobility() in living.dm /obj/item/stake/hardened diff --git a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm index 3493622945..f66ce4a208 100644 --- a/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm +++ b/code/modules/antagonists/bloodsucker/objects/bloodsucker_crypt.dm @@ -130,7 +130,7 @@ /obj/structure/bloodsucker/vassalrack/MouseDrop_T(atom/movable/O, mob/user) if(!O.Adjacent(src) || O == user || !isliving(O) || !isliving(user) || useLock || has_buckled_mobs() || user.incapacitated()) return - if(!anchored && user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) + if(!anchored && isvamp(user)) to_chat(user, "Until this rack is secured in place, it cannot serve its purpose.") return // PULL TARGET: Remember if I was pullin this guy, so we can restore this @@ -183,7 +183,7 @@ /obj/structure/bloodsucker/vassalrack/user_unbuckle_mob(mob/living/M, mob/user) // Attempt Unbuckle - if(!user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) + if(!isvamp(user)) if(M == user) M.visible_message("[user] tries to release themself from the rack!",\ "You attempt to release yourself from the rack!") // For sound if not seen --> "You hear a squishy wet noise.") @@ -453,7 +453,7 @@ /obj/structure/bloodsucker/candelabrum/examine(mob/user) . = ..() - if((user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER)) || isobserver(user)) + if((isvamp()) || isobserver(user)) . += {"This is a magical candle which drains at the sanity of mortals who are not under your command while it is active."} . += {"You can alt click on it from any range to turn it on remotely, or simply be next to it and click on it to turn it on and off normally."} /* if(user.mind.has_antag_datum(ANTAG_DATUM_VASSAL) @@ -461,15 +461,13 @@ You can turn it on and off by clicking on it while you are next to it"} */ /obj/structure/bloodsucker/candelabrum/attack_hand(mob/user) - var/datum/antagonist/bloodsucker/V = user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) //I wish there was a better way to do this var/datum/antagonist/vassal/T = user.mind.has_antag_datum(ANTAG_DATUM_VASSAL) - if(istype(V) || istype(T)) + if(isvamp(user) || istype(T)) toggle() /obj/structure/bloodsucker/candelabrum/AltClick(mob/user) - var/datum/antagonist/bloodsucker/V = user.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) // Bloodsuckers can turn their candles on from a distance. SPOOOOKY. - if(istype(V)) + if(isvamp(user)) toggle() /obj/structure/bloodsucker/candelabrum/proc/toggle(mob/user) @@ -486,8 +484,7 @@ if(lit) for(var/mob/living/carbon/human/H in viewers(7, src)) var/datum/antagonist/vassal/T = H.mind.has_antag_datum(ANTAG_DATUM_VASSAL) - var/datum/antagonist/bloodsucker/V = H.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) - if(V || T) //We dont want vassals or vampires affected by this + if(isvamp(H) || T) //We dont want vassals or vampires affected by this return H.hallucination = 20 SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "vampcandle", /datum/mood_event/vampcandle) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_cloak.dm b/code/modules/antagonists/bloodsucker/powers/bs_cloak.dm index cea942e26d..9126638fea 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_cloak.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_cloak.dm @@ -9,8 +9,9 @@ bloodsucker_can_buy = TRUE amToggle = TRUE warn_constant_cost = TRUE + var/was_running - var/light_min = 0.5 // If lum is above this, no good. + var/light_min = 0.2 // If lum is above this, no good. /datum/action/bloodsucker/cloak/CheckCanUse(display_error) . = ..() @@ -26,18 +27,16 @@ /datum/action/bloodsucker/cloak/ActivatePower() var/datum/antagonist/bloodsucker/bloodsuckerdatum = owner.mind.has_antag_datum(ANTAG_DATUM_BLOODSUCKER) var/mob/living/user = owner - var/was_running = (user.m_intent == MOVE_INTENT_RUN) + was_running = (user.m_intent == MOVE_INTENT_RUN) if(was_running) user.toggle_move_intent() ADD_TRAIT(user, TRAIT_NORUNNING, "cloak of darkness") while(bloodsuckerdatum && ContinueActive(user) || user.m_intent == MOVE_INTENT_RUN) // Pay Blood Toll (if awake) - owner.alpha = max(0, owner.alpha - min(75, 20 + 15 * level_current)) + owner.alpha = max(20, owner.alpha - min(75, 10 + 5 * level_current)) bloodsuckerdatum.AddBloodVolume(-0.2) sleep(5) // Check every few ticks that we haven't disabled this power // Return to Running (if you were before) - if(was_running && user.m_intent != MOVE_INTENT_RUN) - user.toggle_move_intent() /datum/action/bloodsucker/cloak/ContinueActive(mob/living/user, mob/living/target) if (!..()) @@ -55,3 +54,5 @@ ..() REMOVE_TRAIT(user, TRAIT_NORUNNING, "cloak of darkness") user.alpha = 255 + if(was_running && user.m_intent != MOVE_INTENT_RUN) + user.toggle_move_intent() diff --git a/code/modules/antagonists/bloodsucker/powers/bs_masquerade.dm b/code/modules/antagonists/bloodsucker/powers/bs_masquerade.dm index 6ee17b3014..0435ddccd5 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_masquerade.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_masquerade.dm @@ -51,14 +51,17 @@ REMOVE_TRAIT(user, TRAIT_COLDBLOODED, "bloodsucker") REMOVE_TRAIT(user, TRAIT_NOHARDCRIT, "bloodsucker") REMOVE_TRAIT(user, TRAIT_NOSOFTCRIT, "bloodsucker") + REMOVE_TRAIT(user, TRAIT_VIRUSIMMUNE, "bloodsucker") var/obj/item/organ/heart/vampheart/H = user.getorganslot(ORGAN_SLOT_HEART) - + var/obj/item/organ/eyes/vassal/bloodsucker/E = user.getorganslot(ORGAN_SLOT_EYES) + E.flash_protect = 0 + // WE ARE ALIVE! // bloodsuckerdatum.poweron_masquerade = TRUE while(bloodsuckerdatum && ContinueActive(user)) // HEART - if (istype(H)) + if(istype(H)) H.FakeStart() // PASSIVE (done from LIFE) @@ -67,7 +70,7 @@ // Don't Heal // Pay Blood Toll (if awake) - if (user.stat == CONSCIOUS) + if(user.stat == CONSCIOUS) bloodsuckerdatum.AddBloodVolume(-0.2) sleep(20) // Check every few ticks that we haven't disabled this power @@ -89,9 +92,13 @@ ADD_TRAIT(user, TRAIT_COLDBLOODED, "bloodsucker") ADD_TRAIT(user, TRAIT_NOHARDCRIT, "bloodsucker") ADD_TRAIT(user, TRAIT_NOSOFTCRIT, "bloodsucker") + ADD_TRAIT(user, TRAIT_VIRUSIMMUNE, "bloodsucker") // HEART var/obj/item/organ/heart/H = user.getorganslot(ORGAN_SLOT_HEART) + var/obj/item/organ/eyes/vassal/bloodsucker/E = user.getorganslot(ORGAN_SLOT_EYES) H.Stop() + E.flash_protect = 2 + to_chat(user, "Your heart beats one final time, while your skin dries out and your icy pallor returns.") diff --git a/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm b/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm index 94bc0e11d0..7962c7d403 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_mesmerize.dm @@ -89,17 +89,14 @@ if(istype(target)) target.Stun(40) //Utterly useless without this, its okay since there are so many checks to go through - target.silent = 45 //Shhhh little lamb target.apply_status_effect(STATUS_EFFECT_MESMERIZE, 45) //So you cant rotate with combat mode, plus fancy status alert if(do_mob(user, target, 40, 0, TRUE, extra_checks=CALLBACK(src, .proc/ContinueActive, user, target))) PowerActivatedSuccessfully() // PAY COST! BEGIN COOLDOWN! var/power_time = 90 + level_current * 12 - target.silent = power_time + 20 - target.apply_status_effect(STATUS_EFFECT_MESMERIZE, 100 + level_current * 15) + target.apply_status_effect(STATUS_EFFECT_MESMERIZE, power_time + 80) to_chat(user, "[target] is fixed in place by your hypnotic gaze.") target.Stun(power_time) - //target.silent += power_time / 10 // Silent isn't based on ticks. target.next_move = world.time + power_time // <--- Use direct change instead. We want an unmodified delay to their next move // target.changeNext_move(power_time) // check click.dm target.notransform = TRUE // <--- Fuck it. We tried using next_move, but they could STILL resist. We're just doing a hard freeze. spawn(power_time) diff --git a/code/modules/antagonists/bloodsucker/powers/bs_trespass.dm b/code/modules/antagonists/bloodsucker/powers/bs_trespass.dm index c650a6af15..159c7b20b7 100644 --- a/code/modules/antagonists/bloodsucker/powers/bs_trespass.dm +++ b/code/modules/antagonists/bloodsucker/powers/bs_trespass.dm @@ -89,13 +89,7 @@ user.invisibility = INVISIBILITY_MAXIMUM // LOSE CUFFS - if(user.handcuffed) - var/obj/O = user.handcuffed - user.dropItemToGround(O) - if(user.legcuffed) - var/obj/O = user.legcuffed - user.dropItemToGround(O) - + // Wait... sleep(mist_delay / 2) diff --git a/code/modules/antagonists/changeling/powers/adrenaline.dm b/code/modules/antagonists/changeling/powers/adrenaline.dm index 256d3e89e3..ba40388844 100644 --- a/code/modules/antagonists/changeling/powers/adrenaline.dm +++ b/code/modules/antagonists/changeling/powers/adrenaline.dm @@ -13,5 +13,5 @@ //Recover from stuns. /obj/effect/proc_holder/changeling/adrenaline/sting_action(mob/living/user) - user.do_adrenaline(0, FALSE, 70, 0, TRUE, list("epinephrine" = 3, "changelingmeth" = 10, "mannitol" = 10, "regen_jelly" = 10, "changelingadrenaline" = 5), "Energy rushes through us.", 0, 0.75, 0) + user.do_adrenaline(0, FALSE, 70, 0, TRUE, list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/drug/methamphetamine/changeling = 10, /datum/reagent/medicine/mannitol = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/changelingadrenaline = 5), "Energy rushes through us.", 0, 0.75, 0) return TRUE \ No newline at end of file diff --git a/code/modules/antagonists/changeling/powers/linglink.dm b/code/modules/antagonists/changeling/powers/linglink.dm index 971c811074..332f543545 100644 --- a/code/modules/antagonists/changeling/powers/linglink.dm +++ b/code/modules/antagonists/changeling/powers/linglink.dm @@ -58,7 +58,7 @@ target.mind.linglink = 1 target.say("[MODE_TOKEN_CHANGELING] AAAAARRRRGGGGGHHHHH!!") to_chat(target, "You can now communicate in the changeling hivemind, say \"[MODE_TOKEN_CHANGELING] message\" to communicate!") - target.reagents.add_reagent("salbutamol", 40) // So they don't choke to death while you interrogate them + target.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 40) // So they don't choke to death while you interrogate them sleep(1800) SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]", "[i]")) if(!do_mob(user, target, 20)) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 92a4f28308..b2ab5caef8 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -500,7 +500,7 @@ /obj/item/clothing/suit/space/changeling/process() if(ishuman(loc)) var/mob/living/carbon/human/H = loc - H.reagents.add_reagent("salbutamol", REAGENTS_METABOLISM) + H.reagents.add_reagent(/datum/reagent/medicine/salbutamol, REAGENTS_METABOLISM) /obj/item/clothing/head/helmet/space/changeling name = "flesh mass" diff --git a/code/modules/antagonists/changeling/powers/panacea.dm b/code/modules/antagonists/changeling/powers/panacea.dm index 8d571d21e3..2a0451bc76 100644 --- a/code/modules/antagonists/changeling/powers/panacea.dm +++ b/code/modules/antagonists/changeling/powers/panacea.dm @@ -28,10 +28,10 @@ C.vomit(0, toxic = TRUE) O.forceMove(get_turf(user)) - user.reagents.add_reagent("mutadone", 10) - user.reagents.add_reagent("pen_jelly", 20) - user.reagents.add_reagent("antihol", 10) - user.reagents.add_reagent("mannitol", 25) + user.reagents.add_reagent(/datum/reagent/medicine/mutadone, 10) + user.reagents.add_reagent(/datum/reagent/medicine/pen_acid/pen_jelly, 20) + user.reagents.add_reagent(/datum/reagent/medicine/antihol, 10) + user.reagents.add_reagent(/datum/reagent/medicine/mannitol, 25) if(isliving(user)) var/mob/living/L = user diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index c58d934d6d..dc7887eee3 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -104,11 +104,11 @@ var/mob/living/carbon/C = target . = TRUE if(istype(C)) - if(C.reagents.has_reagent("changeling_sting_real")) - C.reagents.add_reagent("changeling_sting_real",120) + if(C.reagents.has_reagent(/datum/reagent/changeling_string)) + C.reagents.add_reagent(/datum/reagent/changeling_string,120) log_combat(user, target, "stung", "transformation sting", ", extending the duration.") else - C.reagents.add_reagent("changeling_sting_real",120,list("desired_dna" = selected_dna.dna)) + C.reagents.add_reagent(/datum/reagent/changeling_string,120,list("desired_dna" = selected_dna.dna)) log_combat(user, target, "stung", "transformation sting", " new identity is '[selected_dna.dna.real_name]'") @@ -243,8 +243,8 @@ /obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/target) log_combat(user, target, "stung", "LSD sting") if(target.reagents) - target.reagents.add_reagent("regenerative_materia", 5) - target.reagents.add_reagent("mindbreaker", 5) + target.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 5) + target.reagents.add_reagent(/datum/reagent/toxin/mindbreaker, 5) return TRUE /obj/effect/proc_holder/changeling/sting/cryo @@ -262,5 +262,5 @@ /obj/effect/proc_holder/changeling/sting/cryo/sting_action(mob/user, mob/target) log_combat(user, target, "stung", "cryo sting") if(target.reagents) - target.reagents.add_reagent("frostoil", 30) + target.reagents.add_reagent(/datum/reagent/consumable/frostoil, 30) return TRUE diff --git a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm index 1f616b7dbc..9f2ddfda47 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/slab_abilities.dm @@ -100,7 +100,7 @@ var/burndamage = L.getFireLoss() var/oxydamage = L.getOxyLoss() var/totaldamage = brutedamage + burndamage + oxydamage - if(!totaldamage && (!L.reagents || !L.reagents.has_reagent("holywater"))) + if(!totaldamage && (!L.reagents || !L.reagents.has_reagent(/datum/reagent/water/holywater))) to_chat(ranged_ability_user, "\"[L] is unhurt and untainted.\"") return TRUE @@ -108,7 +108,7 @@ to_chat(ranged_ability_user, "You bathe [L == ranged_ability_user ? "yourself":"[L]"] in Inath-neq's power!") var/targetturf = get_turf(L) - var/has_holy_water = (L.reagents && L.reagents.has_reagent("holywater")) + var/has_holy_water = (L.reagents && L.reagents.has_reagent(/datum/reagent/water/holywater)) var/healseverity = max(round(totaldamage*0.05, 1), 1) //shows the general severity of the damage you just healed, 1 glow per 20 for(var/i in 1 to healseverity) new /obj/effect/temp_visual/heal(targetturf, "#1E8CE1") @@ -129,7 +129,7 @@ playsound(targetturf, 'sound/magic/staff_healing.ogg', 50, 1) if(has_holy_water) - L.reagents.remove_reagent("holywater", 1000) + L.reagents.del_reagent(/datum/reagent/water/holywater) remove_ranged_ability() diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm index 88cf420420..e01156ba44 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_NORMAL resistance_flags = FIRE_PROOF | ACID_PROOF flags_inv = HIDEEARS|HIDEHAIR|HIDEFACE|HIDESNOUT - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE armor = list("melee" = 50, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) /obj/item/clothing/head/helmet/clockwork/Initialize() diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm index d4d5349c70..b12c72b4af 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm @@ -103,7 +103,7 @@ . = ..() addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later -/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/clockwork/slab/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(isinhands && item_state && inhand_overlay) var/mutable_appearance/M = mutable_appearance(icon_file, "slab_[inhand_overlay]") diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index b4ddb9dbff..f5be94a0e7 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -331,7 +331,7 @@ flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES|HIDESNOUT armor = list("melee" = 30, "bullet" = 30, "laser" = 30,"energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 10, "acid" = 10) flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/suit/magusred name = "magus robes" @@ -424,7 +424,7 @@ return 1 return 0 -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands) +/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands, icon_file, style_flags = NONE) . = list() if(!isinhands && current_charges) . += mutable_appearance('icons/effects/cult_effects.dmi', "shield-cult", MOB_LAYER + 0.01) @@ -487,7 +487,7 @@ icon = 'icons/obj/drinks.dmi' icon_state = "holyflask" color = "#333333" - list_reagents = list("unholywater" = 50) + list_reagents = list(/datum/reagent/fuel/unholywater = 50) /obj/item/shuttle_curse name = "cursed orb" @@ -797,7 +797,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target if(H.stat != DEAD) - H.reagents.add_reagent("unholywater", 4) + H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 4) if(isshade(target) || isconstruct(target)) var/mob/living/simple_animal/M = target if(M.health+5 < M.maxHealth) @@ -898,7 +898,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target if(H.stat != DEAD) - H.reagents.add_reagent("unholywater", 7) + H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 7) if(isshade(target) || isconstruct(target)) var/mob/living/simple_animal/M = target if(M.health+15 < M.maxHealth) diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm index ff12a835ef..ba2a96289d 100644 --- a/code/modules/antagonists/cult/ritual.dm +++ b/code/modules/antagonists/cult/ritual.dm @@ -24,11 +24,11 @@ This file contains the cult dagger and rune list code /obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user) if(iscultist(M)) - if(M.reagents && M.reagents.has_reagent("holywater")) //allows cultists to be rescued from the clutches of ordained religion + if(M.reagents && M.reagents.has_reagent(/datum/reagent/water/holywater)) //allows cultists to be rescued from the clutches of ordained religion to_chat(user, "You remove the taint from [M]." ) - var/holy2unholy = M.reagents.get_reagent_amount("holywater") - M.reagents.del_reagent("holywater") - M.reagents.add_reagent("unholywater",holy2unholy) + var/holy2unholy = M.reagents.get_reagent_amount(/datum/reagent/water/holywater) + M.reagents.del_reagent(/datum/reagent/water/holywater) + M.reagents.add_reagent(/datum/reagent/fuel/unholywater,holy2unholy) log_combat(user, M, "smacked", src, " removing the holy water from them") return FALSE . = ..() diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index 2e38734b6f..951fe4e18a 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -384,14 +384,14 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", if(BANISH_WATER) if(iscarbon(body)) var/mob/living/carbon/H = body - return H.reagents.has_reagent("holy water") + return H.reagents.has_reagent(/datum/reagent/water/holywater) return 0 if(BANISH_COFFIN) return (body && istype(body.loc, /obj/structure/closet/crate/coffin)) if(BANISH_FORMALDYHIDE) if(iscarbon(body)) var/mob/living/carbon/H = body - return H.reagents.has_reagent("formaldehyde") + return H.reagents.has_reagent(/datum/reagent/toxin/formaldehyde) return 0 if(BANISH_RUNES) if(body) diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index e1c50a7cf5..2186e8b49e 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -513,7 +513,7 @@ /obj/machinery/nuclearbomb/beer/proc/fizzbuzz() var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = src - R.add_reagent("beer", 100) + R.add_reagent(/datum/reagent/consumable/ethanol/beer, 100) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(src), R) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index d7d88a9b6a..b98fa04504 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -26,6 +26,7 @@ spacewalk = TRUE sight = SEE_SELF throwforce = 0 + blood_volume = 0 see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index d6582a294f..d2e71615e3 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -353,7 +353,7 @@ to_chat(H, "You feel [pick("suddenly sick", "a surge of nausea", "like your skin is wrong")].") else if(mob.reagents) - mob.reagents.add_reagent("plasma", 5) + mob.reagents.add_reagent(/datum/reagent/toxin/plasma, 5) else mob.adjustToxLoss(5) for(var/obj/structure/spacevine/vine in T) //Fucking with botanists, the ability. diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index 40d1712bc3..595ce5bb90 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -182,7 +182,7 @@ destroy_objective.owner = owner destroy_objective.find_target() add_objective(destroy_objective) - else if(prob(30) || (mode.storyteller.flags & NO_ASSASSIN)) + else if(prob(30) || (is_dynamic && (mode.storyteller.flags & NO_ASSASSIN))) var/datum/objective/maroon/maroon_objective = new maroon_objective.owner = owner maroon_objective.find_target() diff --git a/code/modules/assembly/playback.dm b/code/modules/assembly/playback.dm new file mode 100644 index 0000000000..088f186adc --- /dev/null +++ b/code/modules/assembly/playback.dm @@ -0,0 +1,50 @@ +/obj/item/assembly/playback + name = "playback device" + desc = "A small electronic device able to record a voice sample, and repeat that sample when it receive a signal." + icon_state = "radio" + materials = list(MAT_METAL=500, MAT_GLASS=50) + flags_1 = HEAR_1 + attachable = TRUE + verb_say = "beeps" + verb_ask = "beeps" + verb_exclaim = "beeps" + var/listening = FALSE + var/recorded = "" //the activation message + var/languages + +/obj/item/assembly/playback/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode, atom/movable/source) + . = ..() + if(speaker == src) + return + + if(listening && !radio_freq) + record_speech(speaker, raw_message, message_language) + +/obj/item/assembly/playback/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language) + recorded = raw_message + listening = FALSE + languages = message_language + say("Activation message is '[recorded]'.", language = message_language) + +/obj/item/assembly/playback/activate() + if(recorded == "") // Why say anything when there isn't anything to say + return FALSE + say("[recorded]", language = languages) // Repeat the message in the language it was said in + return TRUE + +/obj/item/assembly/playback/proc/record() + if(!secured || holder) + return FALSE + listening = !listening + say("[listening ? "Now" : "No longer"] recording input.") + return TRUE + +/obj/item/assembly/playback/attack_self(mob/user) + if(!user) + return FALSE + record() + return TRUE + +/obj/item/assembly/playback/toggle_secure() + . = ..() + listening = FALSE \ No newline at end of file diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index f72f726988..36a58b2a70 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -15,6 +15,7 @@ verb_exclaim = "beeps" var/listening = FALSE var/recorded = "" //the activation message + var/languages // The Message's language var/mode = 1 var/static/list/modes = list("inclusive", "exclusive", @@ -33,23 +34,25 @@ if(listening && !radio_freq) record_speech(speaker, raw_message, message_language) else - if(check_activation(speaker, raw_message)) - addtimer(CALLBACK(src, .proc/pulse, 0), 10) + if(message_language == languages) // If it isn't in the same language as the message, don't try to find the message + if(check_activation(speaker, raw_message)) + addtimer(CALLBACK(src, .proc/pulse, 0), 10) /obj/item/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language) + languages = message_language // Assign the message's language to a variable to use it elsewhere switch(mode) if(INCLUSIVE_MODE) recorded = raw_message listening = FALSE - say("Activation message is '[recorded]'.", message_language) + say("Activation message is '[recorded]'.", language = languages) // Say the message in the language it was said in if(EXCLUSIVE_MODE) recorded = raw_message listening = FALSE - say("Activation message is '[recorded]'.", message_language) + say("Activation message is '[recorded]'.", language = languages) if(RECOGNIZER_MODE) recorded = speaker.GetVoice() listening = FALSE - say("Your voice pattern is saved.", message_language) + say("Your voice pattern is saved.", language = languages) if(VOICE_SENSOR_MODE) if(length(raw_message)) addtimer(CALLBACK(src, .proc/pulse, 0), 10) diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index aa1abe56b4..85ac20ca0d 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -175,7 +175,7 @@ if(C.reagents.total_volume >= C.volume) to_chat(user, "[C] is full.") return - C.reagents.add_reagent("plasma", rand(5, 10)) + C.reagents.add_reagent(/datum/reagent/toxin/plasma, rand(5, 10)) user.visible_message("[user] scoops some plasma from the [src] with \the [C].", "You scoop out some plasma from the [src] using \the [C].") /turf/open/lava/plasma/burn_stuff(AM) @@ -488,8 +488,7 @@ /obj/item/grenade/clusterbuster/smoke = 15, /obj/item/clothing/under/chameleon = 13, /obj/item/clothing/shoes/chameleon/noslip = 10, - /obj/item/borg/upgrade/ddrill = 3, - /obj/item/borg/upgrade/soh = 3) + /obj/item/borg/upgrade/ddrill = 3) /obj/effect/spawner/lootdrop/snowdin/dungeonmid name = "dungeon mid" diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index 5137d0a6f3..ca76c80df7 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -12,7 +12,7 @@ /datum/bounty/reagent/applies_to(obj/O) if(!istype(O, /obj/item/reagent_containers)) return FALSE - if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.id)) + if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.type)) return FALSE if(O.flags_1 & HOLOGRAM_1) return FALSE @@ -21,7 +21,7 @@ /datum/bounty/reagent/ship(obj/O) if(!applies_to(O)) return - shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.id) + shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.type) if(shipped_volume > required_volume) shipped_volume = required_volume @@ -29,7 +29,7 @@ if(!istype(other_bounty, /datum/bounty/reagent)) return TRUE var/datum/bounty/reagent/R = other_bounty - return wanted_reagent.id != R.wanted_reagent.id + return wanted_reagent.type != R.wanted_reagent.type /datum/bounty/reagent/simple_drink name = "Simple Drink" diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index d78b9fe6fd..2472cbef78 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 24 +#define SAVEFILE_VERSION_MAX 25 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -113,6 +113,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car var/datum/quirk/exhibitionism/E var/quirk_name = initial(E.name) all_quirks += quirk_name + if(current_version < 25) + var/digi + S["feature_lizard_legs"] >> digi + if(digi == "Digitigrade Legs") + WRITE_FILE(S["feature_lizard_legs"], "Digitigrade") /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) @@ -509,7 +514,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["frills"] = sanitize_inlist(features["frills"], GLOB.frills_list) features["spines"] = sanitize_inlist(features["spines"], GLOB.spines_list) features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) - features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list) + features["legs"] = sanitize_inlist(features["legs"], GLOB.legs_list, "Plantigrade") features["deco_wings"] = sanitize_inlist(features["deco_wings"], GLOB.deco_wings_list, "None") features["insect_fluff"] = sanitize_inlist(features["insect_fluff"], GLOB.insect_fluffs_list) features["insect_markings"] = sanitize_inlist(features["insect_markings"], GLOB.insect_markings_list, "None") diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 6fd1584e75..4d441e7e2b 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -81,7 +81,7 @@ /obj/item/reagent_containers/food/snacks/clothing name = "oops" desc = "If you're reading this it means I messed up. This is related to moths eating clothes and I didn't know a better way to do it than making a new food object." - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) tastes = list("dust" = 1, "lint" = 1) /obj/item/clothing/attack(mob/M, mob/user, def_zone) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index a80cf6fba3..d91a2b9a2c 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -303,7 +303,7 @@ add_atom_colour("#[user.eye_color]", FIXED_COLOUR_PRIORITY) colored_before = TRUE -/obj/item/clothing/glasses/sunglasses/blindfold/white/worn_overlays(isinhands = FALSE, file2use) +/obj/item/clothing/glasses/sunglasses/blindfold/white/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands && ishuman(loc) && !colored_before) var/mob/living/carbon/human/H = loc diff --git a/code/modules/clothing/glasses/phantomthief.dm b/code/modules/clothing/glasses/phantomthief.dm index f5a15f7900..96f5cfc201 100644 --- a/code/modules/clothing/glasses/phantomthief.dm +++ b/code/modules/clothing/glasses/phantomthief.dm @@ -26,7 +26,7 @@ /obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate) if(istype(user) && combatmodestate && world.time >= nextadrenalinepop) nextadrenalinepop = world.time + 5 MINUTES - user.reagents.add_reagent("syndicateadrenals", 5) + user.reagents.add_reagent(/datum/reagent/syndicateadrenals, 5) user.playsound_local(user, 'sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE) /obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot) diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index ac491c2bc5..87d9f359eb 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -24,7 +24,7 @@ user.visible_message("\the [src] are forcing [user]'s hands around [user.p_their()] neck! It looks like the gloves are possessed!") return OXYLOSS -/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE) +/obj/item/clothing/gloves/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) if(damaged_clothes) diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index ec6db20cc4..a875561056 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -8,8 +8,6 @@ var/blockTracking = 0 //For AI tracking var/can_toggle = null dynamic_hair_suffix = "+generic" - var/muzzle_var = NORMAL_STYLE - mutantrace_variation = NO_MUTANTRACE_VARIATION //not all hats have muzzles /obj/item/clothing/head/Initialize() . = ..() @@ -17,30 +15,6 @@ var/mob/living/carbon/human/H = loc H.update_hair() -/obj/item/clothing/head/equipped(mob/user, slot) - ..() - if(ishuman(user)) - var/mob/living/carbon/human/H = user - var/datum/species/pref_species = H.dna.species - - if(mutantrace_variation) - if("mam_snouts" in pref_species.default_features) - if(H.dna.features["mam_snouts"] != "None") - muzzle_var = ALT_STYLE - else - muzzle_var = NORMAL_STYLE - - else if("snout" in pref_species.default_features) - if(H.dna.features["snout"] != "None") - muzzle_var = ALT_STYLE - else - muzzle_var = NORMAL_STYLE - - else - muzzle_var = NORMAL_STYLE - - H.update_inv_head() - ///Special throw_impact for hats to frisbee hats at people to place them on their heads. /obj/item/clothing/head/throw_impact(atom/hit_atom, datum/thrownthing/thrownthing) . = ..() @@ -74,7 +48,7 @@ -/obj/item/clothing/head/worn_overlays(isinhands = FALSE) +/obj/item/clothing/head/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) if(damaged_clothes) diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 19f03dfd0a..51822cab77 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -91,7 +91,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT cold_protection = HEAD min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/head/hardhat/weldhat name = "welding hard hat" @@ -125,7 +125,7 @@ playsound(src, 'sound/mecha/mechmove03.ogg', 50, TRUE) //Visors don't just come from nothing update_icon() -/obj/item/clothing/head/hardhat/weldhat/worn_overlays(isinhands) +/obj/item/clothing/head/hardhat/weldhat/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(!isinhands) . += mutable_appearance('icons/mob/head.dmi', "weldhelmet") diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index ad450ec7aa..c2992b7651 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -76,7 +76,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH dog_fashion = null - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/head/helmet/attack_self(mob/user) if(can_toggle && !user.incapacitated()) @@ -217,7 +217,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH strip_delay = 80 dog_fashion = null - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/head/helmet/knight/Initialize(mapload) @@ -246,7 +246,7 @@ icon_state = "skull" item_state = "skull" strip_delay = 100 - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE //LightToggle diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 3fa5d56d1e..fffdee5833 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -66,7 +66,7 @@ item_state = "syndicate-helm-black-red" desc = "A plastic replica of a Syndicate agent's space helmet. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!" flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/head/cueball name = "cueball helmet" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 127bf4c773..a18d68cc72 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -28,7 +28,7 @@ visor_flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = FIRE_PROOF - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/head/welding/attack_self(mob/user) weldingvisortoggle(user) @@ -206,7 +206,7 @@ M.color = hair_color add_overlay(M) -/obj/item/clothing/head/wig/worn_overlays(isinhands = FALSE, file2use) +/obj/item/clothing/head/wig/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) var/datum/sprite_accessory/S = GLOB.hair_styles_list[hair_style] diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index c00e6f72e0..3b2edce795 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -8,9 +8,6 @@ var/modifies_speech = FALSE var/mask_adjusted = 0 var/adjusted_flags = null - var/muzzle_var = NORMAL_STYLE - mutantrace_variation = NO_MUTANTRACE_VARIATION //most masks have overrides, but not all probably. - /obj/item/clothing/mask/attack_self(mob/user) if(CHECK_BITFIELD(clothing_flags, VOICEBOX_TOGGLABLE)) @@ -24,28 +21,6 @@ RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) else UnregisterSignal(M, COMSIG_MOB_SAY) - if(!ishuman(M)) - return - var/mob/living/carbon/human/H = M - var/datum/species/pref_species = H.dna.species - - if(mutantrace_variation) - if("mam_snouts" in pref_species.default_features) - if(H.dna.features["mam_snouts"] != "None") - muzzle_var = ALT_STYLE - else - muzzle_var = NORMAL_STYLE - - else if("snout" in pref_species.default_features) - if(H.dna.features["snout"] != "None") - muzzle_var = ALT_STYLE - else - muzzle_var = NORMAL_STYLE - - else - muzzle_var = NORMAL_STYLE - - H.update_inv_wear_mask() /obj/item/clothing/mask/dropped(mob/M) . = ..() @@ -53,7 +28,7 @@ /obj/item/clothing/mask/proc/handle_speech() -/obj/item/clothing/mask/worn_overlays(isinhands = FALSE) +/obj/item/clothing/mask/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) if(body_parts_covered & HEAD) diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index aa8df7123a..dc151cdd42 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -7,7 +7,7 @@ visor_flags_inv = HIDEFACE|HIDEFACIALHAIR w_class = WEIGHT_CLASS_SMALL actions_types = list(/datum/action/item_action/adjust) - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/balaclava/attack_self(mob/user) adjustmask(user) @@ -19,7 +19,7 @@ item_state = "luchag" flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR w_class = WEIGHT_CLASS_SMALL - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE modifies_speech = TRUE /obj/item/clothing/mask/luchador/handle_speech(datum/source, list/speech_args) diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index f4335d17e8..b979e2e526 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -13,7 +13,7 @@ flags_cover = MASKCOVERSMOUTH visor_flags_cover = MASKCOVERSMOUTH resistance_flags = NONE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/breath/suicide_act(mob/living/carbon/user) user.visible_message("[user] is wrapping \the [src]'s tube around [user.p_their()] neck! It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index c613d1a91e..5aedf7045d 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -10,7 +10,7 @@ permeability_coefficient = 0.01 flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH resistance_flags = NONE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/gas/glass name = "glass gas mask" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 4b8f16a77f..894ea2562f 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.9 equip_delay_other = 20 - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/muzzle/attack_paw(mob/user) if(iscarbon(user)) @@ -31,7 +31,7 @@ permeability_coefficient = 0.01 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 25, "rad" = 0, "fire" = 0, "acid" = 0) actions_types = list(/datum/action/item_action/adjust) - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/surgical/attack_self(mob/user) adjustmask(user) @@ -41,7 +41,7 @@ desc = "Warning: moustache is fake." icon_state = "fake-moustache" flags_inv = HIDEFACE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/fakemoustache/italian name = "italian moustache" @@ -71,7 +71,7 @@ name = "joy mask" desc = "Express your happiness or hide your sorrows with this laughing face with crying tears of joy cutout." icon_state = "joy" - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/pig name = "pig mask" @@ -242,7 +242,7 @@ slot_flags = ITEM_SLOT_MASK adjusted_flags = ITEM_SLOT_HEAD icon_state = "bandbotany" - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/mask/bandana/attack_self(mob/user) adjustmask(user) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index e863dc8860..9a46b6b759 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -6,7 +6,7 @@ strip_delay = 40 equip_delay_other = 40 -/obj/item/clothing/neck/worn_overlays(isinhands = FALSE) +/obj/item/clothing/neck/worn_overlays(isinhands = FALSE, icon_flag, style_flags = NONE) . = list() if(!isinhands) if(body_parts_covered & HEAD) @@ -192,7 +192,7 @@ tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN) name = "[initial(name)] - [tagname]" -/obj/item/clothing/neck/petcollar/worn_overlays(isinhands, icon_file) +/obj/item/clothing/neck/petcollar/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 29fd06dcaf..4c8f9bdab2 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -53,7 +53,7 @@ return var/obj/item/reagent_containers/glass/bucket/bucket = H.get_item_for_held_index(1) - bucket.reagents.add_reagent("water",70) + bucket.reagents.add_reagent(/datum/reagent/water,70) /datum/outfit/laser_tag name = "Laser Tag Red" diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index a8406e3b12..eaaf4b90ce 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -15,9 +15,7 @@ var/offset = 0 var/equipped_before_drop = FALSE - //CITADEL EDIT Enables digitigrade shoe styles - var/adjusted = NORMAL_STYLE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_DIGITIGRADE var/last_bloodtype = "" //used to track the last bloodtype to have graced these shoes; makes for better performing footprint shenanigans var/last_blood_DNA = "" //same as last one @@ -51,7 +49,7 @@ last_bloodtype = blood_dna[blood_dna[blood_dna.len]]//trust me this works last_blood_DNA = blood_dna[blood_dna.len] -/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE) +/obj/item/clothing/shoes/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) var/bloody = FALSE @@ -63,23 +61,12 @@ if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damagedshoe") if(bloody) - if(adjusted == NORMAL_STYLE) - . += mutable_appearance('icons/effects/blood.dmi', "shoeblood", color = blood_DNA_to_color()) - else - . += mutable_appearance('icons/mob/feet_digi.dmi', "shoeblood", color = blood_DNA_to_color()) + var/file2use = style_flags & STYLE_DIGITIGRADE ? 'icons/mob/feet_digi.dmi' : 'icons/effects/blood.dmi' + . += mutable_appearance(file2use, "shoeblood", color = blood_DNA_to_color()) /obj/item/clothing/shoes/equipped(mob/user, slot) . = ..() - if(mutantrace_variation && ishuman(user)) - var/mob/living/carbon/human/H = user - if(DIGITIGRADE in H.dna.species.species_traits) - adjusted = ALT_STYLE - H.update_inv_shoes() - else if(adjusted == ALT_STYLE) - adjusted = NORMAL_STYLE - H.update_inv_shoes() - if(offset && slot_flags & slotdefine2slotbit(slot)) user.pixel_y += offset worn_y_dimension -= (offset * 2) diff --git a/code/modules/clothing/shoes/vg_shoes.dm b/code/modules/clothing/shoes/vg_shoes.dm index 627a061181..53b093dc72 100644 --- a/code/modules/clothing/shoes/vg_shoes.dm +++ b/code/modules/clothing/shoes/vg_shoes.dm @@ -5,7 +5,7 @@ icon_state = "leather" item_color = "leather" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/magboots/deathsquad desc = "Very expensive and advanced magnetic boots, used only by the elite during extravehicular activity to ensure the user remains safely attached to the vehicle." @@ -14,7 +14,7 @@ magboot_state = "DS-magboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/magboots/atmos desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle. These are painted in the colors of an atmospheric technician." @@ -23,102 +23,102 @@ icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' magboot_state = "atmosmagboots" resistance_flags = FIRE_PROOF - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/simonshoes name = "Simon's Shoes" desc = "Simon's Shoes." icon_state = "simonshoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/kneesocks name = "kneesocks" desc = "A pair of girly knee-high socks." icon_state = "kneesock" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/jestershoes name = "Jester Shoes" desc = "As worn by the clowns of old." icon_state = "jestershoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/aviatorboots name = "Aviator Boots" desc = "Boots suitable for just about any occasion." icon_state = "aviator_boots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/libertyshoes name = "Liberty Shoes" desc = "Freedom isn't free, neither were these shoes." icon_state = "libertyshoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/megaboots name = "DRN-001 Boots" desc = "Large armored boots, very weak to large spikes." icon_state = "megaboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/protoboots name = "Prototype Boots" desc = "Functionally identical to the DRN-001 model's boots, but in red." icon_state = "protoboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/megaxboots name = "Maverick Hunter boots" desc = "Regardless of how much stronger these boots are than the DRN-001 model's, they're still extremely easy to pierce with a large spike." icon_state = "megaxboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/joeboots name = "Sniper Boots" desc = "Nearly identical to the Prototype's boots, except in black." icon_state = "joeboots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/doomguy name = "Doomguy's boots" desc = "If you look closely, you might see skull fragments still buried in these boots." icon_state = "doom" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/rottenshoes name = "rotten shoes" desc = "These shoes seem perfect for sneaking around." icon_state = "rottenshoes" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/sandal/slippers name = "magic slippers" icon_state = "slippers" desc = "For the wizard that puts comfort first. Who's going to laugh?" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/slippers_worn name = "worn bunny slippers" desc = "Fluffy..." icon_state = "slippers_worn" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/jackboots/neorussian name = "neo-Russian boots" desc = "Tovarish, no one will realize you stepped on a pile of shit if your pair already looks like shit." icon_state = "nr_boots" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION \ No newline at end of file + mutantrace_variation = NONE \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index 57866b5131..f49c26ce49 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -21,7 +21,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = NONE dog_fashion = null - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE /obj/item/clothing/suit/space @@ -46,4 +46,4 @@ equip_delay_other = 80 resistance_flags = NONE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE //rated for cosmic radation :honk: - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 5a53e2776a..a8387c5ccc 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -26,6 +26,7 @@ actions_types = list(/datum/action/item_action/toggle) armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 60, "bomb" = 30, "bio" = 90, "rad" = 90, "fire" = 100, "acid" = 1000) resistance_flags = FIRE_PROOF | ACID_PROOF + mutantrace_variation = STYLE_DIGITIGRADE var/list/chronosafe_items = list(/obj/item/chrono_eraser, /obj/item/gun/energy/chrono_gun) var/obj/item/clothing/head/helmet/space/chronos/helmet = null var/obj/effect/chronos_cam/camera = null diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 324d4bc722..984c19e202 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -180,7 +180,7 @@ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine resistance_flags = FIRE_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC //Atmospherics /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos @@ -202,7 +202,6 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos - tauric = TRUE //Citadel Add for tauric hardsuits //Chief Engineer's hardsuit @@ -226,7 +225,6 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/elite jetpack = /obj/item/tank/jetpack/suit - tauric = TRUE //Citadel Add for tauric hardsuits //Mining hardsuit /obj/item/clothing/head/helmet/space/hardsuit/mining @@ -257,7 +255,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC /obj/item/clothing/suit/space/hardsuit/mining/Initialize() . = ..() @@ -353,7 +351,7 @@ allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi jetpack = /obj/item/tank/jetpack/suit - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC //Elite Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite @@ -370,7 +368,6 @@ on = FALSE resistance_flags = FIRE_PROOF | ACID_PROOF - /obj/item/clothing/suit/space/hardsuit/syndi/elite name = "elite syndicate hardsuit" desc = "An elite version of the syndicate hardsuit, with improved armour and fireproofing. It is in travel mode." @@ -382,7 +379,8 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC + //The Owl Hardsuit /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl @@ -404,6 +402,7 @@ item_state = "s_suit" item_color = "owl" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl + mutantrace_variation = STYLE_DIGITIGRADE //Wizard hardsuit @@ -430,6 +429,7 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/wizard + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/suit/space/hardsuit/wizard/Initialize() . = ..() @@ -455,7 +455,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/healthanalyzer, /obj/item/stack/medical) armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC //Research Director hardsuit /obj/item/clothing/head/helmet/space/hardsuit/rd @@ -497,7 +497,6 @@ /obj/item/hand_tele, /obj/item/aicard) armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd - tauric = TRUE //Citadel Add for tauric hardsuits //Security hardsuit /obj/item/clothing/head/helmet/space/hardsuit/security @@ -515,7 +514,7 @@ item_state = "sec_hardsuit" armor = list("melee" = 35, "bullet" = 15, "laser" = 30, "energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC /obj/item/clothing/suit/space/hardsuit/security/Initialize() . = ..() @@ -536,7 +535,6 @@ armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos jetpack = /obj/item/tank/jetpack/suit - tauric = TRUE //Citadel Add for tauric hardsuits //Captain /obj/item/clothing/head/helmet/space/hardsuit/captain @@ -564,7 +562,6 @@ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT //this needed to be added a long fucking time ago helmettype = /obj/item/clothing/head/helmet/space/hardsuit/captain - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/captain/Initialize() . = ..() @@ -586,6 +583,7 @@ item_state = "clown_hardsuit" armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 30) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clown + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/suit/space/hardsuit/clown/mob_can_equip(mob/M, slot) if(!..() || !ishuman(M)) @@ -614,6 +612,7 @@ slowdown = 3 helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ancient resistance_flags = FIRE_PROOF + mutantrace_variation = STYLE_DIGITIGRADE var/footstep = 1 var/mob/listeningTo @@ -712,7 +711,6 @@ var/recharge_rate = 1 //How quickly the shield recharges once it starts charging var/shield_state = "shield-old" var/shield_on = "shield-old" - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/shielded/Initialize() . = ..() @@ -752,13 +750,11 @@ var/mob/living/carbon/human/C = loc C.update_inv_wear_suit() -/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands) - . = list() +/obj/item/clothing/suit/space/hardsuit/shielded/worn_overlays(isinhands, icon_file, style_flags = NONE) + . = ..() if(!isinhands) - if(taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', shield_state, MOB_LAYER + 0.01) - else - . += mutable_appearance('icons/effects/effects.dmi', shield_state, MOB_LAYER + 0.01) + var/file2use = style_flags & STYLE_ALL_TAURIC ? 'modular_citadel/icons/mob/64x32_effects.dmi' : 'icons/effects/effects.dmi' + . += mutable_appearance(file2use, shield_state, MOB_LAYER + 0.01) /obj/item/clothing/head/helmet/space/hardsuit/shielded resistance_flags = FIRE_PROOF | ACID_PROOF @@ -828,7 +824,7 @@ allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi slowdown = 0 - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC /obj/item/clothing/suit/space/hardsuit/shielded/syndi/Initialize() jetpack = new /obj/item/tank/jetpack/suit(src) @@ -857,7 +853,6 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat dog_fashion = /datum/dog_fashion/back/deathsquad - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/head/helmet/space/hardsuit/shielded/swat name = "death commando helmet" @@ -888,7 +883,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator) var/energy_color = "#35FFF0" var/obj/item/clothing/suit/space/hardsuit/lavaknight/linkedsuit = null - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/helmet/space/hardsuit/lavaknight/Initialize() . = ..() @@ -918,7 +913,7 @@ add_overlay(helm_overlay) -/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/clothing/head/helmet/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = ..() if(!isinhands) var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER) @@ -937,8 +932,6 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/lavaknight heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - tauric = TRUE //Citadel Add for tauric hardsuits - var/energy_color = "#35FFF0" /obj/item/clothing/suit/space/hardsuit/lavaknight/Initialize() @@ -957,7 +950,7 @@ add_overlay(suit_overlay) -/obj/item/clothing/suit/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/clothing/suit/space/hardsuit/lavaknight/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = ..() if(!isinhands) var/mutable_appearance/energy_overlay = mutable_appearance(icon_file, "knight_cydonia_overlay", ABOVE_LIGHTING_LAYER) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 88e17d158c..b9b51e5d1c 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -53,6 +53,7 @@ Contains: armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 30, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100) strip_delay = 120 resistance_flags = FIRE_PROOF | ACID_PROOF + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/head/helmet/space/beret name = "officer's beret" @@ -65,7 +66,7 @@ Contains: strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/space/officer name = "officer's jacket" @@ -81,6 +82,7 @@ Contains: strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF + mutantrace_variation = STYLE_DIGITIGRADE //NASA Voidsuit /obj/item/clothing/head/helmet/space/nasavoid @@ -95,6 +97,7 @@ Contains: item_state = "void" desc = "An old, NASA CentCom branch designed, dark red space suit." allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/multitool) + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/head/helmet/space/nasavoid/old name = "Engineering Void Helmet" @@ -116,7 +119,7 @@ Contains: desc = "Ho ho ho. Merrry X-mas!" icon_state = "santahat" flags_cover = HEADCOVERSEYES - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE dog_fashion = /datum/dog_fashion/head/santa @@ -127,6 +130,7 @@ Contains: item_state = "santa" slowdown = 0 allowed = list(/obj/item) //for stuffing exta special presents + mutantrace_variation = STYLE_DIGITIGRADE //Space pirate outfit @@ -140,14 +144,14 @@ Contains: strip_delay = 40 equip_delay_other = 20 flags_cover = HEADCOVERSEYES - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/helmet/space/pirate/bandana name = "royal bandana" desc = "A space-proof bandanna crafted with reflective kevlar." icon_state = "bandana" item_state = "bandana" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/space/pirate name = "royal waistcoat " @@ -161,6 +165,7 @@ Contains: armor = list("melee" = 30, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 60, "acid" = 75) strip_delay = 40 equip_delay_other = 20 + mutantrace_variation = STYLE_DIGITIGRADE //Emergency Response Team suits /obj/item/clothing/head/helmet/space/hardsuit/ert @@ -189,7 +194,6 @@ Contains: slowdown = 0 strip_delay = 130 resistance_flags = ACID_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits //ERT Security /obj/item/clothing/head/helmet/space/hardsuit/ert/sec @@ -251,6 +255,7 @@ Contains: helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/alert armor = list("melee" = 70, "bullet" = 55, "laser" = 50, "energy" = 50, "bomb" = 65, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) resistance_flags = FIRE_PROOF | ACID_PROOF + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC //ERT Security /obj/item/clothing/head/helmet/space/hardsuit/ert/alert/sec @@ -298,7 +303,6 @@ Contains: item_state = "s_suit" desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies." armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 20, "fire" = 50, "acid" = 65) - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/head/helmet/space/eva name = "EVA helmet" @@ -317,7 +321,7 @@ Contains: strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = ACID_PROOF | FIRE_PROOF - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/space/freedom name = "eagle suit" @@ -330,6 +334,7 @@ Contains: max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = ACID_PROOF | FIRE_PROOF slowdown = 0 + mutantrace_variation = STYLE_DIGITIGRADE //Carpsuit, bestsuit, lovesuit /obj/item/clothing/head/helmet/space/hardsuit/carp @@ -340,7 +345,7 @@ Contains: armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy as a space carp brightness_on = 0 //luminosity when on actions_types = list() - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/helmet/space/hardsuit/carp/Initialize() . = ..() @@ -356,6 +361,7 @@ Contains: armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy whimpy whoo allowed = list(/obj/item/tank/internals, /obj/item/gun/ballistic/automatic/speargun) //I'm giving you a hint here helmettype = /obj/item/clothing/head/helmet/space/hardsuit/carp + mutantrace_variation = STYLE_DIGITIGRADE /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal name = "paranormal response unit helmet" @@ -366,7 +372,7 @@ Contains: max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT actions_types = list() resistance_flags = FIRE_PROOF - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() . = ..() @@ -380,7 +386,6 @@ Contains: helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/hardsuit/ert/paranormal/Initialize() . = ..() @@ -427,7 +432,6 @@ Contains: slowdown = 2 armor = list("melee" = 5, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 0, "acid" = 0) strip_delay = 65 - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/space/fragile/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(!torn && prob(50)) diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 7c829e7570..fee8dbce33 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -12,7 +12,6 @@ var/next_extinguish = 0 var/extinguish_cooldown = 100 var/extinguishes_left = 10 - mutantrace_variation = NO_MUTANTRACE_VARIATION /obj/item/clothing/suit/space/eva/plasmaman/examine(mob/user) . = ..() @@ -47,7 +46,7 @@ var/on = FALSE var/light_overlay = "envirohelm-light" actions_types = list(/datum/action/item_action/toggle_helmet_light) - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/helmet/space/plasmaman/attack_self(mob/user) if(!light_overlay) @@ -68,7 +67,7 @@ var/datum/action/A=X A.UpdateButtonIcon() -/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(isinhands, icon_file) +/obj/item/clothing/head/helmet/space/plasmaman/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(!isinhands && on) . += mutable_appearance(icon_file, light_overlay) diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index e6710ee8f9..178e707125 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -14,7 +14,7 @@ w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) armor = list("melee" = 40, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 80, "acid" = 85) - + mutantrace_variation = STYLE_DIGITIGRADE //Green syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/green @@ -50,6 +50,7 @@ name = "orange space suit" icon_state = "syndicate-orange" item_state = "syndicate-orange" + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC //Blue syndicate space suit /obj/item/clothing/head/helmet/space/syndicate/blue @@ -109,7 +110,6 @@ name = "green space suit" icon_state = "syndicate-black-med" item_state = "syndicate-black" - tauric = TRUE //Citadel Add for tauric hardsuits //Black-orange syndicate space suit @@ -134,6 +134,7 @@ name = "black and red space suit" icon_state = "syndicate-black-red" item_state = "syndicate-black-red" + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC //Black with yellow/red engineering syndicate space suit diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index faec9e2f4c..d05afc15e0 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -9,56 +9,16 @@ var/blood_overlay_type = "suit" var/togglename = null var/suittoggled = FALSE + mutantrace_variation = STYLE_DIGITIGRADE - var/adjusted = NORMAL_STYLE - mutantrace_variation = MUTANTRACE_VARIATION - var/tauric = FALSE //Citadel Add for tauric hardsuits - var/taurmode = NOT_TAURIC - var/dimension_x = 32 - var/dimension_y = 32 - var/center = FALSE //Should we center the sprite? - -/obj/item/clothing/suit/equipped(mob/user, slot) - ..() - if(ishuman(user)) - var/mob/living/carbon/human/H = user - - if(mutantrace_variation) - if(DIGITIGRADE in H.dna.species.species_traits) - adjusted = ALT_STYLE - H.update_inv_wear_suit() - else if(adjusted == ALT_STYLE) - adjusted = NORMAL_STYLE - - if(("taur" in H.dna.species.mutant_bodyparts) && (H.dna.features["taur"] != "None")) - if(H.dna.features["taur"] in GLOB.noodle_taurs) - taurmode = SNEK_TAURIC - if(tauric == TRUE) - center = TRUE - dimension_x = 64 - else if(H.dna.features["taur"] in GLOB.paw_taurs) - taurmode = PAW_TAURIC - if(tauric == TRUE) - center = TRUE - dimension_x = 64 - else - taurmode = NOT_TAURIC - if(tauric == TRUE) - center = FALSE - dimension_x = 32 - H.update_inv_wear_suit() - - -/obj/item/clothing/suit/worn_overlays(isinhands = FALSE) - . = list() +/obj/item/clothing/suit/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) + . = ..() if(!isinhands) if(damaged_clothes) . += mutable_appearance('icons/effects/item_damage.dmi', "damaged[blood_overlay_type]") if(blood_DNA) - if(tauric && taurmode >= SNEK_TAURIC) - . += mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) - else - . += mutable_appearance('icons/effects/blood.dmi', "[blood_overlay_type]blood", color = blood_DNA_to_color()) + var/file2use = (style_flags & STYLE_ALL_TAURIC) ? 'modular_citadel/icons/mob/64x32_effects.dmi' : 'icons/effects/blood.dmi' + . += mutable_appearance(file2use, "[blood_overlay_type]blood", color = blood_DNA_to_color()) var/mob/living/carbon/human/M = loc if(ishuman(M) && M.w_uniform) var/obj/item/clothing/under/U = M.w_uniform diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 5d0a9b9914..5729daa741 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -9,7 +9,7 @@ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT resistance_flags = ACID_PROOF flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/suit/bio_suit name = "bio suit" @@ -28,7 +28,7 @@ strip_delay = 70 equip_delay_other = 70 resistance_flags = ACID_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC //Standard biosuit, orange stripe /obj/item/clothing/head/bio_hood/general diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 4318839845..816f0edeba 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -207,7 +207,7 @@ item_state = "techpriest" body_parts_covered = CHEST|GROIN|LEGS|ARMS hoodtype = /obj/item/clothing/head/hooded/techpriest - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/hooded/techpriest name = "techpriest's hood" @@ -216,4 +216,4 @@ item_state = "techpriesthood" body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEEARS - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 4e155cd341..4862512468 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -864,7 +864,7 @@ blood_overlay_type = "armor" body_parts_covered = CHEST resistance_flags = NONE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 5, "bio" = 0, "rad" = 0, "fire" = -5, "acid" = -15) //nylon sucks against acid /obj/item/clothing/suit/assu_suit diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 559d3006a1..79b221a807 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -179,8 +179,7 @@ RemoveHelmet() /obj/item/clothing/suit/space/hardsuit/proc/ToggleHelmet() - var/mob/living/carbon/human/H = src.loc - var/datum/species/pref_species = H.dna.species + var/mob/living/carbon/human/H = loc if(!helmettype) return if(!helmet) @@ -194,18 +193,6 @@ to_chat(H, "You're already wearing something on your head!") return else if(H.equip_to_slot_if_possible(helmet,SLOT_HEAD,0,0,1)) - if(helmet.mutantrace_variation) - if("mam_snouts" in pref_species.default_features) - if(H.dna.features["mam_snouts"] != "None") - helmet.muzzle_var = ALT_STYLE - - else if("snout" in pref_species.default_features) - if(H.dna.features["snout"] != "None") - helmet.muzzle_var = ALT_STYLE - else - helmet.muzzle_var = NORMAL_STYLE - H.update_inv_head() - to_chat(H, "You engage the helmet on the hardsuit.") suittoggled = TRUE H.update_inv_wear_suit() diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index fbdca6ddbc..a6c272e550 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -21,7 +21,7 @@ allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/extinguisher, /obj/item/crowbar) slowdown = 1 armor = list("melee" = 15, "bullet" = 5, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 10, "rad" = 20, "fire" = 100, "acid" = 50) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT @@ -30,11 +30,12 @@ strip_delay = 60 equip_delay_other = 60 resistance_flags = FIRE_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits /obj/item/clothing/suit/fire/firefighter icon_state = "firesuit" item_state = "firefighter" + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC /obj/item/clothing/suit/fire/heavy @@ -50,6 +51,8 @@ icon_state = "atmos_firesuit" item_state = "firesuit_atmos" max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAUR + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC /* * Bomb protection @@ -71,7 +74,7 @@ equip_delay_other = 70 flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = NONE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/suit/bomb_suit @@ -94,7 +97,7 @@ strip_delay = 70 equip_delay_other = 70 resistance_flags = NONE - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC /obj/item/clothing/head/bomb_hood/security @@ -131,7 +134,7 @@ flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH resistance_flags = NONE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE /obj/item/clothing/suit/radiation name = "radiation suit" @@ -151,4 +154,4 @@ flags_inv = HIDEJUMPSUIT|HIDETAUR resistance_flags = NONE rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_ALL_TAURIC diff --git a/code/modules/clothing/suits/vg_suits.dm b/code/modules/clothing/suits/vg_suits.dm index 08fe029f9e..be6cd9938e 100644 --- a/code/modules/clothing/suits/vg_suits.dm +++ b/code/modules/clothing/suits/vg_suits.dm @@ -9,7 +9,7 @@ siemens_coefficient = 0.5 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/armor/xcomsquaddie/dredd name = "Judge Armor" @@ -18,7 +18,7 @@ item_state = "dredd-suit" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/armor/xcomarmor @@ -32,7 +32,7 @@ siemens_coefficient = 0.5 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/armor/vest/neorussian name = "neo-Russian vest" @@ -41,7 +41,7 @@ item_state = "nr_vest" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/armor/doomguy name = "Doomguy's armor" @@ -53,7 +53,7 @@ armor = list(melee = 50, bullet = 30, laser = 20, energy = 20, bomb = 30, bio = 0, rad = 0) icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/kaminacape @@ -63,7 +63,7 @@ body_parts_covered = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/officercoat name = "Officer's Coat" @@ -71,7 +71,7 @@ icon_state = "officersuit" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/soldiercoat name = "Soldier's Coat" @@ -79,7 +79,7 @@ icon_state = "soldiersuit" body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/russofurcoat name = "russian fur coat" @@ -89,7 +89,7 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/doshjacket name = "Plasterer's Jacket" @@ -98,7 +98,7 @@ body_parts_covered = CHEST|GROIN|ARMS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/maidapron name = "Apron" @@ -107,7 +107,7 @@ body_parts_covered = CHEST|GROIN icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/clownpiece name = "small fairy wings" @@ -116,7 +116,7 @@ body_parts_covered = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/clownpiece/flying name = "small fairy wings" @@ -124,7 +124,7 @@ icon_state = "clownpiece-fly" icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/raincoat name = "Raincoat" @@ -133,6 +133,6 @@ body_parts_covered =CHEST|GROIN|LEGS|ARMS|HANDS icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index bb5f909521..0322613c11 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -11,13 +11,12 @@ var/sensor_mode = NO_SENSORS var/can_adjust = TRUE var/adjusted = NORMAL_STYLE - var/suit_style = NORMAL_SUIT_STYLE var/alt_covers_chest = FALSE // for adjusted/rolled-down jumpsuits, FALSE = exposes chest and arms, TRUE = exposes arms only var/obj/item/clothing/accessory/attached_accessory var/mutable_appearance/accessory_overlay - mutantrace_variation = MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. + mutantrace_variation = STYLE_DIGITIGRADE -/obj/item/clothing/under/worn_overlays(isinhands = FALSE) +/obj/item/clothing/under/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() if(!isinhands) if(damaged_clothes) @@ -49,8 +48,6 @@ if(random_sensor) //make the sensor mode favor higher levels, except coords. sensor_mode = pick(SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS, SENSOR_COORDS) - adjusted = NORMAL_STYLE - suit_style = NORMAL_SUIT_STYLE ..() /obj/item/clothing/under/equipped(mob/user, slot) @@ -61,14 +58,6 @@ if(!alt_covers_chest) body_parts_covered |= CHEST - if(mutantrace_variation && ishuman(user)) - var/mob/living/carbon/human/H = user - if(DIGITIGRADE in H.dna.species.species_traits) - suit_style = DIGITIGRADE_SUIT_STYLE - else - suit_style = NORMAL_SUIT_STYLE - H.update_inv_w_uniform() - if(attached_accessory && slot != SLOT_HANDS && ishuman(user)) var/mob/living/carbon/human/H = user attached_accessory.on_uniform_equip(src, user) diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index c6796d64c9..e42049ef6b 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -69,7 +69,6 @@ item_state = "lb_suit" item_color = "cargo" body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = MUTANTRACE_VARIATION alt_covers_chest = TRUE /obj/item/clothing/under/rank/cargotech/skirt @@ -132,7 +131,7 @@ item_color = "blueclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/greenclown name = "green clown suit" @@ -142,7 +141,7 @@ item_color = "greenclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/yellowclown name = "yellow clown suit" @@ -152,7 +151,7 @@ item_color = "yellowclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/purpleclown name = "purple clown suit" @@ -162,7 +161,7 @@ item_color = "purpleclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/orangeclown name = "orange clown suit" @@ -172,7 +171,7 @@ item_color = "orangeclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/rainbowclown name = "rainbow clown suit" @@ -182,7 +181,7 @@ item_color = "rainbowclown" fitted = FEMALE_UNIFORM_TOP can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/clown/Initialize() . = ..() diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 177bce672f..06aa5aeb0c 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -750,7 +750,7 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 0, "fire" = 95, "acid" = 95) slowdown = 1 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE can_adjust = FALSE strip_delay = 80 var/next_extinguish = 0 diff --git a/code/modules/clothing/under/polychromic_clothes.dm b/code/modules/clothing/under/polychromic_clothes.dm index 9649d93eed..53011d42d1 100644 --- a/code/modules/clothing/under/polychromic_clothes.dm +++ b/code/modules/clothing/under/polychromic_clothes.dm @@ -25,9 +25,9 @@ secondary_color = "#FFFFFF" tertiary_color = "#808080" can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION //Not all clothes are currently digi-compatible (only the shorts are as of time of writing) + mutantrace_variation = NONE //Not all clothes are currently digi-compatible (only the shorts are as of time of writing) -/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens. +/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file, style_flags = NONE) //this is where the main magic happens. . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them @@ -86,7 +86,7 @@ secondary_color = "#808080" tertiary_color = "#808080" body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = MUTANTRACE_VARIATION //to enable digitigrade wearing + mutantrace_variation = STYLE_DIGITIGRADE //to enable digitigrade wearing /obj/item/clothing/under/polychromic/jumpsuit name = "polychromic tri-tone jumpsuit" diff --git a/code/modules/clothing/under/shorts.dm b/code/modules/clothing/under/shorts.dm index 67ef30f0cc..a615081f24 100644 --- a/code/modules/clothing/under/shorts.dm +++ b/code/modules/clothing/under/shorts.dm @@ -4,7 +4,6 @@ gender = PLURAL body_parts_covered = GROIN fitted = NO_FEMALE_UNIFORM - mutantrace_variation = MUTANTRACE_VARIATION can_adjust = FALSE /obj/item/clothing/under/shorts/red diff --git a/code/modules/clothing/under/vg_under.dm b/code/modules/clothing/under/vg_under.dm index f416f2ecc5..555ed3b795 100644 --- a/code/modules/clothing/under/vg_under.dm +++ b/code/modules/clothing/under/vg_under.dm @@ -9,7 +9,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/stripper_green name = "green stripper outfit" @@ -19,7 +19,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wedding/bride_orange name = "orange wedding dress" @@ -30,7 +30,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wedding/bride_purple name = "purple wedding dress" @@ -41,7 +41,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wedding/bride_blue name = "blue wedding dress" @@ -52,7 +52,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wedding/bride_red name = "red wedding dress" @@ -63,7 +63,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wedding/bride_white name = "white wedding dress" @@ -74,7 +74,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/mankini name = "pink mankini" @@ -84,7 +84,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /* /obj/item/clothing/under/psysuit @@ -129,7 +129,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/russobluecamooutfit name = "russian blue camo" @@ -140,7 +140,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/stilsuit name = "stillsuit" @@ -151,7 +151,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/aviatoruniform name = "aviator uniform" @@ -162,7 +162,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/bikersuit name = "biker's outfit" @@ -172,7 +172,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/jacketsuit name = "richard's outfit" @@ -183,7 +183,7 @@ can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE obj/item/clothing/under/mega name = "\improper DRN-001 suit" @@ -194,7 +194,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/proto name = "The Prototype Suit" @@ -205,7 +205,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/megax name = "\improper Maverick Hunter regalia" @@ -216,7 +216,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/joe name = "The Sniper Suit" @@ -227,7 +227,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/roll name = "\improper DRN-002 Dress" @@ -238,7 +238,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/gokugidown name = "turtle hermit undershirt" @@ -249,7 +249,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/gokugi name = "turtle hermit outfit" @@ -260,7 +260,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/doomguy name = "\improper Doomguy's pants" @@ -271,7 +271,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/vault13 name = "vault 13 Jumpsuit" @@ -282,7 +282,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/vault name = "vault jumpsuit" @@ -293,7 +293,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/clownpiece name = "Clownpiece's Pierrot suit" @@ -304,7 +304,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/cia name = "casual IAA outfit" @@ -315,7 +315,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/greaser name = "greaser outfit" @@ -325,7 +325,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/greaser/New() var/greaser_colour = "default" @@ -344,7 +344,7 @@ obj/item/clothing/under/mega item_color = "greaser_[greaser_colour]" can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/wintercasualwear @@ -356,7 +356,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/casualwear name = "spring casualwear" @@ -367,7 +367,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/keyholesweater name = "keyhole sweater" @@ -378,7 +378,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/casualhoodie name = "casual hoodie" @@ -389,7 +389,7 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/casualhoodie/skirt icon_state = "hoodieskirt" @@ -397,7 +397,7 @@ obj/item/clothing/under/mega item_color = "hoodieskirt" can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /* /obj/item/clothing/under/mummy_rags @@ -432,5 +432,5 @@ obj/item/clothing/under/mega can_adjust = 0 icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm index 0f1a7452df..13c516960a 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -157,7 +157,7 @@ icon = 'icons/obj/holiday_misc.dmi' icon_state = "candyheart" desc = "A heart-shaped candy that reads: " - list_reagents = list("sugar" = 2) + list_reagents = list(/datum/reagent/consumable/sugar = 2) junkiness = 5 /obj/item/reagent_containers/food/snacks/candyheart/New() diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 79487a024c..9075f693db 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -15,48 +15,46 @@ var/randomProbability = 1 var/reagentsAmount = 100 var/list/saferChems = list( - "water", - "carbon", - "flour", - "cleaner", - "nutriment", - "condensedcapsaicin", - "mushroomhallucinogen", - "lube", - "pink_glitter", - "cryptobiolin", - "plantbgone", - "blood", - "charcoal", - "space_drugs", - "morphine", - "holywater", - "ethanol", - "hot_coco", - "sacid", - "mindbreaker", - "rotatium", - "bluespace", - "pax", - "laughter", - "concentrated_barbers_aid", - "colorful_reagent", - "dizzysolution", - "tiresolution", - "sodiumchloride", - "beer", - "hair_dye", - "sugar", - "white_glitter", - "growthserum", - "cornoil", - "uranium", - "carpet", - "firefighting_foam", - "semen", - "femcum", - "tearjuice", - "strange_reagent" + /datum/reagent/water, + /datum/reagent/carbon, + /datum/reagent/consumable/flour, + /datum/reagent/space_cleaner, + /datum/reagent/consumable/nutriment, + /datum/reagent/consumable/condensedcapsaicin, + /datum/reagent/drug/mushroomhallucinogen, + /datum/reagent/lube, + /datum/reagent/glitter/pink, + /datum/reagent/cryptobiolin, + /datum/reagent/toxin/plantbgone, + /datum/reagent/blood, + /datum/reagent/medicine/charcoal, + /datum/reagent/drug/space_drugs, + /datum/reagent/medicine/morphine, + /datum/reagent/water/holywater, + /datum/reagent/consumable/ethanol, + /datum/reagent/consumable/hot_coco, + /datum/reagent/toxin/acid, + /datum/reagent/toxin/mindbreaker, + /datum/reagent/toxin/rotatium, + /datum/reagent/bluespace, + /datum/reagent/pax, + /datum/reagent/consumable/laughter, + /datum/reagent/concentrated_barbers_aid, + /datum/reagent/colorful_reagent, + /datum/reagent/peaceborg_confuse, + /datum/reagent/peaceborg_tire, + /datum/reagent/consumable/sodiumchloride, + /datum/reagent/consumable/ethanol/beer, + /datum/reagent/hair_dye, + /datum/reagent/consumable/sugar, + /datum/reagent/glitter/white, + /datum/reagent/growthserum, + /datum/reagent/consumable/cornoil, + /datum/reagent/uranium, + /datum/reagent/carpet, + /datum/reagent/firefighting_foam, + /datum/reagent/consumable/tearjuice, + /datum/reagent/medicine/strange_reagent ) //needs to be chemid unit checked at some point @@ -165,7 +163,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent("beer", reagentsAmount) + R.add_reagent(/datum/reagent/consumable/ethanol/beer, reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) @@ -180,7 +178,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent("semen", reagentsAmount) + R.add_reagent(/datum/reagent/consumable/semen, reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) @@ -195,7 +193,7 @@ if(vent && vent.loc && !vent.welded) var/datum/reagents/R = new/datum/reagents(1000) R.my_atom = vent - R.add_reagent("femcum", reagentsAmount) + R.add_reagent(/datum/reagent/consumable/femcum, reagentsAmount) var/datum/effect_system/foam_spread/foam = new foam.set_up(200, get_turf(vent), R) diff --git a/code/modules/events/wizard/invincible.dm b/code/modules/events/wizard/invincible.dm index 209bdd26c1..6ba9b44ee1 100644 --- a/code/modules/events/wizard/invincible.dm +++ b/code/modules/events/wizard/invincible.dm @@ -8,5 +8,5 @@ /datum/round_event/wizard/invincible/start() for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - H.reagents.add_reagent("adminordrazine", 40) //100 ticks of absolute invinciblity (barring gibs) + H.reagents.add_reagent(/datum/reagent/medicine/adminordrazine, 40) //100 ticks of absolute invinciblity (barring gibs) to_chat(H, "You feel invincible, nothing can hurt you!") \ No newline at end of file diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index b33be2fa02..7111ae416b 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -194,7 +194,7 @@ name = "robust coffee" desc = "Careful, the beverage you're about to enjoy is extremely hot." icon_state = "coffee" - list_reagents = list("coffee" = 30) + list_reagents = list(/datum/reagent/consumable/coffee = 30) spillable = TRUE resistance_flags = FREEZE_PROOF isGlass = FALSE @@ -211,7 +211,7 @@ name = "ice cup" desc = "Careful, cold ice, do not chew." icon_state = "coffee" - list_reagents = list("ice" = 30) + list_reagents = list(/datum/reagent/consumable/ice = 30) spillable = TRUE isGlass = FALSE @@ -231,12 +231,12 @@ /obj/item/reagent_containers/food/drinks/mug/tea name = "Duke Purple tea" desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea." - list_reagents = list("tea" = 30) + list_reagents = list(/datum/reagent/consumable/tea = 30) /obj/item/reagent_containers/food/drinks/mug/coco name = "Dutch hot coco" desc = "Made in Space South America." - list_reagents = list("hot_coco" = 30, "sugar" = 5) + list_reagents = list(/datum/reagent/consumable/hot_coco = 30, /datum/reagent/consumable/sugar = 5) foodtype = SUGAR resistance_flags = FREEZE_PROOF @@ -244,7 +244,7 @@ name = "cup ramen" desc = "Just add 10ml of water, self heats! A taste that reminds you of your school years." icon_state = "ramen" - list_reagents = list("dry_ramen" = 30) + list_reagents = list(/datum/reagent/consumable/dry_ramen = 30) foodtype = GRAIN isGlass = FALSE @@ -252,20 +252,20 @@ name = "space beer" desc = "Beer. In space." icon_state = "beer" - list_reagents = list("beer" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol/beer = 30) foodtype = GRAIN | ALCOHOL /obj/item/reagent_containers/food/drinks/beer/light name = "Carp Lite" desc = "Brewed with \"Pure Ice Asteroid Spring Water\"." - list_reagents = list("light_beer" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol/beer/light = 30) /obj/item/reagent_containers/food/drinks/ale name = "Magm-Ale" desc = "A true dorf's drink of choice." icon_state = "alebottle" item_state = "beer" - list_reagents = list("ale" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol/ale = 30) foodtype = GRAIN | ALCOHOL /obj/item/reagent_containers/food/drinks/sillycup @@ -382,7 +382,7 @@ name = "detective's flask" desc = "The detective's only true friend." icon_state = "detflask" - list_reagents = list("whiskey" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 30) /obj/item/reagent_containers/food/drinks/britcup name = "cup" @@ -431,26 +431,26 @@ name = "Space Cola" desc = "Cola. in space." icon_state = "cola" - list_reagents = list("cola" = 30) + list_reagents = list(/datum/reagent/consumable/space_cola = 30) foodtype = SUGAR /obj/item/reagent_containers/food/drinks/soda_cans/tonic name = "T-Borg's tonic water" desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." icon_state = "tonic" - list_reagents = list("tonic" = 50) + list_reagents = list(/datum/reagent/consumable/tonic = 50) /obj/item/reagent_containers/food/drinks/soda_cans/sodawater name = "soda water" desc = "A can of soda water. Why not make a scotch and soda?" icon_state = "sodawater" - list_reagents = list("sodawater" = 50) + list_reagents = list(/datum/reagent/consumable/sodawater = 50) /obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime name = "orange soda" desc = "You wanted ORANGE. It gave you Lemon Lime." icon_state = "lemon-lime" - list_reagents = list("lemon_lime" = 30) + list_reagents = list(/datum/reagent/consumable/lemon_lime = 30) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime/Initialize() @@ -461,73 +461,73 @@ name = "Space-Up!" desc = "Tastes like a hull breach in your mouth." icon_state = "space-up" - list_reagents = list("space_up" = 30) + list_reagents = list(/datum/reagent/consumable/space_up = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/starkist name = "Star-kist" desc = "The taste of a star in liquid form. And, a bit of tuna...?" icon_state = "starkist" - list_reagents = list("cola" = 15, "orangejuice" = 15) + list_reagents = list(/datum/reagent/consumable/space_cola = 15, /datum/reagent/consumable/orangejuice = 15) foodtype = SUGAR | FRUIT | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind name = "Space Mountain Wind" desc = "Blows right through you like a space wind." icon_state = "space_mountain_wind" - list_reagents = list("spacemountainwind" = 30) + list_reagents = list(/datum/reagent/consumable/spacemountainwind = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko name = "Thirteen Loko" desc = "The CMO has advised crew members that consumption of Thirteen Loko may result in seizures, blindness, drunkenness, or even death. Please Drink Responsibly." icon_state = "thirteen_loko" - list_reagents = list("thirteenloko" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol/thirteenloko = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb name = "Dr. Gibb" desc = "A delicious mixture of 42 different flavors." icon_state = "dr_gibb" - list_reagents = list("dr_gibb" = 30) + list_reagents = list(/datum/reagent/consumable/dr_gibb = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/pwr_game name = "Pwr Game" desc = "The only drink with the PWR that true gamers crave." icon_state = "purple_can" - list_reagents = list("pwr_game" = 30) + list_reagents = list(/datum/reagent/consumable/pwr_game = 30) /obj/item/reagent_containers/food/drinks/soda_cans/shamblers name = "Shambler's juice" desc = "~Shake me up some of that Shambler's Juice!~" icon_state = "shamblers" - list_reagents = list("shamblers" = 30) + list_reagents = list(/datum/reagent/consumable/shamblers = 30) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/buzz_fuzz name = "Buzz Fuzz" desc = "The sister drink of Shambler's Juice! Uses real honey, making it a sweet tooth's dream drink. The slogan reads ''A Hive of Flavour'', there's also a label about how it is adddicting." icon_state = "honeysoda_can" - list_reagents = list("buzz_fuzz" = 25, "honey" = 5) + list_reagents = list(/datum/reagent/consumable/buzz_fuzz = 25, /datum/reagent/consumable/honey = 5) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/grey_bull name = "Grey Bull" desc = "Grey Bull, it gives you gloves!" icon_state = "energy_drink" - list_reagents = list("grey_bull" = 20) + list_reagents = list(/datum/reagent/consumable/grey_bull = 20) foodtype = SUGAR | JUNKFOOD /obj/item/reagent_containers/food/drinks/soda_cans/air name = "canned air" desc = "There is no air shortage. Do not drink." icon_state = "air" - list_reagents = list("nitrogen" = 24, "oxygen" = 6) + list_reagents = list(/datum/reagent/nitrogen = 24, /datum/reagent/oxygen = 6) /obj/item/reagent_containers/food/drinks/soda_cans/monkey_energy name = "Monkey Energy" desc = "Unleash the ape!" icon_state = "monkey_energy" - list_reagents = list("monkey_energy" = 50) + list_reagents = list(/datum/reagent/consumable/monkey_energy = 50) foodtype = SUGAR | JUNKFOOD diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 271ff93b15..757af11b62 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -131,88 +131,87 @@ name = "Griffeater gin" desc = "A bottle of high quality gin, produced in the New London Space Station." icon_state = "ginbottle" - list_reagents = list("gin" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/gin = 100) /obj/item/reagent_containers/food/drinks/bottle/gin/empty - list_reagents = list("gin" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/whiskey name = "Uncle Git's special reserve" desc = "A premium single-malt whiskey, gently matured inside the tunnels of a nuclear shelter. TUNNEL WHISKEY RULES." icon_state = "whiskeybottle" - list_reagents = list("whiskey" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 100) /obj/item/reagent_containers/food/drinks/bottle/whiskey/empty - list_reagents = list("whiskey" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/vodka name = "Tunguska triple distilled" desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide." icon_state = "vodkabottle" - list_reagents = list("vodka" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100) /obj/item/reagent_containers/food/drinks/bottle/vodka/empty - list_reagents = list("vodka" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka name = "Badminka vodka" desc = "The label's written in Cyrillic. All you can make out is the name and a word that looks vaguely like 'Vodka'." icon_state = "badminka" - list_reagents = list("vodka" = 100) /obj/item/reagent_containers/food/drinks/bottle/tequila name = "Caccavo guaranteed quality tequila" desc = "Made from premium petroleum distillates, pure thalidomide and other fine quality ingredients!" icon_state = "tequilabottle" - list_reagents = list("tequila" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/tequila = 100) /obj/item/reagent_containers/food/drinks/bottle/tequila/empty - list_reagents = list("tequila" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing name = "bottle of nothing" desc = "A bottle filled with nothing." icon_state = "bottleofnothing" - list_reagents = list("nothing" = 100) + list_reagents = list(/datum/reagent/consumable/nothing = 100) foodtype = NONE /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing/empty - list_reagents = list("nothing" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/patron name = "Wrapp Artiste Patron" desc = "Silver laced tequila, served in space night clubs across the galaxy." icon_state = "patronbottle" - list_reagents = list("patron" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/patron = 100) /obj/item/reagent_containers/food/drinks/bottle/patron/empty - list_reagents = list("patron" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/rum name = "Captain Pete's Cuban spiced rum" desc = "This isn't just rum, oh no. It's practically GRIFF in a bottle." icon_state = "rumbottle" - list_reagents = list("rum" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/rum = 100) /obj/item/reagent_containers/food/drinks/bottle/rum/empty - list_reagents = list("rum" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/holywater name = "flask of holy water" desc = "A flask of the chaplain's holy water." icon_state = "holyflask" - list_reagents = list("holywater" = 100) + list_reagents = list(/datum/reagent/water/holywater = 100) foodtype = NONE /obj/item/reagent_containers/food/drinks/bottle/holywater/hell desc = "A flask of holy water...it's been sitting in the Necropolis a while though." - list_reagents = list("hell_water" = 100) + list_reagents = list(/datum/reagent/hellwater = 100) /obj/item/reagent_containers/food/drinks/bottle/holyoil name = "flask of zelus oil" desc = "A brass flask of Zelus oil, a viscous fluid scenting of brass. Can be thrown to deal damage from afar." icon_state = "zelusflask" - list_reagents = list("holyoil" = 30) + list_reagents = list(/datum/reagent/fuel/holyoil = 30) volume = 30 foodtype = NONE force = 18 @@ -220,63 +219,63 @@ knockdown_duration = 18 /obj/item/reagent_containers/food/drinks/bottle/holyoil/empty - list_reagents = list("holyoil" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/vermouth name = "Goldeneye vermouth" desc = "Sweet, sweet dryness~" icon_state = "vermouthbottle" - list_reagents = list("vermouth" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/vermouth = 100) /obj/item/reagent_containers/food/drinks/bottle/vermouth/empty - list_reagents = list("vermouth" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/kahlua name = "Robert Robust's coffee liqueur" desc = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936, HONK." icon_state = "kahluabottle" - list_reagents = list("kahlua" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/kahlua = 100) foodtype = VEGETABLES /obj/item/reagent_containers/food/drinks/bottle/kahlua/empty - list_reagents = list("kahlua" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/goldschlager name = "College Girl goldschlager" desc = "Because they are the only ones who will drink 100 proof cinnamon schnapps." icon_state = "goldschlagerbottle" - list_reagents = list("goldschlager" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/goldschlager = 100) /obj/item/reagent_containers/food/drinks/bottle/goldschlager/empty - list_reagents = list("goldschlager" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/cognac name = "Chateau de Baton premium cognac" desc = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. You might as well not scream 'SHITCURITY' this time." icon_state = "cognacbottle" - list_reagents = list("cognac" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/cognac = 100) /obj/item/reagent_containers/food/drinks/bottle/cognac/empty - list_reagents = list("cognac" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/wine name = "Doublebeard's bearded special wine" desc = "A faint aura of unease and asspainery surrounds the bottle." icon_state = "winebottle" - list_reagents = list("wine" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/wine = 100) foodtype = FRUIT | ALCOHOL /obj/item/reagent_containers/food/drinks/bottle/wine/empty - list_reagents = list("wine" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/absinthe name = "extra-strong absinthe" desc = "An strong alcoholic drink brewed and distributed by" icon_state = "absinthebottle" - list_reagents = list("absinthe" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/absinthe = 100) /obj/item/reagent_containers/food/drinks/bottle/absinthe/empty - list_reagents = list("absinthe" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/absinthe/Initialize() . = ..() @@ -329,7 +328,7 @@ name = "bottle of lizard wine" desc = "An alcoholic beverage from Space China, made by infusing lizard tails in ethanol. Inexplicably popular among command staff." icon_state = "lizardwine" - list_reagents = list("lizardwine" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/lizardwine = 100) foodtype = FRUIT | ALCOHOL /obj/item/reagent_containers/food/drinks/bottle/hcider @@ -337,28 +336,28 @@ desc = "Apple juice for adults." icon_state = "hcider" volume = 50 - list_reagents = list("hcider" = 50) + list_reagents = list(/datum/reagent/consumable/ethanol/hcider = 50) /obj/item/reagent_containers/food/drinks/bottle/hcider/empty - list_reagents = list("hcider" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/grappa name = "Phillipes well-aged Grappa" desc = "Bottle of Grappa." icon_state = "grappabottle" - list_reagents = list("grappa" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/grappa = 100) /obj/item/reagent_containers/food/drinks/bottle/grappa/empty - list_reagents = list("grappa" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/sake name = "Ryo's traditional sake" desc = "Sweet as can be, and burns like fire going down." icon_state = "sakebottle" - list_reagents = list("sake" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/sake = 100) /obj/item/reagent_containers/food/drinks/bottle/sake/empty - list_reagents = list("sake" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/sake/Initialize() . = ..() @@ -375,48 +374,48 @@ name = "Fernet Bronca" desc = "A bottle of pure Fernet Bronca, produced in Cordoba Space Station" icon_state = "fernetbottle" - list_reagents = list("fernet" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/fernet = 100) /obj/item/reagent_containers/food/drinks/bottle/fernet/empty - list_reagents = list("fernet" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/applejack name = "Buckin' Bronco's Applejack" desc = "Kicks like a horse, tastes like an apple!" icon_state = "applejack_bottle" - list_reagents = list("applejack" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/applejack = 100) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/bottle/applejack/empty - list_reagents = list("applejack" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/champagne name = "Eau d' Dandy Brut Champagne" desc = "Finely sourced from only the most pretentious French vineyards." icon_state = "champagne_bottle" - list_reagents = list("champagne" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/champagne = 100) /obj/item/reagent_containers/food/drinks/bottle/champagne/empty - list_reagents = list("champagne" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/blazaam name = "Ginbad's Blazaam" desc = "You feel like you should give the bottle a good rub before opening." icon_state = "blazaambottle" - list_reagents = list("blazaam" = 100) + list_reagents = list(/datum/reagent/consumable/ethanol/blazaam = 100) /obj/item/reagent_containers/food/drinks/bottle/blazaam/empty - list_reagents = list("blazaam" = 0) + list_reagents = null /obj/item/reagent_containers/food/drinks/bottle/trappist name = "Mont de Requin Trappistes Bleu" desc = "Brewed in space-Belgium. Fancy!" icon_state = "trappistbottle" volume = 50 - list_reagents = list("trappist" = 50) + list_reagents = list(/datum/reagent/consumable/ethanol/trappist = 50) /obj/item/reagent_containers/food/drinks/bottle/trappist/empty - list_reagents = list("trappist" = 0) + list_reagents = null //////////////////////////JUICES AND STUFF /////////////////////// @@ -428,7 +427,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list("orangejuice" = 100) + list_reagents = list(/datum/reagent/consumable/orangejuice = 100) foodtype = FRUIT| BREAKFAST /obj/item/reagent_containers/food/drinks/bottle/cream @@ -439,7 +438,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list("cream" = 100) + list_reagents = list(/datum/reagent/consumable/cream = 100) foodtype = DAIRY /obj/item/reagent_containers/food/drinks/bottle/tomatojuice @@ -450,7 +449,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list("tomatojuice" = 100) + list_reagents = list(/datum/reagent/consumable/tomatojuice = 100) foodtype = VEGETABLES /obj/item/reagent_containers/food/drinks/bottle/limejuice @@ -461,7 +460,7 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list("limejuice" = 100) + list_reagents = list(/datum/reagent/consumable/limejuice = 100) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/bottle/menthol @@ -472,18 +471,18 @@ lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' isGlass = FALSE - list_reagents = list("menthol" = 100) + list_reagents = list(/datum/reagent/consumable/menthol = 100) /obj/item/reagent_containers/food/drinks/bottle/grenadine name = "Jester Grenadine" desc = "Contains 0% real cherries!" icon_state = "grenadine" isGlass = TRUE - list_reagents = list("grenadine" = 100) + list_reagents = list(/datum/reagent/consumable/grenadine = 100) foodtype = FRUIT /obj/item/reagent_containers/food/drinks/bottle/grenadine/empty - list_reagents = list("grenadine" = 0) + list_reagents = null ////////////////////////// MOLOTOV /////////////////////// /obj/item/reagent_containers/food/drinks/bottle/molotov diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm index 1e5c2eaf60..0d769932db 100644 --- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm +++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm @@ -81,19 +81,19 @@ /obj/item/reagent_containers/food/drinks/drinkingglass/filled/soda name = "Soda Water" - list_reagents = list("sodawater" = 50) + list_reagents = list(/datum/reagent/consumable/sodawater = 50) /obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola name = "Space Cola" - list_reagents = list("cola" = 50) + list_reagents = list(/datum/reagent/consumable/space_cola = 50) /obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola name = "Nuka Cola" - list_reagents = list("nuka_cola" = 50) + list_reagents = list(/datum/reagent/consumable/nuka_cola = 50) /obj/item/reagent_containers/food/drinks/drinkingglass/filled/syndicatebomb name = "Syndicat Bomb" - list_reagents = list("syndicatebomb" = 50) + list_reagents = list(/datum/reagent/consumable/ethanol/syndicatebomb = 50) /obj/item/reagent_containers/food/drinks/drinkingglass/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/reagent_containers/food/snacks/egg)) //breaking eggs @@ -103,7 +103,7 @@ to_chat(user, "[src] is full.") else to_chat(user, "You break [E] in [src].") - reagents.add_reagent("eggyolk", 5) + reagents.add_reagent(/datum/reagent/consumable/eggyolk, 5) qdel(E) return else diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 7288d91f2d..d8dafb7b8e 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -15,19 +15,18 @@ volume = 50 //Possible_states has the reagent id as key and a list of, in order, the icon_state, the name and the desc as values. Used in the on_reagent_change(changetype) to change names, descs and sprites. var/list/possible_states = list( - "ketchup" = list("ketchup", "ketchup bottle", "You feel more American already."), - "mustard" = list("mustard", "mustard bottle", "A spice mixed with enzymes and water."), - "capsaicin" = list("hotsauce", "hotsauce bottle", "You can almost TASTE the stomach ulcers now!"), - "enzyme" = list("enzyme", "universal enzyme bottle", "Used in cooking various dishes"), - "soysauce" = list("soysauce", "soy sauce bottle", "A salty soy-based flavoring"), - "frostoil" = list("coldsauce", "coldsauce bottle", "Leaves the tongue numb in its passage"), - "sodiumchloride" = list("saltshakersmall", "salt shaker", "Salt. From space oceans, presumably"), - "blackpepper" = list("peppermillsmall", "pepper mill", "Often used to flavor food or make people sneeze"), - "cornoil" = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"), - "sugar" = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!"), - "mayonnaise" = list("mayonnaise", "mayonnaise jar", "An oily condiment made from egg yolks."), - "bbqsauce" = list("condi_bbq", "BBQ sauce", "Hand wipes not included."), - "peanut_butter" = list("peanutbutter", "peanut butter jar", "A deliciously and sticky spread made from peanuts.")) + /datum/reagent/consumable/ketchup = list("ketchup", "ketchup bottle", "You feel more American already."), + /datum/reagent/consumable/capsaicin = list("hotsauce", "hotsauce bottle", "You can almost TASTE the stomach ulcers now!"), + /datum/reagent/consumable/enzyme = list("enzyme", "universal enzyme bottle", "Used in cooking various dishes"), + /datum/reagent/consumable/soysauce = list("soysauce", "soy sauce bottle", "A salty soy-based flavoring"), + /datum/reagent/consumable/frostoil = list("coldsauce", "coldsauce bottle", "Leaves the tongue numb in its passage"), + /datum/reagent/consumable/sodiumchloride = list("saltshakersmall", "salt shaker", "Salt. From space oceans, presumably"), + /datum/reagent/consumable/blackpepper = list("peppermillsmall", "pepper mill", "Often used to flavor food or make people sneeze"), + /datum/reagent/consumable/cornoil = list("oliveoil", "corn oil bottle", "A delicious oil used in cooking. Made from corn"), + /datum/reagent/consumable/sugar = list("emptycondiment", "sugar bottle", "Tasty spacey sugar!"), + /datum/reagent/consumable/mayonnaise = list("mayonnaise", "mayonnaise jar", "An oily condiment made from egg yolks."), + /datum/reagent/consumable/bbqsauce = list("bbqsauce", "BBQ sauce", "Hand wipes not included."), + /datum/reagent/consumable/peanut_butter = list("peanutbutter", "peanut butter jar", "A deliciously and sticky spread made from peanuts.")) var/originalname = "condiment" //Can't use initial(name) for this. This stores the name set by condimasters. /obj/item/reagent_containers/food/condiment/suicide_act(mob/living/carbon/user) @@ -117,12 +116,12 @@ name = "universal enzyme" desc = "Used in cooking various dishes." icon_state = "enzyme" - list_reagents = list("enzyme" = 50) + list_reagents = list(/datum/reagent/consumable/enzyme = 50) /obj/item/reagent_containers/food/condiment/sugar name = "sugar bottle" desc = "Tasty spacey sugar!" - list_reagents = list("sugar" = 50) + list_reagents = list(/datum/reagent/consumable/sugar = 50) /obj/item/reagent_containers/food/condiment/saltshaker //Separate from above since it's a small shaker rather then name = "salt shaker" // a large one. @@ -131,7 +130,7 @@ possible_transfer_amounts = list(1,20) //for clown turning the lid off amount_per_transfer_from_this = 1 volume = 20 - list_reagents = list("sodiumchloride" = 20) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 20) possible_states = list() /obj/item/reagent_containers/food/condiment/saltshaker/on_reagent_change(changetype) @@ -154,11 +153,11 @@ if(!proximity) return if(isturf(target)) - if(!reagents.has_reagent("sodiumchloride", 2)) + if(!reagents.has_reagent(/datum/reagent/consumable/sodiumchloride, 2)) to_chat(user, "You don't have enough salt to make a pile!") return user.visible_message("[user] shakes some salt onto [target].", "You shake some salt onto [target].") - reagents.remove_reagent("sodiumchloride", 2) + reagents.remove_reagent(/datum/reagent/consumable/sodiumchloride, 2) new/obj/effect/decal/cleanable/salt(target) return @@ -169,7 +168,7 @@ possible_transfer_amounts = list(1,20) //for clown turning the lid off amount_per_transfer_from_this = 1 volume = 20 - list_reagents = list("blackpepper" = 20) + list_reagents = list(/datum/reagent/consumable/blackpepper = 20) possible_states = list() /obj/item/reagent_containers/food/condiment/peppermill/on_reagent_change(changetype) @@ -185,7 +184,7 @@ item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - list_reagents = list("milk" = 50) + list_reagents = list(/datum/reagent/consumable/milk = 50) possible_states = list() /obj/item/reagent_containers/food/condiment/flour @@ -193,7 +192,7 @@ desc = "A big bag of flour. Good for baking!" icon_state = "flour" item_state = "flour" - list_reagents = list("flour" = 30) + list_reagents = list(/datum/reagent/consumable/flour = 30) possible_states = list() /obj/item/reagent_containers/food/condiment/soymilk @@ -203,7 +202,7 @@ item_state = "carton" lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' - list_reagents = list("soymilk" = 50) + list_reagents = list(/datum/reagent/consumable/soymilk = 50) possible_states = list() /obj/item/reagent_containers/food/condiment/rice @@ -211,21 +210,21 @@ desc = "A big bag of rice. Good for cooking!" icon_state = "rice" item_state = "flour" - list_reagents = list("rice" = 30) + list_reagents = list(/datum/reagent/consumable/rice = 30) possible_states = list() /obj/item/reagent_containers/food/condiment/soysauce name = "soy sauce" desc = "A salty soy-based flavoring." icon_state = "soysauce" - list_reagents = list("soysauce" = 50) + list_reagents = list(/datum/reagent/consumable/soysauce = 50) possible_states = list() /obj/item/reagent_containers/food/condiment/mayonnaise name = "mayonnaise" desc = "An oily condiment made from egg yolks." icon_state = "mayonnaise" - list_reagents = list("mayonnaise" = 50) + list_reagents = list(/datum/reagent/consumable/mayonnaise = 50) possible_states = list() @@ -239,7 +238,17 @@ volume = 10 amount_per_transfer_from_this = 10 possible_transfer_amounts = list() - possible_states = list("ketchup" = list("condi_ketchup", "Ketchup", "You feel more American already."), "capsaicin" = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), "soysauce" = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), "frostoil" = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), "sodiumchloride" = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), "blackpepper" = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), "cornoil" = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), "sugar" = list("condi_sugar", "Sugar", "Tasty spacey sugar!"), "astrotame" = list("condi_astrotame", "Astrotame", "The sweetness of a thousand sugars but none of the calories.")) + possible_states = list(/datum/reagent/consumable/ketchup = list("condi_ketchup", "Ketchup", "You feel more American already."), + /datum/reagent/consumable/capsaicin = list("condi_hotsauce", "Hotsauce", "You can almost TASTE the stomach ulcers now!"), + /datum/reagent/consumable/soysauce = list("condi_soysauce", "Soy Sauce", "A salty soy-based flavoring"), + /datum/reagent/consumable/frostoil = list("condi_frostoil", "Coldsauce", "Leaves the tongue numb in it's passage"), + /datum/reagent/consumable/sodiumchloride = list("condi_salt", "Salt Shaker", "Salt. From space oceans, presumably"), + /datum/reagent/consumable/blackpepper = list("condi_pepper", "Pepper Mill", "Often used to flavor food or make people sneeze"), + /datum/reagent/consumable/cornoil = list("condi_cornoil", "Corn Oil", "A delicious oil used in cooking. Made from corn"), + /datum/reagent/consumable/sugar = list("condi_sugar", "Sugar", "Tasty spacey sugar!"), + /datum/reagent/consumable/astrotame = list("condi_astrotame", "Astrotame", "The sweetness of a thousand sugars but none of the calories."), + /datum/reagent/consumable/mustard = list("condi_mustard", "Mustard", "A spice mixed with enzymes and water."), + /datum/reagent/consumable/bbqsauce = list("condi_bbq", "BBQ sauce", "Hand wipes not included.")) /obj/item/reagent_containers/food/condiment/pack/attack(mob/M, mob/user, def_zone) //Can't feed these to people directly. return @@ -282,26 +291,26 @@ /obj/item/reagent_containers/food/condiment/pack/ketchup name = "ketchup pack" originalname = "ketchup" - list_reagents = list("ketchup" = 10) + list_reagents = list(/datum/reagent/consumable/ketchup = 10) //Mustard /obj/item/reagent_containers/food/condiment/pack/mustard name = "mustard pack" originalname = "mustard" - list_reagents = list("mustard" = 10) + list_reagents = list(/datum/reagent/consumable/mustard = 10) //Hot sauce /obj/item/reagent_containers/food/condiment/pack/hotsauce name = "hotsauce pack" originalname = "hotsauce" - list_reagents = list("capsaicin" = 10) + list_reagents = list(/datum/reagent/consumable/capsaicin = 10) /obj/item/reagent_containers/food/condiment/pack/astrotame name = "astrotame pack" originalname = "astrotame" - list_reagents = list("astrotame" = 5) + list_reagents = list(/datum/reagent/consumable/astrotame = 5) /obj/item/reagent_containers/food/condiment/pack/bbqsauce name = "bbq sauce pack" originalname = "bbq sauce" - list_reagents = list("bbqsauce" = 10) + list_reagents = list(/datum/reagent/consumable/bbqsauce = 10) diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 239273e421..016e37a5c4 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -189,7 +189,7 @@ desc = "Delicious food on a stick." ingredients_placement = INGREDIENTS_LINE trash = /obj/item/stack/rods - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) ingMax = 6 icon_state = "rod" @@ -304,7 +304,7 @@ else if(contents.len >= 20) to_chat(user, "You can't add more ingredients to [src]!") else - if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad? + if(reagents.has_reagent(/datum/reagent/water, 10)) //are we starting a soup or a salad? var/obj/item/reagent_containers/food/snacks/customizable/A = new/obj/item/reagent_containers/food/snacks/customizable/soup(get_turf(src)) A.initialize_custom_food(src, S, user) else diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm index 97e8423e78..c068c1aa40 100644 --- a/code/modules/food_and_drinks/food/snacks.dm +++ b/code/modules/food_and_drinks/food/snacks.dm @@ -19,11 +19,9 @@ Here is an example of the new formatting for anyone who wants to add more food i 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 -/obj/item/reagent_containers/food/snacks/xenoburger/Initialize() //Don't mess with this. | nO I WILL 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. + list_reagents = list(/datum/reagent/xenomicrobes = 10, + /datum/reagent/consumable/nutriment = 2) //What's inside the snack. + bitesize = 3 //This is the amount each bite consumes. ``` All foods are distributed among various categories. Use common sense. @@ -62,7 +60,7 @@ All foods are distributed among various categories. Use common sense. if(list_reagents) for(var/rid in list_reagents) var/amount = list_reagents[rid] - if(rid == "nutriment" || rid == "vitamin") + if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin) reagents.add_reagent(rid, amount, tastes.Copy()) else reagents.add_reagent(rid, amount) @@ -208,7 +206,7 @@ All foods are distributed among various categories. Use common sense. if(bonus_reagents && bonus_reagents.len) for(var/r_id in bonus_reagents) var/amount = bonus_reagents[r_id] - if(r_id == "nutriment" || r_id == "vitamin") + if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin) reagents.add_reagent(r_id, amount, tastes) else reagents.add_reagent(r_id, amount) @@ -287,7 +285,7 @@ All foods are distributed among various categories. Use common sense. if(S.bonus_reagents && S.bonus_reagents.len) for(var/r_id in S.bonus_reagents) var/amount = S.bonus_reagents[r_id] * cooking_efficiency - if(r_id == "nutriment" || r_id == "vitamin") + if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin) S.reagents.add_reagent(r_id, amount, tastes) else S.reagents.add_reagent(r_id, amount) diff --git a/code/modules/food_and_drinks/food/snacks/dough.dm b/code/modules/food_and_drinks/food/snacks/dough.dm index 6ae8836b28..e071fb3df7 100644 --- a/code/modules/food_and_drinks/food/snacks/dough.dm +++ b/code/modules/food_and_drinks/food/snacks/dough.dm @@ -8,7 +8,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "dough" cooked_type = /obj/item/reagent_containers/food/snacks/store/bread/plain - list_reagents = list("nutriment" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) w_class = WEIGHT_CLASS_NORMAL tastes = list("dough" = 1) foodtype = GRAIN @@ -36,7 +36,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/doughslice slices_num = 3 cooked_type = /obj/item/reagent_containers/food/snacks/pizzabread - list_reagents = list("nutriment" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) w_class = WEIGHT_CLASS_NORMAL tastes = list("dough" = 1) foodtype = GRAIN @@ -47,7 +47,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "pizzabread" custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/pizza - list_reagents = list("nutriment" = 7) + list_reagents = list(/datum/reagent/consumable/nutriment = 7) w_class = WEIGHT_CLASS_NORMAL tastes = list("bread" = 1) foodtype = GRAIN @@ -69,7 +69,7 @@ desc = "A base for any self-respecting burger." icon = 'icons/obj/food/burgerbread.dmi' icon_state = "bun" - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/burger filling_color = "#CD853F" tastes = list("bun" = 1) // the bun tastes of bun. @@ -81,7 +81,7 @@ icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "cakebatter" cooked_type = /obj/item/reagent_containers/food/snacks/store/cake/plain - list_reagents = list("nutriment" = 9) + list_reagents = list(/datum/reagent/consumable/nutriment = 9) w_class = WEIGHT_CLASS_NORMAL tastes = list("batter" = 1) foodtype = GRAIN | DAIRY @@ -106,7 +106,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/rawpastrybase slices_num = 3 cooked_type = /obj/item/reagent_containers/food/snacks/pie/plain - list_reagents = list("nutriment" = 9) + list_reagents = list(/datum/reagent/consumable/nutriment = 9) w_class = WEIGHT_CLASS_NORMAL tastes = list("dough" = 1) foodtype = GRAIN | DAIRY @@ -118,7 +118,7 @@ icon_state = "rawpastrybase" cooked_type = /obj/item/reagent_containers/food/snacks/pastrybase filling_color = "#CD853F" - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) tastes = list("raw pastry" = 1) foodtype = GRAIN | DAIRY @@ -127,7 +127,7 @@ desc = "A base for any self-respecting pastry." icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "pastrybase" - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) filling_color = "#CD853F" tastes = list("pastry" = 1) foodtype = GRAIN | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index 8f02cd81b4..28fb2edf61 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -8,7 +8,7 @@ icon_state = "meat" dried_type = /obj/item/reagent_containers/food/snacks/sosjerky/healthy bitesize = 3 - list_reagents = list("nutriment" = 3, "cooking_oil" = 2) //Meat has fats that a food processor can process into cooking oil + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2) //Meat has fats that a food processor can process into cooking oil cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/plain slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain slices_num = 3 @@ -63,7 +63,7 @@ icon_state = "crabmeatraw" cooked_type = /obj/item/reagent_containers/food/snacks/meat/crab bitesize = 3 - list_reagents = list("nutriment" = 1, "cooking_oil" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cooking_oil = 3) filling_color = "#EAD079" tastes = list("raw crab" = 1) foodtype = RAW | MEAT @@ -72,8 +72,8 @@ name = "crab meat" desc = "Some deliciously cooked crab meat." icon_state = "crabmeat" - list_reagents = list("nutriment" = 2) - bonus_reagents = list("nutriment" = 3, "vitamin" = 2, "cooking_oil" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cooking_oil = 2) filling_color = "#DFB73A" tastes = list("crab" = 1) foodtype = MEAT @@ -88,7 +88,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime icon_state = "slimemeat" desc = "Because jello wasn't offensive enough to vegans." - list_reagents = list("nutriment" = 3, "slimejelly" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin/slimejelly = 3) filling_color = "#00FFFF" tastes = list("slime" = 1, "jelly" = 1) foodtype = MEAT | RAW | TOXIC @@ -96,7 +96,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/golem icon_state = "golemmeat" desc = "Edible rocks, welcome to the future." - list_reagents = list("nutriment" = 3, "iron" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/iron = 3) filling_color = "#A9A9A9" tastes = list("rock" = 1) foodtype = MEAT | RAW | GROSS @@ -131,7 +131,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly icon_state = "flymeat" desc = "Nothing says tasty like maggot filled radioactive mutant flesh." - list_reagents = list("nutriment" = 3, "uranium" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/uranium = 3) tastes = list("maggots" = 1, "the inside of a reactor" = 1) foodtype = MEAT | RAW | GROSS @@ -214,7 +214,7 @@ name = "killer tomato meat" desc = "A slice from a huge tomato." icon_state = "tomatomeat" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) filling_color = "#FF0000" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/killertomato slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/killertomato @@ -225,7 +225,7 @@ name = "bear meat" desc = "A very manly slab of meat." icon_state = "bearmeat" - list_reagents = list("nutriment" = 12, "morphine" = 5, "vitamin" = 2, "cooking_oil" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/medicine/morphine = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cooking_oil = 6) filling_color = "#FFB6C1" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/bear slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/bear @@ -236,7 +236,7 @@ name = "xeno meat" desc = "A slab of meat." icon_state = "xenomeat" - list_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) bitesize = 4 filling_color = "#32CD32" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/xeno @@ -248,7 +248,7 @@ name = "spider meat" desc = "A slab of spider meat." icon_state = "spidermeat" - list_reagents = list("nutriment" = 3, "toxin" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin = 3, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#7CFC00" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/spider slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/spider @@ -258,7 +258,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/goliath name = "goliath meat" desc = "A slab of goliath meat. It's not very edible now, but it cooks great in lava." - list_reagents = list("nutriment" = 3, "toxin" = 5, "cooking_oil" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin = 5, /datum/reagent/consumable/cooking_oil = 3) icon_state = "goliathmeat" tastes = list("meat" = 1) foodtype = RAW | MEAT | TOXIC @@ -271,7 +271,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/meatwheat name = "meatwheat clump" desc = "This doesn't look like meat, but your standards aren't that high to begin with." - list_reagents = list("nutriment" = 3, "vitamin" = 2, "blood" = 5, "cooking_oil" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/blood = 5, /datum/reagent/consumable/cooking_oil = 1) filling_color = rgb(150, 0, 0) icon_state = "meatwheat_clump" bitesize = 4 @@ -281,7 +281,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/gorilla name = "gorilla meat" desc = "Much meatier than monkey meat." - list_reagents = list("nutriment" = 5, "vitamin" = 1, "cooking_oil" = 5) //Plenty of fat! + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/cooking_oil = 5) //Plenty of fat! /obj/item/reagent_containers/food/snacks/meat/rawbacon name = "raw piece of bacon" @@ -289,7 +289,7 @@ icon_state = "bacon" cooked_type = /obj/item/reagent_containers/food/snacks/meat/bacon bitesize = 2 - list_reagents = list("nutriment" = 1, "cooking_oil" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cooking_oil = 3) filling_color = "#B22222" tastes = list("bacon" = 1) foodtype = RAW | MEAT @@ -298,8 +298,8 @@ name = "piece of bacon" desc = "A delicious piece of bacon." icon_state = "baconcooked" - list_reagents = list("nutriment" = 2) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1, "cooking_oil" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/consumable/cooking_oil = 2) filling_color = "#854817" tastes = list("bacon" = 1) foodtype = MEAT | BREAKFAST @@ -307,7 +307,7 @@ /obj/item/reagent_containers/food/snacks/meat/slab/gondola name = "gondola meat" desc = "According to legends of old, consuming raw gondola flesh grants one inner peace." - list_reagents = list("nutriment" = 3, "tranquility" = 5, "cooking_oil" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/tranquility = 5, /datum/reagent/consumable/cooking_oil = 3) tastes = list("meat" = 4, "tranquility" = 1) filling_color = "#9A6750" cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/gondola @@ -321,8 +321,8 @@ name = "steak" desc = "A piece of hot spicy meat." icon_state = "meatsteak" - list_reagents = list("nutriment" = 5) - bonus_reagents = list("nutriment" = 2, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) trash = /obj/item/trash/plate filling_color = "#B22222" foodtype = MEAT @@ -383,7 +383,7 @@ icon_state = "rawcutlet" cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain bitesize = 2 - list_reagents = list("nutriment" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) filling_color = "#B22222" tastes = list("meat" = 1) var/meat_type = "meat" @@ -447,8 +447,8 @@ desc = "A cooked meat cutlet." icon_state = "cutlet" bitesize = 2 - list_reagents = list("nutriment" = 2) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#B22222" tastes = list("meat" = 1) foodtype = MEAT diff --git a/code/modules/food_and_drinks/food/snacks_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm index 628b883e73..b18dfc7968 100644 --- a/code/modules/food_and_drinks/food/snacks_bread.dm +++ b/code/modules/food_and_drinks/food/snacks_bread.dm @@ -12,7 +12,7 @@ bitesize = 2 custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/sandwich filling_color = "#FFA500" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) slot_flags = ITEM_SLOT_HEAD customfoodfilling = 0 //to avoid infinite bread-ception foodtype = GRAIN @@ -22,8 +22,8 @@ name = "bread" desc = "Some plain old earthen bread." icon_state = "bread" - bonus_reagents = list("nutriment" = 7) - list_reagents = list("nutriment" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 7) + list_reagents = list(/datum/reagent/consumable/nutriment = 10) custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/bread slice_path = /obj/item/reagent_containers/food/snacks/breadslice/plain tastes = list("bread" = 10) @@ -41,8 +41,8 @@ desc = "The culinary base of every self-respecting eloquen/tg/entleman." icon_state = "meatbread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/meat - bonus_reagents = list("nutriment" = 5, "vitamin" = 10) - list_reagents = list("nutriment" = 30, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "meat" = 10) foodtype = GRAIN | MEAT @@ -57,8 +57,8 @@ desc = "The culinary base of every self-respecting eloquen/tg/entleman. Extra Heretical." icon_state = "xenomeatbread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/xenomeat - bonus_reagents = list("nutriment" = 5, "vitamin" = 10) - list_reagents = list("nutriment" = 30, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "acid" = 10) foodtype = GRAIN | MEAT @@ -67,7 +67,7 @@ desc = "A slice of delicious meatbread. Extra Heretical." icon_state = "xenobreadslice" filling_color = "#32CD32" - list_reagents = list("nutriment" = 6, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/store/bread/spidermeat @@ -75,8 +75,8 @@ desc = "Reassuringly green meatloaf made from spider meat." icon_state = "spidermeatbread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/spidermeat - bonus_reagents = list("nutriment" = 5, "vitamin" = 10) - list_reagents = list("nutriment" = 30, "toxin" = 15, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/toxin = 15, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "cobwebs" = 5) foodtype = GRAIN | MEAT | TOXIC @@ -85,7 +85,7 @@ desc = "A slice of meatloaf made from an animal that most likely still wants you dead." icon_state = "xenobreadslice" filling_color = "#7CFC00" - list_reagents = list("nutriment" = 6, "toxin" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin = 3, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT | TOXIC /obj/item/reagent_containers/food/snacks/store/bread/banana @@ -93,8 +93,8 @@ desc = "A heavenly and filling treat." icon_state = "bananabread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/banana - bonus_reagents = list("nutriment" = 5, "banana" = 20) - list_reagents = list("nutriment" = 20, "banana" = 20) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/banana = 20) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/banana = 20) tastes = list("bread" = 10) // bananjuice will also flavour foodtype = GRAIN | FRUIT @@ -104,7 +104,7 @@ desc = "A slice of delicious banana bread." icon_state = "bananabreadslice" filling_color = "#FFD700" - list_reagents = list("nutriment" = 4, "banana" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/banana = 4) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/store/bread/tofu @@ -112,8 +112,8 @@ desc = "Like meatbread but for vegetarians. Not guaranteed to give superpowers." icon_state = "tofubread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/tofu - bonus_reagents = list("nutriment" = 5, "vitamin" = 10) - list_reagents = list("nutriment" = 20, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "tofu" = 10) foodtype = GRAIN | VEGETABLES @@ -122,7 +122,7 @@ desc = "A slice of delicious tofubread." icon_state = "tofubreadslice" filling_color = "#FF8C00" - list_reagents = list("nutriment" = 4, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | VEGETABLES /obj/item/reagent_containers/food/snacks/store/bread/creamcheese @@ -130,8 +130,8 @@ desc = "Yum yum yum!" icon_state = "creamcheesebread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/creamcheese - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 20, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "cheese" = 10) foodtype = GRAIN | DAIRY @@ -140,7 +140,7 @@ desc = "A slice of yum!" icon_state = "creamcheesebreadslice" filling_color = "#FF8C00" - list_reagents = list("nutriment" = 4, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | DAIRY /obj/item/reagent_containers/food/snacks/store/bread/mimana @@ -148,8 +148,8 @@ desc = "Best eaten in silence." icon_state = "mimanabread" slice_path = /obj/item/reagent_containers/food/snacks/breadslice/mimana - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 20, "mutetoxin" = 5, "nothing" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/toxin/mutetoxin = 5, /datum/reagent/consumable/nothing = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bread" = 10, "silence" = 10) foodtype = GRAIN | FRUIT @@ -158,7 +158,7 @@ desc = "A slice of silence!" icon_state = "mimanabreadslice" filling_color = "#C0C0C0" - list_reagents = list("nutriment" = 2, "mutetoxin" = 1, "nothing" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/breadslice/custom @@ -172,8 +172,8 @@ desc = "Bon appetit!" icon = 'icons/obj/food/burgerbread.dmi' icon_state = "baguette" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) bitesize = 3 w_class = WEIGHT_CLASS_NORMAL tastes = list("bread" = 1) @@ -189,12 +189,12 @@ GLOBAL_VAR_INIT(frying_hardmode, TRUE) GLOBAL_VAR_INIT(frying_bad_chem_add_volume, TRUE) GLOBAL_LIST_INIT(frying_bad_chems, list( -"bad_food" = 10, -"clf3" = 2, -"aranesp" = 2, -"blackpowder" = 10, -"phlogiston" = 3, -"cyanide" = 3, +/datum/reagent/toxin/bad_food = 10, +/datum/reagent/clf3 = 2, +/datum/reagent/drug/aranesp = 2, +/datum/reagent/blackpowder = 10, +/datum/reagent/phlogiston = 3, +/datum/reagent/toxin/cyanide = 3, )) /obj/item/reagent_containers/food/snacks/deepfryholder/Initialize(mapload, obj/item/fried) @@ -268,8 +268,8 @@ GLOBAL_LIST_INIT(frying_bad_chems, list( icon_state = "butteredtoast" bitesize = 3 filling_color = "#FFA500" - list_reagents = list("nutriment" = 4) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("butter" = 1, "toast" = 1) foodtype = GRAIN | BREAKFAST @@ -279,8 +279,8 @@ GLOBAL_LIST_INIT(frying_bad_chems, list( icon = 'icons/obj/food/food.dmi' icon_state = "butterbiscuit" filling_color = "#F0E68C" - list_reagents = list("nutriment" = 5) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("butter" = 1, "biscuit" = 1) foodtype = GRAIN | BREAKFAST @@ -291,8 +291,8 @@ GLOBAL_LIST_INIT(frying_bad_chems, list( icon_state = "butterdog" bitesize = 1 filling_color = "#F1F49A" - list_reagents = list("nutriment" = 5) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("butter", "exotic butter") /obj/item/reagent_containers/food/snacks/butterdog/ComponentInitialize() diff --git a/code/modules/food_and_drinks/food/snacks_burgers.dm b/code/modules/food_and_drinks/food/snacks_burgers.dm index 8b6d6212f1..35b17e67f0 100644 --- a/code/modules/food_and_drinks/food/snacks_burgers.dm +++ b/code/modules/food_and_drinks/food/snacks_burgers.dm @@ -3,14 +3,14 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "hburger" bitesize = 3 - list_reagents = list("nutriment" = 6, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("bun" = 4) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/plain name = "burger" desc = "The cornerstone of every nutritious breakfast." - bonus_reagents = list("vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/plain/Initialize() @@ -31,7 +31,7 @@ var/subjectjob = null name = "human burger" desc = "A bloody burger." - bonus_reagents = list("vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) foodtype = MEAT | GRAIN | GROSS /obj/item/reagent_containers/food/snacks/burger/human/CheckParts(list/parts_list) @@ -50,13 +50,13 @@ /obj/item/reagent_containers/food/snacks/burger/corgi name = "corgi burger" desc = "You monster." - bonus_reagents = list("vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT | GROSS /obj/item/reagent_containers/food/snacks/burger/appendix name = "appendix burger" desc = "Tastes like appendicitis." - bonus_reagents = list("nutriment" = 6, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) icon_state = "appendixburger" tastes = list("bun" = 4, "grass" = 2) foodtype = GRAIN | MEAT | GROSS @@ -65,7 +65,7 @@ name = "fillet -o- carp sandwich" desc = "Almost like a carp is yelling somewhere... Give me back that fillet -o- carp, give me that carp." icon_state = "fishburger" - bonus_reagents = list("nutriment" = 2, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("bun" = 4, "fish" = 4) foodtype = GRAIN | MEAT @@ -73,7 +73,7 @@ name = "tofu burger" desc = "What.. is that meat?" icon_state = "tofuburger" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("bun" = 4, "tofu" = 4) foodtype = GRAIN | VEGETABLES @@ -81,8 +81,8 @@ name = "roburger" desc = "The lettuce is the only organic component. Beep." icon_state = "roburger" - bonus_reagents = list("nutriment" = 2, "nanomachines" = 2, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "nanomachines" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/nanomachines = 2, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/nanomachines = 5, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("bun" = 4, "lettuce" = 2, "sludge" = 1) foodtype = GRAIN | TOXIC @@ -91,8 +91,8 @@ desc = "This massive patty looks like poison. Beep." icon_state = "roburger" volume = 120 - bonus_reagents = list("nutriment" = 5, "nanomachines" = 70, "vitamin" = 10) - list_reagents = list("nutriment" = 6, "nanomachines" = 70, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/nanomachines = 70, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/nanomachines = 70, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("bun" = 4, "lettuce" = 2, "sludge" = 1) foodtype = GRAIN | TOXIC @@ -100,7 +100,7 @@ name = "xenoburger" desc = "Smells caustic. Tastes like heresy." icon_state = "xburger" - bonus_reagents = list("nutriment" = 2, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("bun" = 4, "acid" = 4) foodtype = GRAIN | MEAT @@ -108,29 +108,29 @@ name = "bearger" desc = "Best served rawr." icon_state = "bearger" - bonus_reagents = list("nutriment" = 3, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 6) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/clown name = "clown burger" desc = "This tastes funny..." icon_state = "clownburger" - bonus_reagents = list("nutriment" = 4, "vitamin" = 6, "banana" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/banana = 6) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/burger/mime name = "mime burger" desc = "Its taste defies language." icon_state = "mimeburger" - bonus_reagents = list("nutriment" = 4, "vitamin" = 6, "nothing" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/nothing = 6) foodtype = GRAIN /obj/item/reagent_containers/food/snacks/burger/brain name = "brainburger" desc = "A strange looking burger. It looks almost sentient." icon_state = "brainburger" - bonus_reagents = list("nutriment" = 6, "mannitol" = 6, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "mannitol" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 6, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 5, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("bun" = 4, "brains" = 2) foodtype = GRAIN | MEAT | GROSS @@ -139,7 +139,7 @@ name = "ghost burger" desc = "Too Spooky!" icon_state = "ghostburger" - bonus_reagents = list("nutriment" = 5, "vitamin" = 12) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 12) tastes = list("bun" = 4, "ectoplasm" = 2) foodtype = GRAIN alpha = 170 @@ -188,7 +188,7 @@ desc = "Perfect for hiding the fact it's burnt to a crisp." icon_state = "cburger" color = "#DA0000FF" - bonus_reagents = list("redcrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/red = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/orange @@ -196,7 +196,7 @@ desc = "Contains 0% juice." icon_state = "cburger" color = "#FF9300FF" - bonus_reagents = list("orangecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/orange = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/yellow @@ -204,7 +204,7 @@ desc = "Bright to the last bite." icon_state = "cburger" color = "#FFF200FF" - bonus_reagents = list("yellowcrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/yellow = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/green @@ -212,7 +212,7 @@ desc = "It's not tainted meat, it's painted meat!" icon_state = "cburger" color = "#A8E61DFF" - bonus_reagents = list("greencrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/green = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/blue @@ -220,7 +220,7 @@ desc = "Is this blue rare?" icon_state = "cburger" color = "#00B7EFFF" - bonus_reagents = list("bluecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/blue = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/purple @@ -228,7 +228,7 @@ desc = "Regal and low class at the same time." icon_state = "cburger" color = "#DA00FFFF" - bonus_reagents = list("purplecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/purple = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/black @@ -236,7 +236,7 @@ desc = "This is overcooked." icon_state = "cburger" color = "#1C1C1C" - bonus_reagents = list("blackcrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/black = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/white @@ -244,14 +244,14 @@ desc = "Delicous Titanium!" icon_state = "cburger" color = "#FFFFFF" - bonus_reagents = list("whitecrayonpowder" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/white = 10, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/spell name = "spell burger" desc = "This is absolutely Ei Nath." icon_state = "spellburger" - bonus_reagents = list("nutriment" = 6, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("bun" = 4, "magic" = 2) foodtype = GRAIN | MEAT @@ -259,8 +259,8 @@ name = "big bite burger" desc = "Forget the Big Mac. THIS is the future!" icon_state = "bigbiteburger" - bonus_reagents = list("vitamin" = 6) - list_reagents = list("nutriment" = 10, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) w_class = WEIGHT_CLASS_NORMAL foodtype = GRAIN | MEAT @@ -272,21 +272,21 @@ foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/jelly/slime - bonus_reagents = list("slimejelly" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "slimejelly" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/burger/jelly/cherry - bonus_reagents = list("cherryjelly" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "cherryjelly" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/burger/superbite name = "super bite burger" desc = "This is a mountain of a burger. FOOD!" icon_state = "superbiteburger" - bonus_reagents = list("vitamin" = 10) - list_reagents = list("nutriment" = 40, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 40, /datum/reagent/consumable/nutriment/vitamin = 5) w_class = WEIGHT_CLASS_NORMAL bitesize = 7 volume = 100 @@ -297,29 +297,29 @@ name = "five alarm burger" desc = "HOT! HOT!" icon_state = "fivealarmburger" - bonus_reagents = list("nutriment" = 2, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "capsaicin" = 5, "condensedcapsaicin" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5, /datum/reagent/consumable/condensedcapsaicin = 5, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/burger/rat name = "rat burger" desc = "Pretty much what you'd expect..." icon_state = "ratburger" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | MEAT | GROSS /obj/item/reagent_containers/food/snacks/burger/baseball name = "home run baseball burger" desc = "It's still warm. The steam coming off of it looks like baseball." icon_state = "baseball" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) foodtype = GRAIN | GROSS /obj/item/reagent_containers/food/snacks/burger/baconburger name = "bacon burger" desc = "The perfect combination of all things American." icon_state = "baconburger" - bonus_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("bun" = 4, "bacon" = 2) foodtype = GRAIN | MEAT @@ -327,7 +327,7 @@ name = "soylent burger" desc = "A eco-friendly burger made using upcycled low value biomass." icon_state = "soylentburger" - bonus_reagents = list("nutriment" = 5, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("bun" = 2, "assistant" = 4) foodtype = GRAIN | MEAT | DAIRY @@ -335,7 +335,7 @@ name = "mcrib" desc = "An elusive rib shaped burger with limited availablity across the galaxy. Not as good as you remember it." icon_state = "mcrib" - bonus_reagents = list("bbqsauce" = 5, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/bbqsauce = 5, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("bun" = 2, "pork patty" = 4) foodtype = GRAIN | MEAT @@ -344,7 +344,7 @@ desc = "A cheap and greasy imitation of an eggs benedict." icon_state = "mcguffin" tastes = list("muffin" = 2, "bacon" = 3) - bonus_reagents = list("eggyolk" = 3, "nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/eggyolk = 3, /datum/reagent/consumable/nutriment = 1) foodtype = GRAIN | MEAT | BREAKFAST /obj/item/reagent_containers/food/snacks/burger/chicken @@ -352,7 +352,7 @@ desc = "A delicious chicken sandwich, it is said the proceeds from this treat helps criminalize homosexuality on the space frontier." icon_state = "chickenburger" tastes = list("bun" = 2, "chicken" = 4, "God's covenant" = 1) - bonus_reagents = list("mayonnaise" = 3, "cooking_oil" = 2, "nutriment" = 2) + bonus_reagents = list(/datum/reagent/consumable/mayonnaise = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/consumable/nutriment = 2) foodtype = GRAIN | MEAT | FRIED /obj/item/reagent_containers/food/snacks/burger/cheese @@ -360,7 +360,7 @@ desc = "This noble burger stands proudly clad in golden cheese." icon_state = "cheeseburger" tastes = list("bun" = 2, "beef patty" = 4, "cheese" = 3) - bonus_reagents = list("nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) foodtype = GRAIN | MEAT | DAIRY /obj/item/reagent_containers/food/snacks/burger/cheese/Initialize() diff --git a/code/modules/food_and_drinks/food/snacks_cake.dm b/code/modules/food_and_drinks/food/snacks_cake.dm index dd4dad4d9b..bb37ec9b5d 100644 --- a/code/modules/food_and_drinks/food/snacks_cake.dm +++ b/code/modules/food_and_drinks/food/snacks_cake.dm @@ -4,14 +4,14 @@ slices_num = 5 bitesize = 3 volume = 80 - list_reagents = list("nutriment" = 20, "vitamin" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 1) foodtype = GRAIN | DAIRY /obj/item/reagent_containers/food/snacks/cakeslice icon = 'icons/obj/food/piecake.dmi' trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 4, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) customfoodfilling = 0 //to avoid infinite cake-ception tastes = list("cake" = 1) foodtype = GRAIN | DAIRY @@ -21,7 +21,7 @@ desc = "A plain cake, not a lie." icon_state = "plaincake" custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/cake - bonus_reagents = list("nutriment" = 10, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("sweetness" = 2,"cake" = 5) foodtype = GRAIN | DAIRY | SUGAR @@ -40,8 +40,8 @@ icon_state = "carrotcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/carrot slices_num = 5 - bonus_reagents = list("nutriment" = 3, "oculine" = 5, "vitamin" = 10) - list_reagents = list("nutriment" = 20, "oculine" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/medicine/oculine = 5, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/medicine/oculine = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1) foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR @@ -50,7 +50,7 @@ desc = "Carrotty slice of Carrot Cake, carrots are good for your eyes! Also not a lie." icon_state = "carrotcake_slice" filling_color = "#FFA500" - list_reagents = list("nutriment" = 4, "oculine" = 2, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/oculine = 2, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("cake" = 5, "sweetness" = 2, "carrot" = 1) foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR @@ -60,8 +60,8 @@ icon_state = "braincake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/brain slices_num = 5 - bonus_reagents = list("nutriment" = 5, "mannitol" = 10, "vitamin" = 10) - list_reagents = list("nutriment" = 20, "mannitol" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/medicine/mannitol = 10, /datum/reagent/consumable/nutriment/vitamin = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/medicine/mannitol = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1) foodtype = GRAIN | DAIRY | MEAT | GROSS | SUGAR @@ -71,7 +71,7 @@ desc = "Lemme tell you something about prions. THEY'RE DELICIOUS." icon_state = "braincakeslice" filling_color = "#FF69B4" - list_reagents = list("nutriment" = 4, "mannitol" = 2, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/mannitol = 2, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("cake" = 5, "sweetness" = 2, "brains" = 1) foodtype = GRAIN | DAIRY | MEAT | GROSS | SUGAR @@ -81,7 +81,7 @@ icon_state = "cheesecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/cheese slices_num = 5 - bonus_reagents = list("vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 4, "cream cheese" = 3) foodtype = GRAIN | DAIRY @@ -99,7 +99,7 @@ icon_state = "orangecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/orange slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 2, "oranges" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -117,7 +117,7 @@ icon_state = "limecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/lime slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 2, "unbearable sourness" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -135,7 +135,7 @@ icon_state = "lemoncake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/lemon slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 2, "sourness" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -153,7 +153,7 @@ icon_state = "chocolatecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/chocolate slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 1, "chocolate" = 4) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -171,8 +171,8 @@ icon_state = "birthdaycake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/birthday slices_num = 5 - bonus_reagents = list("nutriment" = 7, "sprinkles" = 10, "vitamin" = 5) - list_reagents = list("nutriment" = 20, "sprinkles" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 20, /datum/reagent/consumable/sprinkles = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 5, "sweetness" = 1) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -181,7 +181,7 @@ desc = "A slice of your birthday." icon_state = "birthdaycakeslice" filling_color = "#DC143C" - list_reagents = list("nutriment" = 4, "sprinkles" = 2, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sprinkles = 2, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("cake" = 5, "sweetness" = 1) foodtype = GRAIN | DAIRY | JUNKFOOD | SUGAR @@ -191,7 +191,7 @@ icon_state = "applecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/apple slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 10) tastes = list("cake" = 5, "sweetness" = 1, "apple" = 1) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -214,7 +214,7 @@ desc = "A cake made of slimes. Probably not electrified." icon_state = "slimecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/slimecake - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("cake" = 5, "sweetness" = 1, "slime" = 1) foodtype = GRAIN | DAIRY | SUGAR @@ -231,7 +231,7 @@ desc = "A hollow cake with real pumpkin." icon_state = "pumpkinspicecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pumpkinspice - bonus_reagents = list("nutriment" = 3, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("cake" = 5, "sweetness" = 1, "pumpkin" = 1) foodtype = GRAIN | DAIRY | VEGETABLES | SUGAR @@ -248,7 +248,7 @@ desc = "A plain cake, filled with assortment of blackberries and strawberries!" icon_state = "blackbarry_strawberries_cake_vanilla_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bsvc - bonus_reagents = list("nutriment" = 14, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 14, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("blackbarry" = 2, "strawberries" = 2, "vanilla" = 2, "sweetness" = 2, "cake" = 3) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -265,7 +265,7 @@ desc = "A plain cake, filled with assortment of blackberries and strawberries!" icon_state = "blackbarry_strawberries_cake_coco_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/bscc - bonus_reagents = list("nutriment" = 14, "vitamin" = 4, "cocoa" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 14, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/consumable/coco = 5) tastes = list("blackberry" = 2, "strawberries" = 2, "chocolate" = 2, "sweetness" = 2,"cake" = 3) foodtype = GRAIN | DAIRY | FRUIT | SUGAR @@ -282,7 +282,7 @@ desc = "A cake made for angels and chaplains alike! Contains holy water." icon_state = "holy_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/holy_cake_slice - bonus_reagents = list("nutriment" = 1, "vitamin" = 3, "holy_water" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/water/holywater = 10) tastes = list("cake" = 5, "sweetness" = 1, "clouds" = 1) foodtype = GRAIN | DAIRY | SUGAR @@ -300,7 +300,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake icon_state = "pound_cake" slices_num = 7 //Its ment to feed the party slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/pound_cake_slice - bonus_reagents = list("nutriment" = 60) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 60) tastes = list("cake" = 5, "sweetness" = 1, "batter" = 1) foodtype = GRAIN | DAIRY | SUGAR | JUNKFOOD @@ -317,7 +317,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A cake that is made with electronic boards and leaks acid..." icon_state = "hardware_cake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/hardware_cake_slice - bonus_reagents = list("sacid" = 15, "oil" = 15) + bonus_reagents = list(/datum/reagent/toxin/acid = 15, /datum/reagent/oil = 15) tastes = list("acid" = 1, "metal" = 1, "regret" = 10) foodtype = GRAIN | GROSS @@ -334,7 +334,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A vanilla frosted cake." icon_state = "vanillacake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/vanilla_slice - bonus_reagents = list("sugar" = 15, "vanilla" = 15) + bonus_reagents = list(/datum/reagent/consumable/sugar = 15, /datum/reagent/consumable/vanilla = 15) tastes = list("cake" = 1, "sugar" = 1, "vanilla" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -351,7 +351,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A funny cake with a clown face on it." icon_state = "clowncake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/clown_slice - bonus_reagents = list("sugar" = 15, "laugher" = 15) + bonus_reagents = list(/datum/reagent/consumable/sugar = 15, /datum/reagent/consumable/laughter = 15) tastes = list("cake" = 1, "sugar" = 1, "joy" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -368,7 +368,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A peach filled cake." icon_state = "peachcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/peach_slice - bonus_reagents = list("sugar" = 5, "peachjuice" = 15) + bonus_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/peachjuice = 15) tastes = list("cake" = 1, "sugar" = 1, "peachjuice" = 10) foodtype = GRAIN | SUGAR | DAIRY @@ -385,7 +385,7 @@ obj/item/reagent_containers/food/snacks/store/cake/pound_cake desc = "A spaceman's trumpet frosted cake." icon_state = "trumpetcake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/trumpet - bonus_reagents = list("polypyr" = 15, "cream" = 5, "vitamin" = 5, "berryjuice" = 5) + bonus_reagents = list(/datum/reagent/medicine/polypyr = 15, /datum/reagent/consumable/cream = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/berryjuice = 5) filling_color = "#7A3D80" tastes = list("cake" = 4, "violets" = 2, "jam" = 2) foodtype = GRAIN | DAIRY | FRUIT | SUGAR diff --git a/code/modules/food_and_drinks/food/snacks_egg.dm b/code/modules/food_and_drinks/food/snacks_egg.dm index 0d51db04ce..183e64ff7e 100644 --- a/code/modules/food_and_drinks/food/snacks_egg.dm +++ b/code/modules/food_and_drinks/food/snacks_egg.dm @@ -5,8 +5,8 @@ name = "chocolate egg" desc = "Such, sweet, fattening food." icon_state = "chocolateegg" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2) filling_color = "#A0522D" tastes = list("chocolate" = 4, "sweetness" = 1) foodtype = JUNKFOOD | SUGAR @@ -15,7 +15,7 @@ name = "egg" desc = "An egg!" icon_state = "egg" - list_reagents = list("eggyolk" = 5) + list_reagents = list(/datum/reagent/consumable/eggyolk = 5) cooked_type = /obj/item/reagent_containers/food/snacks/boiledegg filling_color = "#F0E68C" foodtype = MEAT @@ -89,10 +89,10 @@ name = "fried egg" desc = "A fried egg, with a touch of salt and pepper." icon_state = "friedegg" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) bitesize = 1 filling_color = "#FFFFF0" - list_reagents = list("nutriment" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3) tastes = list("egg" = 4, "salt" = 1, "pepper" = 1) foodtype = MEAT | FRIED | BREAKFAST @@ -100,9 +100,9 @@ name = "boiled egg" desc = "A hard boiled egg." icon_state = "egg" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#FFFFF0" - list_reagents = list("nutriment" = 2, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("egg" = 1) foodtype = MEAT | BREAKFAST @@ -111,8 +111,8 @@ desc = "That's all you can say!" icon_state = "omelette" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) bitesize = 1 w_class = WEIGHT_CLASS_NORMAL tastes = list("egg" = 1, "cheese" = 1) @@ -129,7 +129,7 @@ "You take a piece of omelette with your fork.") var/datum/reagent/R = pick(reagents.reagent_list) - reagents.remove_reagent(R.id, 1) + reagents.remove_reagent(R.type, 1) F.forkload = R if(reagents.total_volume <= 0) qdel(src) @@ -140,9 +140,9 @@ name = "eggs benedict" desc = "There is only one egg on this, how rude." icon_state = "benedict" - bonus_reagents = list("vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) trash = /obj/item/trash/plate w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 6, "vitamin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("egg" = 1, "bacon" = 1, "bun" = 1) foodtype = MEAT | BREAKFAST diff --git a/code/modules/food_and_drinks/food/snacks_frozen.dm b/code/modules/food_and_drinks/food/snacks_frozen.dm index fb7bcf33b4..5cef5b6fb6 100644 --- a/code/modules/food_and_drinks/food/snacks_frozen.dm +++ b/code/modules/food_and_drinks/food/snacks_frozen.dm @@ -3,8 +3,8 @@ desc = "Portable Ice-cream in its own packaging." icon = 'icons/obj/food/food.dmi' icon_state = "icecreamsandwich" - bonus_reagents = list("nutriment" = 1, "ice" = 2) - list_reagents = list("nutriment" = 2, "ice" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/ice = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/ice = 2) tastes = list("ice cream" = 1) foodtype = GRAIN | DAIRY @@ -12,8 +12,8 @@ name = "sundae" desc = "A classic dessert." icon_state = "sundae" - bonus_reagents = list("nutriment" = 2, "vitamin" = 1) - list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "banana" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -22,8 +22,8 @@ name = "honkdae" desc = "The clown's favorite dessert." icon_state = "honkdae" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "banana" = 10, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 10, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "banana" = 1, "a bad joke" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -33,8 +33,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "A long glass dish filled with ice-cream, chocolate and a banana down the middle. A timeless classic by any standards." icon_state = "banana_split" - bonus_reagents = list("nutriment" = 5, "vitamin" = 3) - list_reagents = list("nutriment" = 3, "banana" = 10, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/banana = 10, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "banana" = 1, "charries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -44,8 +44,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "A glass filled with cream, soda and ice-cream with a cherry on top." icon_state = "cola_float" - bonus_reagents = list("nutriment" = 3, "vitamin" = 1) - list_reagents = list("nutriment" = 3, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "space coal" = 1, "cherries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -55,8 +55,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "Cherries mixed with ice-cream, known for its filling tastes" icon_state = "cherryshake" - bonus_reagents = list("nutriment" = 3, "vitamin" = 1) - list_reagents = list("nutriment" = 3, "vitamin" = 2, "cherryshake" = 15) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/cherryshake = 15) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "charries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -66,8 +66,8 @@ trash = /obj/item/reagent_containers/food/drinks/drinkingglass desc = "Cherries mixed with ice-cream, known for its filling tastes. This one is a exotic blue!" icon_state = "bluecherryshake" - bonus_reagents = list("nutriment" = 3, "vitamin" = 1) - list_reagents = list("nutriment" = 3, "vitamin" = 2, "bluecherryshake" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/bluecherryshake = 10) filling_color = "#FFFACD" tastes = list("ice cream" = 1, "blue cherries" = 1) foodtype = FRUIT | DAIRY | SUGAR @@ -76,8 +76,8 @@ name = "space freezy" desc = "The best icecream in space." icon_state = "spacefreezy" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "bluecherryjelly" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/bluecherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#87CEFA" tastes = list("blue cherries" = 2, "ice cream" = 2) foodtype = FRUIT | DAIRY @@ -91,8 +91,8 @@ icon = 'icons/obj/food/snowcones.dmi' icon_state = "flavorless_sc" trash = /obj/item/reagent_containers/food/drinks/sillycup //We dont eat paper cups - bonus_reagents = list("water" = 10) //Base line will allways give water - list_reagents = list("water" = 1) // We dont get food for water/juices + bonus_reagents = list(/datum/reagent/water = 10) //Base line will allways give water + list_reagents = list(/datum/reagent/water = 1) // We dont get food for water/juices filling_color = "#FFFFFF" //Ice is white tastes = list("ice" = 1, "water" = 1) foodtype = SUGAR //We use SUGAR as a base line to act in as junkfood, other wise we use fruit @@ -101,7 +101,7 @@ name = "lime snowcone" desc = "Lime syrup drizzled over a snowball in a paper cup." icon_state = "lime_sc" - list_reagents = list("nutriment" = 1, "limejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/limejuice = 5) tastes = list("ice" = 1, "water" = 1, "limes" = 5) foodtype = FRUIT @@ -109,7 +109,7 @@ name = "lemon snowcone" desc = "Lemon syrup drizzled over a snowball in a paper cup." icon_state = "lemon_sc" - list_reagents = list("nutriment" = 1, "lemonjuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/lemonjuice = 5) tastes = list("ice" = 1, "water" = 1, "lemons" = 5) foodtype = FRUIT @@ -117,7 +117,7 @@ name = "apple snowcone" desc = "Apple syrup drizzled over a snowball in a paper cup." icon_state = "amber_sc" - list_reagents = list("nutriment" = 1, "applejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/applejuice = 5) tastes = list("ice" = 1, "water" = 1, "apples" = 5) foodtype = FRUIT @@ -125,7 +125,7 @@ name = "grape snowcone" desc = "Grape syrup drizzled over a snowball in a paper cup." icon_state = "grape_sc" - list_reagents = list("nutriment" = 1, "grapejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/grapejuice = 5) tastes = list("ice" = 1, "water" = 1, "grape" = 5) foodtype = FRUIT @@ -133,7 +133,7 @@ name = "orange snowcone" desc = "Orange syrup drizzled over a snowball in a paper cup." icon_state = "orange_sc" - list_reagents = list("nutriment" = 1, "orangejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/orangejuice = 5) tastes = list("ice" = 1, "water" = 1, "orange" = 5) foodtype = FRUIT @@ -141,7 +141,7 @@ name = "bluecherry snowcone" desc = "Bluecherry syrup drizzled over a snowball in a paper cup, how rare!" icon_state = "blue_sc" - list_reagents = list("nutriment" = 1, "bluecherryjelly" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/bluecherryjelly = 5) tastes = list("ice" = 1, "water" = 1, "blue" = 5, "cherries" = 5) foodtype = FRUIT @@ -149,7 +149,7 @@ name = "cherry snowcone" desc = "Cherry syrup drizzled over a snowball in a paper cup." icon_state = "red_sc" - list_reagents = list("nutriment" = 1, "cherryjelly" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cherryjelly = 5) tastes = list("ice" = 1, "water" = 1, "red" = 5, "cherries" = 5) foodtype = FRUIT @@ -157,7 +157,7 @@ name = "kiwi snowcone" desc = "A kiwi snowball in a paper cup." icon_state = "kiwi_sc" - list_reagents = list("nutriment" = 3, "vitamin" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("ice" = 1, "space" = 3, "kiwi" = 5) foodtype = FRUIT @@ -165,7 +165,7 @@ name = "peach snowcone" desc = "A peach snowball in a paper cup." icon_state = "peach_sc" - list_reagents = list("nutriment" = 1, "peachjuice" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/peachjuice = 10) tastes = list("ice" = 1, "water" = 1, " peach" = 5) foodtype = FRUIT @@ -173,7 +173,7 @@ name = "strawberry snowcone" desc = "A strawberry snowball in a paper cup." icon_state = "blue_sc" - list_reagents = list("nutriment" = 1, "berryjuice" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/berryjuice = 10) tastes = list("ice" = 1, "water" = 1, " strawberry" = 5) foodtype = FRUIT @@ -181,7 +181,7 @@ name = "berry snowcone" desc = "Berry syrup drizzled over a snowball in a paper cup." icon_state = "berry_sc" - list_reagents = list("nutriment" = 1, "berryjuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/berryjuice = 5) tastes = list("ice" = 1, "water" = 1, "berries" = 5) foodtype = FRUIT @@ -189,7 +189,7 @@ name = "fruit salad snowcone" desc = "A delightful mix of citrus syrups drizzled over a snowball in a paper cup." icon_state = "fruitsalad_sc" - list_reagents = list("nutriment" = 1, "lemonjuice" = 5, "limejuice" = 5, "orangejuice" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/lemonjuice = 5, /datum/reagent/consumable/limejuice = 5, /datum/reagent/consumable/orangejuice = 5) tastes = list("ice" = 1, "water" = 1, "oranges" = 5, "limes" = 5, "lemons" = 5, "citrus" = 5, "salad" = 5) foodtype = FRUIT @@ -197,7 +197,7 @@ name = "pineapple snowcone" desc = "Pineapple syrup drizzled over a snowball in a paper cup." icon_state = "pineapple_sc" - list_reagents = list("nutriment" = 1, "water" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/water = 10) tastes = list("ice" = 1, "water" = 1, "pineapples" = 5) foodtype = PINEAPPLE //Pineapple to allow all that like pineapple to enjoy @@ -205,47 +205,47 @@ name = "mime snowcone" desc = "..." icon_state = "mime_sc" - list_reagents = list("nutriment" = 1, "nothing" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nothing = 5) tastes = list("ice" = 1, "water" = 1, "nothing" = 5) /obj/item/reagent_containers/food/snacks/snowcones/clown name = "clown snowcone" desc = "Laughter drizzled over a snowball in a paper cup." icon_state = "clown_sc" - list_reagents = list("nutriment" = 1, "laughter" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/laughter = 5) tastes = list("ice" = 1, "water" = 1, "jokes" = 5, "brainfreeze" = 5, "joy" = 5) /obj/item/reagent_containers/food/snacks/snowcones/soda name = "space cola snowcone" desc = "Space Cola drizzled over a snowball in a paper cup." icon_state = "soda_sc" - list_reagents = list("nutriment" = 1, "cola" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/space_cola = 5) tastes = list("ice" = 1, "water" = 1, "cola" = 5) /obj/item/reagent_containers/food/snacks/snowcones/spacemountainwind name = "Space Mountain Wind snowcone" desc = "Space Mountain Wind drizzled over a snowball in a paper cup." icon_state = "kiwi_sc" - list_reagents = list("nutriment" = 1, "spacemountainwind" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/spacemountainwind = 5) tastes = list("ice" = 1, "water" = 1, "mountain wind" = 5) /obj/item/reagent_containers/food/snacks/snowcones/pwrgame name = "pwrgame snowcone" desc = "Pwrgame soda drizzled over a snowball in a paper cup." icon_state = "pwrgame_sc" - list_reagents = list("nutriment" = 1, "pwr_game" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/pwr_game = 5) tastes = list("ice" = 1, "water" = 1, "valid" = 5, "salt" = 5, "wats" = 5) /obj/item/reagent_containers/food/snacks/snowcones/honey name = "honey snowcone" desc = "Honey drizzled over a snowball in a paper cup." icon_state = "amber_sc" - list_reagents = list("nutriment" = 1, "honey" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/honey = 5) tastes = list("ice" = 1, "water" = 1, "flowers" = 5, "sweetness" = 5, "wax" = 1) /obj/item/reagent_containers/food/snacks/snowcones/rainbow name = "rainbow snowcone" desc = "A very colorful snowball in a paper cup." icon_state = "rainbow_sc" - list_reagents = list("nutriment" = 5, "laughter" = 25) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/laughter = 25) tastes = list("ice" = 1, "water" = 1, "sunlight" = 5, "light" = 5, "slime" = 5, "paint" = 3, "clouds" = 3) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index cf499c9d15..5103418e6b 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -8,10 +8,10 @@ desc = "A grifftastic sandwich that burns your tongue and then leaves it numb!" icon_state = "cubancarp" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) bitesize = 3 filling_color = "#CD853F" - list_reagents = list("nutriment" = 6, "capsaicin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 1) tastes = list("fish" = 4, "batter" = 1, "hot peppers" = 1) foodtype = MEAT @@ -19,7 +19,7 @@ name = "carp fillet" desc = "A fillet of spess carp meat." icon_state = "fishfillet" - list_reagents = list("nutriment" = 3, "carpotoxin" = 2, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/toxin/carpotoxin = 2, /datum/reagent/consumable/nutriment/vitamin = 2) bitesize = 6 filling_color = "#FA8072" tastes = list("fish" = 1) @@ -37,8 +37,8 @@ name = "fish fingers" desc = "A finger of fish." icon_state = "fishfingers" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) bitesize = 1 filling_color = "#CD853F" tastes = list("fish" = 1, "breadcrumbs" = 1) @@ -48,8 +48,8 @@ name = "fish and chips" desc = "I do say so myself chap." icon_state = "fishandchips" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) filling_color = "#FA8072" tastes = list("fish" = 1, "chips" = 1) foodtype = MEAT | VEGETABLES | FRIED @@ -59,8 +59,8 @@ desc = "A small cylindrical kudzu skin, filled with rice and fish." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_basic" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) bitesize = 10 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 2, "salt" = 1) @@ -71,8 +71,8 @@ desc = "A peace of carp lightly placed on some rice." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_adv" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) bitesize = 10 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 2, "rice" = 2, "salt" = 1) @@ -83,8 +83,8 @@ desc = "A well prepared peace of the best of the carp fillet placed on rice. Looks fancy and fresh!" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_pro" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) bitesize = 10 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 3, "rice" = 2, "salt" = 1) @@ -97,7 +97,7 @@ name = "tofu" desc = "We all love tofu." icon_state = "tofu" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) filling_color = "#F0E68C" tastes = list("tofu" = 1) foodtype = VEGETABLES @@ -106,7 +106,7 @@ name = "spider leg" desc = "A still twitching leg of a giant spider... you don't really want to eat this, do you?" icon_state = "spiderleg" - list_reagents = list("nutriment" = 2, "toxin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin = 2) cooked_type = /obj/item/reagent_containers/food/snacks/boiledspiderleg filling_color = "#000000" tastes = list("cobwebs" = 1) @@ -117,8 +117,8 @@ desc = "Now you can feel like a real tourist vacationing in Ireland." icon_state = "cornedbeef" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) tastes = list("meat" = 1, "cabbage" = 1) foodtype = MEAT | VEGETABLES @@ -127,8 +127,8 @@ desc = "Because eating bear wasn't manly enough." icon_state = "bearsteak" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 2, "vitamin" = 6) - list_reagents = list("nutriment" = 2, "vitamin" = 5, "manlydorf" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/ethanol/manly_dorf = 5) tastes = list("meat" = 1, "salmon" = 1) foodtype = MEAT | ALCOHOL @@ -136,7 +136,7 @@ name = "faggot" desc = "A great meal all round. Not a cord of wood." icon_state = "faggot" - list_reagents = list("nutriment" = 4, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#800000" tastes = list("meat" = 1) foodtype = MEAT @@ -146,8 +146,8 @@ desc = "A piece of mixed, long meat." icon_state = "sausage" filling_color = "#CD5C5C" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 6, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("meat" = 1) foodtype = MEAT | BREAKFAST var/roasted = FALSE @@ -160,35 +160,35 @@ trash = /obj/item/stack/rods icon_state = "kebab" w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 8) + list_reagents = list(/datum/reagent/consumable/nutriment = 8) tastes = list("meat" = 3, "metal" = 1) foodtype = MEAT /obj/item/reagent_containers/food/snacks/kebab/human name = "human-kebab" desc = "A human meat, on a stick." - bonus_reagents = list("nutriment" = 1, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("tender meat" = 3, "metal" = 1) foodtype = MEAT | GROSS /obj/item/reagent_containers/food/snacks/kebab/monkey name = "meat-kebab" desc = "Delicious meat, on a stick." - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("meat" = 3, "metal" = 1) foodtype = MEAT /obj/item/reagent_containers/food/snacks/kebab/tofu name = "tofu-kebab" desc = "Vegan meat, on a stick." - bonus_reagents = list("nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) tastes = list("tofu" = 3, "metal" = 1) foodtype = VEGETABLES /obj/item/reagent_containers/food/snacks/kebab/tail name = "lizard-tail kebab" desc = "Severed lizard tail on a stick." - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("meat" = 8, "metal" = 4, "scales" = 1) foodtype = MEAT @@ -196,7 +196,7 @@ name = "raw khinkali" desc = "One hundred khinkalis? Do I look like a pig?" icon_state = "khinkali" - list_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) cooked_type = /obj/item/reagent_containers/food/snacks/khinkali tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) foodtype = MEAT @@ -205,7 +205,7 @@ name = "khinkali" desc = "One hundred khinkalis? Do I look like a pig?" icon_state = "khinkali" - list_reagents = list("nutriment" = 4, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) bitesize = 3 filling_color = "#F0F0F0" tastes = list("meat" = 1, "onions" = 1, "garlic" = 1) @@ -216,7 +216,7 @@ desc = "Just add water!" icon_state = "monkeycube" bitesize = 12 - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) filling_color = "#CD853F" tastes = list("the jungle" = 1, "bananas" = 1) foodtype = MEAT | SUGAR @@ -244,10 +244,10 @@ name = "enchiladas" desc = "Viva La Mexico!" icon_state = "enchiladas" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) bitesize = 4 filling_color = "#FFA07A" - list_reagents = list("nutriment" = 8, "capsaicin" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/capsaicin = 6) tastes = list("hot peppers" = 1, "meat" = 3, "cheese" = 1, "sour cream" = 1) foodtype = MEAT @@ -256,8 +256,8 @@ desc = "Even non-vegetarians will LOVE this!" icon_state = "stewedsoymeat" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1) - list_reagents = list("nutriment" = 8) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 8) filling_color = "#D2691E" tastes = list("soy" = 1, "vegetables" = 1) foodtype = VEGETABLES @@ -271,8 +271,8 @@ desc = "A giant spider's leg that's still twitching after being cooked. Gross!" icon_state = "spiderlegcooked" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "capsaicin" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 3, "capsaicin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/capsaicin = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/capsaicin = 2) filling_color = "#000000" tastes = list("hot peppers" = 1, "cobwebs" = 1) foodtype = MEAT @@ -282,8 +282,8 @@ desc = "Would you eat them on a train? Would you eat them on a plane? Would you eat them on a state of the art corporate deathtrap floating through space?" icon_state = "spidereggsham" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) bitesize = 4 filling_color = "#7FFF00" tastes = list("meat" = 1, "the colour green" = 1) @@ -293,8 +293,8 @@ name = "carp sashimi" desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." icon_state = "sashimi" - bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4) - list_reagents = list("nutriment" = 6, "capsaicin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/capsaicin = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5) filling_color = "#FA8072" tastes = list("fish" = 1, "hot peppers" = 1) foodtype = MEAT | TOXIC @@ -302,8 +302,8 @@ /obj/item/reagent_containers/food/snacks/nugget name = "chicken nugget" filling_color = "#B22222" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("\"chicken\"" = 1) foodtype = MEAT @@ -317,8 +317,8 @@ name = "pig in a blanket" desc = "A tiny sausage wrapped in a flakey, buttery roll. Free this pig from its blanket prison by eating it." icon_state = "pigblanket" - list_reagents = list("nutriment" = 6, "vitamin" = 1) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#800000" tastes = list("meat" = 1, "butter" = 1) @@ -328,14 +328,14 @@ icon_state = "dorndog" trash = /obj/item/trash/plate/alt tastes = list("hotdog" = 2, "mustard and ketchup" = 1, "fryed bread" = 1) - bonus_reagents = list("nutriment" = 6, "vitamin" = 2, "mustard" = 5, "ketchup" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/mustard = 5, /datum/reagent/consumable/ketchup = 5) /obj/item/reagent_containers/food/snacks/kebab/rat name = "rat-kebab" desc = "Not so delicious rat meat, on a stick." icon_state = "ratkebab" w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 6, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("rat meat" = 1, "metal" = 1) foodtype = MEAT | GROSS @@ -343,20 +343,20 @@ name = "double rat-kebab" icon_state = "doubleratkebab" tastes = list("rat meat" = 2, "metal" = 1) - bonus_reagents = list("nutriment" = 6, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) /obj/item/reagent_containers/food/snacks/kebab/fiesta name = "fiesta skewer" icon_state = "fiestaskewer" tastes = list("tex-mex" = 3, "cumin" = 2) - bonus_reagents = list("vitamin" = 5, "capsaicin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/capsaicin = 3) /obj/item/reagent_containers/food/snacks/bbqribs name = "bbq ribs" desc = "BBQ ribs, slathered in a healthy coating of BBQ sauce. The least vegan thing to ever exist." icon_state = "ribs" w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 8, "vitamin" = 2, "bbqsauce" = 5) - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/bbqsauce = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("meat" = 3, "smokey sauce" = 1) foodtype = MEAT \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index de22537063..a85623cabd 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -7,7 +7,7 @@ icon_state = "cheesewheel" slice_path = /obj/item/reagent_containers/food/snacks/cheesewedge slices_num = 5 - list_reagents = list("nutriment" = 15, "vitamin" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 15, /datum/reagent/consumable/nutriment/vitamin = 5) w_class = WEIGHT_CLASS_NORMAL tastes = list("cheese" = 1) foodtype = DAIRY @@ -17,7 +17,7 @@ desc = "A wedge of delicious Cheddar. The cheese wheel it was cut from can't have gone far." icon_state = "cheesewedge" filling_color = "#FFD700" - list_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("cheese" = 1) foodtype = DAIRY @@ -28,13 +28,13 @@ filling_color = "#FF1493" tastes = list("watermelon" = 1) foodtype = FRUIT - juice_results = list("watermelonjuice" = 5) + juice_results = list(/datum/reagent/consumable/watermelonjuice = 5) /obj/item/reagent_containers/food/snacks/candy_corn name = "candy corn" desc = "It's a handful of candy corn. Can be stored in a detective's hat." icon_state = "candy_corn" - list_reagents = list("nutriment" = 4, "sugar" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2) filling_color = "#FF8C00" tastes = list("candy corn" = 1) foodtype = JUNKFOOD | SUGAR @@ -43,7 +43,7 @@ name = "chocolate bar" desc = "Such, sweet, fattening food." icon_state = "chocolatebar" - list_reagents = list("nutriment" = 2, "sugar" = 2, "cocoa" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR @@ -53,7 +53,7 @@ name = "huge mushroom slice" desc = "A slice from a huge mushroom." icon_state = "hugemushroomslice" - list_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("mushroom" = 1) foodtype = VEGETABLES @@ -62,7 +62,7 @@ desc = "Now let's find some cinema." icon_state = "popcorn" trash = /obj/item/trash/popcorn - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 filling_color = "#FFEFD5" tastes = list("popcorn" = 3, "butter" = 1) @@ -76,8 +76,8 @@ name = "loaded baked potato" desc = "Totally baked." icon_state = "loadedbakedpotato" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) filling_color = "#D2B48C" tastes = list("potato" = 1) foodtype = VEGETABLES | DAIRY @@ -87,7 +87,7 @@ desc = "AKA: French Fries, Freedom Fries, etc." icon_state = "fries" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) filling_color = "#FFD700" tastes = list("fries" = 3, "salt" = 1) foodtype = VEGETABLES | GRAIN | FRIED @@ -97,7 +97,7 @@ name = "tator tot" desc = "A large fried potato nugget that may or may not try to valid you." icon_state = "tatortot" - list_reagents = list("nutriment" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) filling_color = "FFD700" tastes = list("potato" = 3, "valids" = 1) foodtype = FRIED | VEGETABLES @@ -108,7 +108,7 @@ desc = "Dope from a soy." icon_state = "soydope" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) filling_color = "#DEB887" tastes = list("soy" = 1) foodtype = VEGETABLES @@ -119,8 +119,8 @@ desc = "Fries. Covered in cheese. Duh." icon_state = "cheesyfries" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) filling_color = "#FFD700" tastes = list("fries" = 3, "cheese" = 1) foodtype = VEGETABLES | GRAIN @@ -129,7 +129,7 @@ name = "burned mess" desc = "Someone should be demoted from cook for this." icon_state = "badrecipe" - list_reagents = list("bad_food" = 30) + list_reagents = list(/datum/reagent/toxin/bad_food = 30) filling_color = "#8B4513" foodtype = GROSS dunkable = TRUE @@ -139,7 +139,7 @@ desc = "Tasty fries from fresh Carrots." icon_state = "carrotfries" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 3, "oculine" = 3, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/medicine/oculine = 3, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFA500" tastes = list("carrots" = 3, "salt" = 1) foodtype = VEGETABLES @@ -149,8 +149,8 @@ desc = "An apple coated in sugary sweetness." icon_state = "candiedapple" bitesize = 3 - bonus_reagents = list("nutriment" = 2, "sugar" = 3) - list_reagents = list("nutriment" = 3, "sugar" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 2) filling_color = "#FF4500" tastes = list("apple" = 2, "sweetness" = 2) foodtype = JUNKFOOD | FRUIT | SUGAR @@ -161,7 +161,7 @@ icon_state = "mint" bitesize = 1 trash = /obj/item/trash/plate - list_reagents = list("minttoxin" = 2) + list_reagents = list(/datum/reagent/toxin/minttoxin = 2) filling_color = "#800000" foodtype = TOXIC | SUGAR @@ -169,8 +169,8 @@ name = "egg wrap" desc = "The precursor to Pigs in a Blanket." icon_state = "eggwrap" - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) filling_color = "#F0E68C" tastes = list("egg" = 1) foodtype = MEAT | GRAIN @@ -179,8 +179,8 @@ name = "tin of beans" desc = "Musical fruit in a slightly less musical container." icon_state = "beans" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 10) filling_color = "#B22222" tastes = list("beans" = 1) foodtype = VEGETABLES @@ -189,7 +189,7 @@ name = "spider eggs" desc = "A cluster of juicy spider eggs. A great side dish for when you care not for your health." icon_state = "spidereggs" - list_reagents = list("nutriment" = 2, "toxin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin = 2) filling_color = "#008000" tastes = list("cobwebs" = 1) foodtype = MEAT | TOXIC @@ -198,7 +198,7 @@ name = "spiderling" desc = "It's slightly twitching in your hand. Ew..." icon_state = "spiderling" - list_reagents = list("nutriment" = 1, "toxin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 4) filling_color = "#00800" tastes = list("cobwebs" = 1, "guts" = 2) foodtype = MEAT | TOXIC @@ -207,7 +207,7 @@ name = "spider lollipop" desc = "Still gross, but at least it has a mountain of sugar on it." icon_state = "spiderlollipop" - list_reagents = list("nutriment" = 1, "toxin" = 1, "iron" = 10, "sugar" = 5, "omnizine" = 2) //lollipop, but vitamins = toxins + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //lollipop, but vitamins = toxins filling_color = "#00800" tastes = list("cobwebs" = 1, "sugar" = 2) foodtype = JUNKFOOD | SUGAR @@ -217,7 +217,7 @@ desc = "Spider eggs wrapped in a thin salted Kudzu pod" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_egg" - list_reagents = list("nutriment" = 6, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FF3333" // R225 G051 B051 tastes = list("seaweed" = 1, "cobwebs" = 1, "salty" = 2) foodtype = MEAT | VEGETABLES @@ -226,8 +226,8 @@ name = "chocolate coin" desc = "A completely edible but nonflippable festive coin." icon_state = "chococoin" - bonus_reagents = list("nutriment" = 1, "sugar" = 1) - list_reagents = list("nutriment" = 3, "cocoa" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/coco = 1) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR @@ -236,8 +236,8 @@ name = "fudge dice" desc = "A little cube of chocolate that tends to have a less intense taste if you eat too many at once." icon_state = "chocodice" - bonus_reagents = list("nutriment" = 1, "sugar" = 1) - list_reagents = list("nutriment" = 3, "cocoa" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/coco = 1) filling_color = "#A0522D" trash = /obj/item/dice/fudge tastes = list("fudge" = 1) @@ -247,8 +247,8 @@ name = "chocolate orange" desc = "A festive chocolate orange." icon_state = "chocoorange" - bonus_reagents = list("nutriment" = 1, "sugar" = 1) - list_reagents = list("nutriment" = 3, "sugar" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 1) filling_color = "#A0522D" tastes = list("chocolate" = 3, "oranges" = 1) foodtype = JUNKFOOD | SUGAR @@ -258,8 +258,8 @@ desc = "The only good recipe for eggplant." icon_state = "eggplantparm" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 6, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#BA55D3" tastes = list("eggplant" = 3, "cheese" = 1) foodtype = VEGETABLES | DAIRY @@ -269,7 +269,7 @@ desc = "The base for all your burritos." icon = 'icons/obj/food/food_ingredients.dmi' icon_state = "tortilla" - list_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#FFEFD5" tastes = list("tortilla" = 1) foodtype = GRAIN @@ -278,8 +278,8 @@ name = "burrito" desc = "Tortilla wrapped goodness." icon_state = "burrito" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 4, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#FFEFD5" tastes = list("torilla" = 2, "meat" = 3) foodtype = GRAIN | MEAT @@ -288,8 +288,8 @@ name = "cheesy burrito" desc = "It's a burrito filled with cheese." icon_state = "cheesyburrito" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 4, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFD800" tastes = list("torilla" = 2, "meat" = 3, "cheese" = 1) foodtype = GRAIN | MEAT | DAIRY @@ -298,8 +298,8 @@ name = "carne asada burrito" desc = "The best burrito for meat lovers." icon_state = "carneburrito" - bonus_reagents = list("nutriment" = 2, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#A0522D" tastes = list("torilla" = 2, "meat" = 4) foodtype = GRAIN | MEAT @@ -308,8 +308,8 @@ name = "fuego plasma burrito" desc = "A super spicy burrito." icon_state = "fuegoburrito" - bonus_reagents = list("nutriment" = 2, "vitamin" = 3) - list_reagents = list("nutriment" = 4, "capsaicin" = 5, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/capsaicin = 5, /datum/reagent/consumable/nutriment/vitamin = 3) filling_color = "#FF2000" tastes = list("torilla" = 2, "meat" = 3, "hot peppers" = 1) foodtype = GRAIN | MEAT @@ -319,7 +319,7 @@ desc = "Made with roasted sweet potatoes!" icon_state = "yakiimo" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 5, "vitamin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#8B1105" tastes = list("sweet potato" = 1) foodtype = GRAIN | VEGETABLES | SUGAR @@ -329,7 +329,7 @@ desc = "Sweet and crunchy." icon_state = "roastparsnip" trash = /obj/item/trash/plate - list_reagents = list("nutriment" = 3, "vitamin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#FF5500" tastes = list("parsnip" = 1) foodtype = VEGETABLES @@ -338,8 +338,8 @@ name = "melon fruit bowl" desc = "For people who wants edible fruit bowls." icon_state = "melonfruitbowl" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#FF5500" w_class = WEIGHT_CLASS_NORMAL tastes = list("melon" = 1) @@ -349,8 +349,8 @@ name = "nachos" desc = "Chips from Space Mexico." icon_state = "nachos" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 6, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#F4A460" tastes = list("nachos" = 1) foodtype = VEGETABLES | FRIED @@ -359,8 +359,8 @@ name = "cheesy nachos" desc = "The delicious combination of nachos and melting cheese." icon_state = "cheesynachos" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 3) filling_color = "#FFD700" tastes = list("nachos" = 2, "cheese" = 1) foodtype = VEGETABLES | FRIED | DAIRY @@ -369,8 +369,8 @@ name = "Cuban nachos" desc = "That's some dangerously spicy nachos." icon_state = "cubannachos" - bonus_reagents = list("nutriment" = 2, "vitamin" = 3) - list_reagents = list("nutriment" = 7, "capsaicin" = 8, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/capsaicin = 8, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#DC143C" tastes = list("nachos" = 2, "hot pepper" = 1) foodtype = VEGETABLES | FRIED | DAIRY @@ -379,8 +379,8 @@ name = "melon keg" desc = "Who knew vodka was a fruit?" icon_state = "melonkeg" - bonus_reagents = list("nutriment" = 3, "vitamin" = 3) - list_reagents = list("nutriment" = 9, "vodka" = 15, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 9, /datum/reagent/consumable/ethanol/vodka = 15, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#FFD700" volume = 80 bitesize = 5 @@ -391,8 +391,8 @@ name = "honey nut bar" desc = "Oats and nuts compressed together into a bar, held together with a honey glaze." icon_state = "honeybar" - bonus_reagents = list("nutriment" = 2, "honey" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 5, "honey" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/honey = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/honey = 5) filling_color = "#F2CE91" tastes = list("oats" = 3, "nuts" = 2, "honey" = 1) foodtype = FRUIT | SUGAR @@ -401,8 +401,8 @@ name = "stuffed legion" desc = "The former skull of a damned human, filled with goliath meat. It has a decorative lava pool made of ketchup and hotsauce." icon_state = "stuffed_legion" - bonus_reagents = list("vitamin" = 3, "capsaicin" = 1, "tricordrazine" = 5) - list_reagents = list("nutriment" = 5, "vitamin" = 5, "capsaicin" = 2, "tricordrazine" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/consumable/capsaicin = 1, /datum/reagent/medicine/tricordrazine = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/capsaicin = 2, /datum/reagent/medicine/tricordrazine = 10) tastes = list("death" = 2, "rock" = 1, "meat" = 1, "hot peppers" = 1) foodtype = MEAT @@ -410,8 +410,8 @@ name = "Powercrepe" desc = "With great power, comes great crepes. It looks like a pancake filled with jelly but packs quite a punch." icon_state = "powercrepe" - bonus_reagents = list("nutriment" = 5, "vitamin" = 3, "iron" = 10) - list_reagents = list("nutriment" = 10, "vitamin" = 5, "cherryjelly" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/iron = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/cherryjelly = 5) force = 20 throwforce = 10 block_chance = 50 @@ -426,7 +426,7 @@ desc = "A delicious lollipop. Makes for a great Valentine's present." icon = 'icons/obj/lollipop.dmi' icon_state = "lollipop_stick" - list_reagents = list("nutriment" = 1, "vitamin" = 1, "iron" = 10, "sugar" = 5, "omnizine" = 2) //Honk + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //Honk var/mutable_appearance/head var/headcolor = rgb(0, 0, 0) tastes = list("candy" = 1) @@ -468,7 +468,7 @@ desc = "A colorful, sugary gumball." icon = 'icons/obj/lollipop.dmi' icon_state = "gumball" - list_reagents = list("sugar" = 5, "bicaridine" = 2, "kelotane" = 2) //Kek + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/bicaridine = 2, /datum/reagent/medicine/kelotane = 2) //Kek tastes = list("candy") foodtype = JUNKFOOD @@ -495,8 +495,8 @@ name = "taco" desc = "A traditional taco with meat, cheese, and lettuce." icon_state = "taco" - bonus_reagents = list("nutriment" = 3, "vitamin" = 2) - list_reagents = list("nutriment" = 4, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "F0D830" tastes = list("taco" = 4, "meat" = 2, "cheese" = 2, "lettuce" = 1) foodtype = MEAT | DAIRY | GRAIN | VEGETABLES @@ -504,8 +504,8 @@ /obj/item/reagent_containers/food/snacks/taco/plain desc = "A traditional taco with meat and cheese, minus the rabbit food." icon_state = "taco_plain" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 3, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("taco" = 4, "meat" = 2, "cheese" = 2) foodtype = MEAT | DAIRY | GRAIN @@ -513,8 +513,8 @@ name = "Bran Requests Cereal" desc = "A dry cereal that satiates your requests for bran. Tastes uniquely like raisins and salt." icon_state = "bran_requests" - list_reagents = list("nutriment" = 3, "vitamin" = 2, "sodiumchloride" = 5) - bonus_reagents = list("sodiumchloride" = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/sodiumchloride = 5) + bonus_reagents = list(/datum/reagent/consumable/sodiumchloride = 10) tastes = list("bran" = 4, "raisins" = 3, "salt" = 1) foodtype = GRAIN | FRUIT @@ -522,7 +522,7 @@ name = "stick of butter" desc = "A stick of delicious, golden, fatty goodness." icon_state = "butter" - list_reagents = list("nutriment" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) filling_color = "#FFD700" tastes = list("butter" = 1) foodtype = DAIRY @@ -531,7 +531,7 @@ name = "onion rings" desc = "Onion slices coated in batter." icon_state = "onionrings" - list_reagents = list("nutriment" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3) filling_color = "#C0C9A0" gender = PLURAL tastes = list("batter" = 3, "onion" = 1) @@ -549,7 +549,7 @@ name = "chocolate" desc = "A tiny and sweet chocolate. Has a 'strawberry' filling!" icon_state = "tiny_chocolate" - list_reagents = list("nutriment" = 1, "sugar" = 1, "cocoa" = 1, "aphro" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/coco = 1, /datum/reagent/drug/aphrodisiac = 1) filling_color = "#A0522D" tastes = list("chocolate" = 1) foodtype = JUNKFOOD | SUGAR @@ -559,7 +559,7 @@ desc = "A ball of rice with some light salt and a wrap of Kudzu skin." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "riceball" - list_reagents = list("nutriment" = 6, "sodiumchloride" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/sodiumchloride = 2) tastes = list("rice" = 3, "salt" = 1) foodtype = GRAIN @@ -567,7 +567,7 @@ name = "Canned Peaches" desc = "Just a nice can of ripe peaches swimming in their own juices." icon_state = "peachcan" - list_reagents = list("peachjuice" = 20, "sugar" = 8, "nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/peachjuice = 20, /datum/reagent/consumable/sugar = 8, /datum/reagent/consumable/nutriment = 2) filling_color = "#ffdf26" w_class = WEIGHT_CLASS_NORMAL tastes = list("peaches" = 7, "tin" = 1) @@ -583,7 +583,7 @@ name = "Chocolate dipped strawberries" desc = "A strawberry dipped in a bit of chocolate." icon_state = "chocolatestrawberry" - list_reagents = list("sugar" = 5, "nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/nutriment = 2) filling_color = "#ffdf26" tastes = list("strawberries" = 5, "chocolate" = 3) foodtype = FRUIT | SUGAR @@ -593,7 +593,7 @@ name = "Chocolate dipped banana" desc = "A banana dipped in a bit of chocolate and held on a stick." icon_state = "banana_coco" - list_reagents = list("sugar" = 5, "nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#ffdf26" tastes = list("banana" = 5, "chocolate" = 3) foodtype = FRUIT | SUGAR @@ -605,7 +605,7 @@ icon_state = "boritos" trash = /obj/item/trash/boritos bitesize = 2 - list_reagents = list("nutriment" = 3, "cooking_oil" = 2, "sodiumchloride" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/consumable/sodiumchloride = 3) filling_color = "#ECA735" tastes = list("fried corn" = 1) foodtype = JUNKFOOD | FRIED diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index de5d577193..516c8b2c31 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -8,8 +8,8 @@ icon = 'icons/obj/food/donut.dmi' icon_state = "donut" bitesize = 5 - bonus_reagents = list("sugar" = 1) - list_reagents = list("nutriment" = 3, "sprinkles" = 1, "sugar" = 2) + bonus_reagents = list(/datum/reagent/consumable/sugar = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/sugar = 2) filling_color = "#D2691E" tastes = list("donut" = 1) foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR | BREAKFAST @@ -30,7 +30,7 @@ is_decorated = TRUE name = "[decorated_adjective] [name]" icon_state = decorated_icon //delish~! - reagents.add_reagent("sprinkles", 1) + reagents.add_reagent(/datum/reagent/consumable/sprinkles, 1) filling_color = "#FF69B4" return TRUE @@ -58,15 +58,18 @@ /obj/item/reagent_containers/food/snacks/donut/chaos/Initialize() . = ..() - extra_reagent = pick("nutriment", "capsaicin", "frostoil", "krokodil", "plasma", "cocoa", "slimejelly", "banana", "berryjuice", "omnizine") + extra_reagent = pick(/datum/reagent/consumable/nutriment, /datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, + /datum/reagent/drug/krokodil, /datum/reagent/toxin/plasma, /datum/reagent/consumable/coco, + /datum/reagent/toxin/slimejelly, /datum/reagent/consumable/banana, /datum/reagent/consumable/berryjuice, + /datum/reagent/medicine/omnizine) reagents.add_reagent(extra_reagent, 3) /obj/item/reagent_containers/food/snacks/donut/meat name = "Meat Donut" desc = "Tastes as gross as it looks." icon_state = "donut_meat" - bonus_reagents = list("ketchup" = 1) - list_reagents = list("nutriment" = 3, "ketchup" = 2) + bonus_reagents = list(/datum/reagent/consumable/ketchup = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/ketchup = 2) tastes = list("meat" = 1) foodtype = JUNKFOOD | MEAT | GROSS | FRIED | BREAKFAST @@ -74,7 +77,7 @@ name = "pink donut" desc = "Goes great with a soy latte." icon_state = "donut_pink" - bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1) //Extra sprinkles to reward frosting + bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, /datum/reagent/consumable/sprinkles = 1) //Extra sprinkles to reward frosting filling_color = "#E57d9A" decorated_icon = "donut_homer" @@ -82,7 +85,7 @@ name = "spaceman's donut" desc = "Goes great with a cold beaker of malk." icon_state = "donut_purple" - bonus_reagents = list("polypyr" = 3, "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/medicine/polypyr = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -91,7 +94,7 @@ name = "apple donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "donut_green" - bonus_reagents = list("applejuice" = 3, "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/consumable/applejuice = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -100,7 +103,7 @@ name = "caramel donut" desc = "Goes great with a mug of hot coco." icon_state = "donut_beige" - bonus_reagents = list("caramel" = 3, "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/consumable/caramel = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -109,7 +112,7 @@ name = "chocolate donut" desc = "Goes great with a glass of warm milk." icon_state = "donut_choc" - bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1) //the coco reagent is just bitter. + bonus_reagents = list(/datum/reagent/consumable/hot_coco = 3, /datum/reagent/consumable/sprinkles = 1) //the coco reagent is just bitter. tastes = list("donut" = 4, "bitterness" = 1) decorated_icon = "donut_choc_sprinkles" filling_color = "#4F230D" @@ -118,7 +121,7 @@ name = "blumpkin donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "donut_blue" - bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/consumable/blumpkinjuice = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -127,7 +130,7 @@ name = "bungo donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "donut_yellow" - bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/consumable/bungojuice = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -136,7 +139,7 @@ name = "matcha donut" desc = "Goes great with a cup of tea." icon_state = "donut_olive" - bonus_reagents = list("teapowder = 3", "sprinkles" = 1) + bonus_reagents = list(/datum/reagent/toxin/teapowder = 3, /datum/reagent/consumable/sprinkles = 1) tastes = list("donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -148,7 +151,7 @@ desc = "You jelly?" icon_state = "jelly" decorated_icon = "jelly_homer" - bonus_reagents = list("sugar" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/nutriment/vitamin = 1) extra_reagent = "berryjuice" tastes = list("jelly" = 1, "donut" = 3) foodtype = JUNKFOOD | GRAIN | FRIED | FRUIT | SUGAR | BREAKFAST @@ -156,7 +159,7 @@ /obj/item/reagent_containers/food/snacks/donut/jelly/Initialize() . = ..() if(extra_reagent) - reagents.add_reagent("[extra_reagent]", 3) + reagents.add_reagent(extra_reagent, 3) /obj/item/reagent_containers/food/snacks/donut/jelly/plain //use this ingame to avoid inheritance related crafting issues. @@ -164,7 +167,7 @@ name = "pink jelly donut" desc = "Goes great with a soy latte." icon_state = "jelly_pink" - bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1, "vitamin" = 1) //Extra sprinkles to reward frosting. + bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting. filling_color = "#E57d9A" decorated_icon = "jelly_homer" @@ -172,7 +175,7 @@ name = "spaceman's jelly donut" desc = "Goes great with a cold beaker of malk." icon_state = "jelly_purple" - bonus_reagents = list("polypyr" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/medicine/polypyr = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -181,7 +184,7 @@ name = "apple jelly donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "jelly_green" - bonus_reagents = list("applejuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/applejuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -190,7 +193,7 @@ name = "caramel jelly donut" desc = "Goes great with a mug of hot coco." icon_state = "jelly_beige" - bonus_reagents = list("caramel" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/caramel = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -199,7 +202,7 @@ name = "chocolate jelly donut" desc = "Goes great with a glass of warm milk." icon_state = "jelly_choc" - bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1, "vitamin" = 1) //the coco reagent is just bitter. + bonus_reagents = list(/datum/reagent/consumable/hot_coco = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //the coco reagent is just bitter. tastes = list("jelly" = 1, "donut" = 4, "bitterness" = 1) decorated_icon = "jelly_choc_sprinkles" filling_color = "#4F230D" @@ -208,7 +211,7 @@ name = "blumpkin jelly donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "jelly_blue" - bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/blumpkinjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -217,7 +220,7 @@ name = "bungo jelly donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "jelly_yellow" - bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/bungojuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -226,7 +229,7 @@ name = "matcha jelly donut" desc = "Goes great with a cup of tea." icon_state = "jelly_olive" - bonus_reagents = list("teapowder" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/toxin/teapowder = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -246,14 +249,14 @@ name = "pink jelly donut" desc = "Goes great with a soy latte." icon_state = "jelly_pink" - bonus_reagents = list("berryjuice" = 3, "sprinkles" = 1, "vitamin" = 1) //Extra sprinkles to reward frosting + bonus_reagents = list(/datum/reagent/consumable/berryjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //Extra sprinkles to reward frosting filling_color = "#E57d9A" /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/trumpet name = "spaceman's jelly donut" desc = "Goes great with a cold beaker of malk." icon_state = "jelly_purple" - bonus_reagents = list("polypyr" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/medicine/polypyr = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "violets" = 1) is_decorated = TRUE filling_color = "#8739BF" @@ -262,7 +265,7 @@ name = "apple jelly donut" desc = "Goes great with a shot of cinnamon schnapps." icon_state = "jelly_green" - bonus_reagents = list("applejuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/applejuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "green apples" = 1) is_decorated = TRUE filling_color = "#6ABE30" @@ -271,7 +274,7 @@ name = "caramel jelly donut" desc = "Goes great with a mug of hot coco." icon_state = "jelly_beige" - bonus_reagents = list("caramel" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/caramel = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "buttery sweetness" = 1) is_decorated = TRUE filling_color = "#D4AD5B" @@ -280,7 +283,7 @@ name = "chocolate jelly donut" desc = "Goes great with a glass of warm milk." icon_state = "jelly_choc" - bonus_reagents = list("hot_coco" = 3, "sprinkles" = 1, "vitamin" = 1) //the coco reagent is just bitter. + bonus_reagents = list(/datum/reagent/consumable/hot_coco = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) //the coco reagent is just bitter. tastes = list("jelly" = 1, "donut" = 4, "bitterness" = 1) decorated_icon = "jelly_choc_sprinkles" filling_color = "#4F230D" @@ -289,7 +292,7 @@ name = "blumpkin jelly donut" desc = "Goes great with a mug of soothing drunken blumpkin." icon_state = "jelly_blue" - bonus_reagents = list("blumpkinjuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/blumpkinjuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 2, "blumpkin" = 1) is_decorated = TRUE filling_color = "#2788C4" @@ -298,7 +301,7 @@ name = "bungo jelly donut" desc = "Goes great with a mason jar of hippie's delight." icon_state = "jelly_yellow" - bonus_reagents = list("bungojuice" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/bungojuice = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "tropical sweetness" = 1) is_decorated = TRUE filling_color = "#DEC128" @@ -307,7 +310,7 @@ name = "matcha jelly donut" desc = "Goes great with a cup of tea." icon_state = "jelly_olive" - bonus_reagents = list("teapowder" = 3, "sprinkles" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/toxin/teapowder = 3, /datum/reagent/consumable/sprinkles = 1, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("jelly" = 1, "donut" = 3, "matcha" = 1) is_decorated = TRUE filling_color = "#879630" @@ -317,8 +320,8 @@ desc = "A sugar glazed donut." icon_state = "donut_glaze" bitesize = 10 - bonus_reagents = list("sugar" = 3) - list_reagents = list("nutriment" = 3, "sugar" = 8) + bonus_reagents = list(/datum/reagent/consumable/sugar = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 8) filling_color = "#FFFFFF" tastes = list("donut" = 1, "salt" = 3) foodtype = JUNKFOOD | GRAIN | FRIED | SUGAR @@ -329,8 +332,8 @@ name = "muffin" desc = "A delicious and spongy little cake." icon_state = "muffin" - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) filling_color = "#F4A460" tastes = list("muffin" = 1) foodtype = GRAIN | SUGAR | BREAKFAST @@ -354,8 +357,8 @@ name = "chawanmushi" desc = "A legendary egg custard that makes friends out of enemies. Probably too hot for a cat to eat." icon_state = "chawanmushi" - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) filling_color = "#FFE4E1" tastes = list("custard" = 1) foodtype = GRAIN | MEAT | VEGETABLES @@ -367,8 +370,8 @@ desc = "Mmm, waffles." icon_state = "waffles" trash = /obj/item/trash/waffles - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#D2691E" tastes = list("waffles" = 1) foodtype = GRAIN | SUGAR | BREAKFAST @@ -378,8 +381,8 @@ desc = "Not made of people. Honest." //Totally people. icon_state = "soylent_green" trash = /obj/item/trash/waffles - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 10, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#9ACD32" tastes = list("waffles" = 7, "people" = 1) foodtype = GRAIN | MEAT @@ -389,8 +392,8 @@ desc = "Not made of people. Honest." //Actually honest for once. icon_state = "soylent_yellow" trash = /obj/item/trash/waffles - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 10, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#9ACD32" tastes = list("waffles" = 7, "the colour green" = 1) foodtype = GRAIN @@ -401,8 +404,8 @@ icon_state = "rofflewaffles" trash = /obj/item/trash/waffles bitesize = 4 - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 8, "mushroomhallucinogen" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/drug/mushroomhallucinogen = 2, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#00BFFF" tastes = list("waffle" = 1, "mushrooms" = 1) foodtype = GRAIN | VEGETABLES | SUGAR | BREAKFAST @@ -414,8 +417,8 @@ desc = "COOKIE!!!" icon_state = "COOKIE!!!" bitesize = 1 - bonus_reagents = list("nutriment" = 1) - list_reagents = list("nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) filling_color = "#F0E68C" tastes = list("cookie" = 1) foodtype = GRAIN | SUGAR @@ -425,7 +428,7 @@ name = "\improper Donk-pocket" desc = "The food of choice for the seasoned traitor." icon_state = "donkpocket" - list_reagents = list("nutriment" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) cooked_type = /obj/item/reagent_containers/food/snacks/donkpocket/warm filling_color = "#CD853F" tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) @@ -434,8 +437,8 @@ /obj/item/reagent_containers/food/snacks/donkpocket/warm name = "warm Donk-pocket" desc = "The heated food of choice for the seasoned traitor." - bonus_reagents = list("omnizine" = 3) - list_reagents = list("nutriment" = 4, "omnizine" = 3) + bonus_reagents = list(/datum/reagent/medicine/omnizine = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/medicine/omnizine = 3) cooked_type = null tastes = list("meat" = 2, "dough" = 2, "laziness" = 1) foodtype = GRAIN @@ -444,7 +447,7 @@ name = "\improper Dank-pocket" desc = "The food of choice for the seasoned botanist." icon_state = "dankpocket" - list_reagents = list("lipolicide" = 3, "space_drugs" = 3, "nutriment" = 4) + list_reagents = list(/datum/reagent/toxin/lipolicide = 3, /datum/reagent/drug/space_drugs = 3, /datum/reagent/consumable/nutriment = 4) filling_color = "#00FF00" tastes = list("meat" = 2, "dough" = 2) foodtype = GRAIN | VEGETABLES @@ -453,8 +456,8 @@ name = "fortune cookie" desc = "A true prophecy in each cookie!" icon_state = "fortune_cookie" - bonus_reagents = list("nutriment" = 2) - list_reagents = list("nutriment" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3) filling_color = "#F4A460" tastes = list("cookie" = 1) foodtype = GRAIN | SUGAR @@ -463,8 +466,8 @@ name = "poppy pretzel" desc = "It's all twisted up!" icon_state = "poppypretzel" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) filling_color = "#F0E68C" tastes = list("pretzel" = 1) foodtype = GRAIN | SUGAR @@ -473,8 +476,8 @@ 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" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) filling_color = "#F0E68C" tastes = list("mushroom" = 1, "biscuit" = 1) foodtype = GRAIN | VEGETABLES @@ -484,18 +487,18 @@ if(fey) name = "exceptional plump helmet biscuit" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" - bonus_reagents = list("omnizine" = 5, "nutriment" = 1, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) . = ..() if(fey) - reagents.add_reagent("omnizine", 5) + reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) /obj/item/reagent_containers/food/snacks/cracker name = "cracker" desc = "It's a salted cracker." icon_state = "cracker" bitesize = 1 - bonus_reagents = list("nutriment" = 1) - list_reagents = list("nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) filling_color = "#F0E68C" tastes = list("cracker" = 1) foodtype = GRAIN @@ -505,8 +508,8 @@ desc = "Fresh footlong ready to go down on." icon_state = "hotdog" bitesize = 3 - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 6, "ketchup" = 3, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/ketchup = 3, /datum/reagent/consumable/nutriment/vitamin = 3) filling_color = "#8B0000" tastes = list("bun" = 3, "meat" = 2) foodtype = GRAIN | MEAT | VEGETABLES @@ -515,8 +518,8 @@ name = "meat bun" desc = "Has the potential to not be Dog." icon_state = "meatbun" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#8B0000" tastes = list("bun" = 3, "meat" = 2) foodtype = GRAIN | MEAT | VEGETABLES @@ -525,7 +528,7 @@ name = "khachapuri" desc = "Bread with egg and cheese?" icon_state = "khachapuri" - list_reagents = list("nutriment" = 12, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FFFF4D" tastes = list("bread" = 1, "egg" = 1, "cheese" = 1) foodtype = GRAIN | MEAT | DAIRY @@ -534,8 +537,8 @@ name = "sugar cookie" desc = "Just like your little sister used to make." icon_state = "sugarcookie" - bonus_reagents = list("nutriment" = 1, "sugar" = 3) - list_reagents = list("nutriment" = 3, "sugar" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 3) filling_color = "#CD853F" tastes = list("sweetness" = 1) foodtype = GRAIN | JUNKFOOD | SUGAR @@ -545,8 +548,8 @@ name = "chocolate cornet" desc = "Which side's the head, the fat end or the thin end?" icon_state = "chococornet" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#FFE4C4" tastes = list("biscuit" = 3, "chocolate" = 1) foodtype = GRAIN | JUNKFOOD @@ -555,8 +558,8 @@ name = "oatmeal cookie" desc = "The best of both cookie and oat." icon_state = "oatmealcookie" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#D2691E" tastes = list("cookie" = 2, "oat" = 1) foodtype = GRAIN @@ -566,8 +569,8 @@ name = "raisin cookie" desc = "Why would you put raisins on a cookie?" icon_state = "raisincookie" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#F0E68C" tastes = list("cookie" = 1, "raisins" = 1) foodtype = GRAIN | FRUIT @@ -577,8 +580,8 @@ name = "cherry cupcake" desc = "A sweet cupcake with cherry bits." icon_state = "cherrycupcake" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#F0E68C" tastes = list("cake" = 3, "cherry" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -587,8 +590,8 @@ name = "blue cherry cupcake" desc = "Blue cherries inside a delicious cupcake." icon_state = "bluecherrycupcake" - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#F0E68C" tastes = list("cake" = 3, "blue cherry" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -597,8 +600,8 @@ name = "strawberry cupcake" desc = "Strawberry inside a delicious cupcake." icon_state = "strawberrycupcake" - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#F0E68C" tastes = list("cake" = 2, "strawberry" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -607,8 +610,8 @@ name = "honey bun" desc = "A sticky pastry bun glazed with honey." icon_state = "honeybun" - bonus_reagents = list("nutriment" = 1, "honey" = 1) - list_reagents = list("nutriment" = 5, "honey" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/honey = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/honey = 5) filling_color = "#F2CE91" tastes = list("pastry" = 1, "sweetness" = 1) foodtype = GRAIN | SUGAR @@ -620,8 +623,8 @@ desc = "A fluffy pancake. The softer, superior relative of the waffle." icon_state = "pancakes_1" item_state = "pancakes" - bonus_reagents = list("vitamin" = 1) - list_reagents = list("nutriment" = 4, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#D2691E" tastes = list("pancakes" = 1) foodtype = GRAIN | SUGAR | BREAKFAST @@ -631,8 +634,8 @@ desc = "A fluffy and delicious blueberry pancake." icon_state = "bbpancakes_1" item_state = "bbpancakes" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("pancakes" = 1, "blueberries" = 1) /obj/item/reagent_containers/food/snacks/pancakes/chocolatechip @@ -640,8 +643,8 @@ desc = "A fluffy and delicious chocolate chip pancake." icon_state = "ccpancakes_1" item_state = "ccpancakes" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 6, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("pancakes" = 1, "chocolate" = 1) /obj/item/reagent_containers/food/snacks/pancakes/Initialize() diff --git a/code/modules/food_and_drinks/food/snacks_pie.dm b/code/modules/food_and_drinks/food/snacks_pie.dm index bc66d353e1..357a921c66 100644 --- a/code/modules/food_and_drinks/food/snacks_pie.dm +++ b/code/modules/food_and_drinks/food/snacks_pie.dm @@ -5,7 +5,7 @@ bitesize = 3 w_class = WEIGHT_CLASS_NORMAL volume = 80 - list_reagents = list("nutriment" = 10, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 1) foodtype = GRAIN @@ -14,7 +14,7 @@ desc = "A simple pie, still delicious." icon_state = "pie" custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/pie - bonus_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("pie" = 1) foodtype = GRAIN @@ -23,8 +23,8 @@ desc = "Just like back home, on clown planet! HONK!" icon_state = "pie" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "banana" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 1) foodtype = GRAIN | DAIRY | SUGAR var/stunning = TRUE @@ -61,7 +61,7 @@ qdel(src) /obj/item/reagent_containers/food/snacks/pie/cream/nostun - list_reagents = list("laughter" = 15) + list_reagents = list(/datum/reagent/consumable/laughter = 15) stunning = FALSE /obj/item/reagent_containers/food/snacks/pie/cream/body @@ -90,8 +90,8 @@ name = "berry clafoutis" desc = "No black birds, this is a good sign." icon_state = "berryclafoutis" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 10, "berryjuice" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/berryjuice = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 1, "blackberries" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -99,8 +99,8 @@ name = "beary pie" desc = "No brown bears, this is a good sign." icon_state = "bearypie" - bonus_reagents = list("nutriment" = 2, "vitamin" = 3) - list_reagents = list("nutriment" = 2, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("pie" = 1, "meat" = 1, "salmon" = 1) foodtype = GRAIN | SUGAR @@ -108,7 +108,7 @@ name = "meat-pie" icon_state = "meatpie" desc = "An old barber recipe, very delicious!" - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -117,7 +117,7 @@ name = "tofu-pie" icon_state = "meatpie" desc = "A delicious tofu pie." - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 1, "tofu" = 1) foodtype = GRAIN @@ -127,8 +127,8 @@ desc = "Sweet and tasty poison pie." icon_state = "amanita_pie" bitesize = 4 - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 6, "amatoxin" = 3, "mushroomhallucinogen" = 1, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/toxin/amatoxin = 3, /datum/reagent/drug/mushroomhallucinogen = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("pie" = 1, "mushroom" = 1) foodtype = GRAIN | VEGETABLES | TOXIC | GROSS @@ -137,7 +137,7 @@ name = "plump pie" desc = "I bet you love stuff made out of plump helmets!" icon_state = "plump_pie" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("pie" = 1, "mushroom" = 1) foodtype = GRAIN | VEGETABLES @@ -148,9 +148,9 @@ if(fey) name = "exceptional plump pie" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" - bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 4) if(fey) - reagents.add_reagent("omnizine", 5) + reagents.add_reagent(/datum/reagent/medicine/omnizine, 5) /obj/item/reagent_containers/food/snacks/pie/xemeatpie @@ -158,7 +158,7 @@ icon_state = "xenomeatpie" desc = "A delicious meatpie. Probably heretical." trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "meat" = 1, "acid" = 1) foodtype = GRAIN | MEAT @@ -167,7 +167,7 @@ name = "apple pie" desc = "A pie containing sweet sweet love...or apple." icon_state = "applepie" - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("pie" = 1, "apple" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -175,7 +175,7 @@ name = "cherry pie" desc = "Taste so good, make a grown man cry." icon_state = "cherrypie" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("pie" = 7, "Nicole Paige Brooks" = 2) foodtype = GRAIN | FRUIT | SUGAR @@ -186,7 +186,7 @@ icon_state = "pumpkinpie" slice_path = /obj/item/reagent_containers/food/snacks/pumpkinpieslice slices_num = 5 - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "pumpkin" = 1) foodtype = GRAIN | VEGETABLES @@ -197,7 +197,7 @@ icon_state = "pumpkinpieslice" trash = /obj/item/trash/plate filling_color = "#FFA500" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("pie" = 1, "pumpkin" = 1) foodtype = GRAIN | VEGETABLES @@ -205,8 +205,8 @@ name = "golden apple streusel tart" desc = "A tasty dessert that won't make it through a metal detector." icon_state = "gappletart" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 8, "gold" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/gold = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("pie" = 1, "apple" = 1, "expensive metal" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -214,8 +214,8 @@ name = "grape tart" desc = "A tasty dessert that reminds you of the wine you didn't make." icon_state = "grapetart" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 4, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("pie" = 1, "grape" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -223,8 +223,8 @@ name = "mime tart" desc = "..." icon_state = "mimetart" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4, "nothing" = 10) - list_reagents = list("nutriment" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4, /datum/reagent/consumable/nothing = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "nothing" = 1) foodtype = GRAIN @@ -232,8 +232,8 @@ name = "berry tart" desc = "A tasty dessert of many different small barries on a thin pie crust." icon_state = "berrytart" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 3, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("pie" = 1, "berries" = 2) foodtype = GRAIN | FRUIT @@ -241,8 +241,8 @@ name = "chocolate lava tart" desc = "A tasty dessert made of chocaloate, with a liquid core." icon_state = "cocolavatart" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 4, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("pie" = 1, "grape" = 1) foodtype = GRAIN | SUGAR @@ -252,7 +252,7 @@ icon_state = "blumpkinpie" slice_path = /obj/item/reagent_containers/food/snacks/blumpkinpieslice slices_num = 5 - bonus_reagents = list("nutriment" = 3, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("pie" = 1, "a mouthful of pool water" = 1) foodtype = GRAIN | VEGETABLES @@ -263,7 +263,7 @@ icon_state = "blumpkinpieslice" trash = /obj/item/trash/plate filling_color = "#1E90FF" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("pie" = 1, "a mouthful of pool water" = 1) foodtype = GRAIN | VEGETABLES @@ -273,7 +273,7 @@ icon_state = "dulcedebatata" slice_path = /obj/item/reagent_containers/food/snacks/dulcedebatataslice slices_num = 5 - bonus_reagents = list("nutriment" = 4, "vitamin" = 8) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 8) tastes = list("jelly" = 1, "sweet potato" = 1) foodtype = GRAIN | VEGETABLES | SUGAR @@ -284,7 +284,7 @@ icon_state = "dulcedebatataslice" trash = /obj/item/trash/plate filling_color = "#8B4513" - list_reagents = list("nutriment" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) tastes = list("jelly" = 1, "sweet potato" = 1) foodtype = GRAIN | VEGETABLES | SUGAR @@ -292,7 +292,7 @@ name = "frosty pie" desc = "Tastes like blue and cold." icon_state = "frostypie" - bonus_reagents = list("nutriment" = 4, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("mint" = 1, "pie" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -302,7 +302,7 @@ icon_state = "baklava" slice_path = /obj/item/reagent_containers/food/snacks/baklavaslice slices_num = 6 - bonus_reagents = list("nutriment" = 2, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("nuts" = 1, "pie" = 1) foodtype = GRAIN @@ -313,7 +313,7 @@ icon_state = "baklavaslice" trash = /obj/item/trash/plate filling_color = "#1E90FF" - list_reagents = list("nutriment" = 2, "vitamin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("nuts" = 1, "pie" = 1) foodtype = GRAIN @@ -321,7 +321,7 @@ name = "strawberry pie" desc = "A strawberry pie." icon_state = "strawberrypie" - bonus_reagents = list("nutriment" = 6, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("strawberry" = 1, "pie" = 1) foodtype = GRAIN | FRUIT | SUGAR @@ -329,6 +329,6 @@ name = "peach pie" desc = "A pie with peach filling." icon_state = "strawberrypie" - bonus_reagents = list("nutriment" = 5, "vitamin" = 6, "peachjuice" = 15) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/peachjuice = 15) tastes = list("peach" = 1, "pie" = 1) foodtype = GRAIN | FRUIT diff --git a/code/modules/food_and_drinks/food/snacks_pizza.dm b/code/modules/food_and_drinks/food/snacks_pizza.dm index 74fd7dda65..ebc67a28c1 100644 --- a/code/modules/food_and_drinks/food/snacks_pizza.dm +++ b/code/modules/food_and_drinks/food/snacks_pizza.dm @@ -6,13 +6,13 @@ w_class = WEIGHT_CLASS_NORMAL slices_num = 6 volume = 80 - list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1) foodtype = GRAIN | DAIRY | VEGETABLES /obj/item/reagent_containers/food/snacks/pizzaslice icon = 'icons/obj/food/pizzaspaghetti.dmi' - list_reagents = list("nutriment" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) foodtype = GRAIN | DAIRY | VEGETABLES /obj/item/reagent_containers/food/snacks/pizza/margherita @@ -20,7 +20,7 @@ desc = "The most cheezy pizza in galaxy." icon_state = "pizzamargherita" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/margherita - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1) foodtype = GRAIN | VEGETABLES @@ -41,8 +41,8 @@ desc = "Greasy pizza with delicious meat." icon_state = "meatpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/meat - bonus_reagents = list("nutriment" = 5, "vitamin" = 8) - list_reagents = list("nutriment" = 30, "tomatojuice" = 6, "vitamin" = 8) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 8) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 8) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) foodtype = GRAIN | VEGETABLES| DAIRY | MEAT @@ -59,8 +59,8 @@ desc = "Very special pizza." icon_state = "mushroompizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/mushroom - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 30, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "mushroom" = 1) foodtype = GRAIN | VEGETABLES | DAIRY @@ -77,8 +77,8 @@ desc = "No one of Tomatos Sapiens were harmed during making this pizza." icon_state = "vegetablepizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/vegetable - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 25, "tomatojuice" = 6, "oculine" = 12, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/oculine = 12, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 2, "cheese" = 1, "carrot" = 1) foodtype = GRAIN | VEGETABLES | DAIRY @@ -95,8 +95,8 @@ desc = "Who thought this would be a good idea?" icon_state = "donkpocketpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/donkpocket - bonus_reagents = list("nutriment" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 25, "tomatojuice" = 6, "omnizine" = 10, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/medicine/omnizine = 10, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1, "laziness" = 1) foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | JUNKFOOD @@ -113,8 +113,8 @@ desc = "The hippie's pizza of choice." icon_state = "dankpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/dank - bonus_reagents = list("nutriment" = 2, "vitamin" = 6) - list_reagents = list("nutriment" = 25, "doctorsdelight" = 5, "tomatojuice" = 6, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 25, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/tomatojuice = 6, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) foodtype = GRAIN | VEGETABLES | FRUIT | DAIRY @@ -131,7 +131,7 @@ desc = "You can really smell the sassiness." icon_state = "sassysagepizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/sassysage - bonus_reagents = list("nutriment" = 6, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "meat" = 1) foodtype = GRAIN | VEGETABLES | DAIRY @@ -148,7 +148,7 @@ desc = "The pizza equivalent of Einstein's riddle." icon_state = "pineapplepizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/pineapple - bonus_reagents = list("nutriment" = 6, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pineapple" = 6, "ham" = 2) foodtype = PINEAPPLE //Over powering tast of gods fruit @@ -162,7 +162,7 @@ /obj/item/reagent_containers/food/snacks/pizza/pineapple/anomaly desc = "A anomaly made pizza with pineapple..." - bonus_reagents = list("nutriment" = 16, "vitamin" = 16) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 16, /datum/reagent/consumable/nutriment/vitamin = 16) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pineapple" = 6, "ham" = 2, "good" = 10) /obj/item/reagent_containers/food/snacks/pizzaslice/pineapple/anomaly @@ -174,7 +174,7 @@ desc = "Hello, you've reached Arnold's pizza shop. I'm not here now, I'm out killing pepperoni." icon_state = "arnoldpizza" slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/arnold - bonus_reagents = list("nutriment" = 30, "vitamin" = 6, "iron" = 10, "omnizine" = 30) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 30, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/iron = 10, /datum/reagent/medicine/omnizine = 30) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pepperoni" = 2, "9 millimeter bullets" = 2) /obj/item/reagent_containers/food/snacks/proc/try_break_off(mob/living/M, mob/living/user) //maybe i give you a pizza maybe i break off your arm diff --git a/code/modules/food_and_drinks/food/snacks_salad.dm b/code/modules/food_and_drinks/food/snacks_salad.dm index f5fcec0ac5..e272733235 100644 --- a/code/modules/food_and_drinks/food/snacks_salad.dm +++ b/code/modules/food_and_drinks/food/snacks_salad.dm @@ -5,7 +5,7 @@ trash = /obj/item/reagent_containers/glass/bowl bitesize = 3 w_class = WEIGHT_CLASS_NORMAL - list_reagents = list("nutriment" = 7, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("leaves" = 1) foodtype = VEGETABLES @@ -17,8 +17,8 @@ name = "\improper Aesir salad" desc = "Probably too incredible for mortal men to fully enjoy." icon_state = "aesirsalad" - bonus_reagents = list("omnizine" = 2, "vitamin" = 6) - list_reagents = list("nutriment" = 8, "omnizine" = 8, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/medicine/omnizine = 2, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/medicine/omnizine = 8, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("leaves" = 1) foodtype = VEGETABLES @@ -26,8 +26,8 @@ name = "herb salad" desc = "A tasty salad with apples on top." icon_state = "herbsalad" - bonus_reagents = list("vitamin" = 4) - list_reagents = list("nutriment" = 8, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("leaves" = 1, "apple" = 1) foodtype = VEGETABLES | FRUIT @@ -35,8 +35,8 @@ name = "valid salad" desc = "It's just an herb salad with meatballs and fried potato slices. Nothing suspicious about it." icon_state = "validsalad" - bonus_reagents = list("doctorsdelight" = 5, "vitamin" = 4) - list_reagents = list("nutriment" = 8, "doctorsdelight" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/doctor_delight = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("leaves" = 1, "potato" = 1, "meat" = 1, "valids" = 1) foodtype = VEGETABLES | MEAT | FRIED | JUNKFOOD | FRUIT @@ -44,8 +44,8 @@ name = "oatmeal" desc = "A nice bowl of oatmeal." icon_state = "oatmeal" - bonus_reagents = list("nutriment" = 4, "vitamin" = 4) - list_reagents = list("nutriment" = 7, "milk" = 10, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/milk = 10, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("oats" = 1, "milk" = 1) foodtype = DAIRY | GRAIN | BREAKFAST @@ -53,7 +53,7 @@ name = "fruit salad" desc = "Your standard fruit salad." icon_state = "fruitsalad" - bonus_reagents = list("nutriment" = 2, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("fruit" = 1) foodtype = FRUIT | BREAKFAST @@ -61,8 +61,8 @@ name = "jungle salad" desc = "Exotic fruits in a bowl." icon_state = "junglesalad" - bonus_reagents = list("nutriment" = 4, "vitamin" = 4) - list_reagents = list("nutriment" = 7, "banana" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("fruit" = 1, "the jungle" = 1) foodtype = FRUIT | BREAKFAST @@ -70,8 +70,8 @@ name = "citrus delight" desc = "Citrus overload!" icon_state = "citrusdelight" - bonus_reagents = list("nutriment" = 4, "vitamin" = 4) - list_reagents = list("nutriment" = 7, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("sourness" = 1, "leaves" = 1) foodtype = FRUIT | BREAKFAST @@ -80,7 +80,7 @@ desc = "A bowl of raw rice." icon_state = "ricebowl" cooked_type = /obj/item/reagent_containers/food/snacks/salad/boiledrice - list_reagents = list("nutriment" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) tastes = list("rice" = 1) foodtype = GRAIN | RAW @@ -88,8 +88,8 @@ name = "boiled rice" desc = "A warm bowl of rice." icon_state = "boiledrice" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 5, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("rice" = 1) foodtype = GRAIN | BREAKFAST @@ -97,7 +97,7 @@ name = "rice pudding" desc = "Everybody loves rice pudding!" icon_state = "ricepudding" - bonus_reagents = list("nutriment" = 4, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("rice" = 1, "sweetness" = 1) foodtype = GRAIN | DAIRY @@ -105,7 +105,7 @@ name = "rice and pork" desc = "Well, it looks like pork..." icon_state = "riceporkbowl" - bonus_reagents = list("nutriment" = 4, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("rice" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -113,6 +113,6 @@ name = "egg bowl" desc = "A bowl of rice with a fried egg." icon_state = "eggbowl" - bonus_reagents = list("nutriment" = 4, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("rice" = 1, "egg" = 1) foodtype = GRAIN | MEAT //EGG = MEAT -NinjaNomNom 2017 diff --git a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm index 17a710ada2..3cc4cfe63f 100644 --- a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm +++ b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm @@ -4,8 +4,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "sandwich" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 6, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) cooked_type = /obj/item/reagent_containers/food/snacks/toastedsandwich tastes = list("meat" = 2, "cheese" = 1, "bread" = 2, "lettuce" = 1) foodtype = GRAIN | VEGETABLES @@ -16,8 +16,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "toastedsandwich" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "carbon" = 2) - list_reagents = list("nutriment" = 6, "carbon" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/carbon = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/carbon = 2) tastes = list("toast" = 1) foodtype = GRAIN @@ -27,8 +27,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "toastedsandwich" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 7, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("toast" = 1, "cheese" = 1) foodtype = GRAIN | DAIRY @@ -43,13 +43,13 @@ foodtype = GRAIN /obj/item/reagent_containers/food/snacks/jellysandwich/slime - bonus_reagents = list("slimejelly" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "slimejelly" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/jellysandwich/cherry - bonus_reagents = list("cherryjelly" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "cherryjelly" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/jellysandwich/pbj @@ -59,13 +59,13 @@ tastes = list("bread" = 1, "jelly" = 1, "peanuts" = 1) /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/cherry - bonus_reagents = list("cherryjelly" = 5, "peanut_butter" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "cherryjelly" = 5, "peanut_butter" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | FRUIT /obj/item/reagent_containers/food/snacks/jellysandwich/pbj/slime - bonus_reagents = list("slimejelly" = 5, "peanut_butter" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "slimejelly" = 5, "peanut_butter" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | TOXIC /obj/item/reagent_containers/food/snacks/peanutbutter_sandwich @@ -75,8 +75,8 @@ icon_state = "peanutbuttersandwich" trash = /obj/item/trash/plate bitesize = 3 - bonus_reagents = list("peanut_butter" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "peanut_butter" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN /obj/item/reagent_containers/food/snacks/notasandwich @@ -85,8 +85,8 @@ icon = 'icons/obj/food/burgerbread.dmi' icon_state = "notasandwich" trash = /obj/item/trash/plate - bonus_reagents = list("vitamin" = 6) - list_reagents = list("nutriment" = 6, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("nothing suspicious" = 1) foodtype = GRAIN | GROSS @@ -101,13 +101,13 @@ foodtype = GRAIN /obj/item/reagent_containers/food/snacks/jelliedtoast/cherry - bonus_reagents = list("cherryjelly" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 1, "cherryjelly" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/cherryjelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | FRUIT | SUGAR /obj/item/reagent_containers/food/snacks/jelliedtoast/slime - bonus_reagents = list("slimejelly" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 1, "slimejelly" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GRAIN | TOXIC | SUGAR /obj/item/reagent_containers/food/snacks/peanut_buttertoast @@ -117,8 +117,8 @@ icon_state = "peanutbuttertoast" trash = /obj/item/trash/plate bitesize = 3 - bonus_reagents = list("peanut_butter" = 5, "vitamin" = 2) - list_reagents = list("nutriment" = 1, "peanut_butter" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/peanut_butter = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("toast" = 1, "peanuts" = 1) foodtype = GRAIN @@ -128,8 +128,8 @@ desc = "This seems awfully bitter." icon = 'icons/obj/food/burgerbread.dmi' icon_state = "twobread" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("bread" = 2) foodtype = GRAIN @@ -139,6 +139,6 @@ icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "tunasandwich" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("tuna" = 4, "mayonnaise" = 2, "bread" = 2) foodtype = GRAIN | MEAT diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index 47c9f02fb9..a0e1ebcb39 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -4,7 +4,7 @@ trash = /obj/item/reagent_containers/glass/bowl bitesize = 5 volume = 80 - list_reagents = list("nutriment" = 8, "water" = 5, "vitamin" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("tasteless soup" = 1) foodtype = VEGETABLES @@ -16,7 +16,7 @@ name = "wish soup" desc = "I wish this was soup." icon_state = "wishsoup" - list_reagents = list("water" = 10) + list_reagents = list(/datum/reagent/water = 10) tastes = list("wishes" = 1) /obj/item/reagent_containers/food/snacks/soup/wish/Initialize() @@ -24,17 +24,17 @@ var/wish_true = prob(25) if(wish_true) desc = "A wish come true!" - bonus_reagents = list("nutriment" = 9, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 9, /datum/reagent/consumable/nutriment/vitamin = 1) if(wish_true) - reagents.add_reagent("nutriment", 9) - reagents.add_reagent("vitamin", 1) + reagents.add_reagent(/datum/reagent/consumable/nutriment, 9) + reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 1) foodtype = VEGETABLES /obj/item/reagent_containers/food/snacks/soup/meatball name = "meatball soup" desc = "You've got balls kid, BALLS!" icon_state = "meatballsoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("meat" = 1) foodtype = MEAT @@ -42,8 +42,8 @@ name = "slime soup" desc = "If no water is available, you may substitute tears." icon_state = "slimesoup" - bonus_reagents = list("nutriment" = 1, "slimejelly" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 5, "slimejelly" = 5, "water" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/toxin/slimejelly = 5, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("slime" = 1) foodtype = TOXIC | SUGAR @@ -51,8 +51,8 @@ name = "tomato soup" desc = "Smells like copper." icon_state = "tomatosoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 6) - list_reagents = list("nutriment" = 2, "blood" = 10, "water" = 5, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/blood = 10, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("iron" = 1) foodtype = GROSS @@ -61,8 +61,8 @@ desc = "A savory dish of alien wing wang in soy." icon_state = "wingfangchu" trash = /obj/item/reagent_containers/glass/bowl - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 6, "soysauce" = 5, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/soysauce = 5, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("soy" = 1) foodtype = MEAT @@ -70,8 +70,8 @@ name = "clown's tears" desc = "Not very funny." icon_state = "clownstears" - bonus_reagents = list("nutriment" = 1, "banana" = 5, "vitamin" = 8, "clownstears" = 10) - list_reagents = list("nutriment" = 4, "banana" = 5, "water" = 5, "vitamin" = 8, "clownstears" = 10) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 8, /datum/reagent/consumable/clownstears = 10) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/banana = 5, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 8, /datum/reagent/consumable/clownstears = 10) tastes = list("a bad joke" = 1) foodtype = FRUIT | SUGAR @@ -79,7 +79,7 @@ name = "vegetable soup" desc = "A true vegan meal." icon_state = "vegetablesoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("vegetables" = 1) foodtype = VEGETABLES @@ -87,7 +87,7 @@ name = "nettle soup" desc = "To think, the botanist would've beat you to death with one of these." icon_state = "nettlesoup" - bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("nettles" = 1) foodtype = VEGETABLES @@ -96,21 +96,23 @@ desc = "The mystery is, why aren't you eating it?" icon_state = "mysterysoup" var/extra_reagent = null - list_reagents = list("nutriment" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) tastes = list("chaos" = 1) /obj/item/reagent_containers/food/snacks/soup/mystery/Initialize() . = ..() - extra_reagent = pick("capsaicin", "frostoil", "omnizine", "banana", "blood", "slimejelly", "toxin", "banana", "carbon", "oculine") - bonus_reagents = list("[extra_reagent]" = 5, "nutriment" = 6) - reagents.add_reagent("[extra_reagent]", 5) + extra_reagent = pick(/datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil, + /datum/reagent/medicine/omnizine, /datum/reagent/consumable/banana, /datum/reagent/blood, + /datum/reagent/toxin/slimejelly, /datum/reagent/toxin, /datum/reagent/carbon, /datum/reagent/medicine/oculine) + bonus_reagents = list(extra_reagent = 5, /datum/reagent/consumable/nutriment = 6) + reagents.add_reagent(extra_reagent, 5) /obj/item/reagent_containers/food/snacks/soup/hotchili name = "hot chili" desc = "A five alarm Texan Chili!" icon_state = "hotchili" - bonus_reagents = list("nutriment" = 1, "tomatojuice" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 5, "capsaicin" = 1, "tomatojuice" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("hot peppers" = 1) foodtype = VEGETABLES @@ -118,8 +120,8 @@ name = "cold chili" desc = "This slush is barely a liquid!" icon_state = "coldchili" - bonus_reagents = list("nutriment" = 1, "tomatojuice" = 2, "vitamin" = 2) - list_reagents = list("nutriment" = 5, "frostoil" = 1, "tomatojuice" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/frostoil = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("tomato" = 1, "mint" = 1) foodtype = VEGETABLES @@ -127,8 +129,8 @@ name = "monkey's delight" desc = "A delicious soup with dumplings and hunks of monkey meat simmered to perfection, in a broth that tastes faintly of bananas." icon_state = "monkeysdelight" - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) - list_reagents = list("nutriment" = 10, "banana" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/banana = 5, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("the jungle" = 1, "banana" = 1) foodtype = FRUIT @@ -136,8 +138,8 @@ name = "tomato soup" desc = "Drinking this feels like being a vampire! A tomato vampire..." icon_state = "tomatosoup" - bonus_reagents = list("nutriment" = 1, "tomatojuice" = 10, "vitamin" = 3) - list_reagents = list("nutriment" = 5, "tomatojuice" = 10, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("tomato" = 1) foodtype = VEGETABLES @@ -145,7 +147,7 @@ name = "eyeball soup" desc = "It looks back at you..." icon_state = "eyeballsoup" - bonus_reagents = list("nutriment" = 1, "liquidgibs" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/liquidgibs = 3) tastes = list("tomato" = 1, "squirming" = 1) foodtype = MEAT | GROSS @@ -153,7 +155,7 @@ name = "milosoup" desc = "The universes best soup! Yum!!!" icon_state = "milosoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) tastes = list("milo" = 1) // wtf is milo foodtype = GROSS @@ -161,8 +163,8 @@ name = "chantrelle soup" desc = "A delicious and hearty mushroom soup." icon_state = "mushroomsoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) - list_reagents = list("nutriment" = 8, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("mushroom" = 1) foodtype = VEGETABLES @@ -170,7 +172,7 @@ name = "beet soup" desc = "Wait, how do you spell it again..?" icon_state = "beetsoup" - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) foodtype = VEGETABLES /obj/item/reagent_containers/food/snacks/soup/beet/Initialize() @@ -184,8 +186,8 @@ desc = "Jello gelatin, from Alfred Hubbard's cookbook." icon_state = "spacylibertyduff" bitesize = 3 - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "mushroomhallucinogen" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/drug/mushroomhallucinogen = 6) tastes = list("jelly" = 1, "mushroom" = 1) foodtype = VEGETABLES @@ -194,8 +196,8 @@ desc = "Looks curiously toxic." icon_state = "amanitajelly" bitesize = 3 - bonus_reagents = list("nutriment" = 1, "vitamin" = 5) - list_reagents = list("nutriment" = 6, "mushroomhallucinogen" = 3, "amatoxin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/drug/mushroomhallucinogen = 3, /datum/reagent/toxin/amatoxin = 6) tastes = list("jelly" = 1, "mushroom" = 1) foodtype = VEGETABLES | TOXIC @@ -203,8 +205,8 @@ name = "stew" desc = "A nice and warm stew. Healthy and strong." icon_state = "stew" - bonus_reagents = list("nutriment" = 1, "tomatojuice" = 5, "vitamin" = 5) - list_reagents = list("nutriment" = 10, "oculine" = 5, "tomatojuice" = 5, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 5, /datum/reagent/consumable/nutriment/vitamin = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/medicine/oculine = 5, /datum/reagent/consumable/tomatojuice = 5, /datum/reagent/consumable/nutriment/vitamin = 5) bitesize = 7 volume = 100 tastes = list("tomato" = 1, "carrot" = 1) @@ -214,7 +216,7 @@ name = "sweet potato soup" desc = "Delicious sweet potato in soup form." icon_state = "sweetpotatosoup" - bonus_reagents = list("nutriment" = 4, "vitamin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 5) tastes = list("sweet potato" = 1) foodtype = VEGETABLES | SUGAR @@ -222,7 +224,7 @@ name = "red beet soup" desc = "Quite a delicacy." icon_state = "redbeetsoup" - bonus_reagents = list("nutriment" = 4, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("beet" = 1) foodtype = VEGETABLES @@ -230,8 +232,8 @@ name = "electron soup" desc = "A gastronomic curiosity of ethereal origin. It is famed for the minature weather system formed over a properly prepared soup." icon_state = "electronsoup" - list_reagents = list("nutriment" = 3, "liquidelectricity" = 5) - tastes = list("mushroom" = 1, "electrons" = 4, "shockingly good") + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/liquidelectricity = 5) + tastes = list("mushroom" = 1, "electrons" = 4, "shockingly good" = 1) filling_color = "#CC2B52" foodtype = VEGETABLES | TOXIC @@ -239,8 +241,8 @@ name = "bungo curry" desc = "A spicy vegetable curry made with the humble bungo fruit, Exotic!" icon_state = "bungocurry" - bonus_reagents = list("vitamin" = 11) - list_reagents = list("nutriment" = 6, "capsaicin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 11) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5) tastes = list("bungo" = 2, "hot curry" = 4, "tropical sweetness" = 1) filling_color = "#E6A625" foodtype = VEGETABLES | FRUIT | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks_spaghetti.dm b/code/modules/food_and_drinks/food/snacks_spaghetti.dm index 70a1922050..d54ba6f030 100644 --- a/code/modules/food_and_drinks/food/snacks_spaghetti.dm +++ b/code/modules/food_and_drinks/food/snacks_spaghetti.dm @@ -4,7 +4,7 @@ desc = "Now that's a nic'e pasta!" icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "spaghetti" - list_reagents = list("nutriment" = 1, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) cooked_type = /obj/item/reagent_containers/food/snacks/boiledspaghetti filling_color = "#F0E68C" tastes = list("pasta" = 1) @@ -16,8 +16,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "spaghettiboiled" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 2) - list_reagents = list("nutriment" = 2, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 1) custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/pasta filling_color = "#F0E68C" tastes = list("pasta" = 1) @@ -30,8 +30,8 @@ icon_state = "pastatomato" trash = /obj/item/trash/plate bitesize = 4 - bonus_reagents = list("nutriment" = 1, "tomatojuice" = 10, "vitamin" = 4) - list_reagents = list("nutriment" = 6, "tomatojuice" = 10, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/tomatojuice = 10, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#DC143C" tastes = list("pasta" = 1, "tomato" = 1) foodtype = GRAIN | VEGETABLES @@ -43,8 +43,8 @@ icon_state = "copypasta" trash = /obj/item/trash/plate bitesize = 4 - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 12, "tomatojuice" = 20, "vitamin" = 8) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 12, /datum/reagent/consumable/tomatojuice = 20, /datum/reagent/consumable/nutriment/vitamin = 8) filling_color = "#DC143C" tastes = list("pasta" = 1, "tomato" = 1) foodtype = GRAIN | VEGETABLES @@ -55,8 +55,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "meatballspaghetti" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 4) - list_reagents = list("nutriment" = 8, "vitamin" = 4) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 4) filling_color = "#F0E68C" tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -67,8 +67,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "spesslaw" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 1, "vitamin" = 6) - list_reagents = list("nutriment" = 8, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 6) filling_color = "#F0E68C" tastes = list("pasta" = 1, "tomato" = 1, "meat" = 1) foodtype = GRAIN @@ -79,8 +79,8 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "chowmein" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 3, "vitamin" = 4) - list_reagents = list("nutriment" = 7, "vitamin" = 6) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 7, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("noodle" = 1, "tomato" = 1) foodtype = GRAIN @@ -90,7 +90,7 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "beefnoodle" trash = /obj/item/reagent_containers/glass/bowl - bonus_reagents = list("nutriment" = 5, "vitamin" = 6, "liquidgibs" = 3) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/liquidgibs = 3) tastes = list("noodle" = 1, "meat" = 1) foodtype = GRAIN | MEAT @@ -100,6 +100,6 @@ icon = 'icons/obj/food/pizzaspaghetti.dmi' icon_state = "butternoodles" trash = /obj/item/trash/plate - bonus_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("noodle" = 1, "butter" = 1) foodtype = GRAIN | DAIRY diff --git a/code/modules/food_and_drinks/food/snacks_sushi.dm b/code/modules/food_and_drinks/food/snacks_sushi.dm index a4cbc5e344..d16ca79001 100644 --- a/code/modules/food_and_drinks/food/snacks_sushi.dm +++ b/code/modules/food_and_drinks/food/snacks_sushi.dm @@ -5,7 +5,7 @@ desc = "A bowl of sticky rice for making sushi." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushi_rice" - list_reagents = list("sodiumchloride" = 5) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 5) tastes = list("rice" = 5, "salt" = 1) foodtype = GRAIN @@ -14,7 +14,7 @@ desc = "A thin, light salt sheet of plant mater. This is commenly used in sushi recipes," icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sea_weed" - list_reagents = list("sodiumchloride" = 2) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 2) tastes = list("plants" = 2, "salt" = 1) foodtype = VEGETABLES @@ -24,7 +24,7 @@ icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "tuna_can" //trash = /obj/item/trash/tuna_used //I dont know if I like this idea - A Masked Cat - list_reagents = list("sodiumchloride" = 5, "mercury" = 2) + list_reagents = list(/datum/reagent/consumable/sodiumchloride = 5, /datum/reagent/mercury = 2) tastes = list("tuna" = 15, "mercury" = 1, "salt" = 3) foodtype = MEAT @@ -34,8 +34,8 @@ desc = "A small cylindrical filled with rice and fish." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_basic" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1) bitesize = 1 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 1, "salt" = 1) @@ -46,8 +46,8 @@ desc = "A pice of carp lightly placed on some rice." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_adv" - bonus_reagents = list("vitamin" = 2) - list_reagents = list("nutriment" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 2) bitesize = 1 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 1, "salt" = 1) @@ -58,8 +58,8 @@ desc = "A well prepared pice of the best of the carp fillet placed on rice. Looks fancy and fresh!" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_pro" - bonus_reagents = list("nutriment" = 1, "vitamin" = 2) - list_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) bitesize = 1 filling_color = "#F2EEEA" //rgb(242, 238, 234) tastes = list("fish" = 1, "rice" = 1, "salt" = 1) @@ -70,7 +70,7 @@ desc = "Spider eggs wrapped in a thin salted Kudzu pod" icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_egg" - list_reagents = list("nutriment" = 3, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FF3333" // R225 G051 B051 tastes = list("seaweed" = 1, "salty" = 2) foodtype = MEAT | VEGETABLES @@ -80,7 +80,7 @@ desc = "A ball of rice with some light salt and a wrap of Kudzu skin." icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "riceball" - list_reagents = list("nutriment" = 5, "sodiumchloride" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/sodiumchloride = 2) tastes = list("rice" = 4, "salt" = 1) foodtype = GRAIN @@ -88,8 +88,8 @@ name = "carp sashimi" desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself." icon_state = "sashimi" - bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4) - list_reagents = list("nutriment" = 6, "capsaicin" = 5) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/capsaicin = 4, /datum/reagent/consumable/nutriment/vitamin = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/capsaicin = 5) filling_color = "#FA8072" tastes = list("fish" = 1, "hot peppers" = 1) foodtype = MEAT | TOXIC \ No newline at end of file diff --git a/code/modules/food_and_drinks/food/snacks_vend.dm b/code/modules/food_and_drinks/food/snacks_vend.dm index 8f661b868e..239dd433b0 100644 --- a/code/modules/food_and_drinks/food/snacks_vend.dm +++ b/code/modules/food_and_drinks/food/snacks_vend.dm @@ -7,7 +7,7 @@ desc = "Nougat love it or hate it." icon_state = "candy" trash = /obj/item/trash/candy - list_reagents = list("nutriment" = 1, "sugar" = 3, "cocoa" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/coco = 3) junkiness = 25 filling_color = "#D2691E" tastes = list("candy" = 1) @@ -18,7 +18,7 @@ icon_state = "sosjerky" desc = "Beef jerky made from the finest space cows." trash = /obj/item/trash/sosjerky - list_reagents = list("nutriment" = 1, "sugar" = 3, "sodiumchloride" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/sodiumchloride = 2) junkiness = 25 filling_color = "#8B0000" tastes = list("dried meat" = 1) @@ -27,7 +27,7 @@ /obj/item/reagent_containers/food/snacks/sosjerky/healthy name = "homemade beef jerky" desc = "Homemade beef jerky made from the finest space cows." - list_reagents = list("nutriment" = 3, "vitamin" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) junkiness = 0 /obj/item/reagent_containers/food/snacks/chips @@ -36,7 +36,7 @@ icon_state = "chips" trash = /obj/item/trash/chips bitesize = 1 - list_reagents = list("nutriment" = 1, "sugar" = 3, "sodiumchloride" = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/sodiumchloride = 1) junkiness = 20 filling_color = "#FFD700" tastes = list("salt" = 1, "crisps" = 1) @@ -47,7 +47,7 @@ icon_state = "4no_raisins" desc = "Best raisins in the universe. Not sure why." trash = /obj/item/trash/raisins - list_reagents = list("nutriment" = 2, "sugar" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 4) junkiness = 25 filling_color = "#8B0000" tastes = list("dried raisins" = 1) @@ -56,7 +56,7 @@ /obj/item/reagent_containers/food/snacks/no_raisin/healthy name = "homemade raisins" desc = "Homemade raisins, the best in all of spess." - list_reagents = list("nutriment" = 3, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) junkiness = 0 foodtype = FRUIT @@ -64,7 +64,7 @@ name = "space twinkie" icon_state = "space_twinkie" desc = "Guaranteed to survive longer than you will." - list_reagents = list("sugar" = 4) + list_reagents = list(/datum/reagent/consumable/sugar = 4) junkiness = 25 filling_color = "#FFD700" foodtype = JUNKFOOD | GRAIN | SUGAR @@ -74,7 +74,7 @@ desc = "Bite sized cheesie snacks that will honk all over your mouth." icon_state = "cheesie_honkers" trash = /obj/item/trash/cheesie - list_reagents = list("nutriment" = 1, "sugar" = 3) + list_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/sugar = 3) junkiness = 25 filling_color = "#FFD700" tastes = list("cheese" = 5, "crisps" = 2) @@ -85,7 +85,7 @@ icon_state = "syndi_cakes" desc = "An extremely moist snack cake that tastes just as good after being nuked." trash = /obj/item/trash/syndi_cakes - list_reagents = list("nutriment" = 4, "doctorsdelight" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/doctor_delight = 5) filling_color = "#F5F5DC" tastes = list("sweetness" = 3, "cake" = 1) foodtype = GRAIN | FRUIT | VEGETABLES diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 1bc2e4bb89..27ee54815f 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -52,7 +52,7 @@ God bless America. /obj/machinery/deepfryer/Initialize() . = ..() create_reagents(50, OPENCONTAINER) - reagents.add_reagent("cooking_oil", 25) + reagents.add_reagent(/datum/reagent/consumable/cooking_oil, 25) component_parts = list() component_parts += new /obj/item/circuitboard/machine/deep_fryer(null) component_parts += new /obj/item/stock_parts/micro_laser(null) @@ -81,9 +81,9 @@ God bless America. qdel(I) return if(istype(I,/obj/item/clothing/head/mob_holder)) - to_chat(user, "This does not fit in the fryer.") // TODO: Deepfrying instakills mobs, spawns a whole deep-fried mob. + to_chat(user, "This does not fit in the fryer.") // TODO: Deepfrying instakills mobs, spawns a whole deep-fried mob. return - if(!reagents.has_reagent("cooking_oil")) + if(!reagents.has_reagent(/datum/reagent/consumable/cooking_oil)) to_chat(user, "[src] has no cooking oil to fry with!") return if(I.resistance_flags & INDESTRUCTIBLE) @@ -107,7 +107,7 @@ God bless America. /obj/machinery/deepfryer/process() ..() - var/datum/reagent/consumable/cooking_oil/C = reagents.has_reagent("cooking_oil") + var/datum/reagent/consumable/cooking_oil/C = reagents.has_reagent(/datum/reagent/consumable/cooking_oil) if(!C) return reagents.chem_temp = C.fry_temperature diff --git a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm index 4dda9dd773..68cc84c639 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/food_cart.dm @@ -35,16 +35,16 @@ dat += "Portion: [portion]
" for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Purge" + dat += "Purge" if (glasses > 0) - dat += "Pour in a glass" - dat += "Add to the mixer
" + dat += "Pour in a glass" + dat += "Add to the mixer
" dat += "
MIXER CONTENTS
" for(var/datum/reagent/R in mixer.reagents.reagent_list) dat += "[R.name]: [R.volume] " - dat += "Transfer back" + dat += "Transfer back" if (glasses > 0) - dat += "Pour in a glass" + dat += "Pour in a glass" dat += "
" dat += "

STORED FOOD
" for(var/V in stored_food) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index e02c3c1334..e5c5a4f933 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -176,7 +176,7 @@ newmeat.name = "[sourcename] [newmeat.name]" if(istype(newmeat)) newmeat.subjectname = sourcename - newmeat.reagents.add_reagent ("nutriment", sourcenutriment / meat_produced) // Thehehe. Fat guys go first + newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, sourcenutriment / meat_produced) // Thehehe. Fat guys go first if(sourcejob) newmeat.subjectjob = sourcejob allmeat[i] = newmeat diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm index 449da2afe3..c52389cd56 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm @@ -52,10 +52,10 @@ grill_loop.start() return else - if(I.reagents.has_reagent("monkey_energy")) - grill_fuel += (20 * (I.reagents.get_reagent_amount("monkey_energy"))) + if(I.reagents.has_reagent(/datum/reagent/consumable/monkey_energy)) + grill_fuel += (20 * (I.reagents.get_reagent_amount(/datum/reagent/consumable/monkey_energy))) to_chat(user, "You pour the Monkey Energy in [src].") - I.reagents.remove_reagent("monkey_energy", I.reagents.get_reagent_amount("monkey_energy")) + I.reagents.remove_reagent("monkey_energy", I.reagents.get_reagent_amount(/datum/reagent/consumable/monkey_energy)) update_icon() return ..() diff --git a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm index 8db6956da9..71becf0542 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/icecream_vat.dm @@ -25,37 +25,37 @@ var/flavour_name = "vanilla" var/obj/item/reagent_containers/beaker = null var/static/list/icecream_vat_reagents = list( - "milk" = 6, - "flour" = 6, - "sugar" = 6, - "ice" = 6, - "cocoa" = 6, - "vanilla" = 6, - "berryjuice" = 6, - "singulo" = 6, - "peachjuice" = 6, - "grapejuice" = 6) + /datum/reagent/consumable/milk = 6, + /datum/reagent/consumable/flour = 6, + /datum/reagent/consumable/sugar = 6, + /datum/reagent/consumable/ice = 6, + /datum/reagent/consumable/coco = 6, + /datum/reagent/consumable/vanilla = 6, + /datum/reagent/consumable/berryjuice = 6, + /datum/reagent/consumable/ethanol/singulo = 6, + /datum/reagent/consumable/peachjuice = 6, + /datum/reagent/consumable/grapejuice = 6) /obj/machinery/icecream_vat/proc/get_ingredient_list(type) switch(type) if(ICECREAM_CHOCOLATE) - return list("milk", "ice", "cocoa") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/coco) if(ICECREAM_STRAWBERRY) - return list("milk", "ice", "berryjuice") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/berryjuice) if(ICECREAM_CUSTOM) - return list("milk", "ice") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice) if(ICECREAM_PEACH) - return list("milk", "ice", "peachjuice") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/peachjuice) if(ICECREAM_GRAPE) - return list("milk", "ice", "grapejuice") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/grapejuice) if(ICECREAM_BLUE) - return list("milk", "ice", "singulo") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/ethanol/singulo) if(CONE_WAFFLE) - return list("flour", "sugar") + return list(/datum/reagent/consumable/flour, /datum/reagent/consumable/sugar) if(CONE_CHOC) - return list("flour", "sugar", "cocoa") + return list(/datum/reagent/consumable/flour, /datum/reagent/consumable/sugar, /datum/reagent/consumable/coco) else //ICECREAM_VANILLA - return list("milk", "ice", "vanilla") + return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/vanilla) /obj/machinery/icecream_vat/proc/get_flavour_name(flavour_type) @@ -113,7 +113,7 @@ dat += "VAT CONTENT
" for(var/datum/reagent/R in reagents.reagent_list) dat += "[R.name]: [R.volume]" - dat += "Purge
" + dat += "Purge
" dat += "Refresh Close" var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src) @@ -132,7 +132,7 @@ else I.add_ice_cream(flavour_name) if(I.reagents.total_volume < 10) - I.reagents.add_reagent("sugar", 10 - I.reagents.total_volume) + I.reagents.add_reagent(/datum/reagent/consumable/sugar, 10 - I.reagents.total_volume) updateDialog() else to_chat(user, "There is not enough ice cream left!") @@ -228,7 +228,7 @@ desc = "Delicious waffle cone, but no ice cream." icon = 'icons/obj/kitchen.dmi' icon_state = "icecream_cone_waffle" //default for admin-spawned cones, href_list["cone"] should overwrite this all the time - list_reagents = list("nutriment" = 4) + list_reagents = list(/datum/reagent/consumable/nutriment = 4) tastes = list("cream" = 2, "waffle" = 1) var/ice_creamed = 0 var/cone_type @@ -244,9 +244,9 @@ icon_state = "icecream_cone_[cone_name]" switch (cone_type) if ("waffle") - reagents.add_reagent("nutriment", 1) + reagents.add_reagent(/datum/reagent/consumable/nutriment, 1) if ("chocolate") - reagents.add_reagent("cocoa", 1) // chocolate ain't as nutritious kids + reagents.add_reagent(/datum/reagent/consumable/coco, 1) // chocolate ain't as nutritious kids desc = "Delicious [cone_name] cone, but no ice cream." @@ -256,31 +256,31 @@ switch (flavour_name) // adding the actual reagents advertised in the ingredient list if ("vanilla") desc = "A delicious [cone_type] cone filled with vanilla ice cream. All the other ice creams take content from it." - reagents.add_reagent("vanilla", 3) + reagents.add_reagent(/datum/reagent/consumable/vanilla, 3) filling_color = "#ECE1C1" if ("chocolate") desc = "A delicious [cone_type] cone filled with chocolate ice cream. Surprisingly, made with real cocoa." - reagents.add_reagent("cocoa", 3) + reagents.add_reagent(/datum/reagent/consumable/coco, 3) filling_color = "#93673B" if ("strawberry") desc = "A delicious [cone_type] cone filled with strawberry ice cream. Definitely not made with real strawberries." - reagents.add_reagent("berryjuice", 3) + reagents.add_reagent(/datum/reagent/consumable/berryjuice, 3) filling_color = "#EFB4B4" if ("peach") desc = "A delicious [cone_type] cone filled with peach ice cream. Definitely made with real peaches!" - reagents.add_reagent("peachjuice", 3) + reagents.add_reagent(/datum/reagent/consumable/peachjuice, 3) filling_color = "#E78108" if ("grape") desc = "A delicious [cone_type] cone filled with grape ice cream. Surprisingly, made with real pink grape, likely not real sugarcanes used." - reagents.add_reagent("grapejuice", 3) + reagents.add_reagent(/datum/reagent/consumable/grapejuice, 3) filling_color = "#FF1493" if ("blue") desc = "A delicious [cone_type] cone filled with blue ice cream. Made with real... blue?" - reagents.add_reagent("singulo", 3) + reagents.add_reagent(/datum/reagent/consumable/ethanol/singulo, 3) filling_color = "#ACBCED" if ("mob") desc = "A suspicious [cone_type] cone filled with bright red ice cream. That's probably not strawberry..." - reagents.add_reagent("liquidgibs", 3) + reagents.add_reagent(/datum/reagent/liquidgibs, 3) filling_color = "#EFB4B4" if ("custom") if(R && R.total_volume >= 4) //consumable reagents have stronger taste so higher volume will allow non-food flavourings to break through better. diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 4efac6f508..e4d36b29d2 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -134,8 +134,8 @@ if(istype(O, /obj/item/reagent_containers/spray)) var/obj/item/reagent_containers/spray/clean_spray = O - if(clean_spray.reagents.has_reagent("cleaner", clean_spray.amount_per_transfer_from_this)) - clean_spray.reagents.remove_reagent("cleaner", clean_spray.amount_per_transfer_from_this,1) + if(clean_spray.reagents.has_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this)) + clean_spray.reagents.remove_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this,1) playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6) user.visible_message("[user] has cleaned \the [src].", "You clean \the [src].") dirty = 0 diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index 355660ecec..da67eaa9cf 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -86,7 +86,7 @@ tag_overlay.pixel_y = boxes.len * 3 add_overlay(tag_overlay) -/obj/item/pizzabox/worn_overlays(isinhands, icon_file) +/obj/item/pizzabox/worn_overlays(isinhands, icon_file, style_flags = NONE) . = list() var/current_offset = 2 if(isinhands) diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 9dbddfb519..9df650500a 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -2,385 +2,385 @@ /datum/chemical_reaction/goldschlager name = "Goldschlager" - id = "goldschlager" - results = list("goldschlager" = 10) - required_reagents = list("vodka" = 10, "gold" = 1) + id = /datum/reagent/consumable/ethanol/goldschlager + results = list(/datum/reagent/consumable/ethanol/goldschlager = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 10, /datum/reagent/gold = 1) /datum/chemical_reaction/patron name = "Patron" - id = "patron" - results = list("patron" = 10) - required_reagents = list("tequila" = 10, "silver" = 1) + id = /datum/reagent/consumable/ethanol/patron + results = list(/datum/reagent/consumable/ethanol/patron = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 10, /datum/reagent/silver = 1) /datum/chemical_reaction/bilk name = "Bilk" - id = "bilk" - results = list("bilk" = 2) - required_reagents = list("milk" = 1, "beer" = 1) + id = /datum/reagent/consumable/ethanol/bilk + results = list(/datum/reagent/consumable/ethanol/bilk = 2) + required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/ethanol/beer = 1) /datum/chemical_reaction/icetea name = "Iced Tea" - id = "icetea" - results = list("icetea" = 4) - required_reagents = list("ice" = 1, "tea" = 3) + id = /datum/reagent/consumable/icetea + results = list(/datum/reagent/consumable/icetea = 4) + required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/tea = 3) /datum/chemical_reaction/icecoffee name = "Iced Coffee" - id = "icecoffee" - results = list("icecoffee" = 4) - required_reagents = list("ice" = 1, "coffee" = 3) + id = /datum/reagent/consumable/icecoffee + results = list(/datum/reagent/consumable/icecoffee = 4) + required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/coffee = 3) /datum/chemical_reaction/nuka_cola name = "Nuka Cola" - id = "nuka_cola" - results = list("nuka_cola" = 6) - required_reagents = list("uranium" = 1, "cola" = 6) + id = /datum/reagent/consumable/nuka_cola + results = list(/datum/reagent/consumable/nuka_cola = 6) + required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/consumable/space_cola = 6) /datum/chemical_reaction/moonshine name = "Moonshine" - id = "moonshine" - results = list("moonshine" = 10) - required_reagents = list("nutriment" = 5, "sugar" = 5) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/moonshine + results = list(/datum/reagent/consumable/ethanol/moonshine = 10) + required_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/sugar = 5) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/wine name = "Wine" - id = "wine" - results = list("wine" = 10) - required_reagents = list("grapejuice" = 10) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/wine + results = list(/datum/reagent/consumable/ethanol/wine = 10) + required_reagents = list(/datum/reagent/consumable/grapejuice = 10) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/spacebeer name = "Space Beer" - id = "spacebeer" - results = list("beer" = 10) - required_reagents = list("flour" = 10) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/beer + results = list(/datum/reagent/consumable/ethanol/beer = 10) + required_reagents = list(/datum/reagent/consumable/flour = 10) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/vodka name = "Vodka" - id = "vodka" - results = list("vodka" = 10) - required_reagents = list("potato" = 10) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/vodka + results = list(/datum/reagent/consumable/ethanol/vodka = 10) + required_reagents = list(/datum/reagent/consumable/potato_juice = 10) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/kahlua name = "Kahlua" - id = "kahlua" - results = list("kahlua" = 5) - required_reagents = list("coffee" = 5, "sugar" = 5) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/kahlua + results = list(/datum/reagent/consumable/ethanol/kahlua = 5) + required_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/sugar = 5) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/gin_tonic name = "Gin and Tonic" - id = "gintonic" - results = list("gintonic" = 3) - required_reagents = list("gin" = 2, "tonic" = 1) + id = /datum/reagent/consumable/ethanol/gintonic + results = list(/datum/reagent/consumable/ethanol/gintonic = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/tonic = 1) /datum/chemical_reaction/rum_coke name = "Rum and Coke" - id = "rumcoke" - results = list("rumcoke" = 3) - required_reagents = list("rum" = 2, "cola" = 1) + id = /datum/reagent/consumable/ethanol/rum_coke + results = list(/datum/reagent/consumable/ethanol/rum_coke = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/space_cola = 1) /datum/chemical_reaction/cuba_libre name = "Cuba Libre" - id = "cubalibre" - results = list("cubalibre" = 4) - required_reagents = list("rumcoke" = 3, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/cuba_libre + results = list(/datum/reagent/consumable/ethanol/cuba_libre = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/rum_coke = 3, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/martini name = "Classic Martini" - id = "martini" - results = list("martini" = 3) - required_reagents = list("gin" = 2, "vermouth" = 1) + id = /datum/reagent/consumable/ethanol/martini + results = list(/datum/reagent/consumable/ethanol/martini = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/ethanol/vermouth = 1) /datum/chemical_reaction/vodkamartini name = "Vodka Martini" - id = "vodkamartini" - results = list("vodkamartini" = 3) - required_reagents = list("vodka" = 2, "vermouth" = 1) + id = /datum/reagent/consumable/ethanol/vodkamartini + results = list(/datum/reagent/consumable/ethanol/vodkamartini = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/ethanol/vermouth = 1) /datum/chemical_reaction/white_russian name = "White Russian" - id = "whiterussian" - results = list("whiterussian" = 5) - required_reagents = list("blackrussian" = 3, "cream" = 2) + id = /datum/reagent/consumable/ethanol/white_russian + results = list(/datum/reagent/consumable/ethanol/white_russian = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/black_russian = 3, /datum/reagent/consumable/cream = 2) /datum/chemical_reaction/whiskey_cola name = "Whiskey Cola" - id = "whiskeycola" - results = list("whiskeycola" = 3) - required_reagents = list("whiskey" = 2, "cola" = 1) + id = /datum/reagent/consumable/ethanol/whiskey_cola + results = list(/datum/reagent/consumable/ethanol/whiskey_cola = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/space_cola = 1) /datum/chemical_reaction/screwdriver name = "Screwdriver" - id = "screwdrivercocktail" - results = list("screwdrivercocktail" = 3) - required_reagents = list("vodka" = 2, "orangejuice" = 1) + id = /datum/reagent/consumable/ethanol/screwdrivercocktail + results = list(/datum/reagent/consumable/ethanol/screwdrivercocktail = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/orangejuice = 1) /datum/chemical_reaction/bloody_mary name = "Bloody Mary" - id = "bloodymary" - results = list("bloodymary" = 4) - required_reagents = list("vodka" = 1, "tomatojuice" = 2, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/bloody_mary + results = list(/datum/reagent/consumable/ethanol/bloody_mary = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/tomatojuice = 2, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/gargle_blaster name = "Pan-Galactic Gargle Blaster" - id = "gargleblaster" - results = list("gargleblaster" = 5) - required_reagents = list("vodka" = 1, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/gargle_blaster + results = list(/datum/reagent/consumable/ethanol/gargle_blaster = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/gin = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/ethanol/cognac = 1, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/brave_bull name = "Brave Bull" - id = "bravebull" - results = list("bravebull" = 3) - required_reagents = list("tequila" = 2, "kahlua" = 1) + id = /datum/reagent/consumable/ethanol/brave_bull + results = list(/datum/reagent/consumable/ethanol/brave_bull = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/ethanol/kahlua = 1) /datum/chemical_reaction/tequila_sunrise name = "Tequila Sunrise" - id = "tequilasunrise" - results = list("tequilasunrise" = 5) - required_reagents = list("tequila" = 2, "orangejuice" = 2, "grenadine" = 1) + id = /datum/reagent/consumable/ethanol/tequila_sunrise + results = list(/datum/reagent/consumable/ethanol/tequila_sunrise = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/orangejuice = 2, /datum/reagent/consumable/grenadine = 1) /datum/chemical_reaction/toxins_special name = "Toxins Special" - id = "toxinsspecial" - results = list("toxinsspecial" = 5) - required_reagents = list("rum" = 2, "vermouth" = 1, "plasma" = 2) + id = /datum/reagent/consumable/ethanol/toxins_special + results = list(/datum/reagent/consumable/ethanol/toxins_special = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/ethanol/vermouth = 1, /datum/reagent/toxin/plasma = 2) /datum/chemical_reaction/beepsky_smash name = "Beepksy Smash" - id = "beepksysmash" - results = list("beepskysmash" = 5) - required_reagents = list("limejuice" = 2, "quadruple_sec" = 2, "iron" = 1) + id = /datum/reagent/consumable/ethanol/beepsky_smash + results = list(/datum/reagent/consumable/ethanol/beepsky_smash = 5) + required_reagents = list(/datum/reagent/consumable/limejuice = 2, /datum/reagent/consumable/ethanol/quadruple_sec = 2, /datum/reagent/iron = 1) /datum/chemical_reaction/doctor_delight name = "The Doctor's Delight" - id = "doctordelight" - results = list("doctorsdelight" = 5) - required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1, "cryoxadone" = 1) + id = /datum/reagent/consumable/doctor_delight + results = list(/datum/reagent/consumable/doctor_delight = 5) + required_reagents = list(/datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/consumable/orangejuice = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/medicine/cryoxadone = 1) /datum/chemical_reaction/irish_cream name = "Irish Cream" - id = "irishcream" - results = list("irishcream" = 3) - required_reagents = list("whiskey" = 2, "cream" = 1) + id = /datum/reagent/consumable/ethanol/irish_cream + results = list(/datum/reagent/consumable/ethanol/irish_cream = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/cream = 1) /datum/chemical_reaction/manly_dorf name = "The Manly Dorf" - id = "manlydorf" - results = list("manlydorf" = 3) - required_reagents = list ("beer" = 1, "ale" = 2) + id = /datum/reagent/consumable/ethanol/manly_dorf + results = list(/datum/reagent/consumable/ethanol/manly_dorf = 3) + required_reagents = list (/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/ethanol/ale = 2) /datum/chemical_reaction/greenbeer name = "Green Beer" - id = "greenbeer" - results = list("greenbeer" = 10) - required_reagents = list("greencrayonpowder" = 1, "beer" = 10) + id = /datum/reagent/consumable/ethanol/beer/green + results = list(/datum/reagent/consumable/ethanol/beer/green = 10) + required_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/green = 1, /datum/reagent/consumable/ethanol/beer = 10) /datum/chemical_reaction/hooch name = "Hooch" - id = "hooch" - results = list("hooch" = 3) - required_reagents = list ("ethanol" = 2, "welding_fuel" = 1) - required_catalysts = list("enzyme" = 1) + id = /datum/reagent/consumable/ethanol/hooch + results = list(/datum/reagent/consumable/ethanol/hooch = 3) + required_reagents = list (/datum/reagent/consumable/ethanol = 2, /datum/reagent/fuel = 1) + required_catalysts = list(/datum/reagent/consumable/enzyme = 1) /datum/chemical_reaction/irish_coffee name = "Irish Coffee" - id = "irishcoffee" - results = list("irishcoffee" = 2) - required_reagents = list("irishcream" = 1, "coffee" = 1) + id = /datum/reagent/consumable/ethanol/irishcoffee + results = list(/datum/reagent/consumable/ethanol/irishcoffee = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/coffee = 1) /datum/chemical_reaction/b52 name = "B-52" - id = "b52" - results = list("b52" = 3) - required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1) + id = /datum/reagent/consumable/ethanol/b52 + results = list(/datum/reagent/consumable/ethanol/b52 = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/cognac = 1) /datum/chemical_reaction/atomicbomb name = "Atomic Bomb" - id = "atomicbomb" - results = list("atomicbomb" = 10) - required_reagents = list("b52" = 10, "uranium" = 1) + id = /datum/reagent/consumable/ethanol/atomicbomb + results = list(/datum/reagent/consumable/ethanol/atomicbomb = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/b52 = 10, /datum/reagent/uranium = 1) /datum/chemical_reaction/margarita name = "Margarita" - id = "margarita" - results = list("margarita" = 3) - required_reagents = list("tequila" = 2, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/margarita + results = list(/datum/reagent/consumable/ethanol/margarita = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/tequila = 2, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/longislandicedtea name = "Long Island Iced Tea" - id = "longislandicedtea" - results = list("longislandicedtea" = 4) - required_reagents = list("vodka" = 1, "gin" = 1, "tequila" = 1, "cubalibre" = 1) + id = /datum/reagent/consumable/ethanol/longislandicedtea + results = list(/datum/reagent/consumable/ethanol/longislandicedtea = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/gin = 1, /datum/reagent/consumable/ethanol/tequila = 1, /datum/reagent/consumable/ethanol/cuba_libre = 1) /datum/chemical_reaction/threemileisland name = "Three Mile Island Iced Tea" - id = "threemileisland" - results = list("threemileisland" = 10) - required_reagents = list("longislandicedtea" = 10, "uranium" = 1) + id = /datum/reagent/consumable/ethanol/threemileisland + results = list(/datum/reagent/consumable/ethanol/threemileisland = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/longislandicedtea = 10, /datum/reagent/uranium = 1) /datum/chemical_reaction/whiskeysoda name = "Whiskey Soda" - id = "whiskeysoda" - results = list("whiskeysoda" = 3) - required_reagents = list("whiskey" = 2, "sodawater" = 1) + id = /datum/reagent/consumable/ethanol/whiskeysoda + results = list(/datum/reagent/consumable/ethanol/whiskeysoda = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/sodawater = 1) /datum/chemical_reaction/black_russian name = "Black Russian" - id = "blackrussian" - results = list("blackrussian" = 5) - required_reagents = list("vodka" = 3, "kahlua" = 2) + id = /datum/reagent/consumable/ethanol/black_russian + results = list(/datum/reagent/consumable/ethanol/black_russian = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 3, /datum/reagent/consumable/ethanol/kahlua = 2) /datum/chemical_reaction/manhattan name = "Manhattan" - id = "manhattan" - results = list("manhattan" = 3) - required_reagents = list("whiskey" = 2, "vermouth" = 1) + id = /datum/reagent/consumable/ethanol/manhattan + results = list(/datum/reagent/consumable/ethanol/manhattan = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 2, /datum/reagent/consumable/ethanol/vermouth = 1) /datum/chemical_reaction/manhattan_proj name = "Manhattan Project" - id = "manhattan_proj" - results = list("manhattan_proj" = 10) - required_reagents = list("manhattan" = 10, "uranium" = 1) + id = /datum/reagent/consumable/ethanol/manhattan_proj + results = list(/datum/reagent/consumable/ethanol/manhattan_proj = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/manhattan = 10, /datum/reagent/uranium = 1) /datum/chemical_reaction/vodka_tonic name = "Vodka and Tonic" - id = "vodkatonic" - results = list("vodkatonic" = 3) - required_reagents = list("vodka" = 2, "tonic" = 1) + id = /datum/reagent/consumable/ethanol/vodkatonic + results = list(/datum/reagent/consumable/ethanol/vodkatonic = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/tonic = 1) /datum/chemical_reaction/gin_fizz name = "Gin Fizz" - id = "ginfizz" - results = list("ginfizz" = 4) - required_reagents = list("gin" = 2, "sodawater" = 1, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/ginfizz + results = list(/datum/reagent/consumable/ethanol/ginfizz = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/bahama_mama name = "Bahama mama" - id = "bahama_mama" - results = list("bahama_mama" = 6) - required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1) + id = /datum/reagent/consumable/ethanol/bahama_mama + results = list(/datum/reagent/consumable/ethanol/bahama_mama = 6) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/orangejuice = 2, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/singulo name = "Singulo" - id = "singulo" - results = list("singulo" = 10) - required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) + id = /datum/reagent/consumable/ethanol/singulo + results = list(/datum/reagent/consumable/ethanol/singulo = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 5, /datum/reagent/radium = 1, /datum/reagent/consumable/ethanol/wine = 5) /datum/chemical_reaction/alliescocktail name = "Allies Cocktail" - id = "alliescocktail" - results = list("alliescocktail" = 2) - required_reagents = list("martini" = 1, "vodka" = 1) + id = /datum/reagent/consumable/ethanol/alliescocktail + results = list(/datum/reagent/consumable/ethanol/alliescocktail = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/martini = 1, /datum/reagent/consumable/ethanol/vodka = 1) /datum/chemical_reaction/demonsblood name = "Demons Blood" - id = "demonsblood" - results = list("demonsblood" = 4) - required_reagents = list("rum" = 1, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) + id = /datum/reagent/consumable/ethanol/demonsblood + results = list(/datum/reagent/consumable/ethanol/demonsblood = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/spacemountainwind = 1, /datum/reagent/blood = 1, /datum/reagent/consumable/dr_gibb = 1) /datum/chemical_reaction/booger name = "Booger" - id = "booger" - results = list("booger" = 4) - required_reagents = list("cream" = 1, "banana" = 1, "rum" = 1, "watermelonjuice" = 1) + id = /datum/reagent/consumable/ethanol/booger + results = list(/datum/reagent/consumable/ethanol/booger = 4) + required_reagents = list(/datum/reagent/consumable/cream = 1, /datum/reagent/consumable/banana = 1, /datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/watermelonjuice = 1) /datum/chemical_reaction/antifreeze name = "Anti-freeze" - id = "antifreeze" - results = list("antifreeze" = 4) - required_reagents = list("vodka" = 2, "cream" = 1, "ice" = 1) + id = /datum/reagent/consumable/ethanol/antifreeze + results = list(/datum/reagent/consumable/ethanol/antifreeze = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 2, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/barefoot name = "Barefoot" - id = "barefoot" - results = list("barefoot" = 3) - required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) + id = /datum/reagent/consumable/ethanol/barefoot + results = list(/datum/reagent/consumable/ethanol/barefoot = 3) + required_reagents = list(/datum/reagent/consumable/berryjuice = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/ethanol/vermouth = 1) ////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri///// /datum/chemical_reaction/sbiten name = "Sbiten" - id = "sbiten" - results = list("sbiten" = 10) - required_reagents = list("vodka" = 10, "capsaicin" = 1) + id = /datum/reagent/consumable/ethanol/sbiten + results = list(/datum/reagent/consumable/ethanol/sbiten = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 10, /datum/reagent/consumable/capsaicin = 1) /datum/chemical_reaction/red_mead name = "Red Mead" - id = "red_mead" - results = list("red_mead" = 2) - required_reagents = list("blood" = 1, "mead" = 1) + id = /datum/reagent/consumable/ethanol/red_mead + results = list(/datum/reagent/consumable/ethanol/red_mead = 2) + required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/ethanol/mead = 1) /datum/chemical_reaction/mead name = "Mead" - id = "mead" - results = list("mead" = 2) - required_reagents = list("honey" = 2) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/mead + results = list(/datum/reagent/consumable/ethanol/mead = 2) + required_reagents = list(/datum/reagent/consumable/honey = 2) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/iced_beer name = "Iced Beer" - id = "iced_beer" - results = list("iced_beer" = 6) - required_reagents = list("beer" = 5, "ice" = 1) + id = /datum/reagent/consumable/ethanol/iced_beer + results = list(/datum/reagent/consumable/ethanol/iced_beer = 6) + required_reagents = list(/datum/reagent/consumable/ethanol/beer = 5, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/grog name = "Grog" - id = "grog" - results = list("grog" = 2) - required_reagents = list("rum" = 1, "water" = 1) + id = /datum/reagent/consumable/ethanol/grog + results = list(/datum/reagent/consumable/ethanol/grog = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/water = 1) /datum/chemical_reaction/soy_latte name = "Soy Latte" - id = "soy_latte" - results = list("soy_latte" = 2) - required_reagents = list("coffee" = 1, "soymilk" = 1) + id = /datum/reagent/consumable/soy_latte + results = list(/datum/reagent/consumable/soy_latte = 2) + required_reagents = list(/datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/soymilk = 1) /datum/chemical_reaction/cafe_latte name = "Cafe Latte" - id = "cafe_latte" - results = list("cafe_latte" = 2) - required_reagents = list("coffee" = 1, "milk" = 1) + id = /datum/reagent/consumable/cafe_latte + results = list(/datum/reagent/consumable/cafe_latte = 2) + required_reagents = list(/datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/milk = 1) /datum/chemical_reaction/acidspit name = "Acid Spit" - id = "acidspit" - results = list("acidspit" = 6) - required_reagents = list("sacid" = 1, "wine" = 5) + id = /datum/reagent/consumable/ethanol/acid_spit + results = list(/datum/reagent/consumable/ethanol/acid_spit = 6) + required_reagents = list(/datum/reagent/toxin/acid = 1, /datum/reagent/consumable/ethanol/wine = 5) /datum/chemical_reaction/amasec name = "Amasec" - id = "amasec" - results = list("amasec" = 10) - required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) + id = /datum/reagent/consumable/ethanol/amasec + results = list(/datum/reagent/consumable/ethanol/amasec = 10) + required_reagents = list(/datum/reagent/iron = 1, /datum/reagent/consumable/ethanol/wine = 5, /datum/reagent/consumable/ethanol/vodka = 5) /datum/chemical_reaction/changelingsting name = "Changeling Sting" - id = "changelingsting" - results = list("changelingsting" = 5) - required_reagents = list("screwdrivercocktail" = 1, "lemon_lime" = 2) + id = /datum/reagent/consumable/ethanol/changelingsting + results = list(/datum/reagent/consumable/ethanol/changelingsting = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/screwdrivercocktail = 1, /datum/reagent/consumable/lemon_lime = 2) /datum/chemical_reaction/aloe name = "Aloe" - id = "aloe" - results = list("aloe" = 2) - required_reagents = list("irishcream" = 1, "watermelonjuice" = 1) + id = /datum/reagent/consumable/ethanol/aloe + results = list(/datum/reagent/consumable/ethanol/aloe = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/irish_cream = 1, /datum/reagent/consumable/watermelonjuice = 1) /datum/chemical_reaction/andalusia name = "Andalusia" - id = "andalusia" - results = list("andalusia" = 3) - required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1) + id = /datum/reagent/consumable/ethanol/andalusia + results = list(/datum/reagent/consumable/ethanol/andalusia = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/lemonjuice = 1) /datum/chemical_reaction/neurotoxin name = "Neurotoxin" - id = "neurotoxin" - results = list("neurotoxin" = 2) - required_reagents = list("gargleblaster" = 1, "morphine" = 1) + id = /datum/reagent/consumable/ethanol/neurotoxin + results = list(/datum/reagent/consumable/ethanol/neurotoxin = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/gargle_blaster = 1, /datum/reagent/medicine/morphine = 1) //FermiChem vars: Easy to make, but hard to make potent OptimalTempMin = 100 // Lower area of bell curve for determining heat based rate reactions OptimalTempMax = 950 // Upper end for above @@ -404,8 +404,8 @@ var/datum/reagent/consumable/ethanol/neurotoxin/Nt = locate(/datum/reagent/consumable/ethanol/neurotoxin) in my_atom.reagents.reagent_list var/cached_volume = Nt.volume if(Nt.purity < 0.5) - holder.remove_reagent(src.id, cached_volume) - holder.add_reagent("neuroweak", cached_volume) + holder.remove_reagent(type, cached_volume) + holder.add_reagent(/datum/reagent/consumable/ethanol/neuroweak, cached_volume) */ /datum/chemical_reaction/neurotoxin/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//reduced size @@ -414,415 +414,415 @@ /datum/chemical_reaction/snowwhite name = "Snow White" - id = "snowwhite" - results = list("snowwhite" = 2) - required_reagents = list("beer" = 1, "lemon_lime" = 1) + id = /datum/reagent/consumable/ethanol/snowwhite + results = list(/datum/reagent/consumable/ethanol/snowwhite = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/lemon_lime = 1) /datum/chemical_reaction/irishcarbomb name = "Irish Car Bomb" - id = "irishcarbomb" - results = list("irishcarbomb" = 2) - required_reagents = list("ale" = 1, "irishcream" = 1) + id = /datum/reagent/consumable/ethanol/irishcarbomb + results = list(/datum/reagent/consumable/ethanol/irishcarbomb = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/ale = 1, /datum/reagent/consumable/ethanol/irish_cream = 1) /datum/chemical_reaction/syndicatebomb name = "Syndicate Bomb" - id = "syndicatebomb" - results = list("syndicatebomb" = 2) - required_reagents = list("beer" = 1, "whiskeycola" = 1) + id = /datum/reagent/consumable/ethanol/syndicatebomb + results = list(/datum/reagent/consumable/ethanol/syndicatebomb = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/beer = 1, /datum/reagent/consumable/ethanol/whiskey_cola = 1) /datum/chemical_reaction/erikasurprise name = "Erika Surprise" - id = "erikasurprise" - results = list("erikasurprise" = 5) - required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1) + id = /datum/reagent/consumable/ethanol/erikasurprise + results = list(/datum/reagent/consumable/ethanol/erikasurprise = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/ale = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/banana = 1, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/devilskiss name = "Devils Kiss" - id = "devilskiss" - results = list("devilskiss" = 3) - required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) + id = /datum/reagent/consumable/ethanol/devilskiss + results = list(/datum/reagent/consumable/ethanol/devilskiss = 3) + required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/rum = 1) /datum/chemical_reaction/hippiesdelight name = "Hippies Delight" - id = "hippiesdelight" - results = list("hippiesdelight" = 2) - required_reagents = list("mushroomhallucinogen" = 1, "gargleblaster" = 1) + id = /datum/reagent/consumable/ethanol/hippies_delight + results = list(/datum/reagent/consumable/ethanol/hippies_delight = 2) + required_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 1, /datum/reagent/consumable/ethanol/gargle_blaster = 1) /datum/chemical_reaction/bananahonk name = "Banana Honk" - id = "bananahonk" - results = list("bananahonk" = 2) - required_reagents = list("laughter" = 1, "cream" = 1) + id = /datum/reagent/consumable/ethanol/bananahonk + results = list(/datum/reagent/consumable/ethanol/bananahonk = 2) + required_reagents = list(/datum/reagent/consumable/laughter = 1, /datum/reagent/consumable/cream = 1) /datum/chemical_reaction/silencer name = "Silencer" - id = "silencer" - results = list("silencer" = 3) - required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) + id = /datum/reagent/consumable/ethanol/silencer + results = list(/datum/reagent/consumable/ethanol/silencer = 3) + required_reagents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/driestmartini name = "Driest Martini" - id = "driestmartini" - results = list("driestmartini" = 2) - required_reagents = list("nothing" = 1, "gin" = 1) + id = /datum/reagent/consumable/ethanol/driestmartini + results = list(/datum/reagent/consumable/ethanol/driestmartini = 2) + required_reagents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/ethanol/gin = 1) /datum/chemical_reaction/thirteenloko name = "Thirteen Loko" - id = "thirteenloko" - results = list("thirteenloko" = 3) - required_reagents = list("vodka" = 1, "coffee" = 1, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/thirteenloko + results = list(/datum/reagent/consumable/ethanol/thirteenloko = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/coffee = 1, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/chocolatepudding name = "Chocolate Pudding" - id = "chocolatepudding" - results = list("chocolatepudding" = 20) - required_reagents = list("chocolate_milk" = 10, "eggyolk" = 5) + id = /datum/reagent/consumable/chocolatepudding + results = list(/datum/reagent/consumable/chocolatepudding = 20) + required_reagents = list(/datum/reagent/consumable/milk/chocolate_milk = 10, /datum/reagent/consumable/eggyolk = 5) /datum/chemical_reaction/vanillapudding name = "Vanilla Pudding" - id = "vanillapudding" - results = list("vanillapudding" = 20) - required_reagents = list("vanilla" = 5, "milk" = 5, "eggyolk" = 5) + id = /datum/reagent/consumable/vanillapudding + results = list(/datum/reagent/consumable/vanillapudding = 20) + required_reagents = list(/datum/reagent/consumable/vanilla = 5, /datum/reagent/consumable/milk = 5, /datum/reagent/consumable/eggyolk = 5) /datum/chemical_reaction/drunkenblumpkin name = "Drunken Blumpkin" - id = "drunkenblumpkin" - results = list("drunkenblumpkin" = 4) - required_reagents = list("blumpkinjuice" = 1, "irishcream" = 2, "ice" = 1) + id = /datum/reagent/consumable/ethanol/drunkenblumpkin + results = list(/datum/reagent/consumable/ethanol/drunkenblumpkin = 4) + required_reagents = list(/datum/reagent/consumable/blumpkinjuice = 1, /datum/reagent/consumable/ethanol/irish_cream = 2, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/pumpkin_latte name = "Pumpkin space latte" - id = "pumpkin_latte" - results = list("pumpkin_latte" = 15) - required_reagents = list("pumpkinjuice" = 5, "coffee" = 5, "cream" = 5) + id = /datum/reagent/consumable/pumpkin_latte + results = list(/datum/reagent/consumable/pumpkin_latte = 15) + required_reagents = list(/datum/reagent/consumable/pumpkinjuice = 5, /datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/cream = 5) /datum/chemical_reaction/gibbfloats name = "Gibb Floats" - id = "gibbfloats" - results = list("gibbfloats" = 15) - required_reagents = list("dr_gibb" = 5, "ice" = 5, "cream" = 5) + id = /datum/reagent/consumable/gibbfloats + results = list(/datum/reagent/consumable/gibbfloats = 15) + required_reagents = list(/datum/reagent/consumable/dr_gibb = 5, /datum/reagent/consumable/ice = 5, /datum/reagent/consumable/cream = 5) /datum/chemical_reaction/triple_citrus name = "triple_citrus" - id = "triple_citrus" - results = list("triple_citrus" = 5) - required_reagents = list("lemonjuice" = 1, "limejuice" = 1, "orangejuice" = 1) + id = /datum/reagent/consumable/triple_citrus + results = list(/datum/reagent/consumable/triple_citrus = 5) + required_reagents = list(/datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/orangejuice = 1) /datum/chemical_reaction/grape_soda name = "grape soda" - id = "grapesoda" - results = list("grapesoda" = 2) - required_reagents = list("grapejuice" = 1, "sodawater" = 1) + id = /datum/reagent/consumable/grape_soda + results = list(/datum/reagent/consumable/grape_soda = 2) + required_reagents = list(/datum/reagent/consumable/grapejuice = 1, /datum/reagent/consumable/sodawater = 1) /datum/chemical_reaction/grappa name = "grappa" - id = "grappa" - results = list("grappa" = 10) - required_reagents = list ("wine" = 10) - required_catalysts = list ("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/grappa + results = list(/datum/reagent/consumable/ethanol/grappa = 10) + required_reagents = list (/datum/reagent/consumable/ethanol/wine = 10) + required_catalysts = list (/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/whiskey_sour name = "Whiskey Sour" - id = "whiskey_sour" - results = list("whiskey_sour" = 3) - required_reagents = list("whiskey" = 1, "lemonjuice" = 1, "sugar" = 1) + id = /datum/reagent/consumable/ethanol/whiskey_sour + results = list(/datum/reagent/consumable/ethanol/whiskey_sour = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 1, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/sugar = 1) mix_message = "The mixture darkens to a rich gold hue." /datum/chemical_reaction/fetching_fizz name = "Fetching Fizz" - id = "fetching_fizz" - results = list("fetching_fizz" = 3) - required_reagents = list("nuka_cola" = 1, "iron" = 1) //Manufacturable from only the mining station + id = /datum/reagent/consumable/ethanol/fetching_fizz + results = list(/datum/reagent/consumable/ethanol/fetching_fizz = 3) + required_reagents = list(/datum/reagent/consumable/nuka_cola = 1, /datum/reagent/iron = 1) //Manufacturable from only the mining station mix_message = "The mixture slightly vibrates before settling." /datum/chemical_reaction/hearty_punch name = "Hearty Punch" - id = "hearty_punch" - results = list("hearty_punch" = 1) //Very little, for balance reasons - required_reagents = list("bravebull" = 5, "syndicatebomb" = 5, "absinthe" = 5) + id = /datum/reagent/consumable/ethanol/hearty_punch + results = list(/datum/reagent/consumable/ethanol/hearty_punch = 1) //Very little, for balance reasons + required_reagents = list(/datum/reagent/consumable/ethanol/brave_bull = 5, /datum/reagent/consumable/ethanol/syndicatebomb = 5, /datum/reagent/consumable/ethanol/absinthe = 5) mix_message = "The mixture darkens to a healthy crimson." required_temp = 315 //Piping hot! /datum/chemical_reaction/bacchus_blessing name = "Bacchus' Blessing" - id = "bacchus_blessing" - results = list("bacchus_blessing" = 4) - required_reagents = list("hooch" = 1, "absinthe" = 1, "manlydorf" = 1, "syndicatebomb" = 1) + id = /datum/reagent/consumable/ethanol/bacchus_blessing + results = list(/datum/reagent/consumable/ethanol/bacchus_blessing = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/hooch = 1, /datum/reagent/consumable/ethanol/absinthe = 1, /datum/reagent/consumable/ethanol/manly_dorf = 1, /datum/reagent/consumable/ethanol/syndicatebomb = 1) mix_message = "The mixture turns to a sickening froth." /datum/chemical_reaction/lemonade name = "Lemonade" - id = "lemonade" - results = list("lemonade" = 5) - required_reagents = list("lemonjuice" = 2, "water" = 2, "sugar" = 1, "ice" = 1) + id = /datum/reagent/consumable/lemonade + results = list(/datum/reagent/consumable/lemonade = 5) + required_reagents = list(/datum/reagent/consumable/lemonjuice = 2, /datum/reagent/water = 2, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/ice = 1) mix_message = "You're suddenly reminded of home." /datum/chemical_reaction/arnold_palmer name = "Arnold Palmer" - id = "arnold_palmer" - results = list("arnold_palmer" = 2) - required_reagents = list("tea" = 1, "lemonade" = 1) + id = /datum/reagent/consumable/tea/arnold_palmer + results = list(/datum/reagent/consumable/tea/arnold_palmer = 2) + required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/lemonade = 1) mix_message = "The smells of fresh green grass and sand traps waft through the air as the mixture turns a friendly yellow-orange." /datum/chemical_reaction/chocolate_milk name = "chocolate milk" - id = "chocolate_milk" - results = list("chocolate_milk" = 2) - required_reagents = list("milk" = 1, "cocoa" = 1) + id = /datum/reagent/consumable/milk/chocolate_milk + results = list(/datum/reagent/consumable/milk/chocolate_milk = 2) + required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/coco = 1) mix_message = "The color changes as the mixture blends smoothly." /datum/chemical_reaction/eggnog name = "eggnog" - id = "eggnog" - results = list("eggnog" = 15) - required_reagents = list("rum" = 5, "cream" = 5, "eggyolk" = 5) + id = /datum/reagent/consumable/ethanol/eggnog + results = list(/datum/reagent/consumable/ethanol/eggnog = 15) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 5, /datum/reagent/consumable/cream = 5, /datum/reagent/consumable/eggyolk = 5) /datum/chemical_reaction/narsour name = "Nar'sour" - id = "narsour" - results = list("narsour" = 1) - required_reagents = list("blood" = 1, "lemonjuice" = 1, "demonsblood" = 1) + id = /datum/reagent/consumable/ethanol/narsour + results = list(/datum/reagent/consumable/ethanol/narsour = 1) + required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/demonsblood = 1) mix_message = "The mixture develops a sinister glow." mix_sound = 'sound/effects/singlebeat.ogg' /datum/chemical_reaction/quadruplesec name = "Quadruple Sec" - id = "quadruple_sec" - results = list("quadruple_sec" = 15) - required_reagents = list("triple_sec" = 5, "triple_citrus" = 5, "creme_de_menthe" = 5) + id = /datum/reagent/consumable/ethanol/quadruple_sec + results = list(/datum/reagent/consumable/ethanol/quadruple_sec = 15) + required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 5, /datum/reagent/consumable/triple_citrus = 5, /datum/reagent/consumable/ethanol/creme_de_menthe = 5) mix_message = "The snap of a taser emanates clearly from the mixture as it settles." mix_sound = 'sound/weapons/taser.ogg' /datum/chemical_reaction/grasshopper name = "Grasshopper" - id = "grasshopper" - results = list("grasshopper" = 15) - required_reagents = list("cream" = 5, "creme_de_menthe" = 5, "creme_de_cacao" = 5) + id = /datum/reagent/consumable/ethanol/grasshopper + results = list(/datum/reagent/consumable/ethanol/grasshopper = 15) + required_reagents = list(/datum/reagent/consumable/cream = 5, /datum/reagent/consumable/ethanol/creme_de_menthe = 5, /datum/reagent/consumable/ethanol/creme_de_cacao = 5) mix_message = "A vibrant green bubbles forth as the mixture emulsifies." /datum/chemical_reaction/stinger name = "Stinger" - id = "stinger" - results = list("stinger" = 15) - required_reagents = list("whiskey" = 10, "creme_de_menthe" = 5 ) + id = /datum/reagent/consumable/ethanol/stinger + results = list(/datum/reagent/consumable/ethanol/stinger = 15) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 10, /datum/reagent/consumable/ethanol/creme_de_menthe = 5) /datum/chemical_reaction/quintuplesec name = "Quintuple Sec" - id = "quintuple_sec" - results = list("quintuple_sec" = 15) - required_reagents = list("quadruple_sec" = 5, "clownstears" = 5, "syndicatebomb" = 5) + id = /datum/reagent/consumable/ethanol/quintuple_sec + results = list(/datum/reagent/consumable/ethanol/quintuple_sec = 15) + required_reagents = list(/datum/reagent/consumable/ethanol/quadruple_sec = 5, /datum/reagent/consumable/clownstears = 5, /datum/reagent/consumable/ethanol/syndicatebomb = 5) mix_message = "Judgement is upon you." mix_message = 'sound/items/airhorn2.ogg' /datum/chemical_reaction/bastion_bourbon name = "Bastion Bourbon" - id = "bastion_bourbon" - results = list("bastion_bourbon" = 2) - required_reagents = list("tea" = 1, "creme_de_menthe" = 1, "triple_citrus" = 1, "berryjuice" = 1) //herbal and minty, with a hint of citrus and berry + id = /datum/reagent/consumable/ethanol/bastion_bourbon + results = list(/datum/reagent/consumable/ethanol/bastion_bourbon = 2) + required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/triple_citrus = 1, /datum/reagent/consumable/berryjuice = 1) //herbal and minty, with a hint of citrus and berry mix_message = "You catch an aroma of hot tea and fruits as the mix blends into a blue-green color." /datum/chemical_reaction/squirt_cider name = "Squirt Cider" - id = "squirt_cider" - results = list("squirt_cider" = 1) - required_reagents = list("water" = 1, "tomatojuice" = 1, "nutriment" = 1) + id = /datum/reagent/consumable/ethanol/squirt_cider + results = list(/datum/reagent/consumable/ethanol/squirt_cider = 1) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/consumable/nutriment = 1) mix_message = "The mix swirls and turns a bright red that reminds you of an apple's skin." /datum/chemical_reaction/fringe_weaver name = "Fringe Weaver" - id = "fringe_weaver" - results = list("fringe_weaver" = 10) - required_reagents = list("ethanol" = 9, "sugar" = 1) //9 karmotrine, 1 adelhyde + id = /datum/reagent/consumable/ethanol/fringe_weaver + results = list(/datum/reagent/consumable/ethanol/fringe_weaver = 10) + required_reagents = list(/datum/reagent/consumable/ethanol = 9, /datum/reagent/consumable/sugar = 1) //9 karmotrine, 1 adelhyde mix_message = "The mix turns a pleasant cream color and foams up." /datum/chemical_reaction/sugar_rush name = "Sugar Rush" - id = "sugar_rush" - results = list("sugar_rush" = 4) - required_reagents = list("sugar" = 2, "lemonjuice" = 1, "wine" = 1) //2 adelhyde (sweet), 1 powdered delta (sour), 1 karmotrine (alcohol) + id = /datum/reagent/consumable/ethanol/sugar_rush + results = list(/datum/reagent/consumable/ethanol/sugar_rush = 4) + required_reagents = list(/datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/wine = 1) //2 adelhyde (sweet), 1 powdered delta (sour), 1 karmotrine (alcohol) mix_message = "The mixture bubbles and brightens into a girly pink." /datum/chemical_reaction/crevice_spike name = "Crevice Spike" - id = "crevice_spike" - results = list("crevice_spike" = 6) - required_reagents = list("limejuice" = 2, "capsaicin" = 4) //2 powdered delta (sour), 4 flanergide (spicy) + id = /datum/reagent/consumable/ethanol/crevice_spike + results = list(/datum/reagent/consumable/ethanol/crevice_spike = 6) + required_reagents = list(/datum/reagent/consumable/limejuice = 2, /datum/reagent/consumable/capsaicin = 4) //2 powdered delta (sour), 4 flanergide (spicy) mix_message = "The mixture stings your eyes as it settles." /datum/chemical_reaction/sake name = "sake" - id = "sake" - results = list("sake" = 10) - required_reagents = list("rice" = 10) - required_catalysts = list("enzyme" = 5) + id = /datum/reagent/consumable/ethanol/sake + results = list(/datum/reagent/consumable/ethanol/sake = 10) + required_reagents = list(/datum/reagent/consumable/rice = 10) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) mix_message = "The rice grains ferment into a clear, sweet-smelling liquid." /datum/chemical_reaction/peppermint_patty name = "Peppermint Patty" - id = "peppermint_patty" - results = list("peppermint_patty" = 10) - required_reagents = list("hot_coco" = 6, "creme_de_cacao" = 1, "creme_de_menthe" = 1, "vodka" = 1, "menthol" = 1) + id = /datum/reagent/consumable/ethanol/peppermint_patty + results = list(/datum/reagent/consumable/ethanol/peppermint_patty = 10) + required_reagents = list(/datum/reagent/consumable/hot_coco = 6, /datum/reagent/consumable/ethanol/creme_de_cacao = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/menthol = 1) mix_message = "The coco turns mint green just as the strong scent hits your nose." /datum/chemical_reaction/alexander name = "Alexander" - id = "alexander" - results = list("alexander" = 3) - required_reagents = list("cognac" = 1, "creme_de_cacao" = 1, "cream" = 1) + id = /datum/reagent/consumable/ethanol/alexander + results = list(/datum/reagent/consumable/ethanol/alexander = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/cognac = 1, /datum/reagent/consumable/ethanol/creme_de_cacao = 1, /datum/reagent/consumable/cream = 1) /datum/chemical_reaction/sidecar name = "Sidecar" - id = "sidecar" - results = list("sidecar" = 4) - required_reagents = list("cognac" = 2, "triple_sec" = 1, "lemonjuice" = 1) + id = /datum/reagent/consumable/ethanol/sidecar + results = list(/datum/reagent/consumable/ethanol/sidecar = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/cognac = 2, /datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/lemonjuice = 1) /datum/chemical_reaction/between_the_sheets name = "Between the Sheets" - id = "between_the_sheets" - results = list("between_the_sheets" = 5) - required_reagents = list("rum" = 1, "sidecar" = 4) + id = /datum/reagent/consumable/ethanol/between_the_sheets + results = list(/datum/reagent/consumable/ethanol/between_the_sheets = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/ethanol/sidecar = 4) /datum/chemical_reaction/kamikaze name = "Kamikaze" - id = "kamikaze" - results = list("kamikaze" = 3) - required_reagents = list("vodka" = 1, "triple_sec" = 1, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/kamikaze + results = list(/datum/reagent/consumable/ethanol/kamikaze = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/vodka = 1, /datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/limejuice = 1) /datum/chemical_reaction/mojito name = "Mojito" - id = "mojito" - results = list("mojito" = 5) - required_reagents = list("rum" = 1, "sugar" = 1, "limejuice" = 1, "sodawater" = 1, "menthol" = 1) + id = /datum/reagent/consumable/ethanol/mojito + results = list(/datum/reagent/consumable/ethanol/mojito = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/menthol = 1) /datum/chemical_reaction/fernet_cola name = "Fernet Cola" - id = "fernet_cola" - results = list("fernet_cola" = 2) - required_reagents = list("fernet" = 1, "cola" = 1) + id = /datum/reagent/consumable/ethanol/fernet_cola + results = list(/datum/reagent/consumable/ethanol/fernet_cola = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/fernet = 1, /datum/reagent/consumable/space_cola = 1) /datum/chemical_reaction/fanciulli name = "Fanciulli" - id = "fanciulli" - results = list("fanciulli" = 2) - required_reagents = list("manhattan" = 1, "fernet" = 1) + id = /datum/reagent/consumable/ethanol/fanciulli + results = list(/datum/reagent/consumable/ethanol/fanciulli = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/manhattan = 1, /datum/reagent/consumable/ethanol/fernet = 1) /datum/chemical_reaction/branca_menta name = "Branca Menta" - id = "branca_menta" - results = list("branca_menta" = 3) - required_reagents = list("fernet" = 1, "creme_de_menthe" = 1, "ice" = 1) + id = /datum/reagent/consumable/ethanol/branca_menta + results = list(/datum/reagent/consumable/ethanol/branca_menta = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/fernet = 1, /datum/reagent/consumable/ethanol/creme_de_menthe = 1, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/pwrgame name = "Power Gamer" - id = "pwr_game" - results = list("pwr_game" = 5) - required_reagents = list("sodawater" = 1, "blackcrayonpowder" = 1, "sodiumchloride" = 1) + id = /datum/reagent/consumable/pwr_game + results = list(/datum/reagent/consumable/pwr_game = 5) + required_reagents = list(/datum/reagent/consumable/sodawater = 1, /datum/reagent/colorful_reagent/crayonpowder/black = 1, /datum/reagent/consumable/sodiumchloride = 1) /datum/chemical_reaction/pinkmilk name = "Strawberry Milk" - id = "pinkmilk" - results = list("pinkmilk" = 5) - required_reagents = list("aphro+" = 1, "milk" = 1) + id = /datum/reagent/consumable/pinkmilk + results = list(/datum/reagent/consumable/pinkmilk = 5) + required_reagents = list(/datum/reagent/drug/aphrodisiacplus = 1, /datum/reagent/consumable/milk = 1) /datum/chemical_reaction/pinktea name = "Strawberry Tea" - id = "pinktea" - results = list("pinktea" = 5) - required_reagents = list("aphro" = 1, "arnold_palmer" = 1, "sugar" = 1) + id = /datum/reagent/consumable/pinktea + results = list(/datum/reagent/consumable/pinktea = 5) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/consumable/tea/arnold_palmer = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/blank_paper name = "Blank Paper" - id = "blank_paper" - results = list("blank_paper" = 3) - required_reagents = list("silencer" = 1, "nothing" = 1, "nuka_cola" = 1) + id = /datum/reagent/consumable/ethanol/blank_paper + results = list(/datum/reagent/consumable/ethanol/blank_paper = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/silencer = 1, /datum/reagent/consumable/nothing = 1, /datum/reagent/consumable/nuka_cola = 1) /datum/chemical_reaction/wizz_fizz name = "Wizz Fizz" - id = "wizz_fizz" - results = list("wizz_fizz" = 3) - required_reagents = list("triple_sec" = 1, "sodawater" = 1, "champagne" = 1) + id = /datum/reagent/consumable/ethanol/wizz_fizz + results = list(/datum/reagent/consumable/ethanol/wizz_fizz = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 1, /datum/reagent/consumable/sodawater = 1, /datum/reagent/consumable/ethanol/champagne = 1) mix_message = "The beverage starts to froth with an almost mystical zeal!" mix_sound = 'sound/effects/bubbles2.ogg' /datum/chemical_reaction/bug_spray name = "Bug Spray" - id = "bug_spray" - results = list("bug_spray" = 5) - required_reagents = list("triple_sec" = 2, "lemon_lime" = 1, "rum" = 2, "vodka" = 1) + id = /datum/reagent/consumable/ethanol/bug_spray + results = list(/datum/reagent/consumable/ethanol/bug_spray = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/triple_sec = 2, /datum/reagent/consumable/lemon_lime = 1, /datum/reagent/consumable/ethanol/rum = 2, /datum/reagent/consumable/ethanol/vodka = 1) mix_message = "The faint aroma of summer camping trips wafts through the air; but what's that buzzing noise?" mix_sound = 'sound/creatures/bee.ogg' /datum/chemical_reaction/jack_rose name = "Jack Rose" - id = "jack_rose" - results = list("jack_rose" = 4) - required_reagents = list("grenadine" = 1, "applejack" = 2, "limejuice" = 1) + id = /datum/reagent/consumable/ethanol/jack_rose + results = list(/datum/reagent/consumable/ethanol/jack_rose = 4) + required_reagents = list(/datum/reagent/consumable/grenadine = 1, /datum/reagent/consumable/ethanol/applejack = 2, /datum/reagent/consumable/limejuice = 1) mix_message = "As the grenadine incorporates, the beverage takes on a mellow, red-orange glow." /datum/chemical_reaction/turbo name = "Turbo" - id = "turbo" - results = list("turbo" = 5) - required_reagents = list("moonshine" = 2, "nitrous_oxide" = 1, "sugar_rush" = 1, "pwr_game" = 1) + id = /datum/reagent/consumable/ethanol/turbo + results = list(/datum/reagent/consumable/ethanol/turbo = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/moonshine = 2, /datum/reagent/nitrous_oxide = 1, /datum/reagent/consumable/ethanol/sugar_rush = 1, /datum/reagent/consumable/pwr_game = 1) /datum/chemical_reaction/old_timer name = "Old Timer" - id = "old_timer" - results = list("old_timer" = 6) - required_reagents = list("whiskeysoda" = 3, "parsnipjuice" = 2, "alexander" = 1) + id = /datum/reagent/consumable/ethanol/old_timer + results = list(/datum/reagent/consumable/ethanol/old_timer = 6) + required_reagents = list(/datum/reagent/consumable/ethanol/whiskeysoda = 3, /datum/reagent/consumable/parsnipjuice = 2, /datum/reagent/consumable/ethanol/alexander = 1) /datum/chemical_reaction/rubberneck name = "Rubberneck" - id = "rubberneck" - results = list("rubberneck" = 10) - required_reagents = list("ethanol" = 4, "grey_bull" = 5, "astrotame" = 1) + id = /datum/reagent/consumable/ethanol/rubberneck + results = list(/datum/reagent/consumable/ethanol/rubberneck = 10) + required_reagents = list(/datum/reagent/consumable/ethanol = 4, /datum/reagent/consumable/grey_bull = 5, /datum/reagent/consumable/astrotame = 1) /datum/chemical_reaction/duplex name = "Duplex" - id = "duplex" - results = list("duplex" = 4) - required_reagents = list("hcider" = 2, "applejuice" = 1, "berryjuice" = 1) + id = /datum/reagent/consumable/ethanol/duplex + results = list(/datum/reagent/consumable/ethanol/duplex = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/hcider = 2, /datum/reagent/consumable/applejuice = 1, /datum/reagent/consumable/berryjuice = 1) /datum/chemical_reaction/trappist name = "Trappist" - id = "trappist" - results = list("trappist" = 5) - required_reagents = list("ale" = 2, "holywater" = 2, "sugar" = 1) + id = /datum/reagent/consumable/ethanol/trappist + results = list(/datum/reagent/consumable/ethanol/trappist = 5) + required_reagents = list(/datum/reagent/consumable/ethanol/ale = 2, /datum/reagent/water/holywater = 2, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/cream_soda name = "Cream Soda" - id = "cream_soda" - results = list("cream_soda" = 4) - required_reagents = list("sugar" = 2, "sodawater" = 2, "vanilla" = 1) + id = /datum/reagent/consumable/cream_soda + results = list(/datum/reagent/consumable/cream_soda = 4) + required_reagents = list(/datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/sodawater = 2, /datum/reagent/consumable/vanilla = 1) /datum/chemical_reaction/blazaam name = "Blazaam" - id = "blazaam" - results = list("blazaam" = 3) - required_reagents = list("gin" = 2, "peachjuice" = 1, "bluespace" = 1) + id = /datum/reagent/consumable/ethanol/blazaam + results = list(/datum/reagent/consumable/ethanol/blazaam = 3) + required_reagents = list(/datum/reagent/consumable/ethanol/gin = 2, /datum/reagent/consumable/peachjuice = 1, /datum/reagent/bluespace = 1) /datum/chemical_reaction/planet_cracker name = "Planet Cracker" - id = "planet_cracker" - results = list("planet_cracker" = 4) - required_reagents = list("champagne" = 2, "lizardwine" = 2, "eggyolk" = 1, "gold" = 1) + id = /datum/reagent/consumable/ethanol/planet_cracker + results = list(/datum/reagent/consumable/ethanol/planet_cracker = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/champagne = 2, /datum/reagent/consumable/ethanol/lizardwine = 2, /datum/reagent/consumable/eggyolk = 1, /datum/reagent/gold = 1) mix_message = "The liquid's color starts shifting as the nanogold is alternately corroded and redeposited." /datum/chemical_reaction/red_queen name = "Red Queen" - id = "red_queen" - results = list("red_queen" = 10) - required_reagents = list("tea" = 6, "mercury" = 2, "blackpepper" = 1, "growthserum" = 1) + id = /datum/reagent/consumable/red_queen + results = list(/datum/reagent/consumable/red_queen = 10) + required_reagents = list(/datum/reagent/consumable/tea = 6, /datum/reagent/mercury = 2, /datum/reagent/consumable/blackpepper = 1, /datum/reagent/growthserum = 1) /datum/chemical_reaction/catnip_tea name = "Catnip Tea" - id = "catnip_tea" - results = list("catnip_tea" = 3) - required_reagents = list("tea" = 5, "catnip" = 2) + id = /datum/reagent/consumable/catnip_tea + results = list(/datum/reagent/consumable/catnip_tea = 3) + required_reagents = list(/datum/reagent/consumable/tea = 5, /datum/reagent/pax/catnip = 2) /datum/chemical_reaction/commander_and_chief name = "Commander and Chief" - id = "commander_and_chief" - results = list("commander_and_chief" = 50) - required_reagents = list("alliescocktail" = 50, "champagne" = 20, "doctorsdelight" = 10, "quintuple_sec" = 10, "screwdrivercocktail" = 10) + id = /datum/reagent/consumable/ethanol/commander_and_chief + results = list(/datum/reagent/consumable/ethanol/commander_and_chief = 50) + required_reagents = list(/datum/reagent/consumable/ethanol/alliescocktail = 50, /datum/reagent/consumable/ethanol/champagne = 20, /datum/reagent/consumable/doctor_delight = 10, /datum/reagent/consumable/ethanol/quintuple_sec = 10, /datum/reagent/consumable/ethanol/screwdrivercocktail = 10) mix_message = "When your powers combine, I am Captain Pl-..." diff --git a/code/modules/food_and_drinks/recipes/food_mixtures.dm b/code/modules/food_and_drinks/recipes/food_mixtures.dm index 07732a415d..130640ee8a 100644 --- a/code/modules/food_and_drinks/recipes/food_mixtures.dm +++ b/code/modules/food_and_drinks/recipes/food_mixtures.dm @@ -11,8 +11,8 @@ /datum/chemical_reaction/tofu name = "Tofu" id = "tofu" - required_reagents = list("soymilk" = 10) - required_catalysts = list("enzyme" = 5) + required_reagents = list(/datum/reagent/consumable/soymilk = 10) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) mob_react = FALSE /datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, created_volume) @@ -24,7 +24,7 @@ /datum/chemical_reaction/chocolate_bar name = "Chocolate Bar" id = "chocolate_bar" - required_reagents = list("soymilk" = 2, "cocoa" = 2, "sugar" = 2) + required_reagents = list(/datum/reagent/consumable/soymilk = 2, /datum/reagent/consumable/coco = 2, /datum/reagent/consumable/sugar = 2) /datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -35,8 +35,8 @@ /datum/chemical_reaction/chocolate_bar2 name = "Chocolate Bar" - id = "chocolate_bar" - required_reagents = list("chocolate_milk" = 4, "sugar" = 2) + id = "chocolate_bar2" + required_reagents = list(/datum/reagent/consumable/milk/chocolate_milk = 4, /datum/reagent/consumable/sugar = 2) mob_react = FALSE /datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume) @@ -47,48 +47,48 @@ /datum/chemical_reaction/hot_coco name = "Hot Coco" - id = "hot_coco" - results = list("hot_coco" = 5) - required_reagents = list("water" = 5, "cocoa" = 1) + id = /datum/reagent/consumable/hot_coco + results = list(/datum/reagent/consumable/hot_coco = 5) + required_reagents = list(/datum/reagent/water = 5, /datum/reagent/consumable/coco = 1) /datum/chemical_reaction/coffee name = "Coffee" - id = "coffee" - results = list("coffee" = 5) - required_reagents = list("coffeepowder" = 1, "water" = 5) + id = /datum/reagent/consumable/coffee + results = list(/datum/reagent/consumable/coffee = 5) + required_reagents = list(/datum/reagent/toxin/coffeepowder = 1, /datum/reagent/water = 5) /datum/chemical_reaction/tea name = "Tea" - id = "tea" - results = list("tea" = 5) - required_reagents = list("teapowder" = 1, "water" = 5) + id = /datum/reagent/consumable/tea + results = list(/datum/reagent/consumable/tea = 5) + required_reagents = list(/datum/reagent/toxin/teapowder = 1, /datum/reagent/water = 5) /datum/chemical_reaction/soysauce name = "Soy Sauce" - id = "soysauce" - results = list("soysauce" = 5) - required_reagents = list("soymilk" = 4, "sacid" = 1) + id = /datum/reagent/consumable/soysauce + results = list(/datum/reagent/consumable/soysauce = 5) + required_reagents = list(/datum/reagent/consumable/soymilk = 4, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/corn_syrup name = "corn_syrup" - id = "corn_syrup" - results = list("corn_syrup" = 5) - required_reagents = list("corn_starch" = 1, "sacid" = 1) + id = /datum/reagent/consumable/corn_syrup + results = list(/datum/reagent/consumable/corn_syrup = 5) + required_reagents = list(/datum/reagent/consumable/corn_starch = 1, /datum/reagent/toxin/acid = 1) required_temp = 374 /datum/chemical_reaction/caramel name = "Caramel" - id = "caramel" - results = list("caramel" = 1) - required_reagents = list("sugar" = 1) + id = /datum/reagent/consumable/caramel + results = list(/datum/reagent/consumable/caramel = 1) + required_reagents = list(/datum/reagent/consumable/sugar = 1) required_temp = 413 mob_react = FALSE /datum/chemical_reaction/cheesewheel name = "Cheesewheel" id = "cheesewheel" - required_reagents = list("milk" = 40) - required_catalysts = list("enzyme" = 5) + required_reagents = list(/datum/reagent/consumable/milk = 40) + required_catalysts = list(/datum/reagent/consumable/enzyme = 5) /datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -98,7 +98,7 @@ /datum/chemical_reaction/synthmeat name = "synthmeat" id = "synthmeat" - required_reagents = list("blood" = 5, "cryoxadone" = 1) + required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/cryoxadone = 1) mob_react = FALSE /datum/chemical_reaction/synthmeat/on_reaction(datum/reagents/holder, created_volume) @@ -108,20 +108,20 @@ /datum/chemical_reaction/hot_ramen name = "Hot Ramen" - id = "hot_ramen" - results = list("hot_ramen" = 3) - required_reagents = list("water" = 1, "dry_ramen" = 3) + id = /datum/reagent/consumable/hot_ramen + results = list(/datum/reagent/consumable/hot_ramen = 3) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/consumable/dry_ramen = 3) /datum/chemical_reaction/hell_ramen name = "Hell Ramen" - id = "hell_ramen" - results = list("hell_ramen" = 6) - required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) + id = /datum/reagent/consumable/hell_ramen + results = list(/datum/reagent/consumable/hell_ramen = 6) + required_reagents = list(/datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/hot_ramen = 6) /datum/chemical_reaction/imitationcarpmeat name = "Imitation Carpmeat" id = "imitationcarpmeat" - required_reagents = list("carpotoxin" = 5) + required_reagents = list(/datum/reagent/toxin/carpotoxin = 5) required_container = /obj/item/reagent_containers/food/snacks/tofu mix_message = "The mixture becomes similar to carp meat." @@ -134,7 +134,7 @@ /datum/chemical_reaction/dough name = "Dough" id = "dough" - required_reagents = list("water" = 10, "flour" = 15) + required_reagents = list(/datum/reagent/water = 10, /datum/reagent/consumable/flour = 15) mix_message = "The ingredients form a dough." /datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume) @@ -145,7 +145,7 @@ /datum/chemical_reaction/cakebatter name = "Cake Batter" id = "cakebatter" - required_reagents = list("eggyolk" = 15, "flour" = 15, "sugar" = 5) + required_reagents = list(/datum/reagent/consumable/eggyolk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5) mix_message = "The ingredients form a cake batter." /datum/chemical_reaction/cakebatter/on_reaction(datum/reagents/holder, created_volume) @@ -155,12 +155,12 @@ /datum/chemical_reaction/cakebatter/vegan id = "vegancakebatter" - required_reagents = list("soymilk" = 15, "flour" = 15, "sugar" = 5) + required_reagents = list(/datum/reagent/consumable/soymilk = 15, /datum/reagent/consumable/flour = 15, /datum/reagent/consumable/sugar = 5) /datum/chemical_reaction/ricebowl name = "Rice Bowl" id = "ricebowl" - required_reagents = list("rice" = 10, "water" = 10) + required_reagents = list(/datum/reagent/consumable/rice = 10, /datum/reagent/water = 10) required_container = /obj/item/reagent_containers/glass/bowl mix_message = "The rice absorbs the water." @@ -172,6 +172,6 @@ /datum/chemical_reaction/bbqsauce name = "BBQ Sauce" - id = "bbqsauce" - results = list("bbqsauce" = 5) - required_reagents = list("ash" = 1, "tomatojuice" = 1, "salglu_solution" = 3, "blackpepper" = 1) + id = /datum/reagent/consumable/bbqsauce + results = list(/datum/reagent/consumable/bbqsauce = 5) + required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/tomatojuice = 1, /datum/reagent/medicine/salglu_solution = 3, /datum/reagent/consumable/blackpepper = 1) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm index 7977a715d8..f0fe936d05 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pastry.dm @@ -108,7 +108,7 @@ datum/crafting_recipe/food/donut/meat /datum/crafting_recipe/food/donut/bungo name = "Bungo Donut" reqs = list( - /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, + /datum/reagent/consumable/bungojuice = 3, /obj/item/reagent_containers/food/snacks/donut/plain = 1 ) result = /obj/item/reagent_containers/food/snacks/donut/bungo @@ -175,7 +175,7 @@ datum/crafting_recipe/food/donut/meat /datum/crafting_recipe/food/donut/jelly/bungo name = "Bungo Jelly Donut" reqs = list( - /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, + /datum/reagent/consumable/bungojuice = 3, /obj/item/reagent_containers/food/snacks/donut/jelly/plain = 1 ) result = /obj/item/reagent_containers/food/snacks/donut/jelly/bungo @@ -242,7 +242,7 @@ datum/crafting_recipe/food/donut/meat /datum/crafting_recipe/food/donut/slimejelly/bungo name = "Bungo Slime Donut" reqs = list( - /obj/item/reagent_containers/food/snacks/grown/bungofruit = 1, + /datum/reagent/consumable/bungojuice = 3, /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/plain = 1 ) result = /obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly/bungo diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 3cb05a8f7e..1898fe4b01 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -163,7 +163,7 @@ icon_state = "briochecake" slice_path = /obj/item/reagent_containers/food/snacks/cakeslice/brioche slices_num = 6 - bonus_reagents = list("nutriment" = 10, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 2) /obj/item/reagent_containers/food/snacks/cakeslice/brioche name = "brioche cake slice" @@ -184,10 +184,10 @@ name = "scotch egg" desc = "A boiled egg wrapped in a delicious, seasoned meatball." icon_state = "scotchegg" - bonus_reagents = list("nutriment" = 2, "vitamin" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) bitesize = 3 filling_color = "#FFFFF0" - list_reagents = list("nutriment" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment = 6) /datum/crafting_recipe/food/scotchegg name = "Scotch egg" @@ -204,8 +204,8 @@ name = "Mammi" desc = "A bowl of mushy bread and milk. It reminds you, not too fondly, of a bowel movement." icon_state = "mammi" - bonus_reagents = list("nutriment" = 3, "vitamin" = 1) - list_reagents = list("nutriment" = 8, "vitamin" = 1) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) /datum/crafting_recipe/food/mammi name = "Mammi" @@ -221,8 +221,8 @@ name = "chocolate bunny" desc = "Contains less than 10% real rabbit!" icon_state = "chocolatebunny" - bonus_reagents = list("nutriment" = 1, "vitamin" = 1) - list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2) + bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) + list_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/sugar = 2, /datum/reagent/consumable/coco = 2) filling_color = "#A0522D" /datum/crafting_recipe/food/chocolatebunny diff --git a/code/modules/holiday/halloween/jacqueen.dm b/code/modules/holiday/halloween/jacqueen.dm index d71e7c0f6a..bd4c26e0f2 100644 --- a/code/modules/holiday/halloween/jacqueen.dm +++ b/code/modules/holiday/halloween/jacqueen.dm @@ -95,7 +95,7 @@ last_poof = world.realtime var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case. var/datum/effect_system/smoke_spread/chem/s = new() - R.add_reagent("secretcatchem", 10) + R.add_reagent(/datum/reagent/fermi/secretcatchem, 10) s.set_up(R, 0, loc) s.start() visible_message("[src] disappears in a puff of smoke!") @@ -181,7 +181,7 @@ visible_message("[src] raises an eyebrown, \"It's 4 candies for that [gender]! Thems the rules!\"") return visible_message("[src] waves their arms around, \"Off comes your head, a pumpkin taking it's stead!\"") - C.reagents.add_reagent("pumpkinmutationtoxin", 5) + C.reagents.add_reagent(/datum/reagent/mutationtoxin/pumpkinhead, 5) sleep(20) poof() return @@ -340,7 +340,7 @@ C.equip_to_slot(jaqc_latern, SLOT_HEAD, 1, 1) if(4) visible_message("[src] waves their arms around, \"In your body there's something amiss, you'll find it's a chem made by my sis!\"") - C.reagents.add_reagent("eigenstate", 30) + C.reagents.add_reagent(/datum/reagent/fermi/eigenstate, 30) if(5) visible_message("[src] waves their arms around, \"A new familiar for me, and you'll see it's thee!\"") C.reagents.add_reagent("secretcatchem", 30) @@ -411,7 +411,6 @@ /datum/reagent/mutationtoxin/pumpkinhead name = "Pumpkin head mutation toxin" - id = "pumpkinmutationtoxin" race = /datum/species/dullahan/pumpkin mutationtext = "The pain subsides. You feel your head roll off your shoulders... and you smell pumpkin." //I couldn't get the replace head sprite with a pumpkin to work so, it is what it is. diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index 3c4ed776b7..a058601c39 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -65,7 +65,7 @@ var/datum/reagent/R = null if(random_reagent) R = pick(subtypesof(/datum/reagent)) - R = GLOB.chemical_reagents_list[initial(R.id)] + R = GLOB.chemical_reagents_list[R] queen_bee = new(src) queen_bee.beehome = src @@ -95,7 +95,7 @@ bee_resources = max(bee_resources-BEE_RESOURCE_HONEYCOMB_COST, 0) var/obj/item/reagent_containers/honeycomb/HC = new(src) if(queen_bee.beegent) - HC.set_reagent(queen_bee.beegent.id) + HC.set_reagent(queen_bee.beegent.type) honeycombs += HC if(bees.len < get_max_bees()) diff --git a/code/modules/hydroponics/beekeeping/honeycomb.dm b/code/modules/hydroponics/beekeeping/honeycomb.dm index e7faff0209..5bb2936c1e 100644 --- a/code/modules/hydroponics/beekeeping/honeycomb.dm +++ b/code/modules/hydroponics/beekeeping/honeycomb.dm @@ -9,7 +9,7 @@ disease_amount = 0 volume = 10 amount_per_transfer_from_this = 0 - list_reagents = list("honey" = 5) + list_reagents = list(/datum/reagent/consumable/honey = 5) grind_results = list() var/honey_color = "" @@ -31,10 +31,10 @@ /obj/item/reagent_containers/honeycomb/proc/set_reagent(reagent) var/datum/reagent/R = GLOB.chemical_reagents_list[reagent] - if(istype(R)) + if(R) name = "honeycomb ([R.name])" honey_color = R.color - reagents.add_reagent(R.id,5) + reagents.add_reagent(reagent,5) else honey_color = "" update_icon() \ No newline at end of file diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index fb40e4eebd..ac750a0492 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -210,9 +210,9 @@ var/S = 0 for(var/obj/item/reagent_containers/food/snacks/grown/I in contents) S += 5 - if(I.reagents.get_reagent_amount("nutriment") < 0.1) + if(I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) < 0.1) points += 1*productivity - else points += I.reagents.get_reagent_amount("nutriment")*10*productivity + else points += I.reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)*10*productivity qdel(I) if(S) processing = TRUE diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index e9001322d3..ab6625b46d 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -33,7 +33,7 @@ data["tastes"] = list(fruit.wine_flavor = 1) else data["tastes"] = list(fruit.tastes[1] = 1) - reagents.add_reagent("fruit_wine", amount, data) + reagents.add_reagent(/datum/reagent/consumable/ethanol/fruit_wine, amount, data) qdel(fruit) playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 660f1e17e4..91ccce7cfd 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -144,20 +144,20 @@ return TRUE /obj/item/reagent_containers/food/snacks/grown/on_grind() - var/nutriment = reagents.get_reagent_amount("nutriment") + var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) if(grind_results&&grind_results.len) for(var/i in 1 to grind_results.len) grind_results[grind_results[i]] = nutriment - reagents.del_reagent("nutriment") - reagents.del_reagent("vitamin") + reagents.del_reagent(/datum/reagent/consumable/nutriment) + reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin) /obj/item/reagent_containers/food/snacks/grown/on_juice() - var/nutriment = reagents.get_reagent_amount("nutriment") + var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment) if(juice_results&&juice_results.len) for(var/i in 1 to juice_results.len) juice_results[juice_results[i]] = nutriment - reagents.del_reagent("nutriment") - reagents.del_reagent("vitamin") + reagents.del_reagent(/datum/reagent/consumable/nutriment) + reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin) // For item-containing growns such as eggy or gatfruit /obj/item/reagent_containers/food/snacks/grown/shell/attack_self(mob/user) diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm index a3b93db1ea..e84025208a 100644 --- a/code/modules/hydroponics/grown/ambrosia.dm +++ b/code/modules/hydroponics/grown/ambrosia.dm @@ -25,7 +25,7 @@ icon_dead = "ambrosia-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/ambrosia/deus) - reagents_add = list("space_drugs" = 0.15, "bicaridine" = 0.1, "kelotane" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05, "toxin" = 0.1) + reagents_add = list(/datum/reagent/drug/space_drugs = 0.15, /datum/reagent/medicine/bicaridine = 0.1, /datum/reagent/medicine/kelotane = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/toxin = 0.1) /obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris seed = /obj/item/seeds/ambrosia @@ -42,7 +42,7 @@ plantname = "Ambrosia Deus" product = /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus mutatelist = list(/obj/item/seeds/ambrosia/gaia) - reagents_add = list("omnizine" = 0.15, "synaptizine" = 0.15, "space_drugs" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/medicine/omnizine = 0.15, /datum/reagent/medicine/synaptizine = 0.15, /datum/reagent/drug/space_drugs = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) rarity = 40 /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus @@ -62,7 +62,7 @@ plantname = "Ambrosia Gaia" product = /obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia mutatelist = list(/obj/item/seeds/ambrosia/deus) - reagents_add = list("earthsblood" = 0.05, "nutriment" = 0.06, "vitamin" = 0.05) + reagents_add = list(/datum/reagent/medicine/earthsblood = 0.05, /datum/reagent/consumable/nutriment = 0.06, /datum/reagent/consumable/nutriment/vitamin = 0.05) rarity = 30 //These are some pretty good plants right here genes = list() weed_rate = 4 diff --git a/code/modules/hydroponics/grown/apple.dm b/code/modules/hydroponics/grown/apple.dm index 007c0b2454..f8e58aee1b 100644 --- a/code/modules/hydroponics/grown/apple.dm +++ b/code/modules/hydroponics/grown/apple.dm @@ -14,7 +14,7 @@ icon_dead = "apple-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/apple/gold) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/apple seed = /obj/item/seeds/apple @@ -24,9 +24,9 @@ filling_color = "#FF4500" bitesize = 100 // Always eat the apple in one bite foodtype = FRUIT - juice_results = list("applejuice" = 0) + juice_results = list(/datum/reagent/consumable/applejuice = 0) tastes = list("apple" = 1) - distill_reagent = "hcider" + distill_reagent = /datum/reagent/consumable/ethanol/hcider // Gold Apple /obj/item/seeds/apple/gold @@ -39,7 +39,7 @@ maturation = 10 production = 10 mutatelist = list() - reagents_add = list("gold" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/gold = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 40 // Alchemy! /obj/item/reagent_containers/food/snacks/grown/apple/gold diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index b25f76c1c8..7668d17ac1 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -12,7 +12,7 @@ icon_dead = "banana-dead" genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace, /obj/item/seeds/banana/exotic_banana) - reagents_add = list("banana" = 0.1, "potassium" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/consumable/banana = 0.1, /datum/reagent/potassium = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.02) /obj/item/reagent_containers/food/snacks/grown/banana seed = /obj/item/seeds/banana @@ -24,8 +24,8 @@ filling_color = "#FFFF00" bitesize = 5 foodtype = FRUIT - juice_results = list("banana" = 0) - distill_reagent = "bananahonk" + juice_results = list(/datum/reagent/consumable/banana = 0) + distill_reagent = /datum/reagent/consumable/ethanol/bananahonk /obj/item/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user) user.visible_message("[user] is aiming [src] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!") @@ -70,7 +70,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/banana/mime growthstages = 4 mutatelist = list() - reagents_add = list("nothing" = 0.1, "mutetoxin" = 0.1, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/consumable/nothing = 0.1, /datum/reagent/toxin/mutetoxin = 0.1, /datum/reagent/consumable/nutriment = 0.02) rarity = 15 /obj/item/reagent_containers/food/snacks/grown/banana/mime @@ -80,7 +80,7 @@ icon_state = "mimana" trash = /obj/item/grown/bananapeel/mimanapeel filling_color = "#FFFFEE" - distill_reagent = "silencer" + distill_reagent = /datum/reagent/consumable/ethanol/silencer /obj/item/grown/bananapeel/mimanapeel seed = /obj/item/seeds/banana/mime @@ -100,7 +100,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/banana/bluespace mutatelist = list() genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("bluespace" = 0.2, "banana" = 0.1, "vitamin" = 0.04, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/bluespace = 0.2, /datum/reagent/consumable/banana = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.02) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/banana/bluespace @@ -137,9 +137,9 @@ name = "banana spider" desc = "You do not know what it is, but you can bet the clown would love it." icon_state = "exoticbanana" - list_reagents = list("nutriment" = 3, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GROSS | MEAT | RAW | FRUIT - grind_results = list("blood" = 20, "liquidgibs" = 5) + grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) var/awakening = 0 /obj/item/reagent_containers/food/snacks/grown/banana/banana_spider_spawnable/attack_self(mob/user) diff --git a/code/modules/hydroponics/grown/beans.dm b/code/modules/hydroponics/grown/beans.dm index 4338e3b070..3e5fee411f 100644 --- a/code/modules/hydroponics/grown/beans.dm +++ b/code/modules/hydroponics/grown/beans.dm @@ -15,7 +15,7 @@ icon_dead = "soybean-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/soya/koi) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05, "cooking_oil" = 0.03) //Vegetable oil! + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/consumable/cooking_oil = 0.03) //Vegetable oil! /obj/item/reagent_containers/food/snacks/grown/soybeans seed = /obj/item/seeds/soya @@ -26,7 +26,7 @@ filling_color = "#F0E68C" bitesize_mod = 2 foodtype = VEGETABLES - grind_results = list("soymilk" = 0) + grind_results = list(/datum/reagent/consumable/soymilk = 0) tastes = list("soy" = 1) wine_power = 20 @@ -40,7 +40,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/koibeans potency = 10 mutatelist = list() - reagents_add = list("carpotoxin" = 0.1, "vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/toxin/carpotoxin = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/koibeans diff --git a/code/modules/hydroponics/grown/berries.dm b/code/modules/hydroponics/grown/berries.dm index 94dbc74499..0646ae1a8c 100644 --- a/code/modules/hydroponics/grown/berries.dm +++ b/code/modules/hydroponics/grown/berries.dm @@ -15,7 +15,7 @@ icon_dead = "berry-dead" // Same for the dead icon genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/berry/glow, /obj/item/seeds/berry/poison) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/berries seed = /obj/item/seeds/berry @@ -26,9 +26,9 @@ filling_color = "#FF00FF" bitesize_mod = 2 foodtype = FRUIT - juice_results = list("berryjuice" = 0) + juice_results = list(/datum/reagent/consumable/berryjuice = 0) tastes = list("berry" = 1) - distill_reagent = "gin" + distill_reagent = /datum/reagent/consumable/ethanol/gin // Poison Berries /obj/item/seeds/berry/poison @@ -39,7 +39,7 @@ plantname = "Poison-Berry Bush" product = /obj/item/reagent_containers/food/snacks/grown/berries/poison mutatelist = list(/obj/item/seeds/berry/death) - reagents_add = list("cyanide" = 0.15, "tirizene" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/toxin/cyanide = 0.15, /datum/reagent/toxin/staminatoxin = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 10 // Mildly poisonous berries are common in reality /obj/item/reagent_containers/food/snacks/grown/berries/poison @@ -49,7 +49,7 @@ icon_state = "poisonberrypile" filling_color = "#C71585" foodtype = FRUIT | TOXIC - juice_results = list("poisonberryjuice" = 0) + juice_results = list(/datum/reagent/consumable/poisonberryjuice = 0) tastes = list("poison-berry" = 1) distill_reagent = null wine_power = 35 @@ -65,7 +65,7 @@ lifespan = 30 potency = 50 mutatelist = list() - reagents_add = list("coniine" = 0.08, "tirizene" = 0.1, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/toxin/coniine = 0.08, /datum/reagent/toxin/staminatoxin = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/berries/death @@ -91,7 +91,7 @@ endurance = 25 mutatelist = list() genes = list(/datum/plant_gene/trait/glow/white, /datum/plant_gene/trait/noreact, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("uranium" = 0.25, "iodine" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/uranium = 0.25, /datum/reagent/iodine = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/berries/glow @@ -124,7 +124,7 @@ icon_harvest = "cherry-harvest" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/cherry/blue, /obj/item/seeds/cherry/bulb) - reagents_add = list("nutriment" = 0.07, "sugar" = 0.07) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07) /obj/item/reagent_containers/food/snacks/grown/cherries seed = /obj/item/seeds/cherry @@ -135,7 +135,7 @@ filling_color = "#FF0000" bitesize_mod = 2 foodtype = FRUIT - grind_results = list("cherryjelly" = 0) + grind_results = list(/datum/reagent/consumable/cherryjelly = 0) tastes = list("cherry" = 1) wine_power = 30 @@ -148,7 +148,7 @@ plantname = "Blue Cherry Tree" product = /obj/item/reagent_containers/food/snacks/grown/bluecherries mutatelist = list() - reagents_add = list("nutriment" = 0.07, "sugar" = 0.07) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07) rarity = 10 /obj/item/reagent_containers/food/snacks/grown/bluecherries @@ -159,7 +159,7 @@ filling_color = "#6495ED" bitesize_mod = 2 foodtype = FRUIT - grind_results = list("bluecherryjelly" = 0) + grind_results = list(/datum/reagent/consumable/bluecherryjelly = 0) tastes = list("blue cherry" = 1) wine_power = 50 @@ -173,7 +173,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/cherrybulbs genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/pink) mutatelist = list() - reagents_add = list("nutriment" = 0.07, "sugar" = 0.07) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.07, /datum/reagent/consumable/sugar = 0.07) rarity = 10 /obj/item/reagent_containers/food/snacks/grown/cherrybulbs @@ -184,7 +184,7 @@ filling_color = "#FF0000" bitesize_mod = 2 foodtype = FRUIT - grind_results = list("cherryjelly" = 0) + grind_results = list(/datum/reagent/consumable/cherryjelly = 0) tastes = list("cherry" = 1) wine_power = 50 @@ -207,7 +207,7 @@ icon_dead = "grape-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/grape/green) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1) /obj/item/reagent_containers/food/snacks/grown/grapes seed = /obj/item/seeds/grape @@ -218,9 +218,9 @@ filling_color = "#FF1493" bitesize_mod = 2 foodtype = FRUIT - juice_results = list("grapejuice" = 0) + juice_results = list(/datum/reagent/consumable/grapejuice = 0) tastes = list("grape" = 1) - distill_reagent = "wine" + distill_reagent = /datum/reagent/consumable/ethanol/wine // Green Grapes /obj/item/seeds/grape/green @@ -230,7 +230,7 @@ species = "greengrape" plantname = "Green-Grape Vine" product = /obj/item/reagent_containers/food/snacks/grown/grapes/green - reagents_add = list("kelotane" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1, "sugar" = 0.1) + reagents_add = list(/datum/reagent/medicine/kelotane = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1) // No rarity: technically it's a beneficial mutant, but it's not exactly "new"... mutatelist = list() @@ -240,7 +240,7 @@ icon_state = "greengrapes" filling_color = "#7FFF00" tastes = list("green grape" = 1) - distill_reagent = "cognac" + distill_reagent = /datum/reagent/consumable/ethanol/cognac // Strawberry /obj/item/seeds/strawberry @@ -254,7 +254,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "strawberry-grow" icon_dead = "berry-dead" - reagents_add = list("vitamin" = 0.07, "nutriment" = 0.1, "sugar" = 0.2) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.07, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.2) mutatelist = list() /obj/item/reagent_containers/food/snacks/grown/strawberry diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm index 6ce3558bc3..621e79fb77 100644 --- a/code/modules/hydroponics/grown/cannabis.dm +++ b/code/modules/hydroponics/grown/cannabis.dm @@ -17,7 +17,7 @@ /obj/item/seeds/cannabis/death, /obj/item/seeds/cannabis/white, /obj/item/seeds/cannabis/ultimate) - reagents_add = list("space_drugs" = 0.15, "lipolicide" = 0.35) // gives u the munchies + reagents_add = list(/datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.35) // gives u the munchies /obj/item/seeds/cannabis/rainbow @@ -28,7 +28,7 @@ plantname = "Rainbow Weed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow mutatelist = list() - reagents_add = list("mindbreaker" = 0.15, "lipolicide" = 0.35) + reagents_add = list(/datum/reagent/toxin/mindbreaker = 0.15, /datum/reagent/toxin/lipolicide = 0.35) rarity = 40 /obj/item/seeds/cannabis/death @@ -39,7 +39,7 @@ plantname = "Deathweed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/death mutatelist = list() - reagents_add = list("cyanide" = 0.35, "space_drugs" = 0.15, "lipolicide" = 0.15) + reagents_add = list(/datum/reagent/toxin/cyanide = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15) rarity = 40 /obj/item/seeds/cannabis/white @@ -50,7 +50,7 @@ plantname = "Lifeweed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/white mutatelist = list() - reagents_add = list("omnizine" = 0.35, "space_drugs" = 0.15, "lipolicide" = 0.15) + reagents_add = list(/datum/reagent/medicine/omnizine = 0.35, /datum/reagent/drug/space_drugs = 0.15, /datum/reagent/toxin/lipolicide = 0.15) rarity = 40 @@ -63,21 +63,21 @@ product = /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/green) mutatelist = list() - reagents_add = list("space_drugs" = 0.3, - "mindbreaker" = 0.3, - "mercury" = 0.15, - "lithium" = 0.15, - "atropine" = 0.15, - "haloperidol" = 0.15, - "methamphetamine" = 0.15, - "capsaicin" = 0.15, - "barbers_aid" = 0.15, - "bath_salts" = 0.15, - "itching_powder" = 0.15, - "crank" = 0.15, - "krokodil" = 0.15, - "histamine" = 0.15, - "lipolicide" = 0.15) + reagents_add = list(/datum/reagent/drug/space_drugs = 0.3, + /datum/reagent/toxin/mindbreaker = 0.3, + /datum/reagent/mercury = 0.15, + /datum/reagent/lithium = 0.15, + /datum/reagent/medicine/atropine = 0.15, + /datum/reagent/medicine/haloperidol = 0.15, + /datum/reagent/drug/methamphetamine = 0.15, + /datum/reagent/consumable/capsaicin = 0.15, + /datum/reagent/barbers_aid = 0.15, + /datum/reagent/drug/bath_salts = 0.15, + /datum/reagent/toxin/itching_powder = 0.15, + /datum/reagent/drug/crank = 0.15, + /datum/reagent/drug/krokodil = 0.15, + /datum/reagent/toxin/histamine = 0.15, + /datum/reagent/toxin/lipolicide = 0.15) rarity = 69 diff --git a/code/modules/hydroponics/grown/cereals.dm b/code/modules/hydroponics/grown/cereals.dm index c53cd6718a..c5a7e0797a 100644 --- a/code/modules/hydroponics/grown/cereals.dm +++ b/code/modules/hydroponics/grown/cereals.dm @@ -11,7 +11,7 @@ potency = 15 icon_dead = "wheat-dead" mutatelist = list(/obj/item/seeds/wheat/oat, /obj/item/seeds/wheat/meat) - reagents_add = list("nutriment" = 0.04) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/wheat seed = /obj/item/seeds/wheat @@ -22,9 +22,9 @@ filling_color = "#F0E68C" bitesize_mod = 2 foodtype = GRAIN - grind_results = list("flour" = 0) + grind_results = list(/datum/reagent/consumable/flour = 0) tastes = list("wheat" = 1) - distill_reagent = "beer" + distill_reagent = /datum/reagent/consumable/ethanol/beer // Oat /obj/item/seeds/wheat/oat @@ -45,9 +45,9 @@ filling_color = "#556B2F" bitesize_mod = 2 foodtype = GRAIN - grind_results = list("flour" = 0) + grind_results = list(/datum/reagent/consumable/flour = 0) tastes = list("oat" = 1) - distill_reagent = "ale" + distill_reagent = /datum/reagent/consumable/ethanol/ale // Rice /obj/item/seeds/wheat/rice @@ -69,9 +69,9 @@ filling_color = "#FAFAD2" bitesize_mod = 2 foodtype = GRAIN - grind_results = list("rice" = 0) + grind_results = list(/datum/reagent/consumable/rice = 0) tastes = list("rice" = 1) - distill_reagent = "sake" + distill_reagent = /datum/reagent/consumable/ethanol/sake //Meatwheat - grows into synthetic meat /obj/item/seeds/wheat/meat @@ -92,7 +92,7 @@ bitesize_mod = 2 seed = /obj/item/seeds/wheat/meat foodtype = MEAT | GRAIN - grind_results = list("flour" = 0, "blood" = 0) + grind_results = list(/datum/reagent/consumable/flour = 0, /datum/reagent/blood = 0) tastes = list("meatwheat" = 1) can_distill = FALSE diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm index 6325daacdc..0522b5fd45 100644 --- a/code/modules/hydroponics/grown/chili.dm +++ b/code/modules/hydroponics/grown/chili.dm @@ -16,7 +16,7 @@ icon_dead = "chili-dead" // Same for the dead icon genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/chili/ice, /obj/item/seeds/chili/ghost) - reagents_add = list("capsaicin" = 0.25, "vitamin" = 0.04, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/consumable/capsaicin = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/chili seed = /obj/item/seeds/chili @@ -41,7 +41,7 @@ production = 4 rarity = 20 mutatelist = list() - reagents_add = list("frostoil" = 0.25, "vitamin" = 0.02, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/consumable/frostoil = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.02) /obj/item/reagent_containers/food/snacks/grown/icepepper seed = /obj/item/seeds/chili/ice @@ -67,7 +67,7 @@ yield = 3 rarity = 20 mutatelist = list() - reagents_add = list("condensedcapsaicin" = 0.3, "capsaicin" = 0.55, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/consumable/condensedcapsaicin = 0.3, /datum/reagent/consumable/capsaicin = 0.55, /datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/ghost_chili seed = /obj/item/seeds/chili/ghost diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 66d03c777c..851753da46 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -23,7 +23,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/orange) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/citrus/lime seed = /obj/item/seeds/lime @@ -31,7 +31,7 @@ desc = "It's so sour, your face will twist." icon_state = "lime" filling_color = "#00FF00" - juice_results = list("limejuice" = 0) + juice_results = list(/datum/reagent/consumable/limejuice = 0) // Electric Lime /obj/item/seeds/lime/electric @@ -70,7 +70,7 @@ icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/lime, /obj/item/seeds/orange_3d) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/citrus/orange seed = /obj/item/seeds/orange @@ -78,8 +78,8 @@ desc = "It's a tangy fruit." icon_state = "orange" filling_color = "#FFA500" - juice_results = list("orangejuice" = 0) - distill_reagent = "triple_sec" + juice_results = list(/datum/reagent/consumable/orangejuice = 0) + distill_reagent = /datum/reagent/consumable/ethanol/triple_sec //3D Orange @@ -98,7 +98,7 @@ icon_grow = "lime-grow" icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05, "haloperidol" = 0.15) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/haloperidol = 0.15) /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d seed = /obj/item/seeds/orange_3d @@ -106,8 +106,8 @@ desc = "You can hardly wrap your head around this thing." icon_state = "orang" filling_color = "#FFA500" - juice_results = list("orangejuice" = 0) - distill_reagent = "triple_sec" + juice_results = list(/datum/reagent/consumable/orangejuice = 0) + distill_reagent = /datum/reagent/consumable/ethanol/triple_sec tastes = list("polygons" = 1, "oranges" = 1) /obj/item/reagent_containers/food/snacks/grown/citrus/orange_3d/pickup(mob/user) @@ -134,7 +134,7 @@ icon_dead = "lime-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/firelemon) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/citrus/lemon seed = /obj/item/seeds/lemon @@ -142,7 +142,7 @@ desc = "When life gives you lemons, make lemonade." icon_state = "lemon" filling_color = "#FFD700" - juice_results = list("lemonjuice" = 0) + juice_results = list(/datum/reagent/consumable/lemonjuice = 0) // Combustible lemon /obj/item/seeds/firelemon //combustible lemon is too long so firelemon @@ -159,7 +159,7 @@ lifespan = 55 endurance = 45 yield = 4 - reagents_add = list("nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/firelemon seed = /obj/item/seeds/firelemon diff --git a/code/modules/hydroponics/grown/cocoa_vanilla.dm b/code/modules/hydroponics/grown/cocoa_vanilla.dm index 44373515c6..9ac705aa83 100644 --- a/code/modules/hydroponics/grown/cocoa_vanilla.dm +++ b/code/modules/hydroponics/grown/cocoa_vanilla.dm @@ -16,7 +16,7 @@ icon_dead = "cocoapod-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/cocoapod/vanillapod, /obj/item/seeds/cocoapod/bungotree) - reagents_add = list("cocoa" = 0.25, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/coco = 0.25, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/cocoapod seed = /obj/item/seeds/cocoapod @@ -27,7 +27,7 @@ bitesize_mod = 2 foodtype = FRUIT tastes = list("cocoa" = 1) - distill_reagent = "creme_de_cacao" + distill_reagent = /datum/reagent/consumable/ethanol/creme_de_cacao // Vanilla Pod /obj/item/seeds/cocoapod/vanillapod @@ -39,7 +39,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/vanillapod genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list() - reagents_add = list("vanilla" = 0.25, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/vanilla = 0.25, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/vanillapod seed = /obj/item/seeds/cocoapod/vanillapod @@ -49,7 +49,7 @@ filling_color = "#FFD700" foodtype = FRUIT tastes = list("vanilla" = 1) - distill_reagent = "vanilla" //Takes longer, but you can get even more vanilla from it. + distill_reagent = /datum/reagent/consumable/vanilla //Takes longer, but you can get even more vanilla from it. /obj/item/seeds/cocoapod/bungotree name = "pack of bungo tree seeds" @@ -64,7 +64,7 @@ production = 7 genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list() - reagents_add = list("enzyme" = 0.1, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/enzyme = 0.1, /datum/reagent/consumable/nutriment = 0.1) growthstages = 4 growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_grow = "bungotree-grow" @@ -79,6 +79,7 @@ trash = /obj/item/reagent_containers/food/snacks/grown/bungopit filling_color = "#E8C22F" foodtype = FRUIT + juice_results = list(/datum/reagent/consumable/bungojuice = 0) tastes = list("bungo" = 2, "tropical fruitiness" = 1) distill_reagent = null @@ -97,7 +98,7 @@ /obj/item/reagent_containers/food/snacks/grown/bungopit/Initialize() . =..() reagents.clear_reagents() - reagents.add_reagent("bungotoxin", seed.potency * 0.10) //More than this will kill at too low potency - reagents.add_reagent("nutriment", seed.potency * 0.04) + reagents.add_reagent(/datum/reagent/toxin/bungotoxin, seed.potency * 0.10) //More than this will kill at too low potency + reagents.add_reagent(/datum/reagent/consumable/nutriment, seed.potency * 0.04) diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm index 0e5b5272ed..6c852c426d 100644 --- a/code/modules/hydroponics/grown/corn.dm +++ b/code/modules/hydroponics/grown/corn.dm @@ -13,7 +13,7 @@ icon_grow = "corn-grow" // Uses one growth icons set for all the subtypes icon_dead = "corn-dead" // Same for the dead icon mutatelist = list(/obj/item/seeds/corn/snapcorn) - reagents_add = list("cornoil" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/cornoil = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/corn seed = /obj/item/seeds/corn @@ -25,9 +25,9 @@ trash = /obj/item/grown/corncob bitesize_mod = 2 foodtype = VEGETABLES - juice_results = list("corn_starch" = 0) + juice_results = list(/datum/reagent/consumable/corn_starch = 0) tastes = list("corn" = 1) - distill_reagent = "whiskey" + distill_reagent = /datum/reagent/consumable/ethanol/whiskey /obj/item/grown/corncob name = "corn cob" diff --git a/code/modules/hydroponics/grown/eggplant.dm b/code/modules/hydroponics/grown/eggplant.dm index 7c01a68f0a..f893ad9e57 100644 --- a/code/modules/hydroponics/grown/eggplant.dm +++ b/code/modules/hydroponics/grown/eggplant.dm @@ -13,7 +13,7 @@ icon_dead = "eggplant-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/eggplant/eggy) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/eggplant seed = /obj/item/seeds/eggplant @@ -36,7 +36,7 @@ lifespan = 75 production = 12 mutatelist = list() - reagents_add = list("nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/shell/eggy seed = /obj/item/seeds/eggplant/eggy @@ -47,4 +47,4 @@ filling_color = "#F8F8FF" bitesize_mod = 2 foodtype = MEAT - distill_reagent = "eggnog" + distill_reagent = /datum/reagent/consumable/ethanol/eggnog diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index b7c9550bb9..8cdf403b00 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -15,7 +15,7 @@ icon_grow = "poppy-grow" icon_dead = "poppy-dead" mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/poppy/lily) - reagents_add = list("bicaridine" = 0.2, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/medicine/bicaridine = 0.2, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/poppy seed = /obj/item/seeds/poppy @@ -27,7 +27,7 @@ bitesize_mod = 3 tastes = list("sesame seeds" = 1) foodtype = VEGETABLES | GROSS - distill_reagent = "vermouth" + distill_reagent = /datum/reagent/consumable/ethanol/vermouth // Lily /obj/item/seeds/poppy/lily @@ -68,7 +68,7 @@ icon_dead = "spacemanstrumpet-dead" mutatelist = list() genes = list(/datum/plant_gene/reagent/polypyr) - reagents_add = list("nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.05) rarity = 30 /obj/item/seeds/poppy/lily/trumpet/Initialize() @@ -119,7 +119,7 @@ growthstages = 4 genes = list(/datum/plant_gene/trait/plant_type/weed_hardy) growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' - reagents_add = list("nutriment" = 0.04) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/harebell seed = /obj/item/seeds/harebell @@ -130,7 +130,7 @@ slot_flags = ITEM_SLOT_HEAD filling_color = "#E6E6FA" bitesize_mod = 3 - distill_reagent = "vermouth" + distill_reagent = /datum/reagent/consumable/ethanol/vermouth // Sunflower /obj/item/seeds/sunflower @@ -148,7 +148,7 @@ icon_grow = "sunflower-grow" icon_dead = "sunflower-dead" mutatelist = list(/obj/item/seeds/sunflower/moonflower, /obj/item/seeds/sunflower/novaflower) - reagents_add = list("cooking_oil" = 0.08, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/consumable/cooking_oil = 0.08, /datum/reagent/consumable/nutriment = 0.04) /obj/item/grown/sunflower // FLOWER POWER! seed = /obj/item/seeds/sunflower @@ -184,7 +184,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/moonflower genes = list(/datum/plant_gene/trait/glow/purple) mutatelist = list() - reagents_add = list("moonshine" = 0.2, "vitamin" = 0.02, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/consumable/ethanol/moonshine = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.02) rarity = 15 /obj/item/reagent_containers/food/snacks/grown/moonflower @@ -195,7 +195,7 @@ slot_flags = ITEM_SLOT_HEAD filling_color = "#E6E6FA" bitesize_mod = 2 - distill_reagent = "absinthe" //It's made from flowers. + distill_reagent = /datum/reagent/consumable/ethanol/absinthe //It's made from flowers. tastes = list("glowbugs" = 1) // Novaflower @@ -209,7 +209,7 @@ icon_dead = "sunflower-dead" product = /obj/item/grown/novaflower mutatelist = list() - reagents_add = list("condensedcapsaicin" = 0.25, "capsaicin" = 0.3, "nutriment" = 0) + reagents_add = list(/datum/reagent/consumable/condensedcapsaicin = 0.25, /datum/reagent/consumable/capsaicin = 0.3, /datum/reagent/consumable/nutriment = 0) rarity = 20 /obj/item/grown/novaflower @@ -227,7 +227,7 @@ throw_speed = 1 throw_range = 3 attack_verb = list("roasted", "scorched", "burned") - grind_results = list("capsaicin" = 0, "condensedcapsaicin" = 0) + grind_results = list(/datum/reagent/consumable/capsaicin = 0, /datum/reagent/consumable/condensedcapsaicin = 0) tastes = list("cooked sunflower" = 1) /obj/item/grown/novaflower/add_juice() @@ -277,7 +277,7 @@ icon_grow = "bee_balm-grow" icon_dead = "bee_balm-dead" mutatelist = list(/obj/item/seeds/poppy/geranium, /obj/item/seeds/bee_balm/honey) //Lower odds of becoming honey - reagents_add = list("spaceacillin" = 0.1, "sterilizine" = 0.05) + reagents_add = list(/datum/reagent/medicine/spaceacillin = 0.1, /datum/reagent/space_cleaner/sterilizine = 0.05) /obj/item/reagent_containers/food/snacks/grown/bee_balm seed = /obj/item/seeds/bee_balm @@ -305,7 +305,7 @@ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' icon_grow = "bee_balmalt-grow" icon_dead = "bee_balmalt-dead" - reagents_add = list("honey" = 0.1, "lye" = 0.3) //To make wax + reagents_add = list(/datum/reagent/consumable/honey = 0.1, /datum/reagent/lye = 0.3) //To make wax rarity = 30 /obj/item/reagent_containers/food/snacks/grown/bee_balm/honey diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm index 02b36d6a3f..3b5159465c 100644 --- a/code/modules/hydroponics/grown/grass_carpet.dm +++ b/code/modules/hydroponics/grown/grass_carpet.dm @@ -16,7 +16,7 @@ icon_dead = "grass-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/grass/carpet, /obj/item/seeds/grass/fairy) - reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05) /obj/item/reagent_containers/food/snacks/grown/grass seed = /obj/item/seeds/grass @@ -51,7 +51,7 @@ icon_grow = "fairygrass-grow" icon_dead = "fairygrass-dead" genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/blue) - reagents_add = list("nutriment" = 0.02, "hydrogen" = 0.05, "space_drugs" = 0.15) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.02, /datum/reagent/hydrogen = 0.05, /datum/reagent/drug/space_drugs = 0.15) /obj/item/reagent_containers/food/snacks/grown/grass/fairy seed = /obj/item/seeds/grass/fairy @@ -66,9 +66,9 @@ for(var/datum/plant_gene/trait/glow/gene in seed.genes) G = gene break - + stacktype = initial(stacktype) - + if(G) switch(G.type) if(/datum/plant_gene/trait/glow/white) @@ -85,10 +85,10 @@ stacktype = /obj/item/stack/tile/fairygrass/purple if(/datum/plant_gene/trait/glow/pink) stacktype = /obj/item/stack/tile/fairygrass/pink - + . = ..() - + // Carpet diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 6ceb69536d..5f1fdcdaa9 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -14,7 +14,7 @@ growthstages = 4 rarity = 30 var/list/mutations = list() - reagents_add = list("charcoal" = 0.04, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/medicine/charcoal = 0.04, /datum/reagent/consumable/nutriment = 0.02) /obj/item/seeds/kudzu/Copy() var/obj/item/seeds/kudzu/S = ..() @@ -58,7 +58,7 @@ /obj/item/seeds/kudzu/on_chem_reaction(datum/reagents/S) var/list/temp_mut_list = list() - if(S.has_reagent("sterilizine", 5)) + if(S.has_reagent(/datum/reagent/space_cleaner/sterilizine, 5)) for(var/datum/spacevine_mutation/SM in mutations) if(SM.quality == NEGATIVE) temp_mut_list += SM @@ -66,7 +66,7 @@ mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() - if(S.has_reagent("welding_fuel", 5)) + if(S.has_reagent(/datum/reagent/fuel, 5)) for(var/datum/spacevine_mutation/SM in mutations) if(SM.quality == POSITIVE) temp_mut_list += SM @@ -74,7 +74,7 @@ mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() - if(S.has_reagent("phenol", 5)) + if(S.has_reagent(/datum/reagent/phenol, 5)) for(var/datum/spacevine_mutation/SM in mutations) if(SM.quality == MINOR_NEGATIVE) temp_mut_list += SM @@ -82,16 +82,16 @@ mutations.Remove(pick(temp_mut_list)) temp_mut_list.Cut() - if(S.has_reagent("blood", 15)) + if(S.has_reagent(/datum/reagent/blood, 15)) adjust_production(rand(15, -5)) - if(S.has_reagent("amatoxin", 5)) + if(S.has_reagent(/datum/reagent/toxin/amatoxin, 5)) adjust_production(rand(5, -15)) - if(S.has_reagent("plasma", 5)) + if(S.has_reagent(/datum/reagent/toxin/plasma, 5)) adjust_potency(rand(5, -15)) - if(S.has_reagent("holywater", 10)) + if(S.has_reagent(/datum/reagent/water/holywater, 10)) adjust_potency(rand(15, -5)) diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index e85a36f4b6..940508f66b 100644 --- a/code/modules/hydroponics/grown/melon.dm +++ b/code/modules/hydroponics/grown/melon.dm @@ -12,7 +12,7 @@ icon_dead = "watermelon-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/watermelon/holy) - reagents_add = list("water" = 0.2, "vitamin" = 0.04, "nutriment" = 0.2) + reagents_add = list(/datum/reagent/water = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.2) /obj/item/seeds/watermelon/suicide_act(mob/user) user.visible_message("[user] is swallowing [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -33,7 +33,7 @@ filling_color = "#008000" bitesize_mod = 3 foodtype = FRUIT - juice_results = list("watermelonjuice" = 0) + juice_results = list(/datum/reagent/consumable/watermelonjuice = 0) wine_power = 40 // Holymelon @@ -46,7 +46,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/holymelon genes = list(/datum/plant_gene/trait/glow/yellow) mutatelist = list() - reagents_add = list("holywater" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/water/holywater = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/holymelon diff --git a/code/modules/hydroponics/grown/misc.dm b/code/modules/hydroponics/grown/misc.dm index 3af284974e..e0a2453353 100644 --- a/code/modules/hydroponics/grown/misc.dm +++ b/code/modules/hydroponics/grown/misc.dm @@ -12,7 +12,7 @@ yield = 6 potency = 10 growthstages = 3 - grind_results = list("mustardgrind" = 1) + grind_results = list(/datum/reagent/mustardgrind = 1) growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy) mutatelist = list(/obj/item/seeds/starthistle/corpse_flower, /obj/item/seeds/galaxythistle) @@ -80,7 +80,7 @@ growing_icon = 'icons/obj/hydroponics/growing_flowers.dmi' genes = list(/datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/invasive) mutatelist = list() - reagents_add = list("nutriment" = 0.05, "silibinin" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.05, /datum/reagent/medicine/silibinin = 0.1) /obj/item/seeds/galaxythistle/Initialize() ..() @@ -116,7 +116,7 @@ growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/replicapod) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/cabbage seed = /obj/item/seeds/cabbage @@ -142,7 +142,7 @@ maturation = 3 yield = 4 growthstages = 2 - reagents_add = list("sugar" = 0.25) + reagents_add = list(/datum/reagent/consumable/sugar = 0.25) mutatelist = list(/obj/item/seeds/bamboo) /obj/item/reagent_containers/food/snacks/grown/sugarcane @@ -153,7 +153,7 @@ filling_color = "#FFD700" bitesize_mod = 2 foodtype = VEGETABLES | SUGAR - distill_reagent = "rum" + distill_reagent = /datum/reagent/consumable/ethanol/rum // Gatfruit /obj/item/seeds/gatfruit @@ -173,7 +173,7 @@ growthstages = 2 rarity = 60 // Obtainable only with xenobio+superluck. growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' - reagents_add = list("sulfur" = 0.1, "carbon" = 0.1, "nitrogen" = 0.07, "potassium" = 0.05) + reagents_add = list(/datum/reagent/sulfur = 0.1, /datum/reagent/carbon = 0.1, /datum/reagent/nitrogen = 0.07, /datum/reagent/potassium = 0.05) /obj/item/reagent_containers/food/snacks/grown/shell/gatfruit seed = /obj/item/seeds/gatfruit @@ -195,7 +195,7 @@ plantname = "Cherry Bomb Tree" product = /obj/item/reagent_containers/food/snacks/grown/cherry_bomb mutatelist = list() - reagents_add = list("nutriment" = 0.1, "sugar" = 0.1, "blackpowder" = 0.7) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/blackpowder = 0.7) rarity = 60 //See above /obj/item/reagent_containers/food/snacks/grown/cherry_bomb @@ -261,7 +261,7 @@ icon_dead = "coconut-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) forbiddengenes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/stinging) - reagents_add = list("coconutmilk" = 0.3) + reagents_add = list(/datum/reagent/consumable/coconutmilk = 0.3) /obj/item/reagent_containers/food/snacks/grown/coconut seed = /obj/item/seeds/coconut @@ -432,7 +432,7 @@ "[user] splashes the contents of [src] onto [M]!") if(reagents) for(var/datum/reagent/A in reagents.reagent_list) - R += A.id + " (" + R += A.type + " (" R += num2text(A.volume) + ")," if(isturf(target) && reagents.reagent_list.len && thrownby) log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]") diff --git a/code/modules/hydroponics/grown/mushrooms.dm b/code/modules/hydroponics/grown/mushrooms.dm index c8e97c78de..7e43911c5c 100644 --- a/code/modules/hydroponics/grown/mushrooms.dm +++ b/code/modules/hydroponics/grown/mushrooms.dm @@ -21,7 +21,7 @@ growthstages = 4 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list("morphine" = 0.35, "charcoal" = 0.35, "nutriment" = 0) + reagents_add = list(/datum/reagent/medicine/morphine = 0.35, /datum/reagent/medicine/charcoal = 0.35, /datum/reagent/consumable/nutriment = 0) /obj/item/reagent_containers/food/snacks/grown/mushroom/reishi seed = /obj/item/seeds/reishi @@ -47,7 +47,7 @@ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list(/obj/item/seeds/angel) - reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.35, "nutriment" = 0, "growthserum" = 0.1) + reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.04, /datum/reagent/toxin/amatoxin = 0.35, /datum/reagent/consumable/nutriment = 0, /datum/reagent/growthserum = 0.1) /obj/item/reagent_containers/food/snacks/grown/mushroom/amanita seed = /obj/item/seeds/amanita @@ -73,7 +73,7 @@ growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list("mushroomhallucinogen" = 0.04, "amatoxin" = 0.1, "nutriment" = 0, "amanitin" = 0.2) + reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.04, /datum/reagent/toxin/amatoxin = 0.1, /datum/reagent/consumable/nutriment = 0, /datum/reagent/toxin/amanitin = 0.2) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/angel @@ -99,7 +99,7 @@ growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list("mushroomhallucinogen" = 0.25, "nutriment" = 0.02) + reagents_add = list(/datum/reagent/drug/mushroomhallucinogen = 0.25, /datum/reagent/consumable/nutriment = 0.02) /obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap seed = /obj/item/seeds/liberty @@ -125,7 +125,7 @@ genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list(/obj/item/seeds/plump/walkingmushroom) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet seed = /obj/item/seeds/plump @@ -133,7 +133,7 @@ desc = "Plumus Hellmus: Plump, soft and s-so inviting~" icon_state = "plumphelmet" filling_color = "#9370DB" - distill_reagent = "manlydorf" + distill_reagent = /datum/reagent/consumable/ethanol/manly_dorf // Walking Mushroom /obj/item/seeds/plump/walkingmushroom @@ -149,7 +149,7 @@ yield = 1 growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list() - reagents_add = list("vitamin" = 0.05, "nutriment" = 0.15) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.15) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/walkingmushroom @@ -190,7 +190,7 @@ growthstages = 3 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list("nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) mutatelist = list(/obj/item/seeds/chanterelle/jupitercup) /obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle @@ -215,7 +215,7 @@ growthstages = 2 genes = list(/datum/plant_gene/trait/plant_type/fungal_metabolism, /datum/plant_gene/reagent/liquidelectricity, /datum/plant_gene/trait/plant_type/carnivory) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' - reagents_add = list("nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) /obj/item/seeds/chanterelle/jupitercup/Initialize() ..() @@ -248,7 +248,7 @@ genes = list(/datum/plant_gene/trait/glow, /datum/plant_gene/trait/plant_type/fungal_metabolism) growing_icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' mutatelist = list(/obj/item/seeds/glowshroom/glowcap, /obj/item/seeds/glowshroom/shadowshroom) - reagents_add = list("radium" = 0.1, "phosphorus" = 0.1, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/radium = 0.1, /datum/reagent/phosphorus = 0.1, /datum/reagent/consumable/nutriment = 0.04) /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom seed = /obj/item/seeds/glowshroom @@ -293,7 +293,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap genes = list(/datum/plant_gene/trait/glow/red, /datum/plant_gene/trait/cell_charge, /datum/plant_gene/trait/plant_type/fungal_metabolism) mutatelist = list() - reagents_add = list("teslium" = 0.1, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/teslium = 0.1, /datum/reagent/consumable/nutriment = 0.04) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/glowcap @@ -318,7 +318,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom genes = list(/datum/plant_gene/trait/glow/shadow, /datum/plant_gene/trait/plant_type/fungal_metabolism) mutatelist = list() - reagents_add = list("radium" = 0.2, "nutriment" = 0.04) + reagents_add = list(/datum/reagent/radium = 0.2, /datum/reagent/consumable/nutriment = 0.04) rarity = 30 /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom/shadowshroom @@ -350,7 +350,7 @@ potency = 15 growthstages = 3 rarity = 20 - reagents_add = list("nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment = 0.1) resistance_flags = FIRE_PROOF /obj/item/seeds/lavaland/polypore diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index dbcce2830b..c3bd82c624 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -11,7 +11,7 @@ growthstages = 5 genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy) mutatelist = list(/obj/item/seeds/nettle/death) - reagents_add = list("sacid" = 0.5) + reagents_add = list(/datum/reagent/toxin/acid = 0.5) /obj/item/seeds/nettle/death name = "pack of death-nettle seeds" @@ -25,7 +25,7 @@ yield = 2 genes = list(/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/plant_type/weed_hardy, /datum/plant_gene/trait/stinging) mutatelist = list() - reagents_add = list("facid" = 0.5, "sacid" = 0.5) + reagents_add = list(/datum/reagent/toxin/acid/fluacid = 0.5, /datum/reagent/toxin/acid = 0.5) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/nettle // "snack" diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm index 9cb8d1a63c..2ebaa6d5e2 100644 --- a/code/modules/hydroponics/grown/onion.dm +++ b/code/modules/hydroponics/grown/onion.dm @@ -13,7 +13,7 @@ growthstages = 3 weed_chance = 3 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) mutatelist = list(/obj/item/seeds/onion/red) /obj/item/reagent_containers/food/snacks/grown/onion @@ -36,7 +36,7 @@ plantname = "Red Onion Sprouts" weed_chance = 1 product = /obj/item/reagent_containers/food/snacks/grown/onion/red - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1, "tearjuice" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1, /datum/reagent/consumable/tearjuice = 0.05) /obj/item/reagent_containers/food/snacks/grown/onion/red seed = /obj/item/seeds/onion/red @@ -61,7 +61,7 @@ name = "onion slices" desc = "Rings, not for wearing." icon_state = "onionslice" - list_reagents = list("nutriment" = 5, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#C0C9A0" gender = PLURAL cooked_type = /obj/item/reagent_containers/food/snacks/onionrings @@ -71,4 +71,4 @@ desc = "They shine like exceptionally low quality amethyst." icon_state = "onionslice_red" filling_color = "#C29ACF" - list_reagents = list("nutriment" = 5, "vitamin" = 2, "tearjuice" = 2.5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/tearjuice = 2.5) diff --git a/code/modules/hydroponics/grown/peach.dm b/code/modules/hydroponics/grown/peach.dm index 6fbf933bd1..1f48ab5512 100644 --- a/code/modules/hydroponics/grown/peach.dm +++ b/code/modules/hydroponics/grown/peach.dm @@ -13,7 +13,7 @@ icon_grow = "peach-grow" icon_dead = "peach-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/peach seed = /obj/item/seeds/peach @@ -23,5 +23,5 @@ filling_color = "#FF4500" bitesize = 25 foodtype = FRUIT - juice_results = list("peachjuice" = 0) + juice_results = list(/datum/reagent/consumable/peachjuice = 0) tastes = list("peach" = 1) diff --git a/code/modules/hydroponics/grown/peanuts.dm b/code/modules/hydroponics/grown/peanuts.dm index 2423300cc4..3ac1497148 100644 --- a/code/modules/hydroponics/grown/peanuts.dm +++ b/code/modules/hydroponics/grown/peanuts.dm @@ -8,7 +8,7 @@ yield = 6 growthstages = 4 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' - reagents_add = list("vitamin" = 0.02, "nutriment" = 0.15, "cooking_oil" = 0.03) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.15, /datum/reagent/consumable/cooking_oil = 0.03) /obj/item/reagent_containers/food/snacks/grown/peanut seed = /obj/item/seeds/peanutseed @@ -26,5 +26,5 @@ desc = "A handful of roasted peanuts, with or without salt." icon_state = "roasted_peanuts" foodtype = VEGETABLES - list_reagents = list("nutriment" = 6, "vitamin" = 1) - juice_results = list("peanut_butter" = 3) \ No newline at end of file + list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 1) + juice_results = list(/datum/reagent/consumable/peanut_butter = 3) \ No newline at end of file diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm index e52c261217..40b3a67573 100644 --- a/code/modules/hydroponics/grown/pineapple.dm +++ b/code/modules/hydroponics/grown/pineapple.dm @@ -12,7 +12,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/apple) - reagents_add = list("vitamin" = 0.02, "nutriment" = 0.2, "water" = 0.04) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.02, /datum/reagent/consumable/nutriment = 0.2, /datum/reagent/water = 0.04) /obj/item/reagent_containers/food/snacks/grown/pineapple seed = /obj/item/seeds/pineapple diff --git a/code/modules/hydroponics/grown/potato.dm b/code/modules/hydroponics/grown/potato.dm index 50341dfa3a..fad916030d 100644 --- a/code/modules/hydroponics/grown/potato.dm +++ b/code/modules/hydroponics/grown/potato.dm @@ -16,7 +16,7 @@ icon_dead = "potato-dead" genes = list(/datum/plant_gene/trait/battery) mutatelist = list(/obj/item/seeds/potato/sweet) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/potato seed = /obj/item/seeds/potato @@ -26,8 +26,8 @@ filling_color = "#E9967A" bitesize = 100 foodtype = VEGETABLES - juice_results = list("potato" = 0) - distill_reagent = "vodka" + juice_results = list(/datum/reagent/consumable/potato_juice = 0) + distill_reagent = /datum/reagent/consumable/ethanol/vodka /obj/item/reagent_containers/food/snacks/grown/potato/wedges name = "potato wedges" @@ -57,11 +57,11 @@ plantname = "Sweet Potato Plants" product = /obj/item/reagent_containers/food/snacks/grown/potato/sweet mutatelist = list() - reagents_add = list("vitamin" = 0.1, "sugar" = 0.1, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.1, /datum/reagent/consumable/sugar = 0.1, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/potato/sweet seed = /obj/item/seeds/potato/sweet name = "sweet potato" desc = "It's sweet." icon_state = "sweetpotato" - distill_reagent = "sbiten" + distill_reagent = /datum/reagent/consumable/ethanol/sbiten diff --git a/code/modules/hydroponics/grown/pumpkin.dm b/code/modules/hydroponics/grown/pumpkin.dm index 46dc49a169..6254fb5bcc 100644 --- a/code/modules/hydroponics/grown/pumpkin.dm +++ b/code/modules/hydroponics/grown/pumpkin.dm @@ -14,7 +14,7 @@ icon_dead = "pumpkin-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/pumpkin/blumpkin) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.2) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.2) /obj/item/reagent_containers/food/snacks/grown/pumpkin seed = /obj/item/seeds/pumpkin @@ -24,7 +24,7 @@ filling_color = "#FFA500" bitesize_mod = 2 foodtype = FRUIT - juice_results = list("pumpkinjuice" = 0) + juice_results = list(/datum/reagent/consumable/pumpkinjuice = 0) wine_power = 20 /obj/item/reagent_containers/food/snacks/grown/pumpkin/attackby(obj/item/W as obj, mob/user as mob, params) @@ -45,7 +45,7 @@ plantname = "Blumpkin Vines" product = /obj/item/reagent_containers/food/snacks/grown/blumpkin mutatelist = list() - reagents_add = list("ammonia" = 0.2, "chlorine" = 0.1, "nutriment" = 0.2) + reagents_add = list(/datum/reagent/ammonia = 0.2, /datum/reagent/chlorine = 0.1, /datum/reagent/consumable/nutriment = 0.2) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/blumpkin @@ -56,5 +56,5 @@ filling_color = "#87CEFA" bitesize_mod = 2 foodtype = FRUIT - juice_results = list("blumpkinjuice" = 0) + juice_results = list(/datum/reagent/consumable/blumpkinjuice = 0) wine_power = 50 diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index bac480bee6..3769f9eacc 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -31,7 +31,7 @@ /obj/item/seeds/replicapod/on_reagent_change(changetype) if(changetype == ADD_REAGENT) - var/datum/reagent/blood/B = reagents.has_reagent("blood") + var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood) if(B) if(B.data["mind"] && B.data["cloneable"]) mind = B.data["mind"] @@ -47,7 +47,7 @@ else visible_message("The [src] rejects the sample!") - if(!reagents.has_reagent("blood")) + if(!reagents.has_reagent(/datum/reagent/blood)) mind = null ckey = null realName = null diff --git a/code/modules/hydroponics/grown/root.dm b/code/modules/hydroponics/grown/root.dm index e28043e4b1..ac171b4e45 100644 --- a/code/modules/hydroponics/grown/root.dm +++ b/code/modules/hydroponics/grown/root.dm @@ -12,7 +12,7 @@ growthstages = 3 growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' mutatelist = list(/obj/item/seeds/carrot/parsnip) - reagents_add = list("oculine" = 0.25, "vitamin" = 0.04, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/medicine/oculine = 0.25, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/carrot seed = /obj/item/seeds/carrot @@ -22,7 +22,7 @@ filling_color = "#FFA500" bitesize_mod = 2 foodtype = VEGETABLES - juice_results = list("carrotjuice" = 0) + juice_results = list(/datum/reagent/consumable/carrotjuice = 0) wine_power = 30 /obj/item/reagent_containers/food/snacks/grown/carrot/attackby(obj/item/I, mob/user, params) @@ -45,7 +45,7 @@ product = /obj/item/reagent_containers/food/snacks/grown/parsnip icon_dead = "carrot-dead" mutatelist = list() - reagents_add = list("vitamin" = 0.05, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/parsnip seed = /obj/item/seeds/carrot/parsnip @@ -54,7 +54,7 @@ icon_state = "parsnip" bitesize_mod = 2 foodtype = VEGETABLES - juice_results = list("parsnipjuice" = 0) + juice_results = list(/datum/reagent/consumable/parsnipjuice = 0) wine_power = 35 @@ -72,7 +72,7 @@ growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_dead = "whitebeet-dead" mutatelist = list(/obj/item/seeds/redbeet) - reagents_add = list("vitamin" = 0.04, "sugar" = 0.2, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/sugar = 0.2, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/whitebeet seed = /obj/item/seeds/whitebeet @@ -98,7 +98,7 @@ growing_icon = 'icons/obj/hydroponics/growing_vegetables.dmi' icon_dead = "whitebeet-dead" genes = list(/datum/plant_gene/trait/maxchem) - reagents_add = list("vitamin" = 0.05, "nutriment" = 0.05) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.05, /datum/reagent/consumable/nutriment = 0.05) /obj/item/reagent_containers/food/snacks/grown/redbeet seed = /obj/item/seeds/redbeet diff --git a/code/modules/hydroponics/grown/tea_coffee.dm b/code/modules/hydroponics/grown/tea_coffee.dm index bdb5bdb3f9..44e11c372d 100644 --- a/code/modules/hydroponics/grown/tea_coffee.dm +++ b/code/modules/hydroponics/grown/tea_coffee.dm @@ -14,7 +14,7 @@ icon_dead = "tea-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/tea/astra) - reagents_add = list("teapowder" = 0.1) + reagents_add = list(/datum/reagent/toxin/teapowder = 0.1) /obj/item/reagent_containers/food/snacks/grown/tea seed = /obj/item/seeds/tea @@ -22,7 +22,7 @@ desc = "These aromatic tips of the tea plant can be dried to make tea." icon_state = "tea_aspera_leaves" filling_color = "#008000" - grind_results = list("teapowder" = 0) + grind_results = list(/datum/reagent/toxin/teapowder = 0) dry_grind = TRUE can_distill = FALSE @@ -34,7 +34,7 @@ plantname = "Tea Astra Plant" product = /obj/item/reagent_containers/food/snacks/grown/tea/astra mutatelist = list(/obj/item/seeds/tea/catnip) - reagents_add = list("synaptizine" = 0.1, "vitamin" = 0.04, "teapowder" = 0.1) + reagents_add = list(/datum/reagent/medicine/synaptizine = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/teapowder = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tea/astra @@ -42,7 +42,7 @@ name = "Tea Astra tips" icon_state = "tea_astra_leaves" filling_color = "#4582B4" - grind_results = list("teapowder" = 0, "salglu_solution" = 0) + grind_results = list(/datum/reagent/toxin/teapowder = 0, /datum/reagent/medicine/salglu_solution = 0) // Kitty drugs /obj/item/seeds/tea/catnip @@ -52,7 +52,7 @@ species = "catnip" plantname = "Catnip Plant" product = /obj/item/reagent_containers/food/snacks/grown/tea/catnip - reagents_add = list("catnip" = 0.1, "vitamin" = 0.06, "teapowder" = 0.3) + reagents_add = list(/datum/reagent/pax/catnip = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.06, /datum/reagent/toxin/teapowder = 0.3) rarity = 50 /obj/item/reagent_containers/food/snacks/grown/tea/catnip @@ -60,7 +60,7 @@ name = "Catnip buds" icon_state = "catnip" filling_color = "#4582B4" - grind_results = list("catnp" = 2, "water" = 1) + grind_results = list(/datum/reagent/pax/catnip = 2, /datum/reagent/water = 1) // Coffee /obj/item/seeds/coffee @@ -79,7 +79,7 @@ icon_dead = "coffee-dead" genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/coffee/robusta) - reagents_add = list("vitamin" = 0.04, "coffeepowder" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/coffeepowder = 0.1) /obj/item/reagent_containers/food/snacks/grown/coffee seed = /obj/item/seeds/coffee @@ -89,8 +89,8 @@ filling_color = "#DC143C" bitesize_mod = 2 dry_grind = TRUE - grind_results = list("coffeepowder" = 0) - distill_reagent = "kahlua" + grind_results = list(/datum/reagent/toxin/coffeepowder = 0) + distill_reagent = /datum/reagent/consumable/ethanol/kahlua // Coffee Robusta /obj/item/seeds/coffee/robusta @@ -101,7 +101,7 @@ plantname = "Coffee Robusta Bush" product = /obj/item/reagent_containers/food/snacks/grown/coffee/robusta mutatelist = list() - reagents_add = list("ephedrine" = 0.1, "vitamin" = 0.04, "coffeepowder" = 0.1) + reagents_add = list(/datum/reagent/medicine/ephedrine = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/toxin/coffeepowder = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/coffee/robusta @@ -109,4 +109,4 @@ name = "coffee robusta beans" desc = "Increases robustness by 37 percent!" icon_state = "coffee_robusta" - grind_results = list("coffeepowder" = 0, "morphine" = 0) + grind_results = list(/datum/reagent/toxin/coffeepowder = 0, /datum/reagent/medicine/morphine = 0) diff --git a/code/modules/hydroponics/grown/tobacco.dm b/code/modules/hydroponics/grown/tobacco.dm index 684271fa6b..1e2d25d825 100644 --- a/code/modules/hydroponics/grown/tobacco.dm +++ b/code/modules/hydroponics/grown/tobacco.dm @@ -13,7 +13,7 @@ growthstages = 3 icon_dead = "tobacco-dead" mutatelist = list(/obj/item/seeds/tobacco/space) - reagents_add = list("nicotine" = 0.03, "nutriment" = 0.03) + reagents_add = list(/datum/reagent/drug/nicotine = 0.03, /datum/reagent/consumable/nutriment = 0.03) /obj/item/reagent_containers/food/snacks/grown/tobacco seed = /obj/item/seeds/tobacco @@ -21,7 +21,7 @@ desc = "Dry them out to make some smokes." icon_state = "tobacco_leaves" filling_color = "#008000" - distill_reagent = "creme_de_menthe" //Menthol, I guess. + distill_reagent = /datum/reagent/consumable/ethanol/creme_de_menthe //Menthol, I guess. // Space Tobacco /obj/item/seeds/tobacco/space @@ -32,7 +32,7 @@ plantname = "Space Tobacco Plant" product = /obj/item/reagent_containers/food/snacks/grown/tobacco/space mutatelist = list() - reagents_add = list("salbutamol" = 0.05, "nicotine" = 0.08, "nutriment" = 0.03) + reagents_add = list(/datum/reagent/medicine/salbutamol = 0.05, /datum/reagent/drug/nicotine = 0.08, /datum/reagent/consumable/nutriment = 0.03) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tobacco/space diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index d07f5d4d08..53c3389695 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -12,7 +12,7 @@ icon_dead = "tomato-dead" genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/tomato/blue, /obj/item/seeds/tomato/blood, /obj/item/seeds/tomato/killer) - reagents_add = list("vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) /obj/item/reagent_containers/food/snacks/grown/tomato seed = /obj/item/seeds/tomato @@ -23,9 +23,9 @@ filling_color = "#FF6347" bitesize_mod = 2 foodtype = FRUIT - grind_results = list("ketchup" = 0) - juice_results = list("tomatojuice" = 0) - distill_reagent = "enzyme" + grind_results = list(/datum/reagent/consumable/ketchup = 0) + juice_results = list(/datum/reagent/consumable/tomatojuice = 0) + distill_reagent = /datum/reagent/consumable/enzyme // Blood Tomato /obj/item/seeds/tomato/blood @@ -36,7 +36,7 @@ plantname = "Blood-Tomato Plants" product = /obj/item/reagent_containers/food/snacks/grown/tomato/blood mutatelist = list() - reagents_add = list("blood" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/blood = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tomato/blood @@ -47,8 +47,8 @@ splat_type = /obj/effect/gibspawner/generic filling_color = "#FF0000" foodtype = FRUIT | GROSS - grind_results = list("ketchup" = 0, "blood" = 0) - distill_reagent = "bloodymary" + grind_results = list(/datum/reagent/consumable/ketchup = 0, /datum/reagent/blood = 0) + distill_reagent = /datum/reagent/consumable/ethanol/bloody_mary // Blue Tomato /obj/item/seeds/tomato/blue @@ -62,7 +62,7 @@ icon_grow = "bluetomato-grow" mutatelist = list(/obj/item/seeds/tomato/blue/bluespace) genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("lube" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/lube = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 20 /obj/item/reagent_containers/food/snacks/grown/tomato/blue @@ -72,7 +72,7 @@ icon_state = "bluetomato" splat_type = /obj/effect/decal/cleanable/oil filling_color = "#0000FF" - distill_reagent = "laughter" + distill_reagent = /datum/reagent/consumable/laughter // Bluespace Tomato /obj/item/seeds/tomato/blue/bluespace @@ -85,7 +85,7 @@ yield = 2 mutatelist = list() genes = list(/datum/plant_gene/trait/squash, /datum/plant_gene/trait/slip, /datum/plant_gene/trait/teleport, /datum/plant_gene/trait/repeated_harvest) - reagents_add = list("lube" = 0.2, "bluespace" = 0.2, "vitamin" = 0.04, "nutriment" = 0.1) + reagents_add = list(/datum/reagent/lube = 0.2, /datum/reagent/bluespace = 0.2, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.1) rarity = 50 /obj/item/reagent_containers/food/snacks/grown/tomato/blue/bluespace @@ -120,7 +120,7 @@ icon_state = "killertomato" var/awakening = 0 filling_color = "#FF0000" - distill_reagent = "demonsblood" + distill_reagent = /datum/reagent/consumable/ethanol/demonsblood /obj/item/reagent_containers/food/snacks/grown/tomato/killer/attack(mob/M, mob/user, def_zone) if(awakening) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 1ea0068a1a..9655b13862 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -24,7 +24,7 @@ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' volume = 100 - list_reagents = list("weedkiller" = 100) + list_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 100) /obj/item/reagent_containers/spray/weedspray/suicide_act(mob/user) user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -39,7 +39,7 @@ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' volume = 100 - list_reagents = list("pestkiller" = 100) + list_reagents = list(/datum/reagent/toxin/pestkiller = 100) /obj/item/reagent_containers/spray/pestspray/suicide_act(mob/user) user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -164,17 +164,17 @@ /obj/item/reagent_containers/glass/bottle/nutrient/ez name = "bottle of E-Z-Nutrient" desc = "Contains a fertilizer that causes mild mutations with each harvest." - list_reagents = list("eznutriment" = 50) + list_reagents = list(/datum/reagent/plantnutriment/eznutriment = 50) /obj/item/reagent_containers/glass/bottle/nutrient/l4z name = "bottle of Left 4 Zed" desc = "Contains a fertilizer that limits plant yields to no more than one and causes significant mutations in plants." - list_reagents = list("left4zednutriment" = 50) + list_reagents = list(/datum/reagent/plantnutriment/left4zednutriment = 50) /obj/item/reagent_containers/glass/bottle/nutrient/rh name = "bottle of Robust Harvest" desc = "Contains a fertilizer that increases the yield of a plant by 30% while causing no mutations." - list_reagents = list("robustharvestnutriment" = 50) + list_reagents = list(/datum/reagent/plantnutriment/robustharvestnutriment = 50) /obj/item/reagent_containers/glass/bottle/nutrient/empty name = "bottle" @@ -187,9 +187,9 @@ /obj/item/reagent_containers/glass/bottle/killer/weedkiller name = "bottle of weed killer" desc = "Contains a herbicide." - list_reagents = list("weedkiller" = 50) + list_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 50) /obj/item/reagent_containers/glass/bottle/killer/pestkiller name = "bottle of pest spray" desc = "Contains a pesticide." - list_reagents = list("pestkiller" = 50) \ No newline at end of file + list_reagents = list(/datum/reagent/toxin/pestkiller = 50) \ No newline at end of file diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 59a9725383..0b6834c408 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -470,7 +470,7 @@ myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines // Requires 5 mutagen to possibly change species.// Poor man's mutagen. - if(S.has_reagent("mutagen", 5) || S.has_reagent("radium", 10) || S.has_reagent("uranium", 10)) + if(S.has_reagent(/datum/reagent/toxin/mutagen, 5) || S.has_reagent(/datum/reagent/radium, 10) || S.has_reagent(/datum/reagent/uranium, 10)) switch(rand(100)) if(91 to 100) adjustHealth(-10) @@ -491,214 +491,214 @@ to_chat(user, "Nothing happens...") // 2 or 1 units is enough to change the yield and other stats.// Can change the yield and other stats, but requires more than mutagen - else if(S.has_reagent("mutagen", 2) || S.has_reagent("radium", 5) || S.has_reagent("uranium", 5)) + else if(S.has_reagent(/datum/reagent/toxin/mutagen, 2) || S.has_reagent(/datum/reagent/radium, 5) || S.has_reagent(/datum/reagent/uranium, 5)) hardmutate() - else if(S.has_reagent("mutagen", 1) || S.has_reagent("radium", 2) || S.has_reagent("uranium", 2)) + else if(S.has_reagent(/datum/reagent/toxin/mutagen, 1) || S.has_reagent(/datum/reagent/radium, 2) || S.has_reagent(/datum/reagent/uranium, 2)) mutate() // After handling the mutating, we now handle the damage from adding crude radioactives... - if(S.has_reagent("uranium", 1)) - adjustHealth(-round(S.get_reagent_amount("uranium") * 1)) - adjustToxic(round(S.get_reagent_amount("uranium") * 2)) - if(S.has_reagent("radium", 1)) - adjustHealth(-round(S.get_reagent_amount("radium") * 1)) - adjustToxic(round(S.get_reagent_amount("radium") * 3)) // Radium is harsher (OOC: also easier to produce) + if(S.has_reagent(/datum/reagent/uranium, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/uranium) * 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/uranium) * 2)) + if(S.has_reagent(/datum/reagent/radium, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/radium) * 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/radium) * 3)) // Radium is harsher (OOC: also easier to produce) // Nutriments - if(S.has_reagent("eznutriment", 1)) + if(S.has_reagent(/datum/reagent/plantnutriment/eznutriment, 1)) yieldmod = 1 mutmod = 1 - adjustNutri(round(S.get_reagent_amount("eznutriment") * 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/eznutriment) * 1)) - if(S.has_reagent("left4zednutriment", 1)) + if(S.has_reagent(/datum/reagent/plantnutriment/left4zednutriment, 1)) yieldmod = 0 mutmod = 2 - adjustNutri(round(S.get_reagent_amount("left4zednutriment") * 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/left4zednutriment) * 1)) - if(S.has_reagent("robustharvestnutriment", 1)) + if(S.has_reagent(/datum/reagent/plantnutriment/robustharvestnutriment, 1)) yieldmod = 1.3 mutmod = 0 - adjustNutri(round(S.get_reagent_amount("robustharvestnutriment") *1 )) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/robustharvestnutriment) *1 )) // Ambrosia Gaia produces earthsblood. - if(S.has_reagent("earthsblood")) - self_sufficiency_progress += S.get_reagent_amount("earthsblood") + if(S.has_reagent(/datum/reagent/medicine/earthsblood)) + self_sufficiency_progress += S.get_reagent_amount(/datum/reagent/medicine/earthsblood) if(self_sufficiency_progress >= self_sufficiency_req) become_self_sufficient() else if(!self_sustaining) to_chat(user, "[src] warms as it might on a spring day under a genuine Sun.") // Antitoxin binds shit pretty well. So the tox goes significantly down - if(S.has_reagent("charcoal", 1)) - adjustToxic(-round(S.get_reagent_amount("charcoal") * 2)) + if(S.has_reagent(/datum/reagent/medicine/charcoal, 1)) + adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/charcoal) * 2)) // Toxins, not good for anything - if(S.has_reagent("toxin", 1)) - adjustToxic(round(S.get_reagent_amount("toxin") * 2)) + if(S.has_reagent(/datum/reagent/toxin, 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin) * 2)) // Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now... - if(S.has_reagent("milk", 1)) - adjustNutri(round(S.get_reagent_amount("milk") * 0.1)) - adjustWater(round(S.get_reagent_amount("milk") * 0.9)) + if(S.has_reagent(/datum/reagent/consumable/milk, 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.1)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.9)) // Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay? - if(S.has_reagent("beer", 1)) - adjustHealth(-round(S.get_reagent_amount("beer") * 0.05)) - adjustNutri(round(S.get_reagent_amount("beer") * 0.25)) - adjustWater(round(S.get_reagent_amount("beer") * 0.7)) + if(S.has_reagent(/datum/reagent/consumable/ethanol/beer, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.05)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.25)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.7)) // Fluorine one of the most corrosive and deadly gasses - if(S.has_reagent("fluorine", 1)) - adjustHealth(-round(S.get_reagent_amount("fluorine") * 2)) - adjustToxic(round(S.get_reagent_amount("fluorine") * 2.5)) - adjustWater(-round(S.get_reagent_amount("fluorine") * 0.5)) + if(S.has_reagent(/datum/reagent/fluorine, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 2)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/fluorine) * 2.5)) + adjustWater(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 0.5)) adjustWeeds(-rand(1,4)) // Chlorine one of the most corrosive and deadly gasses - if(S.has_reagent("chlorine", 1)) - adjustHealth(-round(S.get_reagent_amount("chlorine") * 1)) - adjustToxic(round(S.get_reagent_amount("chlorine") * 1.5)) - adjustWater(-round(S.get_reagent_amount("chlorine") * 0.5)) + if(S.has_reagent(/datum/reagent/chlorine, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/chlorine) * 1.5)) + adjustWater(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 0.5)) adjustWeeds(-rand(1,3)) // White Phosphorous + water -> phosphoric acid. That's not a good thing really. // Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much. - if(S.has_reagent("phosphorus", 1)) - adjustHealth(-round(S.get_reagent_amount("phosphorus") * 0.75)) - adjustNutri(round(S.get_reagent_amount("phosphorus") * 0.1)) - adjustWater(-round(S.get_reagent_amount("phosphorus") * 0.5)) + if(S.has_reagent(/datum/reagent/phosphorus, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.75)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.1)) + adjustWater(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.5)) adjustWeeds(-rand(1,2)) // Plants should not have sugar, they can't use it and it prevents them getting water/nutients, it is good for mold though... - if(S.has_reagent("sugar", 1)) + if(S.has_reagent(/datum/reagent/consumable/sugar, 1)) adjustWeeds(rand(1,2)) adjustPests(rand(1,2)) - adjustNutri(round(S.get_reagent_amount("sugar") * 0.1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sugar) * 0.1)) // It is water! - if(S.has_reagent("water", 1)) - adjustWater(round(S.get_reagent_amount("water") * 1)) + if(S.has_reagent(/datum/reagent/water, 1)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/water) * 1)) // Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~ - if(S.has_reagent("holywater", 1)) - adjustWater(round(S.get_reagent_amount("holywater") * 1)) - adjustHealth(round(S.get_reagent_amount("holywater") * 0.1)) + if(S.has_reagent(/datum/reagent/water/holywater, 1)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 0.1)) // A variety of nutrients are dissolved in club soda, without sugar. // These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth. - if(S.has_reagent("sodawater", 1)) - adjustWater(round(S.get_reagent_amount("sodawater") * 1)) - adjustHealth(round(S.get_reagent_amount("sodawater") * 0.1)) - adjustNutri(round(S.get_reagent_amount("sodawater") * 0.1)) + if(S.has_reagent(/datum/reagent/consumable/sodawater, 1)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1)) // Sulphuric Acid - if(S.has_reagent("sacid", 1)) - adjustHealth(-round(S.get_reagent_amount("sacid") * 1)) - adjustToxic(round(S.get_reagent_amount("sacid") * 1.5)) + if(S.has_reagent(/datum/reagent/toxin/acid, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1.5)) adjustWeeds(-rand(1,2)) // Acid - if(S.has_reagent("facid", 1)) - adjustHealth(-round(S.get_reagent_amount("facid") * 2)) - adjustToxic(round(S.get_reagent_amount("facid") * 3)) + if(S.has_reagent(/datum/reagent/toxin/acid/fluacid, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 2)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 3)) adjustWeeds(-rand(1,4)) // Plant-B-Gone is just as bad - if(S.has_reagent("plantbgone", 1)) - adjustHealth(-round(S.get_reagent_amount("plantbgone") * 5)) - adjustToxic(round(S.get_reagent_amount("plantbgone") * 6)) + if(S.has_reagent(/datum/reagent/toxin/plantbgone, 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 5)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 6)) adjustWeeds(-rand(4,8)) // Napalm, not known for being good for anything organic - if(S.has_reagent("napalm", 1)) + if(S.has_reagent(/datum/reagent/napalm, 1)) if(!(myseed.resistance_flags & FIRE_PROOF)) - adjustHealth(-round(S.get_reagent_amount("napalm") * 6)) - adjustToxic(round(S.get_reagent_amount("napalm") * 7)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/napalm) * 6)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/napalm) * 7)) adjustWeeds(-rand(5,9)) //Weed Spray - if(S.has_reagent("weedkiller", 1)) - adjustToxic(round(S.get_reagent_amount("weedkiller") * 0.5)) + if(S.has_reagent(/datum/reagent/toxin/plantbgone/weedkiller, 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone/weedkiller) * 0.5)) //old toxicity was 4, each spray is default 10 (minimal of 5) so 5 and 2.5 are the new ammounts adjustWeeds(-rand(1,2)) //Pest Spray - if(S.has_reagent("pestkiller", 1)) - adjustToxic(round(S.get_reagent_amount("pestkiller") * 0.5)) + if(S.has_reagent(/datum/reagent/toxin/pestkiller, 1)) + adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/pestkiller) * 0.5)) adjustPests(-rand(1,2)) // Healing - if(S.has_reagent("cryoxadone", 1)) - adjustHealth(round(S.get_reagent_amount("cryoxadone") * 3)) - adjustToxic(-round(S.get_reagent_amount("cryoxadone") * 3)) + if(S.has_reagent(/datum/reagent/medicine/cryoxadone, 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3)) + adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3)) // Ammonia is bad ass. - if(S.has_reagent("ammonia", 1)) - adjustHealth(round(S.get_reagent_amount("ammonia") * 0.5)) - adjustNutri(round(S.get_reagent_amount("ammonia") * 1)) + if(S.has_reagent(/datum/reagent/ammonia, 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.5)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/ammonia) * 1)) if(myseed) - myseed.adjust_yield(round(S.get_reagent_amount("ammonia") * 0.01)) + myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.01)) // Saltpetre is used for gardening IRL, to simplify highly, it speeds up growth and strengthens plants - if(S.has_reagent("saltpetre", 1)) - var/salt = S.get_reagent_amount("saltpetre") + if(S.has_reagent(/datum/reagent/saltpetre, 1)) + var/salt = S.get_reagent_amount(/datum/reagent/saltpetre) adjustHealth(round(salt * 0.25)) if (myseed) myseed.adjust_production(-round(salt/100)-prob(salt%100)) myseed.adjust_potency(round(salt*0.5)) // Ash is also used IRL in gardening, as a fertilizer enhancer and weed killer - if(S.has_reagent("ash", 1)) - adjustHealth(round(S.get_reagent_amount("ash") * 0.25)) - adjustNutri(round(S.get_reagent_amount("ash") * 0.5)) + if(S.has_reagent(/datum/reagent/ash, 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/ash) * 0.25)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/ash) * 0.5)) adjustWeeds(-1) // Diethylamine is more bad ass, and pests get hurt by the corrosive nature of it, not the plant. - if(S.has_reagent("diethylamine", 1)) - adjustHealth(round(S.get_reagent_amount("diethylamine") * 1)) - adjustNutri(round(S.get_reagent_amount("diethylamine") * 2)) + if(S.has_reagent(/datum/reagent/diethylamine, 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 2)) if(myseed) - myseed.adjust_yield(round(S.get_reagent_amount("diethylamine") * 0.02)) + myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.02)) adjustPests(-rand(1,2)) // Nutriment Compost, effectively - if(S.has_reagent("nutriment", 1)) - adjustHealth(round(S.get_reagent_amount("nutriment") * 0.5)) - adjustNutri(round(S.get_reagent_amount("nutriment") * 1)) + if(S.has_reagent(/datum/reagent/consumable/nutriment, 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 0.5)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 1)) // Virusfood Compost for EVERYTHING - if(S.has_reagent("virusfood", 1)) - adjustNutri(round(S.get_reagent_amount("virusfood") * 0.5)) - adjustHealth(-round(S.get_reagent_amount("virusfood") * 0.5)) + if(S.has_reagent(/datum/reagent/toxin/mutagen/mutagenvirusfood, 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5)) // Blood - if(S.has_reagent("blood", 1)) - adjustNutri(round(S.get_reagent_amount("blood") * 1)) + if(S.has_reagent(/datum/reagent/blood, 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/blood) * 1)) adjustPests(rand(2,4)) // Strange reagent - if(S.has_reagent("strangereagent", 1)) + if(S.has_reagent(/datum/reagent/medicine/strange_reagent, 1)) spawnplant() // Honey, Pests are dieing of sugar, so is the plant - if(S.has_reagent("honey", 1)) + if(S.has_reagent(/datum/reagent/consumable/honey, 1)) adjustPests(-rand(2,5)) - adjustHealth(-round(S.get_reagent_amount("honey") * 1)) + adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/honey) * 1)) // Buzz Fuzz, a drink seemingly made for plants... - if(S.has_reagent("buzz_fuzz", 1)) + if(S.has_reagent(/datum/reagent/consumable/buzz_fuzz, 1)) adjustPests(-rand(2,5)) - adjustHealth(round(S.get_reagent_amount("buzz_fuzz") * 0.1)) - adjustNutri(round(S.get_reagent_amount("buzz_fuzz") * 0.5)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/buzz_fuzz) * 0.1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/buzz_fuzz) * 0.5)) // Adminordrazine the best stuff there is. For testing/debugging. - if(S.has_reagent("adminordrazine", 1)) - adjustWater(round(S.get_reagent_amount("adminordrazine") * 1)) - adjustHealth(round(S.get_reagent_amount("adminordrazine") * 1)) - adjustNutri(round(S.get_reagent_amount("adminordrazine") * 1)) + if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 1)) + adjustWater(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1)) + adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1)) + adjustNutri(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1)) adjustPests(-rand(1,5)) adjustWeeds(-rand(1,5)) - if(S.has_reagent("adminordrazine", 5)) + if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 5)) switch(rand(100)) if(66 to 100) mutatespecie() diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 3597ed5be6..99fd873995 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -129,7 +129,7 @@ name = "UNKNOWN" var/datum/reagent/R = GLOB.chemical_reagents_list[reag_id] - if(R && R.id == reagent_id) + if(R && R.type == reagent_id) name = R.name /datum/plant_gene/reagent/New(reag_id = null, reag_rate = 0) @@ -228,7 +228,7 @@ var/obj/item/seeds/seed = G.seed var/stun_len = seed.potency * rate - if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent("lube"))) + if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent(/datum/reagent/lube))) stun_len /= 3 G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, .proc/handle_slip, G)) @@ -412,7 +412,7 @@ pocell.name = "[G.name] battery" pocell.desc = "A rechargeable plant-based power cell. This one has a rating of [DisplayEnergy(pocell.maxcharge)], and you should not swallow it." - if(G.reagents.has_reagent("plasma", 2)) + if(G.reagents.has_reagent(/datum/reagent/toxin/plasma, 2)) pocell.rigged = TRUE qdel(G) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 39e97e3801..b35665c8e6 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -200,7 +200,7 @@ obj/item/seeds/proc/is_gene_forbidden(typepath) var/list/data = null if(rid == "blood") // Hack to make blood in plants always O- data = list("blood_type" = "O-") - if(rid == "nutriment" || rid == "vitamin") + if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin) // apple tastes of apple. data = T.tastes diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index 40ed235863..4b6b8723dd 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -96,7 +96,8 @@ activators = list("push ref" = IC_PINTYPE_PULSE_IN) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH var/volume = 60 - var/list/fuel = list("plasma" = 50000, "welding_fuel" = 15000, "carbon" = 10000, "ethanol" = 10000, "nutriment" = 8000) + var/list/fuel = list(/datum/reagent/toxin/plasma = 50000, /datum/reagent/fuel = 15000, /datum/reagent/carbon = 10000, + /datum/reagent/consumable/ethanol = 10000, /datum/reagent/consumable/nutriment = 8000) var/multi = 1 var/lfwb =TRUE @@ -119,7 +120,7 @@ if(assembly) if(assembly.battery) var/bp = 5000 - if(reagents.get_reagent_amount("blood")) //only blood is powerful enough to power the station(c) + if(reagents.get_reagent_amount(/datum/reagent/blood)) //only blood is powerful enough to power the station(c) var/datum/reagent/blood/B = locate() in reagents.reagent_list if(lfwb) if(B && B.data["cloneable"]) @@ -127,7 +128,7 @@ if(M && (M.stat != DEAD) && (M.client)) bp = 500000 if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > bp) - if(reagents.remove_reagent("blood", 1)) + if(reagents.remove_reagent(/datum/reagent/blood, 1)) assembly.give_power(bp) for(var/I in fuel) if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > fuel[I]) diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index 027a03650a..0fc9f58db8 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -424,7 +424,7 @@ if(1) var/cont[0] for(var/datum/reagent/RE in reagents.reagent_list) - cont += RE.id + cont += RE.type set_pin_data(IC_OUTPUT, 3, cont) push_data() if(2) @@ -492,11 +492,11 @@ for(var/datum/reagent/G in source.reagents.reagent_list) if(!direction_mode) - if(G.id in demand) - source.reagents.trans_id_to(target, G.id, transfer_amount) + if(G.type in demand) + source.reagents.trans_id_to(target, G.type, transfer_amount) else - if(!(G.id in demand)) - source.reagents.trans_id_to(target, G.id, transfer_amount) + if(!(G.type in demand)) + source.reagents.trans_id_to(target, G.type, transfer_amount) activate_pin(2) push_data() diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm index 29c4c3d833..f84bd0d8d6 100644 --- a/code/modules/jobs/job_types/cyborg.dm +++ b/code/modules/jobs/job_types/cyborg.dm @@ -5,7 +5,7 @@ department_flag = ENGSEC faction = "Station" total_positions = 0 - spawn_positions = 1 + spawn_positions = 3 supervisors = "your laws and the AI" //Nodrak selection_color = "#ddffdd" minimal_player_age = 21 diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 559ffc0673..86889c5d00 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -14,7 +14,7 @@ flags_inv = HIDEJUMPSUIT|HIDETAUR allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) resistance_flags = FIRE_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC /obj/item/clothing/head/hooded/explorer @@ -70,7 +70,7 @@ clothing_flags = THICKMATERIAL //not spaceproof max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF - tauric = TRUE //Citadel Add for tauric hardsuits + mutantrace_variation = STYLE_DIGITIGRADE|STYLE_SNEK_TAURIC|STYLE_PAW_TAURIC slowdown = 0 armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) @@ -116,7 +116,7 @@ glass_overlay.appearance_flags = RESET_COLOR add_overlay(glass_overlay) -/obj/item/clothing/head/helmet/space/hostile_environment/worn_overlays(isinhands) +/obj/item/clothing/head/helmet/space/hostile_environment/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(!isinhands) var/mutable_appearance/M = mutable_appearance('icons/mob/head.dmi', "hostile_env_glass") diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index eb3e6a5b58..b2c0c1cc87 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -29,6 +29,15 @@ var/light_on = FALSE var/brightness_on = 7 +/obj/item/twohanded/kinetic_crusher/cyborg //probably give this a unique sprite later + desc = "An integrated version of the standard kinetic crusher with a grinded down axe head to dissuade mis-use against crewmen. Deals damage equal to the standard crusher against creatures, however." + force = 10 //wouldn't want to give a borg a 20 brute melee weapon unemagged now would we + detonation_damage = 60 + wielded = 1 + +/obj/item/twohanded/kinetic_crusher/cyborg/unwield() + return + /obj/item/twohanded/kinetic_crusher/Initialize() . = ..() AddComponent(/datum/component/butchering, 60, 110) //technically it's huge and bulky, but this provides an incentive to use it diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm index e02f38b7e3..d776628def 100644 --- a/code/modules/mining/equipment/mining_tools.dm +++ b/code/modules/mining/equipment/mining_tools.dm @@ -16,6 +16,20 @@ toolspeed = 1 usesound = list('sound/effects/picaxe1.ogg', 'sound/effects/picaxe2.ogg', 'sound/effects/picaxe3.ogg') attack_verb = list("hit", "pierced", "sliced", "attacked") + var/digrange = 1 + +/obj/item/pickaxe/attack_self(mob/user) + if(initial(digrange) > 0) + if(digrange == 0) + digrange = initial(digrange) + toolspeed = initial(toolspeed) + to_chat(user, "You increase the tools dig range, decreasing its mining speed.") + else + digrange = 0 + toolspeed = toolspeed/2 + to_chat(user, "You decrease the tools dig range, increasing its mining speed.") + else + to_chat(user, "Tool does not have a configureable dig range.") /obj/item/pickaxe/suicide_act(mob/living/user) user.visible_message("[user] begins digging into [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!") @@ -66,6 +80,7 @@ name = "cyborg mining drill" desc = "An integrated electric mining drill." flags_1 = NONE + toolspeed = 0.5 /obj/item/pickaxe/drill/cyborg/Initialize() . = ..() @@ -74,23 +89,25 @@ /obj/item/pickaxe/drill/diamonddrill name = "diamond-tipped mining drill" icon_state = "diamonddrill" - toolspeed = 0.2 + toolspeed = 0.4 desc = "Yours is the drill that will pierce the heavens!" /obj/item/pickaxe/drill/cyborg/diamond //This is the BORG version! name = "diamond-tipped cyborg mining drill" //To inherit the NODROP_1 flag, and easier to change borg specific drill mechanics. icon_state = "diamonddrill" - toolspeed = 0.1 + toolspeed = 0.4 + digrange = 2 /obj/item/pickaxe/drill/jackhammer name = "sonic jackhammer" icon_state = "jackhammer" item_state = "jackhammer" w_class = WEIGHT_CLASS_HUGE - toolspeed = 0.1 //the epitome of powertools. extremely fast mining, laughs at puny walls + toolspeed = 0.2 //the epitome of powertools. extremely fast mining, laughs at puny walls usesound = 'sound/weapons/sonic_jackhammer.ogg' hitsound = 'sound/weapons/sonic_jackhammer.ogg' desc = "Cracks rocks with sonic blasts, and doubles as a demolition power tool for smashing walls." + digrange = 2 /obj/item/shovel name = "shovel" diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index 4429c8426f..1e4244165f 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -1,144 +1,147 @@ -/*********************Hivelord stabilizer****************/ -/obj/item/hivelordstabilizer - name = "stabilizing serum" - icon = 'icons/obj/chemical.dmi' - icon_state = "bottle19" - desc = "Inject certain types of monster organs with this stabilizer to preserve their healing powers indefinitely." - w_class = WEIGHT_CLASS_TINY - -/obj/item/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user) - . = ..() - var/obj/item/organ/regenerative_core/C = M - if(!istype(C, /obj/item/organ/regenerative_core)) - to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.") - return ..() - - C.preserved() - to_chat(user, "You inject the [M] with the stabilizer. It will no longer go inert.") - qdel(src) - -/************************Hivelord core*******************/ -/obj/item/organ/regenerative_core - name = "regenerative core" - desc = "All that remains of a hivelord. It can be used to heal completely, but it will rapidly decay into uselessness." - icon_state = "roro core 2" - item_flags = NOBLUDGEON - slot = "hivecore" - force = 0 - actions_types = list(/datum/action/item_action/organ_action/use) - var/inert = 0 - var/preserved = 0 - -/obj/item/organ/regenerative_core/Initialize() - . = ..() - addtimer(CALLBACK(src, .proc/inert_check), 2400) - -/obj/item/organ/regenerative_core/proc/inert_check() - if(!preserved) - go_inert() - -/obj/item/organ/regenerative_core/proc/preserved(implanted = 0) - inert = FALSE - preserved = TRUE - update_icon() - desc = "All that remains of a hivelord. It is preserved, allowing you to use it to heal completely without danger of decay." - if(implanted) - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "implanted")) - else - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "stabilizer")) - -/obj/item/organ/regenerative_core/proc/go_inert() - inert = TRUE - name = "decayed regenerative core" - desc = "All that remains of a hivelord. It has decayed, and is completely useless." - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "inert")) - update_icon() - -/obj/item/organ/regenerative_core/ui_action_click() - if(inert) - to_chat(owner, "[src] breaks down as it tries to activate.") - else - owner.revive(full_heal = 1) - owner.log_message("[owner] used an implanted [src] to heal themselves! Keep fighting, it's just a flesh wound!", LOG_ATTACK, color="green") //Logging for implanted legion core use - qdel(src) - -/obj/item/organ/regenerative_core/on_life() - ..() - if(owner.health < owner.crit_threshold) - ui_action_click() - -/obj/item/organ/regenerative_core/afterattack(atom/target, mob/user, proximity_flag) - . = ..() - if(proximity_flag && ishuman(target)) - var/mob/living/carbon/human/H = target - if(inert) - to_chat(user, "[src] has decayed and can no longer be used to heal.") - return - else - if(H.stat == DEAD) - to_chat(user, "[src] are useless on the dead.") - return - if(H != user) - H.visible_message("[user] forces [H] to apply [src]... [H.p_they()] quickly regenerate all injuries!") - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "other")) - else - to_chat(user, "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.") - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self")) - H.revive(full_heal = 1) - qdel(src) - user.log_message("[user] used [src] to heal [H]! Wake the fuck up, Samurai!", LOG_ATTACK, color="green") //Logging for 'old' style legion core use, when clicking on a sprite of yourself or another. - -/obj/item/organ/regenerative_core/attack_self(mob/user) //Knouli's first hack! Allows for the use of the core in hand rather than needing to click on the target, yourself, to selfheal. Its a rip of the proc just above - but skips on distance check and only uses 'user' rather than 'target' - if(ishuman(user)) //Check if user is human, no need for distance check as it's self heal - var/mob/living/carbon/human/H = user //Set H to user rather than target - if(inert) //Inert cores are useless - to_chat(user, "[src] has decayed and can no longer be used to heal.") - return - else //Skip on check if the target to be healed is dead as, if you are dead, you're not going to be able to use it on yourself! - to_chat(user, "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.") - SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self")) - H.revive(full_heal = 1) - qdel(src) - H.log_message("[H] used [src] to heal themselves! Making use of Knouli's sexy and intelligent use-in-hand proc!", LOG_ATTACK, color="green") //Logging for 'new' style legion core use, when using the core in-hand. - - -/obj/item/organ/regenerative_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) - . = ..() - if(!preserved && !inert) - preserved(TRUE) - owner.visible_message("[src] stabilizes as it's inserted.") - -/obj/item/organ/regenerative_core/Remove(mob/living/carbon/M, special = 0) - if(!inert && !special) - owner.visible_message("[src] rapidly decays as it's removed.") - go_inert() - return ..() - -/obj/item/organ/regenerative_core/prepare_eat() - return null - -/*************************Legion core********************/ -/obj/item/organ/regenerative_core/legion - desc = "A strange rock that crackles with power. It can be used to heal completely, but it will rapidly decay into uselessness." - icon_state = "legion_soul" - -/obj/item/organ/regenerative_core/legion/Initialize() - . = ..() - update_icon() - -/obj/item/organ/regenerative_core/update_icon() - icon_state = inert ? "legion_soul_inert" : "legion_soul" - cut_overlays() - if(!inert && !preserved) - add_overlay("legion_soul_crackle") - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() - -/obj/item/organ/regenerative_core/legion/go_inert() - ..() - desc = "[src] has become inert. It has decayed, and is completely useless." - -/obj/item/organ/regenerative_core/legion/preserved(implanted = 0) - ..() - desc = "[src] has been stabilized. It is preserved, allowing you to use it to heal completely without danger of decay." +/*********************Hivelord stabilizer****************/ +/obj/item/hivelordstabilizer + name = "stabilizing serum" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle19" + desc = "Inject certain types of monster organs with this stabilizer to preserve their healing powers indefinitely." + w_class = WEIGHT_CLASS_TINY + +/obj/item/hivelordstabilizer/afterattack(obj/item/organ/M, mob/user) + . = ..() + var/obj/item/organ/regenerative_core/C = M + if(!istype(C, /obj/item/organ/regenerative_core)) + to_chat(user, "The stabilizer only works on certain types of monster organs, generally regenerative in nature.") + return ..() + + C.preserved() + to_chat(user, "You inject the [M] with the stabilizer. It will no longer go inert.") + qdel(src) + +/************************Hivelord core*******************/ +/obj/item/organ/regenerative_core + name = "regenerative core" + desc = "All that remains of a hivelord. It can be used to heal completely, but it will rapidly decay into uselessness." + icon_state = "roro core 2" + item_flags = NOBLUDGEON + slot = "hivecore" + force = 0 + actions_types = list(/datum/action/item_action/organ_action/use) + var/inert = 0 + var/preserved = 0 + +/obj/item/organ/regenerative_core/Initialize() + . = ..() + addtimer(CALLBACK(src, .proc/inert_check), 2400) + +/obj/item/organ/regenerative_core/proc/inert_check() + if(!preserved) + go_inert() + +/obj/item/organ/regenerative_core/proc/preserved(implanted = 0) + inert = FALSE + preserved = TRUE + update_icon() + desc = "All that remains of a hivelord. It is preserved, allowing you to use it to heal completely without danger of decay." + if(implanted) + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "implanted")) + else + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "stabilizer")) + +/obj/item/organ/regenerative_core/proc/go_inert() + inert = TRUE + name = "decayed regenerative core" + desc = "All that remains of a hivelord. It has decayed, and is completely useless." + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "inert")) + update_icon() + +/obj/item/organ/regenerative_core/ui_action_click() + if(inert) + to_chat(owner, "[src] breaks down as it tries to activate.") + else + owner.revive(full_heal = 1) + owner.log_message("[owner] used an implanted [src] to heal themselves! Keep fighting, it's just a flesh wound!", LOG_ATTACK, color="green") //Logging for implanted legion core use + qdel(src) + +/obj/item/organ/regenerative_core/on_life() + ..() + if(owner.health < owner.crit_threshold) + ui_action_click() + +/obj/item/organ/regenerative_core/afterattack(atom/target, mob/user, proximity_flag) + . = ..() + if(proximity_flag && ishuman(target)) + var/mob/living/carbon/human/H = target + if(inert) + to_chat(user, "[src] has decayed and can no longer be used to heal.") + return + if(isvamp(user)) + to_chat(user, "[src] breaks down as it fails to heal your unholy self") + return + else + if(H.stat == DEAD) + to_chat(user, "[src] are useless on the dead.") + return + if(H != user) + H.visible_message("[user] forces [H] to apply [src]... [H.p_they()] quickly regenerate all injuries!") + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "other")) + else + to_chat(user, "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.") + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self")) + H.revive(full_heal = 1) + qdel(src) + user.log_message("[user] used [src] to heal [H]! Wake the fuck up, Samurai!", LOG_ATTACK, color="green") //Logging for 'old' style legion core use, when clicking on a sprite of yourself or another. + +/obj/item/organ/regenerative_core/attack_self(mob/user) //Knouli's first hack! Allows for the use of the core in hand rather than needing to click on the target, yourself, to selfheal. Its a rip of the proc just above - but skips on distance check and only uses 'user' rather than 'target' + if(ishuman(user)) //Check if user is human, no need for distance check as it's self heal + var/mob/living/carbon/human/H = user //Set H to user rather than target + if(inert) //Inert cores are useless + to_chat(user, "[src] has decayed and can no longer be used to heal.") + return + else //Skip on check if the target to be healed is dead as, if you are dead, you're not going to be able to use it on yourself! + to_chat(user, "You start to smear [src] on yourself. It feels and smells disgusting, but you feel amazingly refreshed in mere moments.") + SSblackbox.record_feedback("nested tally", "hivelord_core", 1, list("[type]", "used", "self")) + H.revive(full_heal = 1) + qdel(src) + H.log_message("[H] used [src] to heal themselves! Making use of Knouli's sexy and intelligent use-in-hand proc!", LOG_ATTACK, color="green") //Logging for 'new' style legion core use, when using the core in-hand. + + +/obj/item/organ/regenerative_core/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) + . = ..() + if(!preserved && !inert) + preserved(TRUE) + owner.visible_message("[src] stabilizes as it's inserted.") + +/obj/item/organ/regenerative_core/Remove(mob/living/carbon/M, special = 0) + if(!inert && !special) + owner.visible_message("[src] rapidly decays as it's removed.") + go_inert() + return ..() + +/obj/item/organ/regenerative_core/prepare_eat() + return null + +/*************************Legion core********************/ +/obj/item/organ/regenerative_core/legion + desc = "A strange rock that crackles with power. It can be used to heal completely, but it will rapidly decay into uselessness." + icon_state = "legion_soul" + +/obj/item/organ/regenerative_core/legion/Initialize() + . = ..() + update_icon() + +/obj/item/organ/regenerative_core/update_icon() + icon_state = inert ? "legion_soul_inert" : "legion_soul" + cut_overlays() + if(!inert && !preserved) + add_overlay("legion_soul_crackle") + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() + +/obj/item/organ/regenerative_core/legion/go_inert() + ..() + desc = "[src] has become inert. It has decayed, and is completely useless." + +/obj/item/organ/regenerative_core/legion/preserved(implanted = 0) + ..() + desc = "[src] has been stabilized. It is preserved, allowing you to use it to heal completely without danger of decay." diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index 4077f21ea9..ea0174d2a5 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -148,7 +148,7 @@ desc = "Some shavings from a tall mushroom. With enough, might serve as a bowl." icon = 'icons/obj/lavaland/ash_flora.dmi' icon_state = "mushroom_shavings" - list_reagents = list("sugar" = 3, "ethanol" = 2, "stabilizing_agent" = 3, "minttoxin" = 2) + list_reagents = list(/datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/ethanol = 2, /datum/reagent/stabilizing_agent = 3, /datum/reagent/toxin/minttoxin = 2) w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE max_integrity = 100 @@ -166,7 +166,7 @@ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_leaf name = "mushroom leaf" desc = "A leaf, from a mushroom." - list_reagents = list("nutriment" = 3, "vitfro" = 2, "nicotine" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/vitfro = 2, /datum/reagent/drug/nicotine = 2) icon_state = "mushroom_leaf" seed = /obj/item/seeds/lavaland/porcini wine_power = 40 @@ -174,7 +174,7 @@ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_cap name = "mushroom cap" desc = "The cap of a large mushroom." - list_reagents = list("mindbreaker" = 2, "entpoly" = 4, "mushroomhallucinogen" = 2) + list_reagents = list(/datum/reagent/toxin/mindbreaker = 2, /datum/reagent/consumable/entpoly = 4, /datum/reagent/drug/mushroomhallucinogen = 2) icon_state = "mushroom_cap" seed = /obj/item/seeds/lavaland/inocybe wine_power = 70 @@ -182,14 +182,14 @@ /obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem name = "mushroom stem" desc = "A long mushroom stem. It's slightly glowing." - list_reagents = list("tinlux" = 2, "vitamin" = 1, "space_drugs" = 1) + list_reagents = list(/datum/reagent/consumable/tinlux = 2, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/drug/space_drugs = 1) icon_state = "mushroom_stem" seed = /obj/item/seeds/lavaland/ember wine_power = 60 /obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit name = "cactus fruit" - list_reagents = list("vitamin" = 2, "nutriment" = 2, "vitfro" = 6) + list_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2, /datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/vitfro = 6) desc = "A cactus fruit covered in a thick, reddish skin. And some ash." icon_state = "cactus_fruit" seed = /obj/item/seeds/lavaland/cactus @@ -218,7 +218,7 @@ else if(contents.len >= 20) to_chat(user, "You can't add more ingredients to [src]!") else - if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad? + if(reagents.has_reagent(/datum/reagent/water, 10)) //are we starting a soup or a salad? var/obj/item/reagent_containers/food/snacks/customizable/A = new/obj/item/reagent_containers/food/snacks/customizable/soup/ashsoup(get_turf(src)) A.initialize_custom_food(src, S, user) else diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 7bef9b652a..11190009cc 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -559,7 +559,7 @@ /obj/item/reagent_containers/glass/bottle/potion/flight name = "strange elixir" desc = "A flask with an almost-holy aura emitting from it. The label on the bottle says: 'erqo'hyy tvi'rf lbh jv'atf'." - list_reagents = list("flightpotion" = 5) + list_reagents = list(/datum/reagent/flightpotion = 5) /obj/item/reagent_containers/glass/bottle/potion/update_icon() if(reagents.total_volume) @@ -569,7 +569,6 @@ /datum/reagent/flightpotion name = "Flight Potion" - id = "flightpotion" description = "Strange mutagenic compound of unknown origins." reagent_state = LIQUID color = "#FFEBEB" @@ -844,7 +843,7 @@ switch(random) if(1) to_chat(user, "Your appearance morphs to that of a very small humanoid ash dragon! You get to look like a freak without the cool abilities.") - H.dna.features = list("mcolor" = "A02720", "tail_lizard" = "Dark Tiger", "tail_human" = "None", "snout" = "Sharp", "horns" = "Curled", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "Long", "body_markings" = "Dark Tiger Body", "legs" = "Digitigrade Legs") + H.dna.features = list("mcolor" = "A02720", "tail_lizard" = "Dark Tiger", "tail_human" = "None", "snout" = "Sharp", "horns" = "Curled", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "Long", "body_markings" = "Dark Tiger Body", "legs" = "Digitigrade") H.eye_color = "fee5a3" H.set_species(/datum/species/lizard) if(2) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index c3a33f36f5..291664ce3e 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -358,7 +358,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_gold_heads" value = 50 materials = list(MAT_GOLD = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("gold" = 4) + grind_results = list(/datum/reagent/gold = 4) /obj/item/coin/silver name = "silver coin" @@ -366,7 +366,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_silver_heads" value = 20 materials = list(MAT_SILVER = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("silver" = 4) + grind_results = list(/datum/reagent/silver = 4) /obj/item/coin/diamond name = "diamond coin" @@ -374,7 +374,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_diamond_heads" value = 500 materials = list(MAT_DIAMOND = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("carbon" = 4) + grind_results = list(/datum/reagent/carbon = 4) /obj/item/coin/iron name = "iron coin" @@ -382,7 +382,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_iron_heads" value = 1 materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("iron" = 4) + grind_results = list(/datum/reagent/iron = 4) /obj/item/coin/plasma name = "plasma coin" @@ -390,7 +390,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_plasma_heads" value = 100 materials = list(MAT_PLASMA = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("plasma" = 4) + grind_results = list(/datum/reagent/toxin/plasma = 4) /obj/item/coin/uranium name = "uranium coin" @@ -398,7 +398,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_uranium_heads" value = 80 materials = list(MAT_URANIUM = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("uranium" = 4) + grind_results = list(/datum/reagent/uranium = 4) /obj/item/coin/bananium name = "bananium coin" @@ -406,7 +406,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon_state = "coin_bananium_heads" value = 1000 //makes the clown cry materials = list(MAT_BANANIUM = MINERAL_MATERIAL_AMOUNT*0.2) - grind_results = list("banana" = 4) + grind_results = list(/datum/reagent/consumable/banana = 4) /obj/item/coin/adamantine name = "adamantine coin" @@ -427,7 +427,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ sideslist = list("heads") materials = list(MAT_METAL = MINERAL_MATERIAL_AMOUNT*0.2) value = 1 - grind_results = list("iron" = 4) + grind_results = list(/datum/reagent/iron = 4) /obj/item/coin/antagtoken name = "antag token" @@ -436,7 +436,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ desc = "A novelty coin that helps the heart know what hard evidence cannot prove." sideslist = list("valid", "salad") value = 0 - grind_results = list("sodiumchloride" = 4) + grind_results = list(/datum/reagent/consumable/sodiumchloride = 4) /obj/item/coin/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stack/cable_coil)) diff --git a/code/modules/mining/point_bank.dm b/code/modules/mining/point_bank.dm new file mode 100644 index 0000000000..8d0bb4e1e4 --- /dev/null +++ b/code/modules/mining/point_bank.dm @@ -0,0 +1,49 @@ +/obj/machinery/point_bank + name = "mining point bank" + desc = "A wall mounted machine that can be used to store and transfer mining points. Sharing is caring!" + icon = 'icons/obj/machines/mining_machines.dmi' + icon_state = "ore_redemption" + density = FALSE + req_access = list(ACCESS_MINERAL_STOREROOM) + circuit = null + layer = BELOW_OBJ_LAYER + var/points = 0 + +/obj/machinery/point_bank/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "point_bank", "Point Bank", 200, 100, master_ui, state) + ui.open() + +/obj/machinery/point_bank/ui_data(mob/user) + var/list/data = list() + data["totalPoints"] = points + return data + +/obj/machinery/mineral/ore_redemption/ui_act(action, params) + if(..()) + return + switch(action) + if("Claim") + var/mob/M = usr + var/obj/item/card/id/I = M.get_idcard(TRUE) + if(points) + if(I) + I.mining_points += points + points = 0 + else + to_chat(usr, "No ID detected.") + else + to_chat(usr, "No points to claim.") + return TRUE + +/obj/machinery/point_bank/power_change() + ..() + update_icon() + +/obj/machinery/point_bank/update_icon() + if(powered()) + icon_state = initial(icon_state) + else + icon_state = "[initial(icon_state)]-off" + return \ No newline at end of file diff --git a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm index 15640a2699..b31a41bcc7 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/legs_and_taurs.dm @@ -27,28 +27,33 @@ extra2 = TRUE center = TRUE dimension_x = 64 - var/taur_mode = NOT_TAURIC + var/taur_mode = NONE //Must be a single specific tauric suit variation bitflag. Don't do FLAG_1|FLAG_2 + var/alt_taur_mode = NONE //Same as above. color_src = MATRIXED /datum/sprite_accessory/taur/none + dimension_x = 32 + center = FALSE name = "None" icon_state = "None" /datum/sprite_accessory/taur/cow name = "Cow" icon_state = "cow" - taur_mode = HOOF_TAURIC + taur_mode = STYLE_HOOF_TAURIC + alt_taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/deer name = "Deer" icon_state = "deer" - taur_mode = HOOF_TAURIC + taur_mode = STYLE_HOOF_TAURIC + alt_taur_mode = STYLE_PAW_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/drake name = "Drake" icon_state = "drake" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/drider name = "Drider" @@ -58,67 +63,68 @@ /datum/sprite_accessory/taur/eevee name = "Eevee" icon_state = "eevee" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/fox name = "Fox" icon_state = "fox" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/husky name = "Husky" icon_state = "husky" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/horse name = "Horse" icon_state = "horse" - taur_mode = HOOF_TAURIC + taur_mode = STYLE_HOOF_TAURIC + alt_taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/lab name = "Lab" icon_state = "lab" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/naga name = "Naga" icon_state = "naga" - taur_mode = SNEK_TAURIC + taur_mode = STYLE_SNEK_TAURIC /datum/sprite_accessory/taur/otie name = "Otie" icon_state = "otie" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/pede name = "Scolipede" icon_state = "pede" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/panther name = "Panther" icon_state = "panther" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/shepherd name = "Shepherd" icon_state = "shepherd" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/tentacle name = "Tentacle" icon_state = "tentacle" - taur_mode = SNEK_TAURIC + taur_mode = STYLE_SNEK_TAURIC color_src = MUTCOLORS /datum/sprite_accessory/taur/tiger name = "Tiger" icon_state = "tiger" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC /datum/sprite_accessory/taur/wolf name = "Wolf" icon_state = "wolf" - taur_mode = PAW_TAURIC + taur_mode = STYLE_PAW_TAURIC diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 8195b3d84b..ade8158e02 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -155,7 +155,7 @@ if(iscarbon(AM)) var/mob/living/carbon/C = AM if(blood_id == C.get_blood_id())//both mobs have the same blood substance - if(blood_id == "blood" || blood_id == "jellyblood") //normal blood + if(blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) //normal blood if(blood_data["viruses"]) for(var/thing in blood_data["viruses"]) var/datum/disease/D = thing @@ -175,7 +175,7 @@ return /mob/living/carbon/get_blood_data(blood_id) - if(blood_id == "blood" || blood_id == "jellyblood") //actual blood reagent + if(blood_id == /datum/reagent/blood || /datum/reagent/blood/jellyblood) //actual blood reagent var/blood_data = list() //set the blood data blood_data["donor"] = src @@ -191,7 +191,7 @@ blood_data["resistances"] = disease_resistances.Copy() var/list/temp_chem = list() for(var/datum/reagent/R in reagents.reagent_list) - temp_chem[R.id] = R.volume + temp_chem[R.type] = R.volume blood_data["trace_chem"] = list2params(temp_chem) if(mind) blood_data["mind"] = mind @@ -226,21 +226,21 @@ /mob/living/simple_animal/get_blood_id() if(blood_volume) - return "blood" + return /datum/reagent/blood /mob/living/carbon/monkey/get_blood_id() if(!(HAS_TRAIT(src, TRAIT_NOCLONE))) - return "blood" + return /datum/reagent/blood /mob/living/carbon/get_blood_id() if(isjellyperson(src)) - return "jellyblood" + return /datum/reagent/blood/jellyblood if(dna?.species?.exotic_blood) return dna.species.exotic_blood else if((NOBLOOD in dna.species.species_traits) || (HAS_TRAIT(src, TRAIT_NOCLONE))) return else - return "blood" + return /datum/reagent/blood // This is has more potential uses, and is probably faster than the old proc. /proc/get_safe_blood(bloodtype) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index d1ace36b8c..4ed539adc2 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -73,7 +73,7 @@ if(victim.stat == CONSCIOUS) src.visible_message("[victim] kicks free of the blood pool just before entering it!", null, "You hear splashing and struggling.") - else if(victim.reagents && victim.reagents.has_reagent("demonsblood")) + else if(victim.reagents && victim.reagents.has_reagent(/datum/reagent/consumable/ethanol/demonsblood)) visible_message("Something prevents [victim] from entering the pool!", "A strange force is blocking [victim] from entering!", "You hear a splash and a thud.") else victim.forceMove(src) @@ -104,7 +104,7 @@ if(!victim) return FALSE - if(victim.reagents && victim.reagents.has_reagent("devilskiss")) + if(victim.reagents && victim.reagents.has_reagent(/datum/reagent/consumable/ethanol/devilskiss)) to_chat(src, "AAH! THEIR FLESH! IT BURNS!") adjustBruteLoss(25) //I can't use adjustHealth() here because bloodcrawl affects /mob/living and adjustHealth() only affects simple mobs var/found_bloodpool = FALSE diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 48e79a9050..f2ea4f2b01 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -102,16 +102,16 @@ if(istype(O, /obj/item/organ_storage)) //BUG_PROBABLE_CAUSE return //Borg organ bags shouldn't be killing brains - if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent("neurine")) //Neurine fixes dead brains + if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/neurine)) //Neurine fixes dead brains . = TRUE //don't do attack animation. var/cached_Bdamage = brainmob?.health - var/datum/reagent/medicine/neurine/N = reagents.has_reagent("neurine") - var/datum/reagent/medicine/mannitol/M1 = reagents.has_reagent("mannitol") + var/datum/reagent/medicine/neurine/N = reagents.has_reagent(/datum/reagent/medicine/neurine) + var/datum/reagent/medicine/mannitol/M1 = reagents.has_reagent(/datum/reagent/medicine/mannitol) - if(O.reagents.has_reagent("mannitol"))//Just a quick way to bolster the effects if someone mixes up a batch. + if(O.reagents.has_reagent(/datum/reagent/medicine/mannitol))//Just a quick way to bolster the effects if someone mixes up a batch. N.volume *= (M1.volume*0.5) - if(!O.reagents.has_reagent("neurine", 10)) + if(!O.reagents.has_reagent(/datum/reagent/medicine/neurine, 10)) to_chat(user, "There's not enough neurine in [O] to restore [src]!") return @@ -134,14 +134,14 @@ gain_trauma_type(BRAIN_TRAUMA_SPECIAL) return - if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent("mannitol")) //attempt to heal the brain + if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/mannitol)) //attempt to heal the brain . = TRUE //don't do attack animation. - var/datum/reagent/medicine/mannitol/M = reagents.has_reagent("mannitol") + var/datum/reagent/medicine/mannitol/M = reagents.has_reagent(/datum/reagent/medicine/mannitol) if(brain_death || brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing to_chat(user, "[src] is far too damaged, you'll have to use neurine on it!") return - if(!O.reagents.has_reagent("mannitol", 10)) + if(!O.reagents.has_reagent(/datum/reagent/medicine/mannitol, 10)) to_chat(user, "There's not enough mannitol in [O] to restore [src]!") return diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index e4e8f06cfa..35751e4b86 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -27,7 +27,7 @@ /obj/item/organ/alien/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("sacid", 10) + S.reagents.add_reagent(/datum/reagent/toxin/acid, 10) return S @@ -46,7 +46,7 @@ /obj/item/organ/alien/plasmavessel/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("plasma", storedPlasma/10) + S.reagents.add_reagent(/datum/reagent/toxin/plasma, storedPlasma/10) return S /obj/item/organ/alien/plasmavessel/large diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm index c08fe4f582..e74f2e54a9 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -18,7 +18,7 @@ /obj/item/organ/body_egg/alien_embryo/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("sacid", 10) + S.reagents.add_reagent(/datum/reagent/toxin/acid, 10) return S /obj/item/organ/body_egg/alien_embryo/on_life() diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index 1cea4a6e82..8baeb93195 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -21,7 +21,7 @@ flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH layer = MOB_LAYER max_integrity = 100 - mutantrace_variation = MUTANTRACE_VARIATION + mutantrace_variation = STYLE_MUZZLE var/stat = CONSCIOUS //UNCONSCIOUS is the idle state in this case diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 102bc6fc3d..2d58eb6a7e 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1,991 +1,991 @@ -/mob/living/carbon - blood_volume = BLOOD_VOLUME_NORMAL - -/mob/living/carbon/Initialize() - . = ..() - create_reagents(1000) - update_body_parts() //to update the carbon's new bodyparts appearance - GLOB.carbon_list += src - blood_volume = (BLOOD_VOLUME_NORMAL * blood_ratio) - -/mob/living/carbon/Destroy() - //This must be done first, so the mob ghosts correctly before DNA etc is nulled - . = ..() - - QDEL_LIST(internal_organs) - QDEL_LIST(stomach_contents) - QDEL_LIST(bodyparts) - QDEL_LIST(implants) - remove_from_all_data_huds() - QDEL_NULL(dna) - GLOB.carbon_list -= src - -/mob/living/carbon/initialize_footstep() - AddComponent(/datum/component/footstep, 0.6, 2) - -/mob/living/carbon/relaymove(mob/user, direction) - if(user in src.stomach_contents) - if(prob(40)) - if(prob(25)) - audible_message("You hear something rumbling inside [src]'s stomach...", \ - "You hear something rumbling.", 4,\ - "Something is rumbling inside your stomach!") - var/obj/item/I = user.get_active_held_item() - if(I && I.force) - var/d = rand(round(I.force / 4), I.force) - var/obj/item/bodypart/BP = get_bodypart(BODY_ZONE_CHEST) - if(BP.receive_damage(d, 0)) - update_damage_overlays() - visible_message("[user] attacks [src]'s stomach wall with the [I.name]!", \ - "[user] attacks your stomach wall with the [I.name]!") - playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1) - - if(prob(src.getBruteLoss() - 50)) - for(var/atom/movable/A in stomach_contents) - A.forceMove(drop_location()) - stomach_contents.Remove(A) - src.gib() - - -/mob/living/carbon/swap_hand(held_index) - if(!held_index) - held_index = (active_hand_index % held_items.len)+1 - - var/obj/item/item_in_hand = src.get_active_held_item() - if(item_in_hand) //this segment checks if the item in your hand is twohanded. - var/obj/item/twohanded/TH = item_in_hand - if(istype(TH)) - if(TH.wielded == 1) - to_chat(usr, "Your other hand is too busy holding [TH]") - return - var/oindex = active_hand_index - active_hand_index = held_index - if(hud_used) - var/obj/screen/inventory/hand/H - H = hud_used.hand_slots["[oindex]"] - if(H) - H.update_icon() - H = hud_used.hand_slots["[held_index]"] - if(H) - H.update_icon() - - -/mob/living/carbon/activate_hand(selhand) //l/r OR 1-held_items.len - if(!selhand) - selhand = (active_hand_index % held_items.len)+1 - - if(istext(selhand)) - selhand = lowertext(selhand) - if(selhand == "right" || selhand == "r") - selhand = 2 - if(selhand == "left" || selhand == "l") - selhand = 1 - - if(selhand != active_hand_index) - swap_hand(selhand) - else - mode() // Activate held item - -/mob/living/carbon/attackby(obj/item/I, mob/user, params) - if(lying && surgeries.len) - if(user != src && (user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM)) - for(var/datum/surgery/S in surgeries) - if(S.next_step(user,user.a_intent)) - return 1 - return ..() - -/mob/living/carbon/throw_impact(atom/hit_atom, throwingdatum) - . = ..() - var/hurt = TRUE - if(istype(throwingdatum, /datum/thrownthing)) - var/datum/thrownthing/D = throwingdatum - if(iscyborg(D.thrower)) - var/mob/living/silicon/robot/R = D.thrower - if(!R.emagged) - hurt = FALSE - if(hit_atom.density && isturf(hit_atom)) - if(hurt) - Knockdown(20) - take_bodypart_damage(10) - if(iscarbon(hit_atom) && hit_atom != src) - var/mob/living/carbon/victim = hit_atom - if(victim.movement_type & FLYING) - return - if(hurt) - victim.take_bodypart_damage(10) - take_bodypart_damage(10) - victim.Knockdown(20) - Knockdown(20) - visible_message("[src] crashes into [victim], knocking them both over!",\ - "You violently crash into [victim]!") - playsound(src,'sound/weapons/punch1.ogg',50,1) - - -//Throwing stuff -/mob/living/carbon/proc/toggle_throw_mode() - if(stat) - return - if(in_throw_mode) - throw_mode_off() - else - throw_mode_on() - - -/mob/living/carbon/proc/throw_mode_off() - in_throw_mode = 0 - if(client && hud_used) - hud_used.throw_icon.icon_state = "act_throw_off" - - -/mob/living/carbon/proc/throw_mode_on() - in_throw_mode = 1 - if(client && hud_used) - hud_used.throw_icon.icon_state = "act_throw_on" - -/mob/proc/throw_item(atom/target) - SEND_SIGNAL(src, COMSIG_MOB_THROW, target) - return - -/mob/living/carbon/throw_item(atom/target) - throw_mode_off() - if(!target || !isturf(loc)) - return - if(istype(target, /obj/screen)) - return - - //CIT CHANGES - makes it impossible to throw while in stamina softcrit - if(getStaminaLoss() >= STAMINA_SOFTCRIT) - to_chat(src, "You're too exhausted.") - return - var/random_turn = a_intent == INTENT_HARM - //END OF CIT CHANGES - - var/obj/item/I = src.get_active_held_item() - - var/atom/movable/thrown_thing - var/mob/living/throwable_mob - - if(istype(I, /obj/item/clothing/head/mob_holder)) - var/obj/item/clothing/head/mob_holder/holder = I - if(holder.held_mob) - throwable_mob = holder.held_mob - holder.release() - - if(!I || throwable_mob) - if(!throwable_mob && pulling && isliving(pulling) && grab_state >= GRAB_AGGRESSIVE) - throwable_mob = pulling - - if(throwable_mob && !throwable_mob.buckled) - thrown_thing = throwable_mob - if(pulling) - stop_pulling() - if(HAS_TRAIT(src, TRAIT_PACIFISM)) - to_chat(src, "You gently let go of [throwable_mob].") - return - - adjustStaminaLossBuffered(25)//CIT CHANGE - throwing an entire person shall be very tiring - var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors - var/turf/end_T = get_turf(target) - if(start_T && end_T) - log_combat(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]") - - else if(!CHECK_BITFIELD(I.item_flags, ABSTRACT) && !HAS_TRAIT(I, TRAIT_NODROP)) - thrown_thing = I - dropItemToGround(I) - - if(HAS_TRAIT(src, TRAIT_PACIFISM) && I.throwforce) - to_chat(src, "You set [I] down gently on the ground.") - return - - adjustStaminaLossBuffered(I.getweight()*2)//CIT CHANGE - throwing items shall be more tiring than swinging em. Doubly so. - - if(thrown_thing) - visible_message("[src] has thrown [thrown_thing].") - src.log_message("has thrown [thrown_thing]", LOG_ATTACK) - do_attack_animation(target, no_effect = 1) - playsound(loc, 'sound/weapons/punchmiss.ogg', 50, 1, -1) - newtonian_move(get_dir(target, src)) - thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src, null, null, null, random_turn) - - - -/mob/living/carbon/restrained(ignore_grab) - . = (handcuffed || (!ignore_grab && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE)) - -/mob/living/carbon/proc/canBeHandcuffed() - return 0 - - -/mob/living/carbon/show_inv(mob/user) - user.set_machine(src) - var/dat = {" -
- [name] -
-
Head: [(head && !(head.item_flags & ABSTRACT)) ? head : "Nothing"] -
Mask: [(wear_mask && !(wear_mask.item_flags & ABSTRACT)) ? wear_mask : "Nothing"] -
Neck: [(wear_neck && !(wear_neck.item_flags & ABSTRACT)) ? wear_neck : "Nothing"]"} - - for(var/i in 1 to held_items.len) - var/obj/item/I = get_item_for_held_index(i) - dat += "
[get_held_index_name(i)]:[(I && !(I.item_flags & ABSTRACT)) ? I : "Nothing"]" - - dat += "
Back: [back ? back : "Nothing"]" - - if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/tank)) - dat += "
[internal ? "Disable Internals" : "Set Internals"]" - - if(handcuffed) - dat += "
Handcuffed" - if(legcuffed) - dat += "
Legcuffed" - - dat += {" -
-
Close - "} - user << browse(dat, "window=mob[REF(src)];size=325x500") - onclose(user, "mob[REF(src)]") - -/mob/living/carbon/Topic(href, href_list) - ..() - //strip panel - if(usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) - if(href_list["internal"]) - var/slot = text2num(href_list["internal"]) - var/obj/item/ITEM = get_item_by_slot(slot) - if(ITEM && istype(ITEM, /obj/item/tank) && wear_mask && (wear_mask.clothing_flags & ALLOWINTERNALS)) - visible_message("[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM.name].", \ - "[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM.name].") - if(do_mob(usr, src, POCKET_STRIP_DELAY)) - if(internal) - internal = null - update_internals_hud_icon(0) - else if(ITEM && istype(ITEM, /obj/item/tank)) - if((wear_mask && (wear_mask.clothing_flags & ALLOWINTERNALS)) || getorganslot(ORGAN_SLOT_BREATHING_TUBE)) - internal = ITEM - update_internals_hud_icon(1) - - visible_message("[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM.name].", \ - "[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM.name].") - - -/mob/living/carbon/fall(forced) - loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing - -/mob/living/carbon/is_muzzled() - return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle)) - -/mob/living/carbon/hallucinating() - if(hallucination) - return TRUE - else - return FALSE - -/mob/living/carbon/resist_buckle() - if(restrained()) - changeNext_move(CLICK_CD_BREAKOUT) - last_special = world.time + CLICK_CD_BREAKOUT - var/buckle_cd = 600 - if(handcuffed) - var/obj/item/restraints/O = src.get_item_by_slot(SLOT_HANDCUFFED) - buckle_cd = O.breakouttime - visible_message("[src] attempts to unbuckle [p_them()]self!", \ - "You attempt to unbuckle yourself... (This will take around [round(buckle_cd/600,1)] minute\s, and you need to stay still.)") - if(do_after(src, buckle_cd, 0, target = src)) - if(!buckled) - return - buckled.user_unbuckle_mob(src,src) - else - if(src && buckled) - to_chat(src, "You fail to unbuckle yourself!") - else - buckled.user_unbuckle_mob(src,src) - -/mob/living/carbon/resist_fire() - fire_stacks -= 5 - Knockdown(60, TRUE, TRUE) - spin(32,2) - visible_message("[src] rolls on the floor, trying to put [p_them()]self out!", \ - "You stop, drop, and roll!") - sleep(30) - if(fire_stacks <= 0) - visible_message("[src] has successfully extinguished [p_them()]self!", \ - "You extinguish yourself.") - ExtinguishMob() - return - -/mob/living/carbon/resist_restraints() - var/obj/item/I = null - var/type = 0 - if(handcuffed) - I = handcuffed - type = 1 - else if(legcuffed) - I = legcuffed - type = 2 - if(I) - if(type == 1) - changeNext_move(CLICK_CD_BREAKOUT) - last_special = world.time + CLICK_CD_BREAKOUT - if(type == 2) - changeNext_move(CLICK_CD_RANGE) - last_special = world.time + CLICK_CD_RANGE - cuff_resist(I) - - -/mob/living/carbon/proc/cuff_resist(obj/item/I, breakouttime = 600, cuff_break = 0) - if(I.item_flags & BEING_REMOVED) - to_chat(src, "You're already attempting to remove [I]!") - return - I.item_flags |= BEING_REMOVED - breakouttime = I.breakouttime - if(!cuff_break) - visible_message("[src] attempts to remove [I]!") - to_chat(src, "You attempt to remove [I]... (This will take around [DisplayTimeText(breakouttime)] and you need to stand still.)") - if(do_after(src, breakouttime, 0, target = src)) - clear_cuffs(I, cuff_break) - else - to_chat(src, "You fail to remove [I]!") - - else if(cuff_break == FAST_CUFFBREAK) - breakouttime = 50 - visible_message("[src] is trying to break [I]!") - to_chat(src, "You attempt to break [I]... (This will take around 5 seconds and you need to stand still.)") - if(do_after(src, breakouttime, 0, target = src)) - clear_cuffs(I, cuff_break) - else - to_chat(src, "You fail to break [I]!") - - else if(cuff_break == INSTANT_CUFFBREAK) - clear_cuffs(I, cuff_break) - I.item_flags &= ~BEING_REMOVED - -/mob/living/carbon/proc/uncuff() - if (handcuffed) - var/obj/item/W = handcuffed - handcuffed = null - if (buckled && buckled.buckle_requires_restraints) - buckled.unbuckle_mob(src) - update_handcuffed() - if (client) - client.screen -= W - if (W) - W.forceMove(drop_location()) - W.dropped(src) - if (W) - W.layer = initial(W.layer) - W.plane = initial(W.plane) - changeNext_move(0) - if (legcuffed) - var/obj/item/W = legcuffed - legcuffed = null - update_inv_legcuffed() - if (client) - client.screen -= W - if (W) - W.forceMove(drop_location()) - W.dropped(src) - if (W) - W.layer = initial(W.layer) - W.plane = initial(W.plane) - changeNext_move(0) - -/mob/living/carbon/proc/clear_cuffs(obj/item/I, cuff_break) - if(!I.loc || buckled) - return - visible_message("[src] manages to [cuff_break ? "break" : "remove"] [I]!") - to_chat(src, "You successfully [cuff_break ? "break" : "remove"] [I].") - - if(cuff_break) - . = !((I == handcuffed) || (I == legcuffed)) - qdel(I) - return - - else - if(I == handcuffed) - handcuffed.forceMove(drop_location()) - handcuffed.dropped(src) - handcuffed = null - if(buckled && buckled.buckle_requires_restraints) - buckled.unbuckle_mob(src) - update_handcuffed() - return - if(I == legcuffed) - legcuffed.forceMove(drop_location()) - legcuffed.dropped() - legcuffed = null - update_inv_legcuffed() - return - else - dropItemToGround(I) - return - return TRUE - -/mob/living/carbon/get_standard_pixel_y_offset(lying = 0) - if(lying) - return -6 - else - return initial(pixel_y) - -/mob/living/carbon/proc/accident(obj/item/I) - if(!I || (I.item_flags & ABSTRACT) || HAS_TRAIT(I, TRAIT_NODROP)) - return - - //dropItemToGround(I) CIT CHANGE - makes it so the item doesn't drop if the modifier rolls above 100 - - var/modifier = 0 - - if(HAS_TRAIT(src, TRAIT_CLUMSY)) - modifier -= 40 //Clumsy people are more likely to hit themselves -Honk! - - //CIT CHANGES START HERE - else if(combatmode) - modifier += 50 - - if(modifier < 100) - dropItemToGround(I) - //END OF CIT CHANGES - - switch(rand(1,100)+modifier) //91-100=Nothing special happens - if(-INFINITY to 0) //attack yourself - I.attack(src,src) - if(1 to 30) //throw it at yourself - I.throw_impact(src) - if(31 to 60) //Throw object in facing direction - var/turf/target = get_turf(loc) - var/range = rand(2,I.throw_range) - for(var/i = 1; i < range; i++) - var/turf/new_turf = get_step(target, dir) - target = new_turf - if(new_turf.density) - break - I.throw_at(target,I.throw_range,I.throw_speed,src) - if(61 to 90) //throw it down to the floor - var/turf/target = get_turf(loc) - I.throw_at(target,I.throw_range,I.throw_speed,src) - -/mob/living/carbon/Stat() - ..() - if(statpanel("Status")) - var/obj/item/organ/alien/plasmavessel/vessel = getorgan(/obj/item/organ/alien/plasmavessel) - if(vessel) - stat(null, "Plasma Stored: [vessel.storedPlasma]/[vessel.max_plasma]") - if(locate(/obj/item/assembly/health) in src) - stat(null, "Health: [health]") - - add_abilities_to_panel() - -/mob/living/carbon/attack_ui(slot) - if(!has_hand_for_held_index(active_hand_index)) - return 0 - return ..() - -/mob/living/carbon/proc/vomit(lost_nutrition = 10, blood = FALSE, stun = TRUE, distance = 1, message = TRUE, toxic = FALSE) - if(HAS_TRAIT(src, TRAIT_NOHUNGER)) - return 1 - - if(nutrition < 100 && !blood) - if(message) - visible_message("[src] dry heaves!", \ - "You try to throw up, but there's nothing in your stomach!") - if(stun) - Knockdown(200) - return 1 - - if(is_mouth_covered()) //make this add a blood/vomit overlay later it'll be hilarious - if(message) - visible_message("[src] throws up all over [p_them()]self!", \ - "You throw up all over yourself!") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "vomit", /datum/mood_event/vomitself) - distance = 0 - else - if(message) - visible_message("[src] throws up!", "You throw up!") - if(!isflyperson(src)) - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "vomit", /datum/mood_event/vomit) - if(stun) - Stun(80) - - playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1) - var/turf/T = get_turf(src) - if(!blood) - nutrition -= lost_nutrition - adjustToxLoss(-3) - for(var/i=0 to distance) - if(blood) - if(T) - add_splatter_floor(T) - if(stun) - adjustBruteLoss(3) - else if(src.reagents.has_reagent("blazaam")) - if(T) - T.add_vomit_floor(src, VOMIT_PURPLE) - else - if(T) - T.add_vomit_floor(src, VOMIT_TOXIC)//toxic barf looks different - T = get_step(T, dir) - if (is_blocked_turf(T)) - break - return 1 - -/mob/living/carbon/proc/spew_organ(power = 5, amt = 1) - for(var/i in 1 to amt) - if(!internal_organs.len) - break //Guess we're out of organs! - var/obj/item/organ/guts = pick(internal_organs) - var/turf/T = get_turf(src) - guts.Remove(src) - guts.forceMove(T) - var/atom/throw_target = get_edge_target_turf(guts, dir) - guts.throw_at(throw_target, power, 4, src) - - -/mob/living/carbon/fully_replace_character_name(oldname,newname) - ..() - if(dna) - dna.real_name = real_name - -//Updates the mob's health from bodyparts and mob damage variables -/mob/living/carbon/updatehealth() - if(status_flags & GODMODE) - return - var/total_burn = 0 - var/total_brute = 0 - var/total_stamina = 0 - for(var/X in bodyparts) //hardcoded to streamline things a bit - var/obj/item/bodypart/BP = X - total_brute += (BP.brute_dam * BP.body_damage_coeff) - total_burn += (BP.burn_dam * BP.body_damage_coeff) - total_stamina += (BP.stamina_dam * BP.stam_damage_coeff) - health = round(maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute, DAMAGE_PRECISION) - staminaloss = round(total_stamina, DAMAGE_PRECISION) - update_stat() - if(((maxHealth - total_burn) < HEALTH_THRESHOLD_DEAD) && stat == DEAD ) - become_husk("burn") - med_hud_set_health() - if(stat == SOFT_CRIT) - add_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE, multiplicative_slowdown = SOFTCRIT_ADD_SLOWDOWN) - else - remove_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE) - -/mob/living/carbon/update_stamina() - var/stam = getStaminaLoss() - if(stam > DAMAGE_PRECISION) - var/total_health = (health - stam) - if(total_health <= crit_threshold && !stat) - if(!IsKnockdown()) - to_chat(src, "You're too exhausted to keep going...") - Knockdown(100) - update_health_hud() - -/mob/living/carbon/update_sight() - if(!client) - return - if(stat == DEAD) - sight = (SEE_TURFS|SEE_MOBS|SEE_OBJS) - see_in_dark = 8 - see_invisible = SEE_INVISIBLE_OBSERVER - return - - sight = initial(sight) - lighting_alpha = initial(lighting_alpha) - var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES) - if(!E) - update_tint() - else - see_invisible = E.see_invisible - see_in_dark = E.see_in_dark - sight |= E.sight_flags - if(!isnull(E.lighting_alpha)) - lighting_alpha = E.lighting_alpha - if(HAS_TRAIT(src, TRAIT_NIGHT_VISION)) - lighting_alpha = min(LIGHTING_PLANE_ALPHA_NV_TRAIT, lighting_alpha) - see_in_dark = max(NIGHT_VISION_DARKSIGHT_RANGE, see_in_dark) - - if(client.eye && client.eye != src) - var/atom/A = client.eye - if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates. - return - - if(glasses) - var/obj/item/clothing/glasses/G = glasses - sight |= G.vision_flags - see_in_dark = max(G.darkness_view, see_in_dark) - if(G.invis_override) - see_invisible = G.invis_override - else - see_invisible = min(G.invis_view, see_invisible) - if(!isnull(G.lighting_alpha)) - lighting_alpha = min(lighting_alpha, G.lighting_alpha) - if(dna) - for(var/X in dna.mutations) - var/datum/mutation/M = X - if(M.name == XRAY) - sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS) - see_in_dark = max(see_in_dark, 8) - - if(see_override) - see_invisible = see_override - . = ..() - - -//to recalculate and update the mob's total tint from tinted equipment it's wearing. -/mob/living/carbon/proc/update_tint() - if(!GLOB.tinted_weldhelh) - return - tinttotal = get_total_tint() - if(tinttotal >= TINT_BLIND) - become_blind(EYES_COVERED) - else if(tinttotal >= TINT_DARKENED) - cure_blind(EYES_COVERED) - overlay_fullscreen("tint", /obj/screen/fullscreen/impaired, 2) - else - cure_blind(EYES_COVERED) - clear_fullscreen("tint", 0) - -/mob/living/carbon/proc/get_total_tint() - . = 0 - if(istype(head, /obj/item/clothing/head)) - var/obj/item/clothing/head/HT = head - . += HT.tint - if(wear_mask) - . += wear_mask.tint - - var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES) - if(E) - . += E.tint - - else - . += INFINITY - -/mob/living/carbon/get_permeability_protection(list/target_zones = list(HANDS,CHEST,GROIN,LEGS,FEET,ARMS,HEAD)) - var/list/tally = list() - for(var/obj/item/I in get_equipped_items()) - for(var/zone in target_zones) - if(I.body_parts_covered & zone) - tally["[zone]"] = max(1 - I.permeability_coefficient, target_zones["[zone]"]) - var/protection = 0 - for(var/key in tally) - protection += tally[key] - protection *= INVERSE(target_zones.len) - return protection - -//this handles hud updates -/mob/living/carbon/update_damage_hud() - - if(!client) - return - - if(health <= crit_threshold) - var/severity = 0 - switch(health) - if(-20 to -10) - severity = 1 - if(-30 to -20) - severity = 2 - if(-40 to -30) - severity = 3 - if(-50 to -40) - severity = 4 - if(-50 to -40) - severity = 5 - if(-60 to -50) - severity = 6 - if(-70 to -60) - severity = 7 - if(-90 to -70) - severity = 8 - if(-95 to -90) - severity = 9 - if(-INFINITY to -95) - severity = 10 - if(!InFullCritical()) - var/visionseverity = 4 - switch(health) - if(-8 to -4) - visionseverity = 5 - if(-12 to -8) - visionseverity = 6 - if(-16 to -12) - visionseverity = 7 - if(-20 to -16) - visionseverity = 8 - if(-24 to -20) - visionseverity = 9 - if(-INFINITY to -24) - visionseverity = 10 - overlay_fullscreen("critvision", /obj/screen/fullscreen/crit/vision, visionseverity) - else - clear_fullscreen("critvision") - overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity) - else - clear_fullscreen("crit") - clear_fullscreen("critvision") - - //Oxygen damage overlay - var/windedup = getOxyLoss() + getStaminaLoss() * 0.2 - if(windedup) - var/severity = 0 - switch(windedup) - if(10 to 20) - severity = 1 - if(20 to 25) - severity = 2 - if(25 to 30) - severity = 3 - if(30 to 35) - severity = 4 - if(35 to 40) - severity = 5 - if(40 to 45) - severity = 6 - if(45 to INFINITY) - severity = 7 - overlay_fullscreen("oxy", /obj/screen/fullscreen/oxy, severity) - else - clear_fullscreen("oxy") - - //Fire and Brute damage overlay (BSSR) - var/hurtdamage = getBruteLoss() + getFireLoss() + damageoverlaytemp - if(hurtdamage) - var/severity = 0 - switch(hurtdamage) - if(5 to 15) - severity = 1 - if(15 to 30) - severity = 2 - if(30 to 45) - severity = 3 - if(45 to 70) - severity = 4 - if(70 to 85) - severity = 5 - if(85 to INFINITY) - severity = 6 - overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity) - else - clear_fullscreen("brute") - -/mob/living/carbon/update_health_hud(shown_health_amount) - if(!client || !hud_used) - return - if(hud_used.healths) - if(stat != DEAD) - . = 1 - if(!shown_health_amount) - shown_health_amount = health - if(shown_health_amount >= maxHealth) - hud_used.healths.icon_state = "health0" - else if(shown_health_amount > maxHealth*0.8) - hud_used.healths.icon_state = "health1" - else if(shown_health_amount > maxHealth*0.6) - hud_used.healths.icon_state = "health2" - else if(shown_health_amount > maxHealth*0.4) - hud_used.healths.icon_state = "health3" - else if(shown_health_amount > maxHealth*0.2) - hud_used.healths.icon_state = "health4" - else if(shown_health_amount > 0) - hud_used.healths.icon_state = "health5" - else - hud_used.healths.icon_state = "health6" - else - hud_used.healths.icon_state = "health7" - -/mob/living/carbon/proc/update_internals_hud_icon(internal_state = 0) - if(hud_used && hud_used.internals) - hud_used.internals.icon_state = "internal[internal_state]" - -/mob/living/carbon/update_stat() - if(status_flags & GODMODE) - return - if(stat != DEAD) - if(health <= HEALTH_THRESHOLD_DEAD && !HAS_TRAIT(src, TRAIT_NODEATH)) - death() - return - if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !HAS_TRAIT(src, TRAIT_NOHARDCRIT))) - stat = UNCONSCIOUS - blind_eyes(1) - if(combatmode) - toggle_combat_mode(TRUE, TRUE) - else - if(health <= crit_threshold && !HAS_TRAIT(src, TRAIT_NOSOFTCRIT)) - stat = SOFT_CRIT - if(combatmode) - toggle_combat_mode(TRUE, TRUE) - else - stat = CONSCIOUS - adjust_blindness(-1) - update_canmove() - update_damage_hud() - update_health_hud() - med_hud_set_status() - -//called when we get cuffed/uncuffed -/mob/living/carbon/proc/update_handcuffed() - if(handcuffed) - drop_all_held_items() - stop_pulling() - throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = src.handcuffed) - if(handcuffed.demoralize_criminals) - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "handcuffed", /datum/mood_event/handcuffed) - else - clear_alert("handcuffed") - SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "handcuffed") - update_action_buttons_icon() //some of our action buttons might be unusable when we're handcuffed. - update_inv_handcuffed() - update_hud_handcuffed() - -/mob/living/carbon/fully_heal(admin_revive = FALSE) - if(reagents) - reagents.clear_reagents() - var/obj/item/organ/brain/B = getorgan(/obj/item/organ/brain) - if(B) - B.brain_death = FALSE - for(var/thing in diseases) - var/datum/disease/D = thing - if(D.severity != DISEASE_SEVERITY_POSITIVE) - D.cure(FALSE) - if(admin_revive) - regenerate_limbs() - regenerate_organs() - handcuffed = initial(handcuffed) - for(var/obj/item/restraints/R in contents) //actually remove cuffs from inventory - qdel(R) - update_handcuffed() - if(reagents) - reagents.addiction_list = list() - cure_all_traumas(TRAUMA_RESILIENCE_MAGIC) - ..() - // heal ears after healing traits, since ears check TRAIT_DEAF trait - // when healing. - restoreEars() - -/mob/living/carbon/can_be_revived() - . = ..() - if(!getorgan(/obj/item/organ/brain) && (!mind || !mind.has_antag_datum(/datum/antagonist/changeling))) - return 0 - -/mob/living/carbon/harvest(mob/living/user) - if(QDELETED(src)) - return - var/organs_amt = 0 - for(var/X in internal_organs) - var/obj/item/organ/O = X - if(prob(50)) - organs_amt++ - O.Remove(src) - O.forceMove(drop_location()) - if(organs_amt) - to_chat(user, "You retrieve some of [src]\'s internal organs!") - -/mob/living/carbon/ExtinguishMob() - for(var/X in get_equipped_items()) - var/obj/item/I = X - I.acid_level = 0 //washes off the acid on our clothes - I.extinguish() //extinguishes our clothes - ..() - -/mob/living/carbon/fakefire(var/fire_icon = "Generic_mob_burning") - var/mutable_appearance/new_fire_overlay = mutable_appearance('icons/mob/OnFire.dmi', fire_icon, -FIRE_LAYER) - new_fire_overlay.appearance_flags = RESET_COLOR - overlays_standing[FIRE_LAYER] = new_fire_overlay - apply_overlay(FIRE_LAYER) - -/mob/living/carbon/fakefireextinguish() - remove_overlay(FIRE_LAYER) - - -/mob/living/carbon/proc/devour_mob(mob/living/carbon/C, devour_time = 130) - C.visible_message("[src] is attempting to devour [C]!", \ - "[src] is attempting to devour you!") - if(!do_mob(src, C, devour_time)) - return - if(pulling && pulling == C && grab_state >= GRAB_AGGRESSIVE && a_intent == INTENT_GRAB) - C.visible_message("[src] devours [C]!", \ - "[src] devours you!") - C.forceMove(src) - stomach_contents.Add(C) - log_combat(src, C, "devoured") - -/mob/living/carbon/proc/create_bodyparts() - var/l_arm_index_next = -1 - var/r_arm_index_next = 0 - for(var/X in bodyparts) - var/obj/item/bodypart/O = new X() - O.owner = src - bodyparts.Remove(X) - bodyparts.Add(O) - if(O.body_part == ARM_LEFT) - l_arm_index_next += 2 - O.held_index = l_arm_index_next //1, 3, 5, 7... - hand_bodyparts += O - else if(O.body_part == ARM_RIGHT) - r_arm_index_next += 2 - O.held_index = r_arm_index_next //2, 4, 6, 8... - hand_bodyparts += O - -/mob/living/carbon/do_after_coefficent() - . = ..() - var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) //Currently, only carbons or higher use mood, move this once that changes. - if(mood) - switch(mood.sanity) //Alters do_after delay based on how sane you are - if(SANITY_INSANE to SANITY_DISTURBED) - . *= 1.25 - if(SANITY_NEUTRAL to SANITY_GREAT) - . *= 0.90 - - -/mob/living/carbon/proc/create_internal_organs() - for(var/X in internal_organs) - var/obj/item/organ/I = X - I.Insert(src) - -/mob/living/carbon/proc/update_disabled_bodyparts() - for(var/B in bodyparts) - var/obj/item/bodypart/BP = B - BP.update_disabled() - -/mob/living/carbon/vv_get_dropdown() - . = ..() - . += "---" - .["Make AI"] = "?_src_=vars;[HrefToken()];makeai=[REF(src)]" - .["Modify bodypart"] = "?_src_=vars;[HrefToken()];editbodypart=[REF(src)]" - .["Modify organs"] = "?_src_=vars;[HrefToken()];editorgans=[REF(src)]" - .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=[REF(src)]" - .["Give martial arts"] = "?_src_=vars;[HrefToken()];givemartialart=[REF(src)]" - .["Give brain trauma"] = "?_src_=vars;[HrefToken()];givetrauma=[REF(src)]" - .["Cure brain traumas"] = "?_src_=vars;[HrefToken()];curetraumas=[REF(src)]" - -/mob/living/carbon/can_resist() - return bodyparts.len > 2 && ..() - -/mob/living/carbon/proc/hypnosis_vulnerable()//unused atm, but added in case - if(HAS_TRAIT(src, TRAIT_MINDSHIELD)) - return FALSE - if(hallucinating()) - return TRUE - if(IsSleeping()) - return TRUE - if(HAS_TRAIT(src, TRAIT_DUMB)) - return TRUE - var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) - if(mood) - if(mood.sanity < SANITY_UNSTABLE) - return TRUE - -/mob/living/carbon/transfer_ckey(mob/new_mob, send_signal = TRUE) - if(combatmode) - toggle_combat_mode(TRUE, TRUE) - return ..() - -/mob/living/carbon/can_see_reagents() - . = ..() - if(.) //No need to run through all of this if it's already true. - return - if(isclothing(head)) - var/obj/item/clothing/H = head - if(H.clothing_flags & SCAN_REAGENTS) - return TRUE - if(isclothing(wear_mask) && (wear_mask.clothing_flags & SCAN_REAGENTS)) - return TRUE +/mob/living/carbon + blood_volume = BLOOD_VOLUME_NORMAL + +/mob/living/carbon/Initialize() + . = ..() + create_reagents(1000) + update_body_parts() //to update the carbon's new bodyparts appearance + GLOB.carbon_list += src + blood_volume = (BLOOD_VOLUME_NORMAL * blood_ratio) + +/mob/living/carbon/Destroy() + //This must be done first, so the mob ghosts correctly before DNA etc is nulled + . = ..() + + QDEL_LIST(internal_organs) + QDEL_LIST(stomach_contents) + QDEL_LIST(bodyparts) + QDEL_LIST(implants) + remove_from_all_data_huds() + QDEL_NULL(dna) + GLOB.carbon_list -= src + +/mob/living/carbon/initialize_footstep() + AddComponent(/datum/component/footstep, 0.6, 2) + +/mob/living/carbon/relaymove(mob/user, direction) + if(user in src.stomach_contents) + if(prob(40)) + if(prob(25)) + audible_message("You hear something rumbling inside [src]'s stomach...", \ + "You hear something rumbling.", 4,\ + "Something is rumbling inside your stomach!") + var/obj/item/I = user.get_active_held_item() + if(I && I.force) + var/d = rand(round(I.force / 4), I.force) + var/obj/item/bodypart/BP = get_bodypart(BODY_ZONE_CHEST) + if(BP.receive_damage(d, 0)) + update_damage_overlays() + visible_message("[user] attacks [src]'s stomach wall with the [I.name]!", \ + "[user] attacks your stomach wall with the [I.name]!") + playsound(user.loc, 'sound/effects/attackblob.ogg', 50, 1) + + if(prob(src.getBruteLoss() - 50)) + for(var/atom/movable/A in stomach_contents) + A.forceMove(drop_location()) + stomach_contents.Remove(A) + src.gib() + + +/mob/living/carbon/swap_hand(held_index) + if(!held_index) + held_index = (active_hand_index % held_items.len)+1 + + var/obj/item/item_in_hand = src.get_active_held_item() + if(item_in_hand) //this segment checks if the item in your hand is twohanded. + var/obj/item/twohanded/TH = item_in_hand + if(istype(TH)) + if(TH.wielded == 1) + to_chat(usr, "Your other hand is too busy holding [TH]") + return + var/oindex = active_hand_index + active_hand_index = held_index + if(hud_used) + var/obj/screen/inventory/hand/H + H = hud_used.hand_slots["[oindex]"] + if(H) + H.update_icon() + H = hud_used.hand_slots["[held_index]"] + if(H) + H.update_icon() + + +/mob/living/carbon/activate_hand(selhand) //l/r OR 1-held_items.len + if(!selhand) + selhand = (active_hand_index % held_items.len)+1 + + if(istext(selhand)) + selhand = lowertext(selhand) + if(selhand == "right" || selhand == "r") + selhand = 2 + if(selhand == "left" || selhand == "l") + selhand = 1 + + if(selhand != active_hand_index) + swap_hand(selhand) + else + mode() // Activate held item + +/mob/living/carbon/attackby(obj/item/I, mob/user, params) + if(lying && surgeries.len) + if(user != src && (user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM)) + for(var/datum/surgery/S in surgeries) + if(S.next_step(user,user.a_intent)) + return 1 + return ..() + +/mob/living/carbon/throw_impact(atom/hit_atom, throwingdatum) + . = ..() + var/hurt = TRUE + if(istype(throwingdatum, /datum/thrownthing)) + var/datum/thrownthing/D = throwingdatum + if(iscyborg(D.thrower)) + var/mob/living/silicon/robot/R = D.thrower + if(!R.emagged) + hurt = FALSE + if(hit_atom.density && isturf(hit_atom)) + if(hurt) + Knockdown(20) + take_bodypart_damage(10) + if(iscarbon(hit_atom) && hit_atom != src) + var/mob/living/carbon/victim = hit_atom + if(victim.movement_type & FLYING) + return + if(hurt) + victim.take_bodypart_damage(10) + take_bodypart_damage(10) + victim.Knockdown(20) + Knockdown(20) + visible_message("[src] crashes into [victim], knocking them both over!",\ + "You violently crash into [victim]!") + playsound(src,'sound/weapons/punch1.ogg',50,1) + + +//Throwing stuff +/mob/living/carbon/proc/toggle_throw_mode() + if(stat) + return + if(in_throw_mode) + throw_mode_off() + else + throw_mode_on() + + +/mob/living/carbon/proc/throw_mode_off() + in_throw_mode = 0 + if(client && hud_used) + hud_used.throw_icon.icon_state = "act_throw_off" + + +/mob/living/carbon/proc/throw_mode_on() + in_throw_mode = 1 + if(client && hud_used) + hud_used.throw_icon.icon_state = "act_throw_on" + +/mob/proc/throw_item(atom/target) + SEND_SIGNAL(src, COMSIG_MOB_THROW, target) + return + +/mob/living/carbon/throw_item(atom/target) + throw_mode_off() + if(!target || !isturf(loc)) + return + if(istype(target, /obj/screen)) + return + + //CIT CHANGES - makes it impossible to throw while in stamina softcrit + if(getStaminaLoss() >= STAMINA_SOFTCRIT) + to_chat(src, "You're too exhausted.") + return + var/random_turn = a_intent == INTENT_HARM + //END OF CIT CHANGES + + var/obj/item/I = src.get_active_held_item() + + var/atom/movable/thrown_thing + var/mob/living/throwable_mob + + if(istype(I, /obj/item/clothing/head/mob_holder)) + var/obj/item/clothing/head/mob_holder/holder = I + if(holder.held_mob) + throwable_mob = holder.held_mob + holder.release() + + if(!I || throwable_mob) + if(!throwable_mob && pulling && isliving(pulling) && grab_state >= GRAB_AGGRESSIVE) + throwable_mob = pulling + + if(throwable_mob && !throwable_mob.buckled) + thrown_thing = throwable_mob + if(pulling) + stop_pulling() + if(HAS_TRAIT(src, TRAIT_PACIFISM)) + to_chat(src, "You gently let go of [throwable_mob].") + return + + adjustStaminaLossBuffered(25)//CIT CHANGE - throwing an entire person shall be very tiring + var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors + var/turf/end_T = get_turf(target) + if(start_T && end_T) + log_combat(src, throwable_mob, "thrown", addition="grab from tile in [AREACOORD(start_T)] towards tile at [AREACOORD(end_T)]") + + else if(!CHECK_BITFIELD(I.item_flags, ABSTRACT) && !HAS_TRAIT(I, TRAIT_NODROP)) + thrown_thing = I + dropItemToGround(I) + + if(HAS_TRAIT(src, TRAIT_PACIFISM) && I.throwforce) + to_chat(src, "You set [I] down gently on the ground.") + return + + adjustStaminaLossBuffered(I.getweight()*2)//CIT CHANGE - throwing items shall be more tiring than swinging em. Doubly so. + + if(thrown_thing) + visible_message("[src] has thrown [thrown_thing].") + src.log_message("has thrown [thrown_thing]", LOG_ATTACK) + do_attack_animation(target, no_effect = 1) + playsound(loc, 'sound/weapons/punchmiss.ogg', 50, 1, -1) + newtonian_move(get_dir(target, src)) + thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src, null, null, null, random_turn) + + + +/mob/living/carbon/restrained(ignore_grab) + . = (handcuffed || (!ignore_grab && pulledby && pulledby.grab_state >= GRAB_AGGRESSIVE)) + +/mob/living/carbon/proc/canBeHandcuffed() + return 0 + + +/mob/living/carbon/show_inv(mob/user) + user.set_machine(src) + var/dat = {" +
+ [name] +
+
Head: [(head && !(head.item_flags & ABSTRACT)) ? head : "Nothing"] +
Mask: [(wear_mask && !(wear_mask.item_flags & ABSTRACT)) ? wear_mask : "Nothing"] +
Neck: [(wear_neck && !(wear_neck.item_flags & ABSTRACT)) ? wear_neck : "Nothing"]"} + + for(var/i in 1 to held_items.len) + var/obj/item/I = get_item_for_held_index(i) + dat += "
[get_held_index_name(i)]:[(I && !(I.item_flags & ABSTRACT)) ? I : "Nothing"]" + + dat += "
Back: [back ? back : "Nothing"]" + + if(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/tank)) + dat += "
[internal ? "Disable Internals" : "Set Internals"]" + + if(handcuffed) + dat += "
Handcuffed" + if(legcuffed) + dat += "
Legcuffed" + + dat += {" +
+
Close + "} + user << browse(dat, "window=mob[REF(src)];size=325x500") + onclose(user, "mob[REF(src)]") + +/mob/living/carbon/Topic(href, href_list) + ..() + //strip panel + if(usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) + if(href_list["internal"]) + var/slot = text2num(href_list["internal"]) + var/obj/item/ITEM = get_item_by_slot(slot) + if(ITEM && istype(ITEM, /obj/item/tank) && wear_mask && (wear_mask.clothing_flags & ALLOWINTERNALS)) + visible_message("[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM.name].", \ + "[usr] tries to [internal ? "close" : "open"] the valve on [src]'s [ITEM.name].") + if(do_mob(usr, src, POCKET_STRIP_DELAY)) + if(internal) + internal = null + update_internals_hud_icon(0) + else if(ITEM && istype(ITEM, /obj/item/tank)) + if((wear_mask && (wear_mask.clothing_flags & ALLOWINTERNALS)) || getorganslot(ORGAN_SLOT_BREATHING_TUBE)) + internal = ITEM + update_internals_hud_icon(1) + + visible_message("[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM.name].", \ + "[usr] [internal ? "opens" : "closes"] the valve on [src]'s [ITEM.name].") + + +/mob/living/carbon/fall(forced) + loc.handle_fall(src, forced)//it's loc so it doesn't call the mob's handle_fall which does nothing + +/mob/living/carbon/is_muzzled() + return(istype(src.wear_mask, /obj/item/clothing/mask/muzzle)) + +/mob/living/carbon/hallucinating() + if(hallucination) + return TRUE + else + return FALSE + +/mob/living/carbon/resist_buckle() + if(restrained()) + changeNext_move(CLICK_CD_BREAKOUT) + last_special = world.time + CLICK_CD_BREAKOUT + var/buckle_cd = 600 + if(handcuffed) + var/obj/item/restraints/O = src.get_item_by_slot(SLOT_HANDCUFFED) + buckle_cd = O.breakouttime + visible_message("[src] attempts to unbuckle [p_them()]self!", \ + "You attempt to unbuckle yourself... (This will take around [round(buckle_cd/600,1)] minute\s, and you need to stay still.)") + if(do_after(src, buckle_cd, 0, target = src)) + if(!buckled) + return + buckled.user_unbuckle_mob(src,src) + else + if(src && buckled) + to_chat(src, "You fail to unbuckle yourself!") + else + buckled.user_unbuckle_mob(src,src) + +/mob/living/carbon/resist_fire() + fire_stacks -= 5 + Knockdown(60, TRUE, TRUE) + spin(32,2) + visible_message("[src] rolls on the floor, trying to put [p_them()]self out!", \ + "You stop, drop, and roll!") + sleep(30) + if(fire_stacks <= 0) + visible_message("[src] has successfully extinguished [p_them()]self!", \ + "You extinguish yourself.") + ExtinguishMob() + return + +/mob/living/carbon/resist_restraints() + var/obj/item/I = null + var/type = 0 + if(handcuffed) + I = handcuffed + type = 1 + else if(legcuffed) + I = legcuffed + type = 2 + if(I) + if(type == 1) + changeNext_move(CLICK_CD_BREAKOUT) + last_special = world.time + CLICK_CD_BREAKOUT + if(type == 2) + changeNext_move(CLICK_CD_RANGE) + last_special = world.time + CLICK_CD_RANGE + cuff_resist(I) + + +/mob/living/carbon/proc/cuff_resist(obj/item/I, breakouttime = 600, cuff_break = 0) + if(I.item_flags & BEING_REMOVED) + to_chat(src, "You're already attempting to remove [I]!") + return + I.item_flags |= BEING_REMOVED + breakouttime = I.breakouttime + if(!cuff_break) + visible_message("[src] attempts to remove [I]!") + to_chat(src, "You attempt to remove [I]... (This will take around [DisplayTimeText(breakouttime)] and you need to stand still.)") + if(do_after(src, breakouttime, 0, target = src)) + clear_cuffs(I, cuff_break) + else + to_chat(src, "You fail to remove [I]!") + + else if(cuff_break == FAST_CUFFBREAK) + breakouttime = 50 + visible_message("[src] is trying to break [I]!") + to_chat(src, "You attempt to break [I]... (This will take around 5 seconds and you need to stand still.)") + if(do_after(src, breakouttime, 0, target = src)) + clear_cuffs(I, cuff_break) + else + to_chat(src, "You fail to break [I]!") + + else if(cuff_break == INSTANT_CUFFBREAK) + clear_cuffs(I, cuff_break) + I.item_flags &= ~BEING_REMOVED + +/mob/living/carbon/proc/uncuff() + if (handcuffed) + var/obj/item/W = handcuffed + handcuffed = null + if (buckled && buckled.buckle_requires_restraints) + buckled.unbuckle_mob(src) + update_handcuffed() + if (client) + client.screen -= W + if (W) + W.forceMove(drop_location()) + W.dropped(src) + if (W) + W.layer = initial(W.layer) + W.plane = initial(W.plane) + changeNext_move(0) + if (legcuffed) + var/obj/item/W = legcuffed + legcuffed = null + update_inv_legcuffed() + if (client) + client.screen -= W + if (W) + W.forceMove(drop_location()) + W.dropped(src) + if (W) + W.layer = initial(W.layer) + W.plane = initial(W.plane) + changeNext_move(0) + +/mob/living/carbon/proc/clear_cuffs(obj/item/I, cuff_break) + if(!I.loc || buckled) + return + visible_message("[src] manages to [cuff_break ? "break" : "remove"] [I]!") + to_chat(src, "You successfully [cuff_break ? "break" : "remove"] [I].") + + if(cuff_break) + . = !((I == handcuffed) || (I == legcuffed)) + qdel(I) + return + + else + if(I == handcuffed) + handcuffed.forceMove(drop_location()) + handcuffed.dropped(src) + handcuffed = null + if(buckled && buckled.buckle_requires_restraints) + buckled.unbuckle_mob(src) + update_handcuffed() + return + if(I == legcuffed) + legcuffed.forceMove(drop_location()) + legcuffed.dropped() + legcuffed = null + update_inv_legcuffed() + return + else + dropItemToGround(I) + return + return TRUE + +/mob/living/carbon/get_standard_pixel_y_offset(lying = 0) + if(lying) + return -6 + else + return initial(pixel_y) + +/mob/living/carbon/proc/accident(obj/item/I) + if(!I || (I.item_flags & ABSTRACT) || HAS_TRAIT(I, TRAIT_NODROP)) + return + + //dropItemToGround(I) CIT CHANGE - makes it so the item doesn't drop if the modifier rolls above 100 + + var/modifier = 0 + + if(HAS_TRAIT(src, TRAIT_CLUMSY)) + modifier -= 40 //Clumsy people are more likely to hit themselves -Honk! + + //CIT CHANGES START HERE + else if(combatmode) + modifier += 50 + + if(modifier < 100) + dropItemToGround(I) + //END OF CIT CHANGES + + switch(rand(1,100)+modifier) //91-100=Nothing special happens + if(-INFINITY to 0) //attack yourself + I.attack(src,src) + if(1 to 30) //throw it at yourself + I.throw_impact(src) + if(31 to 60) //Throw object in facing direction + var/turf/target = get_turf(loc) + var/range = rand(2,I.throw_range) + for(var/i = 1; i < range; i++) + var/turf/new_turf = get_step(target, dir) + target = new_turf + if(new_turf.density) + break + I.throw_at(target,I.throw_range,I.throw_speed,src) + if(61 to 90) //throw it down to the floor + var/turf/target = get_turf(loc) + I.throw_at(target,I.throw_range,I.throw_speed,src) + +/mob/living/carbon/Stat() + ..() + if(statpanel("Status")) + var/obj/item/organ/alien/plasmavessel/vessel = getorgan(/obj/item/organ/alien/plasmavessel) + if(vessel) + stat(null, "Plasma Stored: [vessel.storedPlasma]/[vessel.max_plasma]") + if(locate(/obj/item/assembly/health) in src) + stat(null, "Health: [health]") + + add_abilities_to_panel() + +/mob/living/carbon/attack_ui(slot) + if(!has_hand_for_held_index(active_hand_index)) + return 0 + return ..() + +/mob/living/carbon/proc/vomit(lost_nutrition = 10, blood = FALSE, stun = TRUE, distance = 1, message = TRUE, toxic = FALSE) + if(HAS_TRAIT(src, TRAIT_NOHUNGER)) + return 1 + + if(nutrition < 100 && !blood) + if(message) + visible_message("[src] dry heaves!", \ + "You try to throw up, but there's nothing in your stomach!") + if(stun) + Knockdown(200) + return 1 + + if(is_mouth_covered()) //make this add a blood/vomit overlay later it'll be hilarious + if(message) + visible_message("[src] throws up all over [p_them()]self!", \ + "You throw up all over yourself!") + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "vomit", /datum/mood_event/vomitself) + distance = 0 + else + if(message) + visible_message("[src] throws up!", "You throw up!") + if(!isflyperson(src)) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "vomit", /datum/mood_event/vomit) + if(stun) + Stun(80) + + playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1) + var/turf/T = get_turf(src) + if(!blood) + nutrition -= lost_nutrition + adjustToxLoss(-3) + for(var/i=0 to distance) + if(blood) + if(T) + add_splatter_floor(T) + if(stun) + adjustBruteLoss(3) + else if(src.reagents.has_reagent(/datum/reagent/consumable/ethanol/blazaam)) + if(T) + T.add_vomit_floor(src, VOMIT_PURPLE) + else + if(T) + T.add_vomit_floor(src, VOMIT_TOXIC)//toxic barf looks different + T = get_step(T, dir) + if (is_blocked_turf(T)) + break + return 1 + +/mob/living/carbon/proc/spew_organ(power = 5, amt = 1) + for(var/i in 1 to amt) + if(!internal_organs.len) + break //Guess we're out of organs! + var/obj/item/organ/guts = pick(internal_organs) + var/turf/T = get_turf(src) + guts.Remove(src) + guts.forceMove(T) + var/atom/throw_target = get_edge_target_turf(guts, dir) + guts.throw_at(throw_target, power, 4, src) + + +/mob/living/carbon/fully_replace_character_name(oldname,newname) + ..() + if(dna) + dna.real_name = real_name + +//Updates the mob's health from bodyparts and mob damage variables +/mob/living/carbon/updatehealth() + if(status_flags & GODMODE) + return + var/total_burn = 0 + var/total_brute = 0 + var/total_stamina = 0 + for(var/X in bodyparts) //hardcoded to streamline things a bit + var/obj/item/bodypart/BP = X + total_brute += (BP.brute_dam * BP.body_damage_coeff) + total_burn += (BP.burn_dam * BP.body_damage_coeff) + total_stamina += (BP.stamina_dam * BP.stam_damage_coeff) + health = round(maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute, DAMAGE_PRECISION) + staminaloss = round(total_stamina, DAMAGE_PRECISION) + update_stat() + if(((maxHealth - total_burn) < HEALTH_THRESHOLD_DEAD) && stat == DEAD ) + become_husk("burn") + med_hud_set_health() + if(stat == SOFT_CRIT) + add_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE, multiplicative_slowdown = SOFTCRIT_ADD_SLOWDOWN) + else + remove_movespeed_modifier(MOVESPEED_ID_CARBON_SOFTCRIT, TRUE) + +/mob/living/carbon/update_stamina() + var/stam = getStaminaLoss() + if(stam > DAMAGE_PRECISION) + var/total_health = (health - stam) + if(total_health <= crit_threshold && !stat) + if(!IsKnockdown()) + to_chat(src, "You're too exhausted to keep going...") + Knockdown(100) + update_health_hud() + +/mob/living/carbon/update_sight() + if(!client) + return + if(stat == DEAD) + sight = (SEE_TURFS|SEE_MOBS|SEE_OBJS) + see_in_dark = 8 + see_invisible = SEE_INVISIBLE_OBSERVER + return + + sight = initial(sight) + lighting_alpha = initial(lighting_alpha) + var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES) + if(!E) + update_tint() + else + see_invisible = E.see_invisible + see_in_dark = E.see_in_dark + sight |= E.sight_flags + if(!isnull(E.lighting_alpha)) + lighting_alpha = E.lighting_alpha + if(HAS_TRAIT(src, TRAIT_NIGHT_VISION)) + lighting_alpha = min(LIGHTING_PLANE_ALPHA_NV_TRAIT, lighting_alpha) + see_in_dark = max(NIGHT_VISION_DARKSIGHT_RANGE, see_in_dark) + + if(client.eye && client.eye != src) + var/atom/A = client.eye + if(A.update_remote_sight(src)) //returns 1 if we override all other sight updates. + return + + if(glasses) + var/obj/item/clothing/glasses/G = glasses + sight |= G.vision_flags + see_in_dark = max(G.darkness_view, see_in_dark) + if(G.invis_override) + see_invisible = G.invis_override + else + see_invisible = min(G.invis_view, see_invisible) + if(!isnull(G.lighting_alpha)) + lighting_alpha = min(lighting_alpha, G.lighting_alpha) + if(dna) + for(var/X in dna.mutations) + var/datum/mutation/M = X + if(M.name == XRAY) + sight |= (SEE_TURFS|SEE_MOBS|SEE_OBJS) + see_in_dark = max(see_in_dark, 8) + + if(see_override) + see_invisible = see_override + . = ..() + + +//to recalculate and update the mob's total tint from tinted equipment it's wearing. +/mob/living/carbon/proc/update_tint() + if(!GLOB.tinted_weldhelh) + return + tinttotal = get_total_tint() + if(tinttotal >= TINT_BLIND) + become_blind(EYES_COVERED) + else if(tinttotal >= TINT_DARKENED) + cure_blind(EYES_COVERED) + overlay_fullscreen("tint", /obj/screen/fullscreen/impaired, 2) + else + cure_blind(EYES_COVERED) + clear_fullscreen("tint", 0) + +/mob/living/carbon/proc/get_total_tint() + . = 0 + if(istype(head, /obj/item/clothing/head)) + var/obj/item/clothing/head/HT = head + . += HT.tint + if(wear_mask) + . += wear_mask.tint + + var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES) + if(E) + . += E.tint + + else + . += INFINITY + +/mob/living/carbon/get_permeability_protection(list/target_zones = list(HANDS,CHEST,GROIN,LEGS,FEET,ARMS,HEAD)) + var/list/tally = list() + for(var/obj/item/I in get_equipped_items()) + for(var/zone in target_zones) + if(I.body_parts_covered & zone) + tally["[zone]"] = max(1 - I.permeability_coefficient, target_zones["[zone]"]) + var/protection = 0 + for(var/key in tally) + protection += tally[key] + protection *= INVERSE(target_zones.len) + return protection + +//this handles hud updates +/mob/living/carbon/update_damage_hud() + + if(!client) + return + + if(health <= crit_threshold) + var/severity = 0 + switch(health) + if(-20 to -10) + severity = 1 + if(-30 to -20) + severity = 2 + if(-40 to -30) + severity = 3 + if(-50 to -40) + severity = 4 + if(-50 to -40) + severity = 5 + if(-60 to -50) + severity = 6 + if(-70 to -60) + severity = 7 + if(-90 to -70) + severity = 8 + if(-95 to -90) + severity = 9 + if(-INFINITY to -95) + severity = 10 + if(!InFullCritical()) + var/visionseverity = 4 + switch(health) + if(-8 to -4) + visionseverity = 5 + if(-12 to -8) + visionseverity = 6 + if(-16 to -12) + visionseverity = 7 + if(-20 to -16) + visionseverity = 8 + if(-24 to -20) + visionseverity = 9 + if(-INFINITY to -24) + visionseverity = 10 + overlay_fullscreen("critvision", /obj/screen/fullscreen/crit/vision, visionseverity) + else + clear_fullscreen("critvision") + overlay_fullscreen("crit", /obj/screen/fullscreen/crit, severity) + else + clear_fullscreen("crit") + clear_fullscreen("critvision") + + //Oxygen damage overlay + var/windedup = getOxyLoss() + getStaminaLoss() * 0.2 + if(windedup) + var/severity = 0 + switch(windedup) + if(10 to 20) + severity = 1 + if(20 to 25) + severity = 2 + if(25 to 30) + severity = 3 + if(30 to 35) + severity = 4 + if(35 to 40) + severity = 5 + if(40 to 45) + severity = 6 + if(45 to INFINITY) + severity = 7 + overlay_fullscreen("oxy", /obj/screen/fullscreen/oxy, severity) + else + clear_fullscreen("oxy") + + //Fire and Brute damage overlay (BSSR) + var/hurtdamage = getBruteLoss() + getFireLoss() + damageoverlaytemp + if(hurtdamage) + var/severity = 0 + switch(hurtdamage) + if(5 to 15) + severity = 1 + if(15 to 30) + severity = 2 + if(30 to 45) + severity = 3 + if(45 to 70) + severity = 4 + if(70 to 85) + severity = 5 + if(85 to INFINITY) + severity = 6 + overlay_fullscreen("brute", /obj/screen/fullscreen/brute, severity) + else + clear_fullscreen("brute") + +/mob/living/carbon/update_health_hud(shown_health_amount) + if(!client || !hud_used) + return + if(hud_used.healths) + if(stat != DEAD) + . = 1 + if(!shown_health_amount) + shown_health_amount = health + if(shown_health_amount >= maxHealth) + hud_used.healths.icon_state = "health0" + else if(shown_health_amount > maxHealth*0.8) + hud_used.healths.icon_state = "health1" + else if(shown_health_amount > maxHealth*0.6) + hud_used.healths.icon_state = "health2" + else if(shown_health_amount > maxHealth*0.4) + hud_used.healths.icon_state = "health3" + else if(shown_health_amount > maxHealth*0.2) + hud_used.healths.icon_state = "health4" + else if(shown_health_amount > 0) + hud_used.healths.icon_state = "health5" + else + hud_used.healths.icon_state = "health6" + else + hud_used.healths.icon_state = "health7" + +/mob/living/carbon/proc/update_internals_hud_icon(internal_state = 0) + if(hud_used && hud_used.internals) + hud_used.internals.icon_state = "internal[internal_state]" + +/mob/living/carbon/update_stat() + if(status_flags & GODMODE) + return + if(stat != DEAD) + if(health <= HEALTH_THRESHOLD_DEAD && !HAS_TRAIT(src, TRAIT_NODEATH)) + death() + return + if(IsUnconscious() || IsSleeping() || getOxyLoss() > 50 || (HAS_TRAIT(src, TRAIT_DEATHCOMA)) || (health <= HEALTH_THRESHOLD_FULLCRIT && !HAS_TRAIT(src, TRAIT_NOHARDCRIT))) + stat = UNCONSCIOUS + blind_eyes(1) + if(combatmode) + toggle_combat_mode(TRUE, TRUE) + else + if(health <= crit_threshold && !HAS_TRAIT(src, TRAIT_NOSOFTCRIT)) + stat = SOFT_CRIT + if(combatmode) + toggle_combat_mode(TRUE, TRUE) + else + stat = CONSCIOUS + adjust_blindness(-1) + update_canmove() + update_damage_hud() + update_health_hud() + med_hud_set_status() + +//called when we get cuffed/uncuffed +/mob/living/carbon/proc/update_handcuffed() + if(handcuffed) + drop_all_held_items() + stop_pulling() + throw_alert("handcuffed", /obj/screen/alert/restrained/handcuffed, new_master = src.handcuffed) + if(handcuffed.demoralize_criminals) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "handcuffed", /datum/mood_event/handcuffed) + else + clear_alert("handcuffed") + SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "handcuffed") + update_action_buttons_icon() //some of our action buttons might be unusable when we're handcuffed. + update_inv_handcuffed() + update_hud_handcuffed() + +/mob/living/carbon/fully_heal(admin_revive = FALSE) + if(reagents) + reagents.clear_reagents() + var/obj/item/organ/brain/B = getorgan(/obj/item/organ/brain) + if(B) + B.brain_death = FALSE + for(var/thing in diseases) + var/datum/disease/D = thing + if(D.severity != DISEASE_SEVERITY_POSITIVE) + D.cure(FALSE) + if(admin_revive) + regenerate_limbs() + regenerate_organs() + handcuffed = initial(handcuffed) + for(var/obj/item/restraints/R in contents) //actually remove cuffs from inventory + qdel(R) + update_handcuffed() + if(reagents) + reagents.addiction_list = list() + cure_all_traumas(TRAUMA_RESILIENCE_MAGIC) + ..() + // heal ears after healing traits, since ears check TRAIT_DEAF trait + // when healing. + restoreEars() + +/mob/living/carbon/can_be_revived() + . = ..() + if(!getorgan(/obj/item/organ/brain) && (!mind || !mind.has_antag_datum(/datum/antagonist/changeling))) + return 0 + +/mob/living/carbon/harvest(mob/living/user) + if(QDELETED(src)) + return + var/organs_amt = 0 + for(var/X in internal_organs) + var/obj/item/organ/O = X + if(prob(50)) + organs_amt++ + O.Remove(src) + O.forceMove(drop_location()) + if(organs_amt) + to_chat(user, "You retrieve some of [src]\'s internal organs!") + +/mob/living/carbon/ExtinguishMob() + for(var/X in get_equipped_items()) + var/obj/item/I = X + I.acid_level = 0 //washes off the acid on our clothes + I.extinguish() //extinguishes our clothes + ..() + +/mob/living/carbon/fakefire(var/fire_icon = "Generic_mob_burning") + var/mutable_appearance/new_fire_overlay = mutable_appearance('icons/mob/OnFire.dmi', fire_icon, -FIRE_LAYER) + new_fire_overlay.appearance_flags = RESET_COLOR + overlays_standing[FIRE_LAYER] = new_fire_overlay + apply_overlay(FIRE_LAYER) + +/mob/living/carbon/fakefireextinguish() + remove_overlay(FIRE_LAYER) + + +/mob/living/carbon/proc/devour_mob(mob/living/carbon/C, devour_time = 130) + C.visible_message("[src] is attempting to devour [C]!", \ + "[src] is attempting to devour you!") + if(!do_mob(src, C, devour_time)) + return + if(pulling && pulling == C && grab_state >= GRAB_AGGRESSIVE && a_intent == INTENT_GRAB) + C.visible_message("[src] devours [C]!", \ + "[src] devours you!") + C.forceMove(src) + stomach_contents.Add(C) + log_combat(src, C, "devoured") + +/mob/living/carbon/proc/create_bodyparts() + var/l_arm_index_next = -1 + var/r_arm_index_next = 0 + for(var/X in bodyparts) + var/obj/item/bodypart/O = new X() + O.owner = src + bodyparts.Remove(X) + bodyparts.Add(O) + if(O.body_part == ARM_LEFT) + l_arm_index_next += 2 + O.held_index = l_arm_index_next //1, 3, 5, 7... + hand_bodyparts += O + else if(O.body_part == ARM_RIGHT) + r_arm_index_next += 2 + O.held_index = r_arm_index_next //2, 4, 6, 8... + hand_bodyparts += O + +/mob/living/carbon/do_after_coefficent() + . = ..() + var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) //Currently, only carbons or higher use mood, move this once that changes. + if(mood) + switch(mood.sanity) //Alters do_after delay based on how sane you are + if(SANITY_INSANE to SANITY_DISTURBED) + . *= 1.25 + if(SANITY_NEUTRAL to SANITY_GREAT) + . *= 0.90 + + +/mob/living/carbon/proc/create_internal_organs() + for(var/X in internal_organs) + var/obj/item/organ/I = X + I.Insert(src) + +/mob/living/carbon/proc/update_disabled_bodyparts() + for(var/B in bodyparts) + var/obj/item/bodypart/BP = B + BP.update_disabled() + +/mob/living/carbon/vv_get_dropdown() + . = ..() + . += "---" + .["Make AI"] = "?_src_=vars;[HrefToken()];makeai=[REF(src)]" + .["Modify bodypart"] = "?_src_=vars;[HrefToken()];editbodypart=[REF(src)]" + .["Modify organs"] = "?_src_=vars;[HrefToken()];editorgans=[REF(src)]" + .["Hallucinate"] = "?_src_=vars;[HrefToken()];hallucinate=[REF(src)]" + .["Give martial arts"] = "?_src_=vars;[HrefToken()];givemartialart=[REF(src)]" + .["Give brain trauma"] = "?_src_=vars;[HrefToken()];givetrauma=[REF(src)]" + .["Cure brain traumas"] = "?_src_=vars;[HrefToken()];curetraumas=[REF(src)]" + +/mob/living/carbon/can_resist() + return bodyparts.len > 2 && ..() + +/mob/living/carbon/proc/hypnosis_vulnerable()//unused atm, but added in case + if(HAS_TRAIT(src, TRAIT_MINDSHIELD)) + return FALSE + if(hallucinating()) + return TRUE + if(IsSleeping()) + return TRUE + if(HAS_TRAIT(src, TRAIT_DUMB)) + return TRUE + var/datum/component/mood/mood = src.GetComponent(/datum/component/mood) + if(mood) + if(mood.sanity < SANITY_UNSTABLE) + return TRUE + +/mob/living/carbon/transfer_ckey(mob/new_mob, send_signal = TRUE) + if(combatmode) + toggle_combat_mode(TRUE, TRUE) + return ..() + +/mob/living/carbon/can_see_reagents() + . = ..() + if(.) //No need to run through all of this if it's already true. + return + if(isclothing(head)) + var/obj/item/clothing/H = head + if(H.clothing_flags & SCAN_REAGENTS) + return TRUE + if(isclothing(wear_mask) && (wear_mask.clothing_flags & SCAN_REAGENTS)) + return TRUE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index ba40ae8e5f..161b5875b1 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -243,7 +243,7 @@ shock_damage *= dna.species.siemens_coeff if(shock_damage<1 && !override) return 0 - if(reagents.has_reagent("teslium")) + if(reagents.has_reagent(/datum/reagent/teslium)) shock_damage *= 1.5 //If the mob has teslium in their body, shocks are 50% more damaging! if(illusion) adjustStaminaLoss(shock_damage) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 3a6f0e6724..eca3a81c4b 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -255,7 +255,7 @@ else msg += "[t_He] [t_is] bleeding!\n" - if(reagents.has_reagent("teslium")) + if(reagents.has_reagent(/datum/reagent/teslium)) msg += "[t_He] [t_is] emitting a gentle blue glow!\n" if(islist(stun_absorption)) @@ -278,7 +278,7 @@ if(91.01 to INFINITY) msg += "[t_He] [t_is] a shitfaced, slobbering wreck.\n" - if(reagents.has_reagent("astral")) + if(reagents.has_reagent(/datum/reagent/fermi/astral)) if(mind) msg += "[t_He] has wild, spacey eyes and they have a strange, abnormal look to them.\n" else diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 2e069297b3..5b8173b6ba 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -290,7 +290,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) // this needs to be FIRST because qdel calls update_body which checks if we have DIGITIGRADE legs or not and if not then removes DIGITIGRADE from species_traits if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian")) - species_traits += DIGITIGRADE + species_traits |= DIGITIGRADE if(DIGITIGRADE in species_traits) C.Digitigrade_Leg_Swap(FALSE) @@ -611,34 +611,34 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return var/obj/item/bodypart/head/HD = H.get_bodypart(BODY_ZONE_HEAD) + var/tauric = H.dna.features["taur"] && H.dna.features["taur"] != "None" if("tail_lizard" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "tail_lizard" if("waggingtail_lizard" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "waggingtail_lizard" else if ("tail_lizard" in mutant_bodyparts) bodyparts_to_add -= "waggingtail_lizard" if("tail_human" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "tail_human" - if("waggingtail_human" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "waggingtail_human" else if ("tail_human" in mutant_bodyparts) bodyparts_to_add -= "waggingtail_human" if("spines" in mutant_bodyparts) - if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT)) + if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) bodyparts_to_add -= "spines" if("waggingspines" in mutant_bodyparts) - if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDEJUMPSUIT)) + if(!H.dna.features["spines"] || H.dna.features["spines"] == "None" || H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) bodyparts_to_add -= "waggingspines" else if ("tail" in mutant_bodyparts) bodyparts_to_add -= "waggingspines" @@ -688,11 +688,11 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) //Other Races if("mam_tail" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "mam_tail" if("mam_waggingtail" in mutant_bodyparts) - if(H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR) || (!H.dna.features["taur"] == "None")) + if((H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR)) || tauric) bodyparts_to_add -= "mam_waggingtail" else if ("mam_tail" in mutant_bodyparts) bodyparts_to_add -= "mam_waggingtail" @@ -706,7 +706,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) bodyparts_to_add -= "mam_snouts" if("taur" in mutant_bodyparts) - if(!H.dna.features["taur"] || H.dna.features["taur"] == "None" || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) + if(!tauric || (H.wear_suit && (H.wear_suit.flags_inv & HIDETAUR))) bodyparts_to_add -= "taur" //END EDIT @@ -723,10 +723,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) species_traits += DIGITIGRADE var/should_be_squished = FALSE if(H.wear_suit) - if(H.wear_suit.mutantrace_variation == NO_MUTANTRACE_VARIATION) //we got digitigrade suits now fam + if(!(H.wear_suit.mutantrace_variation & STYLE_DIGITIGRADE) || (tauric && (H.wear_suit.mutantrace_variation & STYLE_ALL_TAURIC))) //digitigrade/taur suits should_be_squished = TRUE if(H.w_uniform && !H.wear_suit) - if(H.w_uniform.mutantrace_variation == NO_MUTANTRACE_VARIATION) + if(!(H.w_uniform.mutantrace_variation & STYLE_DIGITIGRADE)) should_be_squished = TRUE if(O.use_digitigrade == FULL_DIGITIGRADE && should_be_squished) O.use_digitigrade = SQUISHED_DIGITIGRADE @@ -1270,9 +1270,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) H.update_mutant_bodyparts() /datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == exotic_blood) + if(chem.type == exotic_blood) H.blood_volume = min(H.blood_volume + round(chem.volume, 0.1), BLOOD_VOLUME_MAXIMUM) - H.reagents.del_reagent(chem.id) + H.reagents.del_reagent(chem.type) return 1 return FALSE diff --git a/code/modules/mob/living/carbon/human/species_types/dwarves.dm b/code/modules/mob/living/carbon/human/species_types/dwarves.dm index 946bffbdbc..9c28b8a0b7 100644 --- a/code/modules/mob/living/carbon/human/species_types/dwarves.dm +++ b/code/modules/mob/living/carbon/human/species_types/dwarves.dm @@ -7,18 +7,18 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // id = "dwarf" //Also called Homo sapiens pumilionis default_color = "FFFFFF" species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR) - inherent_traits = list() + inherent_traits = list() default_features = list("mcolor" = "FFF", "wings" = "None") limbs_id = "human" use_skintones = 1 say_mod = "bellows" //high energy, EXTRA BIOLOGICAL FUEL - damage_overlay_type = "human" + damage_overlay_type = "human" skinned_type = /obj/item/stack/sheet/animalhide/human liked_food = ALCOHOL | MEAT | DAIRY //Dwarves like alcohol, meat, and dairy products. disliked_food = JUNKFOOD | FRIED //Dwarves hate foods that have no nutrition other than alcohol. mutant_organs = list(/obj/item/organ/dwarfgland) //Dwarven alcohol gland, literal gland warrior mutantliver = /obj/item/organ/liver/dwarf //Dwarven super liver (Otherwise they r doomed) - + /mob/living/carbon/human/species/dwarf //species admin spawn path race = /datum/species/dwarf //and the race the path is set to. @@ -30,7 +30,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // /datum/species/dwarf/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() var/dwarf_hair = pick("Beard (Dwarf)", "Beard (Very Long)", "Beard (Long)") //beard roullette - var/mob/living/carbon/human/H = C + var/mob/living/carbon/human/H = C H.facial_hair_style = dwarf_hair H.update_hair() H.transform = H.transform.Scale(1, 0.8) //We use scale, and yeah. Dwarves can become gnomes with DWARFISM. @@ -95,7 +95,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // /obj/item/organ/dwarfgland/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("ethanol", stored_alcohol/10) + S.reagents.add_reagent(/datum/reagent/consumable/ethanol, stored_alcohol/10) return S /obj/item/organ/dwarfgland/on_life() //Primary loop to hook into to start delayed loops for other loops.. @@ -108,8 +108,8 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) // return //We make sure they are not dead, so they don't increment any tickers. dwarf_eth_ticker++ dwarf_filth_ticker++ - - if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds. + + if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds. dwarf_filth_cycle() //On_life will adjust regarding other factors, so we are along for the ride. dwarf_filth_ticker = 0 //We set the ticker back to 0 to go again. if(dwarf_eth_ticker >= 1) //Alcohol reagent check should be around 2 seconds, since a tick is around 2 seconds. diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 0c3bcc2b00..426213161e 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -13,9 +13,9 @@ exotic_bloodtype = "BUG" /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "pestkiller") + if(chem.type == /datum/reagent/toxin/pestkiller) H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return 1 diff --git a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 1e4b3e9fae..e2adb2acd9 100644 --- a/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -70,20 +70,6 @@ damage_overlay_type = "xeno" liked_food = MEAT -/datum/species/xeno/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) - if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian")) - species_traits += DIGITIGRADE - if(DIGITIGRADE in species_traits) - C.Digitigrade_Leg_Swap(FALSE) - . = ..() - -/datum/species/xeno/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) - if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Plantigrade") - species_traits -= DIGITIGRADE - if(DIGITIGRADE in species_traits) - C.Digitigrade_Leg_Swap(TRUE) - . = ..() - //Praise the Omnissiah, A challange worthy of my skills - HS //EXOTIC// diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 3d6c5092e1..c247d14589 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -305,9 +305,9 @@ H.take_overall_damage(2,0) /datum/species/golem/wood/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "plantbgone") + if(chem.type == /datum/reagent/toxin/plantbgone) H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return 1 //Radioactive @@ -619,14 +619,14 @@ C.RemoveSpell(dominate) /datum/species/golem/runic/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "holywater") + if(chem.type == /datum/reagent/water/holywater) H.adjustFireLoss(4) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) - if(chem.id == "unholywater") + if(chem.type == /datum/reagent/fuel/unholywater) H.adjustBruteLoss(-4) H.adjustFireLoss(-4) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) /datum/species/golem/clockwork diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 5f91e3ae66..b63cd59173 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -12,7 +12,7 @@ inherent_traits = list(TRAIT_TOXINLOVER) meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/slime gib_types = list(/obj/effect/gibspawner/slime, /obj/effect/gibspawner/slime/bodypartless) - exotic_blood = "jellyblood" + exotic_blood = /datum/reagent/blood/jellyblood exotic_bloodtype = "GEL" damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 9317a51050..df8d4d727a 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -73,19 +73,6 @@ mutant_bodyparts |= "spines" H.update_body() -/datum/species/lizard/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) - if(("legs" in C.dna.species.mutant_bodyparts) && (C.dna.features["legs"] == "Digitigrade" || C.dna.features["legs"] == "Avian")) - species_traits += DIGITIGRADE - if(DIGITIGRADE in species_traits) - C.Digitigrade_Leg_Swap(FALSE) - return ..() - -/datum/species/lizard/on_species_loss(mob/living/carbon/human/C, datum/species/new_species) - if(("legs" in C.dna.species.mutant_bodyparts) && C.dna.features["legs"] == "Plantigrade") - species_traits -= DIGITIGRADE - if(DIGITIGRADE in species_traits) - C.Digitigrade_Leg_Swap(TRUE) - /* Lizard subspecies: ASHWALKERS */ diff --git a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm index 7744a65464..ab0962cf12 100644 --- a/code/modules/mob/living/carbon/human/species_types/mushpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/mushpeople.dm @@ -52,9 +52,9 @@ QDEL_NULL(mush) /datum/species/mush/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "weedkiller") + if(chem.type == /datum/reagent/toxin/plantbgone/weedkiller) H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return TRUE /datum/species/mush/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour) diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index f0dd48c6c1..66eb207670 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -47,9 +47,9 @@ H.take_overall_damage(2,0) /datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "plantbgone") + if(chem.type == /datum/reagent/toxin/plantbgone) H.adjustToxLoss(3) - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return 1 /datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 5cd1a599ad..0335e08922 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -36,9 +36,9 @@ UnregisterSignal(H, COMSIG_MOB_SAY) /datum/species/synth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) - if(chem.id == "synthflesh") + if(chem.type == /datum/reagent/medicine/synthflesh) chem.reaction_mob(H, TOUCH, 2 ,0) //heal a little - H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM) + H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM) return 1 else return ..() diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index ae69d5dc90..c4088317b1 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -119,24 +119,25 @@ There are several things that need to be remembered: var/t_color = U.item_color if(!t_color) t_color = U.icon_state - if(U.suit_style == NORMAL_SUIT_STYLE) - if(U.adjusted == ALT_STYLE) - t_color = "[t_color]_d" + if(U.adjusted == ALT_STYLE) + t_color = "[t_color]_d" - var/alt_worn = U.alternate_worn_icon + var/alt_worn = U.alternate_worn_icon || 'icons/mob/uniform.dmi' + var/variant_flag = NONE - if(!U.force_alternate_icon && U.mutantrace_variation && U.suit_style == DIGITIGRADE_SUIT_STYLE) + if((DIGITIGRADE in dna.species.species_traits) && U.mutantrace_variation & STYLE_DIGITIGRADE) alt_worn = 'icons/mob/uniform_digi.dmi' + variant_flag |= STYLE_DIGITIGRADE var/mutable_appearance/uniform_overlay if(dna && dna.species.sexes) var/G = (gender == FEMALE) ? "f" : "m" if(G == "f" && U.fitted != NO_FEMALE_UNIFORM) - uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = (alt_worn ? alt_worn : 'icons/mob/uniform.dmi'), isinhands = FALSE, femaleuniform = U.fitted) + uniform_overlay = U.build_worn_icon(t_color, UNIFORM_LAYER, alt_worn, FALSE, U.fitted, variant_flag, FALSE) if(!uniform_overlay) - uniform_overlay = U.build_worn_icon(state = "[t_color]", default_layer = UNIFORM_LAYER, default_icon_file = (alt_worn ? alt_worn : 'icons/mob/uniform.dmi'), isinhands = FALSE) + uniform_overlay = U.build_worn_icon(t_color, UNIFORM_LAYER, alt_worn, FALSE, NO_FEMALE_UNIFORM, variant_flag, FALSE) if(OFFSET_UNIFORM in dna.species.offset_features) @@ -164,7 +165,7 @@ There are several things that need to be remembered: update_observer_view(wear_id) //TODO: add an icon file for ID slot stuff, so it's less snowflakey - id_overlay = wear_id.build_worn_icon(state = wear_id.item_state, default_layer = ID_LAYER, default_icon_file = ((wear_id.alternate_worn_icon) ? wear_id.alternate_worn_icon : 'icons/mob/mob.dmi')) + id_overlay = wear_id.build_worn_icon(state = wear_id.item_state, default_layer = ID_LAYER, default_icon_file = 'icons/mob/mob.dmi') if(OFFSET_ID in dna.species.offset_features) id_overlay.pixel_x += dna.species.offset_features[OFFSET_ID][1] id_overlay.pixel_y += dna.species.offset_features[OFFSET_ID][2] @@ -199,7 +200,7 @@ There are several things that need to be remembered: var/t_state = gloves.item_state if(!t_state) t_state = gloves.icon_state - overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(state = t_state, default_layer = GLOVES_LAYER, default_icon_file = ((gloves.alternate_worn_icon) ? gloves.alternate_worn_icon : 'icons/mob/hands.dmi')) + overlays_standing[GLOVES_LAYER] = gloves.build_worn_icon(state = t_state, default_layer = GLOVES_LAYER, default_icon_file = 'icons/mob/hands.dmi') gloves_overlay = overlays_standing[GLOVES_LAYER] if(OFFSET_GLOVES in dna.species.offset_features) gloves_overlay.pixel_x += dna.species.offset_features[OFFSET_GLOVES][1] @@ -225,7 +226,7 @@ There are several things that need to be remembered: client.screen += glasses //Either way, add the item to the HUD update_observer_view(glasses,1) if(!(head && (head.flags_inv & HIDEEYES)) && !(wear_mask && (wear_mask.flags_inv & HIDEEYES))) - overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = ((glasses.alternate_worn_icon) ? glasses.alternate_worn_icon : 'icons/mob/eyes.dmi')) + overlays_standing[GLASSES_LAYER] = glasses.build_worn_icon(state = glasses.icon_state, default_layer = GLASSES_LAYER, default_icon_file = 'icons/mob/eyes.dmi') var/mutable_appearance/glasses_overlay = overlays_standing[GLASSES_LAYER] if(glasses_overlay) if(OFFSET_GLASSES in dna.species.offset_features) @@ -252,7 +253,7 @@ There are several things that need to be remembered: client.screen += ears //add it to the client's screen update_observer_view(ears,1) - overlays_standing[EARS_LAYER] = ears.build_worn_icon(state = ears.icon_state, default_layer = EARS_LAYER, default_icon_file = ((ears.alternate_worn_icon) ? ears.alternate_worn_icon : 'icons/mob/ears.dmi')) + overlays_standing[EARS_LAYER] = ears.build_worn_icon(state = ears.icon_state, default_layer = EARS_LAYER, default_icon_file = 'icons/mob/ears.dmi') var/mutable_appearance/ears_overlay = overlays_standing[EARS_LAYER] if(OFFSET_EARS in dna.species.offset_features) ears_overlay.pixel_x += dna.species.offset_features[OFFSET_EARS][1] @@ -270,32 +271,6 @@ There are several things that need to be remembered: if(client && hud_used) var/obj/screen/inventory/inv = hud_used.inv_slots[SLOT_SHOES] inv.update_icon() -/* - if(!shoes && bloody_feet) - var/mutable_appearance/bloody_overlay = mutable_appearance('icons/effects/blood.dmi', "bloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) - if(dna.features["taur"] != "None") - if(dna.features["taur"] in GLOB.noodle_taurs) - bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "snekbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) - if(get_num_legs() < 2) - if(has_left_leg()) - bloody_overlay.icon_state = "snekbloodyfeet_left" - else if(has_right_leg()) - bloody_overlay.icon_state = "snekbloodyfeet_right" - else if(dna.features["taur"] in GLOB.paw_taurs) - bloody_overlay = mutable_appearance('modular_citadel/icons/mob/64x32_effects.dmi', "pawbloodyfeet", -SHOES_LAYER, color = blood_DNA_to_color()) - if(get_num_legs() < 2) - if(has_left_leg()) - bloody_overlay.icon_state = "pawbloodyfeet_left" - else if(has_right_leg()) - bloody_overlay.icon_state = "pawbloodyfeet_right" - else - if(get_num_legs() < 2) - if(has_left_leg()) - bloody_overlay.icon_state = "bloodyfeet_left" - else if(has_right_leg()) - bloody_overlay.icon_state = "bloodyfeet_right" - - overlays_standing[GLOVES_LAYER] = bloody_overlay*/ if(shoes) var/obj/item/clothing/shoes/S = shoes @@ -304,15 +279,17 @@ There are several things that need to be remembered: if(hud_used.inventory_shown) //if the inventory is open client.screen += shoes //add it to client's screen update_observer_view(shoes,1) - if(S.mutantrace_variation) - if(S.adjusted == ALT_STYLE) - S.alternate_worn_icon = 'icons/mob/feet_digi.dmi' - else - S.alternate_worn_icon = null + + var/alt_icon = S.alternate_worn_icon || 'icons/mob/feet.dmi' + var/variation_flag = NONE + if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE) + alt_icon = 'icons/mob/feet_digi.dmi' + variation_flag |= STYLE_DIGITIGRADE + var/t_state = shoes.item_state if (!t_state) t_state = shoes.icon_state - overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(state = t_state, default_layer = SHOES_LAYER, default_icon_file = ((shoes.alternate_worn_icon) ? shoes.alternate_worn_icon : 'icons/mob/feet.dmi')) + overlays_standing[SHOES_LAYER] = shoes.build_worn_icon(t_state, SHOES_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE) var/mutable_appearance/shoes_overlay = overlays_standing[SHOES_LAYER] if(OFFSET_SHOES in dna.species.offset_features) shoes_overlay.pixel_x += dna.species.offset_features[OFFSET_SHOES][1] @@ -350,13 +327,18 @@ There are several things that need to be remembered: if(head) remove_overlay(HEAD_LAYER) var/obj/item/clothing/head/H = head - if(H.mutantrace_variation) - if(H.muzzle_var == ALT_STYLE) - H.alternate_worn_icon = 'icons/mob/head_muzzled.dmi' - else - H.alternate_worn_icon = null + var/alt_icon = H.alternate_worn_icon || 'icons/mob/head.dmi' + var/muzzled = FALSE + var/variation_flag = NONE + if(("mam_snouts" in dna.species.default_features) && dna.features["mam_snouts"] != "None") + muzzled = TRUE + if(!muzzled && ("snout" in dna.species.default_features) && dna.features["snout"] != "None") + muzzled = TRUE + if(muzzled && H.mutantrace_variation & STYLE_MUZZLE) + alt_icon = 'icons/mob/head_muzzled.dmi' + variation_flag |= STYLE_MUZZLE - overlays_standing[HEAD_LAYER] = H.build_worn_icon(state = H.icon_state, default_layer = HEAD_LAYER, default_icon_file = ((head.alternate_worn_icon) ? H.alternate_worn_icon : 'icons/mob/head.dmi')) + overlays_standing[HEAD_LAYER] = H.build_worn_icon(H.icon_state, HEAD_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE) var/mutable_appearance/head_overlay = overlays_standing[HEAD_LAYER] if(OFFSET_HEAD in dna.species.offset_features) @@ -382,7 +364,7 @@ There are several things that need to be remembered: if(!t_state) t_state = belt.icon_state - overlays_standing[BELT_LAYER] = belt.build_worn_icon(state = t_state, default_layer = BELT_LAYER, default_icon_file = ((belt.alternate_worn_icon) ? belt.alternate_worn_icon : 'icons/mob/belt.dmi')) + overlays_standing[BELT_LAYER] = belt.build_worn_icon(state = t_state, default_layer = BELT_LAYER, default_icon_file = 'icons/mob/belt.dmi') var/mutable_appearance/belt_overlay = overlays_standing[BELT_LAYER] if(OFFSET_BELT in dna.species.offset_features) belt_overlay.pixel_x += dna.species.offset_features[OFFSET_BELT][1] @@ -409,30 +391,41 @@ There are several things that need to be remembered: client.screen += wear_suit update_observer_view(wear_suit,1) - if(!item_level_support && !S.force_alternate_icon) - if(S.mutantrace_variation) //Just make sure we've got this checked too - if(S.taurmode == NOT_TAURIC && S.adjusted == ALT_STYLE) //are we not a taur, but we have Digitigrade legs? Run this check first, then. - S.alternate_worn_icon = 'icons/mob/suit_digi.dmi' - else - S.alternate_worn_icon = null + var/worn_icon = wear_suit.alternate_worn_icon || 'icons/mob/suit.dmi' + var/center = FALSE + var/dimension_x = 32 + var/dimension_y = 32 + var/variation_flag = NONE + var/datum/sprite_accessory/taur/T + if("taur" in dna.species.mutant_bodyparts) + T = GLOB.taur_list[dna.features["taur"]] - if(S.tauric == TRUE) //Are we a suit with tauric mode possible? - if(S.taurmode == SNEK_TAURIC) - S.alternate_worn_icon = 'icons/mob/taur_naga.dmi' - if(S.taurmode == PAW_TAURIC) - S.alternate_worn_icon = 'icons/mob/taur_canine.dmi' - if(S.taurmode == NOT_TAURIC && S.adjusted == ALT_STYLE) - S.alternate_worn_icon = 'icons/mob/suit_digi.dmi' - else if(S.taurmode == NOT_TAURIC && S.adjusted == NORMAL_STYLE) - S.alternate_worn_icon = null + if(!item_level_support && S.mutantrace_variation) + if(T?.taur_mode) + var/init_worn_icon = worn_icon + variation_flag |= S.mutantrace_variation & T.taur_mode || S.mutantrace_variation & T.alt_taur_mode + switch(variation_flag) + if(STYLE_HOOF_TAURIC) + worn_icon = 'icons/mob/taur_hooved.dmi' + if(STYLE_SNEK_TAURIC) + worn_icon = 'icons/mob/taur_naga.dmi' + if(STYLE_PAW_TAURIC) + worn_icon = 'icons/mob/taur_canine.dmi' + if(worn_icon != init_worn_icon) //worn icon sprite was changed, taur offsets will have to be applied. + center = T.center + dimension_x = T.dimension_x + dimension_y = T.dimension_y + else if((DIGITIGRADE in dna.species.species_traits) && S.mutantrace_variation & STYLE_DIGITIGRADE) //not a taur, but digitigrade legs. + worn_icon = 'icons/mob/suit_digi.dmi' + variation_flag |= STYLE_DIGITIGRADE - overlays_standing[SUIT_LAYER] = S.build_worn_icon(state = wear_suit.icon_state, default_layer = SUIT_LAYER, default_icon_file = ((wear_suit.alternate_worn_icon) ? S.alternate_worn_icon : 'icons/mob/suit.dmi')) + overlays_standing[SUIT_LAYER] = S.build_worn_icon(wear_suit.icon_state, SUIT_LAYER, worn_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE) var/mutable_appearance/suit_overlay = overlays_standing[SUIT_LAYER] if(OFFSET_SUIT in dna.species.offset_features) suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1] suit_overlay.pixel_y += dna.species.offset_features[OFFSET_SUIT][2] - if(!item_level_support && S.center) - suit_overlay = center_image(suit_overlay, S.dimension_x, S.dimension_y) + if(center) + suit_overlay = center_image(suit_overlay, dimension_x, dimension_y) overlays_standing[SUIT_LAYER] = suit_overlay update_hair() update_mutant_bodyparts() @@ -468,13 +461,18 @@ There are several things that need to be remembered: if(wear_mask) var/obj/item/clothing/mask/M = wear_mask remove_overlay(FACEMASK_LAYER) - if(M.mutantrace_variation) - if(M.muzzle_var == ALT_STYLE) - M.alternate_worn_icon = 'icons/mob/mask_muzzled.dmi' - else - M.alternate_worn_icon = null + var/alt_icon = M.alternate_worn_icon || 'icons/mob/mask.dmi' + var/muzzled = FALSE + var/variation_flag = NONE + if(("mam_snouts" in dna.species.default_features) && dna.features["mam_snouts"] != "None") + muzzled = TRUE + if(!muzzled && ("snout" in dna.species.default_features) && dna.features["snout"] != "None") + muzzled = TRUE + if(muzzled && M.mutantrace_variation & STYLE_MUZZLE) + alt_icon = 'icons/mob/mask_muzzled.dmi' + variation_flag |= STYLE_MUZZLE - overlays_standing[FACEMASK_LAYER] = M.build_worn_icon(state = wear_mask.icon_state, default_layer = FACEMASK_LAYER, default_icon_file = ((wear_mask.alternate_worn_icon) ? M.alternate_worn_icon : 'icons/mob/mask.dmi')) + overlays_standing[FACEMASK_LAYER] = M.build_worn_icon(wear_mask.icon_state, FACEMASK_LAYER, alt_icon, FALSE, NO_FEMALE_UNIFORM, variation_flag, FALSE) var/mutable_appearance/mask_overlay = overlays_standing[FACEMASK_LAYER] if(OFFSET_FACEMASK in dna.species.offset_features) @@ -496,11 +494,11 @@ There are several things that need to be remembered: apply_overlay(BACK_LAYER) /proc/wear_female_version(t_color, icon, layer, type) - var/index = t_color + var/index = "[t_color]-[icon]" var/icon/female_clothing_icon = GLOB.female_clothing_icons[index] if(!female_clothing_icon) //Create standing/laying icons if they don't exist generate_female_clothing(index,t_color,icon,type) - return mutable_appearance(GLOB.female_clothing_icons[t_color], layer = -layer) + return mutable_appearance(GLOB.female_clothing_icons[index], layer = -layer) /mob/living/carbon/human/proc/get_overlays_copy(list/unwantedLayers) var/list/out = new @@ -572,11 +570,11 @@ generate/load female uniform sprites matching all previously decided variables */ -/obj/item/proc/build_worn_icon(var/state = "", var/default_layer = 0, var/default_icon_file = null, var/isinhands = FALSE, var/femaleuniform = NO_FEMALE_UNIFORM) +/obj/item/proc/build_worn_icon(state = "", default_layer = 0, default_icon_file = null, isinhands = FALSE, femaleuniform = NO_FEMALE_UNIFORM, style_flags = NONE, use_alt_icon = TRUE) //Find a valid icon file from variables+arguments var/file2use - if(!isinhands && alternate_worn_icon) + if(!isinhands && alternate_worn_icon && use_alt_icon) file2use = alternate_worn_icon if(!file2use) file2use = default_icon_file @@ -596,7 +594,7 @@ generate/load female uniform sprites matching all previously decided variables //Get the overlays for this item when it's being worn //eg: ammo counters, primed grenade flashes, etc. - var/list/worn_overlays = worn_overlays(isinhands, file2use) + var/list/worn_overlays = worn_overlays(isinhands, file2use, style_flags) if(worn_overlays && worn_overlays.len) standing.overlays.Add(worn_overlays) @@ -675,6 +673,8 @@ generate/load female uniform sprites matching all previously decided variables . += "-robotic" if(BP.use_digitigrade) . += "-digitigrade[BP.use_digitigrade]" + if(BP.digitigrade_type) + . += "-[BP.digitigrade_type]" if(BP.dmg_overlay_type) . += "-[BP.dmg_overlay_type]" if(BP.body_markings) diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 0061c7ed70..9e9d440574 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -80,7 +80,7 @@ //Second link in a breath chain, calls check_breath() /mob/living/carbon/proc/breathe() var/obj/item/organ/lungs = getorganslot(ORGAN_SLOT_LUNGS) - if(reagents.has_reagent("lexorin")) + if(reagents.has_reagent(/datum/reagent/toxin/lexorin)) return if(istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell)) return @@ -156,7 +156,7 @@ //CRIT if(!breath || (breath.total_moles() == 0) || !lungs) - if(reagents.has_reagent("epinephrine") && lungs) + if(reagents.has_reagent(/datum/reagent/medicine/epinephrine) && lungs) return adjustOxyLoss(1) @@ -357,7 +357,7 @@ return // No decay if formaldehyde in corpse or when the corpse is charred - if(reagents.has_reagent("formaldehyde", 15) || HAS_TRAIT(src, TRAIT_HUSK)) + if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 15) || HAS_TRAIT(src, TRAIT_HUSK)) return // Also no decay if corpse chilled or not organic/undead diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index fe041dd0a6..14c3a76307 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -66,7 +66,7 @@ . = ..() remove_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE) var/amount - if(reagents.has_reagent("morphine")) + if(reagents.has_reagent(/datum/reagent/medicine/morphine)) amount = -1 if(amount) add_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount) diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 0155f2575d..ca1a946e10 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -200,7 +200,7 @@ //Overlays for the worn overlay so you can overlay while you overlay //eg: ammo counters, primed grenade flashing, etc. //"icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file -/obj/item/proc/worn_overlays(isinhands = FALSE, icon_file) +/obj/item/proc/worn_overlays(isinhands = FALSE, icon_file, style_flags = NONE) . = list() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 78542ab052..c2a307950c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1225,7 +1225,7 @@ clamp_unconscious_to = 0, clamp_immobility_to = 0, reset_misc = TRUE, - healing_chems = list("inaprovaline" = 3, "synaptizine" = 10, "regen_jelly" = 10, "stimulants" = 10), + healing_chems = list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/stimulants = 10), message = "You feel a surge of energy!", stamina_buffer_boost = 0, //restores stamina buffer rather than just health scale_stamina_loss_recovery, //defaults to null. if this is set, restores loss * this stamina. make sure it's a fraction. @@ -1252,5 +1252,5 @@ updatehealth() update_stamina() update_canmove() - for(var/chem in healing_chems) - reagents.add_reagent(chem, healing_chems[chem]) + if(healing_chems) + reagents.add_reagent_list(healing_chems) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 3c5c5e3518..e398dad65b 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -464,7 +464,7 @@ to_chat(src, "You resist Nar'Sie's influence... but not all of it. Run!") adjustBruteLoss(35) if(src && reagents) - reagents.add_reagent("heparin", 5) + reagents.add_reagent(/datum/reagent/toxin/heparin, 5) return FALSE if(GLOB.cult_narsie && GLOB.cult_narsie.souls_needed[src]) GLOB.cult_narsie.souls_needed -= src diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 5f7d3ca243..86e3ccad24 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -114,6 +114,10 @@ var/cansprint = 1 + var/orebox = null + +/mob/living/silicon/robot + /mob/living/silicon/robot/get_cell() return cell diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index ece7fe9ecb..48e6f8c288 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -121,6 +121,10 @@ else if(istype(S, /obj/item/stack/marker_beacon)) S.cost = 1 S.source = get_or_create_estorage(/datum/robot_energy_storage/beacon) + + else if(istype(S, /obj/item/stack/packageWrap)) + S.cost = 1 + S.source = get_or_create_estorage(/datum/robot_energy_storage/wrapping_paper) if(S && S.source) S.materials = list() @@ -139,6 +143,9 @@ //Adds flavoursome dogborg items to dogborg variants without mechanical benefits /obj/item/robot_module/proc/dogborg_equip() + has_snowflake_deadsprite = TRUE + cyborg_pixel_offset = -16 + hat_offset = INFINITY var/obj/item/I = new /obj/item/analyzer/nose/flavour(src) basic_modules += I I = new /obj/item/soap/tongue/flavour(src) @@ -362,30 +369,21 @@ sleeper_overlay = "msleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 - hat_offset = INFINITY if("Medihound Dark") cyborg_base_icon = "medihounddark" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' sleeper_overlay = "mdsleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 - hat_offset = INFINITY if("Vale") cyborg_base_icon = "valemed" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' sleeper_overlay = "valemedsleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 - hat_offset = INFINITY if("Alina") cyborg_base_icon = "alina-med" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' @@ -393,10 +391,7 @@ sleeper_overlay = "alinasleeper" moduleselect_icon = "medihound" moduleselect_alternate_icon = 'modular_citadel/icons/ui/screen_cyborg.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 - hat_offset = INFINITY return ..() /obj/item/robot_module/engineering @@ -477,29 +472,20 @@ cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi' if("Pup Dozer") cyborg_base_icon = "pupdozer" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "dozersleeper" + dogborg = TRUE if("Vale") cyborg_base_icon = "valeeng" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "valeengsleeper" + dogborg = TRUE if("Alina") cyborg_base_icon = "alina-eng" special_light_key = "alina" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "alinasleeper" + dogborg = TRUE return ..() /obj/item/robot_module/security @@ -558,36 +544,24 @@ if("K9") cyborg_base_icon = "k9" sleeper_overlay = "ksleeper" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 if("Alina") cyborg_base_icon = "alina-sec" special_light_key = "alina" sleeper_overlay = "alinasleeper" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 if("K9 Dark") cyborg_base_icon = "k9dark" sleeper_overlay = "k9darksleeper" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 if("Vale") cyborg_base_icon = "valesec" sleeper_overlay = "valesecsleeper" - hat_offset = INFINITY cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE dogborg = TRUE - cyborg_pixel_offset = -16 return ..() /obj/item/robot_module/security/Initialize() @@ -673,11 +647,11 @@ /obj/item/reagent_containers/spray/cyborg_drying name = "drying agent spray" color = "#A000A0" - list_reagents = list("drying_agent" = 250) + list_reagents = list(/datum/reagent/drying_agent = 250) /obj/item/reagent_containers/spray/cyborg_lube name = "lube spray" - list_reagents = list("lube" = 250) + list_reagents = list(/datum/reagent/lube = 250) /obj/item/robot_module/clown name = "Clown" @@ -751,17 +725,17 @@ var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules if(O) - O.reagents.add_reagent("enzyme", 2 * coeff) + O.reagents.add_reagent(/datum/reagent/consumable/enzyme, 2 * coeff) if(LR) for(var/i in 1 to coeff) LR.Charge(R) var/obj/item/reagent_containers/spray/cyborg_drying/CD = locate(/obj/item/reagent_containers/spray/cyborg_drying) in basic_modules if(CD) - CD.reagents.add_reagent("drying_agent", 5 * coeff) + CD.reagents.add_reagent(/datum/reagent/drying_agent, 5 * coeff) var/obj/item/reagent_containers/spray/cyborg_lube/CL = locate(/obj/item/reagent_containers/spray/cyborg_lube) in emag_modules if(CL) - CL.reagents.add_reagent("lube", 2 * coeff) + CL.reagents.add_reagent(/datum/reagent/lube, 2 * coeff) /obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module) var/mob/living/silicon/robot/R = loc @@ -795,24 +769,18 @@ if("(Service) DarkK9") cyborg_base_icon = "k50" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "ksleeper" + dogborg = TRUE if("(Service) Vale") cyborg_base_icon = "valeserv" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "valeservsleeper" + dogborg = TRUE if("(Service) ValeDark") cyborg_base_icon = "valeservdark" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - dogborg = TRUE - cyborg_pixel_offset = -16 sleeper_overlay = "valeservsleeper" + dogborg = TRUE if("(Janitor) Default") cyborg_base_icon = "janitor" if("(Janitor) Marina") @@ -830,10 +798,8 @@ if("(Janitor) Scrubpuppy") cyborg_base_icon = "scrubpup" cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' - has_snowflake_deadsprite = TRUE - cyborg_pixel_offset = -16 - dogborg = TRUE sleeper_overlay = "jsleeper" + dogborg = TRUE return ..() /obj/item/robot_module/miner @@ -845,13 +811,19 @@ /obj/item/borg/sight/meson, /obj/item/storage/bag/ore/cyborg, /obj/item/pickaxe/drill/cyborg, - /obj/item/shovel, + /obj/item/twohanded/kinetic_crusher/cyborg, /obj/item/weldingtool/mini, /obj/item/storage/bag/sheetsnatcher/borg, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator/cyborg, + /obj/item/gun/energy/plasmacutter/cyborg, /obj/item/gps/cyborg, - /obj/item/stack/marker_beacon) + /obj/item/weapon/gripper/mining, + /obj/item/cyborg_clamp, + /obj/item/card/id/miningborg, + /obj/item/stack/marker_beacon, + /obj/item/destTagger, + /obj/item/stack/packageWrap) emag_modules = list(/obj/item/borg/stun) ratvar_modules = list( /obj/item/clockwork/slab/cyborg/miner, @@ -863,7 +835,7 @@ /obj/item/robot_module/miner/be_transformed_to(obj/item/robot_module/old_module) var/mob/living/silicon/robot/R = loc - var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Lavaland", "Heavy", "Sleek", "Marina", "Can", "Spider", "Asteroid", "Droid") + var/borg_icon = input(R, "Select an icon!", "Robot Icon", null) as null|anything in list("Lavaland", "Heavy", "Sleek", "Marina", "Can", "Spider", "Asteroid", "Droid", "Blade") if(!borg_icon) return FALSE switch(borg_icon) @@ -891,6 +863,11 @@ if("Heavy") cyborg_base_icon = "heavymin" cyborg_icon_override = 'modular_citadel/icons/mob/robots.dmi' + if("Blade") + cyborg_base_icon = "blade" + cyborg_icon_override = 'modular_citadel/icons/mob/widerobot.dmi' + sleeper_overlay = "bladesleeper" + dogborg = TRUE return ..() /obj/item/robot_module/syndicate @@ -1036,3 +1013,8 @@ max_energy = 30 recharge_rate = 1 name = "Marker Beacon Storage" + +/datum/robot_energy_storage/wrapping_paper + max_energy = 30 + recharge_rate = 1 + name = "Wrapping Paper Storage" diff --git a/code/modules/mob/living/simple_animal/astral.dm b/code/modules/mob/living/simple_animal/astral.dm index 3d0c335989..472cbd7414 100644 --- a/code/modules/mob/living/simple_animal/astral.dm +++ b/code/modules/mob/living/simple_animal/astral.dm @@ -44,7 +44,7 @@ if(isliving(A)) if(ishuman(A)) var/mob/living/carbon/human/H = A - if(H.reagents.has_reagent("astral") && !H.mind) + if(H.reagents.has_reagent(/datum/reagent/fermi/astral) && !H.mind) var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in H.reagents.reagent_list if(As.originalmind == src.mind && As.current_cycle < 10 && H.stat != DEAD) //So you can return to your body. to_chat(src, "The intensity of the astrogen in your body is too much allow you to return to yourself yet!") diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index fed770d0b0..13e9299b1d 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -43,17 +43,17 @@ var/declare_cooldown = 0 //Prevents spam of critical patient alerts. var/stationary_mode = 0 //If enabled, the Medibot will not move automatically. //Setting which reagents to use to treat what by default. By id. - var/treatment_brute_avoid = "tricordrazine" - var/treatment_brute = "bicaridine" + var/treatment_brute_avoid = /datum/reagent/medicine/tricordrazine + var/treatment_brute = /datum/reagent/medicine/bicaridine var/treatment_oxy_avoid = null - var/treatment_oxy = "dexalin" - var/treatment_fire_avoid = "tricordrazine" - var/treatment_fire = "kelotane" - var/treatment_tox_avoid = "tricordrazine" - var/treatment_tox = "charcoal" - var/treatment_tox_toxlover = "toxin" + var/treatment_oxy = /datum/reagent/medicine/dexalin + var/treatment_fire_avoid = /datum/reagent/medicine/tricordrazine + var/treatment_fire = /datum/reagent/medicine/kelotane + var/treatment_tox_avoid = /datum/reagent/medicine/tricordrazine + var/treatment_tox = /datum/reagent/medicine/charcoal + var/treatment_tox_toxlover = /datum/reagent/toxin var/treatment_virus_avoid = null - var/treatment_virus = "spaceacillin" + var/treatment_virus = /datum/reagent/medicine/spaceacillin var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible. var/shut_up = 0 //self explanatory :) @@ -61,9 +61,9 @@ name = "\improper Mysterious Medibot" desc = "International Medibot of mystery." skin = "bezerk" - treatment_brute = "tricordrazine" - treatment_fire = "tricordrazine" - treatment_tox = "tricordrazine" + treatment_brute = /datum/reagent/medicine/tricordrazine + treatment_fire = /datum/reagent/medicine/tricordrazine + treatment_tox = /datum/reagent/medicine/tricordrazine /mob/living/simple_animal/bot/medbot/derelict name = "\improper Old Medibot" @@ -71,13 +71,13 @@ skin = "bezerk" heal_threshold = 0 declare_crit = 0 - treatment_oxy = "pancuronium" + treatment_oxy = /datum/reagent/toxin/pancuronium treatment_brute_avoid = null - treatment_brute = "pancuronium" + treatment_brute = /datum/reagent/toxin/pancuronium treatment_fire_avoid = null - treatment_fire = "sodium_thiopental" + treatment_fire = /datum/reagent/toxin/sodium_thiopental treatment_tox_avoid = null - treatment_tox = "sodium_thiopental" + treatment_tox = /datum/reagent/toxin/sodium_thiopental /mob/living/simple_animal/bot/medbot/update_icon() cut_overlays() @@ -369,8 +369,9 @@ //If they're injured, we're using a beaker, and don't have one of our WONDERCHEMS. if((reagent_glass) && (use_beaker) && ((C.getBruteLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getOxyLoss() >= (heal_threshold + 15)))) - for(var/datum/reagent/R in reagent_glass.reagents.reagent_list) - if(!C.reagents.has_reagent(R.id)) + for(var/A in reagent_glass.reagents.reagent_list) + var/datum/reagent/R = A + if(!C.reagents.has_reagent(R.type)) return TRUE //They're injured enough for it! @@ -477,8 +478,9 @@ //If the patient is injured but doesn't have our special reagent in them then we should give it to them first if(reagent_id && use_beaker && reagent_glass && reagent_glass.reagents.total_volume) - for(var/datum/reagent/R in reagent_glass.reagents.reagent_list) - if(!C.reagents.has_reagent(R.id)) + for(var/A in reagent_glass.reagents.reagent_list) + var/datum/reagent/R = A + if(!C.reagents.has_reagent(R.type)) reagent_id = "internal_beaker" break diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 426de81da0..43963b4eef 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -151,7 +151,8 @@ return /mob/living/simple_animal/bot/mulebot/bullet_act(obj/item/projectile/Proj) - if(..()) + . = ..() + if(. && !QDELETED(src)) //Got hit and not blown up yet. if(prob(50) && !isnull(load)) unload(0) if(prob(25)) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index ee770fc2ca..bfe7b2cde0 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -54,7 +54,7 @@ var/atom/Tsec = drop_location() new /obj/item/stock_parts/cell/potato(Tsec) var/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/S = new(Tsec) - S.reagents.add_reagent("whiskey", 15) + S.reagents.add_reagent(/datum/reagent/consumable/ethanol/whiskey, 15) S.on_reagent_change(ADD_REAGENT) ..() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index bda309f7c7..dacf8c4833 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -38,6 +38,10 @@ . = ..() verbs += /mob/living/proc/lay_down +/mob/living/simple_animal/pet/cat/ComponentInitialize() + . = ..() + AddElement(/datum/element/wuv, "purrs!", EMOTE_AUDIBLE, /datum/mood_event/pet_animal, "hisses!", EMOTE_AUDIBLE) + /mob/living/simple_animal/pet/cat/update_canmove() ..() if(client && stat != DEAD) @@ -229,24 +233,6 @@ stop_automated_movement = 1 walk_to(src,movement_target,0,3) -/mob/living/simple_animal/pet/cat/attack_hand(mob/living/carbon/human/M) - . = ..() - switch(M.a_intent) - if(INTENT_HELP) - wuv(1, M) - if(INTENT_HARM) - wuv(-1, M) - -/mob/living/simple_animal/pet/cat/proc/wuv(change, mob/M) - if(change) - if(change > 0) - if(M && stat != DEAD) - new /obj/effect/temp_visual/heart(loc) - emote("me", EMOTE_VISIBLE, "purrs!") - else - if(M && stat != DEAD) - emote("me", EMOTE_VISIBLE, "hisses!") - /mob/living/simple_animal/pet/cat/cak //I told you I'd do it, Remie name = "Keeki" desc = "It's a cat made out of cake." @@ -294,8 +280,8 @@ if(.) //the attack was blocked return if(L.a_intent == INTENT_HARM && L.reagents && !stat) - L.reagents.add_reagent("nutriment", 0.4) - L.reagents.add_reagent("vitamin", 0.4) + L.reagents.add_reagent(/datum/reagent/consumable/nutriment, 0.4) + L.reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 0.4) //Cat made /mob/living/simple_animal/pet/cat/custom_cat diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 986e5c9b4d..2371cfd7f1 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -16,6 +16,11 @@ do_footstep = TRUE can_be_held = TRUE + +/mob/living/simple_animal/pet/dog/ComponentInitialize() + . = ..() + AddElement(/datum/element/wuv, "yaps_happily!", EMOTE_AUDIBLE, /datum/mood_event/pet_animal, "growls!", EMOTE_AUDIBLE) + //Corgis and pugs are now under one dog subtype /mob/living/simple_animal/pet/dog/corgi @@ -268,7 +273,7 @@ return if(!item_to_add) user.visible_message("[user] pets [src].","You rest your hand on [src]'s head for a moment.") - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi) + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, src, /datum/mood_event/pet_animal, src) return if(user && !user.temporarilyRemoveItemFromInventory(item_to_add)) @@ -639,22 +644,3 @@ for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2)) setDir(i) sleep(1) - -/mob/living/simple_animal/pet/dog/attack_hand(mob/living/carbon/human/M) - . = ..() - switch(M.a_intent) - if(INTENT_HELP) - wuv(1,M) - if(INTENT_HARM) - wuv(-1,M) - -/mob/living/simple_animal/pet/dog/proc/wuv(change, mob/M) - if(change) - if(change > 0) - if(M && stat != DEAD) // Added check to see if this mob (the dog) is dead to fix issue 2454 - new /obj/effect/temp_visual/heart(loc) - emote("me", EMOTE_VISIBLE, "yaps happily!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "pet_corgi", /datum/mood_event/pet_corgi) - else - if(M && stat != DEAD) // Same check here, even though emote checks it as well (poor form to check it only in the help case) - emote("me", EMOTE_VISIBLE, "growls!") diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 2679c68b52..6754f94b01 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -455,12 +455,12 @@ /obj/item/udder/Initialize() create_reagents(50) - reagents.add_reagent("milk", 20) + reagents.add_reagent(/datum/reagent/consumable/milk, 20) . = ..() /obj/item/udder/proc/generateMilk() if(prob(5)) - reagents.add_reagent("milk", rand(5, 10)) + reagents.add_reagent(/datum/reagent/consumable/milk, rand(5, 10)) /obj/item/udder/proc/milkAnimal(obj/O, mob/user) var/obj/item/reagent_containers/glass/G = O diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index fec75e4a36..69d9a0eef3 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -117,9 +117,9 @@ icon_state = "mouse_gray_dead" bitesize = 3 eatverb = "devour" - list_reagents = list("nutriment" = 3, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GROSS | MEAT | RAW - grind_results = list("blood" = 20, "liquidgibs" = 5) + grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) /obj/item/reagent_containers/food/snacks/deadmouse/on_grind() reagents.clear_reagents() diff --git a/code/modules/mob/living/simple_animal/friendly/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm index 2f37857902..95838c9acb 100644 --- a/code/modules/mob/living/simple_animal/friendly/snake.dm +++ b/code/modules/mob/living/simple_animal/friendly/snake.dm @@ -1,6 +1,6 @@ /mob/living/simple_animal/hostile/retaliate/poison var/poison_per_bite = 0 - var/poison_type = "toxin" + var/poison_type = /datum/reagent/toxin /mob/living/simple_animal/hostile/retaliate/poison/AttackingTarget() . = ..() diff --git a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm index 81dc9d3e24..f3ce343bfd 100644 --- a/code/modules/mob/living/simple_animal/hostile/banana_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/banana_spider.dm @@ -96,10 +96,10 @@ icon_state = "bananaspider" bitesize = 3 eatverb = "devours" - list_reagents = list("nutriment" = 3, "vitamin" = 2) + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) foodtype = GROSS | MEAT | RAW - grind_results = list("blood" = 20, "liquidgibs" = 5) - juice_results = list("banana" = 0) + grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) + juice_results = list(/datum/reagent/consumable/banana = 0) /obj/item/reagent_containers/food/snacks/deadbanana_spider/Initialize() diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 89c4f70f69..bb1f1284b5 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -140,7 +140,7 @@ var/mob/living/L = target if(L.reagents) beegent.reaction_mob(L, INJECT) - L.reagents.add_reagent(beegent.id, rand(1,5)) + L.reagents.add_reagent(beegent.type, rand(1,5)) /mob/living/simple_animal/hostile/poison/bees/proc/assign_reagent(datum/reagent/R) @@ -205,7 +205,7 @@ /mob/living/simple_animal/hostile/poison/bees/toxin/Initialize() . = ..() var/datum/reagent/R = pick(typesof(/datum/reagent/toxin)) - assign_reagent(GLOB.chemical_reagents_list[initial(R.id)]) + assign_reagent(GLOB.chemical_reagents_list[R]) /mob/living/simple_animal/hostile/poison/bees/queen name = "queen bee" @@ -225,7 +225,7 @@ if(. && beegent && isliving(target)) var/mob/living/L = target beegent.reaction_mob(L, TOUCH) - L.reagents.add_reagent(beegent.id, rand(1,5)) + L.reagents.add_reagent(beegent.type, rand(1,5)) //PEASENT BEES @@ -236,7 +236,7 @@ /mob/living/simple_animal/hostile/poison/bees/proc/reagent_incompatible(mob/living/simple_animal/hostile/poison/bees/B) if(!B) return FALSE - if(B.beegent && beegent && B.beegent.id != beegent.id || B.beegent && !beegent || !B.beegent && beegent) + if(B.beegent && beegent && B.beegent.type != beegent.type || B.beegent && !beegent || !B.beegent && beegent) return TRUE return FALSE @@ -253,9 +253,10 @@ /obj/item/queen_bee/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/reagent_containers/syringe)) var/obj/item/reagent_containers/syringe/S = I - if(S.reagents.has_reagent("royal_bee_jelly")) //checked twice, because I really don't want royal bee jelly to be duped - if(S.reagents.has_reagent("royal_bee_jelly",5)) - S.reagents.remove_reagent("royal_bee_jelly", 5) + var/jelly_amount = S.reagents.get_reagent_amount(/datum/reagent/royal_bee_jelly) + if(jelly_amount) + if(jelly_amount >= 5) + S.reagents.remove_reagent(/datum/reagent/royal_bee_jelly, 5) var/obj/item/queen_bee/qb = new(user.drop_location()) qb.queen = new(qb) if(queen && queen.beegent) @@ -266,8 +267,8 @@ to_chat(user, "You don't have enough royal bee jelly to split a bee in two!") else var/datum/reagent/R = GLOB.chemical_reagents_list[S.reagents.get_master_reagent_id()] - if(R && S.reagents.has_reagent(R.id, 5)) - S.reagents.remove_reagent(R.id,5) + if(R && S.reagents.has_reagent(R.type, 5)) + S.reagents.remove_reagent(R.type,5) queen.assign_reagent(R) user.visible_message("[user] injects [src]'s genome with [R.name], mutating it's DNA!","You inject [src]'s genome with [R.name], mutating it's DNA!") name = queen.name diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index 69209f7266..2e7c0ff455 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -6,7 +6,7 @@ /mob/living/simple_animal/hostile/poison var/poison_per_bite = 5 - var/poison_type = "toxin" + var/poison_type = /datum/reagent/toxin /mob/living/simple_animal/hostile/poison/AttackingTarget() . = ..() @@ -158,7 +158,7 @@ melee_damage_upper = 1 poison_per_bite = 12 move_to_delay = 4 - poison_type = "venom" //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe? + poison_type = /datum/reagent/toxin/venom //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe? speed = 1 gold_core_spawnable = NO_SPAWN @@ -217,7 +217,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - poison_type = "frostoil" + poison_type = /datum/reagent/consumable/frostoil color = rgb(114,228,250) gold_core_spawnable = NO_SPAWN @@ -226,7 +226,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - poison_type = "frostoil" + poison_type = /datum/reagent/consumable/frostoil color = rgb(114,228,250) gold_core_spawnable = NO_SPAWN @@ -235,7 +235,7 @@ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) minbodytemp = 0 maxbodytemp = 1500 - poison_type = "frostoil" + poison_type = /datum/reagent/consumable/frostoil color = rgb(114,228,250) gold_core_spawnable = NO_SPAWN diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm index d1e8f1f49e..34903a477b 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm @@ -42,7 +42,7 @@ ..() if(iscarbon(target)) var/mob/living/carbon/C = target - C.reagents.add_reagent("leaper_venom", 5) + C.reagents.add_reagent(/datum/reagent/toxin/leaper_venom, 5) return if(isanimal(target)) var/mob/living/simple_animal/L = target @@ -96,7 +96,7 @@ L.Knockdown(50) if(iscarbon(L)) var/mob/living/carbon/C = L - C.reagents.add_reagent("leaper_venom", 5) + C.reagents.add_reagent(/datum/reagent/toxin/leaper_venom, 5) if(isanimal(L)) var/mob/living/simple_animal/A = L A.adjustHealth(25) @@ -105,7 +105,6 @@ /datum/reagent/toxin/leaper_venom name = "Leaper venom" - id = "leaper_venom" description = "A toxin spat out by leapers that, while harmless in small doses, quickly creates a toxic reaction if too much is in the body." color = "#801E28" // rgb: 128, 30, 40 toxpwr = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 0a8320788e..199def430e 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -240,7 +240,8 @@ obj/structure/elite_tumor/proc/return_elite() INVOKE_ASYNC(src, .proc/fighters_check) //Checks to see if our fighters died. INVOKE_ASYNC(src, .proc/arena_trap) //Gets another arena trap queued up for when this one runs out. INVOKE_ASYNC(src, .proc/border_check) //Checks to see if our fighters got out of the arena somehow. - addtimer(CALLBACK(src, .proc/arena_checks), 50) + if(!QDELETED(src)) + addtimer(CALLBACK(src, .proc/arena_checks), 50) /obj/structure/elite_tumor/proc/fighters_check() if(activator != null && activator.stat == DEAD || activity == TUMOR_ACTIVE && QDELETED(activator)) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index 910e9c3c4a..9e9fbaeab8 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -131,7 +131,7 @@ /obj/item/udder/gutlunch/generateMilk() if(prob(60)) - reagents.add_reagent("cream", rand(2, 5)) + reagents.add_reagent(/datum/reagent/consumable/cream, rand(2, 5)) if(prob(45)) - reagents.add_reagent("salglu_solution", rand(2,5)) + reagents.add_reagent(/datum/reagent/medicine/salglu_solution, rand(2,5)) diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index a5e3cd8120..8301489e8c 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -187,6 +187,6 @@ var/counter for(counter=0, counter<=powerlevel, counter++) var/obj/item/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/reagent_containers/food/snacks/hugemushroomslice(src.loc) - S.reagents.add_reagent("mushroomhallucinogen", powerlevel) - S.reagents.add_reagent("omnizine", powerlevel) - S.reagents.add_reagent("synaptizine", powerlevel) + S.reagents.add_reagent(/datum/reagent/drug/mushroomhallucinogen, powerlevel) + S.reagents.add_reagent(/datum/reagent/medicine/omnizine, powerlevel) + S.reagents.add_reagent(/datum/reagent/medicine/synaptizine, powerlevel) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 439ea5b2bf..107a6eed38 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -141,9 +141,9 @@ . = ..() remove_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE) var/amount = 0 - if(reagents.has_reagent("morphine")) // morphine slows slimes down + if(reagents.has_reagent(/datum/reagent/medicine/morphine)) // morphine slows slimes down amount = 2 - if(reagents.has_reagent("frostoil")) // Frostoil also makes them move VEEERRYYYYY slow + if(reagents.has_reagent(/datum/reagent/consumable/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow amount = 5 if(amount) add_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index c7365210ab..695084a794 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -29,6 +29,7 @@ var/obj/machinery/machine = null var/next_move = null + var/create_area_cooldown var/notransform = null //Carbon var/eye_blind = 0 //Carbon var/eye_blurry = 0 //Carbon diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm index 816ae58749..89f5d20e70 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm @@ -4,7 +4,7 @@ if(!ninjacost(0,N_ADRENALINE)) var/mob/living/carbon/human/H = affecting - H.do_adrenaline(150, TRUE, 0, 0, TRUE, list("inaprovaline" = 3, "synaptizine" = 10, "omnizine" = 10), "You feel a sudden surge of energy!") + H.do_adrenaline(150, TRUE, 0, 0, TRUE, list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/omnizine = 10), "You feel a sudden surge of energy!") H.say(pick("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!","HURT ME MOOORRREEE!","IMPRESSIVE!"), forced = "ninjaboost") @@ -15,5 +15,5 @@ /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost_after() var/mob/living/carbon/human/H = affecting - H.reagents.add_reagent("radium", a_transfer) + H.reagents.add_reagent(/datum/reagent/radium, a_transfer) to_chat(H, "You are beginning to feel the after-effect of the injection.") diff --git a/code/modules/ninja/suit/suit_attackby.dm b/code/modules/ninja/suit/suit_attackby.dm index 0496a2f1c3..ed920a57d1 100644 --- a/code/modules/ninja/suit/suit_attackby.dm +++ b/code/modules/ninja/suit/suit_attackby.dm @@ -5,13 +5,13 @@ return ..() if(istype(I, /obj/item/reagent_containers/glass))//If it's a glass beaker. - if(I.reagents.has_reagent("radium", a_transfer) && a_boost < a_maxamount) - I.reagents.remove_reagent("radium", a_transfer) + if(I.reagents.has_reagent(/datum/reagent/radium, a_transfer) && a_boost < a_maxamount) + I.reagents.remove_reagent(/datum/reagent/radium, a_transfer) a_boost++; to_chat(U, "There are now [a_boost] adrenaline boosts remaining.") return - if(I.reagents.has_reagent("smoke_powder", a_transfer) && s_bombs < s_maxamount) - I.reagents.remove_reagent("smoke_powder", a_transfer) + if(I.reagents.has_reagent(/datum/reagent/smoke_powder, a_transfer) && s_bombs < s_maxamount) + I.reagents.remove_reagent(/datum/reagent/smoke_powder, a_transfer) s_bombs++; to_chat(U, "There are now [s_bombs] smoke bombs remaining.") return diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 7567fc1a52..8172a57399 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -23,7 +23,7 @@ throw_range = 7 materials = list(MAT_METAL=10) pressure_resistance = 2 - grind_results = list("iron" = 2, "iodine" = 1) + grind_results = list(/datum/reagent/iron = 2, /datum/reagent/iodine = 1) var/colour = "black" //what colour the ink is! var/degrees = 0 var/font = PEN_FONT @@ -165,9 +165,9 @@ /obj/item/pen/sleepy/Initialize() . = ..() create_reagents(45, OPENCONTAINER) - reagents.add_reagent("chloralhydrate", 20) - reagents.add_reagent("mutetoxin", 15) - reagents.add_reagent("tirizene", 10) + reagents.add_reagent(/datum/reagent/toxin/chloralhydrate, 20) + reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 15) + reagents.add_reagent(/datum/reagent/toxin/staminatoxin, 10) /* * (Alan) Edaggers diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 4e74ccc44b..e8d318697c 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -335,6 +335,6 @@ name = "toner cartridge" icon = 'icons/obj/device.dmi' icon_state = "tonercartridge" - grind_results = list("iodine" = 40, "iron" = 10) + grind_results = list(/datum/reagent/iodine = 40, /datum/reagent/iron = 10) var/charges = 5 var/max_charges = 5 diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index 5682c333c7..49f315d998 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -9,7 +9,7 @@ w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE max_integrity = 50 - grind_results = list("iodine" = 4) + grind_results = list(/datum/reagent/iodine = 4) var/datum/picture/picture var/scribble //Scribble on the back. diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index cc03976f79..fde2ce4178 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -490,7 +490,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai attack_verb = list("whipped", "lashed", "disciplined", "flogged") singular_name = "cable piece" full_w_class = WEIGHT_CLASS_SMALL - grind_results = list("copper" = 2) //2 copper per cable in the coil + grind_results = list(/datum/reagent/copper = 2) //2 copper per cable in the coil usesound = 'sound/items/deconstruct.ogg' /obj/item/stack/cable_coil/cyborg diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index ded99d6fa6..5f9e7038f3 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -14,7 +14,7 @@ var/charge = 0 // note %age conveted to actual charge in New var/maxcharge = 1000 materials = list(MAT_METAL=700, MAT_GLASS=50) - grind_results = list("lithium" = 15, "iron" = 5, "silicon" = 5) + grind_results = list(/datum/reagent/lithium = 15, /datum/reagent/iron = 5, /datum/reagent/silicon = 5) var/rigged = FALSE // true if rigged to explode var/chargerate = 100 //how much power is given every tick in a recharger var/self_recharge = 0 //does it self recharge, over time, or not? @@ -106,7 +106,7 @@ /obj/item/stock_parts/cell/on_reagent_change(changetype) ..() - rigged = reagents?.has_reagent("plasma", 5) ? TRUE : FALSE //has_reagent returns the reagent datum + rigged = reagents?.has_reagent(/datum/reagent/toxin/plasma, 5) ? TRUE : FALSE //has_reagent returns the reagent datum /obj/item/stock_parts/cell/proc/explode() var/turf/T = get_turf(src.loc) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index cdbaa29a3b..e50b11ea35 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -719,7 +719,7 @@ var/base_state var/switchcount = 0 // number of times switched materials = list(MAT_GLASS=100) - grind_results = list("silicon" = 5, "nitrogen" = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs + grind_results = list(/datum/reagent/silicon = 5, /datum/reagent/nitrogen = 10) //Nitrogen is used as a cheaper alternative to argon in incandescent lighbulbs var/rigged = 0 // true if rigged to explode var/brightness = 2 //how much light it gives off @@ -789,7 +789,7 @@ to_chat(user, "You inject the solution into \the [src].") - if(S.reagents.has_reagent("plasma", 5)) + if(S.reagents.has_reagent(/datum/reagent/toxin/plasma, 5)) rigged = 1 diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 054b91f273..91a2bc515f 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -45,8 +45,8 @@ eject() else var/gasdrained = min(powerproduction_drain*drainratio,loaded_tank.air_contents.gases[/datum/gas/plasma]) - loaded_tank.air_contents.gases[/datum/gas/plasma] -= gasdrained - loaded_tank.air_contents.gases[/datum/gas/tritium] += gasdrained + loaded_tank.air_contents.gases[/datum/gas/plasma] -= 2.7 * gasdrained + loaded_tank.air_contents.gases[/datum/gas/tritium] += 2.7 * gasdrained GAS_GARBAGE_COLLECT(loaded_tank.air_contents.gases) var/power_produced = RAD_COLLECTOR_OUTPUT diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index ab463163f0..a8d3934208 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -134,8 +134,8 @@ /obj/item/ammo_casing/shotgun/dart/bioterror/Initialize() . = ..() - reagents.add_reagent("neurotoxin", 6) - reagents.add_reagent("spore", 6) - reagents.add_reagent("mutetoxin", 6) //;HELP OPS IN MAINT - reagents.add_reagent("coniine", 6) - reagents.add_reagent("sodium_thiopental", 6) + reagents.add_reagent(/datum/reagent/toxin/fentanyl, 6) + reagents.add_reagent(/datum/reagent/toxin/spore, 6) + reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 6) //;HELP OPS IN MAINT + reagents.add_reagent(/datum/reagent/toxin/coniine, 6) + reagents.add_reagent(/datum/reagent/toxin/sodium_thiopental, 6) diff --git a/code/modules/projectiles/ammunition/energy/plasma.dm b/code/modules/projectiles/ammunition/energy/plasma.dm index d02abf9c88..3a71254508 100644 --- a/code/modules/projectiles/ammunition/energy/plasma.dm +++ b/code/modules/projectiles/ammunition/energy/plasma.dm @@ -9,3 +9,7 @@ projectile_type = /obj/item/projectile/plasma/adv delay = 10 e_cost = 10 + +/obj/item/ammo_casing/energy/plasma/weak + projectile_type = /obj/item/projectile/plasma/weak + e_cost = 100 \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index b216d8d536..ecd906f2a9 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -112,7 +112,10 @@ /obj/item/gun/energy/kinetic_accelerator/cyborg holds_charge = TRUE unique_frequency = TRUE - max_mod_capacity = 80 + +/obj/item/gun/energy/kinetic_accelerator/premiumka/cyborg + holds_charge = TRUE + unique_frequency = TRUE /obj/item/gun/energy/kinetic_accelerator/minebot trigger_guard = TRIGGER_GUARD_ALLOW_ALL @@ -280,7 +283,7 @@ . += "Occupies [cost]% of mod capacity." /obj/item/borg/upgrade/modkit/attackby(obj/item/A, mob/user) - if(istype(A, /obj/item/gun/energy/kinetic_accelerator) && !issilicon(user)) + if(istype(A, /obj/item/gun/energy/kinetic_accelerator)) install(A, user) else ..() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 9141a6d299..04fffaf431 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -210,7 +210,7 @@ if(reagents && reagents.reagent_list) reagent_note = " REAGENTS:" for(var/datum/reagent/R in reagents.reagent_list) - reagent_note += R.id + " (" + reagent_note += R.type + " (" reagent_note += num2text(R.volume) + ") " if(ismob(firer)) diff --git a/code/modules/projectiles/projectile/bullets/dart_syringe.dm b/code/modules/projectiles/projectile/bullets/dart_syringe.dm index bdbf706448..29e6c39c31 100644 --- a/code/modules/projectiles/projectile/bullets/dart_syringe.dm +++ b/code/modules/projectiles/projectile/bullets/dart_syringe.dm @@ -31,9 +31,9 @@ /obj/item/projectile/bullet/dart/metalfoam/Initialize() . = ..() - reagents.add_reagent("aluminium", 15) - reagents.add_reagent("foaming_agent", 5) - reagents.add_reagent("facid", 5) + reagents.add_reagent(/datum/reagent/aluminium, 15) + reagents.add_reagent(/datum/reagent/foaming_agent, 5) + reagents.add_reagent(/datum/reagent/toxin/acid, 5) /obj/item/projectile/bullet/dart/syringe name = "syringe" @@ -52,20 +52,19 @@ if(blocked != 100) if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body. ..(target, blocked, TRUE) - for(var/datum/reagent/R in reagents.reagent_list) //OD prevention time! - if(istype(R, /datum/reagent/medicine)) //Is this a medicine? - if(M.reagents.has_reagent(R.id)) - if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD? - M.reagents.add_reagent(R.id, R.volume) - else - var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.id)) -1) - M.reagents.add_reagent(R.id, transVol) + for(var/datum/reagent/medicine/R in reagents.reagent_list) //OD prevention time! + if(M.reagents.has_reagent(R.type)) + if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD? + M.reagents.add_reagent(R.type, R.volume) else - if(!R.overdose_threshold == 0) - var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1) - M.reagents.add_reagent(R.id, transVol) - else - M.reagents.add_reagent(R.id, R.volume) + var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.type)) -1) + M.reagents.add_reagent(R.type, transVol) + else + if(!R.overdose_threshold == 0) + var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1) + M.reagents.add_reagent(R.type, transVol) + else + M.reagents.add_reagent(R.type, R.volume) diff --git a/code/modules/projectiles/projectile/special/plasma.dm b/code/modules/projectiles/projectile/special/plasma.dm index aeafb6157a..4c05c42fb3 100644 --- a/code/modules/projectiles/projectile/special/plasma.dm +++ b/code/modules/projectiles/projectile/special/plasma.dm @@ -47,3 +47,9 @@ damage = 24 range = 7 pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE + +/obj/item/projectile/plasma/weak + dismemberment = 0 + damage = 10 + range = 4 + mine_range = 0 \ No newline at end of file diff --git a/code/modules/reagents/chem_wiki_render.dm b/code/modules/reagents/chem_wiki_render.dm index efb6bdecfd..e24da70d47 100644 --- a/code/modules/reagents/chem_wiki_render.dm +++ b/code/modules/reagents/chem_wiki_render.dm @@ -1,18 +1,11 @@ //Generates a markdown txt file for use with the wiki /proc/find_reagent(input) - . = FALSE - if(GLOB.chemical_reagents_list[input]) //prefer IDs! - var/datum/reagent/R = GLOB.chemical_reagents_list[input] - return R - else - for(var/X in GLOB.chemical_reagents_list) - var/datum/reagent/R = GLOB.chemical_reagents_list[X] - if(input == replacetext(lowertext(R.name), " ", "")) - return R - if(input == replacetext(lowertext(R.id), " ", "")) - return R - + //prefer types! + . = GLOB.chemical_reagents_list[text2path(input)] + if(.) + return + . = GLOB.name2reagent[ckey(input)] @@ -24,7 +17,7 @@ var/prefix = "|Name | Reagents | Reaction vars | Description | Chem properties |\n|---|---|---|-----------|---|\n" - var/input_reagent = replacetext(lowertext(input("Input the name/id of a reagent to get it's description on it's own, or leave blank to parse every chem.", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name + var/input_reagent = replacetext(lowertext(input("Input the name/type of a reagent to get it's description on it's own, or leave blank to parse every chem.", "Input") as text), " ", "") //95% of the time, the reagent type is a lowercase, no spaces / underscored version of the name if(input_reagent) var/input_reagent2 = find_reagent(input_reagent) if(!input_reagent2) @@ -68,98 +61,23 @@ var/impure = "" //Chem_dispencer - var/list/dispensable_reagents = list( - "hydrogen", - "lithium", - "carbon", - "nitrogen", - "oxygen", - "fluorine", - "sodium", - "aluminium", - "silicon", - "phosphorus", - "sulfur", - "chlorine", - "potassium", - "iron", - "copper", - "mercury", - "radium", - "water", - "ethanol", - "sugar", - "sacid", - "welding_fuel", - "silver", - "iodine", - "bromine", - "stable_plasma" - ) - var/list/components = list( - "oil", - "ammonia", - "ash", - "acetone", - "phenol", - "diethylamine", - "saltpetre", - "sodiumchloride", - "lye" - ) + var/obj/machinery/chem_dispenser/C + var/list/dispensable_reagents = initial(C.dispensable_reagents) + var/list/components = initial(C.upgrade_reagents) + initial(C.upgrade_reagents2) + initial(C.upgrade_reagents3) var/list/grind = list( - "bluespace", - "gold", - "plasma", - "uranium" + /datum/reagent/bluespace, + /datum/reagent/gold, + /datum/reagent/toxin/plasma, + /datum/reagent/uranium ) //Bartender - var/dispence_drinks = list( - "water", - "ice", - "coffee", - "cream", - "tea", - "icetea", - "cola", - "spacemountainwind", - "dr_gibb", - "space_up", - "tonic", - "sodawater", - "lemon_lime", - "pwr_game", - "shamblers", - "sugar", - "orangejuice", - "grenadine", - "limejuice", - "tomatojuice", - "lemonjuice", - "menthol" - ) - var/dispence_alco = list( - "beer", - "kahlua", - "whiskey", - "wine", - "vodka", - "gin", - "rum", - "tequila", - "vermouth", - "cognac", - "ale", - "absinthe", - "hcider", - "creme_de_menthe", - "creme_de_cacao", - "triple_sec", - "sake", - "applejack" - ) + var/obj/machinery/chem_dispenser/drinks/D + var/dispence_drinks = initial(D.dispensable_reagents) + + var/obj/machinery/chem_dispenser/drinks/beer/B + var/dispence_alco = initial(B.dispensable_reagents) var/breakout = FALSE for(var/i = 1, i <= 2, i+=1) @@ -169,31 +87,31 @@ continue for(var/Y in dispensable_reagents) //Why do you have to do this - if(R.id == Y) + if(R.type == Y) basic += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in components) - if(R.id == Y) + if(R.type == Y) upgraded += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in dispence_drinks) - if(R.id == Y) + if(R.type == Y) drinks += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in dispence_alco) - if(R.id == Y) + if(R.type == Y) alco += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue for(var/Y in grind) - if(R.id == Y) + if(R.type == Y) grinded += generate_chemwiki_line(R, X, processCR) breakout = TRUE continue @@ -273,7 +191,7 @@ /proc/generate_chemwiki_line(datum/reagent/R, X, processCR) //name | Reagent pH | reagents | reaction temp | explosion temp | pH range | Kinetics | description | OD level | Addiction level | Metabolism rate | impure chem | inverse chem - var/datum/chemical_reaction/CR = get_chemical_reaction(R.id) + var/datum/chemical_reaction/CR = get_chemical_reaction(R.type) if((!CR && processCR) || (CR && !processCR)) // Do reactions first. return "" @@ -284,11 +202,11 @@ outstring += "
    " for(var/R2 in CR.required_reagents) R3 = GLOB.chemical_reagents_list[R2]//What a convoluted mess - outstring += "
  • [R3.name]: [CR.required_reagents[R3.id]]u
  • " + outstring += "
  • [R3.name]: [CR.required_reagents[R3.type]]u
  • " if(CR.required_catalysts) for(var/R2 in CR.required_catalysts) R3 = GLOB.chemical_reagents_list[R2] - outstring += "
  • Catalyst: [R3.name]: [CR.required_catalysts[R3.id]]u
  • " + outstring += "
  • Catalyst: [R3.name]: [CR.required_catalysts[R3.type]]u
  • " outstring += "
| " else outstring += "N/A | " @@ -332,11 +250,11 @@ //Description, OD, Addict, Meta outstring += "[R.description] |
  • Metabolism rate: [R.metabolization_rate/2]u/s
  • [(R.overdose_threshold?"
  • Overdose: [R.overdose_threshold]u
  • ":"")] [(R.addiction_threshold?"
  • Addiction: [R.addiction_threshold]u
  • ":"")] " - if(R.impure_chem && R.impure_chem != "fermiTox") + if(R.impure_chem && R.impure_chem != /datum/reagent/impure/fermiTox) R3 = GLOB.chemical_reagents_list[R.impure_chem] outstring += "
  • Impure chem:[R3.name]
  • " - if(R.inverse_chem && R.impure_chem != "fermiTox") + if(R.inverse_chem && R.impure_chem != /datum/reagent/impure/fermiTox) R3 = GLOB.chemical_reagents_list[R.inverse_chem] outstring += "
  • Inverse chem:[R3.name]
  • [(R3.inverse_chem_val?"
  • Inverse purity: [R3.inverse_chem_val]
  • ":"")] " @@ -361,11 +279,11 @@ var/datum/reagent/R3 for(var/R2 in CR.required_reagents) R3 = GLOB.chemical_reagents_list[R2] - outstring += "
  • [R3.name]: [CR.required_reagents[R3.id]]u
  • " + outstring += "
  • [R3.name]: [CR.required_reagents[R3.type]]u
  • " if(CR.required_catalysts) for(var/R2 in CR.required_catalysts) R3 = GLOB.chemical_reagents_list[R2] - outstring += "
  • Catalyst: [R3.name]: [CR.required_catalysts[R3.id]]u
  • " + outstring += "
  • Catalyst: [R3.name]: [CR.required_catalysts[R3.type]]u
  • " outstring += "
|
    " //Reaction vars diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index d540cd02fe..bf3c4220b4 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -11,13 +11,13 @@ for(var/path in paths) var/datum/reagent/D = new path() - GLOB.chemical_reagents_list[D.id] = D + GLOB.chemical_reagents_list[path] = D /proc/build_chemical_reactions_list() //Chemical Reactions - Initialises all /datum/chemical_reaction into a list // It is filtered into multiple lists within a list. // For example: - // chemical_reaction_list["plasma"] is a list of all reactions relating to plasma + // chemical_reaction_list[/datum/reagent/toxin/plasma] is a list of all reactions relating to plasma if(GLOB.chemical_reactions_list) return @@ -32,14 +32,11 @@ var/datum/chemical_reaction/D = new path() var/list/reaction_ids = list() - if(!D.id) - continue - if(D.required_reagents && D.required_reagents.len) for(var/reaction in D.required_reagents) reaction_ids += reaction - // Create filters based on each reagent id in the required reagents list + // Create filters based on each reagent type in the required reagents list for(var/id in reaction_ids) if(!GLOB.chemical_reactions_list[id]) GLOB.chemical_reactions_list[id] = list() @@ -63,7 +60,7 @@ var/targetVol = 0 //the target volume, i.e. the total amount that can be created during a fermichem reaction. var/reactedVol = 0 //how much of the reagent is reacted during a fermireaction var/fermiIsReacting = FALSE //that prevents multiple reactions from occurring (i.e. add_reagent calls to process_reactions(), this stops any extra reactions.) - var/fermiReactID //ID of the chem being made during a fermireaction, kept here so it's cache isn't lost between loops/procs. + var/fermiReactID //instance of the chem reaction used during a fermireaction, kept here so it's cache isn't lost between loops/procs. /datum/reagents/New(maximum=100, new_flags) maximum_volume = maximum @@ -96,7 +93,7 @@ var/list/data = list() for(var/r in reagent_list) //no reagents will be left behind var/datum/reagent/R = r - data += "[R.id] ([round(R.volume, CHEMICAL_QUANTISATION_LEVEL)]u)" + data += "[R.type] ([round(R.volume, CHEMICAL_QUANTISATION_LEVEL)]u)" //Using IDs because SOME chemicals (I'm looking at you, chlorhydrate-beer) have the same names as other chemicals. return english_list(data) @@ -117,7 +114,7 @@ current_list_element = 1 var/datum/reagent/R = cached_reagents[current_list_element] - remove_reagent(R.id, 1) + remove_reagent(R.type, 1) current_list_element++ total_transfered++ @@ -132,7 +129,7 @@ var/part = amount / total_volume for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - remove_reagent(R.id, R.volume * part, ignore_pH = TRUE) + remove_reagent(R.type, R.volume * part, ignore_pH = TRUE) pH = REAGENT_NORMAL_PH update_total() handle_reactions() @@ -152,15 +149,15 @@ /datum/reagents/proc/get_master_reagent_id() var/list/cached_reagents = reagent_list - var/id + var/max_type var/max_volume = 0 for(var/reagent in cached_reagents) var/datum/reagent/R = reagent if(R.volume > max_volume) max_volume = R.volume - id = R.id + max_type = R.type - return id + return max_type /datum/reagents/proc/get_master_reagent() var/list/cached_reagents = reagent_list @@ -198,9 +195,9 @@ trans_data = copy_data(T) - R.add_reagent(T.id, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered. + R.add_reagent(T.type, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered. - remove_reagent(T.id, transfer_amount, ignore_pH = TRUE) + remove_reagent(T.type, transfer_amount, ignore_pH = TRUE) update_total() R.update_total() @@ -232,7 +229,7 @@ var/copy_amount = T.volume * part if(preserve_data) trans_data = T.data - R.add_reagent(T.id, copy_amount * multiplier, trans_data) + R.add_reagent(T.type, copy_amount * multiplier, trans_data) src.update_total() R.update_total() @@ -256,12 +253,12 @@ var/trans_data = null for (var/CR in cached_reagents) var/datum/reagent/current_reagent = CR - if(current_reagent.id == reagent) + if(current_reagent.type == reagent) if(preserve_data) trans_data = current_reagent.data - R.add_reagent(current_reagent.id, amount, trans_data, chem_temp, current_reagent.purity, pH, no_react = TRUE) + R.add_reagent(current_reagent.type, amount, trans_data, chem_temp, current_reagent.purity, pH, no_react = TRUE) - remove_reagent(current_reagent.id, amount, 1) + remove_reagent(current_reagent.type, amount, 1) break src.update_total() @@ -313,18 +310,21 @@ var/datum/reagent/R = addiction if(C && R) R.addiction_stage++ - if(1 <= R.addiction_stage && R.addiction_stage <= R.addiction_stage1_end) - need_mob_update += R.addiction_act_stage1(C) - else if(R.addiction_stage1_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage2_end) - need_mob_update += R.addiction_act_stage2(C) - else if(R.addiction_stage2_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage3_end) - need_mob_update += R.addiction_act_stage3(C) - else if(R.addiction_stage3_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage4_end) - need_mob_update += R.addiction_act_stage4(C) - else if(R.addiction_stage4_end <= R.addiction_stage) - to_chat(C, "You feel like you've gotten over your need for [R.name].") - SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction") - cached_addictions.Remove(R) + switch(R.addiction_stage) + if(1 to R.addiction_stage1_end) + need_mob_update += R.addiction_act_stage1(C) + if(R.addiction_stage1_end to R.addiction_stage2_end) + need_mob_update += R.addiction_act_stage2(C) + if(R.addiction_stage2_end to R.addiction_stage3_end) + need_mob_update += R.addiction_act_stage3(C) + if(R.addiction_stage3_end to R.addiction_stage4_end) + need_mob_update += R.addiction_act_stage4(C) + if(R.addiction_stage4_end to INFINITY) + to_chat(C, "You feel like you've gotten over your need for [R.name].") + SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_addiction") + cached_addictions.Remove(R) + else + SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose") addiction_tick++ if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates. C.updatehealth() @@ -381,7 +381,7 @@ reaction_occurred = 0 for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - for(var/reaction in cached_reactions[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id + for(var/reaction in cached_reactions[R.type]) // Was a big list but now it should be smaller since we filtered it with our reagent type if(!reaction) continue @@ -630,7 +630,7 @@ deltapH = 1 //This should never proc: else - WARNING("[my_atom] attempted to determine FermiChem pH for '[C.id]' which broke for some reason! ([usr])") + WARNING("[my_atom] attempted to determine FermiChem pH for '[C.type]' which broke for some reason! ([usr])") //Calculate DeltaT (Deviation of T from optimal) if (cached_temp < C.OptimalTempMax && cached_temp >= C.OptimalTempMin) @@ -679,7 +679,7 @@ //Above should reduce yeild based on holder purity. //Purity Check for(var/datum/reagent/R in my_atom.reagents.reagent_list) - if(P == R.id) + if(P == R.type) if (R.purity < C.PurityMin)//If purity is below the min, blow it up. fermiIsReacting = FALSE SSblackbox.record_feedback("tally", "fermi_chem", 1, ("[P] explosion")) @@ -724,7 +724,7 @@ return cachedPurity/i /datum/reagents/proc/uncache_purity(id) - var/datum/reagent/R = has_reagent("[id]") + var/datum/reagent/R = has_reagent(id) if(!R) return if(R.cached_purity == 1) @@ -735,15 +735,15 @@ var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if(R.id != reagent) - del_reagent(R.id) + if(R.type != reagent) + del_reagent(R.type) update_total() /datum/reagents/proc/del_reagent(reagent) var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if(R.id == reagent) + if(R.type == reagent) if(my_atom && isliving(my_atom)) var/mob/living/M = my_atom if(R.metabolizing) @@ -763,9 +763,9 @@ for(var/reagent in cached_reagents) var/datum/reagent/R = reagent if(R.volume <= 0)//For clarity - del_reagent(R.id) + del_reagent(R.type) if((R.volume < 0.01) && !fermiIsReacting) - del_reagent(R.id) + del_reagent(R.type) else total_volume += R.volume if(!reagent_list || !total_volume) @@ -776,7 +776,7 @@ var/list/cached_reagents = reagent_list for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - del_reagent(R.id) + del_reagent(R.type) pH = REAGENT_NORMAL_PH return 0 @@ -842,13 +842,13 @@ WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])") return FALSE - if (D.id == "water" && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany. + if (D.type == /datum/reagent/water && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany. if (pH < 2) SSblackbox.record_feedback("tally", "fermi_chem", 1, "water-acid explosions") var/datum/effect_system/smoke_spread/chem/s = new var/turf/T = get_turf(my_atom) var/datum/reagents/R = new/datum/reagents(3000) - R.add_reagent("fermiAcid", amount) + R.add_reagent(/datum/reagent/fermi/fermiAcid, amount) for (var/datum/reagent/reagentgas in reagent_list) R.add_reagent(reagentgas, amount/5) remove_reagent(reagentgas, amount/5) @@ -895,7 +895,7 @@ //add the reagent to the existing if it exists for(var/A in cached_reagents) var/datum/reagent/R = A - if (R.id == reagent) //IF MERGING + if (R.type == reagent) //IF MERGING //Add amount and equalize purity R.volume += round(amount, CHEMICAL_QUANTISATION_LEVEL) R.purity = ((R.purity * R.volume) + (other_purity * amount)) /((R.volume + amount)) //This should add the purity to the product @@ -937,7 +937,7 @@ return TRUE -/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15) +/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list(/datum/reagent/toxin = 10, /datum/reagent/consumable/ethanol/beer = 15) for(var/r_id in list_reagents) var/amt = list_reagents[r_id] add_reagent(r_id, amt, data) @@ -959,7 +959,7 @@ for(var/A in cached_reagents) var/datum/reagent/R = A - if (R.id == reagent) + if (R.type == reagent) if((total_volume - amount) <= 0)//Because this can result in 0, I don't want it to crash. pH = REAGENT_NORMAL_PH //In practice this is really confusing and players feel like it randomly melts their beakers, but I'm not sure how else to handle it. We'll see how it goes and I can remove this if it confuses people. @@ -986,7 +986,7 @@ var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if (R.id == reagent) + if (R.type == reagent) if(!amount) return R else @@ -1001,7 +1001,7 @@ var/list/cached_reagents = reagent_list for(var/_reagent in cached_reagents) var/datum/reagent/R = _reagent - if (R.id == reagent) + if (R.type == reagent) return round(R.volume, CHEMICAL_QUANTISATION_LEVEL) return 0 @@ -1034,7 +1034,7 @@ // We found a match, proceed to remove the reagent. Keep looping, we might find other reagents of the same type. if(matches) // Have our other proc handle removement - has_removed_reagent = remove_reagent(R.id, amount, safety) + has_removed_reagent = remove_reagent(R.type, amount, safety) return has_removed_reagent @@ -1043,14 +1043,14 @@ var/list/cached_reagents = reagent_list for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - if(R.id == reagent_id) + if(R.type == reagent_id) return R.data /datum/reagents/proc/set_data(reagent_id, new_data) var/list/cached_reagents = reagent_list for(var/reagent in cached_reagents) var/datum/reagent/R = reagent - if(R.id == reagent_id) + if(R.type == reagent_id) R.data = new_data /datum/reagents/proc/copy_data(datum/reagent/current_reagent) @@ -1143,12 +1143,12 @@ reagents = new/datum/reagents(max_vol, flags) reagents.my_atom = src -/proc/get_random_reagent_id() // Returns a random reagent ID minus blacklisted reagents +/proc/get_random_reagent_id() // Returns a random reagent type minus blacklisted reagents var/static/list/random_reagents = list() if(!random_reagents.len) for(var/thing in subtypesof(/datum/reagent)) var/datum/reagent/R = thing if(initial(R.can_synth)) - random_reagents += initial(R.id) + random_reagents += R var/picked_reagent = pick(random_reagents) return picked_reagent diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 2c5d7aa3e2..217c915a9e 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -1,3 +1,16 @@ +/proc/translate_legacy_chem_id(id) + switch (id) + if ("sacid") + return "sulphuricacid" + if ("facid") + return "fluorosulfuricacid" + if ("co2") + return "carbondioxide" + if ("mine_salve") + return "minerssalve" + else + return ckey(id) + /obj/machinery/chem_dispenser name = "chem dispenser" desc = "Creates and dispenses chemicals." @@ -21,65 +34,66 @@ var/macrotier = 1 var/obj/item/reagent_containers/beaker = null var/list/dispensable_reagents = list( - "hydrogen", - "lithium", - "carbon", - "nitrogen", - "oxygen", - "fluorine", - "sodium", - "aluminium", - "silicon", - "phosphorus", - "sulfur", - "chlorine", - "potassium", - "iron", - "copper", - "mercury", - "radium", - "water", - "ethanol", - "sugar", - "sacid", - "welding_fuel", - "silver", - "iodine", - "bromine", - "stable_plasma" + /datum/reagent/hydrogen, + /datum/reagent/lithium, + /datum/reagent/carbon, + /datum/reagent/nitrogen, + /datum/reagent/oxygen, + /datum/reagent/fluorine, + /datum/reagent/sodium, + /datum/reagent/aluminium, + /datum/reagent/silicon, + /datum/reagent/phosphorus, + /datum/reagent/sulfur, + /datum/reagent/chlorine, + /datum/reagent/potassium, + /datum/reagent/iron, + /datum/reagent/copper, + /datum/reagent/mercury, + /datum/reagent/radium, + /datum/reagent/water, + /datum/reagent/consumable/ethanol, + /datum/reagent/consumable/sugar, + /datum/reagent/toxin/acid, + /datum/reagent/fuel, + /datum/reagent/silver, + /datum/reagent/iodine, + /datum/reagent/bromine, + /datum/reagent/stable_plasma ) //these become available once upgraded. var/list/upgrade_reagents = list( - "oil", - "ammonia", - "ash" + /datum/reagent/oil, + /datum/reagent/ammonia, + /datum/reagent/ash ) var/list/upgrade_reagents2 = list( - "acetone", - "phenol", - "diethylamine" + /datum/reagent/acetone, + /datum/reagent/phenol, + /datum/reagent/diethylamine ) var/list/upgrade_reagents3 = list( - "mine_salve", - "toxin" + /datum/reagent/medicine/mine_salve, + /datum/reagent/toxin ) var/list/emagged_reagents = list( - "space_drugs", - "plasma", - "frostoil", - "carpotoxin", - "histamine", - "morphine" + /datum/reagent/drug/space_drugs, + /datum/reagent/toxin/plasma, + /datum/reagent/consumable/frostoil, + /datum/reagent/toxin/carpotoxin, + /datum/reagent/toxin/histamine, + /datum/reagent/medicine/morphine ) var/list/saved_recipes = list() /obj/machinery/chem_dispenser/Initialize() . = ..() - dispensable_reagents = sortList(dispensable_reagents) + for(var/list/L in list(dispensable_reagents, emagged_reagents, upgrade_reagents, upgrade_reagents2, upgrade_reagents3)) + L = sortList(L, /proc/cmp_reagents_asc) update_icon() /obj/machinery/chem_dispenser/Destroy() @@ -213,7 +227,7 @@ var/chemname = temp.name if(is_hallucinating && prob(5)) chemname = "[pick_list_replacements("hallucination.json", "chemicals")]" - chemicals.Add(list(list("title" = chemname, "id" = temp.id))) + chemicals.Add(list(list("title" = chemname, "id" = ckey(temp.name)))) for(var/recipe in saved_recipes) recipes.Add(list(recipe)) data["chemicals"] = chemicals @@ -235,7 +249,7 @@ if("dispense") if(!is_operational() || QDELETED(cell)) return - var/reagent = params["reagent"] + var/reagent = GLOB.name2reagent[params["reagent"]] if(beaker && dispensable_reagents.Find(reagent)) var/datum/reagents/R = beaker.reagents var/free = R.maximum_volume - R.total_volume @@ -267,7 +281,7 @@ var/res = get_macro_resolution() for(var/key in chemicals_to_dispense) // i suppose you could edit the list locally before passing it var/list/keysplit = splittext(key," ") - var/r_id = keysplit[1] + var/r_id = GLOB.name2reagent[translate_legacy_chem_id(keysplit[1])] if(beaker && dispensable_reagents.Find(r_id)) // but since we verify we have the reagent, it'll be fine var/datum/reagents/R = beaker.reagents var/free = R.maximum_volume - R.total_volume @@ -299,7 +313,8 @@ var/resmismatch = FALSE for(var/reagents in first_process) var/list/reagent = splittext(reagents, "=") - if(dispensable_reagents.Find(reagent[1])) + var/reagent_id = GLOB.name2reagent[translate_legacy_chem_id(reagent[1])] + if(dispensable_reagents.Find(reagent_id)) if (!resmismatch && !check_macro_part(reagents, res)) resmismatch = TRUE continue @@ -475,45 +490,45 @@ nopower_state = null pass_flags = PASSTABLE dispensable_reagents = list( - "water", - "ice", - "coffee", - "cream", - "tea", - "icetea", - "cola", - "spacemountainwind", - "dr_gibb", - "space_up", - "tonic", - "sodawater", - "lemon_lime", - "pwr_game", - "shamblers", - "sugar", - "orangejuice", - "grenadine", - "limejuice", - "tomatojuice", - "lemonjuice", - "menthol" + /datum/reagent/water, + /datum/reagent/consumable/ice, + /datum/reagent/consumable/coffee, + /datum/reagent/consumable/cream, + /datum/reagent/consumable/tea, + /datum/reagent/consumable/icetea, + /datum/reagent/consumable/space_cola, + /datum/reagent/consumable/spacemountainwind, + /datum/reagent/consumable/dr_gibb, + /datum/reagent/consumable/space_up, + /datum/reagent/consumable/tonic, + /datum/reagent/consumable/sodawater, + /datum/reagent/consumable/lemon_lime, + /datum/reagent/consumable/pwr_game, + /datum/reagent/consumable/shamblers, + /datum/reagent/consumable/sugar, + /datum/reagent/consumable/orangejuice, + /datum/reagent/consumable/grenadine, + /datum/reagent/consumable/limejuice, + /datum/reagent/consumable/tomatojuice, + /datum/reagent/consumable/lemonjuice, + /datum/reagent/consumable/menthol ) upgrade_reagents = list( - "mushroomhallucinogen", - "nothing", - "cryoxadone" + /datum/reagent/drug/mushroomhallucinogen, + /datum/reagent/consumable/nothing, + /datum/reagent/medicine/cryoxadone ) upgrade_reagents2 = list( - "banana", - "berryjuice" + /datum/reagent/consumable/banana, + /datum/reagent/consumable/berryjuice ) upgrade_reagents3 = null emagged_reagents = list( - "thirteenloko", - "changelingsting", - "whiskeycola", - "mindbreaker", - "tirizene" + /datum/reagent/consumable/ethanol/thirteenloko, + /datum/reagent/consumable/ethanol/changelingsting, + /datum/reagent/consumable/ethanol/whiskey_cola, + /datum/reagent/toxin/mindbreaker, + /datum/reagent/toxin/staminatoxin ) @@ -542,39 +557,39 @@ icon_state = "booze_dispenser" circuit = /obj/item/circuitboard/machine/chem_dispenser/drinks/beer dispensable_reagents = list( - "beer", - "kahlua", - "whiskey", - "wine", - "vodka", - "gin", - "rum", - "tequila", - "vermouth", - "cognac", - "ale", - "absinthe", - "hcider", - "creme_de_menthe", - "creme_de_cacao", - "triple_sec", - "sake", - "applejack" + /datum/reagent/consumable/ethanol/beer, + /datum/reagent/consumable/ethanol/kahlua, + /datum/reagent/consumable/ethanol/whiskey, + /datum/reagent/consumable/ethanol/wine, + /datum/reagent/consumable/ethanol/vodka, + /datum/reagent/consumable/ethanol/gin, + /datum/reagent/consumable/ethanol/rum, + /datum/reagent/consumable/ethanol/tequila, + /datum/reagent/consumable/ethanol/vermouth, + /datum/reagent/consumable/ethanol/cognac, + /datum/reagent/consumable/ethanol/ale, + /datum/reagent/consumable/ethanol/absinthe, + /datum/reagent/consumable/ethanol/hcider, + /datum/reagent/consumable/ethanol/creme_de_menthe, + /datum/reagent/consumable/ethanol/creme_de_cacao, + /datum/reagent/consumable/ethanol/triple_sec, + /datum/reagent/consumable/ethanol/sake, + /datum/reagent/consumable/ethanol/applejack ) upgrade_reagents = list( - "ethanol", - "fernet" + /datum/reagent/consumable/ethanol, + /datum/reagent/consumable/ethanol/fernet ) upgrade_reagents2 = null upgrade_reagents3 = null emagged_reagents = list( - "iron", - "alexander", - "clownstears", - "minttoxin", - "atomicbomb", - "aphro", - "aphro+" + /datum/reagent/iron, + /datum/reagent/consumable/ethanol/alexander, + /datum/reagent/consumable/clownstears, + /datum/reagent/toxin/minttoxin, + /datum/reagent/consumable/ethanol/atomicbomb, + /datum/reagent/drug/aphrodisiac, + /datum/reagent/drug/aphrodisiacplus ) /obj/machinery/chem_dispenser/drinks/beer/fullupgrade //fully ugpraded stock parts, emagged @@ -598,9 +613,9 @@ /obj/machinery/chem_dispenser/mutagen name = "mutagen dispenser" desc = "Creates and dispenses mutagen." - dispensable_reagents = list("mutagen") + dispensable_reagents = list(/datum/reagent/toxin/mutagen) upgrade_reagents = null - emagged_reagents = list("plasma") + emagged_reagents = list(/datum/reagent/toxin/plasma) /obj/machinery/chem_dispenser/mutagensaltpeter @@ -609,19 +624,19 @@ flags_1 = NODECONSTRUCT_1 dispensable_reagents = list( - "mutagen", - "saltpetre", - "eznutriment", - "left4zednutriment", - "robustharvestnutriment", - "water", - "plantbgone", - "weedkiller", - "pestkiller", - "cryoxadone", - "ammonia", - "ash", - "diethylamine") + /datum/reagent/toxin/mutagen, + /datum/reagent/saltpetre, + /datum/reagent/plantnutriment/eznutriment, + /datum/reagent/plantnutriment/left4zednutriment, + /datum/reagent/plantnutriment/robustharvestnutriment, + /datum/reagent/water, + /datum/reagent/toxin/plantbgone, + /datum/reagent/toxin/plantbgone/weedkiller, + /datum/reagent/toxin/pestkiller, + /datum/reagent/medicine/cryoxadone, + /datum/reagent/ammonia, + /datum/reagent/ash, + /datum/reagent/diethylamine) //same as above. upgrade_reagents = null upgrade_reagents2 = null @@ -667,46 +682,46 @@ working_state = null nopower_state = null dispensable_reagents = list( - "hydrogen", - "lithium", - "carbon", - "nitrogen", - "oxygen", - "fluorine", - "sodium", - "aluminium", - "silicon", - "phosphorus", - "sulfur", - "chlorine", - "potassium", - "iron", - "copper", - "mercury", - "radium", - "water", - "ethanol", - "sugar", - "sacid", - "welding_fuel", - "silver", - "iodine", - "bromine", - "stable_plasma", - "oil", - "ammonia", - "ash", - "acetone", - "phenol", - "diethylamine", - "mine_salve", - "toxin", - "space_drugs", - "plasma", - "frostoil", - "uranium", - "histamine", - "morphine" + /datum/reagent/hydrogen, + /datum/reagent/lithium, + /datum/reagent/carbon, + /datum/reagent/nitrogen, + /datum/reagent/oxygen, + /datum/reagent/fluorine, + /datum/reagent/sodium, + /datum/reagent/aluminium, + /datum/reagent/silicon, + /datum/reagent/phosphorus, + /datum/reagent/sulfur, + /datum/reagent/chlorine, + /datum/reagent/potassium, + /datum/reagent/iron, + /datum/reagent/copper, + /datum/reagent/mercury, + /datum/reagent/radium, + /datum/reagent/water, + /datum/reagent/consumable/ethanol, + /datum/reagent/consumable/sugar, + /datum/reagent/toxin/acid, + /datum/reagent/fuel, + /datum/reagent/silver, + /datum/reagent/iodine, + /datum/reagent/bromine, + /datum/reagent/stable_plasma, + /datum/reagent/oil, + /datum/reagent/ammonia, + /datum/reagent/ash, + /datum/reagent/acetone, + /datum/reagent/phenol, + /datum/reagent/diethylamine, + /datum/reagent/medicine/mine_salve, + /datum/reagent/toxin, + /datum/reagent/drug/space_drugs, + /datum/reagent/toxin/plasma, + /datum/reagent/consumable/frostoil, + /datum/reagent/uranium, + /datum/reagent/toxin/histamine, + /datum/reagent/medicine/morphine ) /obj/machinery/chem_dispenser/abductor/Initialize() @@ -719,4 +734,4 @@ component_parts += new /obj/item/stock_parts/manipulator/femto(null) component_parts += new /obj/item/stack/sheet/glass(null) component_parts += new /obj/item/stock_parts/cell/bluespace(null) - RefreshParts() \ No newline at end of file + RefreshParts() diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 513626465a..e6b19417d8 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -186,13 +186,13 @@ var/beakerContents[0] if(beaker) for(var/datum/reagent/R in beaker.reagents.reagent_list) - beakerContents.Add(list(list("name" = R.name, "id" = R.id, "volume" = R.volume))) // list in a list because Byond merges the first list... + beakerContents.Add(list(list("name" = R.name, "id" = ckey(R.name), "volume" = R.volume))) // list in a list because Byond merges the first list... data["beakerContents"] = beakerContents var/bufferContents[0] if(reagents.total_volume) for(var/datum/reagent/N in reagents.reagent_list) - bufferContents.Add(list(list("name" = N.name, "id" = N.id, "volume" = N.volume))) // ^ + bufferContents.Add(list(list("name" = N.name, "id" = ckey(N.name), "volume" = N.volume))) // ^ data["bufferContents"] = bufferContents //Calculated at init time as it never changes @@ -214,34 +214,34 @@ if("transferToBuffer") if(beaker) - var/id = params["id"] + var/reagent = GLOB.name2reagent[params["id"]] var/amount = text2num(params["amount"]) if (amount > 0) end_fermi_reaction() - beaker.reagents.trans_id_to(src, id, amount) + beaker.reagents.trans_id_to(src, reagent, amount) . = TRUE else if (amount == -1) // -1 means custom amount useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null if (useramount > 0) end_fermi_reaction() - beaker.reagents.trans_id_to(src, id, useramount) + beaker.reagents.trans_id_to(src, reagent, useramount) . = TRUE if("transferFromBuffer") - var/id = params["id"] + var/reagent = GLOB.name2reagent[params["id"]] var/amount = text2num(params["amount"]) if (amount > 0) if(mode) - reagents.trans_id_to(beaker, id, amount) + reagents.trans_id_to(beaker, reagent, amount) . = TRUE else - reagents.remove_reagent(id, amount) + reagents.remove_reagent(reagent, amount) . = TRUE else if (amount == -1) // -1 means custom amount useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null if (useramount > 0) end_fermi_reaction() - reagents.trans_id_to(beaker, id, useramount) + reagents.trans_id_to(beaker, reagent, useramount) . = TRUE if("toggleMode") @@ -423,7 +423,7 @@ //END CITADEL ADDITIONS if("analyzeBeak") - var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]] + var/datum/reagent/R = GLOB.name2reagent[params["id"]] if(R) var/state = "Unknown" if(initial(R.reagent_state) == 1) @@ -434,11 +434,11 @@ state = "Gas" var/const/P = 3 //The number of seconds between life ticks var/T = initial(R.metabolization_rate) * (60 / P) - var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id) + var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.type) if(Rcr && Rcr.FermiChem) fermianalyze = TRUE var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2 - var/datum/reagent/targetReagent = beaker.reagents.has_reagent("[R.id]") + var/datum/reagent/targetReagent = beaker.reagents.has_reagent(R.type) if(!targetReagent) CRASH("Tried to find a reagent that doesn't exist in the chem_master!") @@ -450,7 +450,7 @@ return if("analyzeBuff") - var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]] + var/datum/reagent/R = GLOB.name2reagent[params["id"]] if(R) var/state = "Unknown" if(initial(R.reagent_state) == 1) @@ -463,9 +463,9 @@ var/T = initial(R.metabolization_rate) * (60 / P) if(istype(R, /datum/reagent/fermi)) fermianalyze = TRUE - var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id) + var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.type) var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2 - var/datum/reagent/targetReagent = reagents.has_reagent("[R.id]") + var/datum/reagent/targetReagent = reagents.has_reagent(R.type) if(!targetReagent) CRASH("Tried to find a reagent that doesn't exist in the chem_master!") diff --git a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm index daac5a5d1c..ed23e7c75c 100644 --- a/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm +++ b/code/modules/reagents/chemistry/machinery/chem_synthesizer.dm @@ -8,8 +8,8 @@ flags_1 = NODECONSTRUCT_1 use_power = NO_POWER_USE var/static/list/shortcuts = list( - "meth" = "methamphetamine", - "tricord" = "tricordrazine" + "meth" = /datum/reagent/drug/methamphetamine, + "tricord" = /datum/reagent/medicine/tricordrazine ) /obj/machinery/chem_dispenser/chem_synthesizer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ @@ -31,13 +31,13 @@ beaker = null . = TRUE if("input") - var/input_reagent = replacetext(lowertext(input("Enter the name of any liquid", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name + var/input_reagent = replacetext(lowertext(input("Enter the name of any reagent", "Input") as text), " ", "") //95% of the time, the reagent types is a lowercase, no spaces / underscored version of the name if(shortcuts[input_reagent]) input_reagent = shortcuts[input_reagent] else input_reagent = find_reagent(input_reagent) - if(!input_reagent || !GLOB.chemical_reagents_list[input_reagent]) - say("OUT OF RANGE") + if(!input_reagent) + say("REAGENT NOT FOUND") return else if(!beaker) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 6ae0a682d8..68ce6e490f 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -144,9 +144,9 @@ var/datum/reagent/blood/B = locate() in beaker.reagents.reagent_list if(B) data["has_blood"] = TRUE - data["blood"] = list() - data["blood"]["dna"] = B.data["blood_DNA"] || "none" - data["blood"]["type"] = B.data["blood_type"] || "none" + data[/datum/reagent/blood] = list() + data[/datum/reagent/blood]["dna"] = B.data["blood_DNA"] || "none" + data[/datum/reagent/blood]["type"] = B.data["blood_type"] || "none" data["viruses"] = get_viruses_data(B) data["resistances"] = get_resistance_data(B) if(SYMPTOM_DETAILS) @@ -192,7 +192,7 @@ var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) B.name = "[A.name] culture bottle" B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium." - B.reagents.add_reagent("blood", 20, data) + B.reagents.add_reagent(/datum/reagent/blood, 20, data) wait = TRUE update_icon() var/turf/source_turf = get_turf(src) @@ -204,7 +204,7 @@ var/datum/disease/D = SSdisease.archive_diseases[id] var/obj/item/reagent_containers/glass/bottle/B = new(drop_location()) B.name = "[D.name] vaccine bottle" - B.reagents.add_reagent("vaccine", 15, list(id)) + B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id)) wait = TRUE update_icon() addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 200) diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 98cfd877b2..7e1b7ec018 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -299,18 +299,18 @@ /obj/machinery/reagentgrinder/proc/mix_complete() if(beaker?.reagents.total_volume) //Recipe to make Butter - var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount("milk") / MILK_TO_BUTTER_COEFF, 1) - beaker.reagents.remove_reagent("milk", MILK_TO_BUTTER_COEFF * butter_amt) + var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/milk) / MILK_TO_BUTTER_COEFF, 1) + beaker.reagents.remove_reagent(/datum/reagent/consumable/milk, MILK_TO_BUTTER_COEFF * butter_amt) for(var/i in 1 to butter_amt) new /obj/item/reagent_containers/food/snacks/butter(drop_location()) //Recipe to make Mayonnaise - if (beaker.reagents.has_reagent("eggyolk")) - var/amount = beaker.reagents.get_reagent_amount("eggyolk") - beaker.reagents.remove_reagent("eggyolk", amount) - beaker.reagents.add_reagent("mayonnaise", amount) + if (beaker.reagents.has_reagent(/datum/reagent/consumable/eggyolk)) + var/amount = beaker.reagents.get_reagent_amount(/datum/reagent/consumable/eggyolk) + beaker.reagents.remove_reagent(/datum/reagent/consumable/eggyolk, amount) + beaker.reagents.add_reagent(/datum/reagent/consumable/mayonnaise, amount) //Moonsugar for skooma - if(beaker.reagents.has_reagent("sugar") && beaker.reagents.has_reagent("moonshine")) - var/amount = min(beaker.reagents.get_reagent_amount("sugar"), beaker.reagents.get_reagent_amount("moonshine")) - beaker.reagents.remove_reagent("sugar", amount) - beaker.reagents.remove_reagent("moonshine", amount) - beaker.reagents.add_reagent("moonsugar", amount*2) + if(beaker.reagents.has_reagent(/datum/reagent/consumable/sugar) && beaker.reagents.has_reagent(/datum/reagent/consumable/ethanol/moonshine)) + var/amount = min(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/sugar), beaker.reagents.get_reagent_amount(/datum/reagent/consumable/ethanol/moonshine)) + beaker.reagents.remove_reagent(/datum/reagent/consumable/sugar, amount) + beaker.reagents.remove_reagent(/datum/reagent/consumable/ethanol/moonshine, amount) + beaker.reagents.add_reagent(/datum/reagent/moonsugar, amount*2) diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index da41ac9dc4..5eb2c135a8 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -1,12 +1,20 @@ #define REM REAGENTS_EFFECT_MULTIPLIER +GLOBAL_LIST_INIT(name2reagent, build_name2reagent()) + +/proc/build_name2reagent() + . = list() + for (var/t in subtypesof(/datum/reagent)) + var/datum/reagent/R = t + if (length(initial(R.name))) + .[ckey(initial(R.name))] = t + //Various reagents //Toxin & acid reagents //Hydroponics stuff /datum/reagent var/name = "Reagent" - var/id = "reagent" var/description = "" var/specific_heat = SPECIFIC_HEAT_DEFAULT //J/(K*mol) var/taste_description = "metaphorical salt" @@ -58,7 +66,7 @@ var/modifier = CLAMP((1 - touch_protection), 0, 1) var/amount = round(reac_volume*modifier, 0.1) if(amount >= 0.5) - M.reagents.add_reagent(id, amount) + M.reagents.add_reagent(type, amount) return 1 /datum/reagent/proc/reaction_obj(obj/O, volume) @@ -70,7 +78,7 @@ /datum/reagent/proc/on_mob_life(mob/living/carbon/M) current_cycle++ if(holder) - holder.remove_reagent(src.id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. + holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. return //called when a mob processes chems when dead. @@ -79,7 +87,7 @@ return current_cycle++ if(holder) - holder.remove_reagent(src.id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. + holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears. return // Called when this reagent is first added to a mob @@ -88,19 +96,19 @@ return var/mob/living/carbon/M = L if (purity == 1) - log_game("CHEM: [L] ckey: [L.key] has ingested [volume]u of [id]") + log_game("CHEM: [L] ckey: [L.key] has ingested [volume]u of [type]") return if(cached_purity == 1) cached_purity = purity else if(purity < 0) - CRASH("Purity below 0 for chem: [id], Please let Fermis Know!") + CRASH("Purity below 0 for chem: [type], Please let Fermis Know!") if(chemical_flags & REAGENT_DONOTSPLIT) return if ((inverse_chem_val > purity) && (inverse_chem))//Turns all of a added reagent into the inverse chem - M.reagents.remove_reagent(id, amount, FALSE) + M.reagents.remove_reagent(type, amount, FALSE) M.reagents.add_reagent(inverse_chem, amount, FALSE, other_purity = 1-cached_purity) - var/datum/reagent/R = M.reagents.has_reagent("[inverse_chem]") + var/datum/reagent/R = M.reagents.has_reagent(inverse_chem) if(R.chemical_flags & REAGENT_SNEAKYNAME) R.name = name//Negative effects are hidden if(R.chemical_flags & REAGENT_INVISIBLE) @@ -110,9 +118,9 @@ else if (impure_chem) var/impureVol = amount * (1 - purity) //turns impure ratio into impure chem if(!(chemical_flags & REAGENT_SPLITRETAINVOL)) - M.reagents.remove_reagent(id, (impureVol), FALSE) + M.reagents.remove_reagent(type, (impureVol), FALSE) M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity) - log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [id]") + log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [type]") log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [impure_chem]") return @@ -140,18 +148,18 @@ if(!iscarbon(M)) return if (purity == 1) - log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [id]") + log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [type]") return cached_purity = purity //purity SHOULD be precalculated from the add_reagent, update cache. if (purity < 0) - CRASH("Purity below 0 for chem: [id], Please let Fermis Know!") + CRASH("Purity below 0 for chem: [type], Please let Fermis Know!") if(chemical_flags & REAGENT_DONOTSPLIT) return if ((inverse_chem_val > purity) && (inverse_chem)) //INVERT - M.reagents.remove_reagent(id, amount, FALSE) + M.reagents.remove_reagent(type, amount, FALSE) M.reagents.add_reagent(inverse_chem, amount, FALSE, other_purity = 1-cached_purity) - var/datum/reagent/R = M.reagents.has_reagent("[inverse_chem]") + var/datum/reagent/R = M.reagents.has_reagent(inverse_chem) if(R.chemical_flags & REAGENT_SNEAKYNAME) R.name = name//Negative effects are hidden if(R.chemical_flags & REAGENT_INVISIBLE) @@ -161,9 +169,9 @@ else if (impure_chem) //SPLIT var/impureVol = amount * (1 - purity) if(!(chemical_flags & REAGENT_SPLITRETAINVOL)) - M.reagents.remove_reagent(id, impureVol, FALSE) + M.reagents.remove_reagent(type, impureVol, FALSE) M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity) - log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [id]") + log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [type]") log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [impure_chem]") return @@ -180,29 +188,29 @@ /datum/reagent/proc/overdose_start(mob/living/M) to_chat(M, "You feel like you took too much of [name]!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name) return /datum/reagent/proc/addiction_act_stage1(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_light, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_light, name) if(prob(30)) to_chat(M, "You feel like having some [name] right about now.") return /datum/reagent/proc/addiction_act_stage2(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_medium, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_medium, name) if(prob(30)) to_chat(M, "You feel like you need [name]. You just can't get enough.") return /datum/reagent/proc/addiction_act_stage3(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_severe, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_severe, name) if(prob(30)) to_chat(M, "You have an intense craving for [name].") return /datum/reagent/proc/addiction_act_stage4(mob/living/M) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/withdrawal_critical, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_critical, name) if(prob(30)) to_chat(M, "You're not feeling good at all! You really need some [name].") return diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 077ab1fb7a..62a8d97b2d 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -8,7 +8,6 @@ /datum/reagent/consumable/ethanol name = "Ethanol" - id = "ethanol" description = "A well-known alcohol with a variety of applications." color = "#404030" // rgb: 64, 64, 48 nutriment_factor = 0 @@ -81,7 +80,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beer name = "Beer" - id = "beer" description = "An alcoholic beverage brewed since ancient times on Old Earth. Still popular today." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 1 * REAGENTS_METABOLISM @@ -94,7 +92,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beer/light name = "Light Beer" - id = "light_beer" description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety has reduced calorie and alcohol content." boozepwr = 5 //Space Europeans hate it taste_description = "dish water" @@ -105,7 +102,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beer/green name = "Green Beer" - id = "greenbeer" description = "An alcoholic beverage brewed since ancient times on Old Earth. This variety is dyed a festive green." color = "#A8E61D" taste_description = "green piss water" @@ -125,7 +121,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/kahlua name = "Kahlua" - id = "kahlua" description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -148,7 +143,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskey name = "Whiskey" - id = "whiskey" description = "A superb and well-aged single-malt whiskey. Damn." color = "#664300" // rgb: 102, 67, 0 boozepwr = 75 @@ -162,7 +156,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/thirteenloko name = "Thirteen Loko" - id = "thirteenloko" description = "A potent mixture of caffeine and alcohol." color = "#102000" // rgb: 16, 32, 0 nutriment_factor = 1 * REAGENTS_METABOLISM @@ -227,7 +220,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vodka name = "Vodka" - id = "vodka" description = "Number one drink AND fueling choice for Russians worldwide." color = "#0064C8" // rgb: 0, 100, 200 boozepwr = 65 @@ -245,7 +237,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bilk name = "Bilk" - id = "bilk" description = "This appears to be beer mixed with milk. Disgusting." color = "#895C4C" // rgb: 137, 92, 76 nutriment_factor = 2 * REAGENTS_METABOLISM @@ -264,7 +255,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/threemileisland name = "Three Mile Island Iced Tea" - id = "threemileisland" description = "Made for a woman, strong enough for a man." color = "#666340" // rgb: 102, 99, 64 boozepwr = 10 @@ -282,7 +272,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/gin name = "Gin" - id = "gin" description = "It's gin. In space. I say, good sir." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -295,7 +284,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/rum name = "Rum" - id = "rum" description = "Yohoho and all that." color = "#664300" // rgb: 102, 67, 0 boozepwr = 60 @@ -309,7 +297,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/tequila name = "Tequila" - id = "tequila" description = "A strong and mildly flavoured, Mexican produced spirit. Feeling thirsty, hombre?" color = "#FFFF91" // rgb: 255, 255, 145 boozepwr = 70 @@ -323,7 +310,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vermouth name = "Vermouth" - id = "vermouth" description = "You suddenly feel a craving for a martini..." color = "#91FF91" // rgb: 145, 255, 145 boozepwr = 45 @@ -337,7 +323,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/wine name = "Wine" - id = "wine" description = "A premium alcoholic beverage made from distilled grape juice." color = "#7E4043" // rgb: 126, 64, 67 boozepwr = 35 @@ -351,7 +336,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/lizardwine name = "Lizard wine" - id = "lizardwine" description = "An alcoholic beverage from Space China, made by infusing lizard tails in ethanol." color = "#7E4043" // rgb: 126, 64, 67 boozepwr = 45 @@ -362,7 +346,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/grappa name = "Grappa" - id = "grappa" description = "A fine Italian brandy, for when regular wine just isn't alcoholic enough for you." color = "#F8EBF1" boozepwr = 60 @@ -375,7 +358,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/cognac name = "Cognac" - id = "cognac" description = "A sweet and strongly alcoholic drink, made after numerous distillations and years of maturing. Classy as fornication." color = "#AB3C05" // rgb: 171, 60, 5 boozepwr = 75 @@ -389,7 +371,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/absinthe name = "Absinthe" - id = "absinthe" description = "A powerful alcoholic drink. Rumored to cause hallucinations but does not." color = rgb(10, 206, 0) boozepwr = 80 //Very strong even by default @@ -407,7 +388,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/hooch name = "Hooch" - id = "hooch" description = "Either someone's failure at cocktail making or attempt in alcohol production. In any case, do you really want to drink that?" color = "#664300" // rgb: 102, 67, 0 boozepwr = 100 @@ -424,7 +404,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/ale name = "Ale" - id = "ale" description = "A dark alcoholic beverage made with malted barley and yeast." color = "#664300" // rgb: 102, 67, 0 boozepwr = 65 @@ -437,7 +416,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/goldschlager name = "Goldschlager" - id = "goldschlager" description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break." color = "#FFFF91" // rgb: 255, 255, 145 boozepwr = 25 @@ -451,7 +429,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/patron name = "Patron" - id = "patron" description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." color = "#585840" // rgb: 88, 88, 64 boozepwr = 60 @@ -466,7 +443,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/gintonic name = "Gin and Tonic" - id = "gintonic" description = "An all time classic, mild cocktail." color = "#664300" // rgb: 102, 67, 0 boozepwr = 25 @@ -480,7 +456,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/rum_coke name = "Rum and Coke" - id = "rumcoke" description = "Rum, mixed with cola." taste_description = "cola" boozepwr = 40 @@ -494,7 +469,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/cuba_libre name = "Cuba Libre" - id = "cubalibre" description = "Viva la Revolucion! Viva Cuba Libre!" color = "#3E1B00" // rgb: 62, 27, 0 boozepwr = 50 @@ -517,7 +491,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskey_cola name = "Whiskey Cola" - id = "whiskeycola" description = "Whiskey, mixed with cola. Surprisingly refreshing." color = "#3E1B00" // rgb: 62, 27, 0 boozepwr = 70 @@ -530,7 +503,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/martini name = "Classic Martini" - id = "martini" description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." color = "#664300" // rgb: 102, 67, 0 boozepwr = 60 @@ -543,7 +515,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vodkamartini name = "Vodka Martini" - id = "vodkamartini" description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." color = "#664300" // rgb: 102, 67, 0 boozepwr = 65 @@ -557,7 +528,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/white_russian name = "White Russian" - id = "whiterussian" description = "That's just, like, your opinion, man..." color = "#A68340" // rgb: 166, 131, 64 boozepwr = 50 @@ -570,7 +540,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/screwdrivercocktail name = "Screwdriver" - id = "screwdrivercocktail" description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." color = "#A68310" // rgb: 166, 131, 16 boozepwr = 55 @@ -588,7 +557,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/booger name = "Booger" - id = "booger" description = "Ewww..." color = "#8CFF8C" // rgb: 140, 255, 140 boozepwr = 45 @@ -600,7 +568,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bloody_mary name = "Bloody Mary" - id = "bloodymary" description = "A strange yet pleasurable mixture made of vodka, tomato and lime juice. Or at least you THINK the red stuff is tomato juice." color = "#664300" // rgb: 102, 67, 0 boozepwr = 55 @@ -620,7 +587,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/brave_bull name = "Brave Bull" - id = "bravebull" description = "It's just as effective as Dutch-Courage!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 80 @@ -645,7 +611,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/tequila_sunrise name = "Tequila Sunrise" - id = "tequilasunrise" description = "Tequila, Grenadine, and Orange Juice." color = "#FFE48C" // rgb: 255, 228, 140 boozepwr = 45 @@ -664,7 +629,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/carbon/M) if(QDELETED(light_holder)) - M.reagents.del_reagent("tequilasunrise") //If we lost our light object somehow, remove the reagent + M.reagents.del_reagent(type) //If we lost our light object somehow, remove the reagent else if(light_holder.loc != M) light_holder.forceMove(M) return ..() @@ -675,7 +640,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/toxins_special name = "Toxins Special" - id = "toxinsspecial" description = "This thing is ON FIRE! CALL THE DAMN SHUTTLE!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 25 @@ -693,7 +657,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/beepsky_smash name = "Beepsky Smash" - id = "beepskysmash" description = "Drink this and prepare for the LAW." color = "#664300" // rgb: 102, 67, 0 boozepwr = 90 //THE FIST OF THE LAW IS STRONG AND HARD @@ -738,7 +701,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/irish_cream name = "Irish Cream" - id = "irishcream" description = "Whiskey-imbued cream, what else would you expect from the Irish?" color = "#664300" // rgb: 102, 67, 0 boozepwr = 50 @@ -751,7 +713,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/manly_dorf name = "The Manly Dorf" - id = "manlydorf" description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." color = "#664300" // rgb: 102, 67, 0 boozepwr = 100 //For the manly only @@ -779,7 +740,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/longislandicedtea name = "Long Island Iced Tea" - id = "longislandicedtea" description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -792,7 +752,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/moonshine name = "Moonshine" - id = "moonshine" description = "You've really hit rock bottom now... your liver packed its bags and left last night." color = "#664300" // rgb: 102, 67, 0 boozepwr = 95 @@ -804,7 +763,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/b52 name = "B-52" - id = "b52" description = "Coffee, Irish Cream, and cognac. You will get bombed." color = "#664300" // rgb: 102, 67, 0 boozepwr = 85 @@ -821,7 +779,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/irishcoffee name = "Irish Coffee" - id = "irishcoffee" description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -834,7 +791,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/margarita name = "Margarita" - id = "margarita" description = "On the rocks with salt on the rim. Arriba~!" color = "#8CFF8C" // rgb: 140, 255, 140 boozepwr = 35 @@ -847,7 +803,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/black_russian name = "Black Russian" - id = "blackrussian" description = "For the lactose-intolerant. Still as classy as a White Russian." color = "#360000" // rgb: 54, 0, 0 boozepwr = 70 @@ -861,7 +816,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/manhattan name = "Manhattan" - id = "manhattan" description = "The Detective's undercover drink of choice. He never could stomach gin..." color = "#664300" // rgb: 102, 67, 0 boozepwr = 30 @@ -875,7 +829,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/manhattan_proj name = "Manhattan Project" - id = "manhattan_proj" description = "A scientist's drink of choice, for pondering ways to blow up the station." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -893,7 +846,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskeysoda name = "Whiskey Soda" - id = "whiskeysoda" description = "For the more refined griffon." color = "#664300" // rgb: 102, 67, 0 boozepwr = 70 @@ -906,7 +858,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/antifreeze name = "Anti-freeze" - id = "antifreeze" description = "The ultimate refreshment. Not what it sounds like." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -923,7 +874,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/barefoot name = "Barefoot" - id = "barefoot" description = "Barefoot and pregnant." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -944,7 +894,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/snowwhite name = "Snow White" - id = "snowwhite" description = "A cold refreshment." color = "#FFFFFF" // rgb: 255, 255, 255 boozepwr = 35 @@ -957,7 +906,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/demonsblood //Prevents the imbiber from being dragged into a pool of blood by a slaughter demon. name = "Demon's Blood" - id = "demonsblood" description = "AHHHH!!!!" color = "#820000" // rgb: 130, 0, 0 boozepwr = 75 @@ -970,7 +918,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/devilskiss //If eaten by a slaughter demon, the demon will regret it. name = "Devil's Kiss" - id = "devilskiss" description = "Creepy time!" color = "#A68310" // rgb: 166, 131, 16 boozepwr = 70 @@ -983,7 +930,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vodkatonic name = "Vodka and Tonic" - id = "vodkatonic" description = "For when a gin and tonic isn't Russian enough." color = "#0064C8" // rgb: 0, 100, 200 boozepwr = 70 @@ -996,7 +942,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/ginfizz name = "Gin Fizz" - id = "ginfizz" description = "Refreshingly lemony, deliciously dry." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -1009,7 +954,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bahama_mama name = "Bahama Mama" - id = "bahama_mama" description = "Tropical cocktail." color = "#FF7F3B" // rgb: 255, 127, 59 boozepwr = 35 @@ -1022,7 +966,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/singulo name = "Singulo" - id = "singulo" description = "A blue-space beverage!" color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 35 @@ -1035,7 +978,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sbiten name = "Sbiten" - id = "sbiten" description = "A spicy Vodka! Might be a little hot for the little guys!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 70 @@ -1052,7 +994,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/red_mead name = "Red Mead" - id = "red_mead" description = "The true Viking drink! Even though it has a strange red color." color = "#C73C00" // rgb: 199, 60, 0 boozepwr = 31 //Red drinks are stronger @@ -1065,7 +1006,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/mead name = "Mead" - id = "mead" description = "A Viking drink, though a cheap one." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 1 * REAGENTS_METABOLISM @@ -1079,7 +1019,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/iced_beer name = "Iced Beer" - id = "iced_beer" description = "A beer which is so cold the air around it freezes." color = "#664300" // rgb: 102, 67, 0 boozepwr = 15 @@ -1095,7 +1034,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/grog name = "Grog" - id = "grog" description = "Watered down rum, Nanotrasen approves!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 1 //Basically nothing @@ -1107,7 +1045,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/aloe name = "Aloe" - id = "aloe" description = "So very, very, very good." color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -1120,7 +1057,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/andalusia name = "Andalusia" - id = "andalusia" description = "A nice, strangely named drink." color = "#664300" // rgb: 102, 67, 0 boozepwr = 40 @@ -1133,7 +1069,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/alliescocktail name = "Allies Cocktail" - id = "alliescocktail" description = "A drink made from your allies. Not as sweet as those made from your enemies." color = "#664300" // rgb: 102, 67, 0 boozepwr = 45 @@ -1146,7 +1081,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/acid_spit name = "Acid Spit" - id = "acidspit" description = "A drink for the daring, can be deadly if incorrectly prepared!" color = "#365000" // rgb: 54, 80, 0 boozepwr = 80 @@ -1159,7 +1093,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/amasec name = "Amasec" - id = "amasec" description = "Official drink of the Nanotrasen Gun-Club!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 35 @@ -1172,7 +1105,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/changelingsting name = "Changeling Sting" - id = "changelingsting" description = "You take a tiny sip and feel a burning sensation..." color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 95 @@ -1193,7 +1125,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/irishcarbomb name = "Irish Car Bomb" - id = "irishcarbomb" description = "Mmm, tastes like chocolate cake..." color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 25 @@ -1206,7 +1137,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/syndicatebomb name = "Syndicate Bomb" - id = "syndicatebomb" description = "Tastes like terrorism!" color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 90 @@ -1224,7 +1154,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/erikasurprise name = "Erika Surprise" - id = "erikasurprise" description = "The surprise is, it's green!" color = "#2E6671" // rgb: 46, 102, 113 boozepwr = 35 @@ -1237,7 +1166,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/driestmartini name = "Driest Martini" - id = "driestmartini" description = "Only for the experienced. You think you see sand floating in the glass." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#2E6671" // rgb: 46, 102, 113 @@ -1251,7 +1179,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bananahonk name = "Banana Honk" - id = "bananahonk" description = "A drink from Clown Heaven." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#FFFF91" // rgb: 255, 255, 140 @@ -1271,7 +1198,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/silencer name = "Silencer" - id = "silencer" description = "A drink from Mime Heaven." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#664300" // rgb: 102, 67, 0 @@ -1291,7 +1217,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/drunkenblumpkin name = "Drunken Blumpkin" - id = "drunkenblumpkin" description = "A weird mix of whiskey and blumpkin juice." color = "#1EA0FF" // rgb: 102, 67, 0 boozepwr = 50 @@ -1304,7 +1229,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/whiskey_sour //Requested since we had whiskey cola and soda but not sour. name = "Whiskey Sour" - id = "whiskey_sour" description = "Lemon juice/whiskey/sugar mixture. Moderate alcohol content." color = rgb(255, 201, 49) boozepwr = 35 @@ -1317,7 +1241,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/hcider name = "Hard Cider" - id = "hcider" description = "Apple juice, for adults." color = "#CD6839" nutriment_factor = 1 * REAGENTS_METABOLISM @@ -1331,7 +1254,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fetching_fizz //A reference to one of my favorite games of all time. Pulls nearby ores to the imbiber! name = "Fetching Fizz" - id = "fetching_fizz" description = "Whiskey sour/iron/uranium mixture resulting in a highly magnetic slurry. Mild alcohol content." //Requires no alcohol to make but has alcohol anyway because ~magic~ color = rgb(255, 91, 15) boozepwr = 10 @@ -1351,7 +1273,6 @@ All effects don't start immediately, but rather get worse over time; the rate is //Another reference. Heals those in critical condition extremely quickly. /datum/reagent/consumable/ethanol/hearty_punch name = "Hearty Punch" - id = "hearty_punch" description = "Brave bull/syndicate bomb/absinthe mixture resulting in an energizing beverage. Mild alcohol content." color = rgb(140, 0, 0) boozepwr = 90 @@ -1375,7 +1296,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bacchus_blessing //An EXTREMELY powerful drink. Smashed in seconds, dead in minutes. name = "Bacchus' Blessing" - id = "bacchus_blessing" description = "Unidentifiable mixture. Unmeasurably high alcohol content." color = rgb(51, 19, 3) //Sickly brown boozepwr = 300 //I warned you @@ -1388,7 +1308,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/atomicbomb name = "Atomic Bomb" - id = "atomicbomb" description = "Nuclear proliferation never tasted so good." color = "#666300" // rgb: 102, 99, 0 boozepwr = 0 //custom drunk effect @@ -1418,7 +1337,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/gargle_blaster name = "Pan-Galactic Gargle Blaster" - id = "gargleblaster" description = "Whoah, this stuff looks volatile!" color = "#664300" // rgb: 102, 67, 0 boozepwr = 0 //custom drunk effect @@ -1447,7 +1365,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/neurotoxin name = "Neurotoxin" - id = "neurotoxin" description = "A strong neurotoxin that puts the subject into a death-like state." color = "#2E2E61" // rgb: 46, 46, 97 boozepwr = 50 @@ -1458,9 +1375,9 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Neurotoxin" glass_desc = "A drink that is guaranteed to knock you silly." //SplitChem = TRUE - impure_chem = "neuroweak" + impure_chem = /datum/reagent/consumable/ethanol/neuroweak inverse_chem_val = 0.5 //Clear conversion - inverse_chem = "neuroweak" + inverse_chem = /datum/reagent/consumable/ethanol/neuroweak value = 4 /datum/reagent/consumable/ethanol/neurotoxin/proc/pickt() @@ -1470,12 +1387,12 @@ All effects don't start immediately, but rather get worse over time; the rate is M.set_drugginess(50) M.dizziness +=2 M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM, 150) - if(prob(20) && !holder.has_reagent("neuroweak")) + if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak)) M.adjustStaminaLoss(10) M.drop_all_held_items() to_chat(M, "You cant feel your hands!") if(current_cycle > 5) - if(prob(20) && !holder.has_reagent("neuroweak")) + if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak)) var/t = pickt() ADD_TRAIT(M, t, type) M.adjustStaminaLoss(10) @@ -1499,19 +1416,18 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/neuroweak name = "Neuro-Smash" - id = "neuroweak" description = "A mostly safe alcoholic drink for the true daredevils. Counteracts Neurotoxins." boozepwr = 60 pH = 8 value = 3 /datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M) - if(holder.has_reagent("neurotoxin")) + if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin)) M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150) - M.reagents.remove_reagent("neurotoxin", 1.5 * REAGENTS_METABOLISM, FALSE) - if(holder.has_reagent("fentanyl")) + M.reagents.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 1.5 * REAGENTS_METABOLISM, FALSE) + else if(holder.has_reagent(/datum/reagent/toxin/fentanyl)) M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150) - M.reagents.remove_reagent("fentanyl", 0.75 * REAGENTS_METABOLISM, FALSE) + M.reagents.remove_reagent(/datum/reagent/toxin/fentanyl, 0.75 * REAGENTS_METABOLISM, FALSE) else M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -0.5*REM, 150) M.dizziness +=2 @@ -1519,7 +1435,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/hippies_delight name = "Hippie's Delight" - id = "hippiesdelight" description = "You just don't get it maaaan." color = "#664300" // rgb: 102, 67, 0 nutriment_factor = 0 @@ -1565,7 +1480,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/eggnog name = "Eggnog" - id = "eggnog" description = "The traditional way to get absolutely hammered at a Christmas party." color = "#fcfdc6" // rgb: 252, 253, 198 nutriment_factor = 2 * REAGENTS_METABOLISM @@ -1580,7 +1494,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/narsour name = "Nar'Sour" - id = "narsour" description = "Side effects include self-mutilation and hoarding plasteel." color = RUNE_COLOR_DARKRED boozepwr = 10 @@ -1598,7 +1511,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/triple_sec name = "Triple Sec" - id = "triple_sec" description = "A sweet and vibrant orange liqueur." color = "#ffcc66" boozepwr = 30 @@ -1610,7 +1522,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/creme_de_menthe name = "Creme de Menthe" - id = "creme_de_menthe" description = "A minty liqueur excellent for refreshing, cool drinks." color = "#00cc00" boozepwr = 20 @@ -1622,7 +1533,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/creme_de_cacao name = "Creme de Cacao" - id = "creme_de_cacao" description = "A chocolatey liqueur excellent for adding dessert notes to beverages and bribing sororities." color = "#996633" boozepwr = 20 @@ -1634,7 +1544,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/quadruple_sec name = "Quadruple Sec" - id = "quadruple_sec" description = "Kicks just as hard as licking the powercell on a baton, but tastier." color = "#cc0000" boozepwr = 35 @@ -1654,7 +1563,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/quintuple_sec name = "Quintuple Sec" - id = "quintuple_sec" description = "Law, Order, Alcohol, and Police Brutality distilled into one single elixir of JUSTICE." color = "#ff3300" boozepwr = 80 @@ -1677,7 +1585,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/grasshopper name = "Grasshopper" - id = "grasshopper" description = "A fresh and sweet dessert shooter. Difficult to look manly while drinking this." color = "00ff00" boozepwr = 25 @@ -1690,7 +1597,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/stinger name = "Stinger" - id = "stinger" description = "A snappy way to end the day." color = "ccff99" boozepwr = 25 @@ -1703,7 +1609,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bastion_bourbon name = "Bastion Bourbon" - id = "bastion_bourbon" description = "Soothing hot herbal brew with restorative properties. Hints of citrus and berry flavors." color = "#00FFFF" boozepwr = 30 @@ -1743,7 +1648,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/squirt_cider name = "Squirt Cider" - id = "squirt_cider" description = "Fermented squirt extract with a nose of stale bread and ocean water. Whatever a squirt is." color = "#FF0000" boozepwr = 40 @@ -1762,7 +1666,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fringe_weaver name = "Fringe Weaver" - id = "fringe_weaver" description = "Bubbly, classy, and undoubtedly strong - a Glitch City classic." color = "#FFEAC4" boozepwr = 90 //classy hooch, essentially, but lower pwr to make up for slightly easier access @@ -1775,7 +1678,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sugar_rush name = "Sugar Rush" - id = "sugar_rush" description = "Sweet, light, and fruity - as girly as it gets." color = "#FF226C" boozepwr = 10 @@ -1794,7 +1696,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/crevice_spike name = "Crevice Spike" - id = "crevice_spike" description = "Sour, bitter, and smashingly sobering." color = "#5BD231" boozepwr = -10 //sobers you up - ideally, one would drink to get hit with brute damage now to avoid alcohol problems later @@ -1810,7 +1711,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sake name = "Sake" - id = "sake" description = "A sweet rice wine of questionable legality and extreme potency." color = "#DDDDDD" boozepwr = 70 @@ -1822,7 +1722,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/peppermint_patty name = "Peppermint Patty" - id = "peppermint_patty" description = "This lightly alcoholic drink combines the benefits of menthol and cocoa." color = "#45ca7a" taste_description = "mint and chocolate" @@ -1840,7 +1739,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/alexander name = "Alexander" - id = "alexander" description = "Named after a Greek hero, this mix is said to embolden a user's shield as if they were in a phalanx." color = "#F5E9D3" boozepwr = 80 @@ -1864,7 +1762,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/alexander/on_mob_life(mob/living/L) ..() if(mighty_shield && !(mighty_shield in L.contents)) //If you had a shield and lose it, you lose the reagent as well. Otherwise this is just a normal drink. - L.reagents.del_reagent("alexander") + L.reagents.del_reagent(type) /datum/reagent/consumable/ethanol/alexander/on_mob_end_metabolize(mob/living/L) if(mighty_shield) @@ -1874,7 +1772,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/sidecar name = "Sidecar" - id = "sidecar" description = "The one ride you'll gladly give up the wheel for." color = "#FFC55B" boozepwr = 80 @@ -1887,7 +1784,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/between_the_sheets name = "Between the Sheets" - id = "between_the_sheets" description = "A provocatively named classic. Funny enough, doctors recommend drinking it before taking a nap." color = "#F4C35A" boozepwr = 80 @@ -1913,7 +1809,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/kamikaze name = "Kamikaze" - id = "kamikaze" description = "Divinely windy." color = "#EEF191" boozepwr = 60 @@ -1926,7 +1821,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/mojito name = "Mojito" - id = "mojito" description = "A drink that looks as refreshing as it tastes." color = "#DFFAD9" boozepwr = 30 @@ -1939,7 +1833,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fernet name = "Fernet" - id = "fernet" description = "An incredibly bitter herbal liqueur used as a digestif." color = "#1B2E24" // rgb: 27, 46, 36 boozepwr = 80 @@ -1957,7 +1850,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fernet_cola name = "Fernet Cola" - id = "fernet_cola" description = "A very popular and bittersweet digestif, ideal after a heavy meal. Best served on a sawed-off cola bottle as per tradition." color = "#390600" // rgb: 57, 6, 0 boozepwr = 25 @@ -1978,7 +1870,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fanciulli name = "Fanciulli" - id = "fanciulli" description = "What if the Manhattan coctail ACTUALLY used a bitter herb liquour? Helps you sobers up." //also causes a bit of stamina damage to symbolize the afterdrink lazyness color = "#CA933F" // rgb: 202, 147, 63 boozepwr = -10 @@ -2003,7 +1894,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/branca_menta name = "Branca Menta" - id = "branca_menta" description = "A refreshing mixture of bitter Fernet with mint creme liquour." color = "#4B5746" // rgb: 75, 87, 70 boozepwr = 35 @@ -2026,7 +1916,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/blank_paper name = "Blank Paper" - id = "blank_paper" description = "A bubbling glass of blank paper. Just looking at it makes you feel fresh." nutriment_factor = 1 * REAGENTS_METABOLISM color = "#DCDCDC" // rgb: 220, 220, 220 @@ -2046,7 +1935,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/champagne //How the hell did we not have champagne already!? name = "Champagne" - id = "champagne" description = "A sparkling wine known for its ability to strike fast and hard." color = "#ffffc1" boozepwr = 40 @@ -2058,7 +1946,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/wizz_fizz name = "Wizz Fizz" - id = "wizz_fizz" description = "A magical potion, fizzy and wild! However the taste, you will find, is quite mild." color = "#4235d0" //Just pretend that the triple-sec was blue curacao. boozepwr = 50 @@ -2079,7 +1966,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/bug_spray name = "Bug Spray" - id = "bug_spray" description = "A harsh, acrid, bitter drink, for those who need something to brace themselves." color = "#33ff33" boozepwr = 50 @@ -2103,7 +1989,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/applejack name = "Applejack" - id = "applejack" description = "The perfect beverage for when you feel the need to horse around." color = "#ff6633" boozepwr = 20 @@ -2115,7 +2000,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/jack_rose name = "Jack Rose" - id = "jack_rose" description = "A light cocktail perfect for sipping with a slice of pie." color = "#ff6633" boozepwr = 15 @@ -2128,7 +2012,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/turbo name = "Turbo" - id = "turbo" description = "A turbulent cocktail associated with outlaw hoverbike racing. Not for the faint of heart." color = "#e94c3a" boozepwr = 85 @@ -2147,7 +2030,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/old_timer name = "Old Timer" - id = "old_timer" description = "An archaic potation enjoyed by old coots of all ages." color = "#996835" boozepwr = 35 @@ -2168,7 +2050,7 @@ All effects don't start immediately, but rather get worse over time; the rate is N.hair_color = "ccc" N.update_hair() if(N.age > 100) - N.become_nearsighted(id) + N.become_nearsighted(type) if(N.gender == MALE) N.facial_hair_style = "Beard (Very Long)" N.update_hair() @@ -2181,7 +2063,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/rubberneck name = "Rubberneck" - id = "rubberneck" description = "A quality rubberneck should not contain any gross natural ingredients." color = "#ffe65b" boozepwr = 60 @@ -2194,7 +2075,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/duplex name = "Duplex" - id = "duplex" description = "An inseparable combination of two fruity drinks." color = "#50e5cf" boozepwr = 25 @@ -2207,7 +2087,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/trappist name = "Trappist Beer" - id = "trappist" description = "A strong dark ale brewed by space-monks." color = "#390c00" boozepwr = 40 @@ -2227,7 +2106,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/blazaam name = "Blazaam" - id = "blazaam" description = "A strange drink that few people seem to remember existing. Doubles as a Berenstain remover." boozepwr = 70 quality = DRINK_FANTASTIC @@ -2251,7 +2129,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/planet_cracker name = "Planet Cracker" - id = "planet_cracker" description = "This jubilant drink celebrates humanity's triumph over the alien menace. May be offensive to non-human crewmembers." boozepwr = 50 quality = DRINK_FANTASTIC @@ -2263,7 +2140,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/commander_and_chief name = "Commander and Chief" - id = "commander_and_chief" description = "A cocktail for the captain on the go." color = "#ffffc9" boozepwr = 50 @@ -2287,7 +2163,6 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/fruit_wine name = "Fruit Wine" - id = "fruit_wine" description = "A wine made from grown plants." color = "#FFFFFF" boozepwr = 35 diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index ada4cd8d8e..fba0b47eb4 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -47,7 +47,6 @@ //does brute damage but can replicate when damaged and has a chance of expanding again /datum/reagent/blob/replicating_foam name = "Replicating Foam" - id = "replicating_foam" description = "will do medium brute damage and occasionally expand again when expanding." shortdesc = "will do medium brute damage." effectdesc = "will also expand when attacked with burn damage, but takes more brute damage." @@ -78,7 +77,6 @@ //does massive brute and burn damage, but can only expand manually /datum/reagent/blob/networked_fibers name = "Networked Fibers" - id = "networked_fibers" description = "will do high brute and burn damage and will generate resources quicker, but can only expand manually." shortdesc = "will do high brute and burn damage." taste_description = "efficiency" @@ -112,7 +110,6 @@ //does brute damage, shifts away when damaged /datum/reagent/blob/shifting_fragments name = "Shifting Fragments" - id = "shifting_fragments" description = "will do medium brute damage." effectdesc = "will also cause blob parts to shift away when attacked." taste_description = "something other-dimensional" @@ -134,7 +131,7 @@ if((damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") && damage > 0 && B.obj_integrity - damage > 0 && prob(60-damage)) var/list/blobstopick = list() for(var/obj/structure/blob/OB in orange(1, B)) - if((istype(OB, /obj/structure/blob/normal) || (istype(OB, /obj/structure/blob/shield) && prob(25))) && OB.overmind && OB.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) + if((istype(OB, /obj/structure/blob/normal) || (istype(OB, /obj/structure/blob/shield) && prob(25))) && OB.overmind && OB.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) blobstopick += OB //as long as the blob picked is valid; ie, a normal or shield blob that has the same chemical as we do, we can swap with it if(blobstopick.len) var/obj/structure/blob/targeted = pick(blobstopick) //randomize the blob chosen, because otherwise it'd tend to the lower left @@ -146,7 +143,6 @@ //sets you on fire, does burn damage, explodes into flame when burnt, weak to water /datum/reagent/blob/blazing_oil name = "Blazing Oil" - id = "blazing_oil" description = "will do medium burn damage and set targets on fire." effectdesc = "will also release bursts of flame when burnt, but takes damage from water." taste_description = "burning oil" @@ -174,7 +170,7 @@ if(damage_type == BURN && damage_flag != "energy") for(var/turf/open/T in range(1, B)) var/obj/structure/blob/C = locate() in T - if(!(C && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) && prob(80)) + if(!(C && C.overmind && C.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) && prob(80)) new /obj/effect/hotspot(T) if(damage_flag == "fire") return 0 @@ -183,7 +179,6 @@ //does toxin damage, hallucination, targets think they're not hurt at all /datum/reagent/blob/regenerative_materia name = "Regenerative Materia" - id = "regenerative_materia" description = "will do toxin damage and cause targets to believe they are fully healed." analyzerdescdamage = "Does toxin damage and injects a toxin that causes the target to believe they are fully healed." taste_description = "heaven" @@ -195,8 +190,8 @@ reac_volume = ..() M.adjust_drugginess(reac_volume) if(M.reagents) - M.reagents.add_reagent("regenerative_materia", 0.2*reac_volume) - M.reagents.add_reagent("spore", 0.2*reac_volume) + M.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 0.2*reac_volume) + M.reagents.add_reagent(/datum/reagent/toxin/spore, 0.2*reac_volume) M.apply_damage(0.7*reac_volume, TOX) /datum/reagent/blob/regenerative_materia/on_mob_life(mob/living/carbon/C) @@ -213,7 +208,6 @@ //kills sleeping targets and turns them into blob zombies, produces fragile spores when killed or on expanding /datum/reagent/blob/zombifying_pods name = "Zombifying Pods" - id = "zombifying_pods" description = "will do very low toxin damage and harvest sleeping targets for additional resources and a blob zombie." effectdesc = "will also produce fragile spores when killed and on expanding." taste_description = "fungi" @@ -257,7 +251,6 @@ //does tons of oxygen damage and a little stamina, immune to tesla bolts, weak to EMP /datum/reagent/blob/energized_jelly name = "Energized Jelly" - id = "energized_jelly" description = "will cause low stamina and high oxygen damage, and cause targets to be unable to breathe." taste_description = "gelatin" effectdesc = "will also conduct electricity, but takes damage from EMPs." @@ -289,7 +282,6 @@ //does aoe brute damage when hitting targets, is immune to explosions /datum/reagent/blob/explosive_lattice name = "Explosive Lattice" - id = "explosive_lattice" description = "will do brute damage in an area around targets." taste_description = "the bomb" effectdesc = "will also resist explosions, but takes increased damage from fire and other energy sources." @@ -326,7 +318,6 @@ //does brute, burn, and toxin damage, and cools targets down /datum/reagent/blob/cryogenic_poison name = "Cryogenic Poison" - id = "cryogenic_poison" description = "will inject targets with a freezing poison that does high damage over time." analyzerdescdamage = "Injects targets with a freezing poison that will gradually solidify the target's internal organs." color = "#8BA6E9" @@ -339,9 +330,9 @@ /datum/reagent/blob/cryogenic_poison/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M.reagents) - M.reagents.add_reagent("frostoil", 0.3*reac_volume) - M.reagents.add_reagent("ice", 0.3*reac_volume) - M.reagents.add_reagent("cryogenic_poison", 0.3*reac_volume) + M.reagents.add_reagent(/datum/reagent/consumable/frostoil, 0.3*reac_volume) + M.reagents.add_reagent(/datum/reagent/consumable/ice, 0.3*reac_volume) + M.reagents.add_reagent(/datum/reagent/blob/cryogenic_poison, 0.3*reac_volume) M.apply_damage(0.2*reac_volume, BRUTE) /datum/reagent/blob/cryogenic_poison/on_mob_life(mob/living/carbon/M) @@ -354,7 +345,6 @@ //does burn damage and EMPs, slightly fragile /datum/reagent/blob/electromagnetic_web name = "Electromagnetic Web" - id = "electromagnetic_web" description = "will do high burn damage and EMP targets." taste_description = "pop rocks" effectdesc = "will also take massively increased damage and release an EMP when killed." @@ -391,7 +381,6 @@ //does brute damage, bonus damage for each nearby blob, and spreads damage out /datum/reagent/blob/synchronous_mesh name = "Synchronous Mesh" - id = "synchronous_mesh" description = "will do massively increased brute damage for each blob near the target." effectdesc = "will also spread damage between each blob near the attacked blob." taste_description = "toxic mold" @@ -415,10 +404,10 @@ if(damage_flag == "melee" || damage_flag == "bullet" || damage_flag == "laser") //the cause isn't fire or bombs, so split the damage var/damagesplit = 1 //maximum split is 9, reducing the damage each blob takes to 11% but doing that damage to 9 blobs for(var/obj/structure/blob/C in orange(1, B)) - if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) //if it doesn't have the same chemical or is a core or node, don't split damage to it + if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) //if it doesn't have the same chemical or is a core or node, don't split damage to it damagesplit += 1 for(var/obj/structure/blob/C in orange(1, B)) - if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.id == B.overmind.blob_reagent_datum.id) //only hurt blobs that have the same overmind chemical and aren't cores or nodes + if(!istype(C, /obj/structure/blob/core) && !istype(C, /obj/structure/blob/node) && C.overmind && C.overmind.blob_reagent_datum.type == B.overmind.blob_reagent_datum.type) //only hurt blobs that have the same overmind chemical and aren't cores or nodes C.take_damage(damage/damagesplit, CLONE, 0, 0) return damage / damagesplit else @@ -427,7 +416,6 @@ //does brute damage through armor and bio resistance /datum/reagent/blob/reactive_spines name = "Reactive Spines" - id = "reactive_spines" description = "will do medium brute damage through armor and bio resistance." taste_description = "rock" effectdesc = "will also react when attacked with brute damage, attacking all near the attacked blob." @@ -454,7 +442,6 @@ //does low brute damage, oxygen damage, and stamina damage and wets tiles when damaged /datum/reagent/blob/pressurized_slime name = "Pressurized Slime" - id = "pressurized_slime" description = "will do low brute, oxygen, and stamina damage, and wet tiles under targets." effectdesc = "will also wet tiles near blobs that are attacked or killed." taste_description = "a sponge" diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index e8551074e7..6460bfed78 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -6,7 +6,6 @@ /datum/reagent/consumable/orangejuice name = "Orange Juice" - id = "orangejuice" description = "Both delicious AND rich in Vitamin C, what more do you need?" color = "#E78108" // rgb: 231, 129, 8 taste_description = "oranges" @@ -23,7 +22,6 @@ /datum/reagent/consumable/tomatojuice name = "Tomato Juice" - id = "tomatojuice" description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" color = "#731008" // rgb: 115, 16, 8 taste_description = "tomatoes" @@ -39,7 +37,6 @@ /datum/reagent/consumable/limejuice name = "Lime Juice" - id = "limejuice" description = "The sweet-sour juice of limes." color = "#365E30" // rgb: 54, 94, 48 taste_description = "unbearable sourness" @@ -56,7 +53,6 @@ /datum/reagent/consumable/carrotjuice name = "Carrot Juice" - id = "carrotjuice" description = "It is just like a carrot but without crunching." color = "#973800" // rgb: 151, 56, 0 taste_description = "carrots" @@ -78,7 +74,6 @@ /datum/reagent/consumable/berryjuice name = "Berry Juice" - id = "berryjuice" description = "A delicious blend of several different kinds of berries." color = "#863333" // rgb: 134, 51, 51 taste_description = "berries" @@ -88,7 +83,6 @@ /datum/reagent/consumable/applejuice name = "Apple Juice" - id = "applejuice" description = "The sweet juice of an apple, fit for all ages." color = "#ECFF56" // rgb: 236, 255, 86 taste_description = "apples" @@ -96,7 +90,6 @@ /datum/reagent/consumable/poisonberryjuice name = "Poison Berry Juice" - id = "poisonberryjuice" description = "A tasty juice blended from various kinds of very deadly and toxic berries." color = "#863353" // rgb: 134, 51, 83 taste_description = "berries" @@ -111,7 +104,6 @@ /datum/reagent/consumable/watermelonjuice name = "Watermelon Juice" - id = "watermelonjuice" description = "Delicious juice made from watermelon." color = "#863333" // rgb: 134, 51, 51 taste_description = "juicy watermelon" @@ -121,7 +113,6 @@ /datum/reagent/consumable/lemonjuice name = "Lemon Juice" - id = "lemonjuice" description = "This juice is VERY sour." color = "#863333" // rgb: 175, 175, 0 taste_description = "sourness" @@ -132,7 +123,6 @@ /datum/reagent/consumable/banana name = "Banana Juice" - id = "banana" description = "The raw essence of a banana. HONK" color = "#863333" // rgb: 175, 175, 0 taste_description = "banana" @@ -148,7 +138,6 @@ /datum/reagent/consumable/nothing name = "Nothing" - id = "nothing" description = "Absolutely nothing." taste_description = "nothing" glass_icon_state = "nothing" @@ -164,7 +153,6 @@ /datum/reagent/consumable/laughter name = "Laughter" - id = "laughter" description = "Some say that this is the best medicine, but recent studies have proven that to be untrue." metabolization_rate = INFINITY color = "#FF4DD2" @@ -177,7 +165,6 @@ /datum/reagent/consumable/superlaughter name = "Super Laughter" - id = "superlaughter" description = "Funny until you're the one laughing." metabolization_rate = 1.5 * REAGENTS_METABOLISM color = "#FF4DD2" @@ -192,7 +179,6 @@ /datum/reagent/consumable/potato_juice name = "Potato Juice" - id = "potato" description = "Juice of the potato. Bleh." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 @@ -203,14 +189,12 @@ /datum/reagent/consumable/grapejuice name = "Grape Juice" - id = "grapejuice" description = "The juice of a bunch of grapes. Guaranteed non-alcoholic." color = "#290029" // dark purple taste_description = "grape soda" /datum/reagent/consumable/milk name = "Milk" - id = "milk" description = "An opaque white liquid produced by the mammary glands of mammals." color = "#DFDFDF" // rgb: 223, 223, 223 taste_description = "milk" @@ -227,13 +211,12 @@ if(M.getBruteLoss() && prob(20)) M.heal_bodypart_damage(1,0, 0) . = 1 - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 2) + if(holder.has_reagent(/datum/reagent/consumable/capsaicin)) + holder.remove_reagent(/datum/reagent/consumable/capsaicin, 2) ..() /datum/reagent/consumable/soymilk name = "Soy Milk" - id = "soymilk" description = "An opaque white liquid made from soybeans." color = "#DFDFC7" // rgb: 223, 223, 199 taste_description = "soy milk" @@ -249,7 +232,6 @@ /datum/reagent/consumable/coconutmilk name = "Coconut Milk" - id = "coconutmilk" description = "A transparent white liquid extracted from coconuts. Rich in taste." color = "#DFDFDF" // rgb: 223, 223, 223 taste_description = "sweet milk" @@ -266,7 +248,6 @@ /datum/reagent/consumable/cream name = "Cream" - id = "cream" description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" color = "#DFD7AF" // rgb: 223, 215, 175 taste_description = "creamy milk" @@ -282,7 +263,6 @@ /datum/reagent/consumable/coffee name = "Coffee" - id = "coffee" description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." color = "#482000" // rgb: 72, 32, 0 nutriment_factor = 0 @@ -302,14 +282,13 @@ M.AdjustSleeping(-40, FALSE) //310.15 is the normal bodytemp. M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) - if(holder.has_reagent("frostoil")) - holder.remove_reagent("frostoil", 5) + if(holder.has_reagent(/datum/reagent/consumable/frostoil)) + holder.remove_reagent(/datum/reagent/consumable/frostoil, 5) ..() . = 1 /datum/reagent/consumable/tea name = "Tea" - id = "tea" description = "Tasty black tea, it has antioxidants, it's good for you!" color = "#101000" // rgb: 16, 16, 0 nutriment_factor = 0 @@ -331,7 +310,6 @@ /datum/reagent/consumable/lemonade name = "Lemonade" - id = "lemonade" description = "Sweet, tangy lemonade. Good for the soul." quality = DRINK_NICE taste_description = "sunshine and summertime" @@ -341,7 +319,6 @@ /datum/reagent/consumable/tea/arnold_palmer name = "Arnold Palmer" - id = "arnold_palmer" description = "Encourages the patient to go golfing." color = "#FFB766" quality = DRINK_NICE @@ -359,7 +336,6 @@ /datum/reagent/consumable/icecoffee name = "Iced Coffee" - id = "icecoffee" description = "Coffee and ice, refreshing and cool." color = "#102838" // rgb: 16, 40, 56 nutriment_factor = 0 @@ -379,7 +355,6 @@ /datum/reagent/consumable/icetea name = "Iced Tea" - id = "icetea" description = "No relation to a certain rap artist/actor." color = "#104038" // rgb: 16, 64, 56 nutriment_factor = 0 @@ -400,7 +375,6 @@ /datum/reagent/consumable/space_cola name = "Cola" - id = "cola" description = "A refreshing beverage." color = "#100800" // rgb: 16, 8, 0 taste_description = "cola" @@ -415,7 +389,6 @@ /datum/reagent/consumable/nuka_cola name = "Nuka Cola" - id = "nuka_cola" description = "Cola, cola never changes." color = "#100800" // rgb: 16, 8, 0 quality = DRINK_VERYGOOD @@ -424,10 +397,6 @@ glass_name = "glass of Nuka Cola" glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland." -/datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(id) - ..() - /datum/reagent/consumable/nuka_cola/on_mob_life(mob/living/carbon/M) M.Jitter(20) M.set_drugginess(30) @@ -440,7 +409,6 @@ /datum/reagent/consumable/spacemountainwind name = "SM Wind" - id = "spacemountainwind" description = "Blows right through you like a space wind." color = "#102000" // rgb: 16, 32, 0 taste_description = "sweet citrus soda" @@ -458,7 +426,6 @@ /datum/reagent/consumable/dr_gibb name = "Dr. Gibb" - id = "dr_gibb" description = "A delicious blend of 42 different flavours." color = "#102000" // rgb: 16, 32, 0 taste_description = "cherry soda" // FALSE ADVERTISING @@ -473,7 +440,6 @@ /datum/reagent/consumable/space_up name = "Space-Up" - id = "space_up" description = "Tastes like a hull breach in your mouth." color = "#00FF00" // rgb: 0, 255, 0 taste_description = "cherry soda" @@ -489,7 +455,6 @@ /datum/reagent/consumable/lemon_lime name = "Lemon Lime" description = "A tangy substance made of 0.5% natural citrus!" - id = "lemon_lime" color = "#8CFF00" // rgb: 135, 255, 0 taste_description = "tangy lime and lemon soda" glass_icon_state = "glass_yellow" @@ -503,7 +468,6 @@ /datum/reagent/consumable/pwr_game name = "Pwr Game" description = "The only drink with the PWR that true gamers crave." - id = "pwr_game" color = "#9385bf" // rgb: 58, 52, 75 taste_description = "sweet and salty tang" glass_icon_state = "glass_red" @@ -517,7 +481,6 @@ /datum/reagent/consumable/shamblers name = "Shambler's Juice" description = "~Shake me up some of that Shambler's Juice!~" - id = "shamblers" color = "#f00060" // rgb: 94, 0, 38 taste_description = "carbonated metallic soda" glass_icon_state = "glass_red" @@ -531,7 +494,6 @@ /datum/reagent/consumable/buzz_fuzz name = "Buzz Fuzz" description = "~A Hive of Flavour!~ NOTICE: Addicting." - id = "buzz_fuzz" addiction_threshold = 26 //A can and a sip color = "#8CFF00" // rgb: 135, 255, 0 taste_description = "carbonated honey and pollen" @@ -540,9 +502,9 @@ glass_desc = "Stinging with flavour." /datum/reagent/consumable/buzz_fuzz/on_mob_life(mob/living/carbon/M) - M.reagents.add_reagent("sugar",1) + M.reagents.add_reagent(/datum/reagent/consumable/sugar,1) if(prob(5)) - M.reagents.add_reagent("honey",1) + M.reagents.add_reagent(/datum/reagent/consumable/honey,1) ..() /datum/reagent/consumable/buzz_fuzz/reaction_mob(mob/living/M, method=TOUCH, reac_volume) @@ -575,7 +537,6 @@ /datum/reagent/consumable/grey_bull name = "Grey Bull" - id = "grey_bull" description = "Grey Bull, it gives you gloves!" color = "#EEFF00" // rgb: 238, 255, 0 quality = DRINK_VERYGOOD @@ -586,10 +547,10 @@ /datum/reagent/consumable/grey_bull/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_SHOCKIMMUNE, id) + ADD_TRAIT(L, TRAIT_SHOCKIMMUNE, type) /datum/reagent/consumable/grey_bull/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_SHOCKIMMUNE, id) + REMOVE_TRAIT(L, TRAIT_SHOCKIMMUNE, type) ..() /datum/reagent/consumable/grey_bull/on_mob_life(mob/living/carbon/M) @@ -602,7 +563,6 @@ /datum/reagent/consumable/sodawater name = "Soda Water" - id = "sodawater" description = "A can of club soda. Why not make a scotch and soda?" color = "#619494" // rgb: 97, 148, 148 taste_description = "carbonated water" @@ -618,7 +578,6 @@ /datum/reagent/consumable/tonic name = "Tonic Water" - id = "tonic" description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." color = "#0064C8" // rgb: 0, 100, 200 taste_description = "tart and fresh" @@ -636,7 +595,6 @@ /datum/reagent/consumable/ice name = "Ice" - id = "ice" description = "Frozen water, your dentist wouldn't like you chewing this." reagent_state = SOLID color = "#619494" // rgb: 97, 148, 148 @@ -651,7 +609,6 @@ /datum/reagent/consumable/soy_latte name = "Soy Latte" - id = "soy_latte" description = "A nice and tasty beverage while you are reading your hippie books." color = "#664300" // rgb: 102, 67, 0 quality = DRINK_NICE @@ -673,7 +630,6 @@ /datum/reagent/consumable/cafe_latte name = "Cafe Latte" - id = "cafe_latte" description = "A nice, strong and tasty beverage while you are reading." color = "#664300" // rgb: 102, 67, 0 quality = DRINK_NICE @@ -695,7 +651,6 @@ /datum/reagent/consumable/doctor_delight name = "The Doctor's Delight" - id = "doctorsdelight" description = "A gulp a day keeps the Medibot away! A mixture of juices that heals most damage types fairly quickly at the cost of hunger." color = "#FF8CFF" // rgb: 255, 140, 255 quality = DRINK_VERYGOOD @@ -717,7 +672,6 @@ /datum/reagent/consumable/chocolatepudding name = "Chocolate Pudding" - id = "chocolatepudding" description = "A great dessert for chocolate lovers." color = "#800000" quality = DRINK_VERYGOOD @@ -729,7 +683,6 @@ /datum/reagent/consumable/vanillapudding name = "Vanilla Pudding" - id = "vanillapudding" description = "A great dessert for vanilla lovers." color = "#FAFAD2" quality = DRINK_VERYGOOD @@ -741,7 +694,6 @@ /datum/reagent/consumable/cherryshake name = "Cherry Shake" - id = "cherryshake" description = "A cherry flavored milkshake." color = "#FFB6C1" quality = DRINK_VERYGOOD @@ -753,7 +705,6 @@ /datum/reagent/consumable/bluecherryshake name = "Blue Cherry Shake" - id = "bluecherryshake" description = "An exotic milkshake." color = "#00F1FF" quality = DRINK_VERYGOOD @@ -765,7 +716,6 @@ /datum/reagent/consumable/pumpkin_latte name = "Pumpkin Latte" - id = "pumpkin_latte" description = "A mix of pumpkin juice and coffee." color = "#F4A460" quality = DRINK_VERYGOOD @@ -777,7 +727,6 @@ /datum/reagent/consumable/gibbfloats name = "Gibb Floats" - id = "gibbfloats" description = "Ice cream on top of a Dr. Gibb glass." color = "#B22222" quality = DRINK_NICE @@ -789,21 +738,18 @@ /datum/reagent/consumable/pumpkinjuice name = "Pumpkin Juice" - id = "pumpkinjuice" description = "Juiced from real pumpkin." color = "#FFA500" taste_description = "pumpkin" /datum/reagent/consumable/blumpkinjuice name = "Blumpkin Juice" - id = "blumpkinjuice" description = "Juiced from real blumpkin." color = "#00BFFF" taste_description = "a mouthful of pool water" /datum/reagent/consumable/triple_citrus name = "Triple Citrus" - id = "triple_citrus" description = "A solution." color = "#fff12b" quality = DRINK_NICE @@ -814,7 +760,6 @@ /datum/reagent/consumable/grape_soda name = "Grape soda" - id = "grapesoda" description = "Beloved of children and teetotalers." color = "#E6CDFF" taste_description = "grape soda" @@ -827,7 +772,6 @@ /datum/reagent/consumable/milk/chocolate_milk name = "Chocolate Milk" - id = "chocolate_milk" description = "Milk for cool kids." color = "#7D4E29" quality = DRINK_NICE @@ -835,7 +779,6 @@ /datum/reagent/consumable/menthol name = "Menthol" - id = "menthol" description = "Alleviates coughing symptoms one might have." color = "#80AF9C" taste_description = "mint" @@ -849,7 +792,6 @@ /datum/reagent/consumable/grenadine name = "Grenadine" - id = "grenadine" description = "Not cherry flavored!" color = "#EA1D26" taste_description = "sweet pomegranates" @@ -858,7 +800,6 @@ /datum/reagent/consumable/parsnipjuice name = "Parsnip Juice" - id = "parsnipjuice" description = "Why..." color = "#FFA500" taste_description = "parsnip" @@ -866,7 +807,6 @@ /datum/reagent/consumable/peachjuice //Intended to be extremely rare due to being the limiting ingredients in the blazaam drink name = "Peach Juice" - id = "peachjuice" description = "Just peachy." color = "#E78108" taste_description = "peaches" @@ -874,7 +814,6 @@ /datum/reagent/consumable/cream_soda name = "Cream Soda" - id = "cream_soda" description = "A classic space-American vanilla flavored soft drink." color = "#dcb137" quality = DRINK_VERYGOOD @@ -889,7 +828,6 @@ /datum/reagent/consumable/red_queen name = "Red Queen" - id = "red_queen" description = "DRINK ME." color = "#e6ddc3" quality = DRINK_GOOD @@ -917,7 +855,6 @@ /datum/reagent/consumable/pinkmilk name = "Strawberry Milk" - id = "pinkmilk" description = "A drink of a bygone era of milk and artificial sweetener back on a rock." color = "#f76aeb"//rgb(247, 106, 235) glass_icon_state = "pinkmilk" @@ -934,7 +871,6 @@ /datum/reagent/consumable/pinktea //Tiny Tim song name = "Strawberry Tea" - id = "pinktea" description = "A timeless classic!" color = "#f76aeb"//rgb(247, 106, 235) glass_icon_state = "pinktea" @@ -951,7 +887,6 @@ /datum/reagent/consumable/catnip_tea name = "Catnip Tea" - id = "catnip_tea" description = "A sleepy and tasty catnip tea!" color = "#101000" // rgb: 16, 16, 0 nutriment_factor = 0 @@ -971,7 +906,6 @@ /datum/reagent/consumable/monkey_energy name = "Monkey Energy" - id = "monkey_energy" description = "The only drink that will make you unleash the ape." color = "#f39b03" // rgb: 243, 155, 3 taste_description = "barbecue and nostalgia" @@ -986,3 +920,12 @@ M.AdjustSleeping(-40, FALSE) M.adjust_bodytemperature(-5 * TEMPERATURE_DAMAGE_COEFFICIENT, BODYTEMP_NORMAL) ..() + +/datum/reagent/consumable/bungojuice + name = "Bungo Juice" + color = "#F9E43D" + description = "Exotic! You feel like you are on vactation already." + taste_description = "succulent bungo" + glass_icon_state = "glass_yellow" + glass_name = "glass of bungo juice" + glass_desc = "Exotic! You feel like you are on vacation already." diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index e956fcac36..a2e651d791 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -1,6 +1,5 @@ /datum/reagent/drug name = "Drug" - id = "drug" value = 12 metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "bitterness" @@ -8,11 +7,10 @@ /datum/reagent/drug/on_mob_end_metabolize(mob/living/M) if(trippy) - SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[id]_high") + SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[type]_high") /datum/reagent/drug/space_drugs name = "Space drugs" - id = "space_drugs" value = 6 description = "An illegal chemical compound used as drug." color = "#60A584" // rgb: 96, 165, 132 @@ -31,7 +29,7 @@ /datum/reagent/drug/space_drugs/overdose_start(mob/living/M) to_chat(M, "You start tripping hard!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name) /datum/reagent/drug/space_drugs/overdose_process(mob/living/M) if(M.hallucination < volume && prob(20)) @@ -40,7 +38,6 @@ /datum/reagent/drug/nicotine name = "Nicotine" - id = "nicotine" value = 0 description = "Slightly reduces stun times. If overdosed it will deal toxin and oxygen damage." reagent_state = LIQUID @@ -64,7 +61,6 @@ /datum/reagent/drug/crank name = "Crank" - id = "crank" description = "Reduces stun times by about 200%. If overdosed or addicted it will deal significant Toxin, Brute and Brain damage." reagent_state = LIQUID color = "#FA00C8" @@ -112,7 +108,6 @@ /datum/reagent/drug/krokodil name = "Krokodil" - id = "krokodil" description = "Cools and calms you down. If overdosed it will deal significant Brain and Toxin damage. If addicted it will begin to deal fatal amounts of Brute damage as the subject's skin falls off." reagent_state = LIQUID color = "#0064B4" @@ -164,7 +159,6 @@ /datum/reagent/drug/methamphetamine name = "Methamphetamine" - id = "methamphetamine" description = "Reduces stun times by about 300%, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage." reagent_state = LIQUID color = "#FAFAFA" @@ -178,10 +172,10 @@ /datum/reagent/drug/methamphetamine/on_mob_metabolize(mob/living/L) ..() - L.ignore_slowdown(id) + L.ignore_slowdown(type) /datum/reagent/drug/methamphetamine/on_mob_end_metabolize(mob/living/L) - L.unignore_slowdown(id) + L.unignore_slowdown(type) ..() /datum/reagent/drug/methamphetamine/on_mob_life(mob/living/carbon/M) @@ -252,7 +246,6 @@ . = 1 /datum/reagent/drug/methamphetamine/changeling - id = "changelingmeth" name = "Changeling Adrenaline" addiction_threshold = 35 overdose_threshold = 35 @@ -261,7 +254,6 @@ /datum/reagent/drug/bath_salts name = "Bath Salts" - id = "bath_salts" description = "Makes you impervious to stuns and grants a stamina regeneration buff, but you will be a nearly uncontrollable tramp-bearded raving lunatic." reagent_state = LIQUID color = "#FAFAFA" @@ -273,16 +265,16 @@ /datum/reagent/drug/bath_salts/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_STUNIMMUNE, id) - ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, id) + ADD_TRAIT(L, TRAIT_STUNIMMUNE, type) + ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type) if(iscarbon(L)) var/mob/living/carbon/C = L rage = new() C.gain_trauma(rage, TRAUMA_RESILIENCE_ABSOLUTE) /datum/reagent/drug/bath_salts/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, id) - REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, id) + REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, type) + REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type) if(rage) QDEL_NULL(rage) ..() @@ -362,7 +354,6 @@ /datum/reagent/drug/aranesp name = "Aranesp" - id = "aranesp" description = "Amps you up and gets you going, fixes all stamina damage you might have but can cause toxin and oxygen damage." reagent_state = LIQUID color = "#78FFF0" @@ -382,7 +373,6 @@ /datum/reagent/drug/happiness name = "Happiness" - id = "happiness" description = "Fills you with ecstasic numbness and causes minor brain damage. Highly addictive. If overdosed causes sudden mood swings." reagent_state = LIQUID color = "#FFF378" @@ -392,11 +382,11 @@ /datum/reagent/drug/happiness/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_FEARLESS, id) + ADD_TRAIT(L, TRAIT_FEARLESS, type) SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "happiness_drug", /datum/mood_event/happiness_drug) /datum/reagent/drug/happiness/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_FEARLESS, id) + REMOVE_TRAIT(L, TRAIT_FEARLESS, type) SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "happiness_drug") ..() @@ -460,7 +450,6 @@ /datum/reagent/drug/skooma name = "Skooma" - id = "skooma" description = "An ancient, highly-addictive drug of long-forgotten times. It greatly improves the user's speed and strength, but heavily impedes their intelligence and agility." reagent_state = LIQUID color = "#F3E0F9" @@ -472,7 +461,7 @@ /datum/reagent/drug/skooma/on_mob_metabolize(mob/living/L) . = ..() - L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) L.next_move_modifier *= 2 if(ishuman(L)) var/mob/living/carbon/human/H = L @@ -483,7 +472,7 @@ /datum/reagent/drug/skooma/on_mob_end_metabolize(mob/living/L) . = ..() - L.remove_movespeed_modifier(id) + L.remove_movespeed_modifier(type) L.next_move_modifier *= 0.5 if(ishuman(L)) var/mob/living/carbon/human/H = L diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 64e693a326..b6cb387b81 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -9,7 +9,6 @@ /datum/reagent/consumable name = "Consumable" - id = "consumable" taste_description = "generic food" taste_mult = 4 value = 0.1 @@ -19,7 +18,7 @@ /datum/reagent/consumable/on_mob_life(mob/living/carbon/M) current_cycle++ M.nutrition += nutriment_factor - holder.remove_reagent(src.id, metabolization_rate) + holder.remove_reagent(type, metabolization_rate) /datum/reagent/consumable/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == INGEST) @@ -39,7 +38,6 @@ /datum/reagent/consumable/nutriment name = "Nutriment" - id = "nutriment" description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM @@ -90,7 +88,6 @@ /datum/reagent/consumable/nutriment/vitamin name = "Vitamin" - id = "vitamin" description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form." value = 0.5 @@ -104,7 +101,6 @@ /datum/reagent/consumable/cooking_oil name = "Cooking Oil" - id = "cooking_oil" description = "A variety of cooking oil derived from fat or plants. Used in food preparation and frying." color = "#EADD6B" //RGB: 234, 221, 107 (based off of canola oil) taste_mult = 0.8 @@ -121,7 +117,7 @@ O.loc.visible_message("[O] rapidly fries as it's splashed with hot oil! Somehow.") var/obj/item/reagent_containers/food/snacks/deepfryholder/F = new(O.drop_location(), O) F.fry(volume) - F.reagents.add_reagent("cooking_oil", reac_volume) + F.reagents.add_reagent(/datum/reagent/consumable/cooking_oil, reac_volume) /datum/reagent/consumable/cooking_oil/reaction_mob(mob/living/M, method = TOUCH, reac_volume, show_message = 1, touch_protection = 0) if(!istype(M)) @@ -150,12 +146,11 @@ /datum/reagent/consumable/sugar name = "Sugar" - id = "sugar" description = "The organic compound commonly known as table sugar and sometimes called saccharose. This white, odorless, crystalline powder has a pleasing, sweet taste." reagent_state = SOLID color = "#FFFFFF" // rgb: 255, 255, 255 taste_mult = 1.5 // stop sugar drowning out other flavours - nutriment_factor = 10 * REAGENTS_METABOLISM + nutriment_factor = 5 * REAGENTS_METABOLISM metabolization_rate = 2 * REAGENTS_METABOLISM overdose_threshold = 200 // Hyperglycaemic shock taste_description = "sweetness" @@ -173,7 +168,6 @@ /datum/reagent/consumable/virus_food name = "Virus Food" - id = "virusfood" description = "A mixture of water and milk. Virus cells can use this mixture to reproduce." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#899613" // rgb: 137, 150, 19 @@ -181,7 +175,6 @@ /datum/reagent/consumable/soysauce name = "Soysauce" - id = "soysauce" description = "A salty sauce made from the soy plant." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#792300" // rgb: 121, 35, 0 @@ -189,7 +182,6 @@ /datum/reagent/consumable/ketchup name = "Ketchup" - id = "ketchup" description = "Ketchup, catsup, whatever. It's tomato paste." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#731008" // rgb: 115, 16, 8 @@ -197,7 +189,6 @@ /datum/reagent/consumable/mustard name = "Mustard" - id = "mustard" description = "Mustard, mostly used on hotdogs, corndogs and burgers." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#DDED26" // rgb: 221, 237, 38 @@ -205,7 +196,6 @@ /datum/reagent/consumable/capsaicin name = "Capsaicin Oil" - id = "capsaicin" description = "This is what makes chilis hot." color = "#B31008" // rgb: 179, 16, 8 taste_description = "hot peppers" @@ -216,8 +206,8 @@ switch(current_cycle) if(1 to 15) heating = 5 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("cryostylane")) - holder.remove_reagent("cryostylane", 5) + if(holder.has_reagent(/datum/reagent/cryostylane)) + holder.remove_reagent(/datum/reagent/cryostylane, 5) if(isslime(M)) heating = rand(5,20) if(15 to 25) @@ -237,7 +227,6 @@ /datum/reagent/consumable/frostoil name = "Frost Oil" - id = "frostoil" description = "A special oil that noticably chills the body. Extracted from Icepeppers and slimes." color = "#8BA6E9" // rgb: 139, 166, 233 taste_description = "mint" @@ -249,8 +238,8 @@ switch(current_cycle) if(1 to 15) cooling = -10 * TEMPERATURE_DAMAGE_COEFFICIENT - if(holder.has_reagent("capsaicin")) - holder.remove_reagent("capsaicin", 5) + if(holder.has_reagent(/datum/reagent/consumable/capsaicin)) + holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5) if(isslime(M)) cooling = -rand(5,20) if(15 to 25) @@ -284,7 +273,6 @@ /datum/reagent/consumable/condensedcapsaicin name = "Condensed Capsaicin" - id = "condensedcapsaicin" description = "A chemical agent used for self-defense and in police work." color = "#B31008" // rgb: 179, 16, 8 taste_description = "scorching agony" @@ -358,7 +346,6 @@ /datum/reagent/consumable/sodiumchloride name = "Table Salt" - id = "sodiumchloride" description = "A salt made of sodium chloride. Commonly used to season food." reagent_state = SOLID color = "#FFFFFF" // rgb: 255,255,255 @@ -379,7 +366,6 @@ /datum/reagent/consumable/blackpepper name = "Black Pepper" - id = "blackpepper" description = "A powder ground from peppercorns. *AAAACHOOO*" reagent_state = SOLID // no color (ie, black) @@ -387,7 +373,6 @@ /datum/reagent/consumable/coco name = "Coco Powder" - id = "cocoa" description = "A fatty, bitter paste made from coco beans." reagent_state = SOLID nutriment_factor = 5 * REAGENTS_METABOLISM @@ -396,7 +381,6 @@ /datum/reagent/consumable/hot_coco name = "Hot Chocolate" - id = "hot_coco" description = "Made with love! And coco beans." nutriment_factor = 3 * REAGENTS_METABOLISM color = "#403010" // rgb: 64, 48, 16 @@ -411,7 +395,6 @@ /datum/reagent/drug/mushroomhallucinogen name = "Mushroom Hallucinogen" - id = "mushroomhallucinogen" description = "A strong hallucinogenic drug derived from certain species of mushroom." color = "#E700E7" // rgb: 231, 0, 231 metabolization_rate = 0.2 * REAGENTS_METABOLISM @@ -442,7 +425,6 @@ /datum/reagent/consumable/sprinkles name = "Sprinkles" - id = "sprinkles" value = 3 description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." color = "#FF00FF" // rgb: 255, 0, 255 @@ -456,7 +438,6 @@ /datum/reagent/consumable/peanut_butter name = "Peanut Butter" - id = "peanut_butter" description = "A popular food paste made from ground dry-roasted peanuts." color = "#C29261" value = 3 @@ -465,7 +446,6 @@ /datum/reagent/consumable/cornoil name = "Corn Oil" - id = "cornoil" description = "An oil derived from various types of corn." nutriment_factor = 20 * REAGENTS_METABOLISM value = 4 @@ -486,7 +466,6 @@ /datum/reagent/consumable/enzyme name = "Universal Enzyme" - id = "enzyme" value = 1 description = "A universal enzyme used in the preperation of certain chemicals and foods." color = "#365E30" // rgb: 54, 94, 48 @@ -494,7 +473,6 @@ /datum/reagent/consumable/dry_ramen name = "Dry Ramen" - id = "dry_ramen" description = "Space age food, since August 25, 1958. Contains dried noodles, vegetables, and chemicals that boil in contact with water." reagent_state = SOLID color = "#302000" // rgb: 48, 32, 0 @@ -502,7 +480,6 @@ /datum/reagent/consumable/hot_ramen name = "Hot Ramen" - id = "hot_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 @@ -514,7 +491,6 @@ /datum/reagent/consumable/hell_ramen name = "Hell Ramen" - id = "hell_ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#302000" // rgb: 48, 32, 0 @@ -526,7 +502,6 @@ /datum/reagent/consumable/flour name = "Flour" - id = "flour" value = 0.5 description = "This is what you rub all over yourself to pretend to be a ghost." reagent_state = SOLID @@ -538,11 +513,10 @@ var/obj/effect/decal/cleanable/flour/reagentdecal = new/obj/effect/decal/cleanable/flour(T) reagentdecal = locate() in T //Might have merged with flour already there. if(reagentdecal) - reagentdecal.reagents.add_reagent("flour", reac_volume) + reagentdecal.reagents.add_reagent(/datum/reagent/consumable/flour, reac_volume) /datum/reagent/consumable/cherryjelly name = "Cherry Jelly" - id = "cherryjelly" description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." color = "#801E28" // rgb: 128, 30, 40 value = 1 @@ -550,7 +524,6 @@ /datum/reagent/consumable/bluecherryjelly name = "Blue Cherry Jelly" - id = "bluecherryjelly" description = "Blue and tastier kind of cherry jelly." color = "#00F0FF" value = 12 @@ -558,7 +531,6 @@ /datum/reagent/consumable/rice name = "Rice" - id = "rice" value = 0.5 description = "tiny nutritious grains" reagent_state = SOLID @@ -568,7 +540,6 @@ /datum/reagent/consumable/vanilla name = "Vanilla Powder" - id = "vanilla" value = 1 description = "A fatty, bitter paste made from vanilla pods." reagent_state = SOLID @@ -578,7 +549,6 @@ /datum/reagent/consumable/eggyolk name = "Egg Yolk" - id = "eggyolk" value = 1 description = "It's full of protein." nutriment_factor = 3 * REAGENTS_METABOLISM @@ -587,7 +557,6 @@ /datum/reagent/consumable/corn_starch name = "Corn Starch" - id = "corn_starch" value = 2 description = "A slippery solution." color = "#f7f6e4" @@ -595,7 +564,6 @@ /datum/reagent/consumable/corn_syrup name = "Corn Syrup" - id = "corn_syrup" value = 1 description = "Decays into sugar." color = "#fff882" @@ -603,12 +571,11 @@ taste_description = "sweet slime" /datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/carbon/M) - holder.add_reagent("sugar", 3) + holder.add_reagent(/datum/reagent/consumable/sugar, 3) ..() /datum/reagent/consumable/honey name = "honey" - id = "honey" description = "Sweet sweet honey that decays into sugar. Has antibacterial and natural healing properties." color = "#d3a308" value = 15 @@ -617,7 +584,7 @@ taste_description = "sweetness" /datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M) - M.reagents.add_reagent("sugar",3) + M.reagents.add_reagent(/datum/reagent/consumable/sugar,3) if(prob(55)) M.adjustBruteLoss(-1*REM, 0) M.adjustFireLoss(-1*REM, 0) @@ -635,7 +602,6 @@ /datum/reagent/consumable/mayonnaise name = "Mayonnaise" - id = "mayonnaise" description = "An white and oily mixture of mixed egg yolks." color = "#DFDFDF" value = 5 @@ -643,7 +609,6 @@ /datum/reagent/consumable/tearjuice name = "Tear Juice" - id = "tearjuice" description = "A blinding substance extracted from certain onions." color = "#c0c9a0" taste_description = "bitterness" @@ -682,7 +647,6 @@ /datum/reagent/consumable/nutriment/stabilized name = "Stabilized Nutriment" - id = "stabilizednutriment" description = "A bioengineered protien-nutrient structure designed to decompose in high saturation. In layman's terms, it won't get you fat." reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM @@ -698,7 +662,6 @@ /datum/reagent/consumable/entpoly name = "Entropic Polypnium" - id = "entpoly" description = "An ichor, derived from a certain mushroom, makes for a bad time." color = "#1d043d" taste_description = "bitter mushroom" @@ -719,7 +682,6 @@ /datum/reagent/consumable/tinlux name = "Tinea Luxor" - id = "tinlux" description = "A stimulating ichor which causes luminescent fungi to grow on the skin. " color = "#b5a213" taste_description = "tingling mushroom" @@ -733,7 +695,6 @@ /datum/reagent/consumable/vitfro name = "Vitrium Froth" - id = "vitfro" description = "A bubbly paste that heals wounds of the skin." color = "#d3a308" nutriment_factor = 3 * REAGENTS_METABOLISM @@ -749,7 +710,6 @@ /datum/reagent/consumable/clownstears name = "Clown's Tears" - id = "clownstears" description = "The sorrow and melancholy of a thousand bereaved clowns, forever denied their Honkmechs." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#eef442" // rgb: 238, 244, 66 @@ -758,7 +718,6 @@ /datum/reagent/consumable/liquidelectricity name = "Liquid Electricity" - id = "liquidelectricity" description = "The blood of Ethereals, and the stuff that keeps them going. Great for them, horrid for anyone else." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#97ee63" @@ -782,7 +741,6 @@ /datum/reagent/consumable/astrotame name = "Astrotame" - id = "astrotame" description = "A space age artifical sweetener." nutriment_factor = 0 metabolization_rate = 2 * REAGENTS_METABOLISM @@ -801,7 +759,6 @@ /datum/reagent/consumable/caramel name = "Caramel" - id = "caramel" description = "Who would have guessed that heated sugar could be so delicious?" nutriment_factor = 10 * REAGENTS_METABOLISM color = "#D98736" @@ -811,7 +768,6 @@ /datum/reagent/consumable/secretsauce name = "secret sauce" - id = "secret_sauce" description = "What could it be." nutriment_factor = 2 * REAGENTS_METABOLISM color = "#792300" @@ -823,7 +779,6 @@ /datum/reagent/consumable/char name = "Char" - id = "char" description = "Essence of the grill. Has strange properties when overdosed." reagent_state = LIQUID nutriment_factor = 5 * REAGENTS_METABOLISM @@ -838,7 +793,6 @@ /datum/reagent/consumable/bbqsauce name = "BBQ Sauce" - id = "bbqsauce" description = "Sweet, Smokey, Savory, and gets everywhere. Perfect for Grilling." nutriment_factor = 5 * REAGENTS_METABOLISM color = "#78280A" // rgb: 120 40, 10 diff --git a/code/modules/reagents/chemistry/reagents/impure_reagents.dm b/code/modules/reagents/chemistry/reagents/impure_reagents.dm index 4489088adc..63f62406b5 100644 --- a/code/modules/reagents/chemistry/reagents/impure_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/impure_reagents.dm @@ -8,7 +8,6 @@ /datum/reagent/impure/fermiTox name = "Chemical Isomers" - id = "fermiTox" description = "Toxic chemical isomers made from impure reactions. At low volumes will cause light toxin damage, but as the volume increases, it deals larger amounts, damages the liver, then eventually the heart. This is default impure chem for all chems, and changes only if stated." data = "merge" color = "FFFFFF" diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index d8ff084227..d8fc47d1b8 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -7,17 +7,15 @@ /datum/reagent/medicine name = "Medicine" - id = "medicine" value = 2 taste_description = "bitterness" /datum/reagent/medicine/on_mob_life(mob/living/carbon/M) current_cycle++ - holder.remove_reagent(src.id, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism + holder.remove_reagent(type, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism /datum/reagent/medicine/leporazine name = "Leporazine" - id = "leporazine" description = "Leporazine will effectively regulate a patient's body temperature, ensuring it never leaves safe levels." pH = 8.4 color = "#82b8aa" @@ -31,7 +29,6 @@ /datum/reagent/medicine/adminordrazine //An OP chemical for admins name = "Adminordrazine" - id = "adminordrazine" description = "It's magic. We don't have to explain it." color = "#ffffff" can_synth = FALSE @@ -79,13 +76,11 @@ /datum/reagent/medicine/adminordrazine/quantum_heal name = "Quantum Medicine" - id = "quantum_heal" description = "Rare and experimental particles, that apparently swap the user's body with one from an alternate dimension where it's completely healthy." taste_description = "science" /datum/reagent/medicine/synaptizine name = "Synaptizine" - id = "synaptizine" description = "Increases resistance to stuns as well as reducing drowsiness and hallucinations." color = "#FF00FF" pH = 4 @@ -95,8 +90,8 @@ M.AdjustStun(-20, 0) M.AdjustKnockdown(-20, 0) M.AdjustUnconscious(-20, 0) - if(holder.has_reagent("mindbreaker")) - holder.remove_reagent("mindbreaker", 5) + if(holder.has_reagent(/datum/reagent/toxin/mindbreaker)) + holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5) M.hallucination = max(0, M.hallucination - 10) if(prob(30)) M.adjustToxLoss(1, 0) @@ -105,17 +100,16 @@ /datum/reagent/medicine/synaphydramine name = "Diphen-Synaptizine" - id = "synaphydramine" description = "Reduces drowsiness, hallucinations, and Histamine from body." color = "#EC536D" // rgb: 236, 83, 109 pH = 5.2 /datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/carbon/M) M.drowsyness = max(M.drowsyness-5, 0) - if(holder.has_reagent("mindbreaker")) - holder.remove_reagent("mindbreaker", 5) - if(holder.has_reagent("histamine")) - holder.remove_reagent("histamine", 5) + if(holder.has_reagent(/datum/reagent/toxin/mindbreaker)) + holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5) + if(holder.has_reagent(/datum/reagent/toxin/histamine)) + holder.remove_reagent(/datum/reagent/toxin/histamine, 5) M.hallucination = max(0, M.hallucination - 10) if(prob(30)) M.adjustToxLoss(1, 0) @@ -124,7 +118,6 @@ /datum/reagent/medicine/inacusiate name = "Inacusiate" - id = "inacusiate" description = "Instantly restores all hearing to the patient, but does not cure deafness." color = "#6600FF" // rgb: 100, 165, 255 pH = 2 @@ -136,7 +129,6 @@ /datum/reagent/medicine/cryoxadone name = "Cryoxadone" - id = "cryoxadone" description = "A chemical mixture with almost magical healing powers. Its main limitation is that the patient's body temperature must be under 270K for it to metabolise correctly." color = "#0000C8" taste_description = "sludge" @@ -157,7 +149,6 @@ /datum/reagent/medicine/clonexadone name = "Clonexadone" - id = "clonexadone" description = "A chemical that derives from Cryoxadone. It specializes in healing clone damage, but nothing else. Requires very cold temperatures to properly metabolize, and metabolizes quicker than cryoxadone." color = "#0000C8" taste_description = "muscle" @@ -174,7 +165,6 @@ /datum/reagent/medicine/pyroxadone name = "Pyroxadone" - id = "pyroxadone" description = "A mixture of cryoxadone and slime jelly, that apparently inverses the requirement for its activation." color = "#f7832a" taste_description = "spicy jelly" @@ -204,7 +194,6 @@ /datum/reagent/medicine/rezadone name = "Rezadone" - id = "rezadone" description = "A powder derived from fish toxin, Rezadone can effectively treat genetic damage as well as restoring minor wounds. Overdose will cause intense nausea and minor toxin damage." reagent_state = SOLID color = "#669900" // rgb: 102, 153, 0 @@ -229,7 +218,6 @@ /datum/reagent/medicine/spaceacillin name = "Spaceacillin" - id = "spaceacillin" description = "Spaceacillin will prevent a patient from conventionally spreading any diseases they are currently infected with." color = "#f2f2f2" metabolization_rate = 0.1 * REAGENTS_METABOLISM @@ -238,7 +226,6 @@ //Goon Chems. Ported mainly from Goonstation. Easily mixable (or not so easily) and provide a variety of effects. /datum/reagent/medicine/silver_sulfadiazine name = "Silver Sulfadiazine" - id = "silver_sulfadiazine" description = "If used in touch-based applications, immediately restores burn wounds as well as restoring more over time. It is mildly poisonous taken orally or by injection. If overdosed, deals brute and minor liver damage." reagent_state = LIQUID pH = 7.2 @@ -277,7 +264,6 @@ /datum/reagent/medicine/oxandrolone name = "Oxandrolone" - id = "oxandrolone" description = "Stimulates the healing of severe burns. Extremely rapidly heals severe burns and slowly heals minor ones. Overdose will worsen existing burns." reagent_state = LIQUID color = "#f7ffa5" @@ -302,7 +288,6 @@ /datum/reagent/medicine/styptic_powder name = "Styptic Powder" - id = "styptic_powder" description = "If used in touch-based applications, immediately restores bruising as well as restoring more over time. It is poisonous if taken orally or by injection. If overdosed, deals brute and minor liver damage." reagent_state = LIQUID color = "#FF9696" @@ -342,7 +327,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/salglu_solution name = "Saline-Glucose Solution" - id = "salglu_solution" description = "Has a 33% chance per metabolism cycle to heal brute and burn damage. Can be used as a temporary blood substitute." reagent_state = LIQUID color = "#DCDCDC" @@ -374,12 +358,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/salglu_solution/overdose_process(mob/living/M) if(prob(3)) to_chat(M, "You feel salty.") - holder.add_reagent("sodiumchloride", 1) - holder.remove_reagent("salglu_solution", 0.5) + holder.add_reagent(/datum/reagent/consumable/sodiumchloride, 1) + holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5) else if(prob(3)) to_chat(M, "You feel sweet.") - holder.add_reagent("sugar", 1) - holder.remove_reagent("salglu_solution", 0.5) + holder.add_reagent(/datum/reagent/consumable/sugar, 1) + holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5) if(prob(33)) M.adjustBruteLoss(0.5*REM, 0) M.adjustFireLoss(0.5*REM, 0) @@ -388,7 +372,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/mine_salve name = "Miner's Salve" - id = "mine_salve" description = "A powerful painkiller. Restores bruising and burns in addition to making the patient believe they are fully healed." reagent_state = LIQUID color = "#6D6374" @@ -428,7 +411,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/synthflesh name = "Synthflesh" - id = "synthflesh" description = "Has a 100% chance of healing large amounts of brute and burn damage very quickly. One unit of the chemical will heal one point of damage. Touch application only." reagent_state = LIQUID color = "#FFEBEB" @@ -461,7 +443,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/charcoal name = "Charcoal" - id = "charcoal" description = "Heals toxin damage as well as slowly removing any other chemicals the patient has in their bloodstream." reagent_state = LIQUID color = "#000000" @@ -473,14 +454,14 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/charcoal/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-2*REM, 0) . = 1 - for(var/datum/reagent/R in M.reagents.reagent_list) + for(var/A in M.reagents.reagent_list) + var/datum/reagent/R = A if(R != src) - M.reagents.remove_reagent(R.id,1) + M.reagents.remove_reagent(R.type,1) ..() /datum/reagent/medicine/omnizine name = "Omnizine" - id = "omnizine" description = "Slowly heals all damage types. Overdose will cause damage in all types instead." reagent_state = LIQUID color = "#DCDCDC" @@ -507,7 +488,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/calomel name = "Calomel" - id = "calomel" description = "Quickly purges the body of all chemicals. Toxin damage is dealt if the patient is in good condition." reagent_state = LIQUID color = "#19C832" @@ -516,9 +496,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 1.5 /datum/reagent/medicine/calomel/on_mob_life(mob/living/carbon/M) - for(var/datum/reagent/R in M.reagents.reagent_list) + for(var/A in M.reagents.reagent_list) + var/datum/reagent/R = A if(R != src) - M.reagents.remove_reagent(R.id,2.5) + M.reagents.remove_reagent(R.type,2.5) if(M.health > 20) M.adjustToxLoss(2.5*REM, 0) . = 1 @@ -526,7 +507,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/potass_iodide name = "Potassium Iodide" - id = "potass_iodide" description = "Efficiently restores low radiation damage." reagent_state = LIQUID color = "#14FF3C" @@ -540,7 +520,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/prussian_blue name = "Prussian Blue" - id = "prussian_blue" description = "Efficiently restores heavy radiation damage." reagent_state = LIQUID color = "#003153" // RGB 0, 49, 83 @@ -554,7 +533,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/pen_acid name = "Pentetic Acid" - id = "pen_acid" description = "Reduces massive amounts of radiation and toxin damage while purging other chemicals from the body." reagent_state = LIQUID color = "#E6FFF0" @@ -565,15 +543,15 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/pen_acid/on_mob_life(mob/living/carbon/M) M.radiation -= max(M.radiation-RAD_MOB_SAFE, 0)/50 M.adjustToxLoss(-2*REM, 0, healtoxinlover) - for(var/datum/reagent/R in M.reagents.reagent_list) + for(var/A in M.reagents.reagent_list) + var/datum/reagent/R = A if(R != src) - M.reagents.remove_reagent(R.id,2) + M.reagents.remove_reagent(R.type,2) ..() . = 1 /datum/reagent/medicine/pen_acid/pen_jelly name = "Pentetic Jelly" - id = "pen_jelly" description = "Reduces massive amounts of radiation and toxin damage while purging other chemicals from the body. Slimepeople friendly!" color = "#91D865" healtoxinlover = TRUE @@ -581,7 +559,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/sal_acid name = "Salicyclic Acid" - id = "sal_acid" description = "Stimulates the healing of severe bruises. Extremely rapidly heals severe bruising and slowly heals minor ones. Overdose will worsen existing bruising." reagent_state = LIQUID color = "#D2D2D2" @@ -606,7 +583,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/salbutamol name = "Salbutamol" - id = "salbutamol" description = "Rapidly restores oxygen deprivation as well as preventing more of it to an extent." reagent_state = LIQUID color = "#00FFFF" @@ -622,7 +598,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/perfluorodecalin name = "Perfluorodecalin" - id = "perfluorodecalin" description = "Extremely rapidly restores oxygen deprivation, but inhibits speech. May also heal small amounts of bruising and burns." reagent_state = LIQUID color = "#FF6464" @@ -640,7 +615,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/ephedrine name = "Ephedrine" - id = "ephedrine" description = "Increases stun resistance. Overdose deals toxin damage and inhibits breathing." reagent_state = LIQUID color = "#D2FFFA" @@ -697,7 +671,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/diphenhydramine name = "Diphenhydramine" - id = "diphenhydramine" description = "Rapidly purges the body of Histamine and reduces jitteriness. Slight chance of causing drowsiness." reagent_state = LIQUID color = "#64FFE6" @@ -708,12 +681,11 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) if(prob(10)) M.drowsyness += 1 M.jitteriness -= 1 - M.reagents.remove_reagent("histamine",3) + M.reagents.remove_reagent(/datum/reagent/toxin/histamine,3) ..() /datum/reagent/medicine/morphine name = "Morphine" - id = "morphine" description = "A painkiller that allows the patient to move at full speed even in bulky objects. Causes drowsiness and eventually unconsciousness in high doses. Overdose will cause a variety of effects, ranging from minor to lethal." reagent_state = LIQUID color = "#A9FBFB" @@ -724,10 +696,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/morphine/on_mob_metabolize(mob/living/L) ..() - L.ignore_slowdown(id) + L.ignore_slowdown(type) /datum/reagent/medicine/morphine/on_mob_end_metabolize(mob/living/L) - L.unignore_slowdown(id) + L.unignore_slowdown(type) ..() /datum/reagent/medicine/morphine/on_mob_life(mob/living/carbon/M) @@ -783,7 +755,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/oculine name = "Oculine" - id = "oculine" description = "Quickly restores eye damage, cures nearsightedness, and has a chance to restore vision to the blind." reagent_state = LIQUID color = "#FFFFFF" @@ -814,7 +785,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/atropine name = "Atropine" - id = "atropine" description = "If a patient is in critical condition, rapidly heals all damage types as well as regulating oxygen in the body. Excellent for stabilizing wounded patients." reagent_state = LIQUID color = "#000000" @@ -844,7 +814,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/epinephrine name = "Epinephrine" - id = "epinephrine" description = "Minor boost to stun resistance. Slowly heals damage if a patient is in critical condition, as well as regulating oxygen loss. Overdose causes weakness and toxin damage." reagent_state = LIQUID color = "#D2FFFA" @@ -881,7 +850,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/strange_reagent name = "Strange Reagent" - id = "strange_reagent" description = "A miracle drug capable of bringing the dead back to life. Only functions when applied by patch or spray, if the target has less than 100 brute and burn damage (independent of one another) and hasn't been husked. Causes slight damage to the living." reagent_state = LIQUID color = "#A0E85E" @@ -933,7 +901,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/mannitol name = "Mannitol" - id = "mannitol" description = "Efficiently restores brain damage." color = "#DCDCFF" pH = 10.4 @@ -946,7 +913,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/neurine name = "Neurine" - id = "neurine" description = "Reacts with neural tissue, helping reform damaged connections. Can cure minor traumas." color = "#EEFF8F" @@ -966,15 +932,14 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/C) - if(holder.has_reagent("neurotoxin")) - holder.remove_reagent("neurotoxin", 5) + if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin)) + holder.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 5) if(prob(15)) C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) ..() /datum/reagent/medicine/mutadone name = "Mutadone" - id = "mutadone" description = "Removes jitteriness and restores genetic defects." color = "#5096C8" taste_description = "acid" @@ -989,7 +954,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/antihol name = "Antihol" - id = "antihol" description = "Purges alcoholic substance from the patient's body and eliminates its side effects." color = "#00B4C8" taste_description = "raw egg" @@ -1010,7 +974,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/stimulants name = "Stimulants" - id = "stimulants" description = "Increases stun resistance and movement speed in addition to restoring minor damage and weakness. Overdose causes weakness and toxin damage." color = "#78008C" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -1019,10 +982,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/stimulants/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/stimulants/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(id) + L.remove_movespeed_modifier(type) ..() /datum/reagent/medicine/stimulants/on_mob_life(mob/living/carbon/M) @@ -1048,7 +1011,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/insulin name = "Insulin" - id = "insulin" description = "Increases sugar depletion rates." reagent_state = LIQUID color = "#FFFFF0" @@ -1058,13 +1020,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/insulin/on_mob_life(mob/living/carbon/M) if(M.AdjustSleeping(-20, FALSE)) . = 1 - M.reagents.remove_reagent("sugar", 3) + M.reagents.remove_reagent(/datum/reagent/consumable/sugar, 3) ..() //Trek Chems, used primarily by medibots. Only heals a specific damage type, but is very efficient. /datum/reagent/medicine/bicaridine name = "Bicaridine" - id = "bicaridine" description = "Restores bruising. Overdose causes it instead." reagent_state = LIQUID color = "#fc2626" @@ -1083,7 +1044,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/dexalin name = "Dexalin" - id = "dexalin" description = "Restores oxygen loss. Overdose causes it instead." reagent_state = LIQUID color = "#13d2f0" @@ -1102,7 +1062,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/kelotane name = "Kelotane" - id = "kelotane" description = "Restores fire damage. Overdose causes it instead." reagent_state = LIQUID color = "#ffc400" @@ -1121,7 +1080,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/antitoxin name = "Anti-Toxin" - id = "antitoxin" description = "Heals toxin damage and removes toxins in the bloodstream. Overdose causes toxin damage." reagent_state = LIQUID color = "#6aff00" @@ -1132,7 +1090,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/antitoxin/on_mob_life(mob/living/carbon/M) M.adjustToxLoss(-2*REM, 0) for(var/datum/reagent/toxin/R in M.reagents.reagent_list) - M.reagents.remove_reagent(R.id,1) + M.reagents.remove_reagent(R.type,1) ..() . = 1 @@ -1143,7 +1101,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/inaprovaline name = "Inaprovaline" - id = "inaprovaline" description = "Stabilizes the breathing of patients. Good for those in critical condition." reagent_state = LIQUID pH = 8.5 @@ -1156,7 +1113,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/tricordrazine name = "Tricordrazine" - id = "tricordrazine" description = "Has a high chance to heal all types of damage. Overdose instead causes it." reagent_state = LIQUID color = "#e650c0" @@ -1182,7 +1138,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/regen_jelly name = "Regenerative Jelly" - id = "regen_jelly" description = "Gradually regenerates all types of damage, without harming slime anatomy." reagent_state = LIQUID color = "#91D865" @@ -1198,7 +1153,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs name = "Restorative Nanites" - id = "syndicate_nanites" description = "Miniature medical robots that swiftly restore bodily damage." reagent_state = SOLID color = "#555555" @@ -1219,7 +1173,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/lesser_syndicate_nanites // the one in the injector name = "Regenerative Nanites" - id = "lesser_syndicate_nanites" description = "Miniature medical robots that restore damage and get operatives back in the fight." reagent_state = SOLID color = "#555555" @@ -1240,7 +1193,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/neo_jelly name = "Neo Jelly" - id = "neo_jelly" description = "Gradually regenerates all types of damage, without harming slime anatomy.Can OD" reagent_state = LIQUID metabolization_rate = 1 * REAGENTS_METABOLISM @@ -1266,7 +1218,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/earthsblood //Created by ambrosia gaia plants name = "Earthsblood" - id = "earthsblood" description = "Ichor from an extremely powerful plant. Great for restoring wounds, but it's a little heavy on the brain." color = rgb(255, 175, 0) overdose_threshold = 25 @@ -1293,7 +1244,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/haloperidol name = "Haloperidol" - id = "haloperidol" description = "Increases depletion rates for most stimulating/hallucinogenic drugs. Reduces druggy effects and jitteriness. Severe stamina regeneration penalty, causes drowsiness. Small chance of brain damage." reagent_state = LIQUID color = "#27870a" @@ -1302,7 +1252,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/haloperidol/on_mob_life(mob/living/carbon/M) for(var/datum/reagent/drug/R in M.reagents.reagent_list) - M.reagents.remove_reagent(R.id,5) + M.reagents.remove_reagent(R.type,5) M.drowsyness += 2 if(M.jitteriness >= 3) M.jitteriness -= 3 @@ -1316,7 +1266,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/lavaland_extract name = "Lavaland Extract" - id = "lavaland_extract" description = "An extract of lavaland atmospheric and mineral elements. Heals the user in small doses, but is extremely toxic otherwise." color = "#a1a1a1" overdose_threshold = 3 //To prevent people stacking massive amounts of a very strong healing reagent @@ -1338,7 +1287,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) //used for changeling's adrenaline power /datum/reagent/medicine/changelingadrenaline name = "Changeling Adrenaline" - id = "changelingadrenaline" description = "Reduces the duration of unconciousness, knockdown and stuns. Restores stamina, but deals toxin damage when overdosed." color = "#918e53" overdose_threshold = 30 @@ -1359,17 +1307,16 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/changelinghaste name = "Changeling Haste" - id = "changelinghaste" description = "Drastically increases movement speed, but deals toxin damage." color = "#669153" metabolization_rate = 1 /datum/reagent/medicine/changelinghaste/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/medicine/changelinghaste/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(id) + L.remove_movespeed_modifier(type) ..() /datum/reagent/medicine/changelinghaste/on_mob_life(mob/living/carbon/M) @@ -1381,7 +1328,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) // Heart attack code will not do damage if corazone is present // because it's SPACE MAGIC ASPIRIN name = "Corazone" - id = "corazone" description = "A medication used to treat pain, fever, and inflammation, along with heart attacks." color = "#F5F5F5" self_consuming = TRUE @@ -1399,20 +1345,18 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/muscle_stimulant name = "Muscle Stimulant" - id = "muscle_stimulant" description = "A potent chemical that allows someone under its influence to be at full physical ability even when under massive amounts of pain." /datum/reagent/medicine/muscle_stimulant/on_mob_metabolize(mob/living/M) . = ..() - M.ignore_slowdown(id) + M.ignore_slowdown(type) /datum/reagent/medicine/muscle_stimulant/on_mob_end_metabolize(mob/living/M) . = ..() - M.unignore_slowdown(id) + M.unignore_slowdown(type) /datum/reagent/medicine/modafinil name = "Modafinil" - id = "modafinil" description = "Long-lasting sleep suppressant that very slightly reduces stun and knockdown times. Overdosing has horrendous side effects and deals lethal oxygen damage, will knock you unconscious if not dealt with." reagent_state = LIQUID color = "#BEF7D8" // palish blue white @@ -1423,11 +1367,11 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) pH = 7.89 /datum/reagent/medicine/modafinil/on_mob_metabolize(mob/living/M) - ADD_TRAIT(M, TRAIT_SLEEPIMMUNE, id) + ADD_TRAIT(M, TRAIT_SLEEPIMMUNE, type) ..() /datum/reagent/medicine/modafinil/on_mob_end_metabolize(mob/living/M) - REMOVE_TRAIT(M, TRAIT_SLEEPIMMUNE, id) + REMOVE_TRAIT(M, TRAIT_SLEEPIMMUNE, type) ..() /datum/reagent/medicine/modafinil/on_mob_life(mob/living/carbon/M) @@ -1480,7 +1424,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/psicodine name = "Psicodine" - id = "psicodine" description = "Suppresses anxiety and other various forms of mental distress. Overdose causes hallucinations and minor toxin damage." reagent_state = LIQUID color = "#07E79E" @@ -1490,10 +1433,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/psicodine/on_mob_add(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_FEARLESS, id) + ADD_TRAIT(L, TRAIT_FEARLESS, type) /datum/reagent/medicine/psicodine/on_mob_delete(mob/living/L) - REMOVE_TRAIT(L, TRAIT_FEARLESS, id) + REMOVE_TRAIT(L, TRAIT_FEARLESS, type) ..() /datum/reagent/medicine/psicodine/on_mob_life(mob/living/carbon/M) @@ -1515,7 +1458,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/silibinin name = "Silibinin" - id = "silibinin" description = "A thistle derrived hepatoprotective flavolignan mixture that help reverse damage to the liver." reagent_state = SOLID color = "#FFFFD0" @@ -1528,7 +1470,6 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) /datum/reagent/medicine/polypyr //This is intended to be an ingredient in advanced chems. name = "Polypyrylium Oligomers" - id = "polypyr" description = "A�purple mixture of short polyelectrolyte chains not easily synthesized in the laboratory. It is valued as an intermediate in the synthesis of the cutting edge pharmaceuticals." reagent_state = SOLID color = "#9423FF" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index bd6eb4244c..dbede29e5f 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,7 +1,6 @@ /datum/reagent/blood data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_HUMAN, "blood_type"= null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null,"quirks"=null) name = "Blood" - id = "blood" value = 1 color = BLOOD_COLOR_HUMAN // rgb: 200, 0, 0 description = "Blood from some creature." @@ -30,7 +29,7 @@ if(iscarbon(L)) var/mob/living/carbon/C = L var/blood_id = C.get_blood_id() - if((HAS_TRAIT(C, TRAIT_NOMARROW) || blood_id == "blood" || blood_id == "jellyblood") && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) + if((HAS_TRAIT(C, TRAIT_NOMARROW) || blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits)))) C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM * C.blood_ratio) // we don't care about bloodtype here, we're just refilling the mob @@ -41,7 +40,7 @@ if((HAS_TRAIT(C, TRAIT_NOMARROW))) return //We dont want vampires getting toxed from blood var/blood_id = C.get_blood_id() - if((blood_id == "blood" || blood_id == "jellyblood")) + if((blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood)) if(!data || !(data["blood_type"] in get_safe_blood(C.dna.blood_type))) //we only care about bloodtype here because this is where the poisoning should be C.adjustToxLoss(rand(2,8)*REM, TRUE, TRUE) //forced to ensure people don't use it to gain beneficial toxin as slime person ..() @@ -62,7 +61,7 @@ if(data["blood_DNA"]) B.blood_DNA[data["blood_DNA"]] = data["blood_type"] if(!B.reagents) - B.reagents.add_reagent(id, reac_volume) + B.reagents.add_reagent(type, reac_volume) B.update_icon() /datum/reagent/blood/on_new(list/data) @@ -132,14 +131,12 @@ /datum/reagent/blood/synthetics data = list("donor"=null,"viruses"=null,"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Synthetic Blood" - id = "syntheticblood" taste_description = "oily" color = BLOOD_COLOR_SYNTHETIC // rgb: 11, 7, 48 /datum/reagent/blood/lizard data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_LIZARD, "blood_type"="L","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Lizard Blood" - id = "lizardblood" taste_description = "spicy" color = BLOOD_COLOR_LIZARD // rgb: 11, 7, 48 pH = 6.85 @@ -147,7 +144,6 @@ /datum/reagent/blood/jellyblood data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SLIME, "blood_type"="GEL","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Slime Jelly Blood" - id = "jellyblood" description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." color = BLOOD_COLOR_SLIME taste_description = "slime" @@ -157,7 +153,6 @@ /datum/reagent/blood/xenomorph data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_XENO, "blood_type"="X*","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Xenomorph Blood" - id = "xenoblood" taste_description = "acidic heresy" color = BLOOD_COLOR_XENO // greenish yellow ooze shot_glass_icon_state = "shotglassgreen" @@ -166,7 +161,6 @@ /datum/reagent/blood/oil data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Hydraulic Blood" - id = "oilblood" taste_description = "burnt oil" color = BLOOD_COLOR_OIL // dark, y'know, expected batman colors. pH = 9.75 @@ -174,7 +168,6 @@ /datum/reagent/blood/insect data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_BUG, "blood_type"="BUG","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) name = "Insectoid Blood" - id = "bugblood" taste_description = "waxy" color = BLOOD_COLOR_BUG // Bug colored, I guess. pH = 7.25 @@ -193,7 +186,6 @@ /datum/reagent/liquidgibs name = "Liquid gibs" - id = "liquidgibs" color = BLOOD_COLOR_HUMAN description = "You don't even want to think about what's in here." taste_description = "gross iron" @@ -203,7 +195,6 @@ /datum/reagent/liquidgibs/xeno name = "Liquid xeno gibs" - id = "liquidxenogibs" color = BLOOD_COLOR_XENO taste_description = "blended heresy" shot_glass_icon_state = "shotglassgreen" @@ -212,7 +203,6 @@ /datum/reagent/liquidgibs/slime name = "Slime sludge" - id = "liquidslimegibs" color = BLOOD_COLOR_SLIME taste_description = "slime" shot_glass_icon_state = "shotglassgreen" @@ -221,14 +211,12 @@ /datum/reagent/liquidgibs/synth name = "Synthetic sludge" - id = "liquidsyntheticgibs" color = BLOOD_COLOR_SYNTHETIC taste_description = "jellied plastic" data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) /datum/reagent/liquidgibs/oil name = "Hydraulic sludge" - id = "liquidoilgibs" color = BLOOD_COLOR_OIL taste_description = "chunky burnt oil" data = list("donor"=null,"viruses"=null,"blood_DNA"=null, "bloodcolor" = BLOOD_COLOR_OIL, "blood_type"="HF","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) @@ -237,7 +225,6 @@ /datum/reagent/vaccine //data must contain virus type name = "Vaccine" - id = "vaccine" color = "#C81040" // rgb: 200, 16, 64 taste_description = "slime" @@ -255,7 +242,6 @@ /datum/reagent/water name = "Water" - id = "water" description = "An ubiquitous chemical substance that is composed of hydrogen and oxygen." color = "#AAAAAA77" // rgb: 170, 170, 170, 77 (alpha) taste_description = "water" @@ -327,7 +313,6 @@ /datum/reagent/water/holywater name = "Holy Water" - id = "holywater" description = "Water blessed by some deity." color = "#E0E8EF" // rgb: 224, 232, 239 glass_icon_state = "glass_clear" @@ -337,7 +322,7 @@ /datum/reagent/water/holywater/on_mob_metabolize(mob/living/L) . = ..() - ADD_TRAIT(L, TRAIT_HOLY, id) + ADD_TRAIT(L, TRAIT_HOLY, type) if(is_servant_of_ratvar(L)) to_chat(L, "A fog spreads through your mind, purging the Justiciar's influence!") @@ -345,7 +330,7 @@ to_chat(L, "A fog spreads through your mind, weakening your connection to the veil and purging Nar-sie's influence") /datum/reagent/water/holywater/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_HOLY, id) + REMOVE_TRAIT(L, TRAIT_HOLY, type) if(iscultist(L)) for(var/datum/action/innate/cult/blood_magic/BM in L.actions) BM.holy_dispel = FALSE @@ -392,9 +377,9 @@ remove_servant_of_ratvar(M) M.jitteriness = 0 M.stuttering = 0 - holder.remove_reagent(id, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better?? + holder.del_reagent(type) // maybe this is a little too perfect and a max() cap on the statuses would be better?? return - holder.remove_reagent(id, 0.4) //fixed consumption to prevent balancing going out of whack + holder.remove_reagent(type, 0.4) //fixed consumption to prevent balancing going out of whack /datum/reagent/water/holywater/reaction_turf(turf/T, reac_volume) ..() @@ -407,14 +392,13 @@ /datum/reagent/fuel/unholywater //if you somehow managed to extract this from someone, dont splash it on yourself and have a smoke name = "Unholy Water" - id = "unholywater" description = "Something that shouldn't exist on this plane of existence." taste_description = "suffering" pH = 6.5 /datum/reagent/fuel/unholywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) - M.reagents.add_reagent(id,reac_volume/4) + M.reagents.add_reagent(type, reac_volume/4) return return ..() @@ -437,12 +421,11 @@ M.adjustFireLoss(2, 0) M.adjustOxyLoss(2, 0) M.adjustBruteLoss(2, 0) - holder.remove_reagent(id, 1) + holder.remove_reagent(type, 1) return TRUE /datum/reagent/hellwater //if someone has this in their system they've really pissed off an eldrich god name = "Hell Water" - id = "hell_water" description = "YOUR FLESH! IT BURNS!" taste_description = "burning" @@ -452,12 +435,11 @@ M.adjustToxLoss(1, 0) M.adjustFireLoss(1, 0) //Hence the other damages... ain't I a bastard? M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 150) - holder.remove_reagent(id, 1) + holder.remove_reagent(type, 1) pH = 0.1 /datum/reagent/fuel/holyoil //Its oil name = "Zelus Oil" - id = "holyoil" description = "Oil blessed by a greater being." taste_description = "metallic oil" @@ -481,7 +463,7 @@ M.adjustToxLoss(3, 0) M.adjustOxyLoss(2, 0) M.adjustStaminaLoss(10, 0) - holder.remove_reagent(id, 1) + holder.remove_reagent(type, 1) return TRUE //We only get 30u to start with... @@ -496,13 +478,11 @@ /datum/reagent/medicine/omnizine/godblood name = "Godblood" - id = "godblood" description = "Slowly heals all damage types. Has a rather high overdose threshold. Glows with mysterious power." overdose_threshold = 150 /datum/reagent/lube name = "Space Lube" - id = "lube" description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." color = "#009CA8" // rgb: 0, 156, 168 taste_description = "cherry" // by popular demand @@ -517,13 +497,11 @@ ///Stronger kind of lube. Applies TURF_WET_SUPERLUBE. /datum/reagent/lube/superlube name = "Super Duper Lube" - id = "superlube" description = "This \[REDACTED\] has been outlawed after the incident on \[DATA EXPUNGED\]." lube_kind = TURF_WET_SUPERLUBE /datum/reagent/spraytan name = "Spray Tan" - id = "spraytan" description = "A substance applied to the skin to darken the skin." color = "#FFC080" // rgb: 255, 196, 128 Bright orange metabolization_rate = 10 * REAGENTS_METABOLISM // very fast, so it can be applied rapidly. But this changes on an overdose @@ -620,7 +598,6 @@ /datum/reagent/mutationtoxin name = "Stable Mutation Toxin" - id = "stablemutationtoxin" description = "A humanizing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 metabolization_rate = INFINITY //So it instantly removes all of itself @@ -651,7 +628,6 @@ /datum/reagent/mutationtoxin/classic //The one from plasma on green slimes name = "Mutation Toxin" - id = "mutationtoxin" description = "A corruptive toxin." color = "#13BC5E" // rgb: 19, 188, 94 race = /datum/species/jelly/slime @@ -659,14 +635,12 @@ /datum/reagent/mutationtoxin/felinid name = "Felinid Mutation Toxin" - id = "felinidmutationtoxin" color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/human/felinid mutationtext = "The pain subsides. You feel... like a degenerate." /datum/reagent/mutationtoxin/lizard name = "Lizard Mutation Toxin" - id = "lizardmutationtoxin" description = "A lizarding toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/lizard @@ -674,7 +648,6 @@ /datum/reagent/mutationtoxin/fly name = "Fly Mutation Toxin" - id = "flymutationtoxin" description = "An insectifying toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/fly @@ -682,7 +655,6 @@ /datum/reagent/mutationtoxin/insect name = "Insect Mutation Toxin" - id = "mothmutationtoxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/insect @@ -690,7 +662,6 @@ /datum/reagent/mutationtoxin/pod name = "Podperson Mutation Toxin" - id = "podmutationtoxin" description = "A vegetalizing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/pod @@ -698,7 +669,6 @@ /datum/reagent/mutationtoxin/jelly name = "Imperfect Mutation Toxin" - id = "jellymutationtoxin" description = "An jellyfying toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/jelly @@ -706,7 +676,6 @@ /datum/reagent/mutationtoxin/golem name = "Golem Mutation Toxin" - id = "golemmutationtoxin" description = "A crystal toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/golem/random @@ -714,7 +683,6 @@ /datum/reagent/mutationtoxin/abductor name = "Abductor Mutation Toxin" - id = "abductormutationtoxin" description = "An alien toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/abductor @@ -722,7 +690,6 @@ /datum/reagent/mutationtoxin/android name = "Android Mutation Toxin" - id = "androidmutationtoxin" description = "A robotic toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/android @@ -731,7 +698,6 @@ //Citadel Races /datum/reagent/mutationtoxin/mammal name = "Mammal Mutation Toxin" - id = "mammalmutationtoxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/mammal @@ -739,7 +705,6 @@ /datum/reagent/mutationtoxin/insect name = "Insect Mutation Toxin" - id = "insectmutationtoxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/insect @@ -747,7 +712,6 @@ /datum/reagent/mutationtoxin/xenoperson name = "Xeno-Hybrid Mutation Toxin" - id = "xenopersonmutationtoxin" description = "A glowing toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/xeno @@ -756,7 +720,6 @@ //BLACKLISTED RACES /datum/reagent/mutationtoxin/skeleton name = "Skeleton Mutation Toxin" - id = "skeletonmutationtoxin" description = "A scary toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/skeleton @@ -764,7 +727,6 @@ /datum/reagent/mutationtoxin/zombie name = "Zombie Mutation Toxin" - id = "zombiemutationtoxin" description = "An undead toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/zombie //Not the infectious kind. The days of xenobio zombie outbreaks are long past. @@ -772,7 +734,6 @@ /datum/reagent/mutationtoxin/ash name = "Ash Mutation Toxin" - id = "ashmutationtoxin" description = "An ashen toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/lizard/ashwalker @@ -782,7 +743,6 @@ //DANGEROUS RACES /datum/reagent/mutationtoxin/shadow name = "Shadow Mutation Toxin" - id = "shadowmutationtoxin" description = "A dark toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/shadow @@ -790,7 +750,6 @@ /datum/reagent/mutationtoxin/plasma name = "Plasma Mutation Toxin" - id = "plasmamutationtoxin" description = "A plasma-based toxin." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/plasmaman @@ -798,7 +757,6 @@ /datum/reagent/slime_toxin name = "Slime Mutation Toxin" - id = "slime_toxin" description = "A toxin that turns organic material into slime." color = "#5EFF3B" //RGB: 94, 255, 59 taste_description = "slime" @@ -815,7 +773,7 @@ to_chat(H, "Your jelly shifts and morphs, turning you into another subspecies!") var/species_type = pick(subtypesof(/datum/species/jelly)) H.set_species(species_type) - H.reagents.del_reagent(id) + H.reagents.del_reagent(type) switch(current_cycle) if(1 to 6) @@ -830,12 +788,11 @@ if(20 to INFINITY) var/species_type = pick(subtypesof(/datum/species/jelly)) H.set_species(species_type) - H.reagents.del_reagent(id) + H.reagents.del_reagent(type) to_chat(H, "You've become \a jellyperson!") /datum/reagent/mulligan name = "Mulligan Toxin" - id = "mulligan" description = "This toxin will rapidly change the DNA of human beings. Commonly used by Syndicate spies and assassins in need of an emergency ID change." color = "#5EFF3B" //RGB: 94, 255, 59 metabolization_rate = INFINITY @@ -851,7 +808,6 @@ /datum/reagent/aslimetoxin name = "Advanced Mutation Toxin" - id = "amutationtoxin" description = "An advanced corruptive toxin produced by slimes." color = "#13BC5E" // rgb: 19, 188, 94 taste_description = "slime" @@ -862,7 +818,6 @@ /datum/reagent/gluttonytoxin name = "Gluttony's Blessing" - id = "gluttonytoxin" description = "An advanced corruptive toxin produced by something terrible." color = "#5EFF3B" //RGB: 94, 255, 59 can_synth = FALSE @@ -873,7 +828,6 @@ /datum/reagent/serotrotium name = "Serotrotium" - id = "serotrotium" description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans." color = "#202040" // rgb: 20, 20, 40 metabolization_rate = 0.25 * REAGENTS_METABOLISM @@ -888,7 +842,6 @@ /datum/reagent/oxygen name = "Oxygen" - id = "oxygen" description = "A colorless, odorless gas. Grows on trees but is still pretty valuable." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -909,7 +862,6 @@ /datum/reagent/copper name = "Copper" - id = "copper" description = "A highly ductile metal. Things made out of copper aren't very durable, but it makes a decent material for electrical wiring." reagent_state = SOLID color = "#6E3B08" // rgb: 110, 59, 8 @@ -925,7 +877,6 @@ /datum/reagent/nitrogen name = "Nitrogen" - id = "nitrogen" description = "A colorless, odorless, tasteless gas. A simple asphyxiant that can silently displace vital oxygen." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -946,7 +897,6 @@ /datum/reagent/hydrogen name = "Hydrogen" - id = "hydrogen" description = "A colorless, odorless, nonmetallic, tasteless, highly combustible diatomic gas." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -955,7 +905,6 @@ /datum/reagent/potassium name = "Potassium" - id = "potassium" description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water." reagent_state = SOLID color = "#A0A0A0" // rgb: 160, 160, 160 @@ -963,7 +912,6 @@ /datum/reagent/mercury name = "Mercury" - id = "mercury" description = "A curious metal that's a liquid at room temperature. Neurodegenerative and very bad for the mind." color = "#484848" // rgb: 72, 72, 72A taste_mult = 0 // apparently tasteless. @@ -978,7 +926,6 @@ /datum/reagent/sulfur name = "Sulfur" - id = "sulfur" description = "A sickly yellow solid mostly known for its nasty smell. It's actually much more helpful than it looks in biochemisty." reagent_state = SOLID color = "#BF8C00" // rgb: 191, 140, 0 @@ -987,7 +934,6 @@ /datum/reagent/carbon name = "Carbon" - id = "carbon" description = "A crumbly black solid that, while unexciting on an physical level, forms the base of all known life. Kind of a big deal." reagent_state = SOLID color = "#1C1300" // rgb: 30, 20, 0 @@ -1002,7 +948,6 @@ /datum/reagent/chlorine name = "Chlorine" - id = "chlorine" description = "A pale yellow gas that's well known as an oxidizer. While it forms many harmless molecules in its elemental form it is far from harmless." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -1016,7 +961,6 @@ /datum/reagent/fluorine name = "Fluorine" - id = "fluorine" description = "A comically-reactive chemical element. The universe does not want this stuff to exist in this form in the slightest." reagent_state = GAS color = "#808080" // rgb: 128, 128, 128 @@ -1030,7 +974,6 @@ /datum/reagent/sodium name = "Sodium" - id = "sodium" description = "A soft silver metal that can easily be cut with a knife. It's not salt just yet, so refrain from putting in on your chips." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 @@ -1039,7 +982,6 @@ /datum/reagent/phosphorus name = "Phosphorus" - id = "phosphorus" description = "A ruddy red powder that burns readily. Though it comes in many colors, the general theme is always the same." reagent_state = SOLID color = "#832828" // rgb: 131, 40, 40 @@ -1048,7 +990,6 @@ /datum/reagent/lithium name = "Lithium" - id = "lithium" description = "A silver metal, its claim to fame is its remarkably low density. Using it is a bit too effective in calming oneself down." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 @@ -1064,7 +1005,6 @@ /datum/reagent/glycerol name = "Glycerol" - id = "glycerol" description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." color = "#808080" // rgb: 128, 128, 128 taste_description = "sweetness" @@ -1072,7 +1012,6 @@ /datum/reagent/radium name = "Radium" - id = "radium" description = "Radium is an alkaline earth metal. It is extremely radioactive." reagent_state = SOLID color = "#C7C7C7" // rgb: 199,199,199 @@ -1089,11 +1028,10 @@ var/obj/effect/decal/cleanable/greenglow/GG = locate() in T.contents if(!GG) GG = new/obj/effect/decal/cleanable/greenglow(T) - GG.reagents.add_reagent("radium", reac_volume) + GG.reagents.add_reagent(/datum/reagent/radium, reac_volume) /datum/reagent/space_cleaner/sterilizine name = "Sterilizine" - id = "sterilizine" description = "Sterilizes wounds in preparation for surgery." color = "#e6f1f5" // rgb: 200, 165, 220 taste_description = "bitterness" @@ -1109,7 +1047,6 @@ /datum/reagent/iron name = "Iron" - id = "iron" description = "Pure iron is a metal." reagent_state = SOLID taste_description = "iron" @@ -1127,12 +1064,12 @@ /datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(M.has_bane(BANE_IRON)) //If the target is weak to cold iron, then poison them. if(holder && holder.chem_temp < 100) // COLD iron. - M.reagents.add_reagent("toxin", reac_volume) + M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) ..() /datum/reagent/iron/overdose_start(mob/living/M) to_chat(M, "You start feeling your guts twisting painfully!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[id]_overdose", /datum/mood_event/overdose, name) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name) /datum/reagent/iron/overdose_process(mob/living/carbon/C) if(prob(20)) @@ -1143,7 +1080,6 @@ /datum/reagent/gold name = "Gold" - id = "gold" description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known." reagent_state = SOLID color = "#F7C430" // rgb: 247, 196, 48 @@ -1151,7 +1087,6 @@ /datum/reagent/silver name = "Silver" - id = "silver" description = "A soft, white, lustrous transition metal, it has the highest electrical conductivity of any element and the highest thermal conductivity of any metal." reagent_state = SOLID color = "#D0D0D0" // rgb: 208, 208, 208 @@ -1159,12 +1094,11 @@ /datum/reagent/silver/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(M.has_bane(BANE_SILVER)) - M.reagents.add_reagent("toxin", reac_volume) + M.reagents.add_reagent(/datum/reagent/toxin, reac_volume) ..() /datum/reagent/uranium name ="Uranium" - id = "uranium" description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." reagent_state = SOLID color = "#B8B8C0" // rgb: 184, 184, 192 @@ -1181,11 +1115,10 @@ var/obj/effect/decal/cleanable/greenglow/GG = locate() in T.contents if(!GG) GG = new/obj/effect/decal/cleanable/greenglow(T) - GG.reagents.add_reagent("uranium", reac_volume) + GG.reagents.add_reagent(/datum/reagent/uranium, reac_volume) /datum/reagent/bluespace name = "Bluespace Dust" - id = "bluespace" description = "A dust composed of microscopic bluespace crystals, with minor space-warping properties." reagent_state = SOLID color = "#0000CC" @@ -1210,7 +1143,6 @@ /datum/reagent/aluminium name = "Aluminium" - id = "aluminium" description = "A silvery white and ductile member of the boron group of chemical elements." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 @@ -1218,7 +1150,6 @@ /datum/reagent/silicon name = "Silicon" - id = "silicon" description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 @@ -1227,7 +1158,6 @@ /datum/reagent/fuel name = "Welding fuel" - id = "welding_fuel" description = "Required for welders. Flamable." color = "#660000" // rgb: 102, 0, 0 taste_description = "gross metal" @@ -1250,7 +1180,6 @@ /datum/reagent/space_cleaner name = "Space cleaner" - id = "cleaner" description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" color = "#A5F0EE" // rgb: 165, 240, 238 taste_description = "sourness" @@ -1317,7 +1246,6 @@ /datum/reagent/space_cleaner/ez_clean name = "EZ Clean" - id = "ez_clean" description = "A powerful, acidic cleaner sold by Waffle Co. Affects organic matter while leaving other objects unaffected." metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "acid" @@ -1337,7 +1265,6 @@ /datum/reagent/cryptobiolin name = "Cryptobiolin" - id = "cryptobiolin" description = "Cryptobiolin causes confusion and dizziness." color = "#7529b3" // rgb: 200, 165, 220 metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -1353,7 +1280,6 @@ /datum/reagent/impedrezene name = "Impedrezene" - id = "impedrezene" description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions." color = "#587a31" // rgb: 200, 165, 220A taste_description = "numbness" @@ -1371,7 +1297,6 @@ /datum/reagent/nanomachines name = "Nanomachines" - id = "nanomachines" description = "Microscopic construction robots." color = "#535E66" // rgb: 83, 94, 102 can_synth = FALSE @@ -1383,7 +1308,6 @@ /datum/reagent/xenomicrobes name = "Xenomicrobes" - id = "xenomicrobes" description = "Microbes with an entirely alien cellular structure." color = "#535E66" // rgb: 83, 94, 102 can_synth = FALSE @@ -1395,7 +1319,6 @@ /datum/reagent/fungalspores name = "Tubercle bacillus Cosmosis microbes" - id = "fungalspores" description = "Active fungal spores." color = "#92D17D" // rgb: 146, 209, 125 can_synth = FALSE @@ -1408,7 +1331,6 @@ /datum/reagent/fluorosurfactant//foam precursor name = "Fluorosurfactant" - id = "fluorosurfactant" description = "A perfluoronated sulfonic acid that forms a foam when mixed with water." color = "#9E6B38" // rgb: 158, 107, 56 taste_description = "metal" @@ -1416,7 +1338,6 @@ /datum/reagent/foaming_agent// Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually. name = "Foaming agent" - id = "foaming_agent" description = "An agent that yields metallic foam when mixed with light metal and a strong acid." reagent_state = SOLID color = "#664B63" // rgb: 102, 75, 99 @@ -1425,7 +1346,6 @@ /datum/reagent/smart_foaming_agent //Smart foaming agent. Functions similarly to metal foam, but conforms to walls. name = "Smart foaming agent" - id = "smart_foaming_agent" description = "An agent that yields metallic foam which conforms to area boundaries when mixed with light metal and a strong acid." reagent_state = SOLID color = "#664B63" // rgb: 102, 75, 99 @@ -1434,7 +1354,6 @@ /datum/reagent/ammonia name = "Ammonia" - id = "ammonia" description = "A caustic substance commonly used in fertilizer or household cleaners." reagent_state = GAS color = "#404030" // rgb: 64, 64, 48 @@ -1443,7 +1362,6 @@ /datum/reagent/diethylamine name = "Diethylamine" - id = "diethylamine" description = "A secondary amine, mildly corrosive." color = "#604030" // rgb: 96, 64, 48 taste_description = "iron" @@ -1451,7 +1369,6 @@ /datum/reagent/carbondioxide name = "Carbon Dioxide" - id = "co2" reagent_state = GAS description = "A gas commonly produced by burning carbon fuels. You're constantly producing this in your lungs." color = "#B0B0B0" // rgb : 192, 192, 192 @@ -1472,7 +1389,6 @@ /datum/reagent/nitrous_oxide name = "Nitrous Oxide" - id = "nitrous_oxide" description = "A potent oxidizer used as fuel in rockets and as an anaesthetic during surgery." reagent_state = LIQUID metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -1507,7 +1423,6 @@ /datum/reagent/stimulum name = "Stimulum" - id = "stimulum" description = "An unstable experimental gas that greatly increases the energy of those that inhale it" reagent_state = GAS metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -1516,23 +1431,22 @@ /datum/reagent/stimulum/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_STUNIMMUNE, id) - ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, id) + ADD_TRAIT(L, TRAIT_STUNIMMUNE, type) + ADD_TRAIT(L, TRAIT_SLEEPIMMUNE, type) /datum/reagent/stimulum/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, id) - REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, id) + REMOVE_TRAIT(L, TRAIT_STUNIMMUNE, type) + REMOVE_TRAIT(L, TRAIT_SLEEPIMMUNE, type) ..() /datum/reagent/stimulum/on_mob_life(mob/living/carbon/M) M.adjustStaminaLoss(-2*REM, 0) current_cycle++ - holder.remove_reagent(id, 0.99) //Gives time for the next tick of life(). + holder.remove_reagent(type, 0.99) //Gives time for the next tick of life(). . = TRUE //Update status effects. /datum/reagent/nitryl name = "Nitryl" - id = "no2" description = "A highly reactive gas that makes you feel faster" reagent_state = GAS metabolization_rate = REAGENTS_METABOLISM @@ -1542,10 +1456,10 @@ /datum/reagent/nitryl/on_mob_metabolize(mob/living/L) ..() - L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) + L.add_movespeed_modifier(type, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING)) /datum/reagent/nitryl/on_mob_end_metabolize(mob/living/L) - L.remove_movespeed_modifier(id) + L.remove_movespeed_modifier(type) ..() /////////////////////////Coloured Crayon Powder//////////////////////////// @@ -1554,7 +1468,6 @@ /datum/reagent/colorful_reagent/crayonpowder name = "Crayon Powder" - id = "crayon powder" var/colorname = "none" description = "A powder made by grinding down crayons, good for colouring chemical reagents." reagent_state = SOLID @@ -1568,7 +1481,6 @@ /datum/reagent/colorful_reagent/crayonpowder/red name = "Red Crayon Powder" - id = "redcrayonpowder" colorname = "red" color = "#DA0000" // red random_color_list = list("#DA0000") @@ -1576,7 +1488,6 @@ /datum/reagent/colorful_reagent/crayonpowder/orange name = "Orange Crayon Powder" - id = "orangecrayonpowder" colorname = "orange" color = "#FF9300" // orange random_color_list = list("#FF9300") @@ -1584,7 +1495,6 @@ /datum/reagent/colorful_reagent/crayonpowder/yellow name = "Yellow Crayon Powder" - id = "yellowcrayonpowder" colorname = "yellow" color = "#FFF200" // yellow random_color_list = list("#FFF200") @@ -1592,7 +1502,6 @@ /datum/reagent/colorful_reagent/crayonpowder/green name = "Green Crayon Powder" - id = "greencrayonpowder" colorname = "green" color = "#A8E61D" // green random_color_list = list("#A8E61D") @@ -1600,7 +1509,6 @@ /datum/reagent/colorful_reagent/crayonpowder/blue name = "Blue Crayon Powder" - id = "bluecrayonpowder" colorname = "blue" color = "#00B7EF" // blue random_color_list = list("#00B7EF") @@ -1608,7 +1516,6 @@ /datum/reagent/colorful_reagent/crayonpowder/purple name = "Purple Crayon Powder" - id = "purplecrayonpowder" colorname = "purple" color = "#DA00FF" // purple random_color_list = list("#DA00FF") @@ -1616,21 +1523,18 @@ /datum/reagent/colorful_reagent/crayonpowder/invisible name = "Invisible Crayon Powder" - id = "invisiblecrayonpowder" colorname = "invisible" color = "#FFFFFF00" // white + no alpha random_color_list = list(null) //because using the powder color turns things invisible /datum/reagent/colorful_reagent/crayonpowder/black name = "Black Crayon Powder" - id = "blackcrayonpowder" colorname = "black" color = "#1C1C1C" // not quite black random_color_list = list("#404040") /datum/reagent/colorful_reagent/crayonpowder/white name = "White Crayon Powder" - id = "whitecrayonpowder" colorname = "white" color = "#FFFFFF" // white random_color_list = list("#FFFFFF") //doesn't actually change appearance at all @@ -1639,7 +1543,6 @@ /datum/reagent/plantnutriment name = "Generic nutriment" - id = "plantnutriment" description = "Some kind of nutriment. You can't really tell what it is. You should probably report it, along with how you obtained it." color = "#000000" // RBG: 0, 0, 0 var/tox_prob = 0 @@ -1654,7 +1557,6 @@ /datum/reagent/plantnutriment/eznutriment name = "E-Z-Nutrient" - id = "eznutriment" description = "Cheap and extremely common type of plant nutriment." color = "#376400" // RBG: 50, 100, 0 tox_prob = 10 @@ -1662,7 +1564,6 @@ /datum/reagent/plantnutriment/left4zednutriment name = "Left 4 Zed" - id = "left4zednutriment" description = "Unstable nutriment that makes plants mutate more often than usual." color = "#1A1E4D" // RBG: 26, 30, 77 tox_prob = 25 @@ -1670,7 +1571,6 @@ /datum/reagent/plantnutriment/robustharvestnutriment name = "Robust Harvest" - id = "robustharvestnutriment" description = "Very potent nutriment that prevents plants from mutating." color = "#9D9D00" // RBG: 157, 157, 0 tox_prob = 15 @@ -1680,7 +1580,6 @@ /datum/reagent/oil name = "Oil" - id = "oil" description = "Burns in a small smoky fire, mostly used to get Ash." reagent_state = LIQUID color = "#292929" @@ -1688,7 +1587,6 @@ /datum/reagent/stable_plasma name = "Stable Plasma" - id = "stable_plasma" description = "Non-flammable plasma locked into a liquid form that cannot ignite or become gaseous/solid." reagent_state = LIQUID color = "#6b008f" @@ -1702,7 +1600,6 @@ /datum/reagent/iodine name = "Iodine" - id = "iodine" description = "Commonly added to table salt as a nutrient. On its own it tastes far less pleasing." reagent_state = LIQUID color = "#694600" @@ -1711,7 +1608,6 @@ /datum/reagent/bromine name = "Bromine" - id = "bromine" description = "A brownish liquid that's highly reactive. Useful for stopping free radicals, but not intended for human consumption." reagent_state = LIQUID color = "#b37740" @@ -1720,7 +1616,6 @@ /datum/reagent/phenol name = "Phenol" - id = "phenol" description = "An aromatic ring of carbon with a hydroxyl group. A useful precursor to some medicines, but has no healing properties on its own." reagent_state = LIQUID taste_description = "sweet and tarry" //Again, not a strong acid. @@ -1729,7 +1624,6 @@ /datum/reagent/ash name = "Ash" - id = "ash" description = "Supposedly phoenixes rise from these, but you've never seen it." reagent_state = LIQUID color = "#665c56" @@ -1738,7 +1632,6 @@ /datum/reagent/acetone name = "Acetone" - id = "acetone" description = "A slick, slightly carcinogenic liquid. Has a multitude of mundane uses in everyday life." reagent_state = LIQUID taste_description = "solvent"//It's neutral though..? @@ -1746,7 +1639,6 @@ /datum/reagent/colorful_reagent name = "Colorful Reagent" - id = "colorful_reagent" description = "Thoroughly sample the rainbow." reagent_state = LIQUID color = "#FFFF00" @@ -1776,7 +1668,6 @@ /datum/reagent/hair_dye name = "Quantum Hair Dye" - id = "hair_dye" description = "Has a high chance of making you look like a mad scientist." reagent_state = LIQUID color = "#ff00dd" @@ -1793,7 +1684,6 @@ /datum/reagent/barbers_aid name = "Barber's Aid" - id = "barbers_aid" description = "A solution to hair loss across the world." reagent_state = LIQUID color = "#fac34b" @@ -1811,7 +1701,6 @@ /datum/reagent/concentrated_barbers_aid name = "Concentrated Barber's Aid" - id = "concentrated_barbers_aid" description = "A concentrated solution to hair loss across the world." reagent_state = LIQUID color = "#ffaf00" @@ -1827,7 +1716,6 @@ /datum/reagent/saltpetre name = "Saltpetre" - id = "saltpetre" description = "Volatile. Controversial. Third Thing." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 @@ -1836,7 +1724,6 @@ /datum/reagent/lye name = "Lye" - id = "lye" description = "Also known as sodium hydroxide. As a profession making this is somewhat underwhelming." reagent_state = LIQUID color = "#FFFFD6" // very very light yellow @@ -1845,7 +1732,6 @@ /datum/reagent/drying_agent name = "Drying agent" - id = "drying_agent" description = "A desiccant. Can be used to dry things." reagent_state = LIQUID color = "#A70FFF" @@ -1865,7 +1751,6 @@ // Liquid Carpets /datum/reagent/carpet name = "Liquid Carpet" - id = "carpet" description = "For those that need a more creative way to roll out a carpet." reagent_state = LIQUID color = "#b51d05" @@ -1880,70 +1765,59 @@ /datum/reagent/carpet/black name = "Liquid Black Carpet" - id = "blackcarpet" color = "#363636" carpet_type = /turf/open/floor/carpet/black /datum/reagent/carpet/blackred name = "Liquid Red Black Carpet" - id = "blackredcarpet" color = "#342125" carpet_type = /turf/open/floor/carpet/blackred /datum/reagent/carpet/monochrome name = "Liquid Monochrome Carpet" - id = "monochromecarpet" color = "#b4b4b4" carpet_type = /turf/open/floor/carpet/monochrome /datum/reagent/carpet/blue name = "Liquid Blue Carpet" - id = "bluecarpet" color = "#1256ff" carpet_type = /turf/open/floor/carpet/blue /datum/reagent/carpet/cyan name = "Liquid Cyan Carpet" - id = "cyancarpet" color = "#3acfb9" carpet_type = /turf/open/floor/carpet/cyan /datum/reagent/carpet/green name = "Liquid Green Carpet" - id = "greencarpet" color = "#619b62" carpet_type = /turf/open/floor/carpet/green /datum/reagent/carpet/orange name = "Liquid Orange Carpet" - id = "orangecarpet" color = "#cc7900" carpet_type = /turf/open/floor/carpet/orange /datum/reagent/carpet/purple name = "Liquid Purple Carpet" - id = "purplecarpet" color = "#6d3392" carpet_type = /turf/open/floor/carpet/purple /datum/reagent/carpet/red name = "Liquid Red Carpet" - id = "redcarpet" color = "#871515" carpet_type = /turf/open/floor/carpet/red /datum/reagent/carpet/royalblack name = "Liquid Royal Black Carpet" - id = "royalblackcarpet" color = "#483d05" carpet_type = /turf/open/floor/carpet/royalblack /datum/reagent/carpet/royalblue name = "Liquid Royal Blue Carpet" - id = "royalbluecarpet" color = "#24227e" carpet_type = /turf/open/floor/carpet/royalblue @@ -1952,51 +1826,43 @@ /datum/reagent/toxin/mutagen/mutagenvirusfood name = "mutagenic agar" - id = "mutagenvirusfood" color = "#A3C00F" // rgb: 163,192,15 taste_description = "sourness" /datum/reagent/toxin/mutagen/mutagenvirusfood/sugar name = "sucrose agar" - id = "sugarvirusfood" color = "#41B0C0" // rgb: 65,176,192 taste_description = "sweetness" /datum/reagent/medicine/synaptizine/synaptizinevirusfood name = "virus rations" - id = "synaptizinevirusfood" color = "#D18AA5" // rgb: 209,138,165 taste_description = "bitterness" /datum/reagent/toxin/plasma/plasmavirusfood name = "virus plasma" - id = "plasmavirusfood" color = "#A69DA9" // rgb: 166,157,169 taste_description = "bitterness" taste_mult = 1.5 /datum/reagent/toxin/plasma/plasmavirusfood/weak name = "weakened virus plasma" - id = "weakplasmavirusfood" color = "#CEC3C6" // rgb: 206,195,198 taste_description = "bitterness" taste_mult = 1.5 /datum/reagent/uranium/uraniumvirusfood name = "decaying uranium gel" - id = "uraniumvirusfood" color = "#67ADBA" // rgb: 103,173,186 taste_description = "the inside of a reactor" /datum/reagent/uranium/uraniumvirusfood/unstable name = "unstable uranium gel" - id = "uraniumplasmavirusfood_unstable" color = "#2FF2CB" // rgb: 47,242,203 taste_description = "the inside of a reactor" /datum/reagent/uranium/uraniumvirusfood/stable name = "stable uranium gel" - id = "uraniumplasmavirusfood_stable" color = "#04506C" // rgb: 4,80,108 taste_description = "the inside of a reactor" @@ -2004,7 +1870,6 @@ /datum/reagent/royal_bee_jelly name = "royal bee jelly" - id = "royal_bee_jelly" description = "Royal Bee Jelly, if injected into a Queen Space Bee said bee will split into two bees." color = "#00ff80" taste_description = "strange honey" @@ -2020,7 +1885,6 @@ /datum/reagent/romerol name = "Romerol" // the REAL zombie powder - id = "romerol" description = "Romerol is a highly experimental bioterror agent \ which causes dormant nodules to be etched into the grey matter of \ the subject. These nodules only become active upon death of the \ @@ -2041,7 +1905,6 @@ /datum/reagent/magillitis name = "Magillitis" - id = "magillitis" description = "An experimental serum which causes rapid muscular growth in Hominidae. Side-affects may include hypertrichosis, violent outbursts, and an unending affinity for bananas." reagent_state = LIQUID color = "#00f041" @@ -2053,7 +1916,6 @@ /datum/reagent/growthserum name = "Growth Serum" - id = "growthserum" description = "A commercial chemical designed to help older men in the bedroom."//not really it just makes you a giant color = "#ff0000"//strong red. rgb 255, 0, 0 var/current_size = 1 @@ -2085,7 +1947,6 @@ /datum/reagent/plastic_polymers name = "plastic polymers" - id = "plastic_polymers" description = "the petroleum based components of plastic." color = "#f7eded" taste_description = "plastic" @@ -2093,7 +1954,6 @@ /datum/reagent/glitter name = "generic glitter" - id = "glitter" description = "if you can see this description, contact a coder." color = "#FFFFFF" //pure white taste_description = "plastic" @@ -2107,27 +1967,23 @@ /datum/reagent/glitter/pink name = "pink glitter" - id = "pink_glitter" description = "pink sparkles that get everywhere" color = "#ff8080" //A light pink color glitter_type = /obj/effect/decal/cleanable/glitter/pink /datum/reagent/glitter/white name = "white glitter" - id = "white_glitter" description = "white sparkles that get everywhere" glitter_type = /obj/effect/decal/cleanable/glitter/white /datum/reagent/glitter/blue name = "blue glitter" - id = "blue_glitter" description = "blue sparkles that get everywhere" color = "#4040FF" //A blueish color glitter_type = /obj/effect/decal/cleanable/glitter/blue /datum/reagent/pax name = "pax" - id = "pax" description = "A colorless liquid that suppresses violence on the subjects." color = "#AAAAAA55" taste_description = "water" @@ -2136,15 +1992,14 @@ /datum/reagent/pax/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_PACIFISM, id) + ADD_TRAIT(L, TRAIT_PACIFISM, type) /datum/reagent/pax/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_PACIFISM, id) + REMOVE_TRAIT(L, TRAIT_PACIFISM, type) ..() /datum/reagent/bz_metabolites name = "BZ metabolites" - id = "bz_metabolites" description = "A harmless metabolite of BZ gas" color = "#FAFF00" taste_description = "acrid cinnamon" @@ -2152,11 +2007,11 @@ /datum/reagent/bz_metabolites/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, CHANGELING_HIVEMIND_MUTE, id) + ADD_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type) /datum/reagent/bz_metabolites/on_mob_end_metabolize(mob/living/L) ..() - REMOVE_TRAIT(L, CHANGELING_HIVEMIND_MUTE, id) + REMOVE_TRAIT(L, CHANGELING_HIVEMIND_MUTE, type) /datum/reagent/bz_metabolites/on_mob_life(mob/living/L) if(L.mind) @@ -2167,13 +2022,11 @@ /datum/reagent/pax/peaceborg name = "synth-pax" - id = "synthpax" description = "A colorless liquid that suppresses violence on the subjects. Cheaper to synthetize, but wears out faster than normal Pax." metabolization_rate = 1.5 * REAGENTS_METABOLISM /datum/reagent/peaceborg_confuse name = "Dizzying Solution" - id = "dizzysolution" description = "Makes the target off balance and dizzy" metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "dizziness" @@ -2189,7 +2042,6 @@ /datum/reagent/peaceborg_tire name = "Tiring Solution" - id = "tiresolution" description = "An extremely weak stamina-toxin that tires out the target. Completely harmless." metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "tiredness" @@ -2204,7 +2056,6 @@ /datum/reagent/tranquility name = "Tranquility" - id = "tranquility" description = "A highly mutative liquid of unknown origin." color = "#9A6750" //RGB: 154, 103, 80 taste_description = "inner peace" @@ -2216,7 +2067,6 @@ /datum/reagent/moonsugar name = "Moonsugar" - id = "moonsugar" description = "The primary precursor for an ancient feline delicacy known as skooma. While it has no notable effects on it's own, mixing it with morphine in a chilled container may yield interesting results." color = "#FAEAFF" taste_description = "synthetic catnip" @@ -2229,7 +2079,6 @@ /datum/reagent/changeling_string name = "UNKNOWN" - id = "changeling_sting_real" description = "404: Chemical not found." metabolization_rate = REAGENTS_METABOLISM color = "#0000FF" @@ -2263,14 +2112,12 @@ /datum/reagent/mustardgrind name = "Mustardgrind" - id = "mustardgrind" description = "A powerd that is mixed with water and enzymes to make mustard." color = "#BCC740" //RGB: 188, 199, 64 taste_description = "plant dust" /datum/reagent/pax/catnip name = "catnip" - id = "catnip" taste_description = "grass" description = "A colorless liquid that makes people more peaceful and felines more happy." metabolization_rate = 1.75 * REAGENTS_METABOLISM diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index 36621aa662..9eb033824d 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -1,7 +1,6 @@ /datum/reagent/thermite name = "Thermite" - id = "thermite" description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls." reagent_state = SOLID color = "#550000" @@ -18,7 +17,6 @@ /datum/reagent/nitroglycerin name = "Nitroglycerin" - id = "nitroglycerin" value = 5 description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol." color = "#808080" // rgb: 128, 128, 128 @@ -26,7 +24,6 @@ /datum/reagent/stabilizing_agent name = "Stabilizing Agent" - id = "stabilizing_agent" description = "Keeps unstable chemicals stable. This does not work on everything." reagent_state = LIQUID color = "#FFFF00" @@ -35,7 +32,6 @@ /datum/reagent/clf3 name = "Chlorine Trifluoride" - id = "clf3" description = "Makes a temporary 3x3 fireball when it comes into existence, so be careful when mixing. ClF3 applied to a surface burns things that wouldn't otherwise burn, sometimes through the very floors of the station and exposing it to the vacuum of space." reagent_state = LIQUID color = "#FFC8C8" @@ -79,7 +75,6 @@ /datum/reagent/sorium name = "Sorium" - id = "sorium" description = "Sends everything flying from the detonation point." reagent_state = LIQUID color = "#5A64C8" @@ -87,7 +82,6 @@ /datum/reagent/liquid_dark_matter name = "Liquid Dark Matter" - id = "liquid_dark_matter" description = "Sucks everything into the detonation point." reagent_state = LIQUID color = "#210021" @@ -96,7 +90,6 @@ /datum/reagent/blackpowder name = "Black Powder" - id = "blackpowder" description = "Explodes. Violently." reagent_state = LIQUID color = "#000000" @@ -118,7 +111,6 @@ /datum/reagent/flash_powder name = "Flash Powder" - id = "flash_powder" description = "Makes a very bright flash." reagent_state = LIQUID color = "#C8C8C8" @@ -126,7 +118,6 @@ /datum/reagent/smoke_powder name = "Smoke Powder" - id = "smoke_powder" description = "Makes a large cloud of smoke that can carry reagents." reagent_state = LIQUID color = "#C8C8C8" @@ -134,7 +125,6 @@ /datum/reagent/sonic_powder name = "Sonic Powder" - id = "sonic_powder" description = "Makes a deafening noise." reagent_state = LIQUID color = "#C8C8C8" @@ -142,7 +132,6 @@ /datum/reagent/phlogiston name = "Phlogiston" - id = "phlogiston" description = "Catches you on fire and makes you ignite." reagent_state = LIQUID color = "#FA00AF" @@ -164,7 +153,6 @@ /datum/reagent/napalm name = "Napalm" - id = "napalm" description = "Very flammable." reagent_state = LIQUID color = "#FA00AF" @@ -182,7 +170,6 @@ /datum/reagent/cryostylane name = "Cryostylane" - id = "cryostylane" description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Cryostylane slowly cools all other reagents in the container 0K." color = "#0000DC" metabolization_rate = 0.5 * REAGENTS_METABOLISM @@ -190,8 +177,8 @@ /datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube - if(M.reagents.has_reagent("oxygen")) - M.reagents.remove_reagent("oxygen", 0.5) + if(M.reagents.has_reagent(/datum/reagent/oxygen)) + M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5) M.adjust_bodytemperature(-15) ..() @@ -202,21 +189,19 @@ /datum/reagent/pyrosium name = "Pyrosium" - id = "pyrosium" description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Pyrosium slowly heats all other reagents in the container." color = "#64FAC8" metabolization_rate = 0.5 * REAGENTS_METABOLISM taste_description = "bitterness" /datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M) - if(M.reagents.has_reagent("oxygen")) - M.reagents.remove_reagent("oxygen", 0.5) + if(M.reagents.has_reagent(/datum/reagent/oxygen)) + M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5) M.adjust_bodytemperature(15) ..() /datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective. name = "Teslium" - id = "teslium" description = "An unstable, electrically-charged metallic slurry. Periodically electrocutes its victim, and makes electrocutions against them more deadly. Excessively heating teslium results in dangerous destabilization. Do not allow to come into contact with water." reagent_state = LIQUID color = "#20324D" //RGB: 32, 50, 77 @@ -234,7 +219,6 @@ /datum/reagent/teslium/energized_jelly name = "Energized Jelly" - id = "energized_jelly" description = "Electrically-charged jelly. Boosts jellypeople's nervous system, but only shocks other lifeforms." reagent_state = LIQUID color = "#CAFF43" @@ -255,7 +239,6 @@ /datum/reagent/firefighting_foam name = "Firefighting Foam" - id = "firefighting_foam" description = "A historical fire suppressant. Originally believed to simply displace oxygen to starve fires, it actually interferes with the combustion reaction itself. Vastly superior to the cheap water-based extinguishers found on NT vessels." reagent_state = LIQUID color = "#A6FAFF55" diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index f97204b45e..ad3a2c90a4 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -3,7 +3,6 @@ /datum/reagent/toxin name = "Toxin" - id = "toxin" description = "A toxic chemical." color = "#CF3600" // rgb: 207, 54, 0 taste_description = "bitterness" @@ -18,7 +17,6 @@ /datum/reagent/toxin/amatoxin name = "Amatoxin" - id = "amatoxin" description = "A powerful poison derived from certain species of mushroom." color = "#792300" // rgb: 121, 35, 0 toxpwr = 2.5 @@ -27,7 +25,6 @@ /datum/reagent/toxin/mutagen name = "Unstable mutagen" - id = "mutagen" description = "Might cause unpredictable mutations. Keep away from children." color = "#00FF00" toxpwr = 0 @@ -56,7 +53,6 @@ /datum/reagent/toxin/plasma name = "Plasma" - id = "plasma" description = "Plasma in its liquid form." taste_description = "bitterness" specific_heat = SPECIFIC_HEAT_PLASMA @@ -66,8 +62,8 @@ pH = 4 /datum/reagent/toxin/plasma/on_mob_life(mob/living/carbon/C) - if(holder.has_reagent("epinephrine")) - holder.remove_reagent("epinephrine", 2*REM) + if(holder.has_reagent(/datum/reagent/medicine/epinephrine)) + holder.remove_reagent(/datum/reagent/medicine/epinephrine, 2*REM) C.adjustPlasma(20) return ..() @@ -91,7 +87,6 @@ /datum/reagent/toxin/lexorin name = "Lexorin" - id = "lexorin" description = "A powerful poison used to stop respiration." color = "#7DC3A0" toxpwr = 0 @@ -113,7 +108,6 @@ /datum/reagent/toxin/slimejelly name = "Slime Jelly" - id = "slimejelly" description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." color = "#801E28" // rgb: 128, 30, 40 toxpwr = 0 @@ -133,7 +127,6 @@ /datum/reagent/toxin/minttoxin name = "Mint Toxin" - id = "minttoxin" description = "Useful for dealing with undesirable customers." color = "#CF3600" // rgb: 207, 54, 0 toxpwr = 0 @@ -147,7 +140,6 @@ /datum/reagent/toxin/carpotoxin name = "Carpotoxin" - id = "carpotoxin" description = "A deadly neurotoxin produced by the dreaded spess carp." color = "#003333" // rgb: 0, 51, 51 toxpwr = 2 @@ -156,7 +148,6 @@ /datum/reagent/toxin/zombiepowder name = "Zombie Powder" - id = "zombiepowder" description = "A strong neurotoxin that puts the subject into a death-like state." reagent_state = SOLID color = "#669900" // rgb: 102, 153, 0 @@ -166,10 +157,10 @@ /datum/reagent/toxin/zombiepowder/on_mob_metabolize(mob/living/L) ..() - L.fakedeath(id) + L.fakedeath(type) /datum/reagent/toxin/zombiepowder/on_mob_end_metabolize(mob/living/L) - L.cure_fakedeath(id) + L.cure_fakedeath(type) ..() /datum/reagent/toxin/zombiepowder/on_mob_life(mob/living/carbon/M) @@ -179,7 +170,6 @@ /datum/reagent/toxin/ghoulpowder name = "Ghoul Powder" - id = "ghoulpowder" description = "A strong neurotoxin that slows metabolism to a death-like state, while keeping the patient fully active. Causes toxin buildup if used too long." reagent_state = SOLID color = "#664700" // rgb: 102, 71, 0 @@ -189,10 +179,10 @@ /datum/reagent/toxin/ghoulpowder/on_mob_metabolize(mob/living/L) ..() - ADD_TRAIT(L, TRAIT_FAKEDEATH, id) + ADD_TRAIT(L, TRAIT_FAKEDEATH, type) /datum/reagent/toxin/ghoulpowder/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_FAKEDEATH, id) + REMOVE_TRAIT(L, TRAIT_FAKEDEATH, type) ..() /datum/reagent/toxin/ghoulpowder/on_mob_life(mob/living/carbon/M) @@ -202,7 +192,6 @@ /datum/reagent/toxin/mindbreaker name = "Mindbreaker Toxin" - id = "mindbreaker" description = "A powerful hallucinogen. Not a thing to be messed with. For some mental patients. it counteracts their symptoms and anchors them to reality." color = "#B31008" // rgb: 139, 166, 233 toxpwr = 0 @@ -215,7 +204,6 @@ /datum/reagent/toxin/plantbgone name = "Plant-B-Gone" - id = "plantbgone" description = "A harmful toxic mixture to kill plantlife. Do not ingest!" color = "#49002E" // rgb: 73, 0, 46 toxpwr = 1 @@ -242,14 +230,12 @@ /datum/reagent/toxin/plantbgone/weedkiller name = "Weed Killer" - id = "weedkiller" description = "A harmful toxic mixture to kill weeds. Do not ingest!" color = "#4B004B" // rgb: 75, 0, 75 pH = 3 /datum/reagent/toxin/pestkiller name = "Pest Killer" - id = "pestkiller" description = "A harmful toxic mixture to kill pests. Do not ingest!" color = "#4B004B" // rgb: 75, 0, 75 toxpwr = 1 @@ -263,7 +249,6 @@ /datum/reagent/toxin/spore name = "Spore Toxin" - id = "spore" description = "A natural toxin produced by blob spores that inhibits vision when ingested." color = "#9ACD32" toxpwr = 1 @@ -277,7 +262,6 @@ /datum/reagent/toxin/spore_burning name = "Burning Spore Toxin" - id = "spore_burning" description = "A natural toxin produced by blob spores that induces combustion in its victim." color = "#9ACD32" toxpwr = 0.5 @@ -291,7 +275,6 @@ /datum/reagent/toxin/chloralhydrate name = "Chloral Hydrate" - id = "chloralhydrate" description = "A powerful sedative that induces confusion and drowsiness before putting its target to sleep." reagent_state = SOLID color = "#000067" // rgb: 0, 0, 103 @@ -315,7 +298,6 @@ /datum/reagent/toxin/fakebeer //disguised as normal beer for use by emagged brobots name = "Beer" - id = "fakebeer" description = "A specially-engineered sedative disguised as beer. It induces instant sleep in its target." color = "#664300" // rgb: 102, 67, 0 metabolization_rate = 1.5 * REAGENTS_METABOLISM @@ -336,7 +318,6 @@ /datum/reagent/toxin/coffeepowder name = "Coffee Grounds" - id = "coffeepowder" description = "Finely ground coffee beans, used to make coffee." reagent_state = SOLID color = "#5B2E0D" // rgb: 91, 46, 13 @@ -345,7 +326,6 @@ /datum/reagent/toxin/teapowder name = "Ground Tea Leaves" - id = "teapowder" description = "Finely shredded tea leaves, used for making tea." reagent_state = SOLID color = "#7F8400" // rgb: 127, 132, 0 @@ -354,7 +334,6 @@ /datum/reagent/toxin/mutetoxin //the new zombie powder. name = "Mute Toxin" - id = "mutetoxin" description = "A nonlethal poison that inhibits speech in its victim." color = "#F0F8FF" // rgb: 240, 248, 255 toxpwr = 0 @@ -367,7 +346,6 @@ /datum/reagent/toxin/staminatoxin name = "Tirizene" - id = "tirizene" description = "A nonlethal poison that causes extreme fatigue and weakness in its victim." color = "#6E2828" data = 15 @@ -381,7 +359,6 @@ /datum/reagent/toxin/polonium name = "Polonium" - id = "polonium" description = "An extremely radioactive material in liquid form. Ingestion results in fatal irradiation." reagent_state = LIQUID color = "#787878" @@ -394,7 +371,6 @@ /datum/reagent/toxin/histamine name = "Histamine" - id = "histamine" description = "Histamine's effects become more dangerous depending on the dosage amount. They range from mildly annoying to incredibly lethal." reagent_state = LIQUID color = "#FA6464" @@ -428,7 +404,6 @@ /datum/reagent/toxin/formaldehyde name = "Formaldehyde" - id = "formaldehyde" description = "Formaldehyde, on its own, is a fairly weak toxin. It contains trace amounts of Histamine, very rarely making it decay into Histamine." reagent_state = LIQUID color = "#B4004B" @@ -437,14 +412,13 @@ /datum/reagent/toxin/formaldehyde/on_mob_life(mob/living/carbon/M) if(prob(5)) - holder.add_reagent("histamine", pick(5,15)) - holder.remove_reagent("formaldehyde", 1.2) + holder.add_reagent(/datum/reagent/toxin/histamine, pick(5,15)) + holder.remove_reagent(type, 1.2) else return ..() /datum/reagent/toxin/venom name = "Venom" - id = "venom" description = "An exotic poison extracted from highly toxic fauna. Causes scaling amounts of toxin damage and bruising depending and dosage. Often decays into Histamine." reagent_state = LIQUID color = "#F0FFF0" @@ -456,14 +430,13 @@ M.adjustBruteLoss((0.3*volume)*REM, 0) . = 1 if(prob(15)) - M.reagents.add_reagent("histamine", pick(5,10)) - M.reagents.remove_reagent("venom", 1.1) + M.reagents.add_reagent(/datum/reagent/toxin/histamine, pick(5,10)) + M.reagents.remove_reagent(type, 1.1) else ..() /datum/reagent/toxin/fentanyl name = "Fentanyl" - id = "fentanyl" description = "Fentanyl will inhibit brain function and cause toxin damage before eventually knocking out its victim." reagent_state = LIQUID color = "#64916E" @@ -481,7 +454,6 @@ /datum/reagent/toxin/cyanide name = "Cyanide" - id = "cyanide" description = "An infamous poison known for its use in assassination. Causes small amounts of toxin damage with a small chance of oxygen damage or a stun." reagent_state = LIQUID color = "#00B4FF" @@ -499,7 +471,6 @@ /datum/reagent/toxin/bad_food name = "Bad Food" - id = "bad_food" description = "The result of some abomination of cookery, food so bad it's toxic." reagent_state = LIQUID color = "#d6d6d8" @@ -509,7 +480,6 @@ /datum/reagent/toxin/itching_powder name = "Itching Powder" - id = "itching_powder" description = "A powder that induces itching upon contact with the skin. Causes the victim to scratch at their itches and has a very low chance to decay into Histamine." reagent_state = LIQUID color = "#C8C8C8" @@ -518,7 +488,7 @@ /datum/reagent/toxin/itching_powder/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) - M.reagents.add_reagent("itching_powder", reac_volume) + M.reagents.add_reagent(/datum/reagent/toxin/itching_powder, reac_volume) /datum/reagent/toxin/itching_powder/on_mob_life(mob/living/carbon/M) if(prob(15)) @@ -534,14 +504,13 @@ M.adjustBruteLoss(0.2*REM, 0) . = 1 if(prob(3)) - M.reagents.add_reagent("histamine",rand(1,3)) - M.reagents.remove_reagent("itching_powder",1.2) + M.reagents.add_reagent(/datum/reagent/toxin/histamine,rand(1,3)) + M.reagents.remove_reagent(type,1.2) return ..() /datum/reagent/toxin/initropidril name = "Initropidril" - id = "initropidril" description = "A powerful poison with insidious effects. It can cause stuns, lethal breathing failure, and cardiac arrest." reagent_state = LIQUID color = "#7F10C0" @@ -572,7 +541,6 @@ /datum/reagent/toxin/pancuronium name = "Pancuronium" - id = "pancuronium" description = "An undetectable toxin that swiftly incapacitates its victim. May also cause breathing failure." reagent_state = LIQUID color = "#195096" @@ -590,7 +558,6 @@ /datum/reagent/toxin/sodium_thiopental name = "Sodium Thiopental" - id = "sodium_thiopental" description = "Sodium Thiopental induces heavy weakness in its target as well as unconsciousness." reagent_state = LIQUID color = "#6496FA" @@ -606,7 +573,6 @@ /datum/reagent/toxin/sulfonal name = "Sulfonal" - id = "sulfonal" description = "A stealthy poison that deals minor toxin damage and eventually puts the target to sleep." reagent_state = LIQUID color = "#7DC3A0" @@ -620,7 +586,6 @@ /datum/reagent/toxin/amanitin name = "Amanitin" - id = "amanitin" description = "A very powerful delayed toxin. Upon full metabolization, a massive amount of toxin damage will be dealt depending on how long it has been in the victim's bloodstream." reagent_state = LIQUID color = "#FFFFFF" @@ -635,7 +600,6 @@ /datum/reagent/toxin/lipolicide name = "Lipolicide" - id = "lipolicide" description = "A powerful toxin that will destroy fat cells, massively reducing body weight in a short time. Deadly to those without nutriment in their body." taste_description = "mothballs" reagent_state = LIQUID @@ -652,7 +616,6 @@ /datum/reagent/toxin/coniine name = "Coniine" - id = "coniine" description = "Coniine metabolizes extremely slowly, but deals high amounts of toxin damage and stops breathing." reagent_state = LIQUID color = "#7DC3A0" @@ -665,7 +628,6 @@ /datum/reagent/toxin/spewium name = "Spewium" - id = "spewium" description = "A powerful emetic, causes uncontrollable vomiting. May result in vomiting organs at high doses." reagent_state = LIQUID color = "#2f6617" //A sickly green color @@ -680,7 +642,7 @@ C.vomit(10, prob(10), prob(50), rand(0,4), TRUE, prob(30)) for(var/datum/reagent/toxin/R in C.reagents.reagent_list) if(R != src) - C.reagents.remove_reagent(R.id,1) + C.reagents.remove_reagent(R.type,1) /datum/reagent/toxin/spewium/overdose_process(mob/living/carbon/C) . = ..() @@ -691,7 +653,6 @@ /datum/reagent/toxin/curare name = "Curare" - id = "curare" description = "Causes slight toxin damage followed by chain-stunning and oxygen damage." reagent_state = LIQUID color = "#191919" @@ -707,7 +668,6 @@ /datum/reagent/toxin/heparin //Based on a real-life anticoagulant. I'm not a doctor, so this won't be realistic. name = "Heparin" - id = "heparin" description = "A powerful anticoagulant. Victims will bleed uncontrollably and suffer scaling bruising." reagent_state = LIQUID color = "#C8C8C8" //RGB: 200, 200, 200 @@ -725,7 +685,6 @@ /datum/reagent/toxin/rotatium //Rotatium. Fucks up your rotation and is hilarious name = "Rotatium" - id = "rotatium" description = "A constantly swirling, oddly colourful fluid. Causes the consumer's sense of direction and hand-eye coordination to become wild." reagent_state = LIQUID color = "#AC88CA" //RGB: 172, 136, 202 @@ -752,7 +711,6 @@ /datum/reagent/toxin/skewium name = "Skewium" - id = "skewium" description = "A strange, dull coloured liquid that appears to warp back and forth inside its container. Causes any consumer to experience a visual phenomena similar to said warping." reagent_state = LIQUID color = "#ADBDCD" @@ -790,7 +748,6 @@ /datum/reagent/toxin/anacea name = "Anacea" - id = "anacea" description = "A toxin that quickly purges medicines and metabolizes very slowly." reagent_state = LIQUID color = "#3C5133" @@ -799,10 +756,10 @@ /datum/reagent/toxin/anacea/on_mob_life(mob/living/carbon/M) var/remove_amt = 5 - if(holder.has_reagent("calomel") || holder.has_reagent("pen_acid") || holder.has_reagent("pen_jelly")) + if(holder.has_reagent(/datum/reagent/medicine/calomel) || holder.has_reagent(/datum/reagent/medicine/pen_acid) || holder.has_reagent(/datum/reagent/medicine/pen_acid/pen_jelly)) remove_amt = 0.5 for(var/datum/reagent/medicine/R in M.reagents.reagent_list) - M.reagents.remove_reagent(R.id,remove_amt) + M.reagents.remove_reagent(R.type,remove_amt) return ..() //ACID @@ -810,7 +767,6 @@ /datum/reagent/toxin/acid name = "Sulphuric acid" - id = "sacid" description = "A strong mineral acid with the molecular formula H2SO4." color = "#00FF32" toxpwr = 1 @@ -845,7 +801,6 @@ /datum/reagent/toxin/acid/fluacid name = "Fluorosulfuric acid" - id = "facid" description = "Fluorosulfuric acid is an extremely corrosive chemical substance." color = "#5050FF" toxpwr = 2 @@ -858,7 +813,6 @@ /datum/reagent/toxin/delayed name = "Toxin Microcapsules" - id = "delayed_toxin" description = "Causes heavy toxin damage after a brief time of inactivity." reagent_state = LIQUID metabolization_rate = 0 //stays in the system until active. @@ -869,7 +823,7 @@ /datum/reagent/toxin/delayed/on_mob_life(mob/living/carbon/M) if(current_cycle > delay) - holder.remove_reagent(id, actual_metaboliztion_rate * M.metabolism_efficiency) + holder.remove_reagent(type, actual_metaboliztion_rate * M.metabolism_efficiency) M.adjustToxLoss(actual_toxpwr*REM, 0) if(prob(10)) M.Knockdown(20, 0) @@ -878,21 +832,19 @@ /datum/reagent/toxin/mimesbane name = "Mime's Bane" - id = "mimesbane" description = "A nonlethal neurotoxin that interferes with the victim's ability to gesture." color = "#F0F8FF" // rgb: 240, 248, 255 toxpwr = 0 taste_description = "stillness" /datum/reagent/toxin/mimesbane/on_mob_metabolize(mob/living/L) - ADD_TRAIT(L, TRAIT_EMOTEMUTE, id) + ADD_TRAIT(L, TRAIT_EMOTEMUTE, type) /datum/reagent/toxin/mimesbane/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_EMOTEMUTE, id) + REMOVE_TRAIT(L, TRAIT_EMOTEMUTE, type) /datum/reagent/toxin/bonehurtingjuice //oof ouch name = "Bone Hurting Juice" - id = "bonehurtingjuice" description = "A strange substance that looks a lot like water. Drinking it is oddly tempting. Oof ouch." color = "#AAAAAA77" //RGBA: 170, 170, 170, 77 toxpwr = 0 @@ -953,7 +905,6 @@ /datum/reagent/toxin/brainhurtingjuice //oof ouch name = "Brain Hurting Juice" - id = "brainhurtingjuice" color = "#AAAAAA77" //RGBA: 170, 170, 170, 77 toxpwr = 0 taste_description = "brain hurting" @@ -970,7 +921,6 @@ /datum/reagent/toxin/bungotoxin name = "Bungotoxin" - id = "bungotoxin" description = "A horrible cardiotoxin that protects the humble bungo pit." //silent_toxin = TRUE //I guess we don't really have the entire tox system ported. color = "#EBFF8E" diff --git a/code/modules/reagents/chemistry/recipes/drugs.dm b/code/modules/reagents/chemistry/recipes/drugs.dm index 27b1fe12ee..468d29c052 100644 --- a/code/modules/reagents/chemistry/recipes/drugs.dm +++ b/code/modules/reagents/chemistry/recipes/drugs.dm @@ -1,64 +1,64 @@ /datum/chemical_reaction/space_drugs name = "Space Drugs" - id = "space_drugs" - results = list("space_drugs" = 3) - required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1) + id = /datum/reagent/drug/space_drugs + results = list(/datum/reagent/drug/space_drugs = 3) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/lithium = 1) /datum/chemical_reaction/crank name = "Crank" - id = "crank" - results = list("crank" = 5) - required_reagents = list("diphenhydramine" = 1, "ammonia" = 1, "lithium" = 1, "sacid" = 1, "welding_fuel" = 1) + id = /datum/reagent/drug/crank + results = list(/datum/reagent/drug/crank = 5) + required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/ammonia = 1, /datum/reagent/lithium = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/fuel = 1) mix_message = "The mixture violently reacts, leaving behind a few crystalline shards." required_temp = 390 /datum/chemical_reaction/krokodil name = "Krokodil" - id = "krokodil" - results = list("krokodil" = 6) - required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1, "potassium" = 1, "phosphorus" = 1, "welding_fuel" = 1) + id = /datum/reagent/drug/krokodil + results = list(/datum/reagent/drug/krokodil = 6) + required_reagents = list(/datum/reagent/medicine/diphenhydramine = 1, /datum/reagent/medicine/morphine = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/potassium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/fuel = 1) mix_message = "The mixture dries into a pale blue powder." required_temp = 380 /datum/chemical_reaction/methamphetamine name = "methamphetamine" - id = "methamphetamine" - results = list("methamphetamine" = 4) - required_reagents = list("ephedrine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) + id = /datum/reagent/drug/methamphetamine + results = list(/datum/reagent/drug/methamphetamine = 4) + required_reagents = list(/datum/reagent/medicine/ephedrine = 1, /datum/reagent/iodine = 1, /datum/reagent/phosphorus = 1, /datum/reagent/hydrogen = 1) required_temp = 374 /datum/chemical_reaction/bath_salts name = "bath_salts" - id = "bath_salts" - results = list("bath_salts" = 7) - required_reagents = list("bad_food" = 1, "saltpetre" = 1, "nutriment" = 1, "cleaner" = 1, "enzyme" = 1, "tea" = 1, "mercury" = 1) + id = /datum/reagent/drug/bath_salts + results = list(/datum/reagent/drug/bath_salts = 7) + required_reagents = list(/datum/reagent/toxin/bad_food = 1, /datum/reagent/saltpetre = 1, /datum/reagent/consumable/nutriment = 1, /datum/reagent/space_cleaner = 1, /datum/reagent/consumable/enzyme = 1, /datum/reagent/consumable/tea = 1, /datum/reagent/mercury = 1) required_temp = 374 /datum/chemical_reaction/aranesp name = "aranesp" - id = "aranesp" - results = list("aranesp" = 3) - required_reagents = list("epinephrine" = 1, "atropine" = 1, "morphine" = 1) + id = /datum/reagent/drug/aranesp + results = list(/datum/reagent/drug/aranesp = 3) + required_reagents = list(/datum/reagent/medicine/epinephrine = 1, /datum/reagent/medicine/atropine = 1, /datum/reagent/medicine/morphine = 1) /datum/chemical_reaction/happiness name = "Happiness" - id = "happiness" - results = list("happiness" = 4) - required_reagents = list("nitrous_oxide" = 2, "epinephrine" = 1, "ethanol" = 1) - required_catalysts = list("plasma" = 5) + id = /datum/reagent/drug/happiness + results = list(/datum/reagent/drug/happiness = 4) + required_reagents = list(/datum/reagent/nitrous_oxide = 2, /datum/reagent/medicine/epinephrine = 1, /datum/reagent/consumable/ethanol = 1) + required_catalysts = list(/datum/reagent/toxin/plasma = 5) /datum/chemical_reaction/skooma name = "skooma" - id = "skooma" - results = list("skooma" = 2, "moonshine" = 4, "sugar" = 4) + id = /datum/reagent/drug/skooma + results = list(/datum/reagent/drug/skooma = 2, /datum/reagent/consumable/ethanol/moonshine = 4, /datum/reagent/consumable/sugar = 4) required_temp = 280 is_cold_recipe = TRUE - required_reagents = list("moonsugar" = 10, "morphine" = 5) + required_reagents = list(/datum/reagent/moonsugar = 10, /datum/reagent/medicine/morphine = 5) /datum/chemical_reaction/skoomarevert name = "skoomarevert" id = "skoomarevert" - results = list("moonsugar" = 1, "morphine" = 2.5) + results = list(/datum/reagent/moonsugar = 1, /datum/reagent/medicine/morphine = 2.5) required_temp = 315 //a little above normal body temperature - required_reagents = list("skooma" = 1) + required_reagents = list(/datum/reagent/drug/skooma = 1) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 607e0b5a4e..a07e7697bc 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -1,79 +1,79 @@ /datum/chemical_reaction/leporazine name = "Leporazine" - id = "leporazine" - results = list("leporazine" = 2) - required_reagents = list("silicon" = 1, "copper" = 1) - required_catalysts = list("plasma" = 5) + id = /datum/reagent/medicine/leporazine + results = list(/datum/reagent/medicine/leporazine = 2) + required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/copper = 1) + required_catalysts = list(/datum/reagent/toxin/plasma = 5) /datum/chemical_reaction/rezadone name = "Rezadone" - id = "rezadone" - results = list("rezadone" = 3) - required_reagents = list("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1) + id = /datum/reagent/medicine/rezadone + results = list(/datum/reagent/medicine/rezadone = 3) + required_reagents = list(/datum/reagent/toxin/carpotoxin = 1, /datum/reagent/cryptobiolin = 1, /datum/reagent/copper = 1) /datum/chemical_reaction/spaceacillin name = "Spaceacillin" - id = "spaceacillin" - results = list("spaceacillin" = 2) - required_reagents = list("cryptobiolin" = 1, "epinephrine" = 1) + id = /datum/reagent/medicine/spaceacillin + results = list(/datum/reagent/medicine/spaceacillin = 2) + required_reagents = list(/datum/reagent/cryptobiolin = 1, /datum/reagent/medicine/epinephrine = 1) /datum/chemical_reaction/inacusiate name = "inacusiate" - id = "inacusiate" - results = list("inacusiate" = 2) - required_reagents = list("water" = 1, "carbon" = 1, "charcoal" = 1) + id = /datum/reagent/medicine/inacusiate + results = list(/datum/reagent/medicine/inacusiate = 2) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/charcoal = 1) /datum/chemical_reaction/synaptizine name = "Synaptizine" - id = "synaptizine" - results = list("synaptizine" = 3) - required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1) + id = /datum/reagent/medicine/synaptizine + results = list(/datum/reagent/medicine/synaptizine = 3) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/lithium = 1, /datum/reagent/water = 1) /datum/chemical_reaction/charcoal name = "Charcoal" - id = "charcoal" - results = list("charcoal" = 2) - required_reagents = list("ash" = 1, "sodiumchloride" = 1) + id = /datum/reagent/medicine/charcoal + results = list(/datum/reagent/medicine/charcoal = 2) + required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/sodiumchloride = 1) mix_message = "The mixture yields a fine black powder." required_temp = 380 /datum/chemical_reaction/silver_sulfadiazine name = "Silver Sulfadiazine" - id = "silver_sulfadiazine" - results = list("silver_sulfadiazine" = 5) - required_reagents = list("ammonia" = 1, "silver" = 1, "sulfur" = 1, "oxygen" = 1, "chlorine" = 1) + id = /datum/reagent/medicine/silver_sulfadiazine + results = list(/datum/reagent/medicine/silver_sulfadiazine = 5) + required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/silver = 1, /datum/reagent/sulfur = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/salglu_solution name = "Saline-Glucose Solution" - id = "salglu_solution" - results = list("salglu_solution" = 3) - required_reagents = list("sodiumchloride" = 1, "water" = 1, "sugar" = 1) + id = /datum/reagent/medicine/salglu_solution + results = list(/datum/reagent/medicine/salglu_solution = 3) + required_reagents = list(/datum/reagent/consumable/sodiumchloride = 1, /datum/reagent/water = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/mine_salve name = "Miner's Salve" - id = "mine_salve" - results = list("mine_salve" = 3) - required_reagents = list("oil" = 1, "water" = 1, "iron" = 1) + id = /datum/reagent/medicine/mine_salve + results = list(/datum/reagent/medicine/mine_salve = 3) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/water = 1, /datum/reagent/iron = 1) /datum/chemical_reaction/mine_salve2 name = "Miner's Salve" - id = "mine_salve" - results = list("mine_salve" = 15) - required_reagents = list("plasma" = 5, "iron" = 5, "sugar" = 1) // A sheet of plasma, a twinkie and a sheet of metal makes four of these + id = "mine_salve_2" + results = list(/datum/reagent/medicine/mine_salve = 15) + required_reagents = list(/datum/reagent/toxin/plasma = 5, /datum/reagent/iron = 5, /datum/reagent/consumable/sugar = 1) // A sheet of plasma, a twinkie and a sheet of metal makes four of these /datum/chemical_reaction/synthflesh name = "Synthflesh" - id = "synthflesh" - results = list("synthflesh" = 3) - required_reagents = list("blood" = 1, "carbon" = 1, "styptic_powder" = 1) + id = /datum/reagent/medicine/synthflesh + results = list(/datum/reagent/medicine/synthflesh = 3) + required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/styptic_powder = 1) /datum/chemical_reaction/synthtissue name = "Synthtissue" - id = "synthtissue" - results = list("synthtissue" = 5) - required_reagents = list("synthflesh" = 1) - required_catalysts = list("sugar" = 0.1) + id = /datum/reagent/synthtissue + results = list(/datum/reagent/synthtissue = 5) + required_reagents = list(/datum/reagent/medicine/synthflesh = 1) + required_catalysts = list(/datum/reagent/consumable/sugar = 0.1) //FermiChem vars: OptimalTempMin = 305 // Lower area of bell curve for determining heat based rate reactions OptimalTempMax = 315 // Upper end for above @@ -91,13 +91,13 @@ PurityMin = 0 /datum/chemical_reaction/synthtissue/FermiCreate(datum/reagents/holder, added_volume, added_purity) - var/datum/reagent/synthtissue/St = holder.has_reagent("synthtissue") - var/datum/reagent/N = holder.has_reagent("sugar") + var/datum/reagent/synthtissue/St = holder.has_reagent(/datum/reagent/synthtissue) + var/datum/reagent/N = holder.has_reagent(/datum/reagent/consumable/sugar) if(!St) return if(holder.chem_temp > 320) var/temp_ratio = 1-(330 - holder.chem_temp)/10 - holder.remove_reagent(src.id, added_volume*temp_ratio) + holder.remove_reagent(id, added_volume*temp_ratio) if(St.purity < 1) St.volume *= St.purity St.purity = 1 @@ -108,209 +108,209 @@ /datum/chemical_reaction/styptic_powder name = "Styptic Powder" - id = "styptic_powder" - results = list("styptic_powder" = 4) - required_reagents = list("aluminium" = 1, "hydrogen" = 1, "oxygen" = 1, "sacid" = 1) + id = /datum/reagent/medicine/styptic_powder + results = list(/datum/reagent/medicine/styptic_powder = 4) + required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid = 1) mix_message = "The solution yields an astringent powder." /datum/chemical_reaction/calomel name = "Calomel" - id = "calomel" - results = list("calomel" = 2) - required_reagents = list("mercury" = 1, "chlorine" = 1) + id = /datum/reagent/medicine/calomel + results = list(/datum/reagent/medicine/calomel = 2) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/chlorine = 1) required_temp = 374 /datum/chemical_reaction/potass_iodide name = "Potassium Iodide" - id = "potass_iodide" - results = list("potass_iodide" = 2) - required_reagents = list("potassium" = 1, "iodine" = 1) + id = /datum/reagent/medicine/potass_iodide + results = list(/datum/reagent/medicine/potass_iodide = 2) + required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/iodine = 1) /datum/chemical_reaction/pen_acid name = "Pentetic Acid" - id = "pen_acid" - results = list("pen_acid" = 6) - required_reagents = list("welding_fuel" = 1, "chlorine" = 1, "ammonia" = 1, "formaldehyde" = 1, "sodium" = 1, "cyanide" = 1) + id = /datum/reagent/medicine/pen_acid + results = list(/datum/reagent/medicine/pen_acid = 6) + required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/chlorine = 1, /datum/reagent/ammonia = 1, /datum/reagent/toxin/formaldehyde = 1, /datum/reagent/sodium = 1, /datum/reagent/toxin/cyanide = 1) /datum/chemical_reaction/pen_jelly name = "Pentetic Jelly" - id = "pen_jelly" - results = list("pen_jelly" = 2) - required_reagents = list("pen_acid" = 1, "slimejelly" = 1) + id = /datum/reagent/medicine/pen_acid/pen_jelly + results = list(/datum/reagent/medicine/pen_acid/pen_jelly = 2) + required_reagents = list(/datum/reagent/medicine/pen_acid = 1, /datum/reagent/toxin/slimejelly = 1) /datum/chemical_reaction/sal_acid name = "Salicyclic Acid" - id = "sal_acid" - results = list("sal_acid" = 5) - required_reagents = list("sodium" = 1, "phenol" = 1, "carbon" = 1, "oxygen" = 1, "sacid" = 1) + id = /datum/reagent/medicine/sal_acid + results = list(/datum/reagent/medicine/sal_acid = 5) + required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/phenol = 1, /datum/reagent/carbon = 1, /datum/reagent/oxygen = 1, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/oxandrolone name = "Oxandrolone" - id = "oxandrolone" - results = list("oxandrolone" = 6) - required_reagents = list("carbon" = 3, "phenol" = 1, "hydrogen" = 1, "oxygen" = 1) + id = /datum/reagent/medicine/oxandrolone + results = list(/datum/reagent/medicine/oxandrolone = 6) + required_reagents = list(/datum/reagent/carbon = 3, /datum/reagent/phenol = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/salbutamol name = "Salbutamol" - id = "salbutamol" - results = list("salbutamol" = 5) - required_reagents = list("sal_acid" = 1, "lithium" = 1, "aluminium" = 1, "bromine" = 1, "ammonia" = 1) + id = /datum/reagent/medicine/salbutamol + results = list(/datum/reagent/medicine/salbutamol = 5) + required_reagents = list(/datum/reagent/medicine/sal_acid = 1, /datum/reagent/lithium = 1, /datum/reagent/aluminium = 1, /datum/reagent/bromine = 1, /datum/reagent/ammonia = 1) /datum/chemical_reaction/perfluorodecalin name = "Perfluorodecalin" - id = "perfluorodecalin" - results = list("perfluorodecalin" = 3) - required_reagents = list("hydrogen" = 1, "fluorine" = 1, "oil" = 1) + id = /datum/reagent/medicine/perfluorodecalin + results = list(/datum/reagent/medicine/perfluorodecalin = 3) + required_reagents = list(/datum/reagent/hydrogen = 1, /datum/reagent/fluorine = 1, /datum/reagent/oil = 1) required_temp = 370 mix_message = "The mixture rapidly turns into a dense pink liquid." /datum/chemical_reaction/ephedrine name = "Ephedrine" - id = "ephedrine" - results = list("ephedrine" = 4) - required_reagents = list("sugar" = 1, "oil" = 1, "hydrogen" = 1, "diethylamine" = 1) + id = /datum/reagent/medicine/ephedrine + results = list(/datum/reagent/medicine/ephedrine = 4) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/oil = 1, /datum/reagent/hydrogen = 1, /datum/reagent/diethylamine = 1) mix_message = "The solution fizzes and gives off toxic fumes." /datum/chemical_reaction/diphenhydramine name = "Diphenhydramine" - id = "diphenhydramine" - results = list("diphenhydramine" = 4) - required_reagents = list("oil" = 1, "carbon" = 1, "bromine" = 1, "diethylamine" = 1, "ethanol" = 1) + id = /datum/reagent/medicine/diphenhydramine + results = list(/datum/reagent/medicine/diphenhydramine = 4) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/carbon = 1, /datum/reagent/bromine = 1, /datum/reagent/diethylamine = 1, /datum/reagent/consumable/ethanol = 1) mix_message = "The mixture dries into a pale blue powder." /datum/chemical_reaction/oculine name = "Oculine" - id = "oculine" - results = list("oculine" = 3) - required_reagents = list("charcoal" = 1, "carbon" = 1, "hydrogen" = 1) + id = /datum/reagent/medicine/oculine + results = list(/datum/reagent/medicine/oculine = 3) + required_reagents = list(/datum/reagent/medicine/charcoal = 1, /datum/reagent/carbon = 1, /datum/reagent/hydrogen = 1) mix_message = "The mixture sputters loudly and becomes a pale pink color." /datum/chemical_reaction/atropine name = "Atropine" - id = "atropine" - results = list("atropine" = 5) - required_reagents = list("ethanol" = 1, "acetone" = 1, "diethylamine" = 1, "phenol" = 1, "sacid" = 1) + id = /datum/reagent/medicine/atropine + results = list(/datum/reagent/medicine/atropine = 5) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/phenol = 1, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/epinephrine name = "Epinephrine" - id = "epinephrine" - results = list("epinephrine" = 6) - required_reagents = list("phenol" = 1, "acetone" = 1, "diethylamine" = 1, "oxygen" = 1, "chlorine" = 1, "hydrogen" = 1) + id = /datum/reagent/medicine/epinephrine + results = list(/datum/reagent/medicine/epinephrine = 6) + required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1, /datum/reagent/hydrogen = 1) /datum/chemical_reaction/strange_reagent name = "Strange Reagent" - id = "strange_reagent" - results = list("strange_reagent" = 3) - required_reagents = list("omnizine" = 1, "holywater" = 1, "mutagen" = 1) + id = /datum/reagent/medicine/strange_reagent + results = list(/datum/reagent/medicine/strange_reagent = 3) + required_reagents = list(/datum/reagent/medicine/omnizine = 1, /datum/reagent/water/holywater = 1, /datum/reagent/toxin/mutagen = 1) /datum/chemical_reaction/mannitol name = "Mannitol" - id = "mannitol" - results = list("mannitol" = 3) - required_reagents = list("sugar" = 1, "hydrogen" = 1, "water" = 1) + id = /datum/reagent/medicine/mannitol + results = list(/datum/reagent/medicine/mannitol = 3) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/hydrogen = 1, /datum/reagent/water = 1) mix_message = "The solution slightly bubbles, becoming thicker." /datum/chemical_reaction/mutadone name = "Mutadone" - id = "mutadone" - results = list("mutadone" = 3) - required_reagents = list("mutagen" = 1, "acetone" = 1, "bromine" = 1) + id = /datum/reagent/medicine/mutadone + results = list(/datum/reagent/medicine/mutadone = 3) + required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/acetone = 1, /datum/reagent/bromine = 1) /datum/chemical_reaction/neurine name = "Neurine" - id = "neurine" - results = list("neurine" = 3) - required_reagents = list("mannitol" = 1, "acetone" = 1, "oxygen" = 1) + id = /datum/reagent/medicine/neurine + results = list(/datum/reagent/medicine/neurine = 3) + required_reagents = list(/datum/reagent/medicine/mannitol = 1, /datum/reagent/acetone = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/antihol name = "antihol" - id = "antihol" - results = list("antihol" = 3) - required_reagents = list("ethanol" = 1, "charcoal" = 1, "copper" = 1) + id = /datum/reagent/medicine/antihol + results = list(/datum/reagent/medicine/antihol = 3) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/copper = 1) /datum/chemical_reaction/cryoxadone name = "Cryoxadone" - id = "cryoxadone" - results = list("cryoxadone" = 3) - required_reagents = list("stable_plasma" = 1, "acetone" = 1, "mutagen" = 1) + id = /datum/reagent/medicine/cryoxadone + results = list(/datum/reagent/medicine/cryoxadone = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/mutagen = 1) /datum/chemical_reaction/pyroxadone name = "Pyroxadone" - id = "pyroxadone" - results = list("pyroxadone" = 2) - required_reagents = list("cryoxadone" = 1, "slimejelly" = 1) + id = /datum/reagent/medicine/pyroxadone + results = list(/datum/reagent/medicine/pyroxadone = 2) + required_reagents = list(/datum/reagent/medicine/cryoxadone = 1, /datum/reagent/toxin/slimejelly = 1) /datum/chemical_reaction/clonexadone name = "Clonexadone" - id = "clonexadone" - results = list("clonexadone" = 2) - required_reagents = list("cryoxadone" = 1, "sodium" = 1) - required_catalysts = list("plasma" = 5) + id = /datum/reagent/medicine/clonexadone + results = list(/datum/reagent/medicine/clonexadone = 2) + required_reagents = list(/datum/reagent/medicine/cryoxadone = 1, /datum/reagent/sodium = 1) + required_catalysts = list(/datum/reagent/toxin/plasma = 5) /datum/chemical_reaction/haloperidol name = "Haloperidol" - id = "haloperidol" - results = list("haloperidol" = 5) - required_reagents = list("chlorine" = 1, "fluorine" = 1, "aluminium" = 1, "potass_iodide" = 1, "oil" = 1) + id = /datum/reagent/medicine/haloperidol + results = list(/datum/reagent/medicine/haloperidol = 5) + required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 1, /datum/reagent/aluminium = 1, /datum/reagent/medicine/potass_iodide = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/bicaridine name = "Bicaridine" - id = "bicaridine" - results = list("bicaridine" = 3) - required_reagents = list("carbon" = 1, "oxygen" = 1, "sugar" = 1) + id = /datum/reagent/medicine/bicaridine + results = list(/datum/reagent/medicine/bicaridine = 3) + required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/kelotane name = "Kelotane" - id = "kelotane" - results = list("kelotane" = 2) - required_reagents = list("carbon" = 1, "silicon" = 1) + id = /datum/reagent/medicine/kelotane + results = list(/datum/reagent/medicine/kelotane = 2) + required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/silicon = 1) /datum/chemical_reaction/antitoxin name = "Antitoxin" - id = "antitoxin" - results = list("antitoxin" = 3) - required_reagents = list("nitrogen" = 1, "silicon" = 1, "potassium" = 1) + id = /datum/reagent/medicine/antitoxin + results = list(/datum/reagent/medicine/antitoxin = 3) + required_reagents = list(/datum/reagent/nitrogen = 1, /datum/reagent/silicon = 1, /datum/reagent/potassium = 1) /datum/chemical_reaction/tricordrazine name = "Tricordrazine" - id = "tricordrazine" - results = list("tricordrazine" = 3) - required_reagents = list("bicaridine" = 1, "kelotane" = 1, "antitoxin" = 1) + id = /datum/reagent/medicine/tricordrazine + results = list(/datum/reagent/medicine/tricordrazine = 3) + required_reagents = list(/datum/reagent/medicine/bicaridine = 1, /datum/reagent/medicine/kelotane = 1, /datum/reagent/medicine/antitoxin = 1) /datum/chemical_reaction/regen_jelly name = "Regenerative Jelly" - id = "regen_jelly" - results = list("regen_jelly" = 2) - required_reagents = list("tricordrazine" = 1, "slimejelly" = 1) + id = /datum/reagent/medicine/regen_jelly + results = list(/datum/reagent/medicine/regen_jelly = 2) + required_reagents = list(/datum/reagent/medicine/tricordrazine = 1, /datum/reagent/toxin/slimejelly = 1) /datum/chemical_reaction/jelly_convert name = "Blood Jelly Conversion" - id = "blood_jelly" - results = list("slimejelly" = 1) - required_reagents = list("toxin" = 1, "jellyblood" = 1) + id = /datum/reagent/toxin/slimejelly + results = list(/datum/reagent/toxin/slimejelly = 1) + required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/blood/jellyblood = 1) /datum/chemical_reaction/corazone name = "Corazone" - id = "corazone" - results = list("corazone" = 3) - required_reagents = list("phenol" = 2, "lithium" = 1) + id = /datum/reagent/medicine/corazone + results = list(/datum/reagent/medicine/corazone = 3) + required_reagents = list(/datum/reagent/phenol = 2, /datum/reagent/lithium = 1) /datum/chemical_reaction/morphine name = "Morphine" - id = "morphine" - results = list("morphine" = 2) - required_reagents = list("carbon" = 2, "hydrogen" = 2, "ethanol" = 1, "oxygen" = 1) + id = /datum/reagent/medicine/morphine + results = list(/datum/reagent/medicine/morphine = 2) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1) required_temp = 480 /datum/chemical_reaction/modafinil name = "Modafinil" - id = "modafinil" - results = list("modafinil" = 5) - required_reagents = list("diethylamine" = 1, "ammonia" = 1, "phenol" = 1, "acetone" = 1, "sacid" = 1) - required_catalysts = list("bromine" = 1) // as close to the real world synthesis as possible + id = /datum/reagent/medicine/modafinil + results = list(/datum/reagent/medicine/modafinil = 5) + required_reagents = list(/datum/reagent/diethylamine = 1, /datum/reagent/ammonia = 1, /datum/reagent/phenol = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/acid = 1) + required_catalysts = list(/datum/reagent/bromine = 1) // as close to the real world synthesis as possible /datum/chemical_reaction/psicodine name = "Psicodine" - id = "psicodine" - results = list("psicodine" = 5) - required_reagents = list( "mannitol" = 2, "water" = 2, "impedrezene" = 1) + id = /datum/reagent/medicine/psicodine + results = list(/datum/reagent/medicine/psicodine = 5) + required_reagents = list( /datum/reagent/medicine/mannitol = 2, /datum/reagent/water = 2, /datum/reagent/impedrezene = 1) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index ad349ea926..f4c378e8fe 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -2,55 +2,55 @@ /datum/chemical_reaction/sterilizine name = "Sterilizine" id = "sterilizine" - results = list("sterilizine" = 3) - required_reagents = list("ethanol" = 1, "charcoal" = 1, "chlorine" = 1) + results = list(/datum/reagent/space_cleaner/sterilizine = 3) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/lube name = "Space Lube" - id = "lube" - results = list("lube" = 4) - required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1) + id = /datum/reagent/lube + results = list(/datum/reagent/lube = 4) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/silicon = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/spraytan name = "Spray Tan" - id = "spraytan" - results = list("spraytan" = 2) - required_reagents = list("orangejuice" = 1, "oil" = 1) + id = /datum/reagent/spraytan + results = list(/datum/reagent/spraytan = 2) + required_reagents = list(/datum/reagent/consumable/orangejuice = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/spraytan2 name = "Spray Tan" - id = "spraytan" - results = list("spraytan" = 2) - required_reagents = list("orangejuice" = 1, "cornoil" = 1) + id = "spraytan2" + results = list(/datum/reagent/spraytan = 2) + required_reagents = list(/datum/reagent/consumable/orangejuice = 1, /datum/reagent/consumable/cornoil = 1) /datum/chemical_reaction/impedrezene name = "Impedrezene" - id = "impedrezene" - results = list("impedrezene" = 2) - required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1) + id = /datum/reagent/impedrezene + results = list(/datum/reagent/impedrezene = 2) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/cryptobiolin name = "Cryptobiolin" - id = "cryptobiolin" - results = list("cryptobiolin" = 3) - required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1) + id = /datum/reagent/cryptobiolin + results = list(/datum/reagent/cryptobiolin = 3) + required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/oxygen = 1, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/glycerol name = "Glycerol" - id = "glycerol" - results = list("glycerol" = 1) - required_reagents = list("cornoil" = 3, "sacid" = 1) + id = /datum/reagent/glycerol + results = list(/datum/reagent/glycerol = 1) + required_reagents = list(/datum/reagent/consumable/cornoil = 3, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/sodiumchloride name = "Sodium Chloride" id = "sodiumchloride" - results = list("sodiumchloride" = 3) - required_reagents = list("water" = 1, "sodium" = 1, "chlorine" = 1) + results = list(/datum/reagent/consumable/sodiumchloride = 3) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/plasmasolidification name = "Solid Plasma" id = "solidplasma" - required_reagents = list("iron" = 5, "frostoil" = 5, "plasma" = 20) + required_reagents = list(/datum/reagent/iron = 5, /datum/reagent/consumable/frostoil = 5, /datum/reagent/toxin/plasma = 20) mob_react = FALSE /datum/chemical_reaction/plasmasolidification/on_reaction(datum/reagents/holder, created_volume) @@ -61,7 +61,7 @@ /datum/chemical_reaction/goldsolidification name = "Solid Gold" id = "solidgold" - required_reagents = list("frostoil" = 5, "gold" = 20, "iron" = 1) + required_reagents = list(/datum/reagent/consumable/frostoil = 5, /datum/reagent/gold = 20, /datum/reagent/iron = 1) mob_react = FALSE /datum/chemical_reaction/goldsolidification/on_reaction(datum/reagents/holder, created_volume) @@ -71,22 +71,22 @@ /datum/chemical_reaction/capsaicincondensation name = "Capsaicincondensation" - id = "capsaicincondensation" - results = list("condensedcapsaicin" = 5) - required_reagents = list("capsaicin" = 1, "ethanol" = 5) + id = /datum/reagent/consumable/condensedcapsaicin + results = list(/datum/reagent/consumable/condensedcapsaicin = 5) + required_reagents = list(/datum/reagent/consumable/capsaicin = 1, /datum/reagent/consumable/ethanol = 5) /datum/chemical_reaction/soapification name = "Soapification" id = "soapification" - required_reagents = list("liquidgibs" = 10, "lye" = 10) // requires two scooped gib tiles + required_reagents = list(/datum/reagent/liquidgibs = 10, /datum/reagent/lye = 10) // requires two scooped gib tiles required_temp = 374 mob_react = FALSE /datum/chemical_reaction/mustard name = "Mustard" - id = "mustard" - results = list("mustard" = 5) - required_reagents = list("mustardgrind" = 1, "water" = 10, "enzyme"= 1) + id = /datum/reagent/consumable/mustard + results = list(/datum/reagent/consumable/mustard = 5) + required_reagents = list(/datum/reagent/mustardgrind = 1, /datum/reagent/water = 10, /datum/reagent/consumable/enzyme= 1) /datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -96,7 +96,7 @@ /datum/chemical_reaction/candlefication name = "Candlefication" id = "candlefication" - required_reagents = list("liquidgibs" = 5, "oxygen" = 5) // + required_reagents = list(/datum/reagent/liquidgibs = 5, /datum/reagent/oxygen = 5) required_temp = 374 mob_react = FALSE @@ -108,7 +108,7 @@ /datum/chemical_reaction/meatification name = "Meatification" id = "meatification" - required_reagents = list("liquidgibs" = 10, "nutriment" = 10, "carbon" = 10) + required_reagents = list(/datum/reagent/liquidgibs = 10, /datum/reagent/consumable/nutriment = 10, /datum/reagent/carbon = 10) mob_react = FALSE /datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, created_volume) @@ -119,30 +119,30 @@ /datum/chemical_reaction/carbondioxide name = "Direct Carbon Oxidation" - id = "burningcarbon" - results = list("co2" = 3) - required_reagents = list("carbon" = 1, "oxygen" = 2) + id = /datum/reagent/carbondioxide + results = list(/datum/reagent/carbondioxide = 3) + required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/oxygen = 2) required_temp = 777 // pure carbon isn't especially reactive. /datum/chemical_reaction/nitrous_oxide name = "Nitrous Oxide" - id = "nitrous_oxide" - results = list("nitrous_oxide" = 5) - required_reagents = list("ammonia" = 2, "nitrogen" = 1, "oxygen" = 2) + id = /datum/reagent/nitrous_oxide + results = list(/datum/reagent/nitrous_oxide = 5) + required_reagents = list(/datum/reagent/ammonia = 2, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 2) required_temp = 525 //Technically a mutation toxin /datum/chemical_reaction/mulligan name = "Mulligan" id = "mulligan" - results = list("mulligan" = 1) - required_reagents = list("slime_toxin" = 1, "mutagen" = 1) + results = list(/datum/reagent/mulligan = 1) + required_reagents = list(/datum/reagent/slime_toxin = 1, /datum/reagent/toxin/mutagen = 1) /datum/chemical_reaction/fermis_plush name = "Fermis plush" id = "fermis_plush" - required_reagents = list("caramel" = 10, "blood" = 10, "stable_plasma" = 10) + required_reagents = list(/datum/reagent/consumable/caramel = 10, /datum/reagent/blood = 10, /datum/reagent/stable_plasma = 10) mob_react = FALSE required_temp = 300 @@ -156,75 +156,75 @@ /datum/chemical_reaction/virus_food name = "Virus Food" id = "virusfood" - results = list("virusfood" = 15) - required_reagents = list("water" = 5, "milk" = 5) + results = list(/datum/reagent/consumable/virus_food = 15) + required_reagents = list(/datum/reagent/water = 5, /datum/reagent/consumable/milk = 5) /datum/chemical_reaction/virus_food_mutagen name = "mutagenic agar" id = "mutagenvirusfood" - results = list("mutagenvirusfood" = 1) - required_reagents = list("mutagen" = 1, "virusfood" = 1) + results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood = 1) + required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/consumable/virus_food = 1) /datum/chemical_reaction/virus_food_synaptizine name = "virus rations" id = "synaptizinevirusfood" - results = list("synaptizinevirusfood" = 1) - required_reagents = list("synaptizine" = 1, "virusfood" = 1) + results = list(/datum/reagent/medicine/synaptizine/synaptizinevirusfood = 1) + required_reagents = list(/datum/reagent/medicine/synaptizine = 1, /datum/reagent/consumable/virus_food = 1) /datum/chemical_reaction/virus_food_plasma name = "virus plasma" - id = "plasmavirusfood" - results = list("plasmavirusfood" = 1) - required_reagents = list("plasma" = 1, "virusfood" = 1) + id = /datum/reagent/toxin/plasma/plasmavirusfood + results = list(/datum/reagent/toxin/plasma/plasmavirusfood = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1, /datum/reagent/consumable/virus_food = 1) /datum/chemical_reaction/virus_food_plasma_synaptizine name = "weakened virus plasma" - id = "weakplasmavirusfood" - results = list("weakplasmavirusfood" = 2) - required_reagents = list("synaptizine" = 1, "plasmavirusfood" = 1) + id = /datum/reagent/toxin/plasma/plasmavirusfood/weak + results = list(/datum/reagent/toxin/plasma/plasmavirusfood/weak = 2) + required_reagents = list(/datum/reagent/medicine/synaptizine = 1, /datum/reagent/toxin/plasma/plasmavirusfood = 1) /datum/chemical_reaction/virus_food_mutagen_sugar name = "sucrose agar" - id = "sugarvirusfood" - results = list("sugarvirusfood" = 2) - required_reagents = list("sugar" = 1, "mutagenvirusfood" = 1) + id = /datum/reagent/toxin/mutagen/mutagenvirusfood/sugar + results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 2) + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/toxin/mutagen/mutagenvirusfood = 1) /datum/chemical_reaction/virus_food_mutagen_salineglucose name = "sucrose agar" id = "salineglucosevirusfood" - results = list("sugarvirusfood" = 2) - required_reagents = list("salglu_solution" = 1, "mutagenvirusfood" = 1) + results = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 2) + required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/toxin/mutagen/mutagenvirusfood = 1) /datum/chemical_reaction/virus_food_uranium name = "Decaying uranium gel" - id = "uraniumvirusfood" - results = list("uraniumvirusfood" = 1) - required_reagents = list("uranium" = 1, "virusfood" = 1) + id = /datum/reagent/uranium/uraniumvirusfood + results = list(/datum/reagent/uranium/uraniumvirusfood = 1) + required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/consumable/virus_food = 1) /datum/chemical_reaction/virus_food_uranium_plasma name = "Unstable uranium gel" - id = "uraniumvirusfood_plasma" - results = list("uraniumplasmavirusfood_unstable" = 1) - required_reagents = list("uranium" = 5, "plasmavirusfood" = 1) + id = /datum/reagent/uranium/uraniumvirusfood/unstable + results = list(/datum/reagent/uranium/uraniumvirusfood/unstable = 1) + required_reagents = list(/datum/reagent/uranium = 5, /datum/reagent/toxin/plasma/plasmavirusfood = 1) /datum/chemical_reaction/virus_food_uranium_plasma_gold name = "Stable uranium gel" id = "uraniumvirusfood_gold" - results = list("uraniumplasmavirusfood_stable" = 1) - required_reagents = list("uranium" = 10, "gold" = 10, "plasma" = 1) + results = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1) + required_reagents = list(/datum/reagent/uranium = 10, /datum/reagent/gold = 10, /datum/reagent/toxin/plasma = 1) /datum/chemical_reaction/virus_food_uranium_plasma_silver name = "Stable uranium gel" id = "uraniumvirusfood_silver" - results = list("uraniumplasmavirusfood_stable" = 1) - required_reagents = list("uranium" = 10, "silver" = 10, "plasma" = 1) + results = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1) + required_reagents = list(/datum/reagent/uranium = 10, /datum/reagent/silver = 10, /datum/reagent/toxin/plasma = 1) /datum/chemical_reaction/mix_virus name = "Mix Virus" id = "mixvirus" - results = list("blood" = 1) - required_reagents = list("virusfood" = 1) - required_catalysts = list("blood" = 1) + results = list(/datum/reagent/blood = 1) + required_reagents = list(/datum/reagent/consumable/virus_food = 1) + required_catalysts = list(/datum/reagent/blood = 1) var/level_min = 1 var/level_max = 2 @@ -241,7 +241,7 @@ name = "Mix Virus 2" id = "mixvirus2" - required_reagents = list("mutagen" = 1) + required_reagents = list(/datum/reagent/toxin/mutagen = 1) level_min = 2 level_max = 4 @@ -249,7 +249,7 @@ name = "Mix Virus 3" id = "mixvirus3" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) level_min = 4 level_max = 6 @@ -257,7 +257,7 @@ name = "Mix Virus 4" id = "mixvirus4" - required_reagents = list("uranium" = 1) + required_reagents = list(/datum/reagent/uranium = 1) level_min = 5 level_max = 6 @@ -265,7 +265,7 @@ name = "Mix Virus 5" id = "mixvirus5" - required_reagents = list("mutagenvirusfood" = 1) + required_reagents = list(/datum/reagent/toxin/mutagen/mutagenvirusfood = 1) level_min = 3 level_max = 3 @@ -273,7 +273,7 @@ name = "Mix Virus 6" id = "mixvirus6" - required_reagents = list("sugarvirusfood" = 1) + required_reagents = list(/datum/reagent/toxin/mutagen/mutagenvirusfood/sugar = 1) level_min = 4 level_max = 4 @@ -281,7 +281,7 @@ name = "Mix Virus 7" id = "mixvirus7" - required_reagents = list("weakplasmavirusfood" = 1) + required_reagents = list(/datum/reagent/toxin/plasma/plasmavirusfood/weak = 1) level_min = 5 level_max = 5 @@ -289,7 +289,7 @@ name = "Mix Virus 8" id = "mixvirus8" - required_reagents = list("plasmavirusfood" = 1) + required_reagents = list(/datum/reagent/toxin/plasma/plasmavirusfood = 1) level_min = 6 level_max = 6 @@ -297,7 +297,7 @@ name = "Mix Virus 9" id = "mixvirus9" - required_reagents = list("synaptizinevirusfood" = 1) + required_reagents = list(/datum/reagent/medicine/synaptizine/synaptizinevirusfood = 1) level_min = 1 level_max = 1 @@ -305,7 +305,7 @@ name = "Mix Virus 10" id = "mixvirus10" - required_reagents = list("uraniumvirusfood" = 1) + required_reagents = list(/datum/reagent/uranium/uraniumvirusfood = 1) level_min = 6 level_max = 7 @@ -313,7 +313,7 @@ name = "Mix Virus 11" id = "mixvirus11" - required_reagents = list("uraniumplasmavirusfood_unstable" = 1) + required_reagents = list(/datum/reagent/uranium/uraniumvirusfood/unstable = 1) level_min = 7 level_max = 7 @@ -321,7 +321,7 @@ name = "Mix Virus 12" id = "mixvirus12" - required_reagents = list("uraniumplasmavirusfood_stable" = 1) + required_reagents = list(/datum/reagent/uranium/uraniumvirusfood/stable = 1) level_min = 8 level_max = 8 @@ -329,8 +329,8 @@ name = "Devolve Virus" id = "remvirus" - required_reagents = list("synaptizine" = 1) - required_catalysts = list("blood" = 1) + required_reagents = list(/datum/reagent/medicine/synaptizine = 1) + required_catalysts = list(/datum/reagent/blood = 1) /datum/chemical_reaction/mix_virus/rem_virus/on_reaction(datum/reagents/holder, created_volume) @@ -343,8 +343,8 @@ /datum/chemical_reaction/mix_virus/neuter_virus name = "Neuter Virus" id = "neutervirus" - required_reagents = list("formaldehyde" = 1) - required_catalysts = list("blood" = 1) + required_reagents = list(/datum/reagent/toxin/formaldehyde = 1) + required_catalysts = list(/datum/reagent/blood = 1) /datum/chemical_reaction/mix_virus/neuter_virus/on_reaction(datum/reagents/holder, created_volume) @@ -362,13 +362,13 @@ /datum/chemical_reaction/surfactant name = "Foam surfactant" id = "foam surfactant" - results = list("fluorosurfactant" = 5) - required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1) + results = list(/datum/reagent/fluorosurfactant = 5) + required_reagents = list(/datum/reagent/fluorine = 2, /datum/reagent/carbon = 2, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/foam name = "Foam" id = "foam" - required_reagents = list("fluorosurfactant" = 1, "water" = 1) + required_reagents = list(/datum/reagent/fluorosurfactant = 1, /datum/reagent/water = 1) mob_react = FALSE /datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, created_volume) @@ -385,7 +385,7 @@ /datum/chemical_reaction/metalfoam name = "Metal Foam" id = "metalfoam" - required_reagents = list("aluminium" = 3, "foaming_agent" = 1, "facid" = 1) + required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = FALSE /datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, created_volume) @@ -402,7 +402,7 @@ /datum/chemical_reaction/smart_foam name = "Smart Metal Foam" id = "smart_metal_foam" - required_reagents = list("aluminium" = 3, "smart_foaming_agent" = 1, "facid" = 1) + required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/smart_foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = TRUE /datum/chemical_reaction/smart_foam/on_reaction(datum/reagents/holder, created_volume) @@ -416,7 +416,7 @@ /datum/chemical_reaction/ironfoam name = "Iron Foam" id = "ironlfoam" - required_reagents = list("iron" = 3, "foaming_agent" = 1, "facid" = 1) + required_reagents = list(/datum/reagent/iron = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) mob_react = FALSE /datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume) @@ -430,15 +430,15 @@ /datum/chemical_reaction/foaming_agent name = "Foaming Agent" - id = "foaming_agent" - results = list("foaming_agent" = 1) - required_reagents = list("lithium" = 1, "hydrogen" = 1) + id = /datum/reagent/foaming_agent + results = list(/datum/reagent/foaming_agent = 1) + required_reagents = list(/datum/reagent/lithium = 1, /datum/reagent/hydrogen = 1) /datum/chemical_reaction/smart_foaming_agent name = "Smart foaming Agent" - id = "smart_foaming_agent" - results = list("smart_foaming_agent" = 3) - required_reagents = list("foaming_agent" = 3, "acetone" = 1, "iron" = 1) + id = /datum/reagent/smart_foaming_agent + results = list(/datum/reagent/smart_foaming_agent = 3) + required_reagents = list(/datum/reagent/foaming_agent = 3, /datum/reagent/acetone = 1, /datum/reagent/iron = 1) mix_message = "The solution mixes into a frothy metal foam and conforms to the walls of its container." @@ -446,83 +446,83 @@ /datum/chemical_reaction/ammonia name = "Ammonia" - id = "ammonia" - results = list("ammonia" = 3) - required_reagents = list("hydrogen" = 3, "nitrogen" = 1) + id = /datum/reagent/ammonia + results = list(/datum/reagent/ammonia = 3) + required_reagents = list(/datum/reagent/hydrogen = 3, /datum/reagent/nitrogen = 1) /datum/chemical_reaction/diethylamine name = "Diethylamine" - id = "diethylamine" - results = list("diethylamine" = 2) - required_reagents = list ("ammonia" = 1, "ethanol" = 1) + id = /datum/reagent/diethylamine + results = list(/datum/reagent/diethylamine = 2) + required_reagents = list (/datum/reagent/ammonia = 1, /datum/reagent/consumable/ethanol = 1) /datum/chemical_reaction/space_cleaner name = "Space cleaner" - id = "cleaner" - results = list("cleaner" = 2) - required_reagents = list("ammonia" = 1, "water" = 1) + id = /datum/reagent/space_cleaner + results = list(/datum/reagent/space_cleaner = 2) + required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/water = 1) /datum/chemical_reaction/plantbgone name = "Plant-B-Gone" - id = "plantbgone" - results = list("plantbgone" = 5) - required_reagents = list("toxin" = 1, "water" = 4) + id = /datum/reagent/toxin/plantbgone + results = list(/datum/reagent/toxin/plantbgone = 5) + required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/water = 4) /datum/chemical_reaction/weedkiller name = "Weed Killer" - id = "weedkiller" - results = list("weedkiller" = 5) - required_reagents = list("toxin" = 1, "ammonia" = 4) + id = /datum/reagent/toxin/plantbgone/weedkiller + results = list(/datum/reagent/toxin/plantbgone/weedkiller = 5) + required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/ammonia = 4) /datum/chemical_reaction/pestkiller name = "Pest Killer" - id = "pestkiller" - results = list("pestkiller" = 5) - required_reagents = list("toxin" = 1, "ethanol" = 4) + id = /datum/reagent/toxin/pestkiller + results = list(/datum/reagent/toxin/pestkiller = 5) + required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/consumable/ethanol = 4) /datum/chemical_reaction/drying_agent name = "Drying agent" - id = "drying_agent" - results = list("drying_agent" = 3) - required_reagents = list("stable_plasma" = 2, "ethanol" = 1, "sodium" = 1) + id = /datum/reagent/drying_agent + results = list(/datum/reagent/drying_agent = 3) + required_reagents = list(/datum/reagent/stable_plasma = 2, /datum/reagent/consumable/ethanol = 1, /datum/reagent/sodium = 1) //////////////////////////////////// Other goon stuff /////////////////////////////////////////// /datum/chemical_reaction/acetone name = "acetone" - id = "acetone" - results = list("acetone" = 3) - required_reagents = list("oil" = 1, "welding_fuel" = 1, "oxygen" = 1) + id = /datum/reagent/acetone + results = list(/datum/reagent/acetone = 3) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/oil name = "Oil" - id = "oil" - results = list("oil" = 3) - required_reagents = list("welding_fuel" = 1, "carbon" = 1, "hydrogen" = 1) + id = /datum/reagent/oil + results = list(/datum/reagent/oil = 3) + required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/carbon = 1, /datum/reagent/hydrogen = 1) /datum/chemical_reaction/phenol name = "phenol" - id = "phenol" - results = list("phenol" = 3) - required_reagents = list("water" = 1, "chlorine" = 1, "oil" = 1) + id = /datum/reagent/phenol + results = list(/datum/reagent/phenol = 3) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/chlorine = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/ash name = "Ash" - id = "ash" - results = list("ash" = 1) - required_reagents = list("oil" = 1) + id = /datum/reagent/ash + results = list(/datum/reagent/ash = 1) + required_reagents = list(/datum/reagent/oil = 1) required_temp = 480 /datum/chemical_reaction/colorful_reagent name = "colorful_reagent" - id = "colorful_reagent" - results = list("colorful_reagent" = 5) - required_reagents = list("stable_plasma" = 1, "radium" = 1, "space_drugs" = 1, "cryoxadone" = 1, "triple_citrus" = 1) + id = /datum/reagent/colorful_reagent + results = list(/datum/reagent/colorful_reagent = 5) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1, /datum/reagent/medicine/cryoxadone = 1, /datum/reagent/consumable/triple_citrus = 1) /datum/chemical_reaction/life name = "Life" id = "life" - required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "blood" = 1) + required_reagents = list(/datum/reagent/medicine/strange_reagent = 1, /datum/reagent/medicine/synthflesh = 1, /datum/reagent/blood = 1) required_temp = 374 /datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume) @@ -532,7 +532,7 @@ /datum/chemical_reaction/life_friendly name = "Life (Friendly)" id = "life_friendly" - required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "sugar" = 1) + required_reagents = list(/datum/reagent/medicine/strange_reagent = 1, /datum/reagent/medicine/synthflesh = 1, /datum/reagent/consumable/sugar = 1) required_temp = 374 /datum/chemical_reaction/life_friendly/on_reaction(datum/reagents/holder, created_volume) @@ -541,7 +541,7 @@ /datum/chemical_reaction/corgium name = "corgium" id = "corgium" - required_reagents = list("nutriment" = 1, "colorful_reagent" = 1, "strange_reagent" = 1, "blood" = 1) + required_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/colorful_reagent = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/blood = 1) required_temp = 374 /datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume) @@ -552,56 +552,56 @@ /datum/chemical_reaction/hair_dye name = "hair_dye" - id = "hair_dye" - results = list("hair_dye" = 5) - required_reagents = list("colorful_reagent" = 1, "radium" = 1, "space_drugs" = 1) + id = /datum/reagent/hair_dye + results = list(/datum/reagent/hair_dye = 5) + required_reagents = list(/datum/reagent/colorful_reagent = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1) /datum/chemical_reaction/barbers_aid name = "barbers_aid" - id = "barbers_aid" - results = list("barbers_aid" = 5) - required_reagents = list("carpet" = 1, "radium" = 1, "space_drugs" = 1) + id = /datum/reagent/barbers_aid + results = list(/datum/reagent/barbers_aid = 5) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/radium = 1, /datum/reagent/drug/space_drugs = 1) /datum/chemical_reaction/concentrated_barbers_aid name = "concentrated_barbers_aid" - id = "concentrated_barbers_aid" - results = list("concentrated_barbers_aid" = 2) - required_reagents = list("barbers_aid" = 1, "mutagen" = 1) + id = /datum/reagent/concentrated_barbers_aid + results = list(/datum/reagent/concentrated_barbers_aid = 2) + required_reagents = list(/datum/reagent/barbers_aid = 1, /datum/reagent/toxin/mutagen = 1) /datum/chemical_reaction/saltpetre name = "saltpetre" - id = "saltpetre" - results = list("saltpetre" = 3) - required_reagents = list("potassium" = 1, "nitrogen" = 1, "oxygen" = 3) + id = /datum/reagent/saltpetre + results = list(/datum/reagent/saltpetre = 3) + required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/nitrogen = 1, /datum/reagent/oxygen = 3) /datum/chemical_reaction/lye name = "lye" - id = "lye" - results = list("lye" = 3) - required_reagents = list("sodium" = 1, "hydrogen" = 1, "oxygen" = 1) + id = /datum/reagent/lye + results = list(/datum/reagent/lye = 3) + required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/lye2 name = "lye" - id = "lye" - results = list("lye" = 2) - required_reagents = list("ash" = 1, "water" = 1, "carbon" = 1) + id = "lye2" + results = list(/datum/reagent/lye = 2) + required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/water = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/royal_bee_jelly name = "royal bee jelly" - id = "royal_bee_jelly" - results = list("royal_bee_jelly" = 5) - required_reagents = list("mutagen" = 10, "honey" = 40) + id = /datum/reagent/royal_bee_jelly + results = list(/datum/reagent/royal_bee_jelly = 5) + required_reagents = list(/datum/reagent/toxin/mutagen = 10, /datum/reagent/consumable/honey = 40) /datum/chemical_reaction/laughter name = "laughter" - id = "laughter" - results = list("laughter" = 10) // Fuck it. I'm not touching this one. - required_reagents = list("sugar" = 1, "banana" = 1) + id = /datum/reagent/consumable/laughter + results = list(/datum/reagent/consumable/laughter = 10) // Fuck it. I'm not touching this one. + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/banana = 1) /datum/chemical_reaction/plastic_polymers name = "plastic polymers" id = "plastic_polymers" - required_reagents = list("oil" = 5, "sacid" = 2, "ash" = 3) + required_reagents = list(/datum/reagent/oil = 5, /datum/reagent/toxin/acid = 2, /datum/reagent/ash = 3) required_temp = 374 //lazily consistent with soap & other crafted objects generically created with heat. /datum/chemical_reaction/plastic_polymers/on_reaction(datum/reagents/holder, created_volume) @@ -611,101 +611,101 @@ /datum/chemical_reaction/pax name = "pax" - id = "pax" - results = list("pax" = 3) - required_reagents = list("mindbreaker" = 1, "synaptizine" = 1, "water" = 1) + id = /datum/reagent/pax + results = list(/datum/reagent/pax = 3) + required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/medicine/synaptizine = 1, /datum/reagent/water = 1) /datum/chemical_reaction/cat name = "felined mutation toxic" - id = "cats" - results = list("felinidmutationtoxin" = 1) - required_reagents = list("mindbreaker" = 1, "ammonia" = 1, "water" = 1, "aphro" = 10, "stablemutationtoxin" = 1) // Maybe aphro+ if it becomes a shitty meme + id = /datum/reagent/mutationtoxin/felinid + results = list(/datum/reagent/mutationtoxin/felinid = 1) + required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/ammonia = 1, /datum/reagent/water = 1, /datum/reagent/drug/aphrodisiac = 10, /datum/reagent/mutationtoxin = 1) // Maybe aphro+ if it becomes a shitty meme required_temp = 450 /datum/chemical_reaction/moff name = "insect mutation toxic" - id = "moffs" - results = list("mothmutationtoxin" = 1) - required_reagents = list("liquid_dark_matter" = 2, "ammonia" = 5, "lithium" = 1, "stablemutationtoxin" = 1) + id = /datum/reagent/mutationtoxin/insect + results = list(/datum/reagent/mutationtoxin/insect = 1) + required_reagents = list(/datum/reagent/liquid_dark_matter = 2, /datum/reagent/ammonia = 5, /datum/reagent/lithium = 1, /datum/reagent/mutationtoxin = 1) required_temp = 320 /datum/chemical_reaction/notlight //Harder to make do to it being a hard race to play name = "shadow muatatuin toxic" - id = "notlight" - results = list("shadowmutationtoxin" = 1) - required_reagents = list("liquid_dark_matter" = 5, "synaptizine" = 10, "oculine" = 10, "stablemutationtoxin" = 1) + id = /datum/reagent/mutationtoxin/shadow + results = list(/datum/reagent/mutationtoxin/shadow = 1) + required_reagents = list(/datum/reagent/liquid_dark_matter = 5, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/oculine = 10, /datum/reagent/mutationtoxin = 1) required_temp = 600 // Liquid Carpets /datum/chemical_reaction/carpet name = "carpet" - id = "carpet" - results = list("carpet" = 2) - required_reagents = list("space_drugs" = 1, "blood" = 1) + id = /datum/reagent/carpet + results = list(/datum/reagent/carpet = 2) + required_reagents = list(/datum/reagent/drug/space_drugs = 1, /datum/reagent/blood = 1) /datum/chemical_reaction/carpet/black name = "liquid black carpet" - id = "blackcarpet" - results = list("blackcarpet" = 2) - required_reagents = list("carpet" = 1, "carbon" = 1) + id = /datum/reagent/carpet/black + results = list(/datum/reagent/carpet/black = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/carpet/blackred name = "liquid red black carpet" - id = "blackredcarpet" - results = list("blackredcarpet" = 2) - required_reagents = list("carpet" = 1, "charcoal" = 1) + id = /datum/reagent/carpet/blackred + results = list(/datum/reagent/carpet/blackred = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/medicine/charcoal = 1) /datum/chemical_reaction/carpet/monochrome name = "liquid monochrome carpet" - id = "monochromecarpet" - results = list("monochromecarpet" = 2) - required_reagents = list("carpet" = 1, "oil" = 1) + id = /datum/reagent/carpet/monochrome + results = list(/datum/reagent/carpet/monochrome = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/oil = 1) /datum/chemical_reaction/carpet/blue name = "liquid blue carpet" - id = "bluecarpet" - results = list("bluecarpet" = 2) - required_reagents = list("carpet" = 1, "tonic" = 1) + id = /datum/reagent/carpet/blue + results = list(/datum/reagent/carpet/blue = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tonic = 1) /datum/chemical_reaction/carpet/cyan name = "liquid cyan carpet" - id = "cyancarpet" - results = list("cyancarpet" = 2) - required_reagents = list("carpet" = 1, "ice" = 1) + id = /datum/reagent/carpet/cyan + results = list(/datum/reagent/carpet/cyan = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/ice = 1) /datum/chemical_reaction/carpet/green name = "liquid green carpet" - id = "greencarpet" - results = list("greencarpet" = 2) - required_reagents = list("carpet" = 1, "sacid" = 1) + id = /datum/reagent/carpet/green + results = list(/datum/reagent/carpet/green = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/toxin/acid = 1) /datum/chemical_reaction/carpet/orange name = "liquid orange carpet" - id = "orangecarpet" - results = list("orangecarpet" = 2) - required_reagents = list("carpet" = 1, "orangejuice" = 1) + id = /datum/reagent/carpet/orange + results = list(/datum/reagent/carpet/orange = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/orangejuice = 1) /datum/chemical_reaction/carpet/purple name = "liquid purple carpet" - id = "purplecarpet" - results = list("purplecarpet" = 2) - required_reagents = list("carpet" = 1, "stable_plasma" = 1) + id = /datum/reagent/carpet/purple + results = list(/datum/reagent/carpet/purple = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/stable_plasma = 1) /datum/chemical_reaction/carpet/red name = "liquid red carpet" - id = "redcarpet" - results = list("redcarpet" = 2) - required_reagents = list("carpet" = 1, "welding_fuel" = 1) + id = /datum/reagent/carpet/red + results = list(/datum/reagent/carpet/red = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/fuel = 1) /datum/chemical_reaction/carpet/royalblack name = "liquid royal black carpet" - id = "royalblackcarpet" - results = list("royalblackcarpet" = 2) - required_reagents = list("carpet" = 1, "blackpepper" = 1) + id = /datum/reagent/carpet/royalblack + results = list(/datum/reagent/carpet/royalblack = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/blackpepper = 1) /datum/chemical_reaction/carpet/royalblue name = "liquid royal blue carpet" - id = "royalbluecarpet" - results = list("royalbluecarpet" = 2) - required_reagents = list("carpet" = 1, "clonexadone" = 1) + id = /datum/reagent/carpet/royalblue + results = list(/datum/reagent/carpet/royalblue = 2) + required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/medicine/clonexadone = 1) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index ad1efc1da7..cb9636bf02 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -27,21 +27,21 @@ /datum/chemical_reaction/reagent_explosion/nitroglycerin name = "Nitroglycerin" - id = "nitroglycerin" - results = list("nitroglycerin" = 2) - required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1) + id = /datum/reagent/nitroglycerin + results = list(/datum/reagent/nitroglycerin = 2) + required_reagents = list(/datum/reagent/glycerol = 1, /datum/reagent/toxin/acid/fluacid = 1, /datum/reagent/toxin/acid = 1) strengthdiv = 2 /datum/chemical_reaction/reagent_explosion/nitroglycerin/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent("nitroglycerin", created_volume*2) + holder.remove_reagent(/datum/reagent/nitroglycerin, created_volume*2) ..() /datum/chemical_reaction/reagent_explosion/nitroglycerin_explosion name = "Nitroglycerin explosion" id = "nitroglycerin_explosion" - required_reagents = list("nitroglycerin" = 1) + required_reagents = list(/datum/reagent/nitroglycerin = 1) required_temp = 474 strengthdiv = 2 @@ -49,13 +49,13 @@ /datum/chemical_reaction/reagent_explosion/potassium_explosion name = "Explosion" id = "potassium_explosion" - required_reagents = list("water" = 1, "potassium" = 1) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/potassium = 1) strengthdiv = 10 /datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom name = "Holy Explosion" id = "holyboom" - required_reagents = list("holywater" = 1, "potassium" = 1) + required_reagents = list(/datum/reagent/water/holywater = 1, /datum/reagent/potassium = 1) /datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom/on_reaction(datum/reagents/holder, created_volume) var/turf/T = get_turf(holder.my_atom) @@ -84,14 +84,14 @@ /datum/chemical_reaction/blackpowder name = "Black Powder" - id = "blackpowder" - results = list("blackpowder" = 3) - required_reagents = list("saltpetre" = 1, "charcoal" = 1, "sulfur" = 1) + id = /datum/reagent/blackpowder + results = list(/datum/reagent/blackpowder = 3) + required_reagents = list(/datum/reagent/saltpetre = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/sulfur = 1) /datum/chemical_reaction/reagent_explosion/blackpowder_explosion name = "Black Powder Kaboom" id = "blackpowder_explosion" - required_reagents = list("blackpowder" = 1) + required_reagents = list(/datum/reagent/blackpowder = 1) required_temp = 474 strengthdiv = 6 modifier = 1 @@ -103,14 +103,14 @@ /datum/chemical_reaction/thermite name = "Thermite" - id = "thermite" - results = list("thermite" = 3) - required_reagents = list("aluminium" = 1, "iron" = 1, "oxygen" = 1) + id = /datum/reagent/thermite + results = list(/datum/reagent/thermite = 3) + required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/iron = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/emp_pulse name = "EMP Pulse" id = "emp_pulse" - required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense + required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/iron = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense /datum/chemical_reaction/emp_pulse/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) @@ -123,7 +123,7 @@ /datum/chemical_reaction/beesplosion name = "Bee Explosion" id = "beesplosion" - required_reagents = list("honey" = 1, "strange_reagent" = 1, "radium" = 1) + required_reagents = list(/datum/reagent/consumable/honey = 1, /datum/reagent/medicine/strange_reagent = 1, /datum/reagent/radium = 1) /datum/chemical_reaction/beesplosion/on_reaction(datum/reagents/holder, created_volume) var/location = holder.my_atom.drop_location() @@ -134,7 +134,7 @@ var/list/beeagents = list() for(var/X in holder.reagent_list) var/datum/reagent/R = X - if(required_reagents[R.id]) + if(required_reagents[R.type]) continue beeagents += R var/bee_amount = round(created_volume * 0.2) @@ -146,15 +146,15 @@ /datum/chemical_reaction/stabilizing_agent name = "stabilizing_agent" - id = "stabilizing_agent" - results = list("stabilizing_agent" = 3) - required_reagents = list("iron" = 1, "oxygen" = 1, "hydrogen" = 1) + id = /datum/reagent/stabilizing_agent + results = list(/datum/reagent/stabilizing_agent = 3) + required_reagents = list(/datum/reagent/iron = 1, /datum/reagent/oxygen = 1, /datum/reagent/hydrogen = 1) /datum/chemical_reaction/clf3 name = "Chlorine Trifluoride" - id = "clf3" - results = list("clf3" = 4) - required_reagents = list("chlorine" = 1, "fluorine" = 3) + id = /datum/reagent/clf3 + results = list(/datum/reagent/clf3 = 4) + required_reagents = list(/datum/reagent/chlorine = 1, /datum/reagent/fluorine = 3) required_temp = 424 /datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, created_volume) @@ -167,7 +167,7 @@ name = "Meth explosion" id = "methboom1" required_temp = 380 //slightly above the meth mix time. - required_reagents = list("methamphetamine" = 1) + required_reagents = list(/datum/reagent/drug/methamphetamine = 1) strengthdiv = 6 modifier = 1 mob_react = FALSE @@ -181,19 +181,19 @@ /datum/chemical_reaction/reagent_explosion/methsplosion/methboom2 id = "methboom2" - required_reagents = list("diethylamine" = 1, "iodine" = 1, "phosphorus" = 1, "hydrogen" = 1) //diethylamine is often left over from mixing the ephedrine. + required_reagents = list(/datum/reagent/diethylamine = 1, /datum/reagent/iodine = 1, /datum/reagent/phosphorus = 1, /datum/reagent/hydrogen = 1) //diethylamine is often left over from mixing the ephedrine. required_temp = 300 //room temperature, chilling it even a little will prevent the explosion /datum/chemical_reaction/sorium name = "Sorium" - id = "sorium" - results = list("sorium" = 4) - required_reagents = list("mercury" = 1, "oxygen" = 1, "nitrogen" = 1, "carbon" = 1) + id = /datum/reagent/sorium + results = list(/datum/reagent/sorium = 4) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/oxygen = 1, /datum/reagent/nitrogen = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent("sorium", created_volume*4) + holder.remove_reagent(/datum/reagent/sorium, created_volume*4) var/turf/T = get_turf(holder.my_atom) var/range = CLAMP(sqrt(created_volume*4), 1, 6) goonchem_vortex(T, 1, range) @@ -201,7 +201,7 @@ /datum/chemical_reaction/sorium_vortex name = "sorium_vortex" id = "sorium_vortex" - required_reagents = list("sorium" = 1) + required_reagents = list(/datum/reagent/sorium = 1) required_temp = 474 /datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, created_volume) @@ -211,14 +211,14 @@ /datum/chemical_reaction/liquid_dark_matter name = "Liquid Dark Matter" - id = "liquid_dark_matter" - results = list("liquid_dark_matter" = 3) - required_reagents = list("stable_plasma" = 1, "radium" = 1, "carbon" = 1) + id = /datum/reagent/liquid_dark_matter + results = list(/datum/reagent/liquid_dark_matter = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent("liquid_dark_matter", created_volume*3) + holder.remove_reagent(/datum/reagent/liquid_dark_matter, created_volume*3) var/turf/T = get_turf(holder.my_atom) var/range = CLAMP(sqrt(created_volume*3), 1, 6) goonchem_vortex(T, 0, range) @@ -226,7 +226,7 @@ /datum/chemical_reaction/ldm_vortex name = "LDM Vortex" id = "ldm_vortex" - required_reagents = list("liquid_dark_matter" = 1) + required_reagents = list(/datum/reagent/liquid_dark_matter = 1) required_temp = 474 /datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, created_volume) @@ -236,12 +236,12 @@ /datum/chemical_reaction/flash_powder name = "Flash powder" - id = "flash_powder" - results = list("flash_powder" = 3) - required_reagents = list("aluminium" = 1, "potassium" = 1, "sulfur" = 1 ) + id = /datum/reagent/flash_powder + results = list(/datum/reagent/flash_powder = 3) + required_reagents = list(/datum/reagent/aluminium = 1, /datum/reagent/potassium = 1, /datum/reagent/sulfur = 1 ) /datum/chemical_reaction/flash_powder/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return var/location = get_turf(holder.my_atom) do_sparks(2, TRUE, location) @@ -255,12 +255,12 @@ C.Knockdown(60) else C.Stun(100) - holder.remove_reagent("flash_powder", created_volume*3) + holder.remove_reagent(/datum/reagent/flash_powder, created_volume*3) /datum/chemical_reaction/flash_powder_flash name = "Flash powder activation" id = "flash_powder_flash" - required_reagents = list("flash_powder" = 1) + required_reagents = list(/datum/reagent/flash_powder = 1) required_temp = 374 /datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume) @@ -279,14 +279,14 @@ /datum/chemical_reaction/smoke_powder name = "smoke_powder" - id = "smoke_powder" - results = list("smoke_powder" = 3) - required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1) + id = /datum/reagent/smoke_powder + results = list(/datum/reagent/smoke_powder = 3) + required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/consumable/sugar = 1, /datum/reagent/phosphorus = 1) /datum/chemical_reaction/smoke_powder/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent("smoke_powder", created_volume*3) + holder.remove_reagent(/datum/reagent/smoke_powder, created_volume*3) var/smoke_radius = round(sqrt(created_volume * 1.5), 1) var/location = get_turf(holder.my_atom) var/datum/effect_system/smoke_spread/chem/S = new @@ -301,7 +301,7 @@ /datum/chemical_reaction/smoke_powder_smoke name = "smoke_powder_smoke" id = "smoke_powder_smoke" - required_reagents = list("smoke_powder" = 1) + required_reagents = list(/datum/reagent/smoke_powder = 1) required_temp = 374 mob_react = FALSE @@ -319,14 +319,14 @@ /datum/chemical_reaction/sonic_powder name = "sonic_powder" - id = "sonic_powder" - results = list("sonic_powder" = 3) - required_reagents = list("oxygen" = 1, "cola" = 1, "phosphorus" = 1) + id = /datum/reagent/sonic_powder + results = list(/datum/reagent/sonic_powder = 3) + required_reagents = list(/datum/reagent/oxygen = 1, /datum/reagent/consumable/space_cola = 1, /datum/reagent/phosphorus = 1) /datum/chemical_reaction/sonic_powder/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return - holder.remove_reagent("sonic_powder", created_volume*3) + holder.remove_reagent(/datum/reagent/sonic_powder, created_volume*3) var/location = get_turf(holder.my_atom) playsound(location, 'sound/effects/bang.ogg', 25, 1) for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/3, location)) @@ -335,7 +335,7 @@ /datum/chemical_reaction/sonic_powder_deafen name = "sonic_powder_deafen" id = "sonic_powder_deafen" - required_reagents = list("sonic_powder" = 1) + required_reagents = list(/datum/reagent/sonic_powder = 1) required_temp = 374 /datum/chemical_reaction/sonic_powder_deafen/on_reaction(datum/reagents/holder, created_volume) @@ -346,12 +346,12 @@ /datum/chemical_reaction/phlogiston name = "phlogiston" - id = "phlogiston" - results = list("phlogiston" = 3) - required_reagents = list("phosphorus" = 1, "sacid" = 1, "stable_plasma" = 1) + id = /datum/reagent/phlogiston + results = list(/datum/reagent/phlogiston = 3) + required_reagents = list(/datum/reagent/phosphorus = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/stable_plasma = 1) /datum/chemical_reaction/phlogiston/on_reaction(datum/reagents/holder, created_volume) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return var/turf/open/T = get_turf(holder.my_atom) if(istype(T)) @@ -361,15 +361,15 @@ /datum/chemical_reaction/napalm name = "Napalm" - id = "napalm" - results = list("napalm" = 3) - required_reagents = list("oil" = 1, "welding_fuel" = 1, "ethanol" = 1 ) + id = /datum/reagent/napalm + results = list(/datum/reagent/napalm = 3) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/fuel = 1, /datum/reagent/consumable/ethanol = 1 ) /datum/chemical_reaction/cryostylane name = "cryostylane" - id = "cryostylane" - results = list("cryostylane" = 3) - required_reagents = list("water" = 1, "stable_plasma" = 1, "nitrogen" = 1) + id = /datum/reagent/cryostylane + results = list(/datum/reagent/cryostylane = 3) + required_reagents = list(/datum/reagent/water = 1, /datum/reagent/stable_plasma = 1, /datum/reagent/nitrogen = 1) /datum/chemical_reaction/cryostylane/on_reaction(datum/reagents/holder, created_volume) holder.chem_temp = 20 // cools the fuck down @@ -378,8 +378,8 @@ /datum/chemical_reaction/cryostylane_oxygen name = "ephemeral cryostylane reaction" id = "cryostylane_oxygen" - results = list("cryostylane" = 1) - required_reagents = list("cryostylane" = 1, "oxygen" = 1) + results = list(/datum/reagent/cryostylane = 1) + required_reagents = list(/datum/reagent/cryostylane = 1, /datum/reagent/oxygen = 1) mob_react = FALSE /datum/chemical_reaction/cryostylane_oxygen/on_reaction(datum/reagents/holder, created_volume) @@ -388,8 +388,8 @@ /datum/chemical_reaction/pyrosium_oxygen name = "ephemeral pyrosium reaction" id = "pyrosium_oxygen" - results = list("pyrosium" = 1) - required_reagents = list("pyrosium" = 1, "oxygen" = 1) + results = list(/datum/reagent/pyrosium = 1) + required_reagents = list(/datum/reagent/pyrosium = 1, /datum/reagent/oxygen = 1) mob_react = FALSE /datum/chemical_reaction/pyrosium_oxygen/on_reaction(datum/reagents/holder, created_volume) @@ -397,9 +397,9 @@ /datum/chemical_reaction/pyrosium name = "pyrosium" - id = "pyrosium" - results = list("pyrosium" = 3) - required_reagents = list("stable_plasma" = 1, "radium" = 1, "phosphorus" = 1) + id = /datum/reagent/pyrosium + results = list(/datum/reagent/pyrosium = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/radium = 1, /datum/reagent/phosphorus = 1) /datum/chemical_reaction/pyrosium/on_reaction(datum/reagents/holder, created_volume) holder.chem_temp = 20 // also cools the fuck down @@ -407,23 +407,23 @@ /datum/chemical_reaction/teslium name = "Teslium" - id = "teslium" - results = list("teslium" = 3) - required_reagents = list("stable_plasma" = 1, "silver" = 1, "blackpowder" = 1) + id = /datum/reagent/teslium + results = list(/datum/reagent/teslium = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/silver = 1, /datum/reagent/blackpowder = 1) mix_message = "A jet of sparks flies from the mixture as it merges into a flickering slurry." required_temp = 400 /datum/chemical_reaction/energized_jelly name = "Energized Jelly" - id = "energized_jelly" - results = list("energized_jelly" = 2) - required_reagents = list("slimejelly" = 1, "teslium" = 1) + id = /datum/reagent/teslium/energized_jelly + results = list(/datum/reagent/teslium/energized_jelly = 2) + required_reagents = list(/datum/reagent/toxin/slimejelly = 1, /datum/reagent/teslium = 1) mix_message = "The slime jelly starts glowing intermittently." /datum/chemical_reaction/reagent_explosion/teslium_lightning name = "Teslium Destabilization" id = "teslium_lightning" - required_reagents = list("teslium" = 1, "water" = 1) + required_reagents = list(/datum/reagent/teslium = 1, /datum/reagent/water = 1) strengthdiv = 100 modifier = -100 noexplosion = TRUE @@ -452,29 +452,29 @@ /datum/chemical_reaction/reagent_explosion/teslium_lightning/heat id = "teslium_lightning2" required_temp = 474 - required_reagents = list("teslium" = 1) + required_reagents = list(/datum/reagent/teslium = 1) /datum/chemical_reaction/reagent_explosion/nitrous_oxide name = "N2O explosion" id = "n2o_explosion" - required_reagents = list("nitrous_oxide" = 1) + required_reagents = list(/datum/reagent/nitrous_oxide = 1) strengthdiv = 7 required_temp = 575 modifier = 1 /datum/chemical_reaction/firefighting_foam name = "Firefighting Foam" - id = "firefighting_foam" - results = list("firefighting_foam" = 3) - required_reagents = list("stabilizing_agent" = 1,"fluorosurfactant" = 1,"carbon" = 1) + id = /datum/reagent/firefighting_foam + results = list(/datum/reagent/firefighting_foam = 3) + required_reagents = list(/datum/reagent/stabilizing_agent = 1, /datum/reagent/fluorosurfactant = 1,/datum/reagent/carbon = 1) required_temp = 200 is_cold_recipe = 1 /datum/chemical_reaction/reagent_explosion/lingblood name = "Changeling Blood Reaction" id = "ling_blood_reaction" - results = list("ash" = 1) - required_reagents = list("blood" = 1) + results = list(/datum/reagent/ash = 1) + required_reagents = list(/datum/reagent/blood = 1) strengthdiv = 4 //The explosion should be somewhat strong if a full 15u is heated within a syringe. !!fun!! required_temp = 666 special_react = TRUE diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 8edca91a91..5228d4a281 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -16,7 +16,7 @@ /datum/chemical_reaction/slime/slimespawn name = "Slime Spawn" id = "m_spawn" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/grey required_other = TRUE @@ -28,15 +28,15 @@ /datum/chemical_reaction/slime/slimeinaprov name = "Slime epinephrine" id = "m_inaprov" - results = list("epinephrine" = 3) - required_reagents = list("water" = 5) + results = list(/datum/reagent/medicine/epinephrine = 3) + required_reagents = list(/datum/reagent/water = 5) required_other = TRUE required_container = /obj/item/slime_extract/grey /datum/chemical_reaction/slime/slimemonkey name = "Slime Monkey" id = "m_monkey" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/grey required_other = TRUE @@ -48,25 +48,25 @@ //Green /datum/chemical_reaction/slime/slimemutate name = "Mutation Toxin" - id = "slimetoxin" - results = list("slime_toxin" = 1) - required_reagents = list("plasma" = 1) + id = /datum/reagent/slime_toxin + results = list(/datum/reagent/slime_toxin = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE required_container = /obj/item/slime_extract/green /datum/chemical_reaction/slime/slimehuman name = "Human Mutation Toxin" - id = "humanmuttoxin" - results = list("stablemutationtoxin" = 1) - required_reagents = list("blood" = 1) + id = /datum/reagent/mutationtoxin + results = list(/datum/reagent/mutationtoxin = 1) + required_reagents = list(/datum/reagent/blood = 1) required_other = TRUE required_container = /obj/item/slime_extract/green /datum/chemical_reaction/slime/slimelizard name = "Lizard Mutation Toxin" - id = "lizardmuttoxin" - results = list("lizardmutationtoxin" = 1) - required_reagents = list("radium" = 1) + id = /datum/reagent/mutationtoxin/lizard + results = list(/datum/reagent/mutationtoxin/lizard = 1) + required_reagents = list(/datum/reagent/radium = 1) required_other = TRUE required_container = /obj/item/slime_extract/green @@ -74,7 +74,7 @@ /datum/chemical_reaction/slime/slimemetal name = "Slime Metal" id = "m_metal" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/metal required_other = TRUE @@ -87,7 +87,7 @@ /datum/chemical_reaction/slime/slimeglass name = "Slime Glass" id = "m_glass" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/metal required_other = TRUE @@ -101,7 +101,7 @@ /datum/chemical_reaction/slime/slimemobspawn name = "Slime Crit" id = "m_tele" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/gold required_other = TRUE deletes_extract = FALSE //we do delete, but we don't do so instantly @@ -121,7 +121,7 @@ /datum/chemical_reaction/slime/slimemobspawn/lesser name = "Slime Crit Lesser" id = "m_tele3" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) /datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate violently!") @@ -130,7 +130,7 @@ /datum/chemical_reaction/slime/slimemobspawn/friendly name = "Slime Crit Friendly" id = "m_tele5" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) /datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate adorably!") @@ -140,7 +140,7 @@ /datum/chemical_reaction/slime/slimebork name = "Slime Bork" id = "m_tele2" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/silver required_other = TRUE @@ -172,7 +172,7 @@ /datum/chemical_reaction/slime/slimebork/drinks name = "Slime Bork 2" id = "m_tele4" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) /datum/chemical_reaction/slime/slimebork/drinks/getbork() return get_random_drink() @@ -181,15 +181,15 @@ /datum/chemical_reaction/slime/slimefrost name = "Slime Frost Oil" id = "m_frostoil" - results = list("frostoil" = 10) - required_reagents = list("plasma" = 1) + results = list(/datum/reagent/consumable/frostoil = 10) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/blue required_other = TRUE /datum/chemical_reaction/slime/slimestabilizer name = "Slime Stabilizer" id = "m_slimestabilizer" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/blue required_other = TRUE @@ -200,8 +200,8 @@ /datum/chemical_reaction/slime/slimefoam name = "Slime Foam" id = "m_foam" - results = list("fluorosurfactant" = 20, "water" = 20) - required_reagents = list("water" = 5) + results = list(/datum/reagent/fluorosurfactant = 20, /datum/reagent/water = 20) + required_reagents = list(/datum/reagent/water = 5) required_container = /obj/item/slime_extract/blue required_other = TRUE @@ -209,7 +209,7 @@ /datum/chemical_reaction/slime/slimefreeze name = "Slime Freeze" id = "m_freeze" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/darkblue required_other = TRUE deletes_extract = FALSE @@ -233,7 +233,7 @@ /datum/chemical_reaction/slime/slimefireproof name = "Slime Fireproof" id = "m_fireproof" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/darkblue required_other = TRUE @@ -245,15 +245,15 @@ /datum/chemical_reaction/slime/slimecasp name = "Slime Capsaicin Oil" id = "m_capsaicinoil" - results = list("capsaicin" = 10) - required_reagents = list("blood" = 1) + results = list(/datum/reagent/consumable/capsaicin = 10) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/orange required_other = TRUE /datum/chemical_reaction/slime/slimefire name = "Slime fire" id = "m_fire" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/orange required_other = TRUE deletes_extract = FALSE @@ -277,8 +277,8 @@ /datum/chemical_reaction/slime/slimesmoke name = "Slime Smoke" id = "m_smoke" - results = list("phosphorus" = 10, "potassium" = 10, "sugar" = 10) - required_reagents = list("water" = 5) + results = list(/datum/reagent/phosphorus = 10, /datum/reagent/potassium = 10, /datum/reagent/consumable/sugar = 10) + required_reagents = list(/datum/reagent/water = 5) required_container = /obj/item/slime_extract/orange required_other = TRUE @@ -286,7 +286,7 @@ /datum/chemical_reaction/slime/slimeoverload name = "Slime EMP" id = "m_emp" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/yellow required_other = TRUE @@ -297,7 +297,7 @@ /datum/chemical_reaction/slime/slimecell name = "Slime Powercell" id = "m_cell" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/yellow required_other = TRUE @@ -308,7 +308,7 @@ /datum/chemical_reaction/slime/slimeglow name = "Slime Glow" id = "m_glow" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/yellow required_other = TRUE @@ -322,7 +322,7 @@ /datum/chemical_reaction/slime/slimepsteroid name = "Slime Steroid" id = "m_steroid" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/purple required_other = TRUE @@ -333,8 +333,8 @@ /datum/chemical_reaction/slime/slimeregen name = "Slime Regen" id = "m_regen" - results = list("regen_jelly" = 5) - required_reagents = list("blood" = 1) + results = list(/datum/reagent/medicine/regen_jelly = 5) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/purple required_other = TRUE @@ -342,7 +342,7 @@ /datum/chemical_reaction/slime/slimeplasma name = "Slime Plasma" id = "m_plasma" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/darkpurple required_other = TRUE @@ -354,7 +354,7 @@ /datum/chemical_reaction/slime/slimemutator name = "Slime Mutator" id = "m_slimemutator" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/red required_other = TRUE @@ -365,7 +365,7 @@ /datum/chemical_reaction/slime/slimebloodlust name = "Bloodlust" id = "m_bloodlust" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/red required_other = TRUE @@ -383,7 +383,7 @@ /datum/chemical_reaction/slime/slimespeed name = "Slime Speed" id = "m_speed" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/red required_other = TRUE @@ -395,7 +395,7 @@ /datum/chemical_reaction/slime/docility name = "Docility Potion" id = "m_potion" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/pink required_other = TRUE @@ -406,7 +406,7 @@ /datum/chemical_reaction/slime/gender name = "Gender Potion" id = "m_gender" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/pink required_other = TRUE @@ -417,9 +417,9 @@ //Black /datum/chemical_reaction/slime/slimemutate2 name = "Advanced Mutation Toxin" - id = "mutationtoxin2" - results = list("amutationtoxin" = 1) - required_reagents = list("plasma" = 1) + id = /datum/reagent/aslimetoxin + results = list(/datum/reagent/aslimetoxin = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE required_container = /obj/item/slime_extract/black @@ -427,7 +427,7 @@ /datum/chemical_reaction/slime/slimeexplosion name = "Slime Explosion" id = "m_explosion" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/oil required_other = TRUE deletes_extract = FALSE @@ -456,8 +456,8 @@ /datum/chemical_reaction/slime/slimecornoil name = "Slime Corn Oil" id = "m_cornoil" - results = list("cornoil" = 10) - required_reagents = list("blood" = 1) + results = list(/datum/reagent/consumable/cornoil = 10) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/oil required_other = TRUE @@ -466,7 +466,7 @@ name = "Slime Potion 2" id = "m_potion2" required_container = /obj/item/slime_extract/lightpink - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE /datum/chemical_reaction/slime/slimepotion2/on_reaction(datum/reagents/holder) @@ -477,7 +477,7 @@ name = "Renaming Potion" id = "m_renaming_potion" required_container = /obj/item/slime_extract/lightpink - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_other = TRUE /datum/chemical_reaction/slime/renaming/on_reaction(datum/reagents/holder) @@ -489,7 +489,7 @@ /datum/chemical_reaction/slime/adamantine name = "Adamantine" id = "adamantine" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/adamantine required_other = TRUE @@ -501,7 +501,7 @@ /datum/chemical_reaction/slime/slimefloor2 name = "Bluespace Floor" id = "m_floor2" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/bluespace required_other = TRUE @@ -513,7 +513,7 @@ /datum/chemical_reaction/slime/slimecrystal name = "Slime Crystal" id = "m_crystal" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/bluespace required_other = TRUE @@ -525,7 +525,7 @@ /datum/chemical_reaction/slime/slimeradio name = "Slime Radio" id = "m_radio" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/bluespace required_other = TRUE @@ -537,7 +537,7 @@ /datum/chemical_reaction/slime/slimepsteroid2 name = "Slime Steroid 2" id = "m_steroid2" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/cerulean required_other = TRUE @@ -548,7 +548,7 @@ /datum/chemical_reaction/slime/slime_territory name = "Slime Territory" id = "s_territory" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/cerulean required_other = TRUE @@ -560,7 +560,7 @@ /datum/chemical_reaction/slime/slimestop name = "Slime Stop" id = "m_stop" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/sepia required_other = TRUE @@ -573,7 +573,7 @@ /datum/chemical_reaction/slime/slimecamera name = "Slime Camera" id = "m_camera" - required_reagents = list("water" = 1) + required_reagents = list(/datum/reagent/water = 1) required_container = /obj/item/slime_extract/sepia required_other = TRUE @@ -585,7 +585,7 @@ /datum/chemical_reaction/slime/slimefloor name = "Sepia Floor" id = "m_floor" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/sepia required_other = TRUE @@ -597,7 +597,7 @@ /datum/chemical_reaction/slime/slimepaint name = "Slime Paint" id = "s_paint" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_container = /obj/item/slime_extract/pyrite required_other = TRUE @@ -609,7 +609,7 @@ /datum/chemical_reaction/slime/slimecrayon name = "Slime Crayon" id = "s_crayon" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_container = /obj/item/slime_extract/pyrite required_other = TRUE @@ -622,7 +622,7 @@ /datum/chemical_reaction/slime/slimeRNG name = "Random Core" id = "slimerng" - required_reagents = list("plasma" = 1) + required_reagents = list(/datum/reagent/toxin/plasma = 1) required_other = TRUE required_container = /obj/item/slime_extract/rainbow @@ -642,7 +642,7 @@ /datum/chemical_reaction/slime/slimebomb name = "Clusterblorble" id = "slimebomb" - required_reagents = list("slimejelly" = 1) + required_reagents = list(/datum/reagent/toxin/slimejelly = 1) required_other = TRUE required_container = /obj/item/slime_extract/rainbow @@ -658,7 +658,7 @@ /datum/chemical_reaction/slime/slime_transfer name = "Transfer Potion" id = "slimetransfer" - required_reagents = list("blood" = 1) + required_reagents = list(/datum/reagent/blood = 1) required_other = TRUE required_container = /obj/item/slime_extract/rainbow @@ -669,7 +669,7 @@ /datum/chemical_reaction/slime/flight_potion name = "Flight Potion" id = "flightpotion" - required_reagents = list("holywater" = 5, "uranium" = 5) + required_reagents = list(/datum/reagent/water/holywater = 5, /datum/reagent/uranium = 5) required_other = TRUE required_container = /obj/item/slime_extract/rainbow diff --git a/code/modules/reagents/chemistry/recipes/special.dm b/code/modules/reagents/chemistry/recipes/special.dm index 08d07b8a52..5ad9728b22 100644 --- a/code/modules/reagents/chemistry/recipes/special.dm +++ b/code/modules/reagents/chemistry/recipes/special.dm @@ -123,11 +123,23 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related /datum/chemical_reaction/randomized/proc/LoadOldRecipe(recipe_data) created = text2num(recipe_data["timestamp"]) - required_reagents = SANITIZE_LIST(recipe_data["required_reagents"]) - required_catalysts = SANITIZE_LIST(recipe_data["required_catalysts"]) + var/req_reag = unwrap_reagent_list(recipe_data["required_reagents"]) + if(!req_reag) + return FALSE + required_reagents = req_reag + + var/req_catalysts = unwrap_reagent_list(recipe_data["required_catalysts"]) + if(!req_catalysts) + return FALSE + required_catalysts = req_catalysts + required_temp = recipe_data["required_temp"] is_cold_recipe = recipe_data["is_cold_recipe"] - results = SANITIZE_LIST(recipe_data["results"]) + + var/temp_results = unwrap_reagent_list(recipe_data["results"]) + if(!temp_results) + return FALSE + results = temp_results var/containerpath = text2path(recipe_data["required_container"]) if(!containerpath) return FALSE @@ -136,13 +148,13 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related /datum/chemical_reaction/randomized/secret_sauce name = "secret sauce creation" - id = "secretsauce" + id = /datum/reagent/consumable/secretsauce persistent = TRUE persistence_period = 7 //Reset every week randomize_container = TRUE possible_containers = list(/obj/item/reagent_containers/glass/bucket) //easy way to ensure no common conflicts randomize_req_temperature = TRUE - results = list("secret_sauce" =1) + results = list(/datum/reagent/consumable/secretsauce =1) /datum/chemical_reaction/randomized/secret_sauce/GetPossibleReagents(kind) switch(kind) diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 726175a6c6..d9f28d2135 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -1,128 +1,128 @@ /datum/chemical_reaction/formaldehyde name = "formaldehyde" - id = "Formaldehyde" - results = list("formaldehyde" = 3) - required_reagents = list("ethanol" = 1, "oxygen" = 1, "silver" = 1) + id = /datum/reagent/toxin/formaldehyde + results = list(/datum/reagent/toxin/formaldehyde = 3) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/oxygen = 1, /datum/reagent/silver = 1) required_temp = 420 /datum/chemical_reaction/fentanyl name = "fentanyl" - id = "fentanyl" - results = list("fentanyl" = 1) - required_reagents = list("space_drugs" = 1) + id = /datum/reagent/toxin/fentanyl + results = list(/datum/reagent/toxin/fentanyl = 1) + required_reagents = list(/datum/reagent/drug/space_drugs = 1) required_temp = 674 /datum/chemical_reaction/cyanide name = "Cyanide" - id = "cyanide" - results = list("cyanide" = 3) - required_reagents = list("oil" = 1, "ammonia" = 1, "oxygen" = 1) + id = /datum/reagent/toxin/cyanide + results = list(/datum/reagent/toxin/cyanide = 3) + required_reagents = list(/datum/reagent/oil = 1, /datum/reagent/ammonia = 1, /datum/reagent/oxygen = 1) required_temp = 380 /datum/chemical_reaction/itching_powder name = "Itching Powder" - id = "itching_powder" - results = list("itching_powder" = 3) - required_reagents = list("welding_fuel" = 1, "ammonia" = 1, "charcoal" = 1) + id = /datum/reagent/toxin/itching_powder + results = list(/datum/reagent/toxin/itching_powder = 3) + required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/ammonia = 1, /datum/reagent/medicine/charcoal = 1) /datum/chemical_reaction/facid name = "Fluorosulfuric acid" - id = "facid" - results = list("facid" = 4) - required_reagents = list("sacid" = 1, "fluorine" = 1, "hydrogen" = 1, "potassium" = 1) + id = /datum/reagent/toxin/acid/fluacid + results = list(/datum/reagent/toxin/acid/fluacid = 4) + required_reagents = list(/datum/reagent/toxin/acid = 1, /datum/reagent/fluorine = 1, /datum/reagent/hydrogen = 1, /datum/reagent/potassium = 1) required_temp = 380 /datum/chemical_reaction/sulfonal name = "sulfonal" - id = "sulfonal" - results = list("sulfonal" = 3) - required_reagents = list("acetone" = 1, "diethylamine" = 1, "sulfur" = 1) + id = /datum/reagent/toxin/sulfonal + results = list(/datum/reagent/toxin/sulfonal = 3) + required_reagents = list(/datum/reagent/acetone = 1, /datum/reagent/diethylamine = 1, /datum/reagent/sulfur = 1) /datum/chemical_reaction/lipolicide name = "lipolicide" - id = "lipolicide" - results = list("lipolicide" = 3) - required_reagents = list("mercury" = 1, "diethylamine" = 1, "ephedrine" = 1) + id = /datum/reagent/toxin/lipolicide + results = list(/datum/reagent/toxin/lipolicide = 3) + required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/diethylamine = 1, /datum/reagent/medicine/ephedrine = 1) /datum/chemical_reaction/mutagen name = "Unstable mutagen" - id = "mutagen" - results = list("mutagen" = 3) - required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1) + id = /datum/reagent/toxin/mutagen + results = list(/datum/reagent/toxin/mutagen = 3) + required_reagents = list(/datum/reagent/radium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/chlorine = 1) /datum/chemical_reaction/lexorin name = "Lexorin" - id = "lexorin" - results = list("lexorin" = 3) - required_reagents = list("plasma" = 1, "hydrogen" = 1, "oxygen" = 1) + id = /datum/reagent/toxin/lexorin + results = list(/datum/reagent/toxin/lexorin = 3) + required_reagents = list(/datum/reagent/toxin/plasma = 1, /datum/reagent/hydrogen = 1, /datum/reagent/oxygen = 1) /datum/chemical_reaction/chloralhydrate name = "Chloral Hydrate" - id = "chloralhydrate" - results = list("chloralhydrate" = 1) - required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1) + id = /datum/reagent/toxin/chloralhydrate + results = list(/datum/reagent/toxin/chloralhydrate = 1) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/chlorine = 3, /datum/reagent/water = 1) /datum/chemical_reaction/mutetoxin //i'll just fit this in here snugly between other unfun chemicals :v name = "Mute Toxin" - id = "mutetoxin" - results = list("mutetoxin" = 2) - required_reagents = list("uranium" = 2, "water" = 1, "carbon" = 1) + id = /datum/reagent/toxin/mutetoxin + results = list(/datum/reagent/toxin/mutetoxin = 2) + required_reagents = list(/datum/reagent/uranium = 2, /datum/reagent/water = 1, /datum/reagent/carbon = 1) /datum/chemical_reaction/zombiepowder name = "Zombie Powder" - id = "zombiepowder" - results = list("zombiepowder" = 2) - required_reagents = list("carpotoxin" = 5, "morphine" = 5, "copper" = 5) - + id = /datum/reagent/toxin/zombiepowder + results = list(/datum/reagent/toxin/zombiepowder = 2) + required_reagents = list(/datum/reagent/toxin/carpotoxin = 5, /datum/reagent/medicine/morphine = 5, /datum/reagent/copper = 5) + /datum/chemical_reaction/ghoulpowder name = "Ghoul Powder" - id = "ghoulpowder" - results = list("ghoulpowder" = 2) - required_reagents = list("zombiepowder" = 1, "epinephrine" = 1) + id = /datum/reagent/toxin/ghoulpowder + results = list(/datum/reagent/toxin/ghoulpowder = 2) + required_reagents = list(/datum/reagent/toxin/zombiepowder = 1, /datum/reagent/medicine/epinephrine = 1) /datum/chemical_reaction/mindbreaker name = "Mindbreaker Toxin" - id = "mindbreaker" - results = list("mindbreaker" = 5) - required_reagents = list("silicon" = 1, "hydrogen" = 1, "charcoal" = 1) + id = /datum/reagent/toxin/mindbreaker + results = list(/datum/reagent/toxin/mindbreaker = 5) + required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/hydrogen = 1, /datum/reagent/medicine/charcoal = 1) /datum/chemical_reaction/heparin name = "Heparin" - id = "Heparin" - results = list("heparin" = 4) - required_reagents = list("formaldehyde" = 1, "sodium" = 1, "chlorine" = 1, "lithium" = 1) + id = /datum/reagent/toxin/heparin + results = list(/datum/reagent/toxin/heparin = 4) + required_reagents = list(/datum/reagent/toxin/formaldehyde = 1, /datum/reagent/sodium = 1, /datum/reagent/chlorine = 1, /datum/reagent/lithium = 1) mix_message = "The mixture thins and loses all color." /datum/chemical_reaction/rotatium name = "Rotatium" - id = "Rotatium" - results = list("rotatium" = 3) - required_reagents = list("mindbreaker" = 1, "teslium" = 1, "fentanyl" = 1) + id = /datum/reagent/toxin/rotatium + results = list(/datum/reagent/toxin/rotatium = 3) + required_reagents = list(/datum/reagent/toxin/mindbreaker = 1, /datum/reagent/teslium = 1, /datum/reagent/toxin/fentanyl = 1) mix_message = "After sparks, fire, and the smell of mindbreaker, the mix is constantly spinning with no stop in sight." /datum/chemical_reaction/skewium name = "Skewium" - id = "Skewium" - results = list("skewium" = 5) - required_reagents = list("rotatium" = 2, "plasma" = 2, "sacid" = 1) + id = /datum/reagent/toxin/skewium + results = list(/datum/reagent/toxin/skewium = 5) + required_reagents = list(/datum/reagent/toxin/rotatium = 2, /datum/reagent/toxin/plasma = 2, /datum/reagent/toxin/acid = 1) mix_message = "Wow! it turns out if you mix rotatium with some plasma and sulphuric acid, it gets even worse!" /datum/chemical_reaction/anacea name = "Anacea" - id = "anacea" - results = list("anacea" = 3) - required_reagents = list("haloperidol" = 1, "impedrezene" = 1, "radium" = 1) + id = /datum/reagent/toxin/anacea + results = list(/datum/reagent/toxin/anacea = 3) + required_reagents = list(/datum/reagent/medicine/haloperidol = 1, /datum/reagent/impedrezene = 1, /datum/reagent/radium = 1) /datum/chemical_reaction/mimesbane name = "Mime's Bane" - id = "mimesbane" - results = list("mimesbane" = 3) - required_reagents = list("radium" = 1, "mutetoxin" = 1, "nothing" = 1) + id = /datum/reagent/toxin/mimesbane + results = list(/datum/reagent/toxin/mimesbane = 3) + required_reagents = list(/datum/reagent/radium = 1, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1) /datum/chemical_reaction/bonehurtingjuice name = "Bone Hurting Juice" - id = "bonehurtingjuice" - results = list("bonehurtingjuice" = 5) - required_reagents = list("mutagen" = 1, "itching_powder" = 3, "milk" = 1) + id = /datum/reagent/toxin/bonehurtingjuice + results = list(/datum/reagent/toxin/bonehurtingjuice = 5) + required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/toxin/itching_powder = 3, /datum/reagent/consumable/milk = 1) mix_message = "The mixture suddenly becomes clear and looks a lot like water. You feel a strong urge to drink it." diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index b31b5c600d..d869e086a5 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -9,6 +9,7 @@ w_class = WEIGHT_CLASS_TINY var/amount_per_transfer_from_this = 5 var/list/possible_transfer_amounts = list(5,10,15,20,25,30) + var/APTFT_altclick = TRUE //will the set amount_per_transfer_from_this proc be called on AltClick() ? var/volume = 30 var/reagent_flags var/list/list_reagents = null @@ -19,25 +20,17 @@ var/container_HP = 2 var/cached_icon -/obj/item/reagent_containers/verb/set_APTFT(mob/user) //set amount_per_transfer_from_this - set name = "Set Transfer Amount" - set category = "Object" - var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts - if(N) - amount_per_transfer_from_this = N - to_chat(user, "[src]'s transfer amount is now [amount_per_transfer_from_this] units.") - /obj/item/reagent_containers/Initialize(mapload, vol) . = ..() if(isnum(vol) && vol > 0) volume = vol - if(!possible_transfer_amounts) - src.verbs -= /obj/item/reagent_containers/verb/set_APTFT + if(length(possible_transfer_amounts)) + verbs += /obj/item/reagent_containers/proc/set_APTFT create_reagents(volume, reagent_flags) if(spawned_disease) var/datum/disease/F = new spawned_disease() var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY","viruses"= list(F)) - reagents.add_reagent("blood", disease_amount, data) + reagents.add_reagent(/datum/reagent/blood, disease_amount, data) add_initial_reagents() /obj/item/reagent_containers/examine(mob/user) @@ -48,8 +41,18 @@ /obj/item/reagent_containers/AltClick(mob/user) . = ..() - if(possible_transfer_amounts && user.Adjacent(src)) + if(APTFT_altclick && length(possible_transfer_amounts) > 1 && user.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) set_APTFT() + return TRUE + +/obj/item/reagent_containers/proc/set_APTFT(mob/user) //set amount_per_transfer_from_this + set name = "Set Transfer Amount" + set category = "Object" + set waitfor = FALSE + var/N = input("Amount per transfer from this:","[src]") as null|anything in possible_transfer_amounts + if(N) + amount_per_transfer_from_this = N + to_chat(user, "[src]'s transfer amount is now [amount_per_transfer_from_this] units.") /obj/item/reagent_containers/proc/add_initial_reagents() if(list_reagents) @@ -124,7 +127,7 @@ target.visible_message("[M] has been splashed with something!", \ "[M] has been splashed with something!") for(var/datum/reagent/A in reagents.reagent_list) - R += A.id + " (" + R += A.type + " (" R += num2text(A.volume) + ")," if(thrownby) diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 61449fc153..2f5fb067ea 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -13,12 +13,12 @@ /obj/item/reagent_containers/blood/Initialize() . = ..() if(blood_type != null) - reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) + reagents.add_reagent(/datum/reagent/blood, 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_colour"=color, "blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) update_icon() /obj/item/reagent_containers/blood/on_reagent_change(changetype) if(reagents) - var/datum/reagent/blood/B = reagents.has_reagent("blood") + var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood) if(B && B.data && B.data["blood_type"]) blood_type = B.data["blood_type"] color_to_apply = bloodtype_to_color(blood_type) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 94ad5fdb2c..980e823a82 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -26,7 +26,8 @@ Borg Hypospray var/bypass_protection = 0 //If the hypospray can go through armor or thick material var/list/datum/reagents/reagent_list = list() - var/list/reagent_ids = list("dexalin", "kelotane", "bicaridine", "antitoxin", "epinephrine", "spaceacillin", "salglu_solution", "insulin") + var/list/reagent_ids = list(/datum/reagent/medicine/dexalin, /datum/reagent/medicine/kelotane, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/antitoxin, + /datum/reagent/medicine/epinephrine, /datum/reagent/medicine/spaceacillin, /datum/reagent/medicine/salglu_solution, /datum/reagent/medicine/insulin) var/accepts_reagent_upgrades = TRUE //If upgrades can increase number of reagents dispensed. var/list/modes = list() //Basically the inverse of reagent_ids. Instead of having numbers as "keys" and strings as values it has strings as keys and numbers as values. //Used as list for input() in shakers. @@ -138,19 +139,19 @@ Borg Hypospray /obj/item/reagent_containers/borghypo/hacked icon_state = "borghypo_s" - reagent_ids = list ("facid", "mutetoxin", "cyanide", "sodium_thiopental", "heparin", "lexorin") + reagent_ids = list (/datum/reagent/toxin/acid, /datum/reagent/toxin/mutetoxin, /datum/reagent/toxin/cyanide, /datum/reagent/toxin/sodium_thiopental, /datum/reagent/toxin/heparin, /datum/reagent/toxin/lexorin) accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/clown name = "laughter injector" desc = "Keeps the crew happy and productive!" - reagent_ids = list("laughter") + reagent_ids = list(/datum/reagent/consumable/laughter) accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/clown/hacked name = "laughter injector" desc = "Keeps the crew so happy they don't work!" - reagent_ids = list("superlaughter") + reagent_ids = list(/datum/reagent/consumable/superlaughter) accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/syndicate @@ -159,7 +160,7 @@ Borg Hypospray icon_state = "borghypo_s" charge_cost = 20 recharge_time = 2 - reagent_ids = list("syndicate_nanites", "potass_iodide", "morphine", "insulin") + reagent_ids = list(/datum/reagent/medicine/syndicate_nanites, /datum/reagent/medicine/potass_iodide, /datum/reagent/medicine/morphine, /datum/reagent/medicine/insulin) bypass_protection = 1 accepts_reagent_upgrades = FALSE @@ -175,7 +176,14 @@ Borg Shaker charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster. recharge_time = 3 accepts_reagent_upgrades = FALSE - reagent_ids = list("beer", "orangejuice", "grenadine", "limejuice", "tomatojuice", "cola", "tonic", "sodawater", "ice", "cream", "whiskey", "vodka", "rum", "gin", "tequila", "vermouth", "wine", "kahlua", "cognac", "ale", "milk", "coffee", "banana", "lemonjuice") + reagent_ids = list(/datum/reagent/consumable/ethanol/beer, /datum/reagent/consumable/orangejuice, /datum/reagent/consumable/grenadine, + /datum/reagent/consumable/limejuice, /datum/reagent/consumable/tomatojuice, /datum/reagent/consumable/space_cola, + /datum/reagent/consumable/tonic, /datum/reagent/consumable/sodawater, /datum/reagent/consumable/ice, + /datum/reagent/consumable/cream, /datum/reagent/consumable/ethanol/whiskey, /datum/reagent/consumable/ethanol/vodka, + /datum/reagent/consumable/ethanol/rum, /datum/reagent/consumable/ethanol/gin, /datum/reagent/consumable/ethanol/tequila, + /datum/reagent/consumable/ethanol/vermouth, /datum/reagent/consumable/ethanol/wine, /datum/reagent/consumable/ethanol/kahlua, + /datum/reagent/consumable/ethanol/cognac, /datum/reagent/consumable/ethanol/ale, /datum/reagent/consumable/milk, + /datum/reagent/consumable/coffee, /datum/reagent/consumable/banana, /datum/reagent/consumable/lemonjuice) /obj/item/reagent_containers/borghypo/borgshaker/attack(mob/M, mob/user) return //Can't inject stuff with a shaker, can we? //not with that attitude @@ -230,21 +238,24 @@ Borg Shaker charge_cost = 20 //Lots of reagents all regenerating at once, so the charge cost is lower. They also regenerate faster. recharge_time = 3 accepts_reagent_upgrades = FALSE - reagent_ids = list("fakebeer", "fernet") + reagent_ids = list(/datum/reagent/toxin/fakebeer, /datum/reagent/consumable/ethanol/fernet) /obj/item/reagent_containers/borghypo/peace name = "Peace Hypospray" - reagent_ids = list("dizzysolution", "tiresolution", "synthpax", "insulin") + + reagent_ids = list(/datum/reagent/peaceborg_confuse, /datum/reagent/peaceborg_tire, /datum/reagent/pax/peaceborg, /datum/reagent/medicine/insulin) accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/peace/hacked desc = "Everything's peaceful in death!" icon_state = "borghypo_s" - reagent_ids = list("dizzysolution", "tiresolution", "synthpax", "tirizene", "sulfonal", "sodium_thiopental", "cyanide", "fentanyl") + reagent_ids = list(/datum/reagent/peaceborg_confuse, /datum/reagent/peaceborg_tire, /datum/reagent/pax/peaceborg, + /datum/reagent/toxin/staminatoxin,/datum/reagent/toxin/sulfonal,/datum/reagent/toxin/sodium_thiopental, + /datum/reagent/toxin/cyanide,/datum/reagent/toxin/fentanyl) accepts_reagent_upgrades = FALSE /obj/item/reagent_containers/borghypo/epi name = "Stabilizer injector" desc = "An advanced chemical synthesizer and injection system, designed to stabilize patients." - reagent_ids = list("epinephrine", "insulin") + reagent_ids = list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/insulin) accepts_reagent_upgrades = FALSE diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index 0ee131bc14..c05f4f3e78 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -43,96 +43,96 @@ /obj/item/reagent_containers/glass/bottle/epinephrine name = "epinephrine bottle" desc = "A small bottle. Contains epinephrine - used to stabilize patients." - list_reagents = list("epinephrine" = 30) + list_reagents = list(/datum/reagent/medicine/epinephrine = 30) /obj/item/reagent_containers/glass/bottle/toxin name = "toxin bottle" desc = "A small bottle of toxins. Do not drink, it is poisonous." - list_reagents = list("toxin" = 30) + list_reagents = list(/datum/reagent/toxin = 30) /obj/item/reagent_containers/glass/bottle/cyanide name = "cyanide bottle" desc = "A small bottle of cyanide. Bitter almonds?" - list_reagents = list("cyanide" = 30) + list_reagents = list(/datum/reagent/toxin/cyanide = 30) /obj/item/reagent_containers/glass/bottle/spewium name = "spewium bottle" desc = "A small bottle of spewium." - list_reagents = list("spewium" = 30) + list_reagents = list(/datum/reagent/toxin/spewium = 30) /obj/item/reagent_containers/glass/bottle/morphine name = "morphine bottle" desc = "A small bottle of morphine." icon = 'icons/obj/chemical.dmi' - list_reagents = list("morphine" = 30) + list_reagents = list(/datum/reagent/medicine/morphine = 30) /obj/item/reagent_containers/glass/bottle/chloralhydrate name = "Chloral Hydrate Bottle" desc = "A small bottle of Choral Hydrate. Mickey's Favorite!" icon_state = "bottle20" - list_reagents = list("chloralhydrate" = 15) + list_reagents = list(/datum/reagent/toxin/chloralhydrate = 15) /obj/item/reagent_containers/glass/bottle/charcoal name = "charcoal bottle" desc = "A small bottle of charcoal, which removes toxins and other chemicals from the bloodstream." - list_reagents = list("charcoal" = 30) + list_reagents = list(/datum/reagent/medicine/charcoal = 30) /obj/item/reagent_containers/glass/bottle/cryoxadone name = "cryoxadone bottle" desc = "A small bottle of cryoxadone, heals most types of damage when used in extremely cold enviornments." - list_reagents = list("cryoxadone" = 30) + list_reagents = list(/datum/reagent/medicine/cryoxadone = 30) /obj/item/reagent_containers/glass/bottle/mutagen name = "unstable mutagen bottle" desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact." - list_reagents = list("mutagen" = 30) + list_reagents = list(/datum/reagent/toxin/mutagen = 30) /obj/item/reagent_containers/glass/bottle/plasma name = "liquid plasma bottle" desc = "A small bottle of liquid plasma. Extremely toxic and reacts with micro-organisms inside blood." - list_reagents = list("plasma" = 30) + list_reagents = list(/datum/reagent/toxin/plasma = 30) /obj/item/reagent_containers/glass/bottle/synaptizine name = "synaptizine bottle" desc = "A small bottle of synaptizine." - list_reagents = list("synaptizine" = 30) + list_reagents = list(/datum/reagent/medicine/synaptizine = 30) /obj/item/reagent_containers/glass/bottle/formaldehyde name = "formaldehyde bottle" desc = "A small bottle of formaldehyde." - list_reagents = list("formaldehyde" = 30) + list_reagents = list(/datum/reagent/toxin/formaldehyde = 30) /obj/item/reagent_containers/glass/bottle/ammonia name = "ammonia bottle" desc = "A small bottle of ammonia." - list_reagents = list("ammonia" = 30) + list_reagents = list(/datum/reagent/ammonia = 30) /obj/item/reagent_containers/glass/bottle/diethylamine name = "diethylamine bottle" desc = "A small bottle of diethylamine." - list_reagents = list("diethylamine" = 30) + list_reagents = list(/datum/reagent/diethylamine = 30) /obj/item/reagent_containers/glass/bottle/facid name = "Fluorosulfuric Acid Bottle" desc = "A small bottle. Contains a small amount of fluorosulfuric acid." - list_reagents = list("facid" = 30) + list_reagents = list(/datum/reagent/toxin/acid/fluacid = 30) /obj/item/reagent_containers/glass/bottle/adminordrazine name = "Adminordrazine Bottle" desc = "A small bottle. Contains the liquid essence of the gods." icon = 'icons/obj/drinks.dmi' icon_state = "holyflask" - list_reagents = list("adminordrazine" = 30) + list_reagents = list(/datum/reagent/medicine/adminordrazine = 30) /obj/item/reagent_containers/glass/bottle/capsaicin name = "Capsaicin Bottle" desc = "A small bottle. Contains hot sauce." - list_reagents = list("capsaicin" = 30) + list_reagents = list(/datum/reagent/consumable/capsaicin = 30) /obj/item/reagent_containers/glass/bottle/frostoil name = "Frost Oil Bottle" desc = "A small bottle. Contains cold sauce." - list_reagents = list("frostoil" = 30) + list_reagents = list(/datum/reagent/consumable/frostoil = 30) /obj/item/reagent_containers/glass/bottle/traitor name = "syndicate bottle" @@ -142,94 +142,95 @@ /obj/item/reagent_containers/glass/bottle/traitor/Initialize() . = ..() - extra_reagent = pick("polonium", "histamine", "formaldehyde", "venom", "fentanyl", "cyanide") - reagents.add_reagent("[extra_reagent]", 3) + extra_reagent = pick(/datum/reagent/toxin/polonium, /datum/reagent/toxin/histamine, /datum/reagent/toxin/formaldehyde, + /datum/reagent/toxin/venom, /datum/reagent/toxin/fentanyl, /datum/reagent/toxin/cyanide) + reagents.add_reagent(extra_reagent, 3) /obj/item/reagent_containers/glass/bottle/polonium name = "polonium bottle" desc = "A small bottle. Contains Polonium." - list_reagents = list("polonium" = 30) + list_reagents = list(/datum/reagent/toxin/polonium = 30) /obj/item/reagent_containers/glass/bottle/magillitis name = "magillitis bottle" desc = "A small bottle. Contains a serum known only as 'magillitis'." - list_reagents = list("magillitis" = 5) + list_reagents = list(/datum/reagent/magillitis = 5) /obj/item/reagent_containers/glass/bottle/venom name = "venom bottle" desc = "A small bottle. Contains Venom." - list_reagents = list("venom" = 30) + list_reagents = list(/datum/reagent/toxin/venom = 30) /obj/item/reagent_containers/glass/bottle/fentanyl name = "fentanyl bottle" desc = "A small bottle. Contains Fentanyl." - list_reagents = list("fentanyl" = 30) + list_reagents = list(/datum/reagent/toxin/fentanyl = 30) /obj/item/reagent_containers/glass/bottle/formaldehyde name = "formaldehyde bottle" desc = "A small bottle. Contains Formaldehyde." - list_reagents = list("formaldehyde" = 30) + list_reagents = list(/datum/reagent/toxin/formaldehyde = 30) /obj/item/reagent_containers/glass/bottle/initropidril name = "initropidril bottle" desc = "A small bottle. Contains initropidril." - list_reagents = list("initropidril" = 30) + list_reagents = list(/datum/reagent/toxin/initropidril = 30) /obj/item/reagent_containers/glass/bottle/pancuronium name = "pancuronium bottle" desc = "A small bottle. Contains pancuronium." - list_reagents = list("pancuronium" = 30) + list_reagents = list(/datum/reagent/toxin/pancuronium = 30) /obj/item/reagent_containers/glass/bottle/sodium_thiopental name = "sodium thiopental bottle" desc = "A small bottle. Contains sodium thiopental." - list_reagents = list("sodium_thiopental" = 30) + list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 30) /obj/item/reagent_containers/glass/bottle/coniine name = "coniine bottle" desc = "A small bottle. Contains coniine." - list_reagents = list("coniine" = 30) + list_reagents = list(/datum/reagent/toxin/coniine = 30) /obj/item/reagent_containers/glass/bottle/curare name = "curare bottle" desc = "A small bottle. Contains curare." - list_reagents = list("curare" = 30) + list_reagents = list(/datum/reagent/toxin/curare = 30) /obj/item/reagent_containers/glass/bottle/amanitin name = "amanitin bottle" desc = "A small bottle. Contains amanitin." - list_reagents = list("amanitin" = 30) + list_reagents = list(/datum/reagent/toxin/amanitin = 30) /obj/item/reagent_containers/glass/bottle/histamine name = "histamine bottle" desc = "A small bottle. Contains Histamine." - list_reagents = list("histamine" = 30) + list_reagents = list(/datum/reagent/toxin/histamine = 30) /obj/item/reagent_containers/glass/bottle/diphenhydramine name = "antihistamine bottle" desc = "A small bottle of diphenhydramine." - list_reagents = list("diphenhydramine" = 30) + list_reagents = list(/datum/reagent/medicine/diphenhydramine = 30) /obj/item/reagent_containers/glass/bottle/potass_iodide name = "anti-radiation bottle" desc = "A small bottle of potassium iodide." - list_reagents = list("potass_iodide" = 30) + list_reagents = list(/datum/reagent/medicine/potass_iodide = 30) /obj/item/reagent_containers/glass/bottle/salglu_solution name = "saline-glucose solution bottle" desc = "A small bottle of saline-glucose solution." icon_state = "bottle1" - list_reagents = list("salglu_solution" = 30) + list_reagents = list(/datum/reagent/medicine/salglu_solution = 30) /obj/item/reagent_containers/glass/bottle/atropine name = "atropine bottle" desc = "A small bottle of atropine." - list_reagents = list("atropine" = 30) + list_reagents = list(/datum/reagent/medicine/atropine = 30) /obj/item/reagent_containers/glass/bottle/romerol name = "romerol bottle" desc = "A small bottle of Romerol. The REAL zombie powder." - list_reagents = list("romerol" = 30) + list_reagents = list(/datum/reagent/romerol = 30) /obj/item/reagent_containers/glass/bottle/random_virus name = "Experimental disease culture bottle" @@ -306,128 +307,128 @@ /obj/item/reagent_containers/glass/bottle/tuberculosiscure name = "BVAK bottle" desc = "A small bottle containing Bio Virus Antidote Kit." - list_reagents = list("atropine" = 5, "epinephrine" = 5, "salbutamol" = 10, "spaceacillin" = 10) + list_reagents = list(/datum/reagent/medicine/atropine = 5, /datum/reagent/medicine/epinephrine = 5, /datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/spaceacillin = 10) //Oldstation.dmm chemical storage bottles /obj/item/reagent_containers/glass/bottle/hydrogen name = "hydrogen bottle" - list_reagents = list("hydrogen" = 30) + list_reagents = list(/datum/reagent/hydrogen = 30) /obj/item/reagent_containers/glass/bottle/lithium name = "lithium bottle" - list_reagents = list("lithium" = 30) + list_reagents = list(/datum/reagent/lithium = 30) /obj/item/reagent_containers/glass/bottle/carbon name = "carbon bottle" - list_reagents = list("carbon" = 30) + list_reagents = list(/datum/reagent/carbon = 30) /obj/item/reagent_containers/glass/bottle/nitrogen name = "nitrogen bottle" - list_reagents = list("nitrogen" = 30) + list_reagents = list(/datum/reagent/nitrogen = 30) /obj/item/reagent_containers/glass/bottle/oxygen name = "oxygen bottle" - list_reagents = list("oxygen" = 30) + list_reagents = list(/datum/reagent/oxygen = 30) /obj/item/reagent_containers/glass/bottle/fluorine name = "fluorine bottle" - list_reagents = list("fluorine" = 30) + list_reagents = list(/datum/reagent/fluorine = 30) /obj/item/reagent_containers/glass/bottle/sodium name = "sodium bottle" - list_reagents = list("sodium" = 30) + list_reagents = list(/datum/reagent/sodium = 30) /obj/item/reagent_containers/glass/bottle/aluminium name = "aluminium bottle" - list_reagents = list("aluminium" = 30) + list_reagents = list(/datum/reagent/aluminium = 30) /obj/item/reagent_containers/glass/bottle/silicon name = "silicon bottle" - list_reagents = list("silicon" = 30) + list_reagents = list(/datum/reagent/silicon = 30) /obj/item/reagent_containers/glass/bottle/phosphorus name = "phosphorus bottle" - list_reagents = list("phosphorus" = 30) + list_reagents = list(/datum/reagent/phosphorus = 30) /obj/item/reagent_containers/glass/bottle/sulfur name = "sulfur bottle" - list_reagents = list("sulfur" = 30) + list_reagents = list(/datum/reagent/sulfur = 30) /obj/item/reagent_containers/glass/bottle/chlorine name = "chlorine bottle" - list_reagents = list("chlorine" = 30) + list_reagents = list(/datum/reagent/chlorine = 30) /obj/item/reagent_containers/glass/bottle/potassium name = "potassium bottle" - list_reagents = list("potassium" = 30) + list_reagents = list(/datum/reagent/potassium = 30) /obj/item/reagent_containers/glass/bottle/iron name = "iron bottle" - list_reagents = list("iron" = 30) + list_reagents = list(/datum/reagent/iron = 30) /obj/item/reagent_containers/glass/bottle/copper name = "copper bottle" - list_reagents = list("copper" = 30) + list_reagents = list(/datum/reagent/copper = 30) /obj/item/reagent_containers/glass/bottle/mercury name = "mercury bottle" - list_reagents = list("mercury" = 30) + list_reagents = list(/datum/reagent/mercury = 30) /obj/item/reagent_containers/glass/bottle/radium name = "radium bottle" - list_reagents = list("radium" = 30) + list_reagents = list(/datum/reagent/radium = 30) /obj/item/reagent_containers/glass/bottle/water name = "water bottle" - list_reagents = list("water" = 30) + list_reagents = list(/datum/reagent/water = 30) /obj/item/reagent_containers/glass/bottle/ethanol name = "ethanol bottle" - list_reagents = list("ethanol" = 30) + list_reagents = list(/datum/reagent/consumable/ethanol = 30) /obj/item/reagent_containers/glass/bottle/sugar name = "sugar bottle" - list_reagents = list("sugar" = 30) + list_reagents = list(/datum/reagent/consumable/sugar = 30) /obj/item/reagent_containers/glass/bottle/sacid name = "sulphuric acid bottle" - list_reagents = list("sacid" = 30) + list_reagents = list(/datum/reagent/toxin/acid = 30) /obj/item/reagent_containers/glass/bottle/welding_fuel name = "welding fuel bottle" - list_reagents = list("welding_fuel" = 30) + list_reagents = list(/datum/reagent/fuel = 30) /obj/item/reagent_containers/glass/bottle/silver name = "silver bottle" - list_reagents = list("silver" = 30) + list_reagents = list(/datum/reagent/silver = 30) /obj/item/reagent_containers/glass/bottle/iodine name = "iodine bottle" - list_reagents = list("iodine" = 30) + list_reagents = list(/datum/reagent/iodine = 30) /obj/item/reagent_containers/glass/bottle/bromine name = "bromine bottle" - list_reagents = list("bromine" = 30) + list_reagents = list(/datum/reagent/bromine = 30) //Lewd Stuff /obj/item/reagent_containers/glass/bottle/crocin name = "Crocin bottle" desc = "A bottle of mild aphrodisiac. Increases libido." - list_reagents = list("aphro" = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiac = 30) /obj/item/reagent_containers/glass/bottle/hexacrocin name = "Hexacrocin bottle" desc = "A bottle of strong aphrodisiac. Increases libido." - list_reagents = list("aphro+" = 30) + list_reagents = list(/datum/reagent/drug/aphrodisiacplus = 30) /obj/item/reagent_containers/glass/bottle/camphor name = "Camphor bottle" desc = "A bottle of mild anaphrodisiac. Reduces libido." - list_reagents = list("anaphro" = 30) + list_reagents = list(/datum/reagent/drug/anaphrodisiac = 30) /obj/item/reagent_containers/glass/bottle/hexacamphor name = "Hexacamphor bottle" desc = "A bottle of strong anaphrodisiac. Reduces libido." - list_reagents = list("anaphro+" = 30) \ No newline at end of file + list_reagents = list(/datum/reagent/drug/anaphrodisiacplus = 30) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index efe9c378d9..a215d09517 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -67,7 +67,7 @@ var/R if(reagents) for(var/datum/reagent/A in src.reagents.reagent_list) - R += A.id + " (" + R += A.type + " (" R += num2text(A.volume) + ")," log_combat(user, M, "squirted", R) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 1b213fed0f..98f5111501 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -27,7 +27,7 @@ "[user] splashes the contents of [src] onto [M]!") if(reagents) for(var/datum/reagent/A in reagents.reagent_list) - R += A.id + " (" + R += A.type + " (" R += num2text(A.volume) + ")," if(isturf(target) && reagents.reagent_list.len && thrownby) log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]") @@ -233,32 +233,32 @@ container_HP = 5 /obj/item/reagent_containers/glass/beaker/cryoxadone - list_reagents = list("cryoxadone" = 30) + list_reagents = list(/datum/reagent/medicine/cryoxadone = 30) /obj/item/reagent_containers/glass/beaker/sulphuric - list_reagents = list("sacid" = 50) + list_reagents = list(/datum/reagent/toxin/acid = 50) /obj/item/reagent_containers/glass/beaker/slime - list_reagents = list("slimejelly" = 50) + list_reagents = list(/datum/reagent/toxin/slimejelly = 50) /obj/item/reagent_containers/glass/beaker/large/styptic name = "styptic reserve tank" - list_reagents = list("styptic_powder" = 50) + list_reagents = list(/datum/reagent/medicine/styptic_powder = 50) /obj/item/reagent_containers/glass/beaker/large/silver_sulfadiazine name = "silver sulfadiazine reserve tank" - list_reagents = list("silver_sulfadiazine" = 50) + list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 50) /obj/item/reagent_containers/glass/beaker/large/charcoal name = "charcoal reserve tank" - list_reagents = list("charcoal" = 50) + list_reagents = list(/datum/reagent/medicine/charcoal = 50) /obj/item/reagent_containers/glass/beaker/large/epinephrine name = "epinephrine reserve tank" - list_reagents = list("epinephrine" = 50) + list_reagents = list(/datum/reagent/medicine/epinephrine = 50) /obj/item/reagent_containers/glass/beaker/synthflesh - list_reagents = list("synthflesh" = 50) + list_reagents = list(/datum/reagent/medicine/synthflesh = 50) /obj/item/reagent_containers/glass/bucket name = "bucket" @@ -337,7 +337,7 @@ icon = 'icons/obj/drinks.dmi' icon_state = "smallbottle" item_state = "bottle" - list_reagents = list("water" = 49.5, "fluorine" = 0.5)//see desc, don't think about it too hard + list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard materials = list(MAT_GLASS=0) volume = 50 amount_per_transfer_from_this = 10 @@ -355,7 +355,7 @@ desc = "A fresh commercial-sized bottle of water." icon_state = "largebottle" materials = list(MAT_GLASS=0) - list_reagents = list("water" = 100) + list_reagents = list(/datum/reagent/water = 100) volume = 100 amount_per_transfer_from_this = 20 possible_transfer_amounts = list(5,10,15,20,25,30,50,100) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 9232bb69b3..664ba81f9e 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -51,7 +51,7 @@ log_combat(user, M, "injected", src, "([contained])") /obj/item/reagent_containers/hypospray/CMO - list_reagents = list("omnizine" = 30) + list_reagents = list(/datum/reagent/medicine/omnizine = 30) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF /obj/item/reagent_containers/hypospray/combat @@ -61,17 +61,17 @@ icon_state = "combat_hypo" volume = 100 ignore_flags = 1 // So they can heal their comrades. - list_reagents = list("epinephrine" = 30, "lesser_syndicate_nanites" = 40, "leporazine" = 15, "atropine" = 15) + list_reagents = list(/datum/reagent/medicine/epinephrine = 30, /datum/reagent/medicine/lesser_syndicate_nanites = 40, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/atropine = 15) /obj/item/reagent_containers/hypospray/combat/omnizine // owned idiot desc = "A modified air-needle autoinjector, used by underfunded support operatives to slowly heal injuries in combat and limp away from a fight." volume = 90 - list_reagents = list("epinephrine" = 30, "omnizine" = 30, "leporazine" = 15, "atropine" = 15) + list_reagents = list(/datum/reagent/medicine/epinephrine = 30, /datum/reagent/medicine/omnizine = 30, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/atropine = 15) /obj/item/reagent_containers/hypospray/combat/nanites desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with experimental medical compounds for rapid healing." volume = 100 - list_reagents = list("quantum_heal" = 80, "synaptizine" = 20) + list_reagents = list(/datum/reagent/medicine/adminordrazine/quantum_heal = 80, /datum/reagent/medicine/synaptizine = 20) /obj/item/reagent_containers/hypospray/magillitis name = "experimental autoinjector" @@ -79,7 +79,7 @@ icon_state = "combat_hypo" volume = 5 reagent_flags = NONE - list_reagents = list("magillitis" = 5) + list_reagents = list(/datum/reagent/magillitis = 5) //MediPens @@ -95,7 +95,7 @@ ignore_flags = 1 //so you can medipen through hardsuits reagent_flags = DRAWABLE flags_1 = null - list_reagents = list("epinephrine" = 10) + list_reagents = list(/datum/reagent/medicine/epinephrine = 10) /obj/item/reagent_containers/hypospray/medipen/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to choke on \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -137,7 +137,7 @@ desc = "A highly illegal medipen due to its load and small injections, allow for five uses before being drained" volume = 50 amount_per_transfer_from_this = 10 - list_reagents = list("stimulants" = 50) + list_reagents = list(/datum/reagent/medicine/stimulants = 50) /obj/item/reagent_containers/hypospray/medipen/stimulants/baseball name = "the reason the syndicate major league team wins" @@ -145,7 +145,7 @@ icon_state = "baseballstim" volume = 50 amount_per_transfer_from_this = 50 - list_reagents = list("stimulants" = 50) + list_reagents = list(/datum/reagent/medicine/stimulants = 50) /obj/item/reagent_containers/hypospray/medipen/stimpack //goliath kiting name = "stimpack medipen" @@ -153,16 +153,16 @@ icon_state = "stimpen" volume = 20 amount_per_transfer_from_this = 20 - list_reagents = list("ephedrine" = 10, "coffee" = 10) + list_reagents = list(/datum/reagent/medicine/ephedrine = 10, /datum/reagent/consumable/coffee = 10) /obj/item/reagent_containers/hypospray/medipen/stimpack/traitor desc = "A modified stimulants autoinjector for use in combat situations. Has a mild healing effect." - list_reagents = list("stimulants" = 10, "omnizine" = 10) + list_reagents = list(/datum/reagent/medicine/stimulants = 10, /datum/reagent/medicine/omnizine = 10) /obj/item/reagent_containers/hypospray/medipen/morphine name = "morphine medipen" desc = "A rapid way to get you out of a tight situation and fast! You'll feel rather drowsy, though." - list_reagents = list("morphine" = 10) + list_reagents = list(/datum/reagent/medicine/morphine = 10) /obj/item/reagent_containers/hypospray/medipen/tuberculosiscure name = "BVAK autoinjector" @@ -170,7 +170,7 @@ icon_state = "stimpen" volume = 60 amount_per_transfer_from_this = 30 - list_reagents = list("atropine" = 10, "epinephrine" = 10, "salbutamol" = 20, "spaceacillin" = 20) + list_reagents = list(/datum/reagent/medicine/atropine = 10, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/salbutamol = 20, /datum/reagent/medicine/spaceacillin = 20) /obj/item/reagent_containers/hypospray/medipen/survival name = "survival medipen" @@ -178,28 +178,20 @@ icon_state = "stimpen" volume = 52 amount_per_transfer_from_this = 52 - list_reagents = list("salbutamol" = 10, "leporazine" = 15, "neo_jelly" = 15, "epinephrine" = 10, "lavaland_extract" = 2) - -/obj/item/reagent_containers/hypospray/medipen/species_mutator - name = "species mutator medipen" - desc = "Embark on a whirlwind tour of racial insensitivity by \ - literally appropriating other races." - volume = 1 - amount_per_transfer_from_this = 1 - list_reagents = list("unstablemutationtoxin" = 1) + list_reagents = list(/datum/reagent/medicine/salbutamol = 10, /datum/reagent/medicine/leporazine = 15, /datum/reagent/medicine/neo_jelly = 15, /datum/reagent/medicine/epinephrine = 10, /datum/reagent/medicine/lavaland_extract = 2) /obj/item/reagent_containers/hypospray/medipen/firelocker name = "fire treatment medipen" desc = "A medipen that has been fulled with burn healing chemicals for personnel without advanced medical knowledge." volume = 15 amount_per_transfer_from_this = 15 - list_reagents = list("oxandrolone" = 5, "kelotane" = 10) + list_reagents = list(/datum/reagent/medicine/oxandrolone = 5, /datum/reagent/medicine/kelotane = 10) /obj/item/reagent_containers/hypospray/combat/heresypurge name = "holy water autoinjector" desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with 5 doses of a holy water mixture." volume = 250 - list_reagents = list("holywater" = 150, "tiresolution" = 50, "dizzysolution" = 50) + list_reagents = list(/datum/reagent/water/holywater = 150, /datum/reagent/peaceborg_tire = 50, /datum/reagent/peaceborg_confuse = 50) amount_per_transfer_from_this = 50 #define HYPO_SPRAY 0 @@ -240,19 +232,19 @@ var/penetrates = FALSE /obj/item/hypospray/mkii/brute - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/bicaridine /obj/item/hypospray/mkii/toxin - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/antitoxin /obj/item/hypospray/mkii/oxygen - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/dexalin /obj/item/hypospray/mkii/burn - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/kelotane /obj/item/hypospray/mkii/tricord - start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord + start_vial = /obj/item/reagent_containers/glass/bottle/vial/small/tricord /obj/item/hypospray/mkii/enlarge spawnwithvial = FALSE @@ -263,7 +255,7 @@ icon_state = "cmo2" desc = "The Deluxe Hypospray can take larger-size vials. It also acts faster and delivers more reagents per spray." resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO + start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/CMO inject_wait = DELUXE_WAIT_INJECT spray_wait = DELUXE_WAIT_SPRAY spray_self = DELUXE_SELF_SPRAY @@ -273,7 +265,7 @@ name = "combat hypospray mk.II" desc = "A combat-ready deluxe hypospray that acts almost instantly. It can be tactically reloaded by using a vial on it." icon_state = "combat2" - start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat + start_vial = /obj/item/reagent_containers/glass/bottle/vial/large/combat inject_wait = COMBAT_WAIT_INJECT spray_wait = COMBAT_WAIT_SPRAY spray_self = COMBAT_SELF_SPRAY diff --git a/code/modules/reagents/reagent_containers/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm index 1f83e895bb..c0db92e0e8 100644 --- a/code/modules/reagents/reagent_containers/hypovial.dm +++ b/code/modules/reagents/reagent_containers/hypovial.dm @@ -5,9 +5,9 @@ desc = "A hypovial compatible with most hyposprays." icon_state = "hypovial" spillable = FALSE - var/comes_with = list() //Easy way of doing this. volume = 10 possible_transfer_amounts = list(1,2,5,10) + APTFT_altclick = FALSE obj_flags = UNIQUE_RENAME unique_reskin = list("hypovial" = "hypovial", "red hypovial" = "hypovial-b", @@ -24,8 +24,6 @@ . = ..() if(!icon_state) icon_state = "hypovial" - for(var/R in comes_with) - reagents.add_reagent(R,comes_with[R]) update_icon() // beaker_weakness_bitflag |= PH_WEAK // fuck you if you're using these like beakers // beaker_weakness_bitflag |= TEMP_WEAK @@ -115,87 +113,87 @@ unique_reskin = null -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/bicaridine +/obj/item/reagent_containers/glass/bottle/vial/small/bicaridine name = "red hypovial (bicaridine)" icon_state = "hypovial-b" - comes_with = list("bicaridine" = 30) + list_reagents = list(/datum/reagent/medicine/bicaridine = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/antitoxin +/obj/item/reagent_containers/glass/bottle/vial/small/antitoxin name = "green hypovial (Anti-Tox)" icon_state = "hypovial-a" - comes_with = list("antitoxin" = 30) + list_reagents = list(/datum/reagent/medicine/antitoxin = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/kelotane +/obj/item/reagent_containers/glass/bottle/vial/small/kelotane name = "orange hypovial (kelotane)" icon_state = "hypovial-k" - comes_with = list("kelotane" = 30) + list_reagents = list(/datum/reagent/medicine/kelotane = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/dexalin +/obj/item/reagent_containers/glass/bottle/vial/small/dexalin name = "blue hypovial (dexalin)" icon_state = "hypovial-d" - comes_with = list("dexalin" = 30) + list_reagents = list(/datum/reagent/medicine/dexalin = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/tricord +/obj/item/reagent_containers/glass/bottle/vial/small/tricord name = "hypovial (tricordrazine)" icon_state = "hypovial" - comes_with = list("tricordrazine" = 30) + list_reagents = list(/datum/reagent/medicine/tricordrazine = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/breastreduction +/obj/item/reagent_containers/glass/bottle/vial/small/breastreduction name = "pink hypovial (breast treatment)" icon_state = "hypovial-pink" - comes_with = list("BEsmaller_hypo" = 30) + list_reagents = list(/datum/reagent/fermi/BEsmaller_hypo = 30) -/obj/item/reagent_containers/glass/bottle/vial/small/preloaded/penisreduction +/obj/item/reagent_containers/glass/bottle/vial/small/penisreduction name = "pink hypovial (penis treatment)" icon_state = "hypovial-pink" - comes_with = list("PEsmaller_hypo" = 30) + list_reagents = list(/datum/reagent/fermi/PEsmaller_hypo = 30) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/CMO +/obj/item/reagent_containers/glass/bottle/vial/large/CMO name = "deluxe hypovial" icon_state = "hypoviallarge-cmos" - comes_with = list("omnizine" = 20, "leporazine" = 20, "atropine" = 20) + list_reagents = list(/datum/reagent/medicine/omnizine = 20, /datum/reagent/medicine/leporazine = 20, /datum/reagent/medicine/atropine = 20) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/bicaridine +/obj/item/reagent_containers/glass/bottle/vial/large/bicaridine name = "large red hypovial (bicaridine)" icon_state = "hypoviallarge-b" - comes_with = list("bicaridine" = 60) + list_reagents = list(/datum/reagent/medicine/bicaridine = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/antitoxin +/obj/item/reagent_containers/glass/bottle/vial/large/antitoxin name = "large green hypovial (anti-tox)" icon_state = "hypoviallarge-a" - comes_with = list("antitoxin" = 60) + list_reagents = list(/datum/reagent/medicine/antitoxin = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/kelotane +/obj/item/reagent_containers/glass/bottle/vial/large/kelotane name = "large orange hypovial (kelotane)" icon_state = "hypoviallarge-k" - comes_with = list("kelotane" = 60) + list_reagents = list(/datum/reagent/medicine/kelotane = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/dexalin +/obj/item/reagent_containers/glass/bottle/vial/large/dexalin name = "large blue hypovial (dexalin)" icon_state = "hypoviallarge-d" - comes_with = list("dexalin" = 60) + list_reagents = list(/datum/reagent/medicine/dexalin = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/charcoal +/obj/item/reagent_containers/glass/bottle/vial/large/charcoal name = "large black hypovial (charcoal)" icon_state = "hypoviallarge-t" - comes_with = list("charcoal" = 60) + list_reagents = list(/datum/reagent/medicine/charcoal = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/tricord +/obj/item/reagent_containers/glass/bottle/vial/large/tricord name = "large hypovial (tricord)" icon_state = "hypoviallarge" - comes_with = list("tricordrazine" = 60) + list_reagents = list(/datum/reagent/medicine/tricordrazine = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/salglu +/obj/item/reagent_containers/glass/bottle/vial/large/salglu name = "large green hypovial (salglu)" icon_state = "hypoviallarge-a" - comes_with = list("salglu_solution" = 60) + list_reagents = list(/datum/reagent/medicine/salglu_solution = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/synthflesh +/obj/item/reagent_containers/glass/bottle/vial/large/synthflesh name = "large orange hypovial (synthflesh)" icon_state = "hypoviallarge-k" - comes_with = list("synthflesh" = 60) + list_reagents = list(/datum/reagent/medicine/synthflesh = 60) -/obj/item/reagent_containers/glass/bottle/vial/large/preloaded/combat +/obj/item/reagent_containers/glass/bottle/vial/large/combat name = "combat hypovial" icon_state = "hypoviallarge-t" - comes_with = list("epinephrine" = 3, "omnizine" = 19, "leporazine" = 19, "atropine" = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine + list_reagents = list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/medicine/omnizine = 19, /datum/reagent/medicine/leporazine = 19, /datum/reagent/medicine/atropine = 19) //Epinephrine's main effect here is to kill suff damage, so we don't need much given atropine diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm index b445c38ad9..02a3f987bc 100644 --- a/code/modules/reagents/reagent_containers/medspray.dm +++ b/code/modules/reagents/reagent_containers/medspray.dm @@ -82,26 +82,26 @@ name = "medical spray (styptic powder)" desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains styptic powder, for treating cuts and bruises." icon_state = "brutespray" - list_reagents = list("styptic_powder" = 60) + list_reagents = list(/datum/reagent/medicine/styptic_powder = 60) /obj/item/reagent_containers/medspray/silver_sulf name = "medical spray (silver sulfadiazine)" desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains silver sulfadiazine, useful for treating burns." icon_state = "burnspray" - list_reagents = list("silver_sulfadiazine" = 60) + list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 60) /obj/item/reagent_containers/medspray/synthflesh name = "medical spray (synthflesh)" desc = "A medical spray bottle, designed for precision application, with an unscrewable cap. This one contains synthflesh, an apex brute and burn healing agent." icon_state = "synthspray" - list_reagents = list("synthflesh" = 60) + list_reagents = list(/datum/reagent/medicine/synthflesh = 60) /obj/item/reagent_containers/medspray/sterilizine name = "sterilizer spray" desc = "Spray bottle loaded with non-toxic sterilizer. Useful in preparation for surgery." - list_reagents = list("sterilizine" = 60) + list_reagents = list(/datum/reagent/space_cleaner/sterilizine = 60) /obj/item/reagent_containers/medspray/synthtissue name = "Synthtissue young culture spray" desc = "Spray bottle loaded with synthtissue. Useful in synthtissue grafting surgeries." - list_reagents = list("synthtissue" = 60) + list_reagents = list(/datum/reagent/synthtissue = 60) diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm index 02852f2218..1e23f46d9f 100644 --- a/code/modules/reagents/reagent_containers/patch.dm +++ b/code/modules/reagents/reagent_containers/patch.dm @@ -32,13 +32,13 @@ /obj/item/reagent_containers/pill/patch/styptic name = "brute patch" desc = "Helps with brute injuries." - list_reagents = list("styptic_powder" = 20) + list_reagents = list(/datum/reagent/medicine/styptic_powder = 20) icon_state = "bandaid_brute" /obj/item/reagent_containers/pill/patch/silver_sulf name = "burn patch" desc = "Helps with burn injuries." - list_reagents = list("silver_sulfadiazine" = 20) + list_reagents = list(/datum/reagent/medicine/silver_sulfadiazine = 20) icon_state = "bandaid_burn" /obj/item/reagent_containers/pill/patch/get_belt_overlay() diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index d4880aa085..e6fa18ba9c 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -82,97 +82,97 @@ name = "toxins pill" desc = "Highly toxic." icon_state = "pill5" - list_reagents = list("toxin" = 50) + list_reagents = list(/datum/reagent/toxin = 50) roundstart = 1 /obj/item/reagent_containers/pill/cyanide name = "cyanide pill" desc = "Don't swallow this." icon_state = "pill5" - list_reagents = list("cyanide" = 50) + list_reagents = list(/datum/reagent/toxin/cyanide = 50) roundstart = 1 /obj/item/reagent_containers/pill/adminordrazine name = "adminordrazine pill" desc = "It's magic. We don't have to explain it." icon_state = "pill16" - list_reagents = list("adminordrazine" = 50) + list_reagents = list(/datum/reagent/medicine/adminordrazine = 50) roundstart = 1 /obj/item/reagent_containers/pill/morphine name = "morphine pill" desc = "Commonly used to treat insomnia." icon_state = "pill8" - list_reagents = list("morphine" = 30) + list_reagents = list(/datum/reagent/medicine/morphine = 30) roundstart = 1 /obj/item/reagent_containers/pill/stimulant name = "stimulant pill" desc = "Often taken by overworked employees, athletes, and the inebriated. You'll snap to attention immediately!" icon_state = "pill19" - list_reagents = list("ephedrine" = 10, "antihol" = 10, "coffee" = 30) + list_reagents = list(/datum/reagent/medicine/ephedrine = 10, /datum/reagent/medicine/antihol = 10, /datum/reagent/consumable/coffee = 30) roundstart = 1 /obj/item/reagent_containers/pill/salbutamol name = "salbutamol pill" desc = "Used to treat oxygen deprivation." icon_state = "pill16" - list_reagents = list("salbutamol" = 30) + list_reagents = list(/datum/reagent/medicine/salbutamol = 30) roundstart = 1 /obj/item/reagent_containers/pill/charcoal name = "charcoal pill" desc = "Neutralizes many common toxins." icon_state = "pill17" - list_reagents = list("charcoal" = 10) + list_reagents = list(/datum/reagent/medicine/charcoal = 10) roundstart = 1 /obj/item/reagent_containers/pill/epinephrine name = "epinephrine pill" desc = "Used to stabilize patients." icon_state = "pill5" - list_reagents = list("epinephrine" = 15) + list_reagents = list(/datum/reagent/medicine/epinephrine = 15) roundstart = 1 /obj/item/reagent_containers/pill/mannitol name = "mannitol pill" desc = "Used to treat brain damage." icon_state = "pill17" - list_reagents = list("mannitol" = 50) + list_reagents = list(/datum/reagent/medicine/mannitol = 50) roundstart = 1 /obj/item/reagent_containers/pill/mutadone name = "mutadone pill" desc = "Used to treat genetic damage." icon_state = "pill20" - list_reagents = list("mutadone" = 50) + list_reagents = list(/datum/reagent/medicine/mutadone = 50) roundstart = 1 /obj/item/reagent_containers/pill/salicyclic name = "salicylic acid pill" desc = "Used to dull pain." icon_state = "pill9" - list_reagents = list("sal_acid" = 24) + list_reagents = list(/datum/reagent/medicine/sal_acid = 24) roundstart = 1 /obj/item/reagent_containers/pill/oxandrolone name = "oxandrolone pill" desc = "Used to stimulate burn healing." icon_state = "pill11" - list_reagents = list("oxandrolone" = 24) + list_reagents = list(/datum/reagent/medicine/oxandrolone = 24) roundstart = 1 /obj/item/reagent_containers/pill/insulin name = "insulin pill" desc = "Handles hyperglycaemic coma." icon_state = "pill18" - list_reagents = list("insulin" = 50) + list_reagents = list(/datum/reagent/medicine/insulin = 50) roundstart = 1 /obj/item/reagent_containers/pill/psicodine name = "psicodine pill" desc = "Used to treat mental instability and traumas." - list_reagents = list("psicodine" = 10) + list_reagents = list(/datum/reagent/medicine/psicodine = 10) icon_state = "pill22" roundstart = 1 @@ -180,21 +180,21 @@ name = "potassium iodide pill" desc = "Used to treat radition used to counter radiation poisoning." icon_state = "pill18" - list_reagents = list("potass_iodide" = 50) + list_reagents = list(/datum/reagent/medicine/potass_iodide = 50) roundstart = 1 /obj/item/reagent_containers/pill/antirad_plus name = "prussian blue pill" desc = "Used to treat heavy radition poisoning." icon_state = "prussian_blue" - list_reagents = list("prussian_blue" = 25, "water" = 10) + list_reagents = list(/datum/reagent/medicine/prussian_blue = 25, /datum/reagent/water = 10) roundstart = 1 /obj/item/reagent_containers/pill/mutarad name = "radiation treatment deluxe pill" desc = "Used to treat heavy radition poisoning and genetic defects." icon_state = "anit_rad_fixgene" - list_reagents = list("prussian_blue" = 15, "potass_iodide" = 15, "mutadone" = 15, "water" = 5) + list_reagents = list(/datum/reagent/medicine/prussian_blue = 15, /datum/reagent/medicine/potass_iodide = 15, /datum/reagent/medicine/mutadone = 15, /datum/reagent/water = 5) roundstart = 1 ///////////////////////////////////////// this pill is used only in a legion mob drop @@ -203,32 +203,32 @@ desc = "I wouldn't eat this if I were you." icon_state = "pill9" color = "#454545" - list_reagents = list("shadowmutationtoxin" = 1) + list_reagents = list(/datum/reagent/mutationtoxin/shadow = 1) //////////////////////////////////////// drugs /obj/item/reagent_containers/pill/zoom name = "zoom pill" - list_reagents = list("synaptizine" = 10, "nicotine" = 10, "methamphetamine" = 1) + list_reagents = list(/datum/reagent/medicine/synaptizine = 10, /datum/reagent/drug/nicotine = 10, /datum/reagent/drug/methamphetamine = 1) /obj/item/reagent_containers/pill/happy name = "happy pill" - list_reagents = list("sugar" = 10, "space_drugs" = 10) + list_reagents = list(/datum/reagent/consumable/sugar = 10, /datum/reagent/drug/space_drugs = 10) /obj/item/reagent_containers/pill/lsd name = "hallucinogen pill" - list_reagents = list("mushroomhallucinogen" = 15, "mindbreaker" = 15) + list_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 15, /datum/reagent/toxin/mindbreaker = 15) /obj/item/reagent_containers/pill/aranesp name = "speedy pill" - list_reagents = list("aranesp" = 10) + list_reagents = list(/datum/reagent/drug/aranesp = 10) /obj/item/reagent_containers/pill/happiness name = "happiness pill" desc = "It has a creepy smiling face on it." icon_state = "pill_happy" - list_reagents = list("happiness" = 10) + list_reagents = list(/datum/reagent/drug/happiness = 10) /obj/item/reagent_containers/pill/floorpill name = "floorpill" @@ -250,8 +250,8 @@ /obj/item/reagent_containers/pill/penis_enlargement name = "penis enlargement pill" - list_reagents = list("penis_enlarger" = 10) + list_reagents = list(/datum/reagent/fermi/penis_enlarger = 10) /obj/item/reagent_containers/pill/breast_enlargement name = "breast enlargement pill" - list_reagents = list("breast_enlarger" = 10) + list_reagents = list(/datum/reagent/fermi/breast_enlarger = 10) diff --git a/code/modules/reagents/reagent_containers/rags.dm b/code/modules/reagents/reagent_containers/rags.dm index d09b18f244..812b3144e9 100644 --- a/code/modules/reagents/reagent_containers/rags.dm +++ b/code/modules/reagents/reagent_containers/rags.dm @@ -8,6 +8,7 @@ reagent_flags = REFILLABLE | DRAINABLE amount_per_transfer_from_this = 5 possible_transfer_amounts = list() + APTFT_altclick = FALSE volume = 5 spillable = FALSE var/wipe_sound @@ -73,9 +74,9 @@ if(M.fire_stacks) var/minus_plus = M.fire_stacks < 0 ? 1 : -1 var/amount = min(abs(M.fire_stacks), soak_efficiency) - var/r_id = "fuel" + var/r_id = /datum/reagent/fuel if(M.fire_stacks < 0) - r_id = "water" + r_id = /datum/reagent/water reagents.add_reagent(r_id, amount * 0.3) M.adjust_fire_stacks(minus_plus * amount) M.wash_cream() diff --git a/code/modules/reagents/reagent_containers/sleeper_buffer.dm b/code/modules/reagents/reagent_containers/sleeper_buffer.dm index 044dab2924..d353174c06 100644 --- a/code/modules/reagents/reagent_containers/sleeper_buffer.dm +++ b/code/modules/reagents/reagent_containers/sleeper_buffer.dm @@ -8,4 +8,4 @@ spillable = TRUE resistance_flags = ACID_PROOF amount_per_transfer_from_this = 0 - possible_transfer_amounts = list(0) + possible_transfer_amounts = list() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index ddbc6cf92b..ad8eb871e1 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -52,13 +52,13 @@ user.changeNext_move(CLICK_CD_RANGE*2) user.newtonian_move(get_dir(A, user)) var/turf/T = get_turf(src) - if(reagents.has_reagent("sacid")) + if(reagents.has_reagent(/datum/reagent/toxin/acid)) message_admins("[ADMIN_LOOKUPFLW(user)] fired sulphuric acid from \a [src] at [ADMIN_VERBOSEJMP(T)].") log_game("[key_name(user)] fired sulphuric acid from \a [src] at [AREACOORD(T)].") - if(reagents.has_reagent("facid")) + if(reagents.has_reagent(/datum/reagent/toxin/acid/fluacid)) message_admins("[ADMIN_LOOKUPFLW(user)] fired Fluacid from \a [src] at [ADMIN_VERBOSEJMP(T)].") log_game("[key_name(user)] fired Fluacid from \a [src] at [AREACOORD(T)].") - if(reagents.has_reagent("lube")) + if(reagents.has_reagent(/datum/reagent/lube)) message_admins("[ADMIN_LOOKUPFLW(user)] fired Space lube from \a [src] at [ADMIN_VERBOSEJMP(T)].") log_game("[key_name(user)] fired Space lube from \a [src] at [AREACOORD(T)].") return @@ -149,7 +149,7 @@ name = "space cleaner" desc = "BLAM!-brand non-foaming space cleaner!" volume = 100 - list_reagents = list("cleaner" = 100) + list_reagents = list(/datum/reagent/space_cleaner = 100) amount_per_transfer_from_this = 2 stream_amount = 5 @@ -172,7 +172,7 @@ name = "drying agent spray" desc = "A spray bottle for drying agent." volume = 100 - list_reagents = list("drying_agent" = 100) + list_reagents = list(/datum/reagent/drying_agent = 100) amount_per_transfer_from_this = 2 stream_amount = 5 @@ -181,7 +181,7 @@ name = "spray tan" volume = 50 desc = "Gyaro brand spray tan. Do not spray near eyes or other orifices." - list_reagents = list("spraytan" = 50) + list_reagents = list(/datum/reagent/spraytan = 50) //pepperspray @@ -197,7 +197,7 @@ stream_range = 4 spray_delay = 1 amount_per_transfer_from_this = 5 - list_reagents = list("condensedcapsaicin" = 40) + list_reagents = list(/datum/reagent/consumable/condensedcapsaicin = 40) /obj/item/reagent_containers/spray/pepper/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins huffing \the [src]! It looks like [user.p_theyre()] getting a dirty high!") @@ -218,7 +218,7 @@ item_state = "sunflower" amount_per_transfer_from_this = 1 volume = 10 - list_reagents = list("water" = 10) + list_reagents = list(/datum/reagent/water = 10) /obj/item/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays return @@ -230,14 +230,14 @@ icon = 'icons/obj/chemical.dmi' icon_state = "clownflower" volume = 30 - list_reagents = list("superlube" = 30) + list_reagents = list(/datum/reagent/lube/superlube = 30) /obj/item/reagent_containers/spray/waterflower/cyborg reagent_flags = NONE volume = 100 - list_reagents = list("water" = 100) + list_reagents = list(/datum/reagent/water = 100) var/generate_amount = 5 - var/generate_type = "water" + var/generate_type = /datum/reagent/water var/last_generate = 0 var/generate_delay = 10 //deciseconds can_fill_from_container = FALSE @@ -245,9 +245,9 @@ /obj/item/reagent_containers/spray/waterflower/cyborg/hacked name = "nova flower" desc = "This doesn't look safe at all..." - list_reagents = list("clf3" = 3) + list_reagents = list(/datum/reagent/clf3 = 3) volume = 3 - generate_type = "clf3" + generate_type = /datum/reagent/clf3 generate_amount = 1 generate_delay = 40 //deciseconds @@ -309,7 +309,7 @@ ..(the_targets[i]) /obj/item/reagent_containers/spray/chemsprayer/bioterror - list_reagents = list("sodium_thiopental" = 100, "coniine" = 100, "venom" = 100, "condensedcapsaicin" = 100, "initropidril" = 100, "polonium" = 100) + list_reagents = list(/datum/reagent/toxin/sodium_thiopental = 100, /datum/reagent/toxin/coniine = 100, /datum/reagent/toxin/venom = 100, /datum/reagent/consumable/condensedcapsaicin = 100, /datum/reagent/toxin/initropidril = 100, /datum/reagent/toxin/polonium = 100) // Plant-B-Gone /obj/item/reagent_containers/spray/plantbgone // -- Skie @@ -321,4 +321,4 @@ lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' volume = 100 - list_reagents = list("plantbgone" = 100) + list_reagents = list(/datum/reagent/toxin/plantbgone = 100) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 6bdae6225a..7fafbc319c 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -179,39 +179,39 @@ /obj/item/reagent_containers/syringe/epinephrine name = "syringe (epinephrine)" desc = "Contains epinephrine - used to stabilize patients." - list_reagents = list("epinephrine" = 15) + list_reagents = list(/datum/reagent/medicine/epinephrine = 15) /obj/item/reagent_containers/syringe/charcoal name = "syringe (charcoal)" desc = "Contains charcoal." - list_reagents = list("charcoal" = 15) + list_reagents = list(/datum/reagent/medicine/charcoal = 15) /obj/item/reagent_containers/syringe/antiviral name = "syringe (spaceacillin)" desc = "Contains antiviral agents." - list_reagents = list("spaceacillin" = 15) + list_reagents = list(/datum/reagent/medicine/spaceacillin = 15) /obj/item/reagent_containers/syringe/bioterror name = "bioterror syringe" desc = "Contains several paralyzing reagents." - list_reagents = list("neurotoxin" = 5, "mutetoxin" = 5, "sodium_thiopental" = 5) + list_reagents = list(/datum/reagent/consumable/ethanol/neurotoxin = 5, /datum/reagent/toxin/mutetoxin = 5, /datum/reagent/toxin/sodium_thiopental = 5) /obj/item/reagent_containers/syringe/stimulants name = "Stimpack" desc = "Contains stimulants." amount_per_transfer_from_this = 50 volume = 50 - list_reagents = list("stimulants" = 50) + list_reagents = list(/datum/reagent/medicine/stimulants = 50) /obj/item/reagent_containers/syringe/calomel name = "syringe (calomel)" desc = "Contains calomel." - list_reagents = list("calomel" = 15) + list_reagents = list(/datum/reagent/medicine/calomel = 15) /obj/item/reagent_containers/syringe/plasma name = "syringe (plasma)" desc = "Contains plasma." - list_reagents = list("plasma" = 15) + list_reagents = list(/datum/reagent/toxin/plasma = 15) /obj/item/reagent_containers/syringe/lethal name = "lethal injection syringe" @@ -220,24 +220,24 @@ volume = 50 /obj/item/reagent_containers/syringe/lethal/choral - list_reagents = list("chloralhydrate" = 50) + list_reagents = list(/datum/reagent/toxin/chloralhydrate = 50) /obj/item/reagent_containers/syringe/lethal/execution - list_reagents = list("amatoxin" = 15, "formaldehyde" = 15, "cyanide" = 10, "facid" = 10) //Citadel edit, changing out plasma from lethals + list_reagents = list(/datum/reagent/toxin/amatoxin = 15, /datum/reagent/toxin/formaldehyde = 15, /datum/reagent/toxin/cyanide = 10, /datum/reagent/toxin/acid/fluacid = 10) //Citadel edit, changing out plasma from lethals /obj/item/reagent_containers/syringe/mulligan name = "Mulligan" desc = "A syringe used to completely change the users identity." amount_per_transfer_from_this = 1 volume = 1 - list_reagents = list("mulligan" = 1) + list_reagents = list(/datum/reagent/mulligan = 1) /obj/item/reagent_containers/syringe/gluttony name = "Gluttony's Blessing" desc = "A syringe recovered from a dread place. It probably isn't wise to use." amount_per_transfer_from_this = 1 volume = 1 - list_reagents = list("gluttonytoxin" = 1) + list_reagents = list(/datum/reagent/gluttonytoxin = 1) /obj/item/reagent_containers/syringe/bluespace name = "bluespace syringe" diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 0964b67490..e9f8053631 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -8,7 +8,7 @@ pressure_resistance = 2*ONE_ATMOSPHERE max_integrity = 300 var/tank_volume = 1000 //In units, how much the dispenser can hold - var/reagent_id = "water" //The ID of the reagent that the dispenser uses + var/reagent_id = /datum/reagent/water //The ID of the reagent that the dispenser uses /obj/structure/reagent_dispensers/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) . = ..() @@ -58,7 +58,7 @@ name = "firefighting foam tank" desc = "A tank full of firefighting foam." icon_state = "foam" - reagent_id = "firefighting_foam" + reagent_id = /datum/reagent/firefighting_foam tank_volume = 500 /obj/structure/reagent_dispensers/water_cooler @@ -99,7 +99,7 @@ name = "fuel tank" desc = "A tank full of industrial welding fuel. Do not consume." icon_state = "fuel" - reagent_id = "welding_fuel" + reagent_id = /datum/reagent/fuel /obj/structure/reagent_dispensers/fueltank/high //Unused - Good for ghost roles name = "high-capacity fuel tank" @@ -136,12 +136,12 @@ /obj/structure/reagent_dispensers/fueltank/attackby(obj/item/I, mob/living/user, params) if(istype(I, /obj/item/weldingtool)) - if(!reagents.has_reagent("welding_fuel")) + if(!reagents.has_reagent(/datum/reagent/fuel)) to_chat(user, "[src] is out of fuel!") return var/obj/item/weldingtool/W = I if(!W.welding) - if(W.reagents.has_reagent("welding_fuel", W.max_fuel)) + if(W.reagents.has_reagent(/datum/reagent/fuel, W.max_fuel)) to_chat(user, "Your [W.name] is already full!") return reagents.trans_to(W, W.max_fuel) @@ -171,7 +171,7 @@ icon_state = "pepper" anchored = TRUE density = FALSE - reagent_id = "condensedcapsaicin" + reagent_id = /datum/reagent/consumable/condensedcapsaicin /obj/structure/reagent_dispensers/peppertank/Initialize() . = ..() @@ -184,14 +184,14 @@ icon_state = "virus_food" anchored = TRUE density = FALSE - reagent_id = "virusfood" + reagent_id = /datum/reagent/toxin/mutagen/mutagenvirusfood /obj/structure/reagent_dispensers/cooking_oil name = "vat of cooking oil" desc = "A huge metal vat with a tap on the front. Filled with cooking oil for use in frying food." icon_state = "vat" anchored = TRUE - reagent_id = "cooking_oil" + reagent_id = /datum/reagent/consumable/cooking_oil //////// //Kegs// @@ -201,7 +201,7 @@ name = "beer keg" desc = "Beer is liquid bread, it's good for you..." icon_state = "beer" - reagent_id = "beer" + reagent_id = /datum/reagent/consumable/ethanol/beer /obj/structure/reagent_dispensers/beerkeg/blob_act(obj/structure/blob/B) explosion(src.loc,0,3,5,7,10) @@ -213,42 +213,41 @@ desc = "A keg." icon = 'modular_citadel/icons/obj/objects.dmi' icon_state = "keg" - reagent_id = "water" /obj/structure/reagent_dispensers/keg/mead name = "keg of mead" desc = "A keg of mead." icon_state = "orangekeg" - reagent_id = "mead" + reagent_id = /datum/reagent/consumable/ethanol/mead /obj/structure/reagent_dispensers/keg/aphro name = "keg of aphrodisiac" desc = "A keg of aphrodisiac." icon_state = "pinkkeg" - reagent_id = "aphro" + reagent_id = /datum/reagent/drug/aphrodisiac tank_volume = 150 /obj/structure/reagent_dispensers/keg/aphro/strong name = "keg of strong aphrodisiac" desc = "A keg of strong and addictive aphrodisiac." - reagent_id = "aphro+" + reagent_id = /datum/reagent/drug/aphrodisiacplus tank_volume = 120 /obj/structure/reagent_dispensers/keg/milk name = "keg of milk" desc = "It's not quite what you were hoping for." icon_state = "whitekeg" - reagent_id = "milk" + reagent_id = /datum/reagent/consumable/milk /obj/structure/reagent_dispensers/keg/semen name = "keg of semen" desc = "Dear lord, where did this even come from?" icon_state = "whitekeg" - reagent_id = "semen" + reagent_id = /datum/reagent/consumable/semen /obj/structure/reagent_dispensers/keg/gargle name = "keg of pan galactic gargleblaster" desc = "A keg of... wow that's a long name." icon_state = "bluekeg" - reagent_id = "gargleblaster" + reagent_id = /datum/reagent/consumable/ethanol/gargle_blaster tank_volume = 100 \ No newline at end of file diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index cdb9ea4120..516ae5bddd 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -37,9 +37,9 @@ other types of metals and chemistry for reagents). var/list/materials = list() //List of materials. Format: "id" = amount. var/construction_time //Amount of time required for building the object var/build_path = null //The file path of the object that gets created - var/list/make_reagents = list() //Reagents produced. Format: "id" = amount. Currently only supported by the biogenerator. + var/list/make_reagents = list() //Reagents produced. Format: type = amount. Currently only supported by the biogenerator. var/list/category = null //Primarily used for Mech Fabricators, but can be used for anything - var/list/reagents_list = list() //List of reagents. Format: "id" = amount. + var/list/reagents_list = list() //List of reagents. Format: type = amount. var/maxstack = 1 var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe var/dangerous_construction = FALSE //notify and log for admin investigations if this is printed. diff --git a/code/modules/research/designs/autobotter_designs.dm b/code/modules/research/designs/autobotter_designs.dm index 7b56beaf77..d2a38a29f9 100644 --- a/code/modules/research/designs/autobotter_designs.dm +++ b/code/modules/research/designs/autobotter_designs.dm @@ -151,97 +151,97 @@ name = "Export Design (Wine)" desc = "Allows for the blowing, and bottling of Wine bottles." id = "wine_export" - reagents_list = list("wine" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/wine = 100) build_path = /obj/item/export/bottle/wine /datum/design/bottle/export/rum name = "Export Design (Rum)" desc = "Allows for the blowing, and bottling of Rum bottles." id = "rum_export" - reagents_list = list("rum" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/rum = 100) build_path = /obj/item/export/bottle/rum /datum/design/bottle/export/gin name = "Export Design (Gin)" desc = "Allows for the blowing, and bottling of Gin bottles." id = "gin_export" - reagents_list = list("gin" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/gin = 100) build_path = /obj/item/export/bottle/gin /datum/design/bottle/export/whiskey name = "Export Design (Whiskey)" desc = "Allows for the blowing, and bottling of Whiskey bottles." id = "whiskey_export" - reagents_list = list("whiskey" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/whiskey = 100) build_path = /obj/item/export/bottle/whiskey /datum/design/bottle/export/vodka name = "Export Design (Vodka)" desc = "Allows for the blowing, and bottling of 99% Vodka bottles." id = "vodka_export" - reagents_list = list("vodka" = 99, "water" = 1) + reagents_list = list(/datum/reagent/consumable/ethanol/vodka = 99, /datum/reagent/water = 1) build_path = /obj/item/export/bottle/vodka /datum/design/bottle/export/tequila name = "Export Design (Tequila)" desc = "Allows for the blowing, and bottling of Tequila bottles." id = "tequila_export" - reagents_list = list("tequila" = 80, "lemon_juice" = 20) + reagents_list = list(/datum/reagent/consumable/ethanol/tequila = 80, /datum/reagent/consumable/lemonjuice = 20) build_path = /obj/item/export/bottle/tequila /datum/design/bottle/export/patron name = "Export Design (Patron)" desc = "Allows for the blowing, and bottling of Patron bottles." id = "patron_export" - reagents_list = list("patron" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/patron = 100) build_path = /obj/item/export/bottle/patron /datum/design/bottle/export/kahlua name = "Export Design (Kahlua)" desc = "Allows for the blowing, and bottling of Kahlua bottles." id = "kahlua_export" - reagents_list = list("kahlua" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/kahlua = 100) build_path = /obj/item/export/bottle/kahlua /datum/design/bottle/export/sake name = "Export Design (Sake)" desc = "Allows for the blowing, and bottling of Sake bottles." id = "sake_export" - reagents_list = list("sake" = 80, "rice" = 10, "sugar" = 10) + reagents_list = list(/datum/reagent/consumable/ethanol/sake = 80, /datum/reagent/consumable/rice = 10, /datum/reagent/consumable/sugar = 10) build_path = /obj/item/export/bottle/sake /datum/design/bottle/export/vermouth name = "Export Design (Vermouth)" desc = "Allows for the blowing, and bottling of Vermouth bottles." id = "vermouth_export" - reagents_list = list("vermouth" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/vermouth = 100) build_path = /obj/item/export/bottle/vermouth /datum/design/bottle/export/goldschlager name = "Export Design (Goldschlager)" desc = "Allows for the blowing, and bottling of Goldschlager bottles." id = "goldschlager_export" - reagents_list = list("goldschlager" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/goldschlager = 100) build_path = /obj/item/export/bottle/goldschlager /datum/design/bottle/export/hcider name = "Export Design (Cider)" desc = "Allows for the blowing, and bottling of Cider bottles." id = "hcider_export" - reagents_list = list("hcider" = 30, "water" = 20) + reagents_list = list(/datum/reagent/consumable/ethanol/hcider = 30, /datum/reagent/water = 20) build_path = /obj/item/export/bottle/hcider /datum/design/bottle/export/cognac name = "Export Design (Cognac)" desc = "Allows for the blowing, and bottling of Cognac bottles." id = "cognac_export" - reagents_list = list("cognac" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/cognac = 100) build_path = /obj/item/export/bottle/cognac /datum/design/bottle/export/absinthe name = "Export Design (Absinthe)" desc = "Allows for the blowing, and bottling of Absinthe bottles." - reagents_list = list("absinthe" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/absinthe = 100) id = "absinthe_export" build_path = /obj/item/export/bottle/absinthe @@ -249,49 +249,49 @@ name = "Export Design (Grappa)" desc = "Allows for the blowing, and bottling of Grappa bottles." id = "grappa_export" - reagents_list = list("grappa" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/grappa = 100) build_path = /obj/item/export/bottle/grappa /datum/design/bottle/export/fernet name = "Export Design (Fernet)" desc = "Allows for the blowing, and bottling of Fernet bottles." id = "fernet_export" - reagents_list = list("fernet" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/fernet = 100) build_path = /obj/item/export/bottle/fernet /datum/design/bottle/export/applejack name = "Export Design (Applejack)" desc = "Allows for the blowing, and bottling of Applejack bottles." id = "applejack_export" - reagents_list = list("applejack" = 50, "gin" = 10) + reagents_list = list(/datum/reagent/consumable/ethanol/applejack = 50, /datum/reagent/consumable/ethanol/gin = 10) build_path = /obj/item/export/bottle/applejack /datum/design/bottle/export/champagne name = "Export Design (Champagne)" desc = "Allows for the blowing, and bottling of Champagne bottles." id = "champagne_export" - reagents_list = list("champagne" = 90, "co2" = 10) + reagents_list = list(/datum/reagent/consumable/ethanol/champagne = 90, /datum/reagent/carbondioxide = 10) build_path = /obj/item/export/bottle/champagne /datum/design/bottle/export/blazaam name = "Export Design (Blazaam)" desc = "Allows for the blowing, and bottling of Blazaam bottles." id = "blazaam_export" - reagents_list = list("blazaam" = 80, "holywater" = 20) + reagents_list = list(/datum/reagent/consumable/ethanol/blazaam = 80, /datum/reagent/water/holywater = 20) build_path = /obj/item/export/bottle/blazaam /datum/design/bottle/export/trappist name = "Export Design (Trappist)" desc = "Allows for the blowing, and bottling of Trappist bottles." id = "trappist_export" - reagents_list = list("trappist" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/trappist = 100) build_path = /obj/item/export/bottle/trappist /datum/design/bottle/export/grenadine name = "Export Design (Grenadine)" desc = "Allows for the blowing, and bottling of Grenadine bottles." id = "grenadine_export" - reagents_list = list("grenadine" = 100) + reagents_list = list(/datum/reagent/consumable/grenadine = 100) build_path = /obj/item/export/bottle/grenadine /datum/design/bottle/export/minikeg @@ -299,7 +299,7 @@ desc = "Allows for the fabication, and bottling of Minikeg of craft beer." id = "minikeg" category = list("Beers") - reagents_list = list("light_beer" = 100) + reagents_list = list(/datum/reagent/consumable/ethanol/beer/light = 100) build_path = /obj/item/export/bottle/minikeg /datum/design/bottle/export/blooddrop @@ -307,7 +307,7 @@ desc = "Allows for the blowing, and bottling of Blooddrop bottles." id = "blooddrop" category = list("Wines") - reagents_list = list("champagne" = 30, "co2" = 30, "wine" = 10, "grape_juice" = 30) + reagents_list = list(/datum/reagent/consumable/ethanol/champagne = 30, /datum/reagent/carbondioxide = 30, /datum/reagent/consumable/ethanol/wine = 10, /datum/reagent/consumable/grapejuice = 30) build_path = /obj/item/export/bottle/blooddrop /datum/design/bottle/export/slim_gold @@ -315,7 +315,7 @@ desc = "Allows for the blowing, and bottling of Slim Gold bottles." id = "slim_gold" category = list("Beers") - reagents_list = list("gold" = 10, "co2" = 10, "rum" = 30, "beer" = 40) + reagents_list = list(/datum/reagent/gold = 10, /datum/reagent/carbondioxide = 10, /datum/reagent/consumable/ethanol/rum = 30, /datum/reagent/consumable/ethanol/beer = 40) build_path = /obj/item/export/bottle/slim_gold /datum/design/bottle/export/white_bloodmoon @@ -323,13 +323,13 @@ desc = "Allows for the blowing, and bottling of White Bloodmoon bottles." id = "white_bloodmoon" category = list("Wines") - reagents_list = list("synthflesh" = 50, "blood" = 50, "gib" = 10) + reagents_list = list(/datum/reagent/medicine/synthflesh = 50, /datum/reagent/blood = 50, /datum/reagent/liquidgibs = 10) build_path = /obj/item/export/bottle/white_bloodmoon /datum/design/bottle/export/greenroad name = "Export Design (Greenroad)" desc = "Allows for the blowing, and bottling of Greenroad bottles." id = "greenroad" - reagents_list = list("vitfro" = 50, "rum" = 50, "ash" = 10) + reagents_list = list(/datum/reagent/consumable/vitfro = 50, /datum/reagent/consumable/ethanol/rum = 50, /datum/reagent/ash = 10) category = list("Beers") build_path = /obj/item/export/bottle/greenroad \ No newline at end of file diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index 2be4d106b6..dd55697bee 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -7,7 +7,7 @@ id = "milk" build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 20) - make_reagents = list("milk" = 10) + make_reagents = list(/datum/reagent/consumable/milk = 10) category = list("initial","Food") /datum/design/cream @@ -15,7 +15,7 @@ id = "cream" build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 30) - make_reagents = list("cream" = 10) + make_reagents = list(/datum/reagent/consumable/cream = 10) category = list("initial","Food") /datum/design/milk_carton @@ -39,7 +39,7 @@ id = "black_pepper" build_type = BIOGENERATOR materials = list(MAT_BIOMASS = 25) - make_reagents = list("blackpepper" = 10) + make_reagents = list(/datum/reagent/consumable/blackpepper = 10) category = list("initial","Food") /datum/design/pepper_mill diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm index dae59408c8..d002c84c5f 100644 --- a/code/modules/research/designs/limbgrower_designs.dm +++ b/code/modules/research/designs/limbgrower_designs.dm @@ -6,7 +6,7 @@ name = "Left Arm" id = "leftarm" build_type = LIMBGROWER - reagents_list = list("synthflesh" = 25) + reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/l_arm category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno") @@ -14,7 +14,7 @@ name = "Right Arm" id = "rightarm" build_type = LIMBGROWER - reagents_list = list("synthflesh" = 25) + reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/r_arm category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno") @@ -22,7 +22,7 @@ name = "Left Leg" id = "leftleg" build_type = LIMBGROWER - reagents_list = list("synthflesh" = 25) + reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/l_leg category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno") @@ -30,7 +30,7 @@ name = "Right Leg" id = "rightleg" build_type = LIMBGROWER - reagents_list = list("synthflesh" = 25) + reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/r_leg category = list("initial","human","lizard","fly","insect","plasmaman","mammal","xeno") @@ -38,6 +38,6 @@ name = "Arm Blade" id = "armblade" build_type = LIMBGROWER - reagents_list = list("synthflesh" = 75) + reagents_list = list(/datum/reagent/medicine/synthflesh = 75) build_path = /obj/item/melee/synthetic_arm_blade category = list("other","emagged") \ No newline at end of file diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 113a6262c9..5fab7705a8 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -624,12 +624,21 @@ construction_time = 120 category = list("Cyborg Upgrade Modules") -/datum/design/borg_upgrade_holding - name = "Cyborg Upgrade (Ore Satchel of Holding)" - id = "borg_upgrade_holding" +/datum/design/borg_upgrade_advcutter + name = "Cyborg Upgrade (Advanced Plasma Cutter)" + id = "borg_upgrade_advcutter" build_type = MECHFAB - build_path = /obj/item/borg/upgrade/soh - materials = list(MAT_METAL = 10000, MAT_GOLD = 250, MAT_URANIUM = 500) + build_path = /obj/item/borg/upgrade/advcutter + materials = list(MAT_METAL=8000, MAT_PLASMA=2000, MAT_GOLD= 2000) + construction_time = 120 + category = list("Cyborg Upgrade Modules") + +/datum/design/borg_upgrade_premiumka + name = "Cyborg Upgrade (Premium Kinetic Accelerator)" + id = "borg_upgrade_premiumka" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/premiumka + materials = list(MAT_METAL=8000, MAT_GLASS=4000, MAT_TITANIUM=2000) construction_time = 120 category = list("Cyborg Upgrade Modules") diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index fde795d87c..e6f4670f87 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -237,7 +237,7 @@ id = "decloner" build_type = PROTOLATHE materials = list(MAT_GOLD = 5000,MAT_URANIUM = 10000) - reagents_list = list("mutagen" = 40) + reagents_list = list(/datum/reagent/toxin/mutagen = 40) build_path = /obj/item/gun/energy/decloner category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -268,7 +268,7 @@ id = "flora_gun" build_type = PROTOLATHE materials = list(MAT_METAL = 2000, MAT_GLASS = 500) - reagents_list = list("radium" = 20) + reagents_list = list(/datum/reagent/radium = 20) build_path = /obj/item/gun/energy/floragun category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_SCIENCE diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 05c4a7cd93..b25ee9bb2d 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -271,7 +271,7 @@ if(!T.density) if(prob(EFFECT_PROB_VERYHIGH) && !(locate(/obj/effect/decal/cleanable/greenglow) in T)) var/obj/effect/decal/cleanable/reagentdecal = new/obj/effect/decal/cleanable/greenglow(T) - reagentdecal.reagents.add_reagent("radium", 7) + reagentdecal.reagents.add_reagent(/datum/reagent/radium, 7) else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) var/savedName = "[exp_on]" ejectItem(TRUE) @@ -291,7 +291,9 @@ new /obj/item/stack/sheet/mineral/plasma(get_turf(pick(oview(1,src)))) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src] destroys [exp_on], leaking dangerous gas!") - chosenchem = pick("carbon","radium","toxin","condensedcapsaicin","mushroomhallucinogen","space_drugs","ethanol","beepskysmash") + chosenchem = pick(/datum/reagent/carbon,/datum/reagent/radium,/datum/reagent/toxin, + /datum/reagent/consumable/condensedcapsaicin,/datum/reagent/drug/mushroomhallucinogen, + /datum/reagent/drug/space_drugs,/datum/reagent/consumable/ethanol,/datum/reagent/consumable/ethanol/beepsky_smash) var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) @@ -304,7 +306,7 @@ ejectItem(TRUE) else if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src]'s chemical chamber has sprung a leak!") - chosenchem = pick("mutationtoxin","nanomachines","sacid") + chosenchem = pick(/datum/reagent/mutationtoxin,/datum/reagent/nanomachines,/datum/reagent/toxin/acid) var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) @@ -331,7 +333,7 @@ visible_message("[src]'s emergency coolant system gives off a small ding!") playsound(src, 'sound/machines/ding.ogg', 50, 1) var/obj/item/reagent_containers/food/drinks/coffee/C = new /obj/item/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src)))) - chosenchem = pick("plasma","capsaicin","ethanol") + chosenchem = pick(/datum/reagent/toxin/plasma,/datum/reagent/consumable/capsaicin,/datum/reagent/consumable/ethanol) C.reagents.remove_any(25) C.reagents.add_reagent(chosenchem , 50) C.name = "Cup of Suspicious Liquid" @@ -380,7 +382,7 @@ visible_message("[src]'s emergency coolant system gives off a small ding!") var/obj/item/reagent_containers/food/drinks/coffee/C = new /obj/item/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src)))) playsound(src, 'sound/machines/ding.ogg', 50, 1) //Ding! Your death coffee is ready! - chosenchem = pick("uranium","frostoil","ephedrine") + chosenchem = pick(/datum/reagent/uranium,/datum/reagent/consumable/frostoil,/datum/reagent/medicine/ephedrine) C.reagents.remove_any(25) C.reagents.add_reagent(chosenchem , 50) C.name = "Cup of Suspicious Liquid" @@ -390,7 +392,7 @@ visible_message("[src] malfunctions, shattering [exp_on] and releasing a dangerous cloud of coolant!") var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src - R.add_reagent("frostoil" , 50) + R.add_reagent(/datum/reagent/consumable/frostoil, 50) investigate_log("Experimentor has released frostoil gas.", INVESTIGATE_EXPERIMENTOR) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 0, src, silent = TRUE) diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 78f636d948..9ba45fb1a3 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -222,7 +222,7 @@ l += "

    Chemical Storage:

    " for(var/datum/reagent/R in reagents.reagent_list) l += "[R.name]: [R.volume]" - l += "Purge" + l += "Purge" l += "
" return l diff --git a/code/modules/research/nanites/nanite_programs/buffing.dm b/code/modules/research/nanites/nanite_programs/buffing.dm index be12d06ede..dde61ec378 100644 --- a/code/modules/research/nanites/nanite_programs/buffing.dm +++ b/code/modules/research/nanites/nanite_programs/buffing.dm @@ -35,7 +35,7 @@ host_mob.adjustStaminaLoss(-10) //stimulants give stamina heal now host_mob.lying = 0 host_mob.update_canmove() - host_mob.reagents.add_reagent("stimulants", 1.5) + host_mob.reagents.add_reagent(/datum/reagent/medicine/stimulants, 1.5) /datum/nanite_program/hardening name = "Dermal Hardening" diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm index e2e1661ab7..ad48b64baa 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -61,10 +61,10 @@ /datum/nanite_program/purging/active_effect() host_mob.adjustToxLoss(-1) for(var/datum/reagent/R in host_mob.reagents.reagent_list) - if(R.id == "nanite_b_gone") + if(R.type == /datum/reagent/fermi/nanite_b_gone) host_mob.adjustToxLoss(4) continue - host_mob.reagents.remove_reagent(R.id,1) + host_mob.reagents.remove_reagent(R.type,1) /datum/nanite_program/brain_heal name = "Neural Regeneration" @@ -164,7 +164,7 @@ /datum/nanite_program/purging_advanced/active_effect() host_mob.adjustToxLoss(-1, forced = TRUE) for(var/datum/reagent/toxin/R in host_mob.reagents.reagent_list) - host_mob.reagents.remove_reagent(R.id,1) + host_mob.reagents.remove_reagent(R.type,1) /datum/nanite_program/regenerative_advanced name = "Bio-Reconstruction" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 38a5282aef..6cd54dd941 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -394,7 +394,7 @@ Nothing else in the console has ID requirements. l += "

Chemical Storage:

" for(var/datum/reagent/R in linked_lathe.reagents.reagent_list) l += "[R.name]: [R.volume]" - l += "Purge" + l += "Purge" l += "" return l @@ -497,7 +497,7 @@ Nothing else in the console has ID requirements. l += "

Chemical Storage:

" for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list) l += "[R.name]: [R.volume]" - l += "Purge" + l += "Purge" return l /obj/machinery/computer/rdconsole/proc/ui_circuit_materials() //Legacy code! diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index af4148d194..a44495fccb 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -365,7 +365,7 @@ display_name = "Advanced Robotics Research" description = "It can even do the dishes!" prereq_ids = list("robotics") - design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_advancedmop") + design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_advancedmop", "borg_upgrade_advcutter", "borg_upgrade_premiumka") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000) export_price = 5000 @@ -391,7 +391,7 @@ display_name = "Cyborg Upgrades: Utility" description = "Utility upgrades for cyborgs." prereq_ids = list("engineering", "robotics") - design_ids = list("borg_upgrade_holding", "borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand", "borg_upgrade_rped") + design_ids = list("borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand", "borg_upgrade_rped") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) export_price = 5000 diff --git a/code/modules/research/xenobiology/crossbreeding/__corecross.dm b/code/modules/research/xenobiology/crossbreeding/__corecross.dm index 1146f01f0b..17a6b77bfe 100644 --- a/code/modules/research/xenobiology/crossbreeding/__corecross.dm +++ b/code/modules/research/xenobiology/crossbreeding/__corecross.dm @@ -114,19 +114,19 @@ To add a crossbreed: name = "blood extract" desc = "A sphere of liquid blood, somehow managing to stay together." color = "#FF0000" - list_reagents = list("blood" = 50) + list_reagents = list(/datum/reagent/blood = 50) /obj/item/slimecrossbeaker/pax //5u synthpax. name = "peace-inducing extract" desc = "A small blob of synthetic pax." color = "#FFCCCC" - list_reagents = list("synthpax" = 5) + list_reagents = list(/datum/reagent/pax/peaceborg = 5) /obj/item/slimecrossbeaker/omnizine //15u omnizine. name = "healing extract" desc = "A gelatinous extract of pure omnizine." color = "#FF00FF" - list_reagents = list("omnizine" = 15) + list_reagents = list(/datum/reagent/medicine/omnizine = 15) /obj/item/slimecrossbeaker/autoinjector //As with the above, but automatically injects whomever it is used on with contents. var/ignore_flags = FALSE @@ -160,7 +160,7 @@ To add a crossbreed: name = "mending solution" desc = "A strange glob of sweet-smelling semifluid, which seems to stick to skin rather easily." color = "#FF00FF" - list_reagents = list("regen_jelly" = 20) + list_reagents = list(/datum/reagent/medicine/regen_jelly = 20) /obj/item/slimecrossbeaker/autoinjector/slimejelly //Primarily for slimepeople, but you do you. self_use_only = TRUE @@ -168,13 +168,13 @@ To add a crossbreed: name = "slime jelly bubble" desc = "A sphere of slime jelly. It seems to stick to your skin, but avoids other surfaces." color = "#00FF00" - list_reagents = list("slimejelly" = 50) + list_reagents = list(/datum/reagent/toxin/slimejelly = 50) /obj/item/slimecrossbeaker/autoinjector/peaceandlove name = "peaceful distillation" desc = "A light pink gooey sphere. Simply touching it makes you a little dizzy." color = "#DDAAAA" - list_reagents = list("synthpax" = 10, "space_drugs" = 15) //Peace, dudes + list_reagents = list(/datum/reagent/pax/peaceborg = 10, /datum/reagent/drug/space_drugs = 15) //Peace, dudes /obj/item/slimecrossbeaker/autoinjector/peaceandlove/Initialize() . = ..() @@ -184,4 +184,4 @@ To add a crossbreed: name = "invigorating gel" desc = "A bubbling purple mixture, designed to heal and boost movement." color = "#FF00FF" - list_reagents = list("regen_jelly" = 30, "methamphetamine" = 9) + list_reagents = list(/datum/reagent/medicine/regen_jelly = 30, /datum/reagent/drug/methamphetamine = 9) diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index 0099fe143d..4684352ef5 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -50,7 +50,7 @@ filling_color = "#964B00" tastes = list("cardboard" = 3, "sadness" = 3) foodtype = null //Don't ask what went into them. You're better off not knowing. - list_reagents = list("stabilizednutriment" = 10, "nutriment" = 2) //Won't make you fat. Will make you question your sanity. + list_reagents = list(/datum/reagent/consumable/nutriment/stabilized = 10, /datum/reagent/consumable/nutriment = 2) //Won't make you fat. Will make you question your sanity. /obj/item/reagent_containers/food/snacks/rationpack/checkLiked(fraction, mob/M) //Nobody likes rationpacks. Nobody. if(last_check_time + 50 < world.time) diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 292aba6c05..0838e70bfd 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -910,9 +910,9 @@ datum/status_effect/stabilized/blue/on_remove() /datum/status_effect/stabilized/lightpink/tick() owner.adjustStaminaLoss(-4.5) for(var/mob/living/carbon/human/H in range(1, get_turf(owner))) - if(H != owner && H.stat != DEAD && H.health <= 0 && !H.reagents.has_reagent("epinephrine")) + if(H != owner && H.stat != DEAD && H.health <= 0 && !H.reagents.has_reagent(/datum/reagent/medicine/epinephrine)) to_chat(owner, "[linked_extract] pulses in sync with [H]'s heartbeat, trying to keep [H.p_them()] alive.") - H.reagents.add_reagent("epinephrine",5) + H.reagents.add_reagent(/datum/reagent/medicine/epinephrine,5) return ..() /datum/status_effect/stabilized/lightpink/on_remove() diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index 363331e12d..e5b30962ae 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -14,10 +14,10 @@ Burning extracts: create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/burning/attack_self(mob/user) - if(!reagents.has_reagent("plasma",10)) + if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10)) to_chat(user, "This extract needs to be full of plasma to activate!") return - reagents.remove_reagent("plasma",10) + reagents.remove_reagent(/datum/reagent/toxin/plasma,10) to_chat(user, "You squeeze the extract, and it absorbs the plasma!") playsound(src, 'sound/effects/bubbles.ogg', 50, 1) playsound(src, 'sound/magic/fireball.ogg', 50, 1) @@ -44,7 +44,7 @@ Burning extracts: /obj/item/slimecross/burning/orange/do_effect(mob/user) user.visible_message("[src] boils over with a caustic gas!") var/datum/reagents/R = new/datum/reagents(100) - R.add_reagent("condensedcapsaicin", 100) + R.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 100) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 7, get_turf(user)) @@ -113,8 +113,8 @@ Burning extracts: /obj/item/slimecross/burning/darkblue/do_effect(mob/user) user.visible_message("[src] releases a burst of chilling smoke!") var/datum/reagents/R = new/datum/reagents(100) - R.add_reagent("frostoil", 40) - user.reagents.add_reagent("cryoxadone",10) + R.add_reagent(/datum/reagent/consumable/frostoil, 40) + user.reagents.add_reagent(/datum/reagent/medicine/cryoxadone,10) var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 7, get_turf(user)) smoke.start() @@ -131,7 +131,7 @@ Burning extracts: for(var/i = 0, i < amount, i++) var/path = get_random_food() var/obj/item/O = new path(pick(turfs)) - O.reagents.add_reagent("slimejelly",5) //Oh god it burns + O.reagents.add_reagent(/datum/reagent/toxin/slimejelly, 5) //Oh god it burns if(prob(50)) O.desc += " It smells strange..." user.visible_message("[src] produces a few pieces of food!") @@ -268,7 +268,7 @@ Burning extracts: /obj/item/slimecross/burning/lightpink/do_effect(mob/user) user.visible_message("[src] lets off a hypnotizing pink glow!") for(var/mob/living/carbon/C in view(7, get_turf(user))) - C.reagents.add_reagent("pax",5) + C.reagents.add_reagent(/datum/reagent/pax, 5) ..() /obj/item/slimecross/burning/adamantine diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm index 7b5fe9e8b8..75a15be9ce 100644 --- a/code/modules/research/xenobiology/crossbreeding/charged.dm +++ b/code/modules/research/xenobiology/crossbreeding/charged.dm @@ -15,10 +15,10 @@ Charged extracts: create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/charged/attack_self(mob/user) - if(!reagents.has_reagent("plasma",10)) + if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10)) to_chat(user, "This extract needs to be full of plasma to activate!") return - reagents.remove_reagent("plasma",10) + reagents.remove_reagent(/datum/reagent/toxin/plasma,10) to_chat(user, "You squeeze the extract, and it absorbs the plasma!") playsound(src, 'sound/effects/bubbles.ogg', 50, 1) playsound(src, 'sound/effects/light_flicker.ogg', 50, 1) diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm index ff55a87dfa..1405bbad51 100644 --- a/code/modules/research/xenobiology/crossbreeding/chilling.dm +++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm @@ -14,10 +14,10 @@ Chilling extracts: create_reagents(10, INJECTABLE | DRAWABLE) /obj/item/slimecross/chilling/attack_self(mob/user) - if(!reagents.has_reagent("plasma",10)) + if(!reagents.has_reagent(/datum/reagent/toxin/plasma,10)) to_chat(user, "This extract needs to be full of plasma to activate!") return - reagents.remove_reagent("plasma",10) + reagents.remove_reagent(/datum/reagent/toxin/plasma,10) to_chat(user, "You squeeze the extract, and it absorbs the plasma!") playsound(src, 'sound/effects/bubbles.ogg', 50, 1) playsound(src, 'sound/effects/glassbr1.ogg', 50, 1) @@ -56,7 +56,7 @@ Chilling extracts: return user.visible_message("[src] shatters, and a healing aura fills the room briefly.") for(var/mob/living/carbon/C in A) - C.reagents.add_reagent("regen_jelly",10) + C.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10) ..() /obj/item/slimecross/chilling/blue diff --git a/code/modules/research/xenobiology/crossbreeding/consuming.dm b/code/modules/research/xenobiology/crossbreeding/consuming.dm index d6536f4fdd..0e8bf1e11f 100644 --- a/code/modules/research/xenobiology/crossbreeding/consuming.dm +++ b/code/modules/research/xenobiology/crossbreeding/consuming.dm @@ -20,7 +20,7 @@ Consuming extracts: if(last_produced + cooldown > world.time) to_chat(user, "[src] is still digesting after its last meal!") return - var/datum/reagent/N = O.reagents.has_reagent("nutriment") + var/datum/reagent/N = O.reagents.has_reagent(/datum/reagent/consumable/nutriment) if(N) nutriment_eaten += N.volume to_chat(user, "[src] opens up and swallows [O] whole!") @@ -73,7 +73,7 @@ Consuming extracts: to_chat(M, "Tastes like [taste].") playsound(get_turf(M), 'sound/items/eatfood.ogg', 20, 1) if(nutrition) - M.reagents.add_reagent("nutriment",nutrition) + M.reagents.add_reagent(/datum/reagent/consumable/nutriment,nutrition) do_effect(M, user) qdel(src) return @@ -199,7 +199,7 @@ Consuming extracts: nutrition = 0 //We don't want normal nutriment /obj/item/slime_cookie/silver/do_effect(mob/living/M, mob/user) - M.reagents.add_reagent("stabilizednutriment",10) + M.reagents.add_reagent(/datum/reagent/consumable/nutriment/stabilized, 10) /obj/item/slimecross/consuming/bluespace colour = "bluespace" diff --git a/code/modules/research/xenobiology/crossbreeding/industrial.dm b/code/modules/research/xenobiology/crossbreeding/industrial.dm index a21fddb6cf..bec2c2c1ae 100644 --- a/code/modules/research/xenobiology/crossbreeding/industrial.dm +++ b/code/modules/research/xenobiology/crossbreeding/industrial.dm @@ -30,13 +30,13 @@ Industrial extracts: /obj/item/slimecross/industrial/process() var/IsWorking = FALSE - if(reagents.has_reagent("plasma",amount = 2) && plasmarequired > 1) //Can absorb as much as 2 + if(reagents.has_reagent(/datum/reagent/toxin/plasma,amount = 2) && plasmarequired > 1) //Can absorb as much as 2 IsWorking = TRUE - reagents.remove_reagent("plasma",2) + reagents.remove_reagent(/datum/reagent/toxin/plasma,2) plasmaabsorbed += 2 - else if(reagents.has_reagent("plasma",amount = 1)) //Can absorb as little as 1 + else if(reagents.has_reagent(/datum/reagent/toxin/plasma,amount = 1)) //Can absorb as little as 1 IsWorking = TRUE - reagents.remove_reagent("plasma",1) + reagents.remove_reagent(/datum/reagent/toxin/plasma,1) plasmaabsorbed += 1 if(plasmaabsorbed >= plasmarequired) diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm index 6c7ea102bc..55865d1ae2 100644 --- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm +++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm @@ -51,7 +51,7 @@ Regenerative extracts: colour = "purple" /obj/item/slimecross/regenerative/purple/core_effect(mob/living/target, mob/user) - target.reagents.add_reagent("regen_jelly",10) + target.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10) /obj/item/slimecross/regenerative/blue colour = "blue" @@ -174,7 +174,7 @@ Regenerative extracts: /obj/item/slimecross/regenerative/red/core_effect(mob/living/target, mob/user) to_chat(target, "You feel... faster.") - target.reagents.add_reagent("ephedrine",3) + target.reagents.add_reagent(/datum/reagent/medicine/ephedrine,3) /obj/item/slimecross/regenerative/green colour = "green" @@ -185,7 +185,7 @@ Regenerative extracts: var/mob/living/simple_animal/slime/S = target S.random_colour() if(isjellyperson(target)) - target.reagents.add_reagent("slime_toxin",5) + target.reagents.add_reagent(/datum/reagent/slime_toxin,5) /obj/item/slimecross/regenerative/pink @@ -193,7 +193,7 @@ Regenerative extracts: /obj/item/slimecross/regenerative/pink/core_effect(mob/living/target, mob/user) to_chat(target, "You feel more calm.") - target.reagents.add_reagent("krokodil",4) + target.reagents.add_reagent(/datum/reagent/drug/krokodil,4) /obj/item/slimecross/regenerative/gold colour = "gold" diff --git a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm index a86db788a6..72b4158be6 100644 --- a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm +++ b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm @@ -38,10 +38,10 @@ Self-sustaining extracts: return if(reagentselect == "lesser plasma") amount = 4 - reagentselect = "plasma" + reagentselect = /datum/reagent/toxin/plasma if(reagentselect == "holy water and uranium") - reagentselect = "holywater" - secondary = "uranium" + reagentselect = /datum/reagent/water/holywater + secondary = /datum/reagent/uranium extract.forceMove(user.drop_location()) qdel(src) user.put_in_active_hand(extract) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index ab0db8c4a7..8eecf1f635 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -42,7 +42,7 @@ /obj/item/slime_extract/on_grind() if(Uses) - grind_results["slimejelly"] = 20 + grind_results[/datum/reagent/toxin/slimejelly] = 20 //Effect when activated by a Luminescent. Separated into a minor and major effect. Returns cooldown in deciseconds. /obj/item/slime_extract/proc/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) @@ -78,7 +78,7 @@ name = "grey slime extract" icon_state = "grey slime extract" effectmod = "reproductive" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/grey/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -103,7 +103,7 @@ name = "gold slime extract" icon_state = "gold slime extract" effectmod = "symbiont" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/gold/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -132,7 +132,7 @@ name = "silver slime extract" icon_state = "silver slime extract" effectmod = "consuming" - activate_reagents = list("plasma","water") + activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/silver/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -157,7 +157,7 @@ name = "metal slime extract" icon_state = "metal slime extract" effectmod = "industrial" - activate_reagents = list("plasma","water") + activate_reagents = list(/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/metal/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -181,7 +181,7 @@ name = "purple slime extract" icon_state = "purple slime extract" effectmod = "regenerative" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma) /obj/item/slime_extract/purple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -193,14 +193,14 @@ if(SLIME_ACTIVATE_MAJOR) to_chat(user, "You activate [src], and it releases regenerative chemicals!") - user.reagents.add_reagent("regen_jelly",10) + user.reagents.add_reagent(/datum/reagent/medicine/regen_jelly,10) return 600 /obj/item/slime_extract/darkpurple name = "dark purple slime extract" icon_state = "dark purple slime extract" effectmod = "self-sustaining" - activate_reagents = list("plasma") + activate_reagents = list(/datum/reagent/toxin/plasma) /obj/item/slime_extract/darkpurple/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -223,19 +223,19 @@ name = "orange slime extract" icon_state = "orange slime extract" effectmod = "burning" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/orange/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) to_chat(user, "You activate [src]. You start feeling hot!") - user.reagents.add_reagent("capsaicin",10) + user.reagents.add_reagent(/datum/reagent/consumable/capsaicin,10) return 150 if(SLIME_ACTIVATE_MAJOR) - user.reagents.add_reagent("phosphorus",5)// - user.reagents.add_reagent("potassium",5) // = smoke, along with any reagents inside mr. slime - user.reagents.add_reagent("sugar",5) // + user.reagents.add_reagent(/datum/reagent/phosphorus,5) + user.reagents.add_reagent(/datum/reagent/potassium,5) // = smoke, along with any reagents inside mr. slime + user.reagents.add_reagent(/datum/reagent/consumable/sugar,5) to_chat(user, "You activate [src], and a cloud of smoke bursts out of your skin!") return 450 @@ -243,7 +243,7 @@ name = "yellow slime extract" icon_state = "yellow slime extract" effectmod = "charged" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/yellow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -266,13 +266,13 @@ name = "red slime extract" icon_state = "red slime extract" effectmod = "sanguine" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood,/datum/reagent/toxin/plasma,/datum/reagent/water) /obj/item/slime_extract/red/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) to_chat(user, "You activate [src]. You start feeling fast!") - user.reagents.add_reagent("ephedrine",5) + user.reagents.add_reagent(/datum/reagent/medicine/ephedrine,5) return 450 if(SLIME_ACTIVATE_MAJOR) @@ -286,15 +286,15 @@ name = "blue slime extract" icon_state = "blue slime extract" effectmod = "stabilized" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma, /datum/reagent/water) /obj/item/slime_extract/blue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) to_chat(user, "You activate [src]. Your genome feels more stable!") user.adjustCloneLoss(-15) - user.reagents.add_reagent("mutadone", 10) - user.reagents.add_reagent("potass_iodide", 10) + user.reagents.add_reagent(/datum/reagent/medicine/mutadone, 10) + user.reagents.add_reagent(/datum/reagent/medicine/potass_iodide, 10) return 250 if(SLIME_ACTIVATE_MAJOR) @@ -310,7 +310,7 @@ name = "dark blue slime extract" icon_state = "dark blue slime extract" effectmod = "chilling" - activate_reagents = list("plasma","water") + activate_reagents = list(/datum/reagent/toxin/plasma, /datum/reagent/water) /obj/item/slime_extract/darkblue/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -318,8 +318,8 @@ to_chat(user, "You activate [src]. You start feeling colder!") user.ExtinguishMob() user.adjust_fire_stacks(-20) - user.reagents.add_reagent("frostoil",4) - user.reagents.add_reagent("cryoxadone",5) + user.reagents.add_reagent(/datum/reagent/consumable/frostoil,4) + user.reagents.add_reagent(/datum/reagent/medicine/cryoxadone,5) return 100 if(SLIME_ACTIVATE_MAJOR) @@ -333,7 +333,7 @@ name = "pink slime extract" icon_state = "pink slime extract" effectmod = "gentle" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma) /obj/item/slime_extract/pink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -354,14 +354,14 @@ user.visible_message("[user]'s skin starts flashing hypnotically...", "Your skin starts forming odd patterns, pacifying creatures around you.") for(var/mob/living/carbon/C in viewers(user, null)) if(C != user) - C.reagents.add_reagent("pax",2) + C.reagents.add_reagent(/datum/reagent/pax,2) return 600 /obj/item/slime_extract/green name = "green slime extract" icon_state = "green slime extract" effectmod = "mutative" - activate_reagents = list("blood","plasma","radium") + activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma, /datum/reagent/radium) /obj/item/slime_extract/green/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -385,7 +385,7 @@ name = "light pink slime extract" icon_state = "light pink slime extract" effectmod = "loyal" - activate_reagents = list("plasma") + activate_reagents = list(/datum/reagent/toxin/plasma) /obj/item/slime_extract/lightpink/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -409,7 +409,7 @@ name = "black slime extract" icon_state = "black slime extract" effectmod = "transformative" - activate_reagents = list("plasma") + activate_reagents = list(/datum/reagent/toxin/plasma) /obj/item/slime_extract/black/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -430,7 +430,7 @@ name = "oil slime extract" icon_state = "oil slime extract" effectmod = "detonating" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma) /obj/item/slime_extract/oil/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -453,7 +453,7 @@ name = "adamantine slime extract" icon_state = "adamantine slime extract" effectmod = "crystalline" - activate_reagents = list("plasma") + activate_reagents = list(/datum/reagent/toxin/plasma) /obj/item/slime_extract/adamantine/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -482,7 +482,7 @@ name = "bluespace slime extract" icon_state = "bluespace slime extract" effectmod = "warping" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma) var/teleport_ready = FALSE var/teleport_x = 0 var/teleport_y = 0 @@ -518,7 +518,7 @@ name = "pyrite slime extract" icon_state = "pyrite slime extract" effectmod = "prismatic" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma) /obj/item/slime_extract/pyrite/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -545,12 +545,12 @@ name = "cerulean slime extract" icon_state = "cerulean slime extract" effectmod = "recurring" - activate_reagents = list("blood","plasma") + activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma) /obj/item/slime_extract/cerulean/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) if(SLIME_ACTIVATE_MINOR) - user.reagents.add_reagent("salbutamol",15) + user.reagents.add_reagent(/datum/reagent/medicine/salbutamol,15) to_chat(user, "You feel like you don't need to breathe!") return 150 @@ -565,7 +565,7 @@ name = "sepia slime extract" icon_state = "sepia slime extract" effectmod = "lengthened" - activate_reagents = list("blood","plasma","water") + activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma, /datum/reagent/water) /obj/item/slime_extract/sepia/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) @@ -587,7 +587,7 @@ name = "rainbow slime extract" icon_state = "rainbow slime extract" effectmod = "hyperchromatic" - activate_reagents = list("blood","plasma","lesser plasma","slimejelly","holy water and uranium") //Curse this snowflake reagent list. + activate_reagents = list(/datum/reagent/blood, /datum/reagent/toxin/plasma,"lesser plasma", /datum/reagent/toxin/slimejelly,"holy water and uranium") //Curse this snowflake reagent list. /obj/item/slime_extract/rainbow/activate(mob/living/carbon/human/user, datum/species/jelly/luminescent/species, activation_type) switch(activation_type) diff --git a/code/modules/ruins/lavalandruin_code/alien_nest.dm b/code/modules/ruins/lavalandruin_code/alien_nest.dm index ca33324a90..d98a6bf5c1 100644 --- a/code/modules/ruins/lavalandruin_code/alien_nest.dm +++ b/code/modules/ruins/lavalandruin_code/alien_nest.dm @@ -16,4 +16,4 @@ desc = "A syringe filled with a strange viscous liquid. It might be best to leave it alone." amount_per_transfer_from_this = 1 volume = 1 - list_reagents = list("xenomicrobes" = 1) + list_reagents = list(/datum/reagent/xenomicrobes = 1) diff --git a/code/modules/surgery/advanced/necrotic_revival.dm b/code/modules/surgery/advanced/necrotic_revival.dm index f8fb160a8a..d95d0a3ac7 100644 --- a/code/modules/surgery/advanced/necrotic_revival.dm +++ b/code/modules/surgery/advanced/necrotic_revival.dm @@ -19,7 +19,7 @@ implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) implements = list(/obj/item/reagent_containers/syringe = 100, /obj/item/pen = 30) time = 50 - chems_needed = list("zombiepowder", "rezadone") + chems_needed = list(/datum/reagent/toxin/zombiepowder, /datum/reagent/medicine/rezadone) require_all_chems = FALSE /datum/surgery_step/bionecrosis/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/advanced/viral_bonding.dm b/code/modules/surgery/advanced/viral_bonding.dm index 87e6a8a99f..86832602e8 100644 --- a/code/modules/surgery/advanced/viral_bonding.dm +++ b/code/modules/surgery/advanced/viral_bonding.dm @@ -20,7 +20,7 @@ name = "viral bond" implements = list(TOOL_CAUTERY = 100, TOOL_WELDER = 50, /obj/item = 30) // 30% success with any hot item. time = 100 - chems_needed = list("spaceacillin","virusfood","formaldehyde") + chems_needed = list(/datum/reagent/medicine/spaceacillin, /datum/reagent/consumable/virus_food,/datum/reagent/toxin/formaldehyde) /datum/surgery_step/viral_bond/tool_check(mob/user, obj/item/tool) if(implement_type == TOOL_WELDER || implement_type == /obj/item) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index a1b74942e0..63a392bf06 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -172,9 +172,8 @@ var/total_damage = brute + burn if(total_damage > can_inflict) - var/excess = total_damage - can_inflict - brute = round(brute * (excess / total_damage),DAMAGE_PRECISION) - burn = round(burn * (excess / total_damage),DAMAGE_PRECISION) + brute = round(brute * (max_damage / total_damage),DAMAGE_PRECISION) + burn = round(burn * (max_damage / total_damage),DAMAGE_PRECISION) brute_dam += brute burn_dam += burn diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 31f08f0e87..31fc90cb04 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -22,11 +22,14 @@ SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) drop_limb() + C.bleed(40) + + if(QDELETED(src)) //Could have dropped into lava/explosion/chasm/whatever + return TRUE if(dam_type == BURN) burn() - return 1 + return TRUE add_mob_blood(C) - C.bleed(40) var/direction = pick(GLOB.cardinals) var/t_range = rand(2,max(throw_range/2, 2)) var/turf/target_turf = get_turf(src) @@ -38,7 +41,7 @@ if(new_turf.density) break throw_at(target_turf, throw_range, throw_speed) - return 1 + return TRUE /obj/item/bodypart/chest/dismember() @@ -149,7 +152,6 @@ LB.brainmob = brainmob brainmob = null LB.brainmob.forceMove(LB) - LB.brainmob.container = LB LB.brainmob.stat = DEAD /obj/item/organ/eyes/transfer_to_limb(obj/item/bodypart/head/LB, mob/living/carbon/human/C) diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index 069f30e24c..51866b6719 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -287,51 +287,19 @@ . = "ffc905" /mob/living/carbon/proc/Digitigrade_Leg_Swap(swap_back) - var/body_plan_changed = FALSE for(var/X in bodyparts) var/obj/item/bodypart/O = X - var/obj/item/bodypart/N - if((!O.use_digitigrade && swap_back == FALSE) || (O.use_digitigrade && swap_back == TRUE)) - if(O.body_part == LEG_LEFT) - if(swap_back == TRUE) - N = new /obj/item/bodypart/l_leg - else - N = new /obj/item/bodypart/l_leg/digitigrade - else if(O.body_part == LEG_RIGHT) - if(swap_back == TRUE) - N = new /obj/item/bodypart/r_leg - else - N = new /obj/item/bodypart/r_leg/digitigrade - if(!N) - continue - body_plan_changed = TRUE - O.drop_limb(1) - qdel(O) - N.attach_limb(src) + if((O.body_part == LEG_LEFT || O.body_part == LEG_RIGHT) && ((!O.use_digitigrade && !swap_back) || (O.use_digitigrade && swap_back))) + O.use_digitigrade = swap_back ? NOT_DIGITIGRADE : FULL_DIGITIGRADE + O.update_limb(FALSE, src) - if(body_plan_changed && ishuman(src)) + if(ishuman(src)) var/mob/living/carbon/human/H = src if(H.w_uniform) - var/obj/item/clothing/under/U = H.w_uniform - if(U.mutantrace_variation) - if(swap_back) - U.suit_style = NORMAL_SUIT_STYLE - else - U.suit_style = DIGITIGRADE_SUIT_STYLE - H.update_inv_w_uniform() + H.update_inv_w_uniform() if(H.shoes) - var/obj/item/clothing/shoes/S = H.shoes - if(swap_back) - S.adjusted = NORMAL_STYLE - else - S.adjusted = ALT_STYLE H.update_inv_shoes() if(H.wear_suit) - var/obj/item/clothing/suit/S = H.wear_suit - if(swap_back) - S.adjusted = NORMAL_STYLE - else - S.adjusted = ALT_STYLE H.update_inv_wear_suit() /mob/living/carbon/proc/get_body_parts_flags() diff --git a/code/modules/surgery/embalming.dm b/code/modules/surgery/embalming.dm index 0af3240c5d..c6d2c72caa 100644 --- a/code/modules/surgery/embalming.dm +++ b/code/modules/surgery/embalming.dm @@ -12,7 +12,7 @@ /datum/surgery_step/embalming name = "embalming body" implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35) - chems_needed = list("drying_agent", "sterilizine") + chems_needed = list(/datum/reagent/drying_agent, /datum/reagent/space_cleaner/sterilizine) require_all_chems = FALSE /datum/surgery_step/embalming/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/graft_synthtissue.dm b/code/modules/surgery/graft_synthtissue.dm index 86b2a8e909..afe8c9d1d1 100644 --- a/code/modules/surgery/graft_synthtissue.dm +++ b/code/modules/surgery/graft_synthtissue.dm @@ -22,7 +22,7 @@ implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) repeatable = TRUE time = 75 - chems_needed = list("synthtissue") + chems_needed = list(/datum/reagent/synthtissue) var/obj/item/organ/chosen_organ var/health_restored = 10 @@ -41,7 +41,7 @@ chosen_organ = organs[chosen_organ] if(!chosen_organ) return -1 - if(!target.reagents.has_reagent("synthtissue")) + if(!target.reagents.has_reagent(/datum/reagent/synthtissue)) to_chat(user, "There's no synthtissue available for use on [chosen_organ]") return -1 var/datum/reagent/synthtissue/Sf = locate(/datum/reagent/synthtissue) in target.reagents.reagent_list @@ -58,7 +58,7 @@ health_restored += (Sf.data["grown_volume"]/10) user.visible_message("[user] begins to graft synthtissue onto [chosen_organ].") - target.reagents.remove_reagent("synthtissue", 10) + target.reagents.remove_reagent(/datum/reagent/synthtissue, 10) /datum/surgery_step/graft_synthtissue/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message("[user] successfully grafts synthtissue to [chosen_organ].", "You succeed in grafting 10u of the synthflesh to the [chosen_organ].") diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm index 0a4bd270a8..8ea4ea855d 100644 --- a/code/modules/surgery/organs/appendix.dm +++ b/code/modules/surgery/organs/appendix.dm @@ -42,5 +42,5 @@ /obj/item/organ/appendix/prepare_eat() var/obj/S = ..() if(inflamed) - S.reagents.add_reagent("bad_food", 5) + S.reagents.add_reagent(/datum/reagent/toxin/bad_food, 5) return S diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index 65172a1545..93ed149a2b 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -32,7 +32,7 @@ . = ..() if(!owner || . & EMP_PROTECT_SELF) return - owner.reagents.add_reagent("bad_food", poison_amount / severity) + owner.reagents.add_reagent(/datum/reagent/toxin/bad_food, poison_amount / severity) to_chat(owner, "You feel like your insides are burning.") diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 5b74b58cd0..51784bdc61 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -247,5 +247,5 @@ obj/item/organ/heart/cybernetic/upgraded/on_life() min_next_adrenaline = world.time + rand(250, 600) //anywhere from 4.5 to 10 minutes to_chat(owner, "You feel yourself dying, but you refuse to give up!") owner.heal_overall_damage(15, 15) - if(owner.reagents.get_reagent_amount("ephedrine") < 20) - owner.reagents.add_reagent("ephedrine", 10) + if(owner.reagents.get_reagent_amount(/datum/reagent/medicine/ephedrine) < 20) + owner.reagents.add_reagent(/datum/reagent/medicine/ephedrine, 10) diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index 01559c83c3..59185ebaaf 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -33,14 +33,12 @@ if(filterToxins && !HAS_TRAIT(owner, TRAIT_TOXINLOVER)) //handle liver toxin filtration - for(var/I in C.reagents.reagent_list) - var/datum/reagent/pickedreagent = I - if(istype(pickedreagent, /datum/reagent/toxin)) - var/thisamount = C.reagents.get_reagent_amount(initial(pickedreagent.id)) - if (thisamount <= toxTolerance && thisamount) - C.reagents.remove_reagent(initial(pickedreagent.id), 1) - else - damage += (thisamount*toxLethality) + for(var/datum/reagent/toxin/T in C.reagents.reagent_list) + var/thisamount = C.reagents.get_reagent_amount(T.type) + if (thisamount && thisamount <= toxTolerance) + C.reagents.remove_reagent(T.type, 1) + else + damage += (thisamount*toxLethality) //metabolize reagents C.reagents.metabolize(C, can_overdose=TRUE) @@ -56,7 +54,7 @@ /obj/item/organ/liver/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("iron", 5) + S.reagents.add_reagent(/datum/reagent/iron, 5) return S //Just in case diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index 6b0e4f01ae..91153655d3 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -69,7 +69,7 @@ var/heat_level_3_damage = HEAT_GAS_DAMAGE_LEVEL_3 var/heat_damage_type = BURN - var/crit_stabilizing_reagent = "epinephrine" + var/crit_stabilizing_reagent = /datum/reagent/medicine/epinephrine @@ -301,13 +301,13 @@ var/bz_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/bz]) if(bz_pp > BZ_trip_balls_min) H.hallucination += 10 - H.reagents.add_reagent("bz_metabolites",5) + H.reagents.add_reagent(/datum/reagent/bz_metabolites,5) if(prob(33)) H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150) else if(bz_pp > 0.01) H.hallucination += 5 - H.reagents.add_reagent("bz_metabolites",1) + H.reagents.add_reagent(/datum/reagent/bz_metabolites,1) // Tritium @@ -331,15 +331,15 @@ H.adjustFireLoss(nitryl_pp/4) gas_breathed = breath_gases[/datum/gas/nitryl] if (gas_breathed > gas_stimulation_min) - H.reagents.add_reagent("no2",1) + H.reagents.add_reagent(/datum/reagent/nitryl,1) breath_gases[/datum/gas/nitryl]-=gas_breathed // Stimulum gas_breathed = breath_gases[/datum/gas/stimulum] if (gas_breathed > gas_stimulation_min) - var/existing = H.reagents.get_reagent_amount("stimulum") - H.reagents.add_reagent("stimulum", max(0, 5 - existing)) + var/existing = H.reagents.get_reagent_amount(/datum/reagent/stimulum) + H.reagents.add_reagent(/datum/reagent/stimulum, max(0, 5 - existing)) breath_gases[/datum/gas/stimulum]-=gas_breathed // Miasma @@ -459,7 +459,7 @@ /obj/item/organ/lungs/prepare_eat() var/obj/S = ..() - S.reagents.add_reagent("salbutamol", 5) + S.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 5) return S /obj/item/organ/lungs/plasmaman diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index a180bd947e..fcbed13d94 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -173,7 +173,7 @@ name = "appendix" icon_state = "appendix" icon = 'icons/obj/surgery.dmi' - list_reagents = list("nutriment" = 5) + list_reagents = list(/datum/reagent/consumable/nutriment = 5) foodtype = RAW | MEAT | GROSS diff --git a/code/modules/tgs/v3210/commands.dm b/code/modules/tgs/v3210/commands.dm index 71d7e32366..e674fd4e78 100644 --- a/code/modules/tgs/v3210/commands.dm +++ b/code/modules/tgs/v3210/commands.dm @@ -19,7 +19,7 @@ TGS_ERROR_LOG("Custom command [command_name] can't be used as it is empty or contains illegal characters!") warned_command_names[command_name] = TRUE continue - + if(command_name_types[command_name]) if(warnings_only) TGS_ERROR_LOG("Custom commands [command_name_types[command_name]] and [stc] have the same name, only [command_name_types[command_name]] will be available!") @@ -55,24 +55,24 @@ The MIT License Copyright (c) 2017 Jordan Brown -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index 1415604aff..73ba785ec2 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -107,7 +107,7 @@ visible_message("[user] has pressed one of the colorful buttons on [src] and the clown car spews out a cloud of laughing gas.") var/datum/reagents/R = new/datum/reagents(300) R.my_atom = src - R.add_reagent("superlaughter", 50) + R.add_reagent(/datum/reagent/consumable/superlaughter, 50) var/datum/effect_system/smoke_spread/chem/smoke = new() smoke.set_up(R, 4) smoke.attach(src) diff --git a/code/modules/vending/assist.dm b/code/modules/vending/assist.dm index 280bcb5ca2..0d0dd40b36 100644 --- a/code/modules/vending/assist.dm +++ b/code/modules/vending/assist.dm @@ -1,6 +1,7 @@ /obj/machinery/vending/assist products = list(/obj/item/assembly/prox_sensor = 7, /obj/item/assembly/igniter = 6, + /obj/item/assembly/playback = 4, /obj/item/assembly/signaler = 6, /obj/item/wirecutters = 3, /obj/item/stock_parts/cell/crap = 6, diff --git a/code/modules/vore/eating/voreitems.dm b/code/modules/vore/eating/voreitems.dm index 741782545a..05ab1e5f8b 100644 --- a/code/modules/vore/eating/voreitems.dm +++ b/code/modules/vore/eating/voreitems.dm @@ -35,7 +35,6 @@ /* /datum/reagent/medicine/ickypak name = "Ickypak" - id = "ickypak" description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things." reagent_state = LIQUID color = "#0E900E" @@ -57,6 +56,6 @@ /datum/chemical_reaction/ickypak name = "Ickypak" - id = "ickypak" - results = list("ickypak" = 2) - required_reagents = list("chlorine" = 2 , "oil" = 1) */ \ No newline at end of file + id = /datum/reagent/medicine/ickypak + results = list(/datum/reagent/medicine/ickypak = 2) + required_reagents = list(/datum/reagent/chlorine = 2 , /datum/reagent/oil = 1) */ \ No newline at end of file diff --git a/code/modules/vore/resizing/sizechemicals.dm b/code/modules/vore/resizing/sizechemicals.dm index f83ba2ce76..612e8c9fde 100644 --- a/code/modules/vore/resizing/sizechemicals.dm +++ b/code/modules/vore/resizing/sizechemicals.dm @@ -5,7 +5,6 @@ /datum/reagent/medicine/macrocillin name = "Macrocillin" - id = "macrocillin" description = "Glowing yellow liquid." reagent_state = LIQUID color = "#FFFF00" // rgb: 255, 255, 0 @@ -17,13 +16,12 @@ M.sizescale(size) M << "You grow!" break - if(M.reagents.has_reagent("macrocillin")) - M.reagents.remove_reagent("macrocillin", 20) + if(M.reagents.has_reagent(/datum/reagent/medicine/macrocillin)) + M.reagents.remove_reagent(/datum/reagent/medicine/macrocillin, 20) ..() /datum/reagent/medicine/microcillin name = "Microcillin" - id = "microcillin" description = "Murky purple liquid." reagent_state = LIQUID color = "#800080" @@ -35,14 +33,13 @@ M.sizescale(size) M << "You shrink!" break; - if(M.reagents.has_reagent("microcillin")) - M.reagents.remove_reagent("microcillin", 20) + if(M.reagents.has_reagent(/datum/reagent/medicine/microcillin)) + M.reagents.remove_reagent(/datum/reagent/medicine/microcillin, 20) ..() /datum/reagent/medicine/normalcillin name = "Normalcillin" - id = "normalcillin" description = "Translucent cyan liquid." reagent_state = LIQUID color = "#00FFFF" @@ -62,14 +59,13 @@ M.sizescale(SIZESCALE_SMALL) M << "You grow!" - if(M.reagents.has_reagent("normalcillin")) - M.reagents.remove_reagent("normalcillin", 20) + if(M.reagents.has_reagent(/datum/reagent/medicine/normalcillin)) + M.reagents.remove_reagent(/datum/reagent/medicine/normalcillin, 20) ..() /datum/reagent/medicine/sizeoxadone name = "Sizeoxadone" - id = "sizeoxadone" description = "A volatile liquid used as a precursor to size-altering chemicals. Causes dizziness if taken unprocessed." reagent_state = LIQUID color = "#1E90FF" @@ -93,7 +89,6 @@ /datum/reagent/medicine/ickypak name = "Ickypak" - id = "ickypak" description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things." reagent_state = LIQUID color = "#0E900E" diff --git a/config/config.txt b/config/config.txt index e71c2587b7..fafb3e5791 100644 --- a/config/config.txt +++ b/config/config.txt @@ -473,3 +473,15 @@ DISABLE_HIGH_POP_MC_MODE_AMOUNT 60 ## For reference, Goonstation uses a resolution of 21x15 for it's widescreen mode. ## Do note that changing this value will affect the title screen. The title screen will have to be updated manually if this is changed. DEFAULT_VIEW 21x15 + +### FAIL2TOPIC: +### Automated IP bans for world/Topic() spammers +## Enabled +FAIL2TOPIC_ENABLED +## Minimum wait time in deciseconds between valid requests +FAIL2TOPIC_RATE_LIMIT 10 +## Number of requests after breaching rate limit that triggers a ban +FAIL2TOPIC_MAX_FAILS 5 +## Firewall rule name used on physical server +FAIL2TOPIC_RULE_NAME _dd_fail2topic + diff --git a/config/game_options.txt b/config/game_options.txt index 34c8ca48fd..060d782dbe 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -575,7 +575,16 @@ MONKEYCAP 64 #Replaces standard extended/secret dichotomy with extended and calm/chaotic votes for dynamic. DYNAMIC_VOTING -## Choose which Engine to start the round with, comment to remove an Engine from the rotation -BOX_RANDOM_ENGINE Engine SM -BOX_RANDOM_ENGINE Engine Tesla -BOX_RANDOM_ENGINE Engine Singulo \ No newline at end of file +## Choose which Engine to start the round with. Weight is after the comma. Setting the weight to 0 removes the engine from rotation. +BOX_RANDOM_ENGINE Box SM,3 +BOX_RANDOM_ENGINE Box Tesla,3 +BOX_RANDOM_ENGINE Box Singulo,3 +BOX_RANDOM_ENGINE Box SM 1x3,1 +BOX_RANDOM_ENGINE Box SM 5x5,1 +BOX_RANDOM_ENGINE Box SM 3x,0 + +## Whether or not there's a mode tier list vote after the secret/extended vote. +MODETIER_VOTING + +## Number of modes dropped by the modetier vote during mode selection, after vote. +DROPPED_MODES 3 diff --git a/html/changelogs/AutoChangeLog-pr-10112.yml b/html/changelogs/AutoChangeLog-pr-10112.yml new file mode 100644 index 0000000000..f09d8fa9ef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10112.yml @@ -0,0 +1,5 @@ +author: "Ghommie" +delete-after: True +changes: + - refactor: "Refactored that mess of a code for alternate worn clothing sprites for digitigrade and taurs." + - bugfix: "Fixed some issues with the aforementioned feature you may or may not have experienced because it was pretty lame." diff --git a/html/changelogs/AutoChangeLog-pr-10285.yml b/html/changelogs/AutoChangeLog-pr-10285.yml new file mode 100644 index 0000000000..89b0bbae43 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10285.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed singularity pulls duping rods out of engine floors." diff --git a/html/changelogs/AutoChangeLog-pr-10329.yml b/html/changelogs/AutoChangeLog-pr-10329.yml new file mode 100644 index 0000000000..e5d78ddf96 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10329.yml @@ -0,0 +1,5 @@ +author: "Naksu" +delete-after: True +changes: + - code_imp: "reagent IDs have been removed in favor using reagent typepaths where applicable" + - bugfix: "mechas, borg hyposprays etc no longer display internal reagent ids to the player" diff --git a/html/changelogs/AutoChangeLog-pr-10420.yml b/html/changelogs/AutoChangeLog-pr-10420.yml new file mode 100644 index 0000000000..b719eca84c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10420.yml @@ -0,0 +1,4 @@ +author: "MrJWhit" +delete-after: True +changes: + - tweak: "Increases plasma usage in radiation collectors" diff --git a/html/changelogs/AutoChangeLog-pr-10439.yml b/html/changelogs/AutoChangeLog-pr-10439.yml new file mode 100644 index 0000000000..92b151b883 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10439.yml @@ -0,0 +1,4 @@ +author: "LetterN" +delete-after: True +changes: + - rscadd: "Doppler logs" diff --git a/html/changelogs/AutoChangeLog-pr-10440.yml b/html/changelogs/AutoChangeLog-pr-10440.yml new file mode 100644 index 0000000000..e942f4056f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10440.yml @@ -0,0 +1,5 @@ +author: "Putnam3145" +delete-after: True +changes: + - rscadd: "Added a sort of \"game mode ban\" by way of having people rank their game modes favorite to least favorite after the secret/extended vote." + - bugfix: "Turns out the schulze scoring was written wrong and it was setting things to 0 that shouldn't have been, so that's fixed." diff --git a/html/changelogs/AutoChangeLog-pr-10442.yml b/html/changelogs/AutoChangeLog-pr-10442.yml new file mode 100644 index 0000000000..f407ae9e15 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10442.yml @@ -0,0 +1,4 @@ +author: "Trilbyspaceclone" +delete-after: True +changes: + - tweak: "Halfs the nutriments in sugar" diff --git a/html/changelogs/AutoChangeLog-pr-10452.yml b/html/changelogs/AutoChangeLog-pr-10452.yml new file mode 100644 index 0000000000..e51b9ff752 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10452.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Lattices can be examined yet again." diff --git a/html/changelogs/AutoChangeLog-pr-10457.yml b/html/changelogs/AutoChangeLog-pr-10457.yml new file mode 100644 index 0000000000..203842b0b6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10457.yml @@ -0,0 +1,5 @@ +author: "r4d6" +delete-after: True +changes: + - rscadd: "Added a playback device" + - bugfix: "Made the Voice Analyzer actually care about languages" diff --git a/html/changelogs/AutoChangeLog-pr-10459.yml b/html/changelogs/AutoChangeLog-pr-10459.yml new file mode 100644 index 0000000000..77de8eb193 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10459.yml @@ -0,0 +1,4 @@ +author: "Putnam" +delete-after: True +changes: + - rscadd: "Cold-blooded quirk" diff --git a/html/changelogs/AutoChangeLog-pr-10463.yml b/html/changelogs/AutoChangeLog-pr-10463.yml new file mode 100644 index 0000000000..70e97975ce --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10463.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - config: "Random engines are now weighted." diff --git a/html/changelogs/AutoChangeLog-pr-10467.yml b/html/changelogs/AutoChangeLog-pr-10467.yml new file mode 100644 index 0000000000..7fa379f088 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10467.yml @@ -0,0 +1,4 @@ +author: "Seris02" +delete-after: True +changes: + - bugfix: "cardboard box speed" diff --git a/html/changelogs/AutoChangeLog-pr-10472.yml b/html/changelogs/AutoChangeLog-pr-10472.yml new file mode 100644 index 0000000000..9404d70b7b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10472.yml @@ -0,0 +1,4 @@ +author: "keronshb" +delete-after: True +changes: + - bugfix: "fixed the missing icons from Dermal Button nanites" diff --git a/html/changelogs/AutoChangeLog-pr-10473.yml b/html/changelogs/AutoChangeLog-pr-10473.yml new file mode 100644 index 0000000000..f1821a3cce --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10473.yml @@ -0,0 +1,4 @@ +author: "Bhijn" +delete-after: True +changes: + - bugfix: "server_hop can no longer be used to remotely lobotomize a spaceman" diff --git a/html/changelogs/AutoChangeLog-pr-10474.yml b/html/changelogs/AutoChangeLog-pr-10474.yml new file mode 100644 index 0000000000..ae7b5b3fcb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10474.yml @@ -0,0 +1,5 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "Traitor objectives don't take a dump when they try to add an assassinate anymore" + - admin: "Objective removal with antag panel no longer commented out silently while still being an option that gives useful feedback on stuff it's not doing in any respect" diff --git a/html/changelogs/AutoChangeLog-pr-10483.yml b/html/changelogs/AutoChangeLog-pr-10483.yml new file mode 100644 index 0000000000..1f016b1591 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10483.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "Limb damage works now" diff --git a/html/changelogs/AutoChangeLog-pr-9878.yml b/html/changelogs/AutoChangeLog-pr-9878.yml new file mode 100644 index 0000000000..ef9c704003 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9878.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - tweak: "add a click cooldown to the overly spammable table slamming." diff --git a/icons/mob/actions/actions_items.dmi b/icons/mob/actions/actions_items.dmi index 39e2ea0584..43c9d20a93 100644 Binary files a/icons/mob/actions/actions_items.dmi and b/icons/mob/actions/actions_items.dmi differ diff --git a/icons/mob/taur_canine.dmi b/icons/mob/taur_canine.dmi index 15d6214446..d266d1f135 100644 Binary files a/icons/mob/taur_canine.dmi and b/icons/mob/taur_canine.dmi differ diff --git a/icons/mob/taur_hooved.dmi b/icons/mob/taur_hooved.dmi index 63e604b430..71aec5444a 100644 Binary files a/icons/mob/taur_hooved.dmi and b/icons/mob/taur_hooved.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 73eb12fd6a..4cb7e02e03 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/food/containers.dmi b/icons/obj/food/containers.dmi index d3bdc1b1ea..93acc07453 100644 Binary files a/icons/obj/food/containers.dmi and b/icons/obj/food/containers.dmi differ diff --git a/modular_citadel/code/datums/status_effects/chems.dm b/modular_citadel/code/datums/status_effects/chems.dm index 8adc7c0745..4449ca801a 100644 --- a/modular_citadel/code/datums/status_effects/chems.dm +++ b/modular_citadel/code/datums/status_effects/chems.dm @@ -179,7 +179,7 @@ /datum/status_effect/chem/astral_insurance/tick(mob/living/carbon/M) . = ..() - if(owner.reagents.has_reagent("astral")) + if(owner.reagents.has_reagent(/datum/reagent/fermi/astral)) return if(owner.mind == originalmind) //If they're home, let the chem deal with deletion. return @@ -284,15 +284,15 @@ var/mob/living/carbon/M = owner //chem calculations - if(!owner.reagents.has_reagent("enthrall") && !owner.reagents.has_reagent("enthrallTest")) + if(!owner.reagents.has_reagent(/datum/chemical_reaction/fermi/enthrall) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall/test)) if (phase < 3 && phase != 0) deltaResist += 3//If you've no chem, then you break out quickly if(prob(5)) to_chat(owner, "Your mind starts to restore some of it's clarity as you feel the effects of the drug wain.") if (mental_capacity <= 500 || phase == 4) - if (owner.reagents.has_reagent("mannitol")) + if (owner.reagents.has_reagent(/datum/reagent/medicine/mannitol)) mental_capacity += 5 - if (owner.reagents.has_reagent("neurine")) + if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine)) mental_capacity += 10 //mindshield check @@ -369,7 +369,7 @@ if(lewd && prob(1) && !customEcho) to_chat(owner, "[pick("I belong to [enthrallGender].", "[enthrallGender] knows whats best for me.", "Obedence is pleasure.", "I exist to serve [enthrallGender].", "[enthrallGender] is so dominant, it feels right to obey them.")].") if (4) //mindbroken - if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent("MKUltra")) + if (mental_capacity >= 499 && (owner.getOrganLoss(ORGAN_SLOT_BRAIN) <=0 || HAS_TRAIT(M, TRAIT_MINDSHIELD)) && !owner.reagents.has_reagent(/datum/reagent/fermi/enthrall)) phase = 2 mental_capacity = 500 customTriggers = list() @@ -739,18 +739,18 @@ deltaResist*= 0.5-(((2/200)*M.arousalloss)/1)//more aroused you are, the weaker resistance you can give, the less you are, the more you gain. (+/- 0.5) //chemical resistance, brain and annaphros are the key to undoing, but the subject has to to be willing to resist. - if (owner.reagents.has_reagent("mannitol")) + if (owner.reagents.has_reagent(/datum/reagent/medicine/mannitol)) deltaResist *= 1.25 - if (owner.reagents.has_reagent("neurine")) + if (owner.reagents.has_reagent(/datum/reagent/medicine/neurine)) deltaResist *= 1.5 if (!(owner.client?.prefs.cit_toggles & NO_APHRO) && M.canbearoused && lewd) - if (owner.reagents.has_reagent("anaphro")) + if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiac)) deltaResist *= 1.5 - if (owner.reagents.has_reagent("anaphro+")) + if (owner.reagents.has_reagent(/datum/reagent/drug/anaphrodisiacplus)) deltaResist *= 2 - if (owner.reagents.has_reagent("aphro")) + if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiac)) deltaResist *= 0.75 - if (owner.reagents.has_reagent("aphro+")) + if (owner.reagents.has_reagent(/datum/reagent/drug/aphrodisiacplus)) deltaResist *= 0.5 //Antag resistance //cultists are already brainwashed by their god diff --git a/modular_citadel/code/game/machinery/Sleeper.dm b/modular_citadel/code/game/machinery/Sleeper.dm deleted file mode 100644 index 4cf04524b2..0000000000 --- a/modular_citadel/code/game/machinery/Sleeper.dm +++ /dev/null @@ -1,2 +0,0 @@ -/obj/machinery/sleeper - min_health = 30 diff --git a/modular_citadel/code/game/machinery/displaycases.dm b/modular_citadel/code/game/machinery/displaycases.dm deleted file mode 100644 index f660475cfc..0000000000 --- a/modular_citadel/code/game/machinery/displaycases.dm +++ /dev/null @@ -1,5 +0,0 @@ -/obj/structure/displaycase/clown - desc = "In the event of clown, honk glass." - alert = 1 - start_showpiece_type = /obj/item/bikehorn - req_access = list(ACCESS_CENT_GENERAL) diff --git a/modular_citadel/code/game/objects/structures/beds_chairs/chair.dm b/modular_citadel/code/game/objects/structures/beds_chairs/chair.dm deleted file mode 100644 index b7843727df..0000000000 --- a/modular_citadel/code/game/objects/structures/beds_chairs/chair.dm +++ /dev/null @@ -1,21 +0,0 @@ -/obj/structure/chair/alt_attack_hand(mob/living/user) - if(Adjacent(user) && istype(user)) - if(!item_chair || !user.can_hold_items() || !has_buckled_mobs() || buckled_mobs.len > 1 || dir != user.dir || flags_1 & NODECONSTRUCT_1) - return TRUE - if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user))) - to_chat(user, "You can't do that right now!") - return TRUE - if(user.getStaminaLoss() >= STAMINA_SOFTCRIT) - to_chat(user, "You're too exhausted for that.") - return TRUE - var/mob/living/poordude = buckled_mobs[1] - if(!istype(poordude)) - return TRUE - user.visible_message("[user] pulls [src] out from under [poordude].", "You pull [src] out from under [poordude].") - var/C = new item_chair(loc) - user.put_in_hands(C) - poordude.Knockdown(20)//rip in peace - user.adjustStaminaLoss(5) - unbuckle_all_mobs(TRUE) - qdel(src) - return TRUE diff --git a/modular_citadel/code/game/objects/structures/tables_racks.dm b/modular_citadel/code/game/objects/structures/tables_racks.dm deleted file mode 100644 index 69dbe4e1cb..0000000000 --- a/modular_citadel/code/game/objects/structures/tables_racks.dm +++ /dev/null @@ -1,10 +0,0 @@ -/obj/structure/table/alt_attack_hand(mob/user) - if(user && Adjacent(user) && !user.incapacitated()) - if(istype(user) && user.a_intent == INTENT_HARM) - user.visible_message("[user] slams [user.p_their()] palms down on [src].", "You slam your palms down on [src].") - playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 50, 1) - else - user.visible_message("[user] slaps [user.p_their()] hands on [src].", "You slap your hands on [src].") - playsound(src, 'sound/weapons/tap.ogg', 50, 1) - user.do_attack_animation(src) - return TRUE diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/modular_citadel/code/modules/arousal/genitals.dm index 8d70464a2d..d5daf24f8a 100644 --- a/modular_citadel/code/modules/arousal/genitals.dm +++ b/modular_citadel/code/modules/arousal/genitals.dm @@ -8,7 +8,7 @@ var/orgasm_verb = "cumming" //present continous var/fluid_transfer_factor = 0 //How much would a partner get in them if they climax using this? var/size = 2 //can vary between num or text, just used in icon_state strings - var/fluid_id = null + var/datum/reagent/fluid_id = null var/fluid_max_volume = 50 var/fluid_efficiency = 1 var/fluid_rate = CUM_RATE diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/modular_citadel/code/modules/arousal/organs/breasts.dm index 105f5e157d..73d03eff3b 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/modular_citadel/code/modules/arousal/organs/breasts.dm @@ -6,7 +6,7 @@ zone = BODY_ZONE_CHEST slot = ORGAN_SLOT_BREASTS size = "c" //refer to the breast_values static list below for the cups associated number values - fluid_id = "milk" + fluid_id = /datum/reagent/consumable/milk fluid_rate = MILK_RATE shape = "pair" genital_flags = CAN_MASTURBATE_WITH|CAN_CLIMAX_WITH|GENITAL_FUID_PRODUCTION @@ -44,7 +44,7 @@ desc += " You estimate that they're [uppertext(size)]-cups." if(CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION) && aroused_state) - desc += " They're leaking [fluid_id]." + desc += " They're leaking [initial(fluid_id.name)]." var/string if(owner) if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"]) diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/modular_citadel/code/modules/arousal/organs/testicles.dm index 547674a5f1..a911eefe01 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/modular_citadel/code/modules/arousal/organs/testicles.dm @@ -11,7 +11,7 @@ var/size_name = "average" shape = "Single" var/sack_size = BALLS_SACK_SIZE_DEF - fluid_id = "semen" + fluid_id = /datum/reagent/consumable/semen masturbation_verb = "massage" layer_index = TESTICLES_LAYER_INDEX diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/modular_citadel/code/modules/arousal/organs/womb.dm index 9dfe811571..7f91310e3e 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/modular_citadel/code/modules/arousal/organs/womb.dm @@ -6,5 +6,5 @@ zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_WOMB genital_flags = GENITAL_INTERNAL|GENITAL_FUID_PRODUCTION - fluid_id = "femcum" + fluid_id = /datum/reagent/consumable/femcum linked_organ_slot = ORGAN_SLOT_VAGINA diff --git a/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm b/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm index c6b153fd36..ade6cee3ba 100644 --- a/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm +++ b/modular_citadel/code/modules/clothing/suits/polychromic_cloaks.dm @@ -13,7 +13,7 @@ secondary_color = "#FFFFFF" tertiary_color = "#808080" -/obj/item/clothing/neck/cloak/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon +/obj/item/clothing/neck/cloak/polychromic/worn_overlays(isinhands, icon_file, style_flags = NONE) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them diff --git a/modular_citadel/code/modules/clothing/suits/suits.dm b/modular_citadel/code/modules/clothing/suits/suits.dm index c7fd84bd80..4b9dd131ca 100644 --- a/modular_citadel/code/modules/clothing/suits/suits.dm +++ b/modular_citadel/code/modules/clothing/suits/suits.dm @@ -11,7 +11,7 @@ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/suit.dmi' icon_state = "hostrench" item_state = "hostrench" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE body_parts_covered = CHEST|ARMS|LEGS /obj/item/clothing/suit/hooded/cloak/david @@ -20,11 +20,11 @@ desc = "Ever wanted to look like a badass without ANY effort? Try this nanotrasen brand red cloak, perfect for kids" hoodtype = /obj/item/clothing/head/hooded/cloakhood/david body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/hooded/cloakhood/david name = "red cloak hood" icon_state = "golhood" desc = "conceal your face in shame with this nanotrasen brand hood" flags_inv = HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE diff --git a/modular_citadel/code/modules/clothing/under/trek_under.dm b/modular_citadel/code/modules/clothing/under/trek_under.dm index 5cd0620a9d..683167f325 100644 --- a/modular_citadel/code/modules/clothing/under/trek_under.dm +++ b/modular_citadel/code/modules/clothing/under/trek_under.dm @@ -14,7 +14,7 @@ desc = "Oooh... right." icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - force_alternate_icon = TRUE + mutantrace_variation = NONE item_state = "" can_adjust = FALSE //to prevent you from "wearing it casually" @@ -95,10 +95,9 @@ icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' icon_state = "trek_ds9_coat" alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - force_alternate_icon = TRUE item_state = "trek_ds9_coat" body_parts_covered = CHEST|GROIN|ARMS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE permeability_coefficient = 0.50 allowed = list( /obj/item/flashlight, /obj/item/analyzer, @@ -140,11 +139,9 @@ desc = "A uniform jacket from the United Federation. Set phasers to awesome." icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - force_alternate_icon = TRUE icon_state = "fedcoat" item_state = "fedcoat" - mutantrace_variation = NO_MUTANTRACE_VARIATION - + mutantrace_variation = NONE blood_overlay_type = "coat" body_parts_covered = CHEST|GROIN|ARMS allowed = list( @@ -207,7 +204,6 @@ desc = "A modern uniform jacket from the United Federation." icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - force_alternate_icon = TRUE icon_state = "fedmodern" item_state = "fedmodern" body_parts_covered = CHEST|GROIN|ARMS @@ -240,7 +236,6 @@ icon = 'modular_citadel/icons/obj/clothing/trek_item_icon.dmi' icon_state = "fedcapofficer" alternate_worn_icon = 'modular_citadel/icons/mob/clothing/trek_mob_icon.dmi' - force_alternate_icon = TRUE item_state = "fedcapofficer" //Variants diff --git a/modular_citadel/code/modules/clothing/under/turtlenecks.dm b/modular_citadel/code/modules/clothing/under/turtlenecks.dm index fd13da11e9..84cfa97a59 100644 --- a/modular_citadel/code/modules/clothing/under/turtlenecks.dm +++ b/modular_citadel/code/modules/clothing/under/turtlenecks.dm @@ -16,7 +16,7 @@ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0, fire = 0, acid = 0) can_adjust = TRUE alt_covers_chest = TRUE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/structure/closet/secure_closet/CMO/PopulateContents() //This is placed here because it's a very specific addition for a very specific niche ..() @@ -29,7 +29,7 @@ item_state = "bl_suit" item_color = "tactifool" has_sensor = TRUE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) /obj/item/clothing/under/syndicate/tacticool @@ -47,7 +47,7 @@ can_adjust = TRUE icon = 'modular_citadel/icons/obj/clothing/turtlenecks.dmi' alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/bb_sweater/black name = "black sweater" diff --git a/modular_citadel/code/modules/clothing/under/under.dm b/modular_citadel/code/modules/clothing/under/under.dm index dcc6323f62..40db06ba56 100644 --- a/modular_citadel/code/modules/clothing/under/under.dm +++ b/modular_citadel/code/modules/clothing/under/under.dm @@ -13,7 +13,7 @@ alternate_worn_icon = 'modular_citadel/icons/mob/citadel/uniforms.dmi' item_state = "r_suit" can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/rank/captain/femformal name ="captain's female formal outfit" @@ -26,4 +26,4 @@ can_adjust = FALSE sensor_mode = SENSOR_COORDS //it's still a captain's suit nerd random_sensor = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm index 3d88dae26c..eaf128626d 100644 --- a/modular_citadel/code/modules/custom_loadout/custom_items.dm +++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm @@ -1,7 +1,7 @@ //For custom items. -// Unless there's a digitigrade version make sure you add mutantrace_variation = NO_MUTANTRACE_VARIATION to all clothing/under and shoes - Pooj +// Unless there's a digitigrade version make sure you add mutantrace_variation = NONE to all clothing/under and shoes - Pooj // Digitigrade stuff is uniform_digi.dmi and digishoes.dmi in icons/mob /obj/item/custom/ceb_soap @@ -85,7 +85,7 @@ item_state = "darkcarapace" blood_overlay_type = "armor" dog_fashion = /datum/dog_fashion/back - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) @@ -118,7 +118,7 @@ icon_state = "labred" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "labred" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/toggle/labcoat/labredblack name = "Black and Red Coat" @@ -127,7 +127,7 @@ icon_state = "labredblack" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "labredblack" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/toy/plush/carrot name = "carrot plushie" @@ -233,7 +233,7 @@ alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "hos-g" body_parts_covered = CHEST|GROIN|ARMS|LEGS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/reagent_containers/food/drinks/flask/russian name = "russian flask" @@ -277,14 +277,14 @@ fitted = NO_FEMALE_UNIFORM alternate_worn_layer = ABOVE_SHOES_LAYER can_adjust = 0 - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/sneakers/pink icon = 'icons/obj/custom.dmi' icon_state = "pink" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "pink" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/neck/tie/bloodred name = "Blood Red Tie" @@ -301,7 +301,7 @@ icon_state = "puffydress" item_state = "puffydress" body_parts_covered = CHEST|GROIN|LEGS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/vermillion name = "vermillion clothing" @@ -311,11 +311,11 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/bb_sweater/black/naomi name = "worn black sweater" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE desc = "A well-loved sweater, showing signs of several cleanings and re-stitchings. And a few stains. Is that cat fur?" /obj/item/clothing/neck/petcollar/naomi @@ -345,7 +345,7 @@ icon_state = "rdcoat" alternate_worn_icon = 'icons/mob/custom_w.dmi' item_state = "rdcoat" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/custom/leechjar name = "Jar of Leeches" @@ -379,7 +379,7 @@ desc = "Comfy Lucky Jackboots with the word Luck on them." item_state = "luckyjack" icon_state = "luckyjack" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/lunasune name = "Divine Robes" @@ -388,7 +388,7 @@ desc = "Heavenly robes of the kitsune Luna Pumpkin,you can feel radiance coming from them." item_state = "Divine_robes" icon_state = "Divine_robes" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/leoskimpy name = "Leon's Skimpy Outfit" @@ -397,7 +397,7 @@ desc = "A rather skimpy outfit." item_state = "shark_cloth" icon_state = "shark_cloth" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/mimeoveralls name = "Mime's Overalls" @@ -406,7 +406,7 @@ desc = "A less-than-traditional mime's attire, completed by a set of dorky-looking overalls." item_state = "moveralls" icon_state = "moveralls" - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/hooded/cloak/zuliecloak name = "Project: Zul-E" @@ -418,7 +418,7 @@ hoodtype = /obj/item/clothing/head/hooded/cloakhood/zuliecloak body_parts_covered = CHEST|GROIN|ARMS slot_flags = SLOT_WEAR_SUIT | ITEM_SLOT_NECK //it's a cloak. it's cosmetic. so why the hell not? what could possibly go wrong? - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/hooded/cloakhood/zuliecloak name = "NT Special Issue" @@ -428,7 +428,7 @@ icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' flags_inv = HIDEEARS|HIDEHAIR - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/blackredgold name = "Multicolor Coat" @@ -438,7 +438,7 @@ icon_state = "redgoldjacket" item_state = "redgoldjacket" body_parts_covered = CHEST|GROIN|LEGS|ARMS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/kimono name = "Blue Kimono" @@ -448,7 +448,7 @@ icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' body_parts_covered = CHEST|GROIN|LEGS|ARMS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/commjacket name = "Dusty Commisar's Cloak" @@ -458,7 +458,7 @@ icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' body_parts_covered = CHEST|GROIN|LEGS|ARMS - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/under/mw2_russian_para name = "Russian Paratrooper Jumper" @@ -467,7 +467,7 @@ item_state = "mw2_russian_para" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/gloves/longblackgloves name = "Luna's Gauntlets" @@ -484,7 +484,7 @@ item_state = "trendy_fit" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/blueberet name = "Atmos Beret" @@ -518,7 +518,7 @@ item_state = "mikubikini" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/suit/mikujacket name = "starlight singer jacket" @@ -527,7 +527,7 @@ item_state = "mikujacket" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/head/mikuhair name = "starlight singer hair" @@ -536,7 +536,7 @@ item_state = "mikuhair" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE flags_inv = HIDEHAIR /obj/item/clothing/gloves/mikugloves @@ -546,7 +546,7 @@ item_state = "mikugloves" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE /obj/item/clothing/shoes/sneakers/mikuleggings name = "starlight singer leggings" @@ -555,4 +555,4 @@ item_state = "mikuleggings" icon = 'icons/obj/custom.dmi' alternate_worn_icon = 'icons/mob/custom_w.dmi' - mutantrace_variation = NO_MUTANTRACE_VARIATION + mutantrace_variation = NONE diff --git a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm index 8cb56803b1..4ae3e5c488 100644 --- a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -4,7 +4,7 @@ id = "10mminc" build_type = PROTOLATHE materials = list(MAT_PLASMA = 50000, MAT_METAL = 18000) - reagents_list = list("plasma" = 120, "napalm" = 240) + reagents_list = list(/datum/reagent/toxin/plasma = 120, /datum/reagent/napalm = 240) build_path = /obj/item/ammo_box/magazine/m10mm/fire category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -25,7 +25,7 @@ id = "10mmhp" build_type = PROTOLATHE materials = list(MAT_METAL = 40000, MAT_GLASS = 50000) - reagents_list = list("sonic_powder" = 280) + reagents_list = list(/datum/reagent/sonic_powder = 280) build_path = /obj/item/ammo_box/magazine/m10mm/hp category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm index 89e086687a..2c527ac713 100644 --- a/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/modular_citadel/code/modules/projectiles/guns/energy/energy_gun.dm @@ -43,7 +43,7 @@ obj/item/gun/energy/e_gun/cx/AltClick(mob/living/user) body_color = sanitize_hexcolor(body_color_input, desired_format=6, include_crunch=1) update_icon() -obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file) +obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file, style_flags = NONE) . = ..() if(isinhands) var/mutable_appearance/body_inhand = mutable_appearance(icon_file, "cxe_body") diff --git a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm index 735c0890af..47de736c3b 100644 --- a/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm +++ b/modular_citadel/code/modules/projectiles/guns/pumpenergy.dm @@ -99,7 +99,7 @@ . = ..() . += "Alt-click to change firing modes." -/obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file) //ammo counter for inhands +/obj/item/gun/energy/pumpaction/worn_overlays(isinhands, icon_file, style_flags = NONE) //ammo counter for inhands . = ..() var/ratio = CEILING((cell.charge / cell.maxcharge) * charge_sections, 1) var/obj/item/ammo_casing/energy/shot = ammo_type[select] diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm index 65c652434b..0985b758c6 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/MKUltra.dm @@ -131,7 +131,6 @@ Creating a chem with a low purity will make you permanently fall in love with so /datum/reagent/fermi/enthrall name = "MKUltra" - id = "enthrall" description = "A forbidden deep red mixture that increases a person's succeptability to another's words. When taken by the creator, it will enhance the draw of their voice to those affected by it." color = "#660015" // rgb: , 0, 255 taste_description = "synthetic chocolate, a base tone of alcohol, and high notes of roses" @@ -149,7 +148,6 @@ Creating a chem with a low purity will make you permanently fall in love with so /datum/reagent/fermi/enthrall/test name = "MKUltraTest" - id = "enthrallTest" description = "A forbidden deep red mixture that makes you like Fermis a little too much. Unobtainable and due to be removed from the wiki." data = list("creatorID" = "honkatonkbramblesnatch", "creatorGender" = "Mistress", "creatorName" = "Fermis Yakumo") creatorID = "honkatonkbramblesnatch"//ckey @@ -158,7 +156,6 @@ Creating a chem with a low purity will make you permanently fall in love with so purity = 1 /datum/reagent/fermi/enthrall/test/on_new() - id = "enthrall" ..() creator = get_mob_by_key(creatorID) @@ -171,7 +168,7 @@ Creating a chem with a low purity will make you permanently fall in love with so /datum/reagent/fermi/enthrall/on_mob_add(mob/living/carbon/M) . = ..() if(M.client?.prefs.cit_toggles & NEVER_HYPNO) // Just in case people are opting out of this - holder.remove_reagent(id, 10000000) + holder.del_reagent(type) return if(!ishuman(M))//Just to make sure screwy stuff doesn't happen. return @@ -221,7 +218,7 @@ Creating a chem with a low purity will make you permanently fall in love with so if(LAZYLEN(seen)) return - M.reagents.remove_reagent(id, volume) + M.reagents.del_reagent(type) FallInLove(M, pick(seen)) return @@ -230,7 +227,7 @@ Creating a chem with a low purity will make you permanently fall in love with so if(M.has_status_effect(STATUS_EFFECT_INLOVE)) return if((C in viewers(7, get_turf(M))) && (C.client)) - M.reagents.remove_reagent(id, volume) + M.reagents.del_reagent(type) FallInLove(C, M) return if (M.ckey == creatorID && creatorName == M.real_name)//If you yourself drink it, it supresses the vocal effects, for stealth. NEVERMIND ADD THIS LATER I CAN'T GET IT TO WORK @@ -282,7 +279,6 @@ Creating a chem with a low purity will make you permanently fall in love with so //Creates a gas cloud when the reaction blows up, causing everyone in it to fall in love with someone/something while it's in their system. /datum/reagent/fermi/enthrallExplo//Created in a gas cloud when it explodes name = "Gaseous MKUltra" - id = "enthrallExplo" description = "A forbidden deep red gas that overwhelms a foreign body, causing the person they next lay their eyes on to become more interesting. Studies have shown that people are 66% more likely to make friends with this in the air. Produced when MKUltra explodes." color = "#2C051A" // rgb: , 0, 255 metabolization_rate = 0.1 diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm index c72b702a97..87615ccb68 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/SDGF.dm @@ -39,7 +39,6 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING //Clone serum #chemClone /datum/reagent/fermi/SDGF //vars, mostly only care about keeping track if there's a player in the clone or not. name = "synthetic-derived growth factor" - id = "SDGF" description = "A rapidly diving mass of Embryonic stem cells. These cells are missing a nucleus and quickly replicate a host’s DNA before growing to form an almost perfect clone of the host. In some cases neural replication takes longer, though the underlying reason underneath has yet to be determined." color = "#a502e0" // rgb: 96, 0, 255 var/playerClone = FALSE @@ -49,9 +48,9 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING var/list/candies = list() var/pollStarted = FALSE var/startHunger - impure_chem = "SDGFtox" + impure_chem = /datum/reagent/impure/SDGFtox inverse_chem_val = 0.5 - inverse_chem = "SDZF" + inverse_chem = /datum/reagent/impure/SDZF can_synth = TRUE @@ -122,8 +121,8 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING SM.nutrition = startHunger/2 //Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger. - SM.reagents.add_reagent("SDGFheal", volume) - M.reagents.remove_reagent(id, volume) + SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume) + M.reagents.remove_reagent(type, volume) log_game("FERMICHEM: [volume]u of SDGFheal has been transferred to the clone") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Sentient clones made") return ..() @@ -141,7 +140,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.adjustBruteLoss(-1, 0) M.adjustFireLoss(-1, 0) M.heal_bodypart_damage(1,1) - M.reagents.remove_reagent(id, 1)//faster rate of loss. + M.reagents.remove_reagent(type, 1)//faster rate of loss. else //If there's no ghosts, but they've made a large amount, then proceed to make flavourful clone, where you become fat and useless until you split. switch(current_cycle) if(21) @@ -185,7 +184,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING log_game("FERMICHEM: [M] ckey: [M.key] has created a mindless clone of themselves") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Braindead clones made") if(87 to INFINITY) - M.reagents.remove_reagent(id, volume)//removes SGDF on completion. Has to do it this way because of how i've coded it. If some madlab gets over 1k of SDGF, they can have the clone healing. + M.reagents.remove_reagent(type, volume)//removes SGDF on completion. Has to do it this way because of how i've coded it. If some madlab gets over 1k of SDGF, they can have the clone healing. ..() @@ -265,18 +264,17 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING SM.set_species(mutation) //Transfer remaining reagent to clone. I think around 30u will make a healthy clone, otherwise they'll have clone damage, blood loss, brain damage and hunger. - SM.reagents.add_reagent("SDGFheal", volume) - M.reagents.remove_reagent(id, volume) - + SM.reagents.add_reagent(/datum/reagent/fermi/SDGFheal, volume) + log_combat(M, M, "SDGF clone-vived", src) + M.reagents.del_reagent(type) SM.updatehealth() SM.emote("gasp") - log_combat(M, M, "SDGF clone-vived", src) + return ..() //Unobtainable, used in clone spawn. /datum/reagent/fermi/SDGFheal name = "synthetic-derived healing factor" - id = "SDGFheal" description = "Leftover SDGF is transferred into the resulting clone, which quickly heals up the stresses from suddenly splitting. Restores blood, nutrition, and repaires brain and clone damage quickly. Only obtainable from using excess SDGF, and only enters the cloned body." metabolization_rate = 0.8 can_synth = FALSE @@ -292,7 +290,6 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING //Unobtainable, used if SDGF is impure but not too impure /datum/reagent/impure/SDGFtox name = "Synthetic-derived apoptosis factor" - id = "SDGFtox" description = "Impure synthetic-derived growth factor causes certain cells to undergo cell death, causing clone damage, and damaging blood cells."//i.e. tell me please, figure it's a good way to get pinged for bugfixes. metabolization_rate = 1 can_synth = FALSE @@ -305,7 +302,6 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING //Fail state of SDGF /datum/reagent/impure/SDZF name = "synthetic-derived zombie factor" - id = "SDZF" description = "A horribly peverse mass of Embryonic stem cells made real by the hands of a failed chemist. Emulates normal synthetic-derived growth factor, but produces a hostile zombie at the end of it." color = "#a502e0" // rgb: 96, 0, 255 metabolization_rate = 0.2 * REAGENTS_METABOLISM @@ -338,7 +334,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING M.adjustToxLoss(1, 0)// the warning! if(86)//mean clone time! - if (!M.reagents.has_reagent("pen_acid"))//Counterplay is pent.) + if (!M.reagents.has_reagent(/datum/reagent/medicine/pen_acid))//Counterplay is pent.) message_admins("(non-infectious) SDZF: Zombie spawned at [M] [COORD(M)]!") M.nutrition = startHunger - 500//YOU BEST BE RUNNING AWAY AFTER THIS YOU BADDIE M.next_move_modifier = 1 @@ -352,7 +348,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING ZI.name = M.real_name ZI.desc = "[M]'s clone, gone horribly wrong." log_game("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying zombie instead") - M.reagents.remove_reagent(id, 20) + M.reagents.remove_reagent(type, 20) else//easier to deal with to_chat(M, "The pentetic acid seems to have stopped the decay for now, clumping up the cells into a horrifying tumour!") @@ -362,12 +358,12 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING S.name = "Living teratoma" S.real_name = "Living teratoma"//horrifying!! S.rabid = 1//Make them an angery boi - M.reagents.remove_reagent(id, volume) + M.reagents.remove_reagent(type, volume) to_chat(M, "A large glob of the tumour suddenly splits itself from your body. You feel grossed out and slimey...") log_game("FERMICHEM: [M] ckey: [M.key]'s clone has become a horrifying teratoma instead") SSblackbox.record_feedback("tally", "fermi_chem", 1, "Zombie clones made!") if(87 to INFINITY) M.adjustToxLoss(2, 0) - M.reagents.remove_reagent(id, 1) + M.reagents.remove_reagent(type, 1) ..() diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm index 7e094eddda..a8ac66ef20 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/astrogen.dm @@ -15,7 +15,6 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die /datum/reagent/fermi/astral // Gives you the ability to astral project for a moment! name = "Astrogen" - id = "astral" description = "An opalescent murky liquid that is said to distort your soul from your being." color = "#A080H4" // rgb: , 0, 255 taste_description = "your mind" @@ -41,7 +40,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die if(origin.mind && origin.mind != originalmind) to_chat(originalmind.current, "There's a foreign presence in your body blocking your return!") return ..() - if(origin.reagents.has_reagent("astral") ) + if(origin.reagents.has_reagent(/datum/reagent/fermi/astral) ) var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in origin.reagents.reagent_list if(As.current_cycle < 10) to_chat(originalmind.current, "The intensity of the astrogen in your body is too much allow you to return to yourself yet!") @@ -90,7 +89,7 @@ I'd like to point out from my calculations it'll take about 60-80 minutes to die if(prob(50)) to_chat(G, "The high conentration of Astrogen in your blood causes you to lapse your concentration for a moment, bringing your projection back to yourself!") do_teleport(G, M.loc) - M.reagents.remove_reagent(id, current_cycle/10, FALSE)//exponent + metabolization_rate = current_cycle/10 //exponential sleepytime+=5 if(G)//This is a mess because of how slow qdel is, so this is all to stop runtimes. if(G.mind) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm index 5f3fc61fa7..6262dc1a28 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/eigentstasium.dm @@ -11,7 +11,6 @@ /datum/reagent/fermi/eigenstate name = "Eigenstasium" - id = "eigenstate" description = "A strange mixture formed from a controlled reaction of bluespace with plasma, that causes localised eigenstate fluxuations within the patient" taste_description = "wiggly cosmic dust." color = "#5020F4" // rgb: 50, 20, 255 @@ -69,7 +68,7 @@ /datum/reagent/fermi/eigenstate/on_mob_delete(mob/living/M) //returns back to original location do_sparks(5,FALSE,M) to_chat(M, "You feel your wavefunction collapse!") - if(!M.reagents.has_reagent("stabilizing_agent")) + if(!M.reagents.has_reagent(/datum/reagent/stabilizing_agent)) do_teleport(M, location_return, 0, asoundin = 'sound/effects/phasein.ogg') //Teleports home do_sparks(5,FALSE,M) qdel(Eigenstate) @@ -169,7 +168,7 @@ if(prob(20)) do_sparks(5,FALSE,M) - SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[id]_overdose")//holdover until above fix works + SEND_SIGNAL(M, COMSIG_CLEAR_MOOD_EVENT, "[type]_overdose")//holdover until above fix works ..() /datum/reagent/fermi/eigenstate/reaction_turf(turf/T, reac_volume) diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm index 6732fb06a5..b6b9c0bf34 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/enlargement.dm @@ -20,15 +20,14 @@ /datum/reagent/fermi/breast_enlarger name = "Succubus milk" - id = "breast_enlarger" description = "A volatile collodial mixture derived from milk that encourages mammary production via a potent estrogen mix." color = "#E60584" // rgb: 96, 0, 255 taste_description = "a milky ice cream like flavour." overdose_threshold = 17 metabolization_rate = 0.25 - impure_chem = "BEsmaller" //If you make an inpure chem, it stalls growth + impure_chem = /datum/reagent/fermi/BEsmaller //If you make an inpure chem, it stalls growth inverse_chem_val = 0.35 - inverse_chem = "BEsmaller" //At really impure vols, it just becomes 100% inverse + inverse_chem = /datum/reagent/fermi/BEsmaller //At really impure vols, it just becomes 100% inverse can_synth = FALSE var/message_spam = FALSE @@ -44,7 +43,7 @@ M.Knockdown(50) M.Stun(50) B.throw_at(T2, 8, 1) - M.reagents.remove_reagent(id, volume) + M.reagents.del_reagent(type) return var/mob/living/carbon/human/H = M if(!H.getorganslot(ORGAN_SLOT_BREASTS) && H.emergent_genital_call()) @@ -78,7 +77,7 @@ B.cached_size = 0 B.prev_size = 0 to_chat(H, "Your chest feels warm, tingling with newfound sensitivity.") - H.reagents.remove_reagent(id, 5) + H.reagents.remove_reagent(type, 5) B.Insert(H) //If they have them, increase size. If size is comically big, limit movement and rip clothes. @@ -122,7 +121,6 @@ /datum/reagent/fermi/BEsmaller name = "Modesty milk" - id = "BEsmaller" description = "A volatile collodial mixture derived from milk that encourages mammary reduction via a potent estrogen mix. Produced by reacting impure Succubus milk." color = "#E60584" // rgb: 96, 0, 255 taste_description = "a milky ice cream like flavour." @@ -140,7 +138,6 @@ /datum/reagent/fermi/BEsmaller_hypo name = "Rectify milk" //Rectify - id = "BEsmaller_hypo" color = "#E60584" taste_description = "a milky ice cream like flavour." metabolization_rate = 0.25 @@ -179,15 +176,14 @@ //Since someone else made this in the time it took me to PR it, I merged them. /datum/reagent/fermi/penis_enlarger // Due to popular demand...! name = "Incubus draft" - id = "penis_enlarger" description = "A volatile collodial mixture derived from various masculine solutions that encourages a larger gentleman's package via a potent testosterone mix, formula derived from a collaboration from Fermichem and Doctor Ronald Hyatt, who is well known for his phallus palace." //The toxic masculinity thing is a joke because I thought it would be funny to include it in the reagents, but I don't think many would find it funny? dumb color = "#888888" // This is greyish..? taste_description = "chinese dragon powder" overdose_threshold = 17 //ODing makes you male and removes female genitals metabolization_rate = 0.5 - impure_chem = "PEsmaller" //If you make an inpure chem, it stalls growth + impure_chem = /datum/reagent/fermi/PEsmaller //If you make an inpure chem, it stalls growth inverse_chem_val = 0.35 - inverse_chem = "PEsmaller" //At really impure vols, it just becomes 100% inverse and shrinks instead. + inverse_chem = /datum/reagent/fermi/PEsmaller //At really impure vols, it just becomes 100% inverse and shrinks instead. can_synth = FALSE var/message_spam = FALSE @@ -203,7 +199,7 @@ M.Knockdown(50) M.Stun(50) P.throw_at(T2, 8, 1) - M.reagents.remove_reagent(id, volume) + M.reagents.del_reagent(type) return var/mob/living/carbon/human/H = M if(!H.getorganslot(ORGAN_SLOT_PENIS) && H.emergent_genital_call()) @@ -228,7 +224,7 @@ P.length = 1 to_chat(H, "Your groin feels warm, as you feel a newly forming bulge down below.") P.prev_length = 1 - H.reagents.remove_reagent(id, 5) + H.reagents.remove_reagent(type, 5) P.Insert(H) P.modify_size(0.1) @@ -271,7 +267,6 @@ /datum/reagent/fermi/PEsmaller // Due to cozmo's request...! name = "Chastity draft" - id = "PEsmaller" description = "A volatile collodial mixture derived from various masculine solutions that encourages a smaller gentleman's package via a potent testosterone mix. Produced by reacting impure Incubus draft." color = "#888888" // This is greyish..? taste_description = "chinese dragon powder" @@ -293,7 +288,6 @@ /datum/reagent/fermi/PEsmaller_hypo name = "Rectify draft" - id = "PEsmaller_hypo" color = "#888888" // This is greyish..? taste_description = "chinese dragon powder" description = "A medicine used to treat organomegaly in a patient's penis." diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index b3ee8f5b7f..e9c5733584 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -3,13 +3,12 @@ /datum/reagent/fermi name = "Fermi" //This should never exist, but it does so that it can exist in the case of errors.. - id = "fermi" taste_description = "affection and love!" can_synth = FALSE value = 20 - impure_chem = "fermiTox"// What chemical is metabolised with an inpure reaction + impure_chem = /datum/reagent/impure/fermiTox // What chemical is metabolised with an inpure reaction inverse_chem_val = 0.25 // If the impurity is below 0.5, replace ALL of the chem with inverse_chemupon metabolising - inverse_chem = "fermiTox" + inverse_chem = /datum/reagent/impure/fermiTox //This should process fermichems to find out how pure they are and what effect to do. @@ -32,7 +31,6 @@ /datum/reagent/fermi/hatmium //for hatterhat name = "Hat growth serium" - id = "hatmium" description = "A strange substance that draws in a hat from the hat dimention." color = "#7c311a" // rgb: , 0, 255 taste_description = "like jerky, whiskey and an off aftertaste of a crypt." @@ -80,7 +78,6 @@ /datum/reagent/fermi/furranium name = "Furranium" - id = "furranium" description = "OwO whats this?" color = "#f9b9bc" // rgb: , 0, 255 taste_description = "dewicious degenyewacy" @@ -170,13 +167,12 @@ /datum/reagent/fermi/nanite_b_gone name = "Nanite bane" - id = "nanite_b_gone" description = "A stablised EMP that is highly volatile, shocking small nano machines that will kill them off at a rapid rate in a patient's system." color = "#708f8f" overdose_threshold = 15 - impure_chem = "nanite_b_goneTox" //If you make an inpure chem, it stalls growth + impure_chem = /datum/reagent/fermi/nanite_b_goneTox //If you make an inpure chem, it stalls growth inverse_chem_val = 0.25 - inverse_chem = "nanite_b_goneTox" //At really impure vols, it just becomes 100% inverse + inverse_chem = /datum/reagent/fermi/nanite_b_goneTox //At really impure vols, it just becomes 100% inverse taste_description = "what can only be described as licking a battery." pH = 9 value = 90 @@ -214,7 +210,6 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) /datum/reagent/fermi/nanite_b_goneTox name = "Electromagnetic crystals" - id = "nanite_b_goneTox" description = "Causes items upon the patient to sometimes short out, as well as causing a shock in the patient, if the residual charge between the crystals builds up to sufficient quantities" metabolization_rate = 0.5 chemical_flags = REAGENT_INVISIBLE @@ -237,7 +232,6 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) /datum/reagent/fermi/fermiAcid name = "Acid vapour" - id = "fermiAcid" description = "Someone didn't do like an otter, and add acid to water." taste_description = "acid burns, ow" color = "#FFFFFF" @@ -280,7 +274,6 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) /datum/reagent/fermi/fermiTest name = "Fermis Test Reagent" - id = "fermiTest" description = "You should be really careful with this...! Also, how did you get this?" chemical_flags = REAGENT_FORCEONNEW can_synth = FALSE @@ -290,7 +283,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) if(LAZYLEN(holder.reagent_list) == 1) return else - holder.remove_reagent("fermiTest", volume)//Avoiding recurrsion + holder.del_reagent(type)//Avoiding recurrsion var/location = get_turf(holder.my_atom) if(cached_purity < 0.34 || cached_purity == 1) var/datum/effect_system/foam_spread/s = new() @@ -303,10 +296,10 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) if(cached_purity >= 0.67) for (var/datum/reagent/reagent in holder.reagent_list) if (istype(reagent, /datum/reagent/fermi)) - var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.id] + var/datum/chemical_reaction/fermi/Ferm = GLOB.chemical_reagents_list[reagent.type] Ferm.FermiExplode(src, holder.my_atom, holder, holder.total_volume, holder.chem_temp, holder.pH) else - var/datum/chemical_reaction/Ferm = GLOB.chemical_reagents_list[reagent.id] + var/datum/chemical_reaction/Ferm = GLOB.chemical_reagents_list[reagent.type] Ferm.on_reaction(holder, reagent.volume) for(var/mob/M in viewers(8, location)) to_chat(M, "The solution reacts dramatically, with a meow!") @@ -315,7 +308,6 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) /datum/reagent/fermi/acidic_buffer name = "Acidic buffer" - id = "acidic_buffer" description = "This reagent will consume itself and move the pH of a beaker towards acidity when added to another." color = "#fbc314" pH = 0 @@ -323,7 +315,7 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) //Consumes self on addition and shifts pH /datum/reagent/fermi/acidic_buffer/on_new(datapH) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return ..() data = datapH if(LAZYLEN(holder.reagent_list) == 1) @@ -333,19 +325,18 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) for(var/mob/M in seen) to_chat(M, "The beaker fizzes as the pH changes!") playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1) - holder.remove_reagent(id, volume, ignore_pH = TRUE) + holder.remove_reagent(type, volume, ignore_pH = TRUE) ..() /datum/reagent/fermi/basic_buffer name = "Basic buffer" - id = "basic_buffer" description = "This reagent will consume itself and move the pH of a beaker towards alkalinity when added to another." color = "#3853a4" pH = 14 can_synth = TRUE /datum/reagent/fermi/basic_buffer/on_new(datapH) - if(holder.has_reagent("stabilizing_agent")) + if(holder.has_reagent(/datum/reagent/stabilizing_agent)) return ..() data = datapH if(LAZYLEN(holder.reagent_list) == 1) @@ -355,14 +346,13 @@ datum/reagent/fermi/nanite_b_gone/reaction_obj(obj/O, reac_volume) for(var/mob/M in seen) to_chat(M, "The beaker froths as the pH changes!") playsound(get_turf(holder.my_atom), 'sound/FermiChem/bufferadd.ogg', 50, 1) - holder.remove_reagent(id, volume, ignore_pH = TRUE) + holder.remove_reagent(type, volume, ignore_pH = TRUE) ..() //Turns you into a cute catto while it's in your system. //If you manage to gamble perfectly, makes you have cat ears after you transform back. But really, you shouldn't end up with that with how random it is. /datum/reagent/fermi/secretcatchem //Should I hide this from code divers? A secret cit chem? name = "secretcatchem" //an attempt at hiding it - id = "secretcatchem" description = "An illegal and hidden chem that turns people into cats. It's said that it's so rare and unstable that having it means you've been blessed. If used on someone in crit, it will turn them into a cat permanently, until the cat is killed." taste_description = "hairballs and cream" color = "#ffc224" diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm index fa4f48172b..8668ef76f0 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/healing.dm @@ -1,14 +1,13 @@ /datum/reagent/fermi/yamerol name = "Yamerol" - id = "yamerol" description = "For when you've trouble speaking or breathing, just yell YAMEROL! A chem that helps soothe any congestion problems and at high concentrations restores damaged lungs and tongues!" taste_description = "a weird, syrupy flavour, yamero" color = "#68e83a" pH = 8.6 overdose_threshold = 35 - impure_chem = "yamerol_tox" + impure_chem = /datum/reagent/impure/yamerol_tox inverse_chem_val = 0.4 - inverse_chem = "yamerol_tox" + inverse_chem = /datum/reagent/impure/yamerol_tox can_synth = TRUE /datum/reagent/fermi/yamerol/on_mob_life(mob/living/carbon/C) @@ -34,7 +33,7 @@ qdel(T) nT.Insert(C) to_chat(C, "You feel your tongue.... unfluffify...?") - holder.remove_reagent(src.id, "10") + holder.remove_reagent(type, 10) ..() /datum/reagent/fermi/yamerol/overdose_process(mob/living/carbon/C) @@ -50,7 +49,7 @@ T = new() T.Insert(C) to_chat(C, "You feel your tongue reform in your mouth.") - holder.remove_reagent(src.id, "10") + holder.remove_reagent(type, 10) else if((oT.name == "fluffy tongue") && (purity == 1)) var/obj/item/organ/tongue/T @@ -62,19 +61,18 @@ qdel(oT) T.Insert(C) to_chat(C, "You feel your tongue.... unfluffify...?") - holder.remove_reagent(src.id, "10") + holder.remove_reagent(type, 10) if(!C.getorganslot(ORGAN_SLOT_LUNGS)) var/obj/item/organ/lungs/yamerol/L = new() L.Insert(C) to_chat(C, "You feel the yamerol merge in your chest.") - holder.remove_reagent(src.id, "10") + holder.remove_reagent(type, 10) C.adjustOxyLoss(-3) ..() /datum/reagent/impure/yamerol_tox name = "Yamer oh no" - id = "yamerol_tox" description = "A dangerous, cloying toxin that stucks to a patient’s respiratory system, damaging their tongue, lungs and causing suffocation." taste_description = "a weird, syrupy flavour, yamero" color = "#68e83a" @@ -96,7 +94,6 @@ /datum/reagent/synthtissue name = "Synthtissue" - id = "synthtissue" description = "Synthetic tissue used for grafting onto damaged organs during surgery, or for treating limb damage. Has a very tight growth window between 305-320, any higher and the temperature will cause the cells to die. Additionally, growth time is considerably long, so chemists are encouraged to leave beakers with said reaction ongoing, while they tend to their other duties." pH = 7.6 metabolization_rate = 0.05 //Give them time to graft @@ -143,7 +140,7 @@ if(data["grown_volume"] > 175) //I don't think this is even possible, but damn to I want to see if someone can (bare in mind it takes 2s to grow 0.05u) if(volume >= 14) if(C.regenerate_organs(only_one = TRUE)) - C.reagents.remove_reagent(id, 15) + C.reagents.remove_reagent(type, 15) to_chat(C, "You feel something reform inside of you!") data["injected_vol"] -= metabolization_rate diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm index c8ebde11d9..87f9d71ce2 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,6 +1,5 @@ /datum/reagent/syndicateadrenals name = "Syndicate Adrenaline" - id = "syndicateadrenals" description = "Regenerates your stamina and increases your reaction time." color = "#E62111" overdose_threshold = 6 diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 5ea1fc77be..31e319edd3 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -9,19 +9,19 @@ /datum/chemical_reaction/proc/FermiFinish(datum/reagents/holder, var/atom/my_atom, reactVol) if(clear_conversion == REACTION_CLEAR_IMPURE | REACTION_CLEAR_INVERSE) for(var/id in results) - var/datum/reagent/R = my_atom.reagents.has_reagent("[id]") + var/datum/reagent/R = my_atom.reagents.has_reagent(id) if(R.purity == 1) continue var/cached_volume = R.volume if(clear_conversion == REACTION_CLEAR_INVERSE && R.inverse_chem) if(R.inverse_chem_val > R.purity) - my_atom.reagents.remove_reagent(R.id, cached_volume, FALSE) + my_atom.reagents.remove_reagent(R.type, cached_volume, FALSE) my_atom.reagents.add_reagent(R.inverse_chem, cached_volume, FALSE, other_purity = 1) else if (clear_conversion == REACTION_CLEAR_IMPURE && R.impure_chem) var/impureVol = cached_volume * (1 - R.purity) - my_atom.reagents.remove_reagent(R.id, (impureVol), FALSE) + my_atom.reagents.remove_reagent(R.type, (impureVol), FALSE) my_atom.reagents.add_reagent(R.impure_chem, impureVol, FALSE, other_purity = 1) R.cached_purity = R.purity R.purity = 1 @@ -76,14 +76,15 @@ var/datum/effect_system/smoke_spread/chem/s = new() R.my_atom = my_atom //Give the gas a fingerprint - for (var/datum/reagent/reagent in R0.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding - R.add_reagent(reagent.id, reagent.volume/3) //Seems fine? I think I fixed the infinite explosion bug. + for (var/A in R0.reagent_list) //make gas for reagents, has to be done this way, otherwise it never stops Exploding + var/datum/reagent/R2 = A + R.add_reagent(R2.type, R2.volume/3) //Seems fine? I think I fixed the infinite explosion bug. - if (reagent.purity < 0.6) - ImpureTot = (ImpureTot + (1-reagent.purity)) / 2 + if (R2.purity < 0.6) + ImpureTot = (ImpureTot + (1-R2.purity)) / 2 if(pH < 4) //if acidic, make acid spray - R.add_reagent("fermiAcid", (volume/3)) + R.add_reagent(/datum/reagent/impure/fermiTox, (volume/3)) if(R.reagent_list) s.set_up(R, (volume/5), my_atom) s.start() @@ -103,9 +104,9 @@ /datum/chemical_reaction/fermi/eigenstate name = "Eigenstasium" - id = "eigenstate" - results = list("eigenstate" = 1) - required_reagents = list("bluespace" = 1, "stable_plasma" = 1, "caramel" = 1) + id = /datum/reagent/fermi/eigenstate + results = list(/datum/reagent/fermi/eigenstate = 1) + required_reagents = list(/datum/reagent/bluespace = 1, /datum/reagent/stable_plasma = 1, /datum/reagent/consumable/caramel = 1) mix_message = "the reaction zaps suddenly!" //FermiChem vars: OptimalTempMin = 350 // Lower area of bell curve for determining heat based rate reactions @@ -137,9 +138,9 @@ //serum /datum/chemical_reaction/fermi/SDGF name = "Synthetic-derived growth factor" - id = "SDGF" - results = list("SDGF" = 3) - required_reagents = list("stable_plasma" = 1.5, "clonexadone" = 1.5, "uranium" = 1.5, "synthflesh" = 1.5) + id = /datum/reagent/fermi/SDGF + results = list(/datum/reagent/fermi/SDGF = 3) + required_reagents = list(/datum/reagent/stable_plasma = 1.5, /datum/reagent/medicine/clonexadone = 1.5, /datum/reagent/uranium = 1.5, /datum/reagent/medicine/synthflesh = 1.5) mix_message = "the reaction gives off a blorble!" required_temp = 1 //FermiChem vars: @@ -178,9 +179,9 @@ /datum/chemical_reaction/fermi/breast_enlarger name = "Sucubus milk" - id = "breast_enlarger" - results = list("breast_enlarger" = 8) - required_reagents = list("salglu_solution" = 1, "milk" = 1, "synthflesh" = 2, "silicon" = 3, "aphro" = 3) + id = /datum/reagent/fermi/breast_enlarger + results = list(/datum/reagent/fermi/breast_enlarger = 8) + required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/silicon = 3, /datum/reagent/drug/aphrodisiac = 3) mix_message = "the reaction gives off a mist of milk." //FermiChem vars: OptimalTempMin = 200 @@ -203,8 +204,8 @@ var/datum/reagent/fermi/breast_enlarger/BE = locate(/datum/reagent/fermi/breast_enlarger) in my_atom.reagents.reagent_list var/cached_volume = BE.volume if(BE.purity < 0.35) - holder.remove_reagent(src.id, cached_volume) - holder.add_reagent("BEsmaller", cached_volume) + holder.remove_reagent(type, cached_volume) + holder.add_reagent(/datum/reagent/fermi/BEsmaller, cached_volume) /datum/chemical_reaction/fermi/breast_enlarger/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH) @@ -218,9 +219,9 @@ /datum/chemical_reaction/fermi/penis_enlarger name = "Incubus draft" - id = "penis_enlarger" - results = list("penis_enlarger" = 8) - required_reagents = list("blood" = 5, "synthflesh" = 2, "carbon" = 2, "aphro" = 2, "salglu_solution" = 1) + id = /datum/reagent/fermi/penis_enlarger + results = list(/datum/reagent/fermi/penis_enlarger = 8) + required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/medicine/synthflesh = 2, /datum/reagent/carbon = 2, /datum/reagent/drug/aphrodisiac = 2, /datum/reagent/medicine/salglu_solution = 1) mix_message = "the reaction gives off a spicy mist." //FermiChem vars: OptimalTempMin = 200 @@ -252,14 +253,14 @@ var/datum/reagent/fermi/penis_enlarger/PE = locate(/datum/reagent/fermi/penis_enlarger) in my_atom.reagents.reagent_list var/cached_volume = PE.volume if(PE.purity < 0.35) - holder.remove_reagent(src.id, cached_volume) - holder.add_reagent("PEsmaller", cached_volume) + holder.remove_reagent(type, cached_volume) + holder.add_reagent(/datum/reagent/fermi/PEsmaller, cached_volume) /datum/chemical_reaction/fermi/astral name = "Astrogen" - id = "astral" - results = list("astral" = 5) - required_reagents = list("eigenstate" = 1, "plasma" = 3, "synaptizine" = 1, "aluminium" = 5) + id = /datum/reagent/fermi/astral + results = list(/datum/reagent/fermi/astral = 5) + required_reagents = list(/datum/reagent/fermi/eigenstate = 1, /datum/reagent/toxin/plasma = 3, /datum/reagent/medicine/synaptizine = 1, /datum/reagent/aluminium = 5) //FermiChem vars: OptimalTempMin = 700 OptimalTempMax = 800 @@ -278,12 +279,12 @@ PurityMin = 0.25 -/datum/chemical_reaction/fermi/enthrall/ //check this +/datum/chemical_reaction/fermi/enthrall //check this name = "MKUltra" - id = "enthrall" - results = list("enthrall" = 5) - required_reagents = list("cocoa" = 1, "bluespace" = 1, "mindbreaker" = 1, "psicodine" = 1, "happiness" = 1) - required_catalysts = list("blood" = 1) + id = /datum/reagent/fermi/enthrall + results = list(/datum/reagent/fermi/enthrall = 5) + required_reagents = list(/datum/reagent/consumable/coco = 1, /datum/reagent/bluespace = 1, /datum/reagent/toxin/mindbreaker = 1, /datum/reagent/medicine/psicodine = 1, /datum/reagent/drug/happiness = 1) + required_catalysts = list(/datum/reagent/blood = 1) mix_message = "the reaction gives off a burgundy plume of smoke!" //FermiChem vars: OptimalTempMin = 780 @@ -325,7 +326,8 @@ //So slimes can play too. /datum/chemical_reaction/fermi/enthrall/slime - required_catalysts = list("jellyblood" = 1) + id = "enthrall2" + required_catalysts = list(/datum/reagent/blood/jellyblood = 1) /datum/chemical_reaction/fermi/enthrall/slime/FermiFinish(datum/reagents/holder, var/atom/my_atom) var/datum/reagent/blood/jellyblood/B = locate(/datum/reagent/blood/jellyblood) in my_atom.reagents.reagent_list//The one line change. @@ -350,16 +352,16 @@ var/turf/T = get_turf(my_atom) var/datum/reagents/R = new/datum/reagents(1000) var/datum/effect_system/smoke_spread/chem/s = new() - R.add_reagent("enthrallExplo", volume) + R.add_reagent(/datum/reagent/fermi/enthrallExplo, volume) s.set_up(R, volume/2, T) s.start() my_atom.reagents.clear_reagents() /datum/chemical_reaction/fermi/hatmium // done name = "Hat growth serum" - id = "hatmium" - results = list("hatmium" = 5) - required_reagents = list("ethanol" = 1, "nutriment" = 3, "cooking_oil" = 2, "iron" = 1, "gold" = 3) + id = /datum/reagent/fermi/hatmium + results = list(/datum/reagent/fermi/hatmium = 5) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/cooking_oil = 2, /datum/reagent/iron = 1, /datum/reagent/gold = 3) //mix_message = "" //FermiChem vars: OptimalTempMin = 500 @@ -392,9 +394,9 @@ /datum/chemical_reaction/fermi/furranium name = "Furranium" - id = "furranium" - results = list("furranium" = 5) - required_reagents = list("aphro" = 1, "moonsugar" = 1, "silver" = 2, "salglu_solution" = 1) + id = /datum/reagent/fermi/furranium + results = list(/datum/reagent/fermi/furranium = 5) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/moonsugar = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1) mix_message = "You think you can hear a howl come from the beaker." //FermiChem vars: OptimalTempMin = 350 @@ -413,7 +415,8 @@ PurityMin = 0.3 /datum/chemical_reaction/fermi/furranium/organic - required_reagents = list("aphro" = 1, "catnip" = 1, "silver" = 2, "salglu_solution" = 1) + id = "furranium_organic" + required_reagents = list(/datum/reagent/drug/aphrodisiac = 1, /datum/reagent/pax/catnip = 1, /datum/reagent/silver = 2, /datum/reagent/medicine/salglu_solution = 1) //FOR INSTANT REACTIONS - DO NOT MULTIPLY LIMIT BY 10. //There's a weird rounding error or something ugh. @@ -421,9 +424,9 @@ //Nano-b-gone /datum/chemical_reaction/fermi/nanite_b_gone//done test name = "Naninte bain" - id = "nanite_b_gone" - results = list("nanite_b_gone" = 4) - required_reagents = list("synthflesh" = 1, "uranium" = 1, "iron" = 1, "salglu_solution" = 1) + id = /datum/reagent/fermi/nanite_b_gone + results = list(/datum/reagent/fermi/nanite_b_gone = 4) + required_reagents = list(/datum/reagent/medicine/synthflesh = 1, /datum/reagent/uranium = 1, /datum/reagent/iron = 1, /datum/reagent/medicine/salglu_solution = 1) mix_message = "the reaction gurgles, encapsulating the reagents in flesh before the emp can be set off." required_temp = 450//To force fermireactions before EMP. //FermiChem vars: @@ -443,9 +446,9 @@ /datum/chemical_reaction/fermi/acidic_buffer//done test name = "Acetic acid buffer" - id = "acidic_buffer" - results = list("acidic_buffer" = 10) //acetic acid - required_reagents = list("salglu_solution" = 1, "ethanol" = 3, "oxygen" = 3, "water" = 3) + id = /datum/reagent/fermi/acidic_buffer + results = list(/datum/reagent/fermi/acidic_buffer = 10) //acetic acid + required_reagents = list(/datum/reagent/medicine/salglu_solution = 1, /datum/reagent/consumable/ethanol = 3, /datum/reagent/oxygen = 3, /datum/reagent/water = 3) //FermiChem vars: OptimalTempMin = 250 OptimalTempMax = 500 @@ -470,10 +473,10 @@ /datum/chemical_reaction/fermi/basic_buffer//done test name = "Ethyl Ethanoate buffer" - id = "basic_buffer" - results = list("basic_buffer" = 5) - required_reagents = list("lye" = 1, "ethanol" = 2, "water" = 2) - required_catalysts = list("sacid" = 1) //vagely acetic + id = /datum/reagent/fermi/basic_buffer + results = list(/datum/reagent/fermi/basic_buffer = 5) + required_reagents = list(/datum/reagent/lye = 1, /datum/reagent/consumable/ethanol = 2, /datum/reagent/water = 2) + required_catalysts = list(/datum/reagent/toxin/acid = 1) //vagely acetic //FermiChem vars: OptimalTempMin = 250 OptimalTempMax = 500 @@ -502,10 +505,10 @@ //ChemReactionVars: /datum/chemical_reaction/fermi/secretcatchem //DONE name = "secretcatchem" - id = "secretcatchem" - results = list("secretcatchem" = 5) - required_reagents = list("stable_plasma" = 1, "caramel" = 1, "cream" = 1, "clonexadone" = 1)//Yes this will make a kitty if you don't lucky guess. It'll eat all your reagents too. - required_catalysts = list("SDGF" = 1) + id = /datum/reagent/fermi/secretcatchem + results = list(/datum/reagent/fermi/secretcatchem = 5) + required_reagents = list(/datum/reagent/stable_plasma = 1, /datum/reagent/consumable/caramel = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/medicine/clonexadone = 1)//Yes this will make a kitty if you don't lucky guess. It'll eat all your reagents too. + required_catalysts = list(/datum/reagent/fermi/SDGF = 1) required_temp = 500 mix_message = "the reaction gives off a meow!" mix_sound = "modular_citadel/sound/voice/merowr.ogg" @@ -536,8 +539,8 @@ HIonRelease += (rand(-25, 25)/100) RateUpLim += (rand(1, 1000)/100) PurityMin += (rand(-1, 1)/10) - var/additions = list("aluminium", "silver", "gold", "plasma", "silicon", "uranium", "milk") - required_reagents[pick(additions)] = rand(1, 5)//weird + var/picked = pick(/datum/reagent/aluminium, /datum/reagent/silver, /datum/reagent/gold, /datum/reagent/toxin/plasma, /datum/reagent/silicon, /datum/reagent/uranium, /datum/reagent/consumable/milk) + required_reagents[picked] = rand(1, 5)//weird /datum/chemical_reaction/fermi/secretcatchem/FermiFinish(datum/reagents/holder, var/atom/my_atom) SSblackbox.record_feedback("tally", "catgirlium")//log @@ -555,9 +558,9 @@ /datum/chemical_reaction/fermi/yamerol//done test name = "Yamerol" - id = "yamerol" - results = list("yamerol" = 3) - required_reagents = list("perfluorodecalin" = 1, "salbutamol" = 1, "water" = 1) + id = /datum/reagent/fermi/yamerol + results = list(/datum/reagent/fermi/yamerol = 3) + required_reagents = list(/datum/reagent/medicine/perfluorodecalin = 1, /datum/reagent/medicine/salbutamol = 1, /datum/reagent/water = 1) //FermiChem vars: OptimalTempMin = 300 OptimalTempMax = 500 diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index f6b70eb7b6..b907c27329 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -1,7 +1,6 @@ //body bluids /datum/reagent/consumable/semen name = "Semen" - id = "semen" description = "Sperm from some animal. I bet you'll drink this out of a bucket someday." taste_description = "something salty" taste_mult = 2 //Not very overpowering flavor @@ -45,7 +44,6 @@ /datum/reagent/consumable/femcum name = "Female Ejaculate" - id = "femcum" description = "Vaginal lubricant found in most mammals and other animals of similar nature. Where you found this is your own business." taste_description = "something with a tang" // wew coders who haven't eaten out a girl. taste_mult = 2 @@ -93,7 +91,6 @@ /datum/reagent/drug/aphrodisiac name = "Crocin" - id = "aphro" description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac." taste_description = "strawberry roofies" taste_mult = 2 //Hide the roofies in stronger flavors @@ -112,7 +109,6 @@ /datum/reagent/drug/aphrodisiacplus name = "Hexacrocin" - id = "aphro+" description = "Chemically condensed form of basic crocin. This aphrodisiac is extremely powerful and addictive in most animals.\ Addiction withdrawals can cause brain damage and shortness of breath. Overdosage can lead to brain damage and a \ permanent increase in libido (commonly referred to as 'bimbofication')." @@ -167,7 +163,6 @@ /datum/reagent/drug/anaphrodisiac name = "Camphor" - id = "anaphro" description = "Naturally found in some species of evergreen trees, camphor is a waxy substance. When injested by most animals, it acts as an anaphrodisiac\ , reducing libido and calming them. Non-habit forming and not addictive." taste_description = "dull bitterness" @@ -182,7 +177,6 @@ /datum/reagent/drug/anaphrodisiacplus name = "Hexacamphor" - id = "anaphro+" description = "Chemically condensed camphor. Causes an extreme reduction in libido and a permanent one if overdosed. Non-addictive." taste_description = "tranquil celibacy" color = "#D9D9D9"//rgb(217, 217, 217) @@ -206,32 +200,32 @@ //recipes /datum/chemical_reaction/aphro name = "crocin" - id = "aphro" - results = list("aphro" = 6) - required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "water" = 1) + id = /datum/reagent/drug/aphrodisiac + results = list(/datum/reagent/drug/aphrodisiac = 6) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/water = 1) required_temp = 400 mix_message = "The mixture boils off a pink vapor..."//The water boils off, leaving the crocin /datum/chemical_reaction/aphroplus name = "hexacrocin" - id = "aphro+" - results = list("aphro+" = 1) - required_reagents = list("aphro" = 6, "phenol" = 1) + id = /datum/reagent/drug/aphrodisiacplus + results = list(/datum/reagent/drug/aphrodisiacplus = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 6, /datum/reagent/phenol = 1) required_temp = 400 mix_message = "The mixture rapidly condenses and darkens in color..." /datum/chemical_reaction/anaphro name = "camphor" - id = "anaphro" - results = list("anaphro" = 6) - required_reagents = list("carbon" = 2, "hydrogen" = 2, "oxygen" = 2, "sulfur" = 1) + id = /datum/reagent/drug/anaphrodisiac + results = list(/datum/reagent/drug/anaphrodisiac = 6) + required_reagents = list(/datum/reagent/carbon = 2, /datum/reagent/hydrogen = 2, /datum/reagent/oxygen = 2, /datum/reagent/sulfur = 1) required_temp = 400 mix_message = "The mixture boils off a yellow, smelly vapor..."//Sulfur burns off, leaving the camphor /datum/chemical_reaction/anaphroplus name = "pentacamphor" - id = "anaphro+" - results = list("anaphro+" = 1) - required_reagents = list("anaphro" = 5, "acetone" = 1) + id = /datum/reagent/drug/anaphrodisiacplus + results = list(/datum/reagent/drug/anaphrodisiacplus = 1) + required_reagents = list(/datum/reagent/drug/aphrodisiac = 5, /datum/reagent/acetone = 1) required_temp = 300 mix_message = "The mixture thickens and heats up slighty..." diff --git a/modular_citadel/icons/mob/widerobot.dmi b/modular_citadel/icons/mob/widerobot.dmi index 7e9da953c9..43a6863ece 100644 Binary files a/modular_citadel/icons/mob/widerobot.dmi and b/modular_citadel/icons/mob/widerobot.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 176a5456ae..1964550aa9 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -229,6 +229,7 @@ #include "code\controllers\configuration\entries\dbconfig.dm" #include "code\controllers\configuration\entries\donator.dm" #include "code\controllers\configuration\entries\dynamic.dm" +#include "code\controllers\configuration\entries\fail2topic.dm" #include "code\controllers\configuration\entries\game_options.dm" #include "code\controllers\configuration\entries\general.dm" #include "code\controllers\subsystem\acid.dm" @@ -245,6 +246,7 @@ #include "code\controllers\subsystem\dcs.dm" #include "code\controllers\subsystem\disease.dm" #include "code\controllers\subsystem\events.dm" +#include "code\controllers\subsystem\fail2topic.dm" #include "code\controllers\subsystem\fire_burning.dm" #include "code\controllers\subsystem\garbage.dm" #include "code\controllers\subsystem\icon_smooth.dm" @@ -471,6 +473,7 @@ #include "code\datums\elements\cleaning.dm" #include "code\datums\elements\earhealing.dm" #include "code\datums\elements\ghost_role_eligibility.dm" +#include "code\datums\elements\wuv.dm" #include "code\datums\helper_datums\events.dm" #include "code\datums\helper_datums\getrev.dm" #include "code\datums\helper_datums\icon_snapshot.dm" @@ -1441,6 +1444,7 @@ #include "code\modules\assembly\igniter.dm" #include "code\modules\assembly\infrared.dm" #include "code\modules\assembly\mousetrap.dm" +#include "code\modules\assembly\playback.dm" #include "code\modules\assembly\proximity.dm" #include "code\modules\assembly\shock_kit.dm" #include "code\modules\assembly\signaler.dm" @@ -2031,6 +2035,7 @@ #include "code\modules\mining\mint.dm" #include "code\modules\mining\money_bag.dm" #include "code\modules\mining\ores_coins.dm" +#include "code\modules\mining\point_bank.dm" #include "code\modules\mining\satchel_ore_boxdm.dm" #include "code\modules\mining\shelters.dm" #include "code\modules\mining\equipment\explorer_gear.dm" @@ -3067,8 +3072,6 @@ #include "modular_citadel\code\datums\status_effects\chems.dm" #include "modular_citadel\code\datums\status_effects\debuffs.dm" #include "modular_citadel\code\datums\wires\autoylathe.dm" -#include "modular_citadel\code\game\machinery\displaycases.dm" -#include "modular_citadel\code\game\machinery\Sleeper.dm" #include "modular_citadel\code\game\machinery\toylathe.dm" #include "modular_citadel\code\game\machinery\vending.dm" #include "modular_citadel\code\game\machinery\wishgranter.dm" @@ -3083,8 +3086,6 @@ #include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm" #include "modular_citadel\code\game\objects\items\devices\radio\headset.dm" #include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm" -#include "modular_citadel\code\game\objects\structures\tables_racks.dm" -#include "modular_citadel\code\game\objects\structures\beds_chairs\chair.dm" #include "modular_citadel\code\modules\admin\admin.dm" #include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" diff --git a/tgui/src/interfaces/point_bank.ract b/tgui/src/interfaces/point_bank.ract new file mode 100644 index 0000000000..837a66427a --- /dev/null +++ b/tgui/src/interfaces/point_bank.ract @@ -0,0 +1,60 @@ + + + Current stored points: {{data.totalPoints}} +
+
+ + -All + +
+
+ + -1000 + +
+
+ + -100 + +
+
+ + -10 + +
+
+ + -1 + +
+
+ Transfer Points +
+
+ + +1 + +
+
+ + +10 + +
+
+ + +100 + +
+
+ + +1000 + +
+
+ + +All + +
+
+
+