diff --git a/aurorastation.dme b/aurorastation.dme index 123e989018f..82ba05a2058 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -427,6 +427,7 @@ #include "code\game\antagonist\outsider\ninja.dm" #include "code\game\antagonist\outsider\raider.dm" #include "code\game\antagonist\outsider\raider_mage.dm" +#include "code\game\antagonist\outsider\revenant.dm" #include "code\game\antagonist\outsider\wizard.dm" #include "code\game\antagonist\station\changeling.dm" #include "code\game\antagonist\station\cultist.dm" @@ -563,6 +564,7 @@ #include "code\game\gamemodes\ninja\ninja.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" #include "code\game\gamemodes\nuclear\pinpointer.dm" +#include "code\game\gamemodes\revenants\revenants.dm" #include "code\game\gamemodes\revolution\revolution.dm" #include "code\game\gamemodes\traitor\traitor.dm" #include "code\game\gamemodes\vampire\modular_vampire.dm" @@ -738,7 +740,6 @@ #include "code\game\machinery\telecomms\telemonitor.dm" #include "code\game\machinery\telecomms\traffic_control.dm" #include "code\game\modifiers\modifiers.dm" -#include "code\game\modifiers\modifiers_chem.dm" #include "code\game\objects\buckling.dm" #include "code\game\objects\empulse.dm" #include "code\game\objects\explosion.dm" @@ -1148,7 +1149,6 @@ #include "code\modules\admin\secrets\admin_secrets\list_dna.dm" #include "code\modules\admin\secrets\admin_secrets\list_fingerprints.dm" #include "code\modules\admin\secrets\admin_secrets\move_shuttle.dm" -#include "code\modules\admin\secrets\admin_secrets\replace_player.dm" #include "code\modules\admin\secrets\admin_secrets\show_ai_laws.dm" #include "code\modules\admin\secrets\admin_secrets\show_crew_manifest.dm" #include "code\modules\admin\secrets\admin_secrets\show_game_mode.dm" @@ -1618,11 +1618,16 @@ #include "code\modules\games\spaceball_cards.dm" #include "code\modules\games\tarot.dm" #include "code\modules\ghostroles\spawner\base.dm" +#include "code\modules\ghostroles\spawner\antagonist\revenant.dm" #include "code\modules\ghostroles\spawner\atom\borer.dm" +#include "code\modules\ghostroles\spawner\atom\diona_nymph.dm" #include "code\modules\ghostroles\spawner\atom\golem.dm" +#include "code\modules\ghostroles\spawner\atom\imaginary_friend.dm" +#include "code\modules\ghostroles\spawner\atom\living_plant.dm" #include "code\modules\ghostroles\spawner\atom\mining_drone.dm" #include "code\modules\ghostroles\spawner\atom\posibrain.dm" #include "code\modules\ghostroles\spawner\atom\skeleton.dm" +#include "code\modules\ghostroles\spawner\atom\split_personality.dm" #include "code\modules\ghostroles\spawner\atom\syndicate_cyborg.dm" #include "code\modules\ghostroles\spawner\atom\wizard_familiar.dm" #include "code\modules\ghostroles\spawner\atom\wizardapprentice.dm" @@ -1645,10 +1650,10 @@ #include "code\modules\ghostroles\spawner\human\responseteams\tcfl.dm" #include "code\modules\ghostroles\spawner\simplemob\maintdrone.dm" #include "code\modules\ghostroles\spawner\simplemob\rat.dm" +#include "code\modules\ghostroles\spawner\simplemob\reboot_maintdrone.dm" #include "code\modules\ghostroles\spawner\simplemob\simplemob.dm" #include "code\modules\ghostroles\spawner\simplemob\spider_queen.dm" #include "code\modules\ghostroles\spawnpoint\spawnpoint.dm" -#include "code\modules\ghosttrap\trap.dm" #include "code\modules\global_listener\devices.dm" #include "code\modules\global_listener\interfaces.dm" #include "code\modules\goonchat\_helpers.dm" @@ -1995,7 +2000,7 @@ #include "code\modules\mob\living\carbon\human\species\species_attack.dm" #include "code\modules\mob\living\carbon\human\species\species_damage.dm" #include "code\modules\mob\living\carbon\human\species\species_hud.dm" -#include "code\modules\mob\living\carbon\human\species\outsider\shadow.dm" +#include "code\modules\mob\living\carbon\human\species\outsider\revenant.dm" #include "code\modules\mob\living\carbon\human\species\outsider\undead.dm" #include "code\modules\mob\living\carbon\human\species\station\golem.dm" #include "code\modules\mob\living\carbon\human\species\station\monkey.dm" @@ -2519,7 +2524,6 @@ #include "code\modules\reagents\Chemistry-Logging.dm" #include "code\modules\reagents\Chemistry-Machinery.dm" #include "code\modules\reagents\Chemistry-Metabolism.dm" -#include "code\modules\reagents\Chemistry-Readme.dm" #include "code\modules\reagents\Chemistry-Reagents-Helpers.dm" #include "code\modules\reagents\Chemistry-Reagents.dm" #include "code\modules\reagents\Chemistry-Recipes.dm" diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 887ee9cf3f7..63a9d076c3b 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -20,12 +20,12 @@ #define REAGENTS_OVERDOSE 20 #define REAGENTS_BURNING_TEMP_HIGH T0C + 65 //Temperature at which high temperature burns occur -#define REAGENTS_BURNING_TEMP_HIGH_DAMAGE 0.0001 //Damage per celcius per unit above the REAGENTS_BURNING_TEMP_HIGH define per unit. -#define REAGENTS_BURNING_TEMP_HIGH_DAMAGE_CAP 20 //Maximum amount of burn damage to deal due to high temperature reagents. +#define REAGENTS_BURNING_TEMP_HIGH_DAMAGE 0.1 //Damage per celcius per unit above the REAGENTS_BURNING_TEMP_HIGH define per unit. +#define REAGENTS_BURNING_TEMP_HIGH_DAMAGE_CAP 40 //Maximum amount of burn damage to deal due to high temperature reagents. -#define REAGENTS_BURNING_TEMP_LOW T0C - 30 //Temperature at which low temperature burns occur -#define REAGENTS_BURNING_TEMP_LOW_DAMAGE 0.00005 //Damage per celcius per unit below the REAGENTS_BURNING_TEMP_LOW define per unit. -#define REAGENTS_BURNING_TEMP_LOW_DAMAGE_CAP 20 //Maximum amount of burn damage to deal due to low temperature reagents. +#define REAGENTS_BURNING_TEMP_LOW T0C - 55 //Temperature at which low temperature burns occur +#define REAGENTS_BURNING_TEMP_LOW_DAMAGE 0.1 //Damage per celcius per unit below the REAGENTS_BURNING_TEMP_LOW define per unit. +#define REAGENTS_BURNING_TEMP_LOW_DAMAGE_CAP 40 //Maximum amount of burn damage to deal due to low temperature reagents. #define REAGENTS_BODYTEMP 0.002 //Increase in body temperature per unit per celcius above current body temperature. #define REAGENTS_BODYTEMP_MIN 0.25 //Minimum amount of increase to actually increase body temperature. The increase is also rounded to this value. @@ -44,6 +44,7 @@ #define IS_UNDEAD 128 // Apply status effects +#define CE_ADRENALINE "adrenal" // Like speedboost but different #define CE_ALCOHOL "alcohol" // Liver filtering #define CE_ANTIEMETIC "antiemetic" // suppresses vomiting #define CE_ITCH "itch" // causes itching @@ -107,3 +108,7 @@ #define BASE_VOMIT_CHANCE 10 //Base chance #define VOMIT_CHANCE_SCALE 2.5 //Percent change added for every 0.01 percent over the VOMIT limit + +#define REAGENTS_FREE_SPACE(R) (R.maximum_volume - R.total_volume) +#define REAGENT_VOLUME(REAGENT_HOLDER, REAGENT_TYPE) (REAGENT_HOLDER?.reagent_volumes && REAGENT_HOLDER.reagent_volumes[REAGENT_TYPE]) +#define REAGENT_DATA(REAGENT_HOLDER, REAGENT_TYPE) (REAGENT_HOLDER?.reagent_data && REAGENT_HOLDER.reagent_data[REAGENT_TYPE]) diff --git a/code/__defines/damage_organs.dm b/code/__defines/damage_organs.dm index 93ffcd58f01..2ace904180a 100644 --- a/code/__defines/damage_organs.dm +++ b/code/__defines/damage_organs.dm @@ -46,6 +46,9 @@ #define ORGAN_TENDON_CUT (1<<12) #define ORGAN_LIFELIKE (1<<13) // Robotic, made to appear organic. +// the largest bitflag, in the WORLD +#define ORGAN_DAMAGE_STATES ORGAN_CUT_AWAY|ORGAN_BLEEDING|ORGAN_BROKEN|ORGAN_DESTROYED|ORGAN_SPLINTED|ORGAN_DEAD|ORGAN_MUTATED|ORGAN_ARTERY_CUT|ORGAN_TENDON_CUT + // Limb behaviour defines. #define ORGAN_CAN_AMPUTATE (1<<0) //Can this organ be amputated? #define ORGAN_CAN_BREAK (1<<1) //Can this organ break? diff --git a/code/__defines/gamemode.dm b/code/__defines/gamemode.dm index 8c9c892aac1..386c3e58c4e 100644 --- a/code/__defines/gamemode.dm +++ b/code/__defines/gamemode.dm @@ -58,6 +58,7 @@ #define MODE_TRAITOR "traitor" #define MODE_VAMPIRE "vampire" #define MODE_THRALL "thrall" +#define MODE_REVENANT "revenant" #define MODE_GOLEM "golem" #define DEFAULT_TELECRYSTAL_AMOUNT 25 diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm index 418b2fe81d0..66a0b83481d 100644 --- a/code/__defines/misc.dm +++ b/code/__defines/misc.dm @@ -239,12 +239,12 @@ //Cargo random stock vars //These are used in randomstock.dm //And also for generating random loot crates in crates.dm -#define TOTAL_STOCK 200//The total number of items we'll spawn in cargo stock +#define TOTAL_STOCK 180//The total number of items we'll spawn in cargo stock -#define STOCK_UNCOMMON_PROB 23 +#define STOCK_UNCOMMON_PROB 25 //The probability, as a percentage for each item, that we'll choose from the uncommon spawns list -#define STOCK_RARE_PROB 2.8 +#define STOCK_RARE_PROB 3 //The probability, as a percentage for each item, that we'll choose from the rare spawns list //If an item is not rare or uncommon, it will be chosen from the common spawns list. diff --git a/code/__defines/species.dm b/code/__defines/species.dm index 9223af12dc0..271397ed3e5 100644 --- a/code/__defines/species.dm +++ b/code/__defines/species.dm @@ -35,7 +35,7 @@ #define SPECIES_ZOMBIE_TAJARA "Tajara Zombie" #define SPECIES_ZOMBIE_UNATHI "Unathi Zombie" #define SPECIES_ZOMBIE_SKRELL "Skrell Zombie" -#define SPECIES_SHADOW "Shadow" +#define SPECIES_REVENANT "Revenant" #define SPECIES_MONKEY "Monkey" #define SPECIES_MONKEY_SKRELL "Neaera" diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index 649e4a44559..df03ed65000 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -58,6 +58,7 @@ #define LANGUAGE_BORER_HIVEMIND "Cortical Hivemind" #define LANGUAGE_CULT "Cult" // NOT CULTISTS! #define LANGUAGE_OCCULT "Occult" +#define LANGUAGE_REVENANT "Revenant" #define LANGUAGE_TERMINATOR "Hephaestus Darkcomms" // HKs. // Lesser-form Languages diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 99c5819cf76..1eef82c7480 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -548,7 +548,10 @@ Turf and target are seperate in case you want to teleport some distance from a t var/datum/progressbar/progbar if (display_progress && user.client && (user.client.prefs.toggles_secondary & PROGRESS_BARS)) - progbar = new(user, delay, target) + var/atom/loc_check = target + for(var/i = 0; !isturf(loc_check.loc) && i < 5; i++) + loc_check = target.loc + progbar = new(user, delay, loc_check) var/endtime = world.time + delay var/starttime = world.time diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index a439b1a5485..6c4b5b282cb 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -259,9 +259,8 @@ return /atom/proc/ShiftClick(var/mob/user) - if(user.client && user.client.eye == user) + if(user.can_examine()) user.examinate(src) - return /* Ctrl click diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 16c8cb29ce7..23a0463aab7 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -223,6 +223,6 @@ /mob/living/silicon/robot/RangedAttack(atom/A) A.attack_robot(src) -/atom/proc/attack_robot(mob/user as mob) +/atom/proc/attack_robot(mob/user) attack_ai(user) - return + return \ No newline at end of file diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index bbb20c2ad0c..4e3f7b801c6 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -2,6 +2,10 @@ /atom/proc/attack_generic(mob/user as mob) return 0 +// generic click on for pai +/atom/proc/attack_pai(mob/user) + return + /* Humans: Adds an exception for gloves, to allow special glove types like the ninja ones. diff --git a/code/controllers/subsystems/chemistry.dm b/code/controllers/subsystems/chemistry.dm index 4b336513095..bc23c0106b0 100644 --- a/code/controllers/subsystems/chemistry.dm +++ b/code/controllers/subsystems/chemistry.dm @@ -8,25 +8,21 @@ var/datum/controller/subsystem/chemistry/SSchemistry var/list/active_holders = list() var/list/chemical_reactions var/list/chemical_reactions_clean = list() - var/list/datum/reagent/chemical_reagents var/tmp/list/processing_holders = list() var/list/codex_data = list() var/list/codex_ignored_reaction_path = list(/datum/chemical_reaction/slime) - var/list/codex_ignored_result_path = list(/datum/reagent/drink, /datum/reagent/alcohol, /datum/reagent/paint) - -/datum/controller/subsystem/chemistry/proc/has_valid_specific_heat(var/datum/reagent/R) //Used for unit tests. Same as check_specific_heat but returns a boolean instead. + var/list/codex_ignored_result_path = list(/decl/reagent/drink, /decl/reagent/alcohol) +/datum/controller/subsystem/chemistry/proc/has_valid_specific_heat(var/_R) //Used for unit tests. Same as check_specific_heat but returns a boolean instead. + var/decl/reagent/R = decls_repository.get_decl(_R) if(R.specific_heat > 0) return TRUE - if(chemical_reagents[R.type].specific_heat > 0) //Don't think this will happen but you never know. - return TRUE - - var/datum/chemical_reaction/recipe = find_recipe_by_result(R.type) + var/datum/chemical_reaction/recipe = find_recipe_by_result(_R) if(recipe) for(var/chem in recipe.required_reagents) - if(!has_valid_specific_heat(chemical_reagents[chem])) + if(!has_valid_specific_heat(chem)) log_ss("chemistry", "ERROR: [recipe.type] has an improper recipe!") return R.fallback_specific_heat > 0 @@ -35,23 +31,23 @@ var/datum/controller/subsystem/chemistry/SSchemistry if(R.fallback_specific_heat > 0) return TRUE else - log_ss("chemistry", "ERROR: [R.type] does not have a valid specific heat ([R.specific_heat]) or a valid fallback specific heat ([R.fallback_specific_heat]) assigned!") + log_ss("chemistry", "ERROR: [_R] does not have a valid specific heat ([R.specific_heat]) or a valid fallback specific heat ([R.fallback_specific_heat]) assigned!") return FALSE -/datum/controller/subsystem/chemistry/proc/check_specific_heat(var/datum/reagent/R) - +/datum/controller/subsystem/chemistry/proc/check_specific_heat(var/_R) + var/decl/reagent/R = decls_repository.get_decl(_R) if(R.specific_heat > 0) return R.specific_heat - if(chemical_reagents[R.type].specific_heat > 0) //Don't think this will happen but you never know. - return chemical_reagents[R.type].specific_heat + if(R.specific_heat > 0) //Don't think this will happen but you never know. + return R.specific_heat - var/datum/chemical_reaction/recipe = find_recipe_by_result(R.type) + var/datum/chemical_reaction/recipe = find_recipe_by_result(_R) if(recipe) var/final_heat = 0 var/result_amount = recipe.result_amount for(var/chem in recipe.required_reagents) - var/chem_specific_heat = check_specific_heat(chemical_reagents[chem]) + var/chem_specific_heat = check_specific_heat(chem) if(chem_specific_heat <= 0) log_ss("chemistry", "ERROR: [R.type] does not have a specific heat value set, and there is no associated recipe for it! Please fix this by giving it a specific_heat value!") final_heat = 0 @@ -59,15 +55,15 @@ var/datum/controller/subsystem/chemistry/SSchemistry final_heat += chem_specific_heat * (recipe.required_reagents[chem]/result_amount) if(final_heat > 0) - chemical_reagents[R.type].specific_heat = final_heat + R.specific_heat = final_heat return final_heat if(R.fallback_specific_heat > 0) - chemical_reagents[R.type].specific_heat = R.fallback_specific_heat + R.specific_heat = R.fallback_specific_heat return R.fallback_specific_heat - log_ss("chemistry", "ERROR: [R.type] does not have a specific heat value set, and there is no associated recipe for it! Please fix this by giving it a specific_heat value!") - chemical_reagents[R.type].specific_heat = 1 + log_ss("chemistry", "ERROR: [_R] does not have a specific heat value set, and there is no associated recipe for it! Please fix this by giving it a specific_heat value!") + R.specific_heat = 1 return 1 /datum/controller/subsystem/chemistry/proc/find_recipe_by_result(var/result_id) @@ -76,6 +72,10 @@ var/datum/controller/subsystem/chemistry/SSchemistry if(CR.result == result_id && CR.result_amount > 0) return CR +/datum/controller/subsystem/chemistry/proc/initialize_specific_heats() + for(var/_R in subtypesof(/decl/reagent/)) + check_specific_heat(_R) + /datum/controller/subsystem/chemistry/stat_entry() ..("AH:[active_holders.len]") @@ -83,13 +83,13 @@ var/datum/controller/subsystem/chemistry/SSchemistry NEW_SS_GLOBAL(SSchemistry) /datum/controller/subsystem/chemistry/Initialize() - initialize_chemical_reagents() initialize_chemical_reactions() initialize_codex_data() var/pre_secret_len = chemical_reactions.len - log_ss("chemistry", "Found [chemical_reagents.len] reagents, [pre_secret_len] reactions.") + log_ss("chemistry", "Found [pre_secret_len] reactions.") load_secret_chemicals() log_ss("chemistry", "Loaded [chemical_reactions.len - pre_secret_len] secret reactions.") + initialize_specific_heats() // must be after reactions ..() /datum/controller/subsystem/chemistry/fire(resumed = FALSE) @@ -123,7 +123,6 @@ var/datum/controller/subsystem/chemistry/SSchemistry /datum/controller/subsystem/chemistry/Recover() src.active_holders = SSchemistry.active_holders src.chemical_reactions = SSchemistry.chemical_reactions - src.chemical_reagents = SSchemistry.chemical_reagents /datum/controller/subsystem/chemistry/proc/load_secret_chemicals() var/list/chemconfig = list() @@ -142,13 +141,15 @@ var/datum/controller/subsystem/chemistry/SSchemistry cc.result = text2path(chemconfig[chemical]["result"]) cc.result_amount = chemconfig[chemical]["resultamount"] cc.required_reagents = chemconfig[chemical]["required_reagents"] - if(!(cc.result in chemical_reagents)) + if(!istype(cc.result, /decl/reagent)) log_debug("SSchemistry: Warning: Invalid result [cc.result] in [cc.name] reactions list.") qdel(cc) break - for(var/A in cc.required_reagents) - if(!(A in chemical_reagents)) + for(var/i in 1 to cc.required_reagents.len) + var/A = text2path(cc.required_reagents[i]) + cc.required_reagents[i] = text2path(cc.required_reagents[i]) + if(!ispath(A, /decl/reagent)) log_debug("SSchemistry: Warning: Invalid chemical [A] in [cc.name] required reagents list.") qdel(cc) break @@ -158,23 +159,10 @@ var/datum/controller/subsystem/chemistry/SSchemistry LAZYINITLIST(chemical_reactions[rtype]) chemical_reactions[rtype] += cc -//Chemical Reagents - Initialises all /datum/reagent into a list indexed by reagent type -/datum/controller/subsystem/chemistry/proc/initialize_chemical_reagents() - var/paths = subtypesof(/datum/reagent) - chemical_reagents = list() - for(var/path in paths) - var/datum/reagent/D = new path() - if(!D.name) - continue - chemical_reagents[D.type] = D - - sortTim(chemical_reagents, /proc/cmp_text_asc) - - //Chemical Reactions - Initialises all /datum/chemical_reaction into a list // It is filtered into multiple lists within a list. // For example: -// chemical_reaction_list[/datum/reagent/toxin/phoron] is a list of all reactions relating to phoron +// chemical_reaction_list[/decl/reagent/toxin/phoron] is a list of all reactions relating to phoron // Note that entries in the list are NOT duplicated. So if a reaction pertains to // more than one chemical it will still only appear in only one of the sublists. /datum/controller/subsystem/chemistry/proc/initialize_chemical_reactions() @@ -202,25 +190,25 @@ var/datum/controller/subsystem/chemistry/SSchemistry continue if(codex_ignored_result_path && is_path_in_list(CR.result, codex_ignored_result_path)) continue - var/datum/reagent/R = new CR.result + var/decl/reagent/R = decls_repository.get_decl(CR.result) var/reactionData = list(id = CR.id) reactionData["result"] = list( name = R.name, description = R.description, amount = CR.result_amount ) - + reactionData["reagents"] = list() for(var/reagent in CR.required_reagents) - var/datum/reagent/required_reagent = reagent + var/decl/reagent/required_reagent = reagent reactionData["reagents"] += list(list( name = initial(required_reagent.name), amount = CR.required_reagents[reagent] )) - + reactionData["catalysts"] = list() for(var/reagent_path in CR.catalysts) - var/datum/reagent/required_reagent = reagent_path + var/decl/reagent/required_reagent = reagent_path reactionData["catalysts"] += list(list( name = initial(required_reagent.name), amount = CR.catalysts[reagent_path] @@ -228,27 +216,15 @@ var/datum/controller/subsystem/chemistry/SSchemistry reactionData["inhibitors"] = list() for(var/reagent_path in CR.inhibitors) - var/datum/reagent/required_reagent = reagent_path + var/decl/reagent/required_reagent = reagent_path var/inhibitor_amount = CR.inhibitors[reagent_path] ? CR.inhibitors[reagent_path] : "Any" reactionData["inhibitors"] += list(list( name = initial(required_reagent.name), amount = inhibitor_amount )) - reactionData["temp_min"] = list() - for(var/reagent_path in CR.required_temperatures_min) - var/datum/reagent/required_reagent = reagent_path - reactionData["temp_min"] += list(list( - name = initial(required_reagent.name), - temp = CR.required_temperatures_min[reagent_path] - )) - - reactionData["temp_max"] = list() - for(var/reagent_path in CR.required_temperatures_max) - var/datum/reagent/required_reagent = reagent_path - reactionData["temp_max"] += list(list( - name = initial(required_reagent.name), - temp = CR.required_temperatures_max[reagent_path] - )) - - codex_data += list(reactionData) \ No newline at end of file + reactionData["temp_min"] = CR.required_temperature_min + + reactionData["temp_max"] = CR.required_temperature_max + + codex_data += list(reactionData) diff --git a/code/controllers/subsystems/garbage-debug.dm b/code/controllers/subsystems/garbage-debug.dm index 5497bb014c8..64e88438830 100644 --- a/code/controllers/subsystems/garbage-debug.dm +++ b/code/controllers/subsystems/garbage-debug.dm @@ -720,7 +720,6 @@ SearchVar(event_last_fired) SearchVar(dreams) SearchVar(non_fakeattack_weapons) - SearchVar(ghost_traps) SearchVar(current_map.holodeck_programs) SearchVar(fruit_icon_cache) SearchVar(plant_seed_sprites) diff --git a/code/controllers/subsystems/plants.dm b/code/controllers/subsystems/plants.dm index 722600d62ed..de168f75a19 100644 --- a/code/controllers/subsystems/plants.dm +++ b/code/controllers/subsystems/plants.dm @@ -113,8 +113,8 @@ if(seed.consume_gasses) seed.consume_gasses[GAS_PHORON] = null seed.consume_gasses[GAS_CO2] = null - if(seed.chems && !isnull(seed.chems[/datum/reagent/acid/polyacid])) - seed.chems[/datum/reagent/acid/polyacid] = null // Eating through the hull will make these plants completely inviable, albeit very dangerous. + if(seed.chems && !isnull(seed.chems[/decl/reagent/acid/polyacid])) + seed.chems[/decl/reagent/acid/polyacid] = null // Eating through the hull will make these plants completely inviable, albeit very dangerous. seed.chems -= null // Setting to null does not actually remove the entry, which is weird. seed.set_trait(TRAIT_IDEAL_HEAT,293) seed.set_trait(TRAIT_HEAT_TOLERANCE,20) diff --git a/code/controllers/subsystems/processing/electronics.dm b/code/controllers/subsystems/processing/electronics.dm index bacd67d7b8e..e42aa676093 100644 --- a/code/controllers/subsystems/processing/electronics.dm +++ b/code/controllers/subsystems/processing/electronics.dm @@ -12,6 +12,8 @@ var/list/all_integrated_circuits = list() var/list/printer_recipe_list = list() + var/list/printer_recipe_list_basic = list() + var/list/printer_recipe_list_upgraded = list() /datum/controller/subsystem/processing/electronics/New() NEW_SS_GLOBAL(SSelectronics) @@ -90,6 +92,22 @@ new /obj/item/device/integrated_electronics/detailer ) + + for(var/category in printer_recipe_list) + var/items = printer_recipe_list[category] + printer_recipe_list_basic[category] = list() + printer_recipe_list_upgraded[category] = list() + for(var/obj/O in items) + var/is_basic = TRUE + if(istype(O, /obj/item/integrated_circuit)) + var/obj/item/integrated_circuit/IC = O + if((IC.spawn_flags & IC_SPAWN_RESEARCH) && (!(IC.spawn_flags & IC_SPAWN_DEFAULT))) + is_basic = FALSE + + printer_recipe_list_basic[category] += list(list(path = "[O.type]", name = "[O.name]", desc = "[O.desc]", "b" = is_basic)) + printer_recipe_list_upgraded[category] += list(list(path = "[O.type]", name = "[O.name]", desc = "[O.desc]", "b" = TRUE)) + + ..() #undef IC_SPAWN_DEFAULT diff --git a/code/controllers/subsystems/traumas.dm b/code/controllers/subsystems/traumas.dm index 8b5aedde91d..024cd769631 100644 --- a/code/controllers/subsystems/traumas.dm +++ b/code/controllers/subsystems/traumas.dm @@ -56,8 +56,8 @@ var/datum/controller/subsystem/traumas/SStraumas /obj/item/melee/baton, /obj/item/gun/energy/taser, /obj/item/handcuffs, /obj/item/clothing/glasses/sunglasses/sechud, /obj/machinery/door/airlock/security, /obj/item/clothing/under/rank/cadet, /obj/structure/sign/directions/security, /obj/item/clothing/head/bio_hood/security, /obj/item/clothing/head/bomb_hood/security, /obj/item/clothing/head/helmet/space/void/security, - /obj/item/clothing/head/softcap/security, /obj/item/clothing/suit/armor/vest/security, /obj/item/clothing/suit/bio_suit/security, - /obj/item/clothing/suit/bomb_suit/security, /obj/item/clothing/suit/security/navyofficer, /obj/item/clothing/suit/space/void/security, + /obj/item/clothing/head/softcap/security, /obj/item/clothing/suit/security, /obj/item/clothing/suit/bio_suit/security, + /obj/item/clothing/suit/bomb_suit/security, /obj/item/clothing/suit/security/officer, /obj/item/clothing/suit/space/void/security, /obj/item/clothing/suit/storage/hooded/wintercoat/security, /obj/item/device/magnetic_lock/security,/obj/item/toy/figure/secofficer, /obj/item/gun/bang/sec, /obj/item/gun/projectile/sec, /obj/item/book/manual/wiki/security_space_law)), @@ -88,7 +88,7 @@ var/datum/controller/subsystem/traumas/SStraumas /obj/structure/banner, /obj/structure/bed/chair/office/bridge, /obj/item/clothing/head/collectable/captain, /obj/item/clothing/head/helmet/space/void/captain, /obj/item/clothing/suit/space/void/captain, /obj/item/clothing/suit/storage/hooded/wintercoat/captain, /obj/item/clothing/under/captainformal, /obj/item/clothing/under/rank/captain, /obj/item/toy/figure/captain, /obj/item/card/id/captains_spare, - /obj/item/gun/energy/captain, /obj/item/stamp/captain, /obj/item/storage/backpack/captain, /obj/item/clothing/suit/armor/vest/security)), + /obj/item/gun/energy/captain, /obj/item/stamp/captain, /obj/item/storage/backpack/captain, /obj/item/clothing/suit/security)), "filth" = typecacheof(list(/obj/effect/decal/cleanable,/obj/effect/decal/remains,/obj/item/trash, /obj/machinery/portable_atmospherics/hydroponics)), @@ -118,7 +118,7 @@ var/datum/controller/subsystem/traumas/SStraumas "skrell" = typecacheof(list(/datum/species/skrell)), "robots" = typecacheof(list(/datum/species/machine)), "pests" = typecacheof(list(/datum/species/diona, /datum/species/bug)), - "paranormals" = typecacheof(list(/datum/species/shadow, /datum/species/skeleton, /datum/species/golem)), + "paranormals" = typecacheof(list(/datum/species/revenant, /datum/species/skeleton, /datum/species/golem)), "humans" = typecacheof(list(/datum/species/human)) ) diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm index 727ef44af42..eb87a3eb891 100644 --- a/code/datums/brain_damage/imaginary_friend.dm +++ b/code/datums/brain_damage/imaginary_friend.dm @@ -10,7 +10,6 @@ /datum/brain_trauma/special/imaginary_friend/on_gain() ..() make_friend() - get_ghost() /datum/brain_trauma/special/imaginary_friend/on_life() if(get_dist(owner, friend) > 9) @@ -24,12 +23,7 @@ /datum/brain_trauma/special/imaginary_friend/proc/make_friend() friend = new(get_turf(src), src) - -/datum/brain_trauma/special/imaginary_friend/proc/get_ghost() - set waitfor = FALSE - var/datum/ghosttrap/G = get_ghost_trap("friend") - G.request_player(friend, "Would you like to play as [owner]'s imaginary friend?", 60 SECONDS) - addtimer(CALLBACK(src, .proc/reset_search), 60 SECONDS) + SSghostroles.add_spawn_atom("imaginary_friend", friend) /datum/brain_trauma/special/imaginary_friend/proc/reset_search() if(src.friend && src.friend.key) @@ -91,6 +85,7 @@ owner.client.images.Remove(human_image) if(client) client.images.Remove(human_image) + SSghostroles.remove_spawn_atom("imaginary_friend", src) return ..() /mob/abstract/mental/friend/proc/yank() diff --git a/code/datums/brain_damage/schizo.dm b/code/datums/brain_damage/schizo.dm index 83ffcb20564..47af1953176 100644 --- a/code/datums/brain_damage/schizo.dm +++ b/code/datums/brain_damage/schizo.dm @@ -16,24 +16,12 @@ /datum/brain_trauma/severe/split_personality/on_gain() ..() make_backseats() - get_ghost() /datum/brain_trauma/severe/split_personality/proc/make_backseats() stranger_backseat = new(owner, src) + SSghostroles.add_spawn_atom("split_personality", stranger_backseat) owner_backseat = new(owner, src) -/datum/brain_trauma/severe/split_personality/proc/get_ghost() - set waitfor = FALSE - var/datum/ghosttrap/G = get_ghost_trap("split personality") - G.request_player(stranger_backseat, "Would you like to play as [owner]'s split personality?", 60 SECONDS) - addtimer(CALLBACK(src, .proc/reset_search), 60 SECONDS) - -/datum/brain_trauma/severe/split_personality/proc/reset_search() - if(src.stranger_backseat && src.stranger_backseat.key) - return - else - qdel(src) - /datum/brain_trauma/severe/split_personality/on_life() if(owner.stat == DEAD) if(current_controller != OWNER) @@ -63,7 +51,7 @@ current_backseat = owner_backseat free_backseat = stranger_backseat - log_game("[current_backseat]/([current_backseat.ckey]) assumed control of [owner]/([owner.ckey] due to [src]. (Original owner: [current_controller == OWNER ? owner.ckey : current_backseat.ckey])") + log_game("[current_backseat]/([current_backseat.ckey]) assumed control of [owner]/([owner.ckey]) due to [src]. (Original owner: [current_controller == OWNER ? owner.ckey : current_backseat.ckey])") to_chat(owner, "You feel your control being taken away... your other personality is in charge now!") to_chat(current_backseat, "You manage to take control of your body!") @@ -146,6 +134,10 @@ /mob/living/mental/split_personality/emote(message) return +/mob/living/mental/split_personality/Destroy() + SSghostroles.remove_spawn_atom("split_personality", src) + return ..() + ///////////////BRAINWASHING//////////////////// /datum/brain_trauma/severe/split_personality/brainwashing @@ -180,13 +172,6 @@ stranger_backseat = new /mob/living/mental/split_personality/traitor(owner, src, codeword, objective) owner_backseat = new(owner, src) - -/datum/brain_trauma/severe/split_personality/brainwashing/get_ghost() - set waitfor = FALSE - var/datum/ghosttrap/G = get_ghost_trap("split personality") - G.request_player(stranger_backseat, "Would you like to play as [owner]'s split personality?", 60 SECONDS) - addtimer(CALLBACK(src, .proc/reset_search), 60 SECONDS) - /datum/brain_trauma/severe/split_personality/brainwashing/on_life() return //no random switching diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 1fb46e03890..5fd2b89a429 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -42,16 +42,15 @@ if(istype(adestination)) var/list/turf/good_turfs = list() var/list/turf/bad_turfs = list() - for(var/found_inhibitor in circlerange(adestination,8)) - if(!istype(found_inhibitor,/obj/machinery/anti_bluespace)) - continue + var/turf/T = get_turf(adestination) + for(var/found_inhibitor in bluespace_inhibitors) var/obj/machinery/anti_bluespace/AB = found_inhibitor - if(AB.stat & (NOPOWER | BROKEN) ) + if(T.z != AB.z || get_dist(adestination, AB) > 8 || (AB.stat & (NOPOWER | BROKEN))) continue AB.use_power(AB.active_power_usage) bad_turfs += circlerangeturfs(get_turf(AB),8) good_turfs += circlerangeturfs(get_turf(AB),9) - if(good_turfs.len && bad_turfs.len) + if(length(good_turfs) && length(bad_turfs)) good_turfs -= bad_turfs return pick(good_turfs) diff --git a/code/datums/outfits/event/outfit_nanotrasen.dm b/code/datums/outfits/event/outfit_nanotrasen.dm index 01823fed2c0..19877d114ba 100644 --- a/code/datums/outfits/event/outfit_nanotrasen.dm +++ b/code/datums/outfits/event/outfit_nanotrasen.dm @@ -193,7 +193,7 @@ name = "FIB Agent" uniform = /obj/item/clothing/under/rank/fib - suit = /obj/item/clothing/suit/storage/fib + suit = /obj/item/clothing/suit/storage/toggle/fib gloves = /obj/item/clothing/gloves/black l_pocket = /obj/item/reagent_containers/spray/pepper diff --git a/code/datums/outfits/outfit_antag.dm b/code/datums/outfits/outfit_antag.dm index 4236f868f52..b2719a5059f 100644 --- a/code/datums/outfits/outfit_antag.dm +++ b/code/datums/outfits/outfit_antag.dm @@ -232,13 +232,13 @@ /obj/item/clothing/suit/apron/overalls/random, /obj/item/clothing/suit/captunic/capjacket, /obj/item/clothing/suit/ianshirt, - /obj/item/clothing/suit/storage/fib, + /obj/item/clothing/suit/storage/toggle/fib, /obj/item/clothing/suit/storage/hooded/wintercoat/hoodie/random, /obj/item/clothing/suit/storage/hooded/wintercoat, /obj/item/clothing/suit/storage/hooded/wintercoat/red, /obj/item/clothing/suit/storage/hooded/wintercoat/miner, /obj/item/clothing/suit/storage/leathercoat, - /obj/item/clothing/suit/storage/vest/csi, + /obj/item/clothing/suit/storage/vest/ft, /obj/item/clothing/suit/storage/toggle/dominia/bomber, /obj/item/clothing/suit/storage/toggle/dominia/gold, /obj/item/clothing/suit/storage/toggle/flannel, diff --git a/code/datums/trading/misc.dm b/code/datums/trading/misc.dm index 2e375bf0f5f..91ea5b81569 100644 --- a/code/datums/trading/misc.dm +++ b/code/datums/trading/misc.dm @@ -47,6 +47,7 @@ /mob/living/simple_animal/rat = TRADER_THIS_TYPE, /mob/living/simple_animal/parrot = TRADER_THIS_TYPE, /mob/living/simple_animal/tindalos = TRADER_THIS_TYPE, + /mob/living/simple_animal/pig = TRADER_THIS_TYPE, /mob/living/simple_animal/cow = TRADER_THIS_TYPE, /mob/living/simple_animal/chick = TRADER_THIS_TYPE, /mob/living/simple_animal/chicken = TRADER_THIS_TYPE, diff --git a/code/datums/underwear/underwear.dm b/code/datums/underwear/underwear.dm index 0297690f822..7442f894457 100644 --- a/code/datums/underwear/underwear.dm +++ b/code/datums/underwear/underwear.dm @@ -70,4 +70,5 @@ var/image/I = image(icon = 'icons/mob/underwear.dmi', icon_state = icon_state) for(var/datum/gear_tweak/gt in tweaks) gt.tweak_item(I, metadata && metadata["[gt]"] ? metadata["[gt]"] : gt.get_default()) + I.appearance_flags = RESET_ALPHA return I diff --git a/code/datums/uplink/announcements.dm b/code/datums/uplink/announcements.dm index 2829a4a9642..b7b63fef46b 100644 --- a/code/datums/uplink/announcements.dm +++ b/code/datums/uplink/announcements.dm @@ -31,11 +31,8 @@ /datum/uplink_item/abstract/announcements/fake_crew_arrival name = "Crew Arrival Announcement/Records" desc = "Creates a fake crew arrival announcement as well as fake crew records, using your current appearance (including held items!) and worn id card. Trigger with care!" - item_cost = 8 - -/datum/uplink_item/abstract/announcements/fake_crew_arrival/New() - ..() antag_roles = list(MODE_MERCENARY) + item_cost = 8 /datum/uplink_item/abstract/announcements/fake_crew_arrival/get_goods(var/obj/item/device/uplink/U, var/loc, var/mob/user, var/list/args) if(!user) diff --git a/code/datums/uplink/badassery.dm b/code/datums/uplink/badassery.dm index 598d4b8a539..038a1db16af 100644 --- a/code/datums/uplink/badassery.dm +++ b/code/datums/uplink/badassery.dm @@ -53,13 +53,13 @@ ****************/ /datum/uplink_item/item/badassery/surplus name = "Surplus Crate" + antag_roles = list(MODE_MERCENARY) item_cost = DEFAULT_TELECRYSTAL_AMOUNT * 4 var/item_worth = DEFAULT_TELECRYSTAL_AMOUNT * 6 var/icon /datum/uplink_item/item/badassery/surplus/New() ..() - antag_roles = list(MODE_MERCENARY) desc = "A crate containing [item_worth] telecrystal\s worth of surplus leftovers." /datum/uplink_item/item/badassery/surplus/get_goods(var/obj/item/device/uplink/U, var/loc) diff --git a/code/datums/uplink/uplink_items.dm b/code/datums/uplink/uplink_items.dm index eb7b5692cf0..6d938b927e5 100644 --- a/code/datums/uplink/uplink_items.dm +++ b/code/datums/uplink/uplink_items.dm @@ -36,10 +36,6 @@ var/datum/uplink/uplink /datum/uplink_item/item var/path = null -/datum/uplink_item/New() - ..() - antag_roles = list() - /datum/uplink_item/proc/buy(var/obj/item/device/uplink/U, var/mob/user) var/extra_args = extra_args(user) if(!extra_args) @@ -74,7 +70,7 @@ var/datum/uplink/uplink /datum/uplink_item/proc/can_view(obj/item/device/uplink/U) // Making the assumption that if no uplink was supplied, then we don't care about antag roles - if(!U || (!antag_roles.len && !antag_job)) + if(!U || (!length(antag_roles) && !antag_job)) return 1 // With no owner, there's no need to check antag status. diff --git a/code/game/antagonist/antagonist_add.dm b/code/game/antagonist/antagonist_add.dm index e3e5aa561c3..d08f7920a2d 100644 --- a/code/game/antagonist/antagonist_add.dm +++ b/code/game/antagonist/antagonist_add.dm @@ -66,6 +66,7 @@ current_antagonists -= player faction_members -= player player.special_role = null + player.antag_datums -= id update_icons_removed(player) BITSET(player.current.hud_updateflag, SPECIALROLE_HUD) diff --git a/code/game/antagonist/outsider/revenant.dm b/code/game/antagonist/outsider/revenant.dm new file mode 100644 index 00000000000..8ddfcfa26a6 --- /dev/null +++ b/code/game/antagonist/outsider/revenant.dm @@ -0,0 +1,17 @@ +var/datum/antagonist/revenant/revenants = null + +/datum/antagonist/revenant + id = MODE_REVENANT + role_text = "Revenant" + role_text_plural = "Revenants" + welcome_text = "A creature borne of bluespace, you are here to wreak havoc and put an end to bluespace experimentation, one station at a time." + antaghud_indicator = "hudrevenant" + initial_spawn_req = 0 + initial_spawn_target = 0 + hard_cap = 12 + hard_cap_round = 12 + +/datum/antagonist/revenant/New() + ..() + + revenants = src \ No newline at end of file diff --git a/code/game/antagonist/station/wizard_golem.dm b/code/game/antagonist/station/wizard_golem.dm index 544a75d3398..a8ce5591fd2 100644 --- a/code/game/antagonist/station/wizard_golem.dm +++ b/code/game/antagonist/station/wizard_golem.dm @@ -1,13 +1,13 @@ -var/datum/antagonist/bluespace_golem/bluespace_golems = null +var/datum/antagonist/wizard_golem/wizard_golems = null -/datum/antagonist/bluespace_golem +/datum/antagonist/wizard_golem id = MODE_GOLEM role_text = "Golem" role_text_plural = "Golems" welcome_text = "You are a golem summoned by a powerful mage. Serve your master, and assist them in completing their goals at any cost." antaghud_indicator = "hudmagineer" -/datum/antagonist/bluespace_golem/New() +/datum/antagonist/wizard_golem/New() ..() - bluespace_golems = src \ No newline at end of file + wizard_golems = src \ No newline at end of file diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 2c0efa26073..4113640eec0 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -487,14 +487,14 @@ var/obj/effect/decal/cleanable/vomit/this = new /obj/effect/decal/cleanable/vomit(src) if(istype(inject_reagents) && inject_reagents.total_volume) inject_reagents.trans_to_obj(this, min(15, inject_reagents.total_volume)) - this.reagents.add_reagent(/datum/reagent/acid/stomach, 5) + this.reagents.add_reagent(/decl/reagent/acid/stomach, 5) // Make toxins vomit look different if(toxvomit) this.icon_state = "vomittox_[pick(1,4)]" /mob/living/proc/handle_additional_vomit_reagents(var/obj/effect/decal/cleanable/vomit/vomit) - vomit.reagents.add_reagent(/datum/reagent/acid/stomach, 5) + vomit.reagents.add_reagent(/decl/reagent/acid/stomach, 5) /atom/proc/clean_blood() if(!simulated) diff --git a/code/game/atoms_init.dm b/code/game/atoms_init.dm index a39ac76ad1e..bce1d31b461 100644 --- a/code/game/atoms_init.dm +++ b/code/game/atoms_init.dm @@ -15,7 +15,7 @@ if(SSatoms.InitAtom(src, args)) //we were deleted return - + var/list/created = SSatoms.created_atoms if(created) created += src @@ -29,7 +29,7 @@ if(!reagents) create_reagents(0) for(var/v in reagents_to_add) - reagents.maximum_volume += max(LAZYACCESS(reagents_to_add, v) - reagents.get_free_space(), 0) + reagents.maximum_volume += max(LAZYACCESS(reagents_to_add, v) - REAGENTS_FREE_SPACE(reagents), 0) reagents.add_reagent(v, LAZYACCESS(reagents_to_add, v), LAZYACCESS(reagent_data, v)) if (light_power && light_range) diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 02307adfa97..cafdcc29ccd 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -393,9 +393,8 @@ data["beakerVolume"] = 0 if(connected.beaker) data["beakerLabel"] = connected.beaker.label_text ? connected.beaker.label_text : null - if (connected.beaker.reagents && connected.beaker.reagents.reagent_list.len) - for(var/datum/reagent/R in connected.beaker.reagents.reagent_list) - data["beakerVolume"] += R.volume + for(var/_R in connected.beaker.reagents.reagent_volumes) + data["beakerVolume"] += connected.beaker.reagents.reagent_volumes[_R] // update the ui if it exists, returns null if no ui is passed/found ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) diff --git a/code/game/gamemodes/changeling/implements/powers/body.dm b/code/game/gamemodes/changeling/implements/powers/body.dm index 5091e3e9190..ec833a16e45 100644 --- a/code/game/gamemodes/changeling/implements/powers/body.dm +++ b/code/game/gamemodes/changeling/implements/powers/body.dm @@ -262,9 +262,9 @@ C.SetStunned(0) C.SetWeakened(0) C.lying = FALSE - C.reagents.add_reagent(/datum/reagent/hyperzine, 0.10) //Certainly this can't be abused. - Geeves - C.reagents.add_reagent(/datum/reagent/oxycomorphine, 0.10) - C.reagents.add_reagent(/datum/reagent/synaptizine, 0.5) //To counter oxycomorphine's side-effects. + C.reagents.add_reagent(/decl/reagent/hyperzine, 0.10) //Certainly this can't be abused. - Geeves + C.reagents.add_reagent(/decl/reagent/oxycomorphine, 0.10) + C.reagents.add_reagent(/decl/reagent/synaptizine, 0.5) //To counter oxycomorphine's side-effects. C.update_canmove() src.verbs -= /mob/proc/changeling_unstun @@ -522,4 +522,4 @@ src.key = ling.key playsound(get_turf(src),'sound/effects/blobattack.ogg',50,1) src.forceMove(get_turf(ling)) - qdel(ling) \ No newline at end of file + qdel(ling) diff --git a/code/game/gamemodes/changeling/implements/powers/stings.dm b/code/game/gamemodes/changeling/implements/powers/stings.dm index 46d2da2c460..49bcb1e83e6 100644 --- a/code/game/gamemodes/changeling/implements/powers/stings.dm +++ b/code/game/gamemodes/changeling/implements/powers/stings.dm @@ -227,7 +227,7 @@ target.Paralyse(10) target.make_jittery(1000) if(target.reagents) - target.reagents.add_reagent(/datum/reagent/toxin/cyanide, 5) + target.reagents.add_reagent(/decl/reagent/toxin/cyanide, 5) /mob/proc/changeling_extract_dna_sting() set category = "Changeling" diff --git a/code/game/gamemodes/cult/runes/blood_drain.dm b/code/game/gamemodes/cult/runes/blood_drain.dm index cfe08d087cf..6b948152d29 100644 --- a/code/game/gamemodes/cult/runes/blood_drain.dm +++ b/code/game/gamemodes/cult/runes/blood_drain.dm @@ -33,7 +33,7 @@ if(target && length(lambs) && (get_turf(target) == get_turf(parent))) for(var/mob/living/carbon/human/H in lambs) if(get_turf(H) == get_turf(parent)) - if(target.vessel.get_reagent_amount(/datum/reagent/blood) + 10 > H.species.blood_volume) + if(REAGENT_VOLUME(target.vessel, /decl/reagent/blood) + 10 > H.species.blood_volume) to_chat(target, SPAN_CULT("You feel refreshed!")) interrupt() target.whisper("Sa'ii, ble-nii...") @@ -47,4 +47,4 @@ /datum/rune/blood_drain/proc/interrupt() parent.visible_message(SPAN_CULT("\The [parent] suddenly disappears, the incantation broken!")) - qdel(parent) \ No newline at end of file + qdel(parent) diff --git a/code/game/gamemodes/newobjective.dm b/code/game/gamemodes/newobjective.dm index 235126825e6..0da33d4ed37 100644 --- a/code/game/gamemodes/newobjective.dm +++ b/code/game/gamemodes/newobjective.dm @@ -1081,7 +1081,7 @@ datum return 0 drugs - steal_target = /datum/reagent/space_drugs + steal_target = /decl/reagent/space_drugs explanation_text = "Steal some space drugs." weight = 40 @@ -1110,7 +1110,7 @@ datum pacid - steal_target = /datum/reagent/acid/polyacid + steal_target = /decl/reagent/acid/polyacid explanation_text = "Steal some polytrinic acid." weight = 40 @@ -1149,25 +1149,25 @@ datum target_name = pick(items) switch(target_name) if("Sulphuric acid") - steal_target = /datum/reagent/acid + steal_target = /decl/reagent/acid if("Polytrinic acid") - steal_target = /datum/reagent/acid/polyacid + steal_target = /decl/reagent/acid/polyacid if("Space Lube") - steal_target = /datum/reagent/lube + steal_target = /decl/reagent/lube if("Unstable mutagen") - steal_target = /datum/reagent/mutagen + steal_target = /decl/reagent/mutagen if("Leporazine") - steal_target = /datum/reagent/leporazine + steal_target = /decl/reagent/leporazine if("Cryptobiolin") - steal_target =/datum/reagent/cryptobiolin + steal_target =/decl/reagent/cryptobiolin if("Lexorin") - steal_target = /datum/reagent/lexorin + steal_target = /decl/reagent/lexorin if("Kelotane") - steal_target = /datum/reagent/kelotane + steal_target = /decl/reagent/kelotane if("Dexalin") - steal_target = /datum/reagent/dexalin + steal_target = /decl/reagent/dexalin if("Tricordrazine") - steal_target = /datum/reagent/tricordrazine + steal_target = /decl/reagent/tricordrazine explanation_text = "Steal a container filled with [target_name]." diff --git a/code/game/gamemodes/revenants/revenants.dm b/code/game/gamemodes/revenants/revenants.dm new file mode 100644 index 00000000000..7e809567bd0 --- /dev/null +++ b/code/game/gamemodes/revenants/revenants.dm @@ -0,0 +1,23 @@ +/datum/game_mode/revenants + name = "Revenants" + config_tag = "revenants" + required_players = 10 + required_enemies = 0 + round_autoantag = TRUE + min_autotraitor_delay = 3 MINUTES + max_autotraitor_delay = 6 MINUTES + antag_scaling_coeff = 4 // four people can handle one revenant pretty easily + round_description = "A bluespace tear has opened up in the space around us, who knows what could invade?" + extended_round_description = "This a wave defense gamemode. The crew all have to work together to repel an endless horde of bluespace horrors." + antag_tags = list(MODE_REVENANT) + +/datum/game_mode/revenants/process_autoantag() + var/datum/ghostspawner/revenant/R = SSghostroles.get_spawner(MODE_REVENANT) + var/datum/antagonist/A = all_antag_types[MODE_REVENANT] + A.update_current_antag_max() + var/previous_count = R.max_count + R.max_count = min(R.max_count + 1, A.cur_max) + if(R.max_count > previous_count) + say_dead_direct("A slot for a Revenant as opened up!
Spawn in as it by using the ghost spawner menu in the ghost tab, and try to be good!") + if(!R.enabled) + R.enable() \ No newline at end of file diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index b2699ae90ef..1223a42a155 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -92,7 +92,7 @@ blood_total = vampire.blood_total blood_usable = vampire.blood_usable - if(!T.vessel.get_reagent_amount(/datum/reagent/blood)) + if (!REAGENT_VOLUME(T.vessel, /decl/reagent/blood)) to_chat(src, SPAN_DANGER("[T] has no more blood left to give.")) break @@ -102,8 +102,8 @@ var/frenzy_lower_chance = 0 // Alive and not of empty mind. - if(check_drain_target_state(T)) - blood = min(15, T.vessel.get_reagent_amount(/datum/reagent/blood)) + if (check_drain_target_state(T)) + blood = min(15, REAGENT_VOLUME(T.vessel, /decl/reagent/blood)) vampire.blood_total += blood vampire.blood_usable += blood @@ -121,7 +121,7 @@ frenzy_lower_chance = 0 // SSD/protohuman or dead. else - blood = min(5, T.vessel.get_reagent_amount(/datum/reagent/blood)) + blood = min(5, REAGENT_VOLUME(T.vessel, /decl/reagent/blood)) vampire.blood_usable += blood frenzy_lower_chance = 40 @@ -137,7 +137,7 @@ to_chat(src, SPAN_NOTICE(update_msg)) check_vampire_upgrade() - T.vessel.remove_reagent(/datum/reagent/blood, 5) + T.vessel.remove_reagent(/decl/reagent/blood, 5) vampire.status &= ~VAMP_DRAINING @@ -846,8 +846,8 @@ to_chat(T, SPAN_NOTICE("You feel pure bliss as [src] touches you.")) vampire.use_blood(50) - T.reagents.add_reagent(/datum/reagent/rezadone, 3) - T.reagents.add_reagent(/datum/reagent/oxycomorphine, 0.15) //enough to get back onto their feet + T.reagents.add_reagent(/decl/reagent/rezadone, 3) + T.reagents.add_reagent(/decl/reagent/oxycomorphine, 0.15) //enough to get back onto their feet // Convert a human into a vampire. /mob/living/carbon/human/proc/vampire_embrace() @@ -919,12 +919,12 @@ if(!vampire) to_chat(src, SPAN_WARNING("Your fangs have disappeared!")) return - if(!T.vessel.get_reagent_amount(/datum/reagent/blood)) + if (!REAGENT_VOLUME(T.vessel, /decl/reagent/blood)) to_chat(src, SPAN_NOTICE("[T] is now drained of blood. You begin forcing your own blood into their body, spreading the corruption of the Veil to their body.")) drained_all_blood = TRUE break - T.vessel.remove_reagent(/datum/reagent/blood, 50) + T.vessel.remove_reagent(/decl/reagent/blood, 50) if(!drained_all_blood) vampire.status &= ~VAMP_DRAINING diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index bb353c77ae1..0ecc6923356 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -298,4 +298,4 @@ tab_pda = /obj/item/modular_computer/handheld/pda/security wristbound = /obj/item/modular_computer/handheld/wristbound/preset/pda/security - tablet = /obj/item/modular_computer/handheld/preset/security \ No newline at end of file + tablet = /obj/item/modular_computer/handheld/preset/security diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 91233935173..7cf871dd215 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -20,11 +20,11 @@ var/mob/living/carbon/human/occupant = null var/list/available_chemicals = list( - /datum/reagent/inaprovaline, - /datum/reagent/soporific, - /datum/reagent/perconol, - /datum/reagent/dylovene, - /datum/reagent/dexalin + /decl/reagent/inaprovaline, + /decl/reagent/soporific, + /decl/reagent/perconol, + /decl/reagent/dylovene, + /decl/reagent/dexalin ) var/obj/item/reagent_containers/glass/beaker = null var/filtering = FALSE @@ -62,7 +62,7 @@ if(beaker) if(beaker.reagents.total_volume < beaker.reagents.maximum_volume) var/pumped = 0 - for(var/datum/reagent/x in occupant.reagents.reagent_list) + for(var/_x in occupant.reagents.reagent_volumes) occupant.reagents.trans_to_obj(beaker, 3) pumped++ if(ishuman(occupant)) @@ -74,7 +74,7 @@ if(beaker.reagents.total_volume < beaker.reagents.maximum_volume) var/datum/reagents/ingested = occupant.get_ingested_reagents() if(ingested) - for(var/datum/reagent/x in ingested.reagent_list) + for(var/_x in ingested.reagent_volumes) ingested.trans_to_obj(beaker, 1) else toggle_pump() @@ -133,31 +133,29 @@ data["blood_pressure_level"] = occupant.get_blood_pressure_alert() data["blood_o2"] = occupant.get_blood_oxygenation() data["bloodreagents"] = FALSE - if(length(occupant.reagents.reagent_list)) - var/list/blood_reagents = list() - for(var/A in occupant.reagents.reagent_list) - var/list/blood_reagent = list() - var/datum/reagent/R = A - blood_reagent["name"] = initial(R.name) - blood_reagent["amount"] = round(occupant.reagents.get_reagent_amount(R.type), 0.1) - blood_reagents += list(blood_reagent) - if(length(blood_reagents)) - data["bloodreagents"] = blood_reagents.Copy() + var/list/list/blood_reagents + for(var/_R in occupant.reagents.reagent_volumes) + var/list/blood_reagent = list() + var/decl/reagent/R = decls_repository.get_decl(_R) + blood_reagent["name"] = R.name + blood_reagent["amount"] = round(REAGENT_VOLUME(occupant.reagents, _R), 0.1) + LAZYADD(blood_reagents, list(blood_reagent)) + if(LAZYLEN(blood_reagents)) + data["bloodreagents"] = blood_reagents.Copy() data["hasstomach"] = FALSE data["stomachreagents"] = FALSE var/obj/item/organ/internal/stomach/S = occupant.internal_organs_by_name[BP_STOMACH] if(S) data["hasstomach"] = TRUE - if(length(S.ingested.reagent_list)) - var/list/stomach_reagents = list() - for(var/A in S.ingested.reagent_list) - var/list/stomach_reagent = list() - var/datum/reagent/R = A - stomach_reagent["name"] = initial(R.name) - stomach_reagent["amount"] = round(S.ingested.get_reagent_amount(R.type), 0.1) - stomach_reagents += list(stomach_reagent) - if(length(stomach_reagents)) - data["stomachreagents"] = stomach_reagents.Copy() + var/list/list/stomach_reagents + for(var/_R in S.ingested.reagent_volumes) + var/list/stomach_reagent = list() + var/decl/reagent/R = decls_repository.get_decl(_R) + stomach_reagent["name"] = R.name + stomach_reagent["amount"] = round(REAGENT_VOLUME(S.ingested, _R), 0.1) + LAZYADD(stomach_reagents, list(stomach_reagent)) + if(LAZYLEN(stomach_reagents)) + data["stomachreagents"] = stomach_reagents.Copy() if(ishuman(occupant)) var/mob/living/carbon/human/H = occupant data["pulse"] = H.get_pulse(GETPULSE_TOOL) @@ -166,7 +164,7 @@ for(var/T in available_chemicals) var/list/reagent = list() reagent["type"] = T - var/datum/reagent/C = T + var/decl/reagent/C = T reagent["name"] = initial(C.name) reagents += list(reagent) data["reagents"] = reagents.Copy() @@ -174,7 +172,7 @@ else data["occupant"] = FALSE if(beaker) - data["beaker"] = beaker.reagents.get_free_space() + data["beaker"] = REAGENTS_FREE_SPACE(beaker.reagents) else data["beaker"] = -1 data["filtering"] = filtering @@ -365,13 +363,13 @@ return if(occupant?.reagents) - var/chemical_amount = occupant.reagents.get_reagent_amount(chemical) - var/is_dylo = ispath(chemical, /datum/reagent/dylovene) - var/is_inaprov = ispath(chemical, /datum/reagent/inaprovaline) + var/chemical_amount = REAGENT_VOLUME(occupant.reagents, chemical) + var/is_dylo = ispath(chemical, /decl/reagent/dylovene) + var/is_inaprov = ispath(chemical, /decl/reagent/inaprovaline) if(is_dylo || is_inaprov) - var/dylo_amount = occupant.reagents.get_reagent_amount(/datum/reagent/dylovene) - var/inaprov_amount = occupant.reagents.get_reagent_amount(/datum/reagent/inaprovaline) - var/tricord_amount = occupant.reagents.get_reagent_amount(/datum/reagent/tricordrazine) + var/dylo_amount = REAGENT_VOLUME(occupant.reagents, /decl/reagent/dylovene) + var/inaprov_amount = REAGENT_VOLUME(occupant.reagents, /decl/reagent/inaprovaline) + var/tricord_amount = REAGENT_VOLUME(occupant.reagents, /decl/reagent/tricordrazine) if(tricord_amount > 20) if(is_dylo && inaprov_amount) to_chat(user, SPAN_WARNING("The subject has too much tricordrazine.")) @@ -385,4 +383,4 @@ else to_chat(user, SPAN_WARNING("The subject has too many chemicals.")) else - to_chat(user, SPAN_WARNING("There's no suitable occupant in \the [src].")) \ No newline at end of file + to_chat(user, SPAN_WARNING("There's no suitable occupant in \the [src].")) diff --git a/code/game/machinery/anti_bluespace.dm b/code/game/machinery/anti_bluespace.dm index 0c6f9382326..2d8c3e1caa6 100644 --- a/code/game/machinery/anti_bluespace.dm +++ b/code/game/machinery/anti_bluespace.dm @@ -1,3 +1,5 @@ +var/global/list/bluespace_inhibitors + /obj/machinery/anti_bluespace name = "bluespace inhibitor" desc = "Scrambles any bluespace related activity and displaces it away from the beacon's area of effect." @@ -9,6 +11,14 @@ active_power_usage = 5000 idle_power_usage = 1000 +/obj/machinery/anti_bluespace/Initialize() + . = ..() + LAZYADD(bluespace_inhibitors, src) + +/obj/machinery/anti_bluespace/Destroy() + LAZYREMOVE(bluespace_inhibitors, src) + return ..() + /obj/machinery/anti_bluespace/update_icon() . = ..() if(stat & BROKEN) diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm index 9540bd6ad69..8b4dc9ac174 100644 --- a/code/game/machinery/biogenerator.dm +++ b/code/game/machinery/biogenerator.dm @@ -2,7 +2,7 @@ name = "biogenerator" desc = "An advanced machine that can be used to convert grown plantlike biological material into various other bio-goods." icon = 'icons/obj/biogenerator.dmi' - icon_state = "biogen-stand" + icon_state = "biogen" density = 1 anchored = 1 use_power = 1 @@ -390,18 +390,18 @@ reagents = R R.my_atom = src beaker = new /obj/item/reagent_containers/glass/bottle(src) + update_icon() /obj/machinery/biogenerator/on_reagent_change() //When the reagents change, change the icon as well. update_icon() /obj/machinery/biogenerator/update_icon() if(!beaker) - icon_state = "biogen-empty" + icon_state = "[initial(icon_state)]-empty" else if(!processing) - icon_state = "biogen-stand" + icon_state = "[initial(icon_state)]-stand" else - icon_state = "biogen-work" - return + icon_state = "[initial(icon_state)]-work" /obj/machinery/biogenerator/attackby(var/obj/item/O as obj, var/mob/user as mob) if(default_deconstruction_screwdriver(user, O)) @@ -536,9 +536,9 @@ var/S = 0 for(var/obj/item/reagent_containers/food/snacks/grown/I in contents) S += 5 - if(I.reagents.get_reagent_amount(/datum/reagent/nutriment) < 0.1) + if(REAGENT_VOLUME(I.reagents, /decl/reagent/nutriment) < 0.1) points += 1 - else points += I.reagents.get_reagent_amount(/datum/reagent/nutriment) * 10 * eat_eff + else points += REAGENT_VOLUME(I.reagents, /decl/reagent/nutriment) * 10 * eat_eff qdel(I) CHECK_TICK if(S) @@ -647,4 +647,38 @@ man_rating += P.rating build_eff = man_rating - eat_eff = bin_rating \ No newline at end of file + eat_eff = bin_rating + +/obj/machinery/biogenerator/small + icon_state = "biogen_small" + density = FALSE + capacity = 25 + + component_types = list( + /obj/item/circuitboard/biogenerator/small, + /obj/item/stock_parts/matter_bin, + /obj/item/stock_parts/manipulator + ) + +/obj/machinery/biogenerator/small/north + dir = NORTH + pixel_y = -13 + layer = MOB_LAYER + 0.1 + +/obj/machinery/biogenerator/small/south + dir = SOUTH + pixel_y = 20 + layer = OBJ_LAYER + 0.3 + +/obj/machinery/biogenerator/small/east + dir = EAST + pixel_x = -12 + +/obj/machinery/biogenerator/small/west + dir = WEST + pixel_x = 11 + +/obj/machinery/biogenerator/small/RefreshParts() + ..() + build_eff = max(build_eff - 1, 1) + eat_eff = max(eat_eff - 1, 1) diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index 9d1870a2ae0..ecf9bc128a2 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -62,9 +62,9 @@ // DNA sample from syringe. if(!prints_prosthetics && istype(W,/obj/item/reagent_containers/syringe)) var/obj/item/reagent_containers/syringe/S = W - var/datum/reagent/blood/injected = locate() in S.reagents.reagent_list //Grab some blood - if(injected && injected.data) - loaded_dna = injected.data + if(REAGENT_DATA(S.reagents, /decl/reagent/blood)) + loaded_dna = REAGENT_DATA(S.reagents, /decl/reagent/blood) + S.reagents.clear_reagents() to_chat(user, "You inject the blood sample into the bioprinter.") return // Meat for biomass. diff --git a/code/game/machinery/body_scanner.dm b/code/game/machinery/body_scanner.dm index 6b2b41ca9c2..b7e4c9ba9f8 100644 --- a/code/game/machinery/body_scanner.dm +++ b/code/game/machinery/body_scanner.dm @@ -438,11 +438,11 @@ VUEUI_SET_CHECK(data["paralysis"], occupant.paralysis, ., data) VUEUI_SET_CHECK(data["bodytemp"], occupant.bodytemperature, ., data) VUEUI_SET_CHECK(data["occupant"], !!occupant, ., data) - VUEUI_SET_CHECK(data["norepiAmt"], R.get_reagent_amount(/datum/reagent/inaprovaline), ., data) - VUEUI_SET_CHECK(data["soporAmt"], R.get_reagent_amount(/datum/reagent/soporific), ., data) - VUEUI_SET_CHECK(data["bicardAmt"], R.get_reagent_amount(/datum/reagent/bicaridine), ., data) - VUEUI_SET_CHECK(data["dexAmt"], R.get_reagent_amount(/datum/reagent/dexalin), ., data) - VUEUI_SET_CHECK(data["dermAmt"], R.get_reagent_amount(/datum/reagent/dermaline), ., data) + VUEUI_SET_CHECK(data["norepiAmt"], REAGENT_VOLUME(R, /decl/reagent/inaprovaline), ., data) + VUEUI_SET_CHECK(data["soporAmt"], REAGENT_VOLUME(R, /decl/reagent/soporific), ., data) + VUEUI_SET_CHECK(data["bicardAmt"], REAGENT_VOLUME(R, /decl/reagent/bicaridine), ., data) + VUEUI_SET_CHECK(data["dexAmt"], REAGENT_VOLUME(R, /decl/reagent/dexalin), ., data) + VUEUI_SET_CHECK(data["dermAmt"], REAGENT_VOLUME(R, /decl/reagent/dermaline), ., data) VUEUI_SET_CHECK(data["otherAmt"], R.total_volume - (data["soporAmt"] + data["dexAmt"] + data["bicardAmt"] + data["norepiAmt"] + data["dermAmt"]), ., data) has_internal_injuries = FALSE has_external_injuries = FALSE @@ -645,12 +645,12 @@ "paralysis" = H.paralysis, "bodytemp" = H.bodytemperature, "borer_present" = H.has_brain_worms(), - "inaprovaline_amount" = H.reagents.get_reagent_amount(/datum/reagent/inaprovaline), - "dexalin_amount" = H.reagents.get_reagent_amount(/datum/reagent/dexalin), - "stoxin_amount" = H.reagents.get_reagent_amount(/datum/reagent/soporific), - "bicaridine_amount" = H.reagents.get_reagent_amount(/datum/reagent/bicaridine), - "dermaline_amount" = H.reagents.get_reagent_amount(/datum/reagent/dermaline), - "blood_amount" = H.vessel.get_reagent_amount(/datum/reagent/blood), + "inaprovaline_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/inaprovaline), + "dexalin_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/dexalin), + "stoxin_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/soporific), + "bicaridine_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/bicaridine), + "dermaline_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/dermaline), + "blood_amount" = REAGENT_VOLUME(H.vessel, /decl/reagent/blood), "disabilities" = H.sdisabilities, "lung_ruptured" = H.is_lung_ruptured(), "external_organs" = H.organs.Copy(), @@ -787,4 +787,4 @@ dat += text("Cataracts detected.
") if(occ["sdisabilities"] & NEARSIGHTED) dat += text("Retinal misalignment detected.
") - return dat \ No newline at end of file + return dat diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 2aff376f563..895e189f07e 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -194,8 +194,8 @@ occupant.adjustCloneLoss(-2 * heal_rate) //So clones don't die of oxyloss in a running pod. - if(occupant.reagents.get_reagent_amount(/datum/reagent/inaprovaline) < 30) - occupant.reagents.add_reagent(/datum/reagent/inaprovaline, 60) + if(REAGENT_VOLUME(occupant.reagents, /decl/reagent/inaprovaline) < 30) + occupant.reagents.add_reagent(/decl/reagent/inaprovaline, 60) occupant.Sleeping(30) //Also heal some oxyloss ourselves because inaprovaline is so bad at preventing it!! occupant.adjustOxyLoss(-4) diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 0a5130bf02e..866b95163c9 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -141,9 +141,8 @@ data["beakerVolume"] = 0 if(beaker) data["beakerLabel"] = beaker.label_text ? beaker.label_text : null - if (beaker.reagents && beaker.reagents.reagent_list.len) - for(var/datum/reagent/R in beaker.reagents.reagent_list) - data["beakerVolume"] += R.volume + for(var/_R in beaker.reagents.reagent_volumes) + data["beakerVolume"] += REAGENT_VOLUME(beaker.reagents, _R) // update the ui if it exists, returns null if no ui is passed/found ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) @@ -294,8 +293,8 @@ occupant.heal_organ_damage(heal_brute,heal_fire) else occupant.adjustFireLoss(3)//Cryopods kill diona. This damage combines with the normal cold temp damage, and their disabled regen - var/has_cryo = occupant.reagents.get_reagent_amount(/datum/reagent/cryoxadone) >= 1 - var/has_clonexa = occupant.reagents.get_reagent_amount(/datum/reagent/clonexadone) >= 1 + var/has_cryo = REAGENT_VOLUME(occupant.reagents, /decl/reagent/cryoxadone) >= 1 + var/has_clonexa = REAGENT_VOLUME(occupant.reagents, /decl/reagent/clonexadone) >= 1 var/has_cryo_medicine = has_cryo || has_clonexa if(beaker && !has_cryo_medicine) beaker.reagents.trans_to_mob(occupant, 1, CHEM_BLOOD) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index f6f514b3c69..7f351489c2b 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1521,9 +1521,14 @@ About the new airlock wires panel: if(AM.blocks_airlock()) close_door_in(6) return + var/has_opened_hatch = FALSE for(var/turf/turf in locs) for(var/atom/movable/AM in turf) - if(AM.airlock_crush(DOOR_CRUSH_DAMAGE)) + if(hashatch && AM.checkpass(PASSDOORHATCH)) + if(!has_opened_hatch) + open_hatch(AM) + has_opened_hatch = TRUE + else if(AM.airlock_crush(DOOR_CRUSH_DAMAGE)) take_damage(DOOR_CRUSH_DAMAGE) use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people if(arePowerSystemsOn()) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index eae41c9f1c9..228083fb19e 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -20,7 +20,7 @@ if(beaker) var/datum/reagents/reagents = beaker.reagents - if(reagents.total_volume) + if(reagents?.total_volume) var/image/filling = image('icons/obj/iv_drip.dmi', src, "reagent") var/percent = round((reagents.total_volume / beaker.volume) * 100) @@ -33,7 +33,8 @@ if(80 to 90) filling.icon_state = "reagent80" if(91 to INFINITY) filling.icon_state = "reagent100" - filling.icon += reagents.get_color() + var/reagent_color = reagents.get_color() + filling.icon += reagent_color add_overlay(filling) /obj/machinery/iv_drip/MouseDrop(over_object, src_location, over_location) @@ -74,61 +75,52 @@ /obj/machinery/iv_drip/machinery_process() set background = 1 - if(src.attached) + if(!beaker) + return - if(!(get_dist(src, src.attached) <= 1 && isturf(src.attached.loc))) - var/obj/item/organ/external/affecting = src.attached.get_organ(pick(BP_R_ARM, BP_L_ARM)) - src.attached.visible_message("The needle is ripped out of [src.attached]'s [affecting.limb_name == BP_R_ARM ? "right arm" : "left arm"].", "The needle painfully rips out of your [affecting.limb_name == BP_R_ARM ? "right arm" : "left arm"].") - affecting.take_damage(brute = 5, damage_flags = DAM_SHARP) - src.attached = null - src.update_icon() + if(!istype(attached)) + return + + if(!(get_dist(src, attached) <= 1 && isturf(attached.loc))) + var/obj/item/organ/external/affecting = attached.get_organ(pick(BP_R_ARM, BP_L_ARM)) + attached.visible_message("The needle is ripped out of [attached]'s [affecting.limb_name == BP_R_ARM ? "right arm" : "left arm"].", "The needle painfully rips out of your [affecting.limb_name == BP_R_ARM ? "right arm" : "left arm"].") + affecting.take_damage(brute = 5, damage_flags = DAM_SHARP) + attached = null + update_icon() + return + + if(!attached.dna) + return + + if(NOCLONE in attached.mutations) + return + + if(attached.species.flags & NO_BLOOD) + return + + // Give blood + if(mode) + if(beaker.reagents.total_volume > 0) + beaker.reagents.trans_to_mob(attached, transfer_amount, CHEM_BLOOD) + update_icon() + + // Take blood + else + var/amount = REAGENTS_FREE_SPACE(beaker.reagents) + amount = min(amount, 4) + // If the beaker is full, ping + if(amount == 0) + if(prob(5)) + visible_message("[src] pings.") return - if(src.attached && src.beaker) + if(attached.get_blood_volume() < 90 && !blood_message_sent) + visible_message("[icon2html(src, viewers(get_turf(src)))] \The [src] flashes a warning light!") + playsound(src, 'sound/machines/buzz-two.ogg', 50) + blood_message_sent = TRUE - var/mob/living/carbon/human/T = attached - - if(!istype(T)) - return - - if(!T.dna) - return - - if(NOCLONE in T.mutations) - return - - if(T.species.flags & NO_BLOOD) - return - - // Give blood - if(mode) - if(src.beaker.volume > 0) - src.beaker.reagents.trans_to_mob(src.attached, transfer_amount, CHEM_BLOOD) - update_icon() - - // Take blood - else - var/amount = beaker.reagents.maximum_volume - beaker.reagents.total_volume - amount = min(amount, 4) - // If the beaker is full, ping - if(amount == 0) - if(prob(5)) - visible_message("\The [src] pings.") - return - - if(T.get_blood_volume() < 90 && !blood_message_sent) - visible_message("[icon2html(src, viewers(get_turf(src)))] \The [src] flashes a warning light!") - playsound(src, 'sound/machines/buzz-two.ogg', 50) - blood_message_sent = TRUE - - var/datum/reagent/B = T.take_blood(beaker,amount) - - if(B) - beaker.reagents.reagent_list |= B - beaker.reagents.update_total() - beaker.on_reagent_change() - beaker.reagents.handle_reactions() - update_icon() + if(attached.take_blood(beaker,amount)) + update_icon() /obj/machinery/iv_drip/attack_hand(mob/user as mob) if (isAI(user)) @@ -154,20 +146,20 @@ return mode = !mode - to_chat(usr, "The IV drip is now [mode ? "injecting" : "taking blood"].") + to_chat(usr, "[src] is now [mode ? "injecting" : "taking blood"].") /obj/machinery/iv_drip/examine(mob/user) ..(user) if (!(user in view(2)) && user!=src.loc) return - to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].") + to_chat(user, "[src] is [mode ? "injecting" : "taking blood"].") to_chat(user, "The transfer rate is set to [src.transfer_amount] u/sec") if(beaker) - if(beaker.reagents && beaker.reagents.reagent_list.len) + if(LAZYLEN(beaker.reagents.reagent_volumes)) to_chat(usr, "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.") else - to_chat(usr, "Attached is an empty [beaker].") + to_chat(usr, "Attached is [beaker]. It is empty.") else to_chat(usr, "No chemicals are attached.") diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm index 8d838f1ddd6..749a9f52465 100644 --- a/code/game/machinery/wishgranter.dm +++ b/code/game/machinery/wishgranter.dm @@ -58,13 +58,13 @@ user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) user.see_invisible = SEE_INVISIBLE_LEVEL_TWO to_chat(user, "The walls suddenly disappear.") - user.set_species(SPECIES_SHADOW) + user.set_species(SPECIES_REVENANT) user.mind.special_role = "Avatar of the Wish Granter" if("I want to be rich") to_chat(user, "Your wish is granted, but at a terrible cost...") to_chat(user, "The Wish Granter punishes you for your greediness, claiming your soul and warping your body to match the darkness in your heart.") new /obj/structure/closet/syndicate/resources/everything(loc) - user.set_species(SPECIES_SHADOW) + user.set_species(SPECIES_REVENANT) user.mind.special_role = "Avatar of the Wish Granter" if("I want immortality") to_chat(user, "Your wish is granted, but at a terrible cost...") diff --git a/code/game/modifiers/modifiers.dm b/code/game/modifiers/modifiers.dm index 2541c70f126..ee03e9c040f 100644 --- a/code/game/modifiers/modifiers.dm +++ b/code/game/modifiers/modifiers.dm @@ -5,10 +5,6 @@ //This system is designed to allow making non-permanant, reversible changes to variables of any atom, //Though the system will be primarily used for altering properties of mobs, it can work on anything. -//Intended uses are to allow equipment and items that modify a mob's various stats and attributes -//As well as to replace the badly designed chem effects system - - This system works through a few main procs which should be overridden: All overridden procs should contain a call to parent at the start, before any other code @@ -95,20 +91,13 @@ it should be avoided in favour of manual removal where possible //This is essentially a more permissable version of equipment, and works when held, in backpacks, pockets, etc //It can also be used on non-mob targets -#define MODIFIER_REAGENT 3 -//The status effect remains valid as long as the dose of this chemical in a mob's reagents is above -//a specified dose value (specified in source data). -//The default of zero will keep it valid if the chemical is in them at all -//This checks for the reagent by type, in any of a mob's reagent holders - touching, blood, ingested -//Affected atom must be a mob - -#define MODIFIER_AURA 4 +#define MODIFIER_AURA 3 //The modifier remains valid as long as the target's turf is within a range of the source's turf //The range is defined in source data //A range of zero is still valid if source and target are on the same turf. Sub-zero range is invalid //Works on any affected atom -#define MODIFIER_TIMED 5 +#define MODIFIER_TIMED 4 //The modifier remains valid as long as the duration has not expired. //Note that a duration can be used on any time, this type is just one that does not //check anything else but duration. @@ -117,7 +106,7 @@ it should be avoided in favour of manual removal where possible //Works on any atom -#define MODIFIER_CUSTOM 6 +#define MODIFIER_CUSTOM 5 //The validity check will always return 1. The author is expected to override //it with custom validity checking behaviour. //Does not require or use a source atom @@ -225,10 +214,6 @@ it should be avoided in favour of manual removal where possible if (!source || !istype(source, /obj)) return invalid_creation("Item type requires a source") - if (MODIFIER_REAGENT) - if (!istype(target, /mob) || !istype(source, /datum/reagent)) - return invalid_creation("Reagent type requires a mob target and a reagent source") - if (MODIFIER_AURA) if (!source || !istype(source, /atom)) return invalid_creation("Aura type requires an atom source") @@ -312,44 +297,6 @@ it should be avoided in favour of manual removal where possible if (MODIFIER_ITEM) if (!source.find_up_hierarchy(target))//If source is somewhere inside target, this will be true return validity_fail("Not found in parent hierarchy") - if (MODIFIER_REAGENT) - var/totaldose = 0 - if (!istype(source, /datum/reagent))//this shouldnt happen - return validity_fail("Source is not a reagent!") - - var/ourtype = source.type - - for (var/datum/reagent/R in target.reagents.reagent_list) - if (istype(R, ourtype)) - totaldose += R.dose - - if (istype(target, /mob/living)) - var/mob/living/L = target - - if(ishuman(L)) - var/mob/living/carbon/human/H = L - - for (var/datum/reagent/R in H.get_ingested_reagents()) - if(istype(R, ourtype)) - totaldose += R.dose - - if (istype(target, /mob/living/carbon)) - var/mob/living/carbon/C = target - - for (var/datum/reagent/R in C.bloodstr.reagent_list) - if (istype(R, ourtype)) - totaldose += R.dose - - for (var/datum/reagent/R in C.touching.reagent_list) - if (istype(R, ourtype)) - totaldose += R.dose - - for (var/datum/reagent/R in C.breathing.reagent_list) - if (istype(R, ourtype)) - totaldose += R.dose - - if (totaldose < source_data) - return validity_fail("Dose is too low!") if (MODIFIER_AURA) if (!(get_turf(target) in range(source_data, get_turf(source)))) diff --git a/code/game/modifiers/modifiers_chem.dm b/code/game/modifiers/modifiers_chem.dm deleted file mode 100644 index af010976819..00000000000 --- a/code/game/modifiers/modifiers_chem.dm +++ /dev/null @@ -1,154 +0,0 @@ -//Stimulant modifier. Applied in varying strengths by hyperzine and caffienated drinks -//Increases sprinting speed, walk speed, and stamina regen -/datum/modifier/stimulant - var/sprint_speed_added = 0 - var/regen_added = 0 - var/delay_added = 0 - -/datum/modifier/stimulant/activate() - ..() - if (isliving(target)) - var/mob/living/L = target - - sprint_speed_added = 0.2 * strength - L.sprint_speed_factor += sprint_speed_added - - regen_added = L.stamina_recovery * 0.3 * strength - L.stamina_recovery += regen_added - - delay_added = -1.5 * strength - L.move_delay_mod += delay_added - - - -/datum/modifier/stimulant/deactivate() - ..() - if (isliving(target)) - var/mob/living/L = target - L.sprint_speed_factor -= sprint_speed_added - L.stamina_recovery -= regen_added - L.move_delay_mod -= delay_added - - - -//Adrenaline, granted by synaptizine and inaprovaline, with different strengths for each -//Allows the body to endure more, increasing speed a little, stamina a lot, stamina regen a lot, -//and reducing sprint costs -//Synaptizine applies it at strength 1, inaprovaline applies it at strength 0.6 -//Is applied using strengthen override mode, so synaptizine will replace inaprovaline if both are present -/datum/modifier/adrenaline - var/speed_added = 0 - var/stamina_added = 0 - var/cost_added = 0 - var/regen_added = 0 - -/datum/modifier/adrenaline/activate() - ..() - if (isliving(target)) - var/mob/living/L = target - speed_added += 0.1*strength - L.sprint_speed_factor += speed_added - - stamina_added = L.max_stamina * strength - L.max_stamina += stamina_added - - cost_added = -0.35 * strength - L.sprint_cost_factor += cost_added - - regen_added = max ((L.stamina_recovery * 0.7 * strength), 5) - L.stamina_recovery += regen_added - -/datum/modifier/adrenaline/deactivate() - ..() - if (isliving(target)) - var/mob/living/L = target - - L.stamina_recovery -= regen_added - L.max_stamina -= stamina_added - L.sprint_cost_factor -= cost_added - L.sprint_speed_factor -= speed_added - -/datum/modifier/luminous - var/lightrange = 0 - -/datum/modifier/luminous/activate() - ..() - if (isliving(target)) - var/mob/living/L = target - lightrange = strength - L.set_light(lightrange, 1, LIGHT_COLOR_FIRE) - -/datum/modifier/luminous/deactivate() - ..() - if (isliving(target)) - var/mob/living/L = target - L.set_light(0) - -//Doubleburn napalm modifier. Applied by Zo'rane Fire -//Increases damage dealt by burn sources -/datum/modifier/napalm - var/added_burn_mod - var/delta - -/datum/modifier/napalm/activate() - ..() - delta = strength - if (isliving(target)) - var/mob/living/L = target - added_burn_mod = L.burn_mod * delta - L.burn_mod - L.burn_mod += added_burn_mod - -/datum/modifier/napalm/deactivate() - ..() - if (isliving(target)) - var/mob/living/L = target - L.burn_mod -= added_burn_mod - -/datum/modifier/napalm/custom_validity() - if(istype(target, /mob/living)) - var/mob/living/L = target - if(L.fire_stacks) - return 1 - return 0 - -//Berserk Modifier -//Causes a hulk like effect - -/datum/modifier/berserk - var/last_shock_stage = 0 - -/datum/modifier/berserk/activate() - ..() - if(ishuman(target)) - var/mob/living/carbon/human/H = target - to_chat(H, "An uncontrollable rage overtakes your thoughts!") - H.add_client_color(/datum/client_color/berserk) - - last_shock_stage = H.shock_stage - H.shock_stage = 0 - - H.SetParalysis(0) - H.SetStunned(0) - H.SetWeakened(0) - H.setHalLoss(0) - H.lying = 0 - H.update_canmove() - -/datum/modifier/berserk/process() - if(..()) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - H.drowsyness = max(H.drowsyness - 5, 0) - H.AdjustParalysis(-1) - H.AdjustStunned(-1) - H.AdjustWeakened(-1) - H.adjustHalLoss(-1) - -/datum/modifier/berserk/deactivate() - ..() - if(ishuman(target)) - var/mob/living/carbon/human/H = target - to_chat(H, "Your rage fades away, your thoughts are clear once more!") - H.remove_client_color(/datum/client_color/berserk) - - H.shock_stage = last_shock_stage \ No newline at end of file diff --git a/code/game/objects/effects/chem/chemsmoke.dm b/code/game/objects/effects/chem/chemsmoke.dm index 40f1f15e8f0..b26f2a00c06 100644 --- a/code/game/objects/effects/chem/chemsmoke.dm +++ b/code/game/objects/effects/chem/chemsmoke.dm @@ -171,7 +171,7 @@ if(!location) return - if(chemholder.reagents.reagent_list.len) //reagent application - only run if there are extra reagents in the smoke + if(LAZYLEN(chemholder.reagents.reagent_volumes)) //reagent application - only run if there are extra reagents in the smoke for(var/turf/T in wallList) chemholder.reagents.touch_turf(T) for(var/turf/T in targetTurfs) @@ -253,7 +253,7 @@ else smoke = new /obj/effect/effect/smoke/chem(location, smoke_duration + rand(smoke_duration*-0.25, smoke_duration*0.25), T, I) - if(chemholder.reagents.reagent_list.len) + if(LAZYLEN(chemholder?.reagents?.reagent_volumes)) chemholder.reagents.trans_to_obj(smoke, chemholder.reagents.total_volume / dist, copy = 1) //copy reagents to the smoke so mob/breathe() can handle inhaling the reagents //Kinda ugly, but needed unless the system is reworked diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm index cc3c2d821a0..42e0751c555 100644 --- a/code/game/objects/effects/chem/foam.dm +++ b/code/game/objects/effects/chem/foam.dm @@ -66,8 +66,8 @@ if(!metal) F.create_reagents(10) if(reagents) - for(var/datum/reagent/R in reagents.reagent_list) - F.reagents.add_reagent(R.type, 1, safety = 1) //added safety check since reagents in the foam have already had a chance to react + for(var/_R in reagents.reagent_volumes) + F.reagents.add_reagent(_R, 1, safety = 1) //added safety check since reagents in the foam have already had a chance to react /obj/effect/effect/foam/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) // foam disolves when heated, except metal foams if(!metal && prob(max(0, exposed_temperature - 475))) @@ -107,8 +107,8 @@ // bit of a hack here. Foam carries along any reagent also present in the glass it is mixed with (defaults to water if none is present). Rather than actually transfer the reagents, this makes a list of the reagent ids and spawns 1 unit of that reagent when the foam disolves. if(carry && !metal) - for(var/datum/reagent/R in carry.reagent_list) - carried_reagents += R.type + for(var/_R in carry.reagent_volumes) + carried_reagents += _R /datum/effect/effect/system/foam_spread/start() set waitfor = FALSE @@ -127,7 +127,7 @@ for(var/id in carried_reagents) F.reagents.add_reagent(id, 1, safety = 1) //makes a safety call because all reagents should have already reacted anyway else - F.reagents.add_reagent(/datum/reagent/water, 1, safety = 1) + F.reagents.add_reagent(/decl/reagent/water, 1, safety = 1) // wall formed by metal foams, dense and opaque, but easy to break diff --git a/code/game/objects/effects/chem/water.dm b/code/game/objects/effects/chem/water.dm index 561b4bfd491..7334030bc57 100644 --- a/code/game/objects/effects/chem/water.dm +++ b/code/game/objects/effects/chem/water.dm @@ -31,7 +31,7 @@ if(length(reagents)) var/mob/M = locate() in get_turf(src) if(M) - reagents.trans_to(M, reagents.get_reagent_amount() * 0.75) + reagents.trans_to(M, reagents.total_volume * 0.75) sleep(lifespan) qdel(src) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index d2f0a3bfda0..200a0897d8f 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -26,8 +26,9 @@ . = ..() if (!mapload && ROUND_IS_STARTED) SSfeedback.IncrementSimpleStat("messes_made") - + var/turf/T = get_turf(src) - if(T.is_space()) - animate(src, alpha = 0, time = 5 SECONDS) - QDEL_IN(src, 5 SECONDS) \ No newline at end of file + if(!T?.is_space()) + return + animate(src, alpha = 0, time = 5 SECONDS) + QDEL_IN(src, 5 SECONDS) diff --git a/code/game/objects/items/bees_items.dm b/code/game/objects/items/bees_items.dm index adbcc3e18f4..e8324e7192f 100644 --- a/code/game/objects/items/bees_items.dm +++ b/code/game/objects/items/bees_items.dm @@ -27,15 +27,11 @@ name = "honeycomb" icon_state = "honeycomb" desc = "Dripping with sugary sweetness." - - New() - ..() - -/obj/item/reagent_containers/food/snacks/honeycomb/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/nutriment/honey,10) - reagents.add_reagent(/datum/reagent/nutriment, 0.5) - reagents.add_reagent(/datum/reagent/sugar, 2) + reagents_to_add = list( + /decl/reagent/nutriment/honey = 10, + /decl/reagent/nutriment = 0.5, + /decl/reagent/sugar = 2 + ) bitesize = 2 /obj/item/book/manual/hydroponics_beekeeping diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index 12b8929c4f9..906a813bc70 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -18,17 +18,17 @@ /obj/item/reagent_containers/glass/beaker/vial/random flags = 0 - var/list/random_reagent_list = list(list(/datum/reagent/water = 15) = 1, list(/datum/reagent/spacecleaner = 15) = 1) + var/list/random_reagent_list = list(list(/decl/reagent/water = 15) = 1, list(/decl/reagent/spacecleaner = 15) = 1) /obj/item/reagent_containers/glass/beaker/vial/random/toxin random_reagent_list = list( - list(/datum/reagent/mindbreaker = 10, /datum/reagent/space_drugs = 20) = 3, - list(/datum/reagent/mercury = 15) = 3, - list(/datum/reagent/toxin/carpotoxin = 15) = 2, - list(/datum/reagent/impedrezene = 15) = 2, - list(/datum/reagent/toxin/dextrotoxin = 10) = 1, - list(/datum/reagent/mental/neurapan = 15) = 2, - list(/datum/reagent/toxin/spectrocybin = 15) = 1) + list(/decl/reagent/mindbreaker = 10, /decl/reagent/space_drugs = 20) = 3, + list(/decl/reagent/mercury = 15) = 3, + list(/decl/reagent/toxin/carpotoxin = 15) = 2, + list(/decl/reagent/impedrezene = 15) = 2, + list(/decl/reagent/toxin/dextrotoxin = 10) = 1, + list(/decl/reagent/mental/neurapan = 15) = 2, + list(/decl/reagent/toxin/spectrocybin = 15) = 1) /obj/item/reagent_containers/glass/beaker/vial/random/Initialize() . = ..() @@ -40,7 +40,8 @@ reagents.add_reagent(reagent, picked_reagents[reagent]) var/list/names = new - for(var/datum/reagent/R in reagents.reagent_list) + for(var/_R in reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) names += R.name desc = "Contains [english_list(names)]." @@ -54,6 +55,6 @@ . = ..() if(is_open_container()) flags ^= OPENCONTAINER - reagents.add_reagent(/datum/reagent/venenum,volume) + reagents.add_reagent(/decl/reagent/venenum,volume) desc = "Contains venenum." update_icon() diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index cd75fb3ec87..a48fe300e13 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -3,42 +3,42 @@ colour = "#DA0000" shadeColour = "#810C0C" colourName = "red" - reagents_to_add = list(/datum/reagent/crayon_dust/red = 10) + reagents_to_add = list(/decl/reagent/crayon_dust/red = 10) /obj/item/pen/crayon/orange icon_state = "crayonorange" colour = "#FF9300" shadeColour = "#A55403" colourName = "orange" - reagents_to_add = list(/datum/reagent/crayon_dust/orange = 10) + reagents_to_add = list(/decl/reagent/crayon_dust/orange = 10) /obj/item/pen/crayon/yellow icon_state = "crayonyellow" colour = "#FFF200" shadeColour = "#886422" colourName = "yellow" - reagents_to_add = list(/datum/reagent/crayon_dust/yellow = 10) + reagents_to_add = list(/decl/reagent/crayon_dust/yellow = 10) /obj/item/pen/crayon/green icon_state = "crayongreen" colour = "#A8E61D" shadeColour = "#61840F" colourName = "green" - reagents_to_add = list(/datum/reagent/crayon_dust/green = 10) + reagents_to_add = list(/decl/reagent/crayon_dust/green = 10) /obj/item/pen/crayon/blue icon_state = "crayonblue" colour = "#00B7EF" shadeColour = "#0082A8" colourName = "blue" - reagents_to_add = list(/datum/reagent/crayon_dust/blue = 10) + reagents_to_add = list(/decl/reagent/crayon_dust/blue = 10) /obj/item/pen/crayon/purple icon_state = "crayonpurple" colour = "#DA00FF" shadeColour = "#810CFF" colourName = "purple" - reagents_to_add = list(/datum/reagent/crayon_dust/purple = 10) + reagents_to_add = list(/decl/reagent/crayon_dust/purple = 10) /obj/item/pen/crayon/mime icon_state = "crayonmime" @@ -46,7 +46,7 @@ colour = "#FFFFFF" shadeColour = "#000000" colourName = "mime" - reagents_to_add = list(/datum/reagent/crayon_dust/grey = 15) + reagents_to_add = list(/decl/reagent/crayon_dust/grey = 15) /obj/item/pen/crayon/mime/attack_self(mob/living/user as mob) //inversion if(colour != "#FFFFFF" && shadeColour != "#000000") @@ -64,7 +64,7 @@ colour = "#FFF000" shadeColour = "#000FFF" colourName = "rainbow" - reagents_to_add = list(/datum/reagent/crayon_dust/brown = 20) + reagents_to_add = list(/decl/reagent/crayon_dust/brown = 20) /obj/item/pen/crayon/rainbow/attack_self(mob/living/user as mob) colour = input(user, "Please select the main colour.", "Crayon colour") as color @@ -96,7 +96,7 @@ to_chat(user, "You finish drawing.") target.add_fingerprint(user) // Adds their fingerprints to the floor the crayon is drawn on. if(reagents && LAZYLEN(reagents_to_add)) - for(var/datum/reagent/R in reagents_to_add) + for(var/decl/reagent/R in reagents_to_add) reagents.remove_reagent(R,0.5/LAZYLEN(reagents_to_add)) //using crayons reduces crayon dust in it. if(!reagents.has_all_reagents(reagents_to_add)) to_chat(user, "You used up your crayon!") @@ -117,4 +117,4 @@ ..(user, target_zone) /obj/item/pen/crayon/attack_self(var/mob/user) - return \ No newline at end of file + return diff --git a/code/game/objects/items/devices/lighting/flashlight.dm b/code/game/objects/items/devices/lighting/flashlight.dm index c4f15923d99..1eea20fa1f4 100644 --- a/code/game/objects/items/devices/lighting/flashlight.dm +++ b/code/game/objects/items/devices/lighting/flashlight.dm @@ -110,8 +110,8 @@ if(M.getBrainLoss() > 15) to_chat(user, SPAN_NOTICE("There's visible lag between left and right pupils' reactions.")) - var/list/pinpoint = list(/datum/reagent/oxycomorphine=1,/datum/reagent/mortaphenyl=5) - var/list/dilating = list(/datum/reagent/space_drugs=5,/datum/reagent/mindbreaker=1) + var/list/pinpoint = list(/decl/reagent/oxycomorphine=1,/decl/reagent/mortaphenyl=5) + var/list/dilating = list(/decl/reagent/space_drugs=5,/decl/reagent/mindbreaker=1) var/datum/reagents/ingested = H.get_ingested_reagents() if(H.reagents.has_any_reagent(pinpoint) || ingested.has_any_reagent(pinpoint)) to_chat(user, SPAN_NOTICE("\The [M]'s pupils are already pinpoint and cannot narrow any more.")) diff --git a/code/game/objects/items/devices/lighting/lamp.dm b/code/game/objects/items/devices/lighting/lamp.dm index d82ebc82f1a..985cac54252 100644 --- a/code/game/objects/items/devices/lighting/lamp.dm +++ b/code/game/objects/items/devices/lighting/lamp.dm @@ -13,7 +13,6 @@ slot_flags = 0 //No wearing desklamps light_wedge = LIGHT_OMNI - // green-shaded desk lamp /obj/item/device/flashlight/lamp/green desc = "A classic green-shaded desk lamp." @@ -23,10 +22,44 @@ brightness_on = 5 light_color = "#FFC58F" -/obj/item/device/flashlight/lamp/verb/toggle_light() - set name = "Toggle light" - set category = "Object" - set src in oview(1) +//Lava Lamps: Because we're already stuck in the 70ies with those fax machines. +/obj/item/device/flashlight/lamp/lava + name = "data encryption lamp" + desc = "Random oil globules within were parsed in photos for your protection. Enjoy this kitschy memorabilia by sticking it on your desk." + icon_state = "lavalamp" + brightness_on = 3 + matter = list(DEFAULT_WALL_MATERIAL = 250, MATERIAL_GLASS = 200) - if(!usr.stat) - attack_self(usr) +/obj/item/device/flashlight/lamp/lava/update_icon() + if(on) + set_light(brightness_on) + else + set_light(0) + cut_overlays() + var/image/I = image(icon = icon, icon_state = "lavalamp-[on ? "on" : "off"]") + I.color = light_color + add_overlay(I) + +/obj/item/device/flashlight/lamp/lava/red + light_color = COLOR_RED + +/obj/item/device/flashlight/lamp/lava/blue + light_color = COLOR_BLUE + +/obj/item/device/flashlight/lamp/lava/cyan + light_color = COLOR_CYAN + +/obj/item/device/flashlight/lamp/lava/green + light_color = COLOR_GREEN + +/obj/item/device/flashlight/lamp/lava/orange + light_color = COLOR_ORANGE + +/obj/item/device/flashlight/lamp/lava/purple + light_color = COLOR_PURPLE + +/obj/item/device/flashlight/lamp/lava/pink + light_color = COLOR_PINK + +/obj/item/device/flashlight/lamp/lava/yellow + light_color = COLOR_YELLOW diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 2b53e586d67..5d0b84369a0 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -45,9 +45,10 @@ pai.death(0) return ..() -/obj/item/device/paicard/attackby(obj/item/C as obj, mob/user as mob) +/obj/item/device/paicard/attackby(obj/item/C, mob/user) if(istype(C, /obj/item/card/id)) scan_ID(C, user) + return else if(istype(C, /obj/item/device/encryptionkey)) if(length(installed_encryptionkeys) > 2) to_chat(user, SPAN_WARNING("\The [src] already has the full number of possible encryption keys installed!")) @@ -67,6 +68,7 @@ to_chat(pai, SPAN_NOTICE("You now have access to these radio channels: [english_list(radio.channels)].")) else to_chat(user, SPAN_WARNING("\The [src] would not gain any new channels from \the [EK].")) + return else if(C.isscrewdriver()) if(!length(installed_encryptionkeys)) to_chat(user, SPAN_WARNING("There are no installed encryption keys to remove!")) @@ -77,6 +79,12 @@ EK.forceMove(get_turf(src)) installed_encryptionkeys -= EK recalculateChannels() + return + else if(istype(C, /obj/item/stack/nanopaste)) + if(!pai) + to_chat(user, SPAN_WARNING("You cannot repair a pAI device if there's no active pAI personality installed.")) + return + pai.attackby(C, user) /obj/item/device/paicard/proc/recalculateChannels() radio.channels = list("Common" = radio.FREQ_LISTENING, "Entertainment" = radio.FREQ_LISTENING) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index f97ee9dfeed..ecc5883edbd 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -265,11 +265,11 @@ BREATH ANALYZER if(H.reagents.total_volume) var/unknown = 0 var/reagentdata[0] - for(var/A in H.reagents.reagent_list) - var/datum/reagent/R = A + for(var/_R in H.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) if(R.scannable) print_reagent_default_message = FALSE - reagentdata["[R.type]"] = " [round(H.reagents.get_reagent_amount(R.type), 1)]u [R.name]" + reagentdata["[_R]"] = " [round(REAGENT_VOLUME(H.reagents, _R), 1)]u [R.name]" else unknown++ if(reagentdata.len) @@ -284,7 +284,8 @@ BREATH ANALYZER var/datum/reagents/ingested = H.get_ingested_reagents() if(ingested && ingested.total_volume) var/unknown = 0 - for(var/datum/reagent/R in ingested.reagent_list) + for(var/_R in ingested.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) if(R.scannable) print_reagent_default_message = FALSE dat += "[R.name] found in subject's stomach." @@ -389,20 +390,16 @@ BREATH ANALYZER to_chat(user, "You don't have the dexterity to do this!") return if(reagents.total_volume) - var/list/blood_traces = list() - for(var/datum/reagent/R in reagents.reagent_list) - if(R.type != /datum/reagent/blood) - reagents.clear_reagents() - to_chat(user, "The sample was contaminated! Please insert another sample") - return - else - blood_traces = params2list(R.data["trace_chem"]) - break + if(LAZYLEN(reagents.reagent_volumes) > 1 || !REAGENT_DATA(reagents, /decl/reagent/blood)) + reagents.clear_reagents() + to_chat(user, "The sample was contaminated! Please insert another sample") + return + var/list/blood_traces = params2list(reagents.reagent_data[/decl/reagent/blood]["trace_chem"]) var/dat = "Trace Chemicals Found: " - for(var/R in blood_traces) - var/datum/reagent/C = new R() + for(var/_C in blood_traces) + var/decl/reagent/C = decls_repository.get_decl(_C) if(details) - dat += "[C] ([blood_traces[R]] units) " + dat += "[C] ([blood_traces[_C]] units) " else dat += "[C] " to_chat(user, "[dat]") @@ -442,20 +439,16 @@ BREATH ANALYZER return if(!istype(O)) return + if(isemptylist(O.reagents?.reagent_volumes)) + to_chat(user, "No active chemical agents found in [O].") + return - if(!isnull(O.reagents)) - var/dat = "" - if(O.reagents.reagent_list.len > 0) - var/one_percent = O.reagents.total_volume / 100 - for (var/datum/reagent/R in O.reagents.reagent_list) - dat += "\n \t [R][details ? ": [R.volume / one_percent]%" : ""]" - if(dat) - to_chat(user, "Chemicals found: [dat]") - else - to_chat(user, "No active chemical agents found in [O].") - else - to_chat(user, "No significant chemical agents found in [O].") - + var/dat = "" + var/one_percent = O.reagents.total_volume / 100 + for (var/_R in O.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + dat += "\n \t [R][details ? ": [O.reagents.reagent_volumes[_R] / one_percent]%" : ""]" + to_chat(user, "Chemicals found: [dat]") return /obj/item/device/reagent_scanner/adv @@ -618,7 +611,8 @@ BREATH ANALYZER if(H.breathing && H.breathing.total_volume) var/unknown = 0 - for(var/datum/reagent/R in H.breathing.reagent_list) + for(var/_R in H.breathing.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) if(R.scannable) to_chat(user,"[R.name] found in subject's respitory system.") else @@ -687,12 +681,12 @@ BREATH ANALYZER "paralysis" = H.paralysis, "bodytemp" = H.bodytemperature, "borer_present" = H.has_brain_worms(), - "inaprovaline_amount" = H.reagents.get_reagent_amount(/datum/reagent/inaprovaline), - "dexalin_amount" = H.reagents.get_reagent_amount(/datum/reagent/dexalin), - "stoxin_amount" = H.reagents.get_reagent_amount(/datum/reagent/soporific), - "bicaridine_amount" = H.reagents.get_reagent_amount(/datum/reagent/bicaridine), - "dermaline_amount" = H.reagents.get_reagent_amount(/datum/reagent/dermaline), - "blood_amount" = H.vessel.get_reagent_amount(/datum/reagent/blood), + "inaprovaline_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/inaprovaline), + "dexalin_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/dexalin), + "stoxin_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/soporific), + "bicaridine_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/bicaridine), + "dermaline_amount" = REAGENT_VOLUME(H.reagents, /decl/reagent/dermaline), + "blood_amount" = REAGENT_VOLUME(H.vessel, /decl/reagent/blood), "disabilities" = H.sdisabilities, "lung_ruptured" = H.is_lung_ruptured(), "external_organs" = H.organs.Copy(), diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index 0912d2b2a41..159dd278e2c 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -22,12 +22,13 @@ else icon_state = "[initial(icon_state)]-empty" -/obj/item/stack/nanopaste/attack(mob/living/M as mob, mob/user as mob, var/target_zone) - if (!istype(M) || !istype(user)) +/obj/item/stack/nanopaste/attack(atom/M, mob/user, var/target_zone) + if(!ismob(M) || !istype(user)) return 0 if (!can_use(1, user)) return 0 - if (istype(M,/mob/living/silicon/robot)) //Repairing cyborgs + + if (isrobot(M)) //Repairing cyborgs var/mob/living/silicon/robot/R = M if (R.getBruteLoss() || R.getFireLoss() ) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) @@ -41,7 +42,7 @@ else to_chat(user, "All [R]'s systems are nominal.") - if (istype(M,/mob/living/carbon/human)) //Repairing robolimbs + else if(ishuman(M)) //Repairing robolimbs var/mob/living/carbon/human/H = M var/obj/item/organ/external/S = H.get_organ(target_zone) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 57190703374..7a00cb34994 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -66,7 +66,7 @@ if(O.reagents.total_volume < 1) to_chat(user, "The [O] is empty.") else if(O.reagents.total_volume >= 1) - if(O.reagents.has_reagent(/datum/reagent/acid/polyacid, 1)) + if(O.reagents.has_reagent(/decl/reagent/acid/polyacid, 1)) to_chat(user, "The acid chews through the balloon!") O.reagents.splash(user, reagents.total_volume) qdel(src) @@ -991,7 +991,6 @@ drop_sound = 'sound/items/drop/rubber.ogg' pickup_sound = 'sound/items/pickup/rubber.ogg' - /obj/item/toy/xmastree name = "miniature Christmas tree" desc = "Now with 99% less pine needles." @@ -1002,6 +1001,55 @@ drop_sound = 'sound/items/drop/cardboardbox.ogg' pickup_sound = 'sound/items/pickup/cardboardbox.ogg' + +//baystation desk toys + +/obj/item/toy/desk + var/on = FALSE + var/activation_sound = /decl/sound_category/switch_sound + +/obj/item/toy/desk/update_icon() + if(on) + icon_state = "[initial(icon_state)]-on" + else + icon_state = initial(icon_state) + +/obj/item/toy/desk/attack_self(mob/user) + activate(user) + +/obj/item/toy/desk/AltClick(mob/user) + activate(user) + +/obj/item/toy/desk/proc/activate(mob/user) + on = !on + playsound(src.loc, activation_sound, 75, 1) + update_icon() + return 1 + +/obj/item/toy/desk/newtoncradle + name = "\improper Newton's cradle" + desc = "A ancient 21th century super-weapon model demonstrating that Sir Isaac Newton is the deadliest sonuvabitch in space." + desc_fluff = "Aside from car radios, Eridanian Dregs are reportedly notorious for stealing these things. It is often theorized that the very same ball bearings are used in black-market cybernetics." + icon_state = "newtoncradle" + +/obj/item/toy/desk/fan + name = "office fan" + desc = "Your greatest fan." + desc_fluff = "For weeks, the atmospherics department faced a conundrum on how to lower temperatures in a localized area through complicated pipe channels and ventilation systems. The problem was promptly solved by ordering several desk fans." + icon_state = "fan" + +/obj/item/toy/desk/officetoy + name = "office toy" + desc = "A generic microfusion powered office desk toy. Only generates magnetism and ennui." + desc_fluff = "The mechanism inside is a Hephasteus trade secret. No peeking!" + icon_state = "desktoy" + +/obj/item/toy/desk/dippingbird + name = "dipping bird toy" + desc = "Engineers marvel at this scale model of a primitive thermal engine. It's highly debated why the majority of owners were in low-level bureaucratic jobs." + desc_fluff = "One of the key essentials for every Eridanian suit - it's practically a rite of passage to own one of these things." + icon_state = "dippybird" + /obj/item/toy/partypopper name = "party popper" desc = "Instructions : Aim away from face. Wait for appropriate timing. Pull cord, enjoy confetti." diff --git a/code/game/objects/items/weapons/chewables.dm b/code/game/objects/items/weapons/chewables.dm index 9f80c20aef4..340446383c6 100644 --- a/code/game/objects/items/weapons/chewables.dm +++ b/code/game/objects/items/weapons/chewables.dm @@ -126,22 +126,22 @@ obj/item/clothing/mask/chewable/Destroy() /obj/item/clothing/mask/chewable/tobacco/bad name = "chewing tobacco" desc = "A chewy wad of cheap tobacco. Cut in long strands and treated with syrup so it tastes less like an ash-tray when you stuff it into your face." - reagents_to_add = list(/datum/reagent/toxin/tobacco/fake = 2) + reagents_to_add = list(/decl/reagent/toxin/tobacco/fake = 2) /obj/item/clothing/mask/chewable/tobacco/generic name = "chewing tobacco" desc = "A chewy wad of tobacco. Cut in long strands and treated with syrup so it doesn't taste like an ash-tray when you stuff it into your face." - reagents_to_add = list(/datum/reagent/toxin/tobacco = 2) + reagents_to_add = list(/decl/reagent/toxin/tobacco = 2) /obj/item/clothing/mask/chewable/tobacco/fine name = "chewing tobacco" desc = "A chewy wad of fine tobacco. Cut in long strands and treated with syrup so it doesn't taste like an ash-tray when you stuff it into your face." - reagents_to_add = list(/datum/reagent/toxin/tobacco/rich = 2) + reagents_to_add = list(/decl/reagent/toxin/tobacco/rich = 2) /obj/item/clothing/mask/chewable/tobacco/nico name = "nicotine gum" desc = "A chewy wad of synthetic rubber, laced with nicotine. Possibly the least disgusting method of nicotine delivery." - reagents_to_add = list(/datum/reagent/mental/nicotine = 2) + reagents_to_add = list(/decl/reagent/mental/nicotine = 2) icon_state = "nic_gum" type_butt = /obj/item/trash/spitgum wrapped = TRUE @@ -156,7 +156,7 @@ obj/item/clothing/mask/chewable/Destroy() slot_flags = SLOT_EARS | SLOT_MASK chem_volume = 50 chewtime = 300 - reagents_to_add = list(/datum/reagent/sugar = 2) + reagents_to_add = list(/decl/reagent/sugar = 2) /obj/item/trash/spitgum name = "old gum" @@ -176,7 +176,7 @@ obj/item/clothing/mask/chewable/Destroy() /obj/item/clothing/mask/chewable/candy/gum/Initialize() . = ..() - reagents.add_reagent(pick(/datum/reagent/drink/banana,/datum/reagent/drink/berryjuice,/datum/reagent/drink/grapejuice,/datum/reagent/drink/lemonjuice,/datum/reagent/drink/limejuice,/datum/reagent/drink/orangejuice,/datum/reagent/drink/watermelonjuice),10) + reagents.add_reagent(pick(/decl/reagent/drink/banana,/decl/reagent/drink/berryjuice,/decl/reagent/drink/grapejuice,/decl/reagent/drink/lemonjuice,/decl/reagent/drink/limejuice,/decl/reagent/drink/orangejuice,/decl/reagent/drink/watermelonjuice),10) color = reagents.get_color() update_icon() @@ -187,9 +187,8 @@ obj/item/clothing/mask/chewable/Destroy() item_state = null wrapped = FALSE -/obj/item/clothing/mask/chewable/candy/gum/gumball/medical/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/tricordrazine, 5) +/obj/item/clothing/mask/chewable/candy/gum/gumball/medical + reagents_to_add = list(/decl/reagent/tricordrazine = 5) /obj/item/storage/box/fancy/gum @@ -244,7 +243,7 @@ obj/item/clothing/mask/chewable/Destroy() /obj/item/clothing/mask/chewable/candy/lolli/Initialize() . = ..() - reagents.add_reagent(pick(/datum/reagent/drink/banana,/datum/reagent/drink/berryjuice,/datum/reagent/drink/grapejuice,/datum/reagent/drink/lemonjuice,/datum/reagent/drink/limejuice,/datum/reagent/drink/orangejuice,/datum/reagent/drink/watermelonjuice),20) + reagents.add_reagent(pick(/decl/reagent/drink/banana,/decl/reagent/drink/berryjuice,/decl/reagent/drink/grapejuice,/decl/reagent/drink/lemonjuice,/decl/reagent/drink/limejuice,/decl/reagent/drink/orangejuice,/decl/reagent/drink/watermelonjuice),20) color = reagents.get_color() update_icon() @@ -256,10 +255,10 @@ obj/item/clothing/mask/chewable/Destroy() /obj/item/clothing/mask/chewable/candy/lolli/meds/Initialize() . = ..() - var/datum/reagent/payload = pick(list( - /datum/reagent/perconol, - /datum/reagent/mortaphenyl, - /datum/reagent/dylovene)) + var/decl/reagent/payload = pick(list( + /decl/reagent/perconol, + /decl/reagent/mortaphenyl, + /decl/reagent/dylovene)) reagents.add_reagent(payload, 15) color = reagents.get_color() desc = "[desc] This one is labeled '[initial(payload.name)]'." @@ -267,13 +266,13 @@ obj/item/clothing/mask/chewable/Destroy() /obj/item/clothing/mask/chewable/candy/lolli/weak_meds name = "medicine lollipop" desc = "A sucrose sphere on a small handle, it has been infused with medication." - reagents_to_add = list(/datum/reagent/sugar = 6) + reagents_to_add = list(/decl/reagent/sugar = 6) /obj/item/clothing/mask/chewable/candy/lolli/weak_meds/Initialize() . = ..() - var/datum/reagent/payload = pick(list( - /datum/reagent/dylovene, - /datum/reagent/inaprovaline)) + var/decl/reagent/payload = pick(list( + /decl/reagent/dylovene, + /decl/reagent/inaprovaline)) reagents.add_reagent(payload, 15) color = reagents.get_color() desc = "[desc] This one is labeled '[initial(payload.name)]'." diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 6913109c83c..2769975b6ad 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -198,15 +198,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM playsound(src, 'sound/items/cigs_lighters/cig_light.ogg', 75, 1, -1) src.reagents.set_temperature(T0C + 45) damtype = "fire" - if(reagents.get_reagent_amount(/datum/reagent/toxin/phoron)) // the phoron explodes when exposed to fire + if(REAGENT_VOLUME(reagents, /decl/reagent/toxin/phoron)) // the phoron explodes when exposed to fire var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount(/datum/reagent/toxin/phoron) / 2.5, 1), get_turf(src), 0, 0) + e.set_up(round(REAGENT_VOLUME(reagents, /decl/reagent/toxin/phoron) / 2.5, 1), get_turf(src), 0, 0) e.start() qdel(src) return - if(reagents.get_reagent_amount(/datum/reagent/fuel)) // the fuel explodes, too, but much less violently + if(REAGENT_VOLUME(reagents, /decl/reagent/fuel)) // the fuel explodes, too, but much less violently var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount(/datum/reagent/fuel) / 5, 1), get_turf(src), 0, 0) + e.set_up(round(REAGENT_VOLUME(reagents, /decl/reagent/fuel) / 5, 1), get_turf(src), 0, 0) e.start() qdel(src) return @@ -304,11 +304,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM zippomes = "With a flick of their wrist, USER lights their NAME with their FLAME." weldermes = "USER casually lights the NAME with FLAME." ignitermes = "USER fiddles with FLAME, and manages to light their NAME." - -/obj/item/clothing/mask/smokable/cigarette/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/toxin/tobacco,10) - reagents.add_reagent(/datum/reagent/mental/nicotine,5) // 2/3 ratio, Adds 0.03 units per second + reagents_to_add = list( + /decl/reagent/toxin/tobacco = 10, + /decl/reagent/mental/nicotine = 5 + ) /obj/item/clothing/mask/smokable/cigarette/attackby(obj/item/W as obj, mob/user as mob) ..() @@ -365,64 +364,47 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/smokable/cigarette/vanilla burn_rate = 0.015 - -/obj/item/clothing/mask/smokable/cigarette/vanilla/Initialize() - . = ..() - reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/toxin/tobacco,15) + reagents_to_add = list(/decl/reagent/toxin/tobacco = 15) /obj/item/clothing/mask/smokable/cigarette/acmeco burn_rate = 0.015 - -/obj/item/clothing/mask/smokable/cigarette/acmeco/Initialize() - . = ..() - reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/toxin/tobacco,5) - reagents.add_reagent(/datum/reagent/mental/nicotine,5) - reagents.add_reagent(/datum/reagent/lexorin,2) - reagents.add_reagent(/datum/reagent/serotrotium,3) + reagents_to_add = list( + /decl/reagent/toxin/tobacco = 5, + /decl/reagent/mental/nicotine = 5, + /decl/reagent/lexorin = 2, + /decl/reagent/serotrotium = 3 + ) /obj/item/clothing/mask/smokable/cigarette/blank burn_rate = 0.015 chem_volume = 15 - -/obj/item/clothing/mask/smokable/cigarette/blank/Initialize() - . = ..() - reagents.clear_reagents() + reagents_to_add = null /obj/item/clothing/mask/smokable/cigarette/dromedaryco - -/obj/item/clothing/mask/smokable/cigarette/dromedaryco/Initialize() - . = ..() - reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/toxin/tobacco,5) - reagents.add_reagent(/datum/reagent/mental/nicotine,10) + reagents_to_add = list( + /decl/reagent/toxin/tobacco = 5, + /decl/reagent/mental/nicotine = 10 + ) /obj/item/clothing/mask/smokable/cigarette/nicotine - -/obj/item/clothing/mask/smokable/cigarette/nicotine/Initialize() - . = ..() - reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/toxin/tobacco/rich,5) - reagents.add_reagent(/datum/reagent/mental/nicotine,10) + reagents_to_add = list( + /decl/reagent/toxin/tobacco/rich = 5, + /decl/reagent/mental/nicotine = 10 + ) /obj/item/clothing/mask/smokable/cigarette/rugged - -/obj/item/clothing/mask/smokable/cigarette/rugged/Initialize() - . = ..() - reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/toxin/tobacco/fake,10) - reagents.add_reagent(/datum/reagent/mental/nicotine,5) + reagents_to_add = list( + /decl/reagent/toxin/tobacco/fake = 10, + /decl/reagent/mental/nicotine = 5 + ) /obj/item/clothing/mask/smokable/cigarette/adhomai name = "adhomian cigarette" desc = "An adhomian cigarette made from processed S'rendarr's Hand." - -/obj/item/clothing/mask/smokable/cigarette/adhomai/Initialize() - . = ..() - reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/toxin/tobacco,5) - reagents.add_reagent(/datum/reagent/mental/nicotine,5) + reagents_to_add = list( + /decl/reagent/toxin/tobacco = 5, + /decl/reagent/mental/nicotine = 5 + ) //////////// // CIGARS // @@ -445,12 +427,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM ignitermes = "USER fiddles with FLAME, and manages to light their NAME with the power of science." drop_sound = 'sound/items/drop/gloves.ogg' pickup_sound = 'sound/items/pickup/gloves.ogg' - -/obj/item/clothing/mask/smokable/cigarette/cigar/Initialize() - . = ..() - reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/toxin/tobacco/rich,25) - reagents.add_reagent(/datum/reagent/mental/nicotine,5) // 1/5 Ratio + reagents_to_add = list( + /decl/reagent/toxin/tobacco/rich = 25, + /decl/reagent/mental/nicotine = 5 + ) /obj/item/clothing/mask/smokable/cigarette/cigar/havana name = "premium Havanian cigar" @@ -460,13 +440,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_off = "cigar2off" type_butt = /obj/item/trash/cigbutt/cigarbutt/alt chem_volume = 60 - -/obj/item/clothing/mask/smokable/cigarette/cigar/havana/Initialize() - . = ..() - reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/toxin/tobacco/rich,15) - reagents.add_reagent(/datum/reagent/mental/nicotine,5) // 1/6 Ratio - reagents.add_reagent(/datum/reagent/tricordrazine,10) + reagents_to_add = list( + /decl/reagent/toxin/tobacco/rich = 15, + /decl/reagent/mental/nicotine = 5, + /decl/reagent/tricordrazine = 10 + ) /obj/item/clothing/mask/smokable/cigarette/cigar/cohiba name = "\improper Cohiba robusto cigar" @@ -476,13 +454,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_off = "cigar2off" type_butt = /obj/item/trash/cigbutt/cigarbutt/alt chem_volume = 120 - -/obj/item/clothing/mask/smokable/cigarette/cigar/cohiba/Initialize() - . = ..() - reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/toxin/tobacco/rich,30) - reagents.add_reagent(/datum/reagent/mental/nicotine,10) //1/6 Ratio - reagents.add_reagent(/datum/reagent/tricordrazine,20) + reagents_to_add = list( + /decl/reagent/toxin/tobacco/rich = 30, + /decl/reagent/mental/nicotine = 10, + /decl/reagent/tricordrazine = 20 + ) /obj/item/trash/cigbutt name = "cigarette butt" @@ -523,11 +499,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_on = "sausageon" type_butt = /obj/item/trash/cigbutt/sausagebutt chem_volume = 6 - -/obj/item/clothing/mask/smokable/cigarette/rolled/sausage/Initialize() - . = ..() - reagents.clear_reagents() - reagents.add_reagent(/datum/reagent/nutriment/protein,6) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6) /obj/item/trash/cigbutt/sausagebutt name = "sausage butt" @@ -1009,4 +981,4 @@ CIGARETTE PACKETS ARE IN FANCY.DM qdel(I) qdel(src) return - ..() \ No newline at end of file + ..() diff --git a/code/game/objects/items/weapons/circuitboards/machinery/biogenerator.dm b/code/game/objects/items/weapons/circuitboards/machinery/biogenerator.dm index 97380c20571..15f4c080b86 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/biogenerator.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/biogenerator.dm @@ -9,4 +9,8 @@ origin_tech = list(TECH_DATA = 2) req_components = list( "/obj/item/stock_parts/matter_bin" = 1, - "/obj/item/stock_parts/manipulator" = 1) \ No newline at end of file + "/obj/item/stock_parts/manipulator" = 1) + +/obj/item/circuitboard/biogenerator/small + name = T_BOARD("small biogenerator") + build_path = /obj/machinery/biogenerator/small \ No newline at end of file diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index a9e50940104..a39daa07b86 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -38,7 +38,7 @@ /obj/item/reagent_containers/extinguisher_refill/attack_self(mob/user as mob) //Copied from inhalers. if(is_open_container()) - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents.reagent_volumes)) to_chat(user,"With a quick twist of the cartridge's lid, you secure the reagents inside \the [src].") flags &= ~OPENCONTAINER else @@ -59,12 +59,12 @@ return if(is_open_container()) - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents?.reagent_volumes)) to_chat(user,"It contains [round(reagents.total_volume, accuracy)] units of non-aerosol mix.") else to_chat(user,"It is empty.") else - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents?.reagent_volumes)) to_chat(user,"The reagents are secured in the aerosol mix.") else to_chat(user,"The cartridge seems spent.") @@ -75,7 +75,7 @@ /obj/item/reagent_containers/extinguisher_refill/filled/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/toxin/fertilizer/monoammoniumphosphate, volume) + reagents.add_reagent(/decl/reagent/toxin/fertilizer/monoammoniumphosphate, volume) flags &= ~OPENCONTAINER /obj/item/extinguisher @@ -122,7 +122,7 @@ /obj/item/extinguisher/New() create_reagents(max_water) - reagents.add_reagent(/datum/reagent/toxin/fertilizer/monoammoniumphosphate, max_water) + reagents.add_reagent(/decl/reagent/toxin/fertilizer/monoammoniumphosphate, max_water) ..() /obj/item/extinguisher/examine(mob/user) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 101b106fa8d..f20ae68126e 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -201,9 +201,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(/datum/reagent/aluminum, 30) - B2.reagents.add_reagent(/datum/reagent/foaming_agent, 10) - B2.reagents.add_reagent(/datum/reagent/acid/polyacid, 10) + B1.reagents.add_reagent(/decl/reagent/aluminum, 30) + B2.reagents.add_reagent(/decl/reagent/foaming_agent, 10) + B2.reagents.add_reagent(/decl/reagent/acid/polyacid, 10) detonator = new/obj/item/device/assembly_holder/timer_igniter(src) @@ -222,11 +222,11 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/aluminum, 15) - B1.reagents.add_reagent(/datum/reagent/fuel,20) - B2.reagents.add_reagent(/datum/reagent/toxin/phoron, 15) - B2.reagents.add_reagent(/datum/reagent/acid, 15) - B1.reagents.add_reagent(/datum/reagent/fuel,20) + B1.reagents.add_reagent(/decl/reagent/aluminum, 15) + B1.reagents.add_reagent(/decl/reagent/fuel,20) + B2.reagents.add_reagent(/decl/reagent/toxin/phoron, 15) + B2.reagents.add_reagent(/decl/reagent/acid, 15) + B1.reagents.add_reagent(/decl/reagent/fuel,20) detonator = new/obj/item/device/assembly_holder/timer_igniter(src) @@ -245,10 +245,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(/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/sugar, 25) + B1.reagents.add_reagent(/decl/reagent/toxin/plantbgone, 25) + B1.reagents.add_reagent(/decl/reagent/potassium, 25) + B2.reagents.add_reagent(/decl/reagent/phosphorus, 25) + B2.reagents.add_reagent(/decl/reagent/sugar, 25) detonator = new/obj/item/device/assembly_holder/timer_igniter(src) @@ -267,12 +267,12 @@ var/obj/item/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent(/datum/reagent/sugar, 20) - B1.reagents.add_reagent(/datum/reagent/potassium,20) - B1.reagents.add_reagent(/datum/reagent/soporific, 10) - B1.reagents.add_reagent(/datum/reagent/dylovene, 10) - B2.reagents.add_reagent(/datum/reagent/polysomnine,40) - B2.reagents.add_reagent(/datum/reagent/phosphorus,20) + B1.reagents.add_reagent(/decl/reagent/sugar, 20) + B1.reagents.add_reagent(/decl/reagent/potassium,20) + B1.reagents.add_reagent(/decl/reagent/soporific, 10) + B1.reagents.add_reagent(/decl/reagent/dylovene, 10) + B2.reagents.add_reagent(/decl/reagent/polysomnine,40) + B2.reagents.add_reagent(/decl/reagent/phosphorus,20) detonator = new/obj/item/device/assembly_holder/timer_igniter(src) @@ -291,9 +291,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(/datum/reagent/surfactant, 40) - B2.reagents.add_reagent(/datum/reagent/water, 40) - B2.reagents.add_reagent(/datum/reagent/spacecleaner, 10) + B1.reagents.add_reagent(/decl/reagent/surfactant, 40) + B2.reagents.add_reagent(/decl/reagent/water, 40) + B2.reagents.add_reagent(/decl/reagent/spacecleaner, 10) detonator = new/obj/item/device/assembly_holder/timer_igniter(src) @@ -312,10 +312,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(/datum/reagent/toxin/cardox, 40) - B1.reagents.add_reagent(/datum/reagent/potassium, 40) - B2.reagents.add_reagent(/datum/reagent/phosphorus, 40) - B2.reagents.add_reagent(/datum/reagent/sugar, 40) + B1.reagents.add_reagent(/decl/reagent/toxin/cardox, 40) + B1.reagents.add_reagent(/decl/reagent/potassium, 40) + B2.reagents.add_reagent(/decl/reagent/phosphorus, 40) + B2.reagents.add_reagent(/decl/reagent/sugar, 40) detonator = new/obj/item/device/assembly_holder/timer_igniter(src) @@ -335,11 +335,11 @@ 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(/datum/reagent/phosphorus, 40) - B1.reagents.add_reagent(/datum/reagent/potassium, 40) - B1.reagents.add_reagent(/datum/reagent/capsaicin/condensed, 40) - B2.reagents.add_reagent(/datum/reagent/sugar, 40) - B2.reagents.add_reagent(/datum/reagent/capsaicin/condensed, 80) + B1.reagents.add_reagent(/decl/reagent/phosphorus, 40) + B1.reagents.add_reagent(/decl/reagent/potassium, 40) + B1.reagents.add_reagent(/decl/reagent/capsaicin/condensed, 40) + B2.reagents.add_reagent(/decl/reagent/sugar, 40) + B2.reagents.add_reagent(/decl/reagent/capsaicin/condensed, 80) detonator = new/obj/item/device/assembly_holder/timer_igniter(src) @@ -358,10 +358,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(/datum/reagent/surfactant, 40) - B1.reagents.add_reagent(/datum/reagent/toxin/fertilizer/monoammoniumphosphate, 20) - B2.reagents.add_reagent(/datum/reagent/water, 40) - B2.reagents.add_reagent(/datum/reagent/toxin/fertilizer/monoammoniumphosphate, 20) + B1.reagents.add_reagent(/decl/reagent/surfactant, 40) + B1.reagents.add_reagent(/decl/reagent/toxin/fertilizer/monoammoniumphosphate, 20) + B2.reagents.add_reagent(/decl/reagent/water, 40) + B2.reagents.add_reagent(/decl/reagent/toxin/fertilizer/monoammoniumphosphate, 20) detonator = new/obj/item/device/assembly_holder/timer_igniter(src) diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 8f4b57841cc..34adbfbfa3c 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -108,7 +108,7 @@ /obj/item/grenade/flashbang/clusterbang/prime() var/numspawned = rand(4,8) var/again = 0 - var/atom/A = loc + var/atom/A = get_turf(src) for(var/more = numspawned,more > 0,more--) if(prob(35)) again++ @@ -148,7 +148,7 @@ for(var/more = numspawned,more > 0,more--) if(prob(35)) numspawned -- - var/atom/A = src.loc + var/atom/A = get_turf(src) for(,numspawned > 0, numspawned--) spawn(0) new /obj/item/grenade/flashbang/cluster(A) diff --git a/code/game/objects/items/weapons/material/twohanded.dm b/code/game/objects/items/weapons/material/twohanded.dm index f48a1c33c27..dc7c0df3ced 100644 --- a/code/game/objects/items/weapons/material/twohanded.dm +++ b/code/game/objects/items/weapons/material/twohanded.dm @@ -348,7 +348,7 @@ applies_material_colour = FALSE default_material = "steel" parry_chance = 5 - var/fuel_type = /datum/reagent/fuel + var/fuel_type = /decl/reagent/fuel var/opendelay = 30 // How long it takes to perform a door opening action with this chainsaw, in seconds. var/max_fuel = 300 // The maximum amount of fuel the chainsaw stores. var/fuel_cost = 1 // Multiplier for fuel cost. @@ -427,8 +427,8 @@ /obj/item/material/twohanded/chainsaw/proc/RemoveFuel(var/amount = 1) if(reagents && istype(reagents)) amount *= fuel_cost - reagents.remove_reagent(fuel_type, Clamp(amount,0,reagents.get_reagent_amount(fuel_type))) - if(reagents.get_reagent_amount(fuel_type) <= 0) + reagents.remove_reagent(fuel_type, Clamp(amount,0,REAGENT_VOLUME(reagents, fuel_type))) + if(REAGENT_VOLUME(reagents, fuel_type) <= 0) PowerDown() else PowerDown() @@ -450,7 +450,7 @@ /obj/item/material/twohanded/chainsaw/examine(mob/user) if(..(user, 1)) - to_chat(user, "A heavy-duty chainsaw meant for cutting wood. Contains [round(reagents.get_reagent_amount(fuel_type))] unit\s of fuel.") + to_chat(user, "A heavy-duty chainsaw meant for cutting wood. Contains [round(REAGENT_VOLUME(reagents, fuel_type))] unit\s of fuel.") if(powered) to_chat(user, SPAN_NOTICE("It is currently powered on.")) @@ -494,7 +494,7 @@ PowerDown(user) else if(!wielded) to_chat(user, SPAN_WARNING("You need to hold this with two hands to turn this on.")) - else if(reagents.get_reagent_amount(/datum/reagent/fuel) <= 0) + else if(REAGENT_VOLUME(reagents, /decl/reagent/fuel) <= 0) user.visible_message(SPAN_WARNING("[user] pulls the cord on \the [src], but nothing happens."), SPAN_WARNING("You pull the cord on \the [src], but nothing happens."), SPAN_NOTICE("You hear a cord being pulled.")) else var/max = rand(3,6) diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 139f51264cf..38ffbdc6836 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -77,7 +77,7 @@ cleantime = 15 var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water. var/refill_rate = 0.5 //Rate per process() tick mop refills itself - 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 + var/refill_reagent = /decl/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/weapons/paint.dm b/code/game/objects/items/weapons/paint.dm index 8605689c01e..1cb0612b19d 100644 --- a/code/game/objects/items/weapons/paint.dm +++ b/code/game/objects/items/weapons/paint.dm @@ -14,14 +14,14 @@ volume = 60 unacidable = 0 flags = OPENCONTAINER - shatter = FALSE + fragile = 0 var/paint_reagent = null //name of the reagent responsible for colouring the paint var/paint_type = null //used for colouring detective technicolor coat and hat - reagents_to_add = list(/datum/reagent/water = 3/5, /datum/reagent/toxin/plasticide = 1/5) + reagents_to_add = list(/decl/reagent/paint = 4/5) /obj/item/reagent_containers/glass/paint/Initialize() reagents_to_add[paint_reagent] = 1/5 - for(var/datum/reagent/R in reagents_to_add) + for(var/decl/reagent/R in reagents_to_add) reagents_to_add[R] *= volume . = ..() reagents.handle_reactions() @@ -54,29 +54,29 @@ update_icon() /obj/item/reagent_containers/glass/paint/red - paint_reagent = /datum/reagent/crayon_dust/red + paint_reagent = /decl/reagent/crayon_dust/red paint_type = "red" /obj/item/reagent_containers/glass/paint/yellow - paint_reagent = /datum/reagent/crayon_dust/yellow + paint_reagent = /decl/reagent/crayon_dust/yellow paint_type = "yellow" /obj/item/reagent_containers/glass/paint/green - paint_reagent = /datum/reagent/crayon_dust/green + paint_reagent = /decl/reagent/crayon_dust/green paint_type = "green" /obj/item/reagent_containers/glass/paint/blue - paint_reagent = /datum/reagent/crayon_dust/blue + paint_reagent = /decl/reagent/crayon_dust/blue paint_type = "blue" /obj/item/reagent_containers/glass/paint/purple - paint_reagent = /datum/reagent/crayon_dust/purple + paint_reagent = /decl/reagent/crayon_dust/purple paint_type = "purple" /obj/item/reagent_containers/glass/paint/black - paint_reagent = /datum/reagent/carbon + paint_reagent = /decl/reagent/carbon paint_type = "black" /obj/item/reagent_containers/glass/paint/white - paint_reagent = /datum/reagent/aluminum + paint_reagent = /decl/reagent/aluminum paint_type = "white" diff --git a/code/game/objects/items/weapons/soap.dm b/code/game/objects/items/weapons/soap.dm index 68450cb9aea..41c9a803e74 100644 --- a/code/game/objects/items/weapons/soap.dm +++ b/code/game/objects/items/weapons/soap.dm @@ -29,7 +29,7 @@ /obj/item/soap/proc/wet() playsound(loc, 'sound/effects/slosh.ogg', 25, 1) - reagents.add_reagent(/datum/reagent/spacecleaner, capacity) + reagents.add_reagent(/decl/reagent/spacecleaner, capacity) /obj/item/soap/attackby(var/obj/item/I, var/mob/user) if(istype(I, /obj/item/key)) diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index 34d7c7ec64a..1c51a25a0d7 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -28,14 +28,14 @@ if(!proximity) return if(user.mind && (user.mind.assigned_role == "Chaplain")) - if(A.reagents && A.reagents.has_reagent(/datum/reagent/water)) //blesses all the water in the holder - if(A.reagents.get_reagent_amount(/datum/reagent/water) > 60) + if(A.reagents && A.reagents.has_reagent(/decl/reagent/water)) //blesses all the water in the holder + if(REAGENT_VOLUME(A.reagents, /decl/reagent/water) > 60) to_chat(user, SPAN_NOTICE("There's too much water for you to bless at once!")) else to_chat(user, SPAN_NOTICE("You bless the water in [A], turning it into holy water.")) - 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) + var/water2holy = REAGENT_VOLUME(A.reagents, /decl/reagent/water) + A.reagents.del_reagent(/decl/reagent/water) + A.reagents.add_reagent(/decl/reagent/water/holywater, water2holy) /obj/item/storage/bible/attackby(obj/item/W as obj, mob/user as mob) if(src.use_sound) diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 9d1cf7a40b7..ffe09af1f9e 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -133,6 +133,7 @@ item_state = "candlepack" icon_type = "candle" storage_type = "pack" + w_class = ITEMSIZE_SMALL throwforce = 2 slot_flags = SLOT_BELT storage_slots = 5 diff --git a/code/game/objects/items/weapons/storage/nitrilebox.dm b/code/game/objects/items/weapons/storage/nitrilebox.dm index 23d1a13a08f..f91b1ae4632 100644 --- a/code/game/objects/items/weapons/storage/nitrilebox.dm +++ b/code/game/objects/items/weapons/storage/nitrilebox.dm @@ -40,18 +40,21 @@ if(temp && !temp.is_usable()) to_chat(user, SPAN_NOTICE("You try to move your [temp.name], but cannot!")) return - var/response = "" if(amount > 0) - response = alert(user, "Do you take a pair of gloves?", "Take gloves?", "Yes", "No") - if (response != "Yes") + var/list/glove_types = list( + "Standard Gloves" = /obj/item/clothing/gloves/latex/nitrile, + "Unathi Gloves" = /obj/item/clothing/gloves/latex/nitrile/unathi, + "Tajara Gloves" = /obj/item/clothing/gloves/latex/nitrile/tajara + ) + var/chosen_type = input(user, "Which pair of gloves would you like?", capitalize_first_letters(name)) as null|anything in glove_types + if(!chosen_type) add_fingerprint(user) return amount-- - var/obj/item/clothing/gloves/latex/nitrile/P - P = new() - P.forceMove(user.loc) + var/chosen_path = glove_types[chosen_type] + var/obj/item/clothing/gloves/latex/nitrile/P = new chosen_path(get_turf(src)) user.put_in_hands(P) - to_chat(user, SPAN_NOTICE("You take [P] out of [src].")) + to_chat(user, SPAN_NOTICE("You take \the [P] out of \the [src].")) else to_chat(user, SPAN_NOTICE("[src] is empty!")) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 8fc01bcfa20..c9233f7ded3 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -181,31 +181,31 @@ ..() var/obj/item/storage/box/fancy/cigarettes/pack pack = new /obj/item/storage/box/fancy/cigarettes(src) - fill_cigarre_package(pack, list(/datum/reagent/aluminum = 5, /datum/reagent/potassium = 5, /datum/reagent/sulfur = 5)) + fill_cigarre_package(pack, list(/decl/reagent/aluminum = 5, /decl/reagent/potassium = 5, /decl/reagent/sulfur = 5)) pack.desc += " 'F' has been scribbled on it." pack = new /obj/item/storage/box/fancy/cigarettes(src) - fill_cigarre_package(pack, list(/datum/reagent/aluminum = 5, /datum/reagent/potassium = 5, /datum/reagent/sulfur = 5)) + fill_cigarre_package(pack, list(/decl/reagent/aluminum = 5, /decl/reagent/potassium = 5, /decl/reagent/sulfur = 5)) pack.desc += " 'F' has been scribbled on it." pack = new /obj/item/storage/box/fancy/cigarettes(src) - fill_cigarre_package(pack, list(/datum/reagent/potassium = 5, /datum/reagent/sugar = 5, /datum/reagent/phosphorus = 5)) + fill_cigarre_package(pack, list(/decl/reagent/potassium = 5, /decl/reagent/sugar = 5, /decl/reagent/phosphorus = 5)) pack.desc += " 'S' has been scribbled on it." pack = new /obj/item/storage/box/fancy/cigarettes(src) - fill_cigarre_package(pack, list(/datum/reagent/potassium = 5, /datum/reagent/sugar = 5, /datum/reagent/phosphorus = 5)) + fill_cigarre_package(pack, list(/decl/reagent/potassium = 5, /decl/reagent/sugar = 5, /decl/reagent/phosphorus = 5)) pack.desc += " 'S' has been scribbled on it." pack = new /obj/item/storage/box/fancy/cigarettes(src) // Dylovene. Going with 1.5 rather than 1.6666666... - fill_cigarre_package(pack, list(/datum/reagent/potassium = 1.5, /datum/reagent/ammonia = 1.5, /datum/reagent/silicon = 1.5)) + fill_cigarre_package(pack, list(/decl/reagent/potassium = 1.5, /decl/reagent/ammonia = 1.5, /decl/reagent/silicon = 1.5)) // Mindbreaker - fill_cigarre_package(pack, list(/datum/reagent/silicon = 4.5, /datum/reagent/hydrazine = 4.5, /datum/reagent/dylovene = 4.5)) + fill_cigarre_package(pack, list(/decl/reagent/silicon = 4.5, /decl/reagent/hydrazine = 4.5, /decl/reagent/dylovene = 4.5)) pack.desc += " 'MB' has been scribbled on it." pack = new /obj/item/storage/box/fancy/cigarettes(src) - pack.reagents.add_reagent(/datum/reagent/tricordrazine, 15 * pack.storage_slots) + pack.reagents.add_reagent(/decl/reagent/tricordrazine, 15 * pack.storage_slots) pack.desc += " 'T' has been scribbled on it." new /obj/item/flame/lighter/zippo(src) @@ -252,4 +252,4 @@ desc = "Comes with 4x autoinjectors filled with drugs to counter chemical side-effects. Each injector has 2 uses." starts_with = list( /obj/item/reagent_containers/hypospray/autoinjector/sideeffectbgone = 4 - ) \ No newline at end of file + ) diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index f7341f547db..d2c68fc44ff 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -127,10 +127,7 @@ desc = "A janitorial watertank backpack with nozzle to clean dirt and graffiti." icon_state = "waterpackjani" item_state = "waterpackjani" - -/obj/item/watertank/janitor/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/spacecleaner, 500) + reagents_to_add = list(/decl/reagent/spacecleaner = 500) /obj/item/reagent_containers/spray/chemsprayer/mister/janitor name = "janitor spray nozzle" diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 2f5ee70a475..7277c46d322 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -267,7 +267,7 @@ var/datum/reagents/R = new/datum/reagents(max_fuel) reagents = R R.my_atom = src - R.add_reagent(/datum/reagent/fuel, max_fuel) + R.add_reagent(/decl/reagent/fuel, max_fuel) update_icon() /obj/item/weldingtool/update_icon() @@ -443,7 +443,7 @@ //Returns the amount of fuel in the welder /obj/item/weldingtool/proc/get_fuel() - return reagents.get_reagent_amount(/datum/reagent/fuel) + return REAGENT_VOLUME(reagents, /decl/reagent/fuel) //Removes fuel from the welding tool. If a mob is passed, it will perform an eyecheck on the mob. This should probably be renamed to use() /obj/item/weldingtool/proc/remove_fuel(var/amount = 1, var/mob/M = null, var/colourChange = TRUE) @@ -453,7 +453,7 @@ set_light(0.7, 2, l_color = LIGHT_COLOR_CYAN) addtimer(CALLBACK(src, /atom/proc/update_icon), 5) if(get_fuel() >= amount) - reagents.remove_reagent(/datum/reagent/fuel, amount) + reagents.remove_reagent(/decl/reagent/fuel, amount) if(M) eyecheck(M) return 1 @@ -574,7 +574,7 @@ var/gen_amount = ((world.time-last_gen) / fuelgen_delay) var/remainder = max_fuel - get_fuel() gen_amount = min(gen_amount, remainder) - reagents.add_reagent(/datum/reagent/fuel, gen_amount) + reagents.add_reagent(/decl/reagent/fuel, gen_amount) if(get_fuel() >= max_fuel) set_processing(0) else @@ -821,6 +821,6 @@ else if(UserLoc == slot_r_hand) user.apply_damage(5, BURN, BP_R_HAND) to_chat(user, SPAN_DANGER("The steel wool burns your right hand!")) - + new /obj/effect/decal/cleanable/ash(get_turf(src)) - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm index 076073bf1b2..61eed45d2f2 100644 --- a/code/game/objects/items/weapons/traps.dm +++ b/code/game/objects/items/weapons/traps.dm @@ -567,7 +567,8 @@ allowed_mobs = list( /mob/living/simple_animal/hostile/retaliate/goat, /mob/living/simple_animal/cow, /mob/living/simple_animal/corgi/fox, /mob/living/simple_animal/hostile/carp, /mob/living/simple_animal/hostile/bear, /mob/living/simple_animal/hostile/alien, /mob/living/simple_animal/hostile/giant_spider, - /mob/living/simple_animal/hostile/commanded/dog, /mob/living/simple_animal/hostile/retaliate/cavern_dweller, /mob/living/carbon/human/) + /mob/living/simple_animal/hostile/commanded/dog, /mob/living/simple_animal/hostile/retaliate/cavern_dweller, /mob/living/carbon/human, + /mob/living/simple_animal/pig) /obj/item/trap/animal/large/attack_hand(mob/user) if(user == buckled_mob) diff --git a/code/game/objects/items/weapons/weldbackpack.dm b/code/game/objects/items/weapons/weldbackpack.dm index 396136b4f30..ded5a3e4559 100644 --- a/code/game/objects/items/weapons/weldbackpack.dm +++ b/code/game/objects/items/weapons/weldbackpack.dm @@ -13,7 +13,7 @@ var/datum/reagents/R = new/datum/reagents(max_fuel) //Lotsa refills reagents = R R.my_atom = src - R.add_reagent(/datum/reagent/fuel, max_fuel) + R.add_reagent(/decl/reagent/fuel, max_fuel) /obj/item/weldpack/attackby(obj/item/W as obj, mob/user as mob) if(W.iswelder()) diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 8ff5b77ac46..da41c535b69 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -363,6 +363,35 @@ /obj/item/toy/balloon/candycane = 1 ) +/obj/random/desktoy + name = "random desk toy" + desc = "This is a random desk toy." + icon = 'icons/obj/toy.dmi' + icon_state = "dippybird" + spawnlist = list( + /obj/item/toy/desk/newtoncradle, + /obj/item/toy/desk/fan, + /obj/item/toy/desk/officetoy, + /obj/item/toy/desk/dippingbird + ) + +/obj/random/lavalamp + name = "random lava lamp" + desc = "This is a random lava lamp." + icon = 'icons/obj/lighting.dmi' + icon_state = "lavalamp" + spawnlist = list( + /obj/item/device/flashlight/lamp/lava, + /obj/item/device/flashlight/lamp/lava/red, + /obj/item/device/flashlight/lamp/lava/orange, + /obj/item/device/flashlight/lamp/lava/yellow, + /obj/item/device/flashlight/lamp/lava/green, + /obj/item/device/flashlight/lamp/lava/cyan, + /obj/item/device/flashlight/lamp/lava/blue, + /obj/item/device/flashlight/lamp/lava/purple, + /obj/item/device/flashlight/lamp/lava/pink + ) + /obj/random/smalltank name = "random small tank" @@ -1701,4 +1730,4 @@ /obj/item/pizzabox/mushroom, /obj/item/pizzabox/meat, /obj/item/pizzabox/pineapple - ) \ No newline at end of file + ) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index df5f5834a62..9411185e338 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -118,20 +118,24 @@ //Supply new /obj/item/storage/box/flashbangs(src) //Appearance - new /obj/item/storage/backpack/security(src) - new /obj/item/storage/backpack/satchel_sec(src) - new /obj/item/clothing/under/rank/head_of_security(src) - new /obj/item/clothing/under/rank/head_of_security/corp(src) - new /obj/item/clothing/suit/storage/toggle/armor/hos(src) - new /obj/item/clothing/suit/armor/hos(src) + if(prob(50)) + new /obj/item/storage/backpack/security(src) + else + new /obj/item/storage/backpack/satchel_sec(src) new /obj/item/clothing/suit/storage/vest/hos(src) - new /obj/item/clothing/head/hos/cap(src) - new /obj/item/clothing/head/hos/cap/alt(src) + if(prob(50)) + new /obj/item/clothing/under/rank/head_of_security(src) + new /obj/item/clothing/head/beret/security/hos(src) + new /obj/item/clothing/head/hos(src) + else + new /obj/item/clothing/under/rank/head_of_security/corp(src) + new /obj/item/clothing/head/beret/security/hos/corp(src) + new /obj/item/clothing/head/hos/corp(src) new /obj/item/clothing/head/helmet/hos(src) - new /obj/item/clothing/head/beret/security/hos(src) - new /obj/item/clothing/head/beret/security/hos/alt(src) + new /obj/item/clothing/suit/security/hos(src) new /obj/item/clothing/accessory/badge/hos(src) new /obj/item/clothing/gloves/black_leather(src) + new /obj/item/clothing/suit/storage/toggle/armor/hos(src) //Tools new /obj/item/device/radio/headset/heads/hos(src) new /obj/item/device/radio/headset/heads/hos/alt(src) @@ -165,16 +169,21 @@ /obj/structure/closet/secure_closet/hos2/fill() //Appearance - new /obj/item/storage/backpack/security(src) - new /obj/item/storage/backpack/satchel_sec(src) - new /obj/item/clothing/under/rank/head_of_security(src) - new /obj/item/clothing/under/rank/head_of_security/corp(src) + if(prob(50)) + new /obj/item/storage/backpack/security(src) + else + new /obj/item/storage/backpack/satchel_sec(src) new /obj/item/clothing/suit/storage/vest/hos(src) - new /obj/item/clothing/head/beret/security/hos(src) - new /obj/item/clothing/head/beret/security/hos/alt(src) - new /obj/item/clothing/head/hos/cap(src) - new /obj/item/clothing/head/hos/cap/alt(src) + if(prob(50)) // chance to spawn either corporate or regular outfit. to prevent locker bloat which makes it lag when right clicked + new /obj/item/clothing/under/rank/head_of_security(src) + new /obj/item/clothing/head/beret/security/hos(src) + new /obj/item/clothing/head/hos(src) + else + new /obj/item/clothing/under/rank/head_of_security/corp(src) + new /obj/item/clothing/head/beret/security/corp(src) + new /obj/item/clothing/head/hos/corp(src) new /obj/item/clothing/head/helmet/hos(src) + new /obj/item/clothing/suit/security/hos(src) //Tools new /obj/item/clothing/glasses/sunglasses/sechud/aviator(src) new /obj/item/device/radio/headset/heads/hos(src) @@ -206,15 +215,19 @@ else new /obj/item/storage/backpack/satchel_sec(src) new /obj/item/clothing/suit/storage/vest/warden(src) - new /obj/item/clothing/under/rank/warden(src) - new /obj/item/clothing/under/rank/warden/corp(src) - new /obj/item/clothing/suit/armor/vest/warden(src) - new /obj/item/clothing/suit/armor/vest/warden/commissar(src) - new /obj/item/clothing/head/beret/security/warden(src) - new /obj/item/clothing/head/warden/commissar(src) - new /obj/item/clothing/head/warden(src) - new /obj/item/clothing/head/warden/alt(src) + if(prob(50)) + if(prob(50)) + new /obj/item/clothing/under/rank/warden(src) + else + new /obj/item/clothing/under/rank/warden/blue(src) + new /obj/item/clothing/head/beret/security/warden(src) + new /obj/item/clothing/head/warden(src) + else + new /obj/item/clothing/under/rank/warden/corp(src) + new /obj/item/clothing/head/beret/security/corp(src) + new /obj/item/clothing/head/warden/corp(src) new /obj/item/clothing/head/helmet(src) + new /obj/item/clothing/suit/security/warden(src) new /obj/item/clothing/accessory/badge/warden(src) new /obj/item/clothing/gloves/black_leather(src) //Tools @@ -251,6 +264,7 @@ else new /obj/item/storage/backpack/satchel_sec(src) new /obj/item/clothing/head/beret/security(src) + new /obj/item/clothing/head/softcap/security(src) new /obj/item/clothing/suit/storage/hazardvest/cadet(src) new /obj/item/clothing/under/rank/cadet(src) //Tools @@ -285,11 +299,20 @@ new /obj/item/storage/backpack/security(src) else new /obj/item/storage/backpack/satchel_sec(src) - new /obj/item/clothing/head/softcap/security/corp(src) - new /obj/item/clothing/head/beret/security/corp(src) - new /obj/item/clothing/under/rank/security/corp(src) new /obj/item/clothing/suit/storage/vest/officer(src) + if(prob(50)) + if(prob(50)) + new /obj/item/clothing/under/rank/security(src) + else + new /obj/item/clothing/under/rank/security/blue(src) + new /obj/item/clothing/head/beret/security/officer(src) + new /obj/item/clothing/head/softcap/security(src) + else + new /obj/item/clothing/under/rank/security/corp(src) + new /obj/item/clothing/head/beret/security/corp(src) + new /obj/item/clothing/head/softcap/security/corp(src) new /obj/item/clothing/head/helmet(src) + new /obj/item/clothing/suit/security/officer(src) new /obj/item/clothing/accessory/badge/officer(src) new /obj/item/clothing/mask/gas/alt(src) //Tools @@ -375,9 +398,9 @@ /obj/structure/closet/secure_closet/csi/fill() //Appearance - new /obj/item/clothing/suit/storage/forensics/blue(src) - new /obj/item/clothing/suit/storage/forensics/red(src) - new /obj/item/clothing/suit/storage/vest/csi(src) + new /obj/item/clothing/gloves/black(src) + new /obj/item/clothing/suit/storage/toggle/forensics(src) + new /obj/item/clothing/suit/storage/vest/ft(src) new /obj/item/clothing/under/det/forensics(src) new /obj/item/clothing/under/det/black(src) new /obj/item/clothing/under/det/classic(src) diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 50ac742388b..72fe7d08b2d 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -51,6 +51,10 @@ name = "cow crate" held_type = /mob/living/simple_animal/cow +/obj/structure/largecrate/animal/pig + name = "pig crate" + held_type = /mob/living/simple_animal/pig + /obj/structure/largecrate/animal/goat name = "goat crate" held_type = /mob/living/simple_animal/hostile/retaliate/goat diff --git a/code/game/objects/structures/crystals.dm b/code/game/objects/structures/crystals.dm index 4758c00b43a..e195440986c 100644 --- a/code/game/objects/structures/crystals.dm +++ b/code/game/objects/structures/crystals.dm @@ -6,7 +6,7 @@ anchored = TRUE density = FALSE layer = ABOVE_CABLE_LAYER - var/datum/reagent/reagent_id + var/decl/reagent/reagent_id var/state = 0 var/health = 100 var/mine_rate = 1 // how fast you can mine it @@ -16,7 +16,7 @@ /obj/structure/reagent_crystal/Initialize(mapload, var/reagent_i = null, var/our_creator = null) . = ..() if(!reagent_i) - var/list/chems = list(/datum/reagent/acetone, /datum/reagent/aluminum, /datum/reagent/ammonia, /datum/reagent/carbon, /datum/reagent/copper, /datum/reagent/iron, /datum/reagent/lithium, /datum/reagent/mercury, /datum/reagent/potassium, /datum/reagent/radium, /datum/reagent/sodium) + var/list/chems = list(/decl/reagent/acetone, /decl/reagent/aluminum, /decl/reagent/ammonia, /decl/reagent/carbon, /decl/reagent/copper, /decl/reagent/iron, /decl/reagent/lithium, /decl/reagent/mercury, /decl/reagent/potassium, /decl/reagent/radium, /decl/reagent/sodium) reagent_i = pick(chems) reagent_id = reagent_i name = replacetext(name, "chemical", lowertext(initial(reagent_id.name))) @@ -158,12 +158,12 @@ /obj/item/reagent_crystal/Initialize(mapload, reagent_i, amount) . = ..() - create_reagents(5) + create_reagents(max(5, amount)) reagents.add_reagent(reagent_i, amount) - var/datum/reagent/R = new reagent_i + var/decl/reagent/R = decls_repository.get_decl(reagent_i) name = "[lowertext(R.name)] crystal" desc = "A [lowertext(R.name)] crystal. It looks rough, unprocessed." - desc_info = "This crystal can be grinded to obtain the chemical material locked within." + desc_info = "This crystal can be ground to obtain the chemical material locked within." color = reagents.get_color() /obj/item/storage/bag/crystal @@ -173,4 +173,4 @@ icon_state = "satchel" slot_flags = SLOT_BELT | SLOT_POCKET max_storage_space = 100 - can_hold = list(/obj/item/reagent_crystal) \ No newline at end of file + can_hold = list(/obj/item/reagent_crystal) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 0806485fc65..dde3e3aabbb 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -32,7 +32,7 @@ myreplacer = new /obj/item/device/lightreplacer(src) mybucket = new /obj/structure/mopbucket(src) - mybucket.reagents.add_reagent(/datum/reagent/water, mybucket.bucketsize) + mybucket.reagents.add_reagent(/decl/reagent/water, mybucket.bucketsize) for(signs, signs < 4, signs++) new /obj/item/clothing/suit/caution(src) diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index 6216e2f4661..6276f1bf0db 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -50,16 +50,15 @@ /obj/structure/plasticflaps/attackby(obj/item/W, mob/user) if(manipulating) return - manipulating = TRUE if(W.iswirecutter() || W.sharp && !W.noslice) + manipulating = TRUE visible_message(SPAN_NOTICE("[user] begins cutting down \the [src]."), SPAN_NOTICE("You begin cutting down \the [src].")) if(!do_after(user, 30/W.toolspeed)) manipulating = FALSE return playsound(src.loc, 'sound/items/wirecutter.ogg', 50, 1) - visible_message(SPAN_NOTICE("[user] cuts down \the [src]."), - SPAN_NOTICE("You cut down \the [src].")) + visible_message(SPAN_NOTICE("[user] cuts down \the [src]."), SPAN_NOTICE("You cut down \the [src].")) dismantle() /obj/structure/plasticflaps/mining //A specific type for mining that doesn't allow airflow because of them damn crates diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 136b35e34e1..8d58b8319ec 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -235,7 +235,7 @@ var/obj/effect/effect/water/W = new(O) W.create_reagents(spray_amount) - W.reagents.add_reagent(/datum/reagent/water, spray_amount) + W.reagents.add_reagent(/decl/reagent/water, spray_amount) W.set_up(O, spray_amount) if(iscarbon(O)) @@ -364,7 +364,7 @@ return is_washing = 1 var/turf/T = get_turf(src) - reagents.add_reagent(/datum/reagent/water, 2) + reagents.add_reagent(/decl/reagent/water, 2) T.clean(src) spawn(100) is_washing = 0 @@ -472,7 +472,7 @@ to_chat(usr, SPAN_WARNING("\The [RG] is already full.")) return - RG.reagents.add_reagent(/datum/reagent/water, min(RG.volume - RG.reagents.total_volume, amount_per_transfer_from_this)) + RG.reagents.add_reagent(/decl/reagent/water, min(RG.volume - RG.reagents.total_volume, amount_per_transfer_from_this)) user.visible_message("[user] fills \a [RG] using \the [src].", SPAN_NOTICE("You fill \a [RG] using \the [src].")) playsound(loc, 'sound/effects/sink.ogg', 75, 1) @@ -497,7 +497,7 @@ return var/trans = min(S.volume - S.reagents.total_volume, S.amount_per_transfer_from_this) - S.reagents.add_reagent(/datum/reagent/water, trans) + S.reagents.add_reagent(/decl/reagent/water, trans) user.visible_message(SPAN_NOTICE("[usr] uses \the [S] to draw water from \the [src]."), SPAN_NOTICE("You draw [trans] units of water from \the [src]. \The [S] now contains [S.reagents.total_volume] units.")) if(1) // inject @@ -530,7 +530,7 @@ else if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube)) return else if(istype(O, /obj/item/mop)) - O.reagents.add_reagent(/datum/reagent/water, 5) + O.reagents.add_reagent(/decl/reagent/water, 5) to_chat(user, SPAN_NOTICE("You wet \the [O] in \the [src].")) playsound(loc, 'sound/effects/slosh.ogg', 25, 1) return diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index b25c6cf30f4..c469e125a37 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -115,10 +115,10 @@ ..() -//returns 1 if made bloody, returns 0 otherwise +//returns TRUE if made bloody, returns FALSE otherwise /turf/simulated/add_blood(mob/living/carbon/human/M as mob) if (!..()) - return 0 + return FALSE if(istype(M)) for(var/obj/effect/decal/cleanable/blood/B in contents) @@ -126,10 +126,10 @@ B.blood_DNA = list() if(!B.blood_DNA[M.dna.unique_enzymes]) B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type - return 1 //we bloodied the floor - blood_splatter(src,M.get_blood(M.vessel),1) - return 1 //we bloodied the floor - return 0 + return TRUE //we bloodied the floor + blood_splatter(src,M,TRUE) + return TRUE //we bloodied the floor + return FALSE // Only adds blood on the floor -- Skie /turf/simulated/proc/add_blood_floor(mob/living/carbon/M as mob) diff --git a/code/game/turfs/simulated/wall_rot.dm b/code/game/turfs/simulated/wall_rot.dm index 3b2f3624166..2d0422824bd 100644 --- a/code/game/turfs/simulated/wall_rot.dm +++ b/code/game/turfs/simulated/wall_rot.dm @@ -28,6 +28,6 @@ /obj/item/rot_sample/Initialize(mapload) . = ..() create_reagents(15) - var/list/possible_reagents = list(/datum/reagent/bicaridine, /datum/reagent/kelotane, /datum/reagent/dexalin, /datum/reagent/mortaphenyl, /datum/reagent/oculine, /datum/reagent/peridaxon) + var/list/possible_reagents = list(/decl/reagent/bicaridine, /decl/reagent/kelotane, /decl/reagent/dexalin, /decl/reagent/mortaphenyl, /decl/reagent/oculine, /decl/reagent/peridaxon) reagents.add_reagent(pick(possible_reagents), 15) color = reagents.get_color() diff --git a/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm index 0cd39e9be5b..2e06de2d1b1 100644 --- a/code/game/turfs/simulated/water.dm +++ b/code/game/turfs/simulated/water.dm @@ -94,7 +94,7 @@ /turf/simulated/floor/beach/water/Entered(atom/movable/AM, atom/oldloc) if(!SSATOMS_IS_PROBABLY_DONE) return - reagents.add_reagent(/datum/reagent/water, 2) + reagents.add_reagent(/decl/reagent/water, 2) clean(src) START_PROCESSING(SSprocessing, src) if(istype(AM, /obj)) @@ -110,7 +110,7 @@ /turf/simulated/floor/beach/water/Exited(atom/movable/AM, atom/newloc) if(!SSATOMS_IS_PROBABLY_DONE) return - reagents.add_reagent(/datum/reagent/water, 2) + reagents.add_reagent(/decl/reagent/water, 2) clean(src) if(istype(AM, /obj) && numobjects) numobjects -= 1 @@ -123,7 +123,7 @@ ..() /turf/simulated/floor/beach/water/process() - reagents.add_reagent(/datum/reagent/water, 2) + reagents.add_reagent(/decl/reagent/water, 2) clean(src) for(var/mob/living/L in src) wash(L) @@ -143,7 +143,7 @@ var/obj/effect/effect/water/W = new(O) W.create_reagents(100) - W.reagents.add_reagent(/datum/reagent/water, 100) + W.reagents.add_reagent(/decl/reagent/water, 100) W.set_up(O, 100) if(iscarbon(O)) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 051c954fa58..ec745fdab01 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -384,7 +384,7 @@ var/const/enterloopsanity = 100 //expects an atom containing the reagents used to clean the turf /turf/proc/clean(atom/source, mob/user) - if(source.reagents.has_reagent(/datum/reagent/water, 1) || source.reagents.has_reagent(/datum/reagent/spacecleaner, 1)) + if(source.reagents.has_reagent(/decl/reagent/water, 1) || source.reagents.has_reagent(/decl/reagent/spacecleaner, 1)) clean_blood() if(istype(src, /turf/simulated)) var/turf/simulated/T = src @@ -538,4 +538,4 @@ var/const/enterloopsanity = 100 else if(!limb.is_usable() || limb.is_broken()) // You can't use the limb, but it's still there to manoevre yourself return 15 else - return 0 \ No newline at end of file + return 0 diff --git a/code/modules/admin/secrets/admin_secrets/replace_player.dm b/code/modules/admin/secrets/admin_secrets/replace_player.dm deleted file mode 100644 index 8dce7f5ad5b..00000000000 --- a/code/modules/admin/secrets/admin_secrets/replace_player.dm +++ /dev/null @@ -1,25 +0,0 @@ -/datum/admin_secret_item/admin_secret/replace_player_with_ghost - name = "Replace player with ghost" - -/datum/admin_secret_item/admin_secret/replace_player_with_ghost/can_execute(var/mob/user) - if(!ROUND_IS_STARTED) return 0 - return ..() - -/datum/admin_secret_item/admin_secret/replace_player_with_ghost/execute(var/mob/user) - . = ..() - if(!.) - return - var/list/targets = list() - targets += getmobs() - var/mob/T = input(user, "Which player do you want to replace?") as null|anything in targets - if (!T) - return - var/mob/player_to_replace = targets[T] - var/datum/ghosttrap/G = get_ghost_trap("[player_to_replace.mind.special_role]") - if(player_to_replace.client) - player_to_replace.ghostize(0) - if(G) - G.request_player(player_to_replace, "Would you like to play as a [player_to_replace.mind.special_role]?", 60 SECONDS) - else - G = ghost_traps["Special"] - G.request_player(player_to_replace, "Would you like to play as [player_to_replace.name]?", 60 SECONDS) \ No newline at end of file diff --git a/code/modules/cargo/bounties/assistant.dm b/code/modules/cargo/bounties/assistant.dm index 44a009e6964..c4dcf074f69 100644 --- a/code/modules/cargo/bounties/assistant.dm +++ b/code/modules/cargo/bounties/assistant.dm @@ -70,7 +70,7 @@ return FALSE if(!istype(O)) return FALSE - if(O.reagents.get_reagent_amount(/datum/reagent/water) >= 750) + if(REAGENT_VOLUME(O.reagents, /decl/reagent/water) >= 750) return TRUE return FALSE @@ -163,7 +163,7 @@ return FALSE if(!istype(O)) return FALSE - if(O.reagents.get_reagent_amount(/datum/reagent/spacecleaner) >= 200) + if(REAGENT_VOLUME(O.reagents, /decl/reagent/spacecleaner) >= 200) return TRUE return FALSE @@ -175,4 +175,4 @@ reward_high = 2500 required_count = 8 random_count = 2 - wanted_types = list(/obj/item/photo) \ No newline at end of file + wanted_types = list(/obj/item/photo) diff --git a/code/modules/cargo/bounties/engineer.dm b/code/modules/cargo/bounties/engineer.dm index dc044ad7c24..0f675ac80b3 100644 --- a/code/modules/cargo/bounties/engineer.dm +++ b/code/modules/cargo/bounties/engineer.dm @@ -54,7 +54,7 @@ return FALSE if(!istype(O)) return FALSE - if(O.reagents.get_reagent_amount(/datum/reagent/fuel) >= 750) + if(REAGENT_VOLUME(O.reagents, /decl/reagent/fuel) >= 750) return TRUE return FALSE diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index e88dcdea402..eda7023220b 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -1,7 +1,7 @@ /datum/bounty/reagent var/required_volume = 10 var/shipped_volume = 0 - var/datum/reagent/wanted_reagent + var/decl/reagent/wanted_reagent var/list/possible_descriptions = list("We're interested in testing the quality of our stations' bartenders!", "We're holding an office party and need some drink variety.", "We're holding a mixing competition, and you'll receive a bonus for competing.", @@ -25,7 +25,7 @@ /datum/bounty/reagent/ship(obj/O) if(!applies_to(O)) return - shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.type) + shipped_volume += REAGENT_VOLUME(O.reagents, wanted_reagent.type) if(shipped_volume > required_volume) shipped_volume = required_volume @@ -44,48 +44,48 @@ ..() // Don't worry about making this comprehensive. It doesn't matter if some drinks are skipped. var/list/possible_reagents = list( - /datum/reagent/alcohol/ethanol/antifreeze, - /datum/reagent/alcohol/ethanol/andalusia, - /datum/reagent/alcohol/ethanol/coffee/b52, - /datum/reagent/alcohol/ethanol/bananahonk, - /datum/reagent/alcohol/ethanol/bilk, - /datum/reagent/alcohol/ethanol/blackrussian, - /datum/reagent/alcohol/ethanol/bloodymary, - /datum/reagent/alcohol/ethanol/martini, - /datum/reagent/alcohol/ethanol/cubalibre, - /datum/reagent/alcohol/ethanol/erikasurprise, - /datum/reagent/alcohol/ethanol/ginfizz, - /datum/reagent/alcohol/ethanol/gintonic, - /datum/reagent/alcohol/ethanol/grog, - /datum/reagent/alcohol/ethanol/iced_beer, - /datum/reagent/alcohol/ethanol/irishcarbomb, - /datum/reagent/alcohol/ethanol/manhattan, - /datum/reagent/alcohol/ethanol/margarita, - /datum/reagent/alcohol/ethanol/gargleblaster, - /datum/reagent/alcohol/ethanol/screwdrivercocktail, - /datum/reagent/alcohol/ethanol/cobaltvelvet, - /datum/reagent/alcohol/ethanol/snowwhite, - /datum/reagent/alcohol/ethanol/gibsonhooch, - /datum/reagent/alcohol/ethanol/manly_dorf, - /datum/reagent/alcohol/ethanol/thirteenloko, - /datum/reagent/alcohol/ethanol/vodkamartini, - /datum/reagent/alcohol/ethanol/whiskeysoda, - /datum/reagent/alcohol/ethanol/demonsblood, - /datum/reagent/alcohol/ethanol/cinnamonapplewhiskey, - /datum/reagent/drink/coffee/soy_latte, - /datum/reagent/drink/coffee/cafe_latte, - /datum/reagent/drink/tea/coco_chaitea, - /datum/reagent/drink/tea/chaitealatte, - /datum/reagent/drink/tea/bureacratea, - /datum/reagent/drink/tea/desert_tea, - /datum/reagent/drink/tea/hakhma_tea, - /datum/reagent/drink/tea/portsvilleminttea, - /datum/reagent/drink/meatshake, - /datum/reagent/alcohol/butanol/sandgria, - /datum/reagent/alcohol/butanol/cactuscola, - /datum/reagent/alcohol/butanol/trizkizki_tea) + /decl/reagent/alcohol/antifreeze, + /decl/reagent/alcohol/andalusia, + /decl/reagent/alcohol/coffee/b52, + /decl/reagent/alcohol/bananahonk, + /decl/reagent/alcohol/bilk, + /decl/reagent/alcohol/blackrussian, + /decl/reagent/alcohol/bloodymary, + /decl/reagent/alcohol/martini, + /decl/reagent/alcohol/cubalibre, + /decl/reagent/alcohol/erikasurprise, + /decl/reagent/alcohol/ginfizz, + /decl/reagent/alcohol/gintonic, + /decl/reagent/alcohol/grog, + /decl/reagent/alcohol/iced_beer, + /decl/reagent/alcohol/irishcarbomb, + /decl/reagent/alcohol/manhattan, + /decl/reagent/alcohol/margarita, + /decl/reagent/alcohol/gargleblaster, + /decl/reagent/alcohol/screwdrivercocktail, + /decl/reagent/alcohol/cobaltvelvet, + /decl/reagent/alcohol/snowwhite, + /decl/reagent/alcohol/gibsonhooch, + /decl/reagent/alcohol/manly_dorf, + /decl/reagent/alcohol/thirteenloko, + /decl/reagent/alcohol/vodkamartini, + /decl/reagent/alcohol/whiskeysoda, + /decl/reagent/alcohol/demonsblood, + /decl/reagent/alcohol/cinnamonapplewhiskey, + /decl/reagent/drink/coffee/soy_latte, + /decl/reagent/drink/coffee/cafe_latte, + /decl/reagent/drink/tea/coco_chaitea, + /decl/reagent/drink/tea/chaitealatte, + /decl/reagent/drink/tea/bureacratea, + /decl/reagent/drink/tea/desert_tea, + /decl/reagent/drink/tea/hakhma_tea, + /decl/reagent/drink/tea/portsvilleminttea, + /decl/reagent/drink/meatshake, + /decl/reagent/alcohol/butanol/sandgria, + /decl/reagent/alcohol/butanol/cactuscola, + /decl/reagent/alcohol/butanol/trizkizki_tea) - var/datum/reagent/reagent_type = pick(possible_reagents) + var/decl/reagent/reagent_type = pick(possible_reagents) wanted_reagent = new reagent_type name = wanted_reagent.name description = "[pick(possible_descriptions)] Send a shipment of [name]." //punctuation is already in pick() @@ -102,26 +102,26 @@ ..() // Don't worry about making this comprehensive. It doesn't matter if some drinks are skipped. var/list/possible_reagents = list( - /datum/reagent/alcohol/ethanol/hooch, - /datum/reagent/alcohol/ethanol/atomicbomb, - /datum/reagent/alcohol/ethanol/beepsky_smash, - /datum/reagent/alcohol/ethanol/booger, - /datum/reagent/alcohol/ethanol/hippiesdelight, - /datum/reagent/alcohol/ethanol/goldschlager, - /datum/reagent/alcohol/ethanol/manhattan_proj, - /datum/reagent/alcohol/ethanol/neurotoxin, - /datum/reagent/alcohol/ethanol/singulo, - /datum/reagent/alcohol/ethanol/patron, - /datum/reagent/alcohol/ethanol/silencer, - /datum/reagent/alcohol/ethanol/cbsc, - /datum/reagent/alcohol/ethanol/rixulin_sundae, - /datum/reagent/drink/xrim, - /datum/reagent/drink/tea/securitea, - /datum/reagent/drink/toothpaste/sedantian_firestorm, - /datum/reagent/alcohol/butanol/wastelandheat, - /datum/reagent/alcohol/butanol/contactwine, - /datum/reagent/alcohol/butanol/crocodile_booze) - + /decl/reagent/alcohol/hooch, + /decl/reagent/alcohol/atomicbomb, + /decl/reagent/alcohol/beepsky_smash, + /decl/reagent/alcohol/booger, + /decl/reagent/alcohol/hippiesdelight, + /decl/reagent/alcohol/goldschlager, + /decl/reagent/alcohol/manhattan_proj, + /decl/reagent/alcohol/neurotoxin, + /decl/reagent/alcohol/singulo, + /decl/reagent/alcohol/patron, + /decl/reagent/alcohol/silencer, + /decl/reagent/alcohol/cbsc, + /decl/reagent/alcohol/rixulin_sundae, + /decl/reagent/drink/xrim, + /decl/reagent/drink/tea/securitea, + /decl/reagent/drink/toothpaste/sedantian_firestorm, + /decl/reagent/alcohol/butanol/wastelandheat, + /decl/reagent/alcohol/butanol/contactwine, + /decl/reagent/alcohol/butanol/crocodile_booze) + var/reagent_type = pick(possible_reagents) wanted_reagent = new reagent_type name = wanted_reagent.name @@ -139,35 +139,35 @@ ..() // Don't worry about making this comprehensive. It doesn't matter if some chems are skipped. var/list/possible_reagents = list( - /datum/reagent/leporazine, - /datum/reagent/clonexadone, - /datum/reagent/space_drugs, - /datum/reagent/thermite, - /datum/reagent/cetahydramine, - /datum/reagent/sterilizine, - /datum/reagent/mental/emoxanyl, - /datum/reagent/mental/minaphobin, - /datum/reagent/mental/neurapan, - /datum/reagent/rmt, - /datum/reagent/mortaphenyl, - /datum/reagent/oxycomorphine, - /datum/reagent/oculine, - /datum/reagent/peridaxon, - /datum/reagent/cataleptinol, - /datum/reagent/verunol, - /datum/reagent/hyperzine, - /datum/reagent/fluvectionem, - /datum/reagent/pacifier, - /datum/reagent/dexalin/plus, - /datum/reagent/ryetalyn, - /datum/reagent/pneumalin, - /datum/reagent/acid/polyacid, - /datum/reagent/mutagen, - /datum/reagent/impedrezene, - /datum/reagent/night_juice, - /datum/reagent/toxin/cardox, - /datum/reagent/toxin/lean, - /datum/reagent/toxin/stimm) + /decl/reagent/leporazine, + /decl/reagent/clonexadone, + /decl/reagent/space_drugs, + /decl/reagent/thermite, + /decl/reagent/cetahydramine, + /decl/reagent/sterilizine, + /decl/reagent/mental/emoxanyl, + /decl/reagent/mental/minaphobin, + /decl/reagent/mental/neurapan, + /decl/reagent/rmt, + /decl/reagent/mortaphenyl, + /decl/reagent/oxycomorphine, + /decl/reagent/oculine, + /decl/reagent/peridaxon, + /decl/reagent/cataleptinol, + /decl/reagent/verunol, + /decl/reagent/hyperzine, + /decl/reagent/fluvectionem, + /decl/reagent/pacifier, + /decl/reagent/dexalin/plus, + /decl/reagent/ryetalyn, + /decl/reagent/pneumalin, + /decl/reagent/acid/polyacid, + /decl/reagent/mutagen, + /decl/reagent/impedrezene, + /decl/reagent/night_juice, + /decl/reagent/toxin/cardox, + /decl/reagent/toxin/lean, + /decl/reagent/toxin/stimm) var/reagent_type = pick(possible_reagents) wanted_reagent = new reagent_type diff --git a/code/modules/cargo/bounties/security.dm b/code/modules/cargo/bounties/security.dm index c3d8665a35c..9dfacff4ce3 100644 --- a/code/modules/cargo/bounties/security.dm +++ b/code/modules/cargo/bounties/security.dm @@ -87,7 +87,7 @@ return FALSE if(!istype(O)) return FALSE - if(O.reagents.get_reagent_amount(/datum/reagent/capsaicin/condensed) >= 25) + if(REAGENT_VOLUME(O.reagents, /decl/reagent/capsaicin/condensed) >= 25) return TRUE return FALSE @@ -108,4 +108,4 @@ return FALSE if(!O.broken) return TRUE - return FALSE \ No newline at end of file + return FALSE diff --git a/code/modules/cargo/random_stock/large.dm b/code/modules/cargo/random_stock/large.dm index 128743491b9..a52fc266166 100644 --- a/code/modules/cargo/random_stock/large.dm +++ b/code/modules/cargo/random_stock/large.dm @@ -1,4 +1,4 @@ -STOCK_ITEM_LARGE(russian, 1) +STOCK_ITEM_LARGE(russian, 0.5) new /obj/structure/closet/gimmick/russian(L) STOCK_ITEM_LARGE(emergency, 2) @@ -27,13 +27,13 @@ STOCK_ITEM_LARGE(biosuit, 3) STOCK_ITEM_LARGE(hydrotray, 3) new /obj/machinery/portable_atmospherics/hydroponics(L) -STOCK_ITEM_LARGE(oxycanister, 6)//Cargo should almost always have an oxycanister +STOCK_ITEM_LARGE(oxycanister, 3) new /obj/machinery/portable_atmospherics/canister/oxygen(L) STOCK_ITEM_LARGE(oxydispenser, 5) new /obj/structure/dispenser/oxygen(L) -STOCK_ITEM_LARGE(bubbleshield, 2) +STOCK_ITEM_LARGE(bubbleshield, 0.5) var/obj/O = new /obj/machinery/shield_gen(L) var/turf/T = get_turf(O) for (var/turf/U in range(O,1)) @@ -48,6 +48,9 @@ STOCK_ITEM_LARGE(watertank, 2) STOCK_ITEM_LARGE(fueltank, 2) new /obj/structure/reagent_dispensers/fueltank(L) +STOCK_ITEM_LARGE(lubetank, 2) + new /obj/structure/reagent_dispensers/lube(L) + STOCK_ITEM_LARGE(airpump, 1) var/obj/machinery/portable_atmospherics/powered/M = new /obj/machinery/portable_atmospherics/powered/pump/filled(L) if (prob(60) && M.cell) @@ -140,3 +143,6 @@ STOCK_ITEM_LARGE(dog, 0.2) STOCK_ITEM_LARGE(exosuit, 1.2) //A randomly generated exosuit in a very variable condition. new /obj/machinery/mech_recharger(get_turf(L)) // exosuit would die without it otherwise new /mob/living/heavy_vehicle/premade/random/extra(L) + +STOCK_ITEM_LARGE(unusualcrate, 0.1) //Like from the unknown object random event + new /obj/structure/closet/crate/loot(L) \ No newline at end of file diff --git a/code/modules/cargo/random_stock/t1_common.dm b/code/modules/cargo/random_stock/t1_common.dm index 25a28f27053..c713ab2cf5a 100644 --- a/code/modules/cargo/random_stock/t1_common.dm +++ b/code/modules/cargo/random_stock/t1_common.dm @@ -10,7 +10,8 @@ STOCK_ITEM_COMMON(toolbox, 4) STOCK_ITEM_COMMON(meds, 5) new /obj/random/medical(L) new /obj/random/medical(L) - new /obj/random/medical(L) + if(prob(50)) + new /obj/random/medical(L) STOCK_ITEM_COMMON(steel, 7) new /obj/item/stack/material/steel(L, 50) @@ -44,7 +45,6 @@ STOCK_ITEM_COMMON(lightreplacer, 1) //A bundle of bodybags or stasis bags STOCK_ITEM_COMMON(bodybag, 2.2) if(prob(25)) - new /obj/item/bodybag/cryobag(L) new /obj/item/bodybag/cryobag(L) if(prob(50)) new /obj/item/bodybag/cryobag(L) @@ -52,7 +52,7 @@ STOCK_ITEM_COMMON(bodybag, 2.2) else new /obj/item/storage/box/bodybags(L) -STOCK_ITEM_COMMON(lamp, 2.4) +STOCK_ITEM_COMMON(lamp, 2) var/obj/item/device/flashlight/lamp/P if(prob(50)) P = new /obj/item/device/flashlight/lamp/green(L) @@ -70,8 +70,6 @@ STOCK_ITEM_COMMON(sterile, 2) STOCK_ITEM_COMMON(light, 1.8) new /obj/item/storage/box/lights/mixed(L) - if(prob(50)) - new /obj/item/storage/box/lights/mixed(L) if(prob(25)) new /obj/item/storage/box/lights/coloredmixed(L) if(prob(15)) @@ -135,7 +133,7 @@ STOCK_ITEM_COMMON(smallcell, 4) //Spawns a random circuitboard //Allboards being a global list might be faster, but it didnt seem worth the extra memory -STOCK_ITEM_COMMON(circuitboard, 2) +STOCK_ITEM_COMMON(circuitboard, 1) var/list/allboards = subtypesof(/obj/item/circuitboard) var/list/exclusion = list( /obj/item/circuitboard/unary_atmos, @@ -149,18 +147,18 @@ STOCK_ITEM_COMMON(circuitboard, 2) STOCK_ITEM_COMMON(oxy, 3.2) new /obj/random/smalltank(L) - new /obj/item/tank/oxygen(L) if(prob(25)) new /obj/random/smalltank(L) new /obj/random/smalltank(L) - if(prob(10)) + if(prob(40)) new /obj/item/tank/oxygen(L) STOCK_ITEM_COMMON(belts, 2) new /obj/random/belt(L) - new /obj/random/belt(L) + if(prob(50)) + new /obj/random/belt(L) -STOCK_ITEM_COMMON(backpack, 4.5) +STOCK_ITEM_COMMON(backpack, 3.5) new /obj/random/backpack(L) new /obj/random/backpack(L) @@ -194,14 +192,11 @@ STOCK_ITEM_COMMON(trap, 2) if(prob(30)) new /obj/item/trap(L) -STOCK_ITEM_COMMON(trays, 1.8) - new /obj/item/tray(L) - STOCK_ITEM_COMMON(utensil, 2) new /obj/item/storage/box/kitchen(L) STOCK_ITEM_COMMON(utilitygrenades, 1.5) - for(var/i in 1 to rand(1, 4)) + for(var/i in 1 to rand(1, 3)) if(prob(50)) new /obj/item/grenade/chem_grenade/metalfoam(L) else @@ -231,7 +226,7 @@ STOCK_ITEM_COMMON(gloves, 3.3) var/gtype = pick(allgloves) new gtype(L) -STOCK_ITEM_COMMON(insulated, 1.8) +STOCK_ITEM_COMMON(insulated, 1.5) new /obj/item/clothing/gloves/yellow(L) if(prob(50)) new /obj/item/clothing/gloves/yellow(L) @@ -253,14 +248,12 @@ STOCK_ITEM_COMMON(scanners, 3.2) /obj/item/barcodescanner = 1, /obj/item/device/depth_scanner = 1 ) - for(var/i in 1 to rand(1, 3)) + for(var/i in 1 to rand(1, 2)) var/stype = pickweight(possible) new stype(L) STOCK_ITEM_COMMON(binoculars, 1.5) new /obj/item/device/binoculars(L) - if(prob(50)) - new /obj/item/device/binoculars(L) STOCK_ITEM_COMMON(flash, 1) new /obj/item/device/flash(L) @@ -292,9 +285,9 @@ STOCK_ITEM_COMMON(cleaning, 3.5) STOCK_ITEM_COMMON(bsdm, 1.5) if(prob(50)) new /obj/item/clothing/glasses/sunglasses/blindfold(L) - if(prob(50)) + if(prob(20)) new /obj/item/clothing/mask/muzzle(L) - if(prob(30)) + if(prob(20)) new /obj/item/clothing/suit/straight_jacket(L) STOCK_ITEM_COMMON(charger, 2) @@ -315,9 +308,6 @@ STOCK_ITEM_COMMON(smokebombs, 1.1) STOCK_ITEM_COMMON(jar, 2) new /obj/item/glass_jar(L) -STOCK_ITEM_COMMON(glasses, 1.2) - new /obj/item/storage/box/rxglasses(L) - STOCK_ITEM_COMMON(pills, 1.2) var/list/options = pick( \ /obj/item/storage/pill_bottle/bicaridine, \ @@ -354,14 +344,6 @@ STOCK_ITEM_COMMON(paperwork, 1.2) else if(prob(15)) new /obj/item/pen/multi(L) -STOCK_ITEM_COMMON(officechair, 1.2) - var/turf/T = get_turf(L) - if(!turf_clear(T)) - for (var/turf/U in range(T,1)) - if (turf_clear(U)) - T = U - break - new /obj/structure/bed/chair/office/dark(T) STOCK_ITEM_COMMON(booze, 3.7) if(prob(8))//Spare keg of beer or xuizi juice @@ -378,7 +360,7 @@ STOCK_ITEM_COMMON(booze, 3.7) var/list/drinks = subtypesof(/obj/item/reagent_containers/food/drinks/bottle) drinks += subtypesof(/obj/item/reagent_containers/food/drinks/carton) - for (var/i in 1 to rand(1, 3)) + for (var/i in 1 to rand(1, 2)) var/type = pick(drinks) new type(L) @@ -391,7 +373,7 @@ STOCK_ITEM_COMMON(plant, 3.5) break new /obj/structure/flora/pottedplant/random(T) -STOCK_ITEM_COMMON(bag, 3.5) +STOCK_ITEM_COMMON(bag, 2) var/type = pick( \ /obj/item/storage/bag/trash, \ /obj/item/storage/bag/plasticbag, \ @@ -421,7 +403,7 @@ STOCK_ITEM_COMMON(hailer, 1.1) //A target, for target practice //Take em up to science for gun testing -STOCK_ITEM_COMMON(target, 2) +STOCK_ITEM_COMMON(target, 0.5) var/turf/T = get_turf(L) if(!turf_clear(T)) for(var/turf/U in range(T,1)) @@ -458,10 +440,8 @@ STOCK_ITEM_COMMON(posters, 3) new /obj/item/contraband/poster(L) if(prob(40)) new /obj/item/contraband/poster(L) - if(prob(20)) - new /obj/item/contraband/poster(L) -STOCK_ITEM_COMMON(parts, 5) +STOCK_ITEM_COMMON(parts, 4) var/list/parts = list( /obj/item/stock_parts/console_screen = 3, //Low ranking parts, common /obj/item/stock_parts/capacitor = 3, @@ -488,7 +468,7 @@ STOCK_ITEM_COMMON(parts, 5) /obj/item/stock_parts/subspace/transmitter = 0.5 ) - for(var/i in 1 to rand(2, 3)) + for(var/i in 1 to rand(1, 2)) var/part = pickweight(parts) new part(L) @@ -547,4 +527,4 @@ STOCK_ITEM_COMMON(camera, 1) new /obj/item/device/camera_film(L) STOCK_ITEM_COMMON(nothing, 0) - // do nothing + // do nothing \ No newline at end of file diff --git a/code/modules/cargo/random_stock/t2_uncommon.dm b/code/modules/cargo/random_stock/t2_uncommon.dm index 8b65e5cd179..0848d2e7025 100644 --- a/code/modules/cargo/random_stock/t2_uncommon.dm +++ b/code/modules/cargo/random_stock/t2_uncommon.dm @@ -42,7 +42,7 @@ STOCK_ITEM_UNCOMMON(flare, 2) STOCK_ITEM_UNCOMMON(implants, 1) if(prob(50)) new /obj/item/storage/box/cdeathalarm_kit(L) - else + else new /obj/item/storage/box/trackimp(L) STOCK_ITEM_UNCOMMON(flashbang, 0.75) @@ -72,7 +72,7 @@ STOCK_ITEM_UNCOMMON(specialcrayon, 1.5) new /obj/item/pen/crayon/rainbow(L) STOCK_ITEM_UNCOMMON(contraband, 2) - for(var/i in 1 to rand(1, 4)) + for(var/i in 1 to rand(1, 3)) new /obj/random/contraband(L) STOCK_ITEM_UNCOMMON(mediumcell, 3) @@ -85,21 +85,21 @@ STOCK_ITEM_UNCOMMON(mediumcell, 3) new type(L) STOCK_ITEM_UNCOMMON(chempack, 5) - var/list/chems = SSchemistry.chemical_reagents.Copy() - var/list/exclusion = list(/datum/reagent/drink, /datum/reagent, /datum/reagent/adminordrazine, /datum/reagent/polysomnine/beer2, /datum/reagent/azoth, /datum/reagent/elixir,\ - /datum/reagent/liquid_fire, /datum/reagent/philosopher_stone, /datum/reagent/toxin/undead, /datum/reagent/love_potion, /datum/reagent/shapesand, /datum/reagent/usolve,\ - /datum/reagent/sglue, /datum/reagent/black_matter, /datum/reagent/bottle_lightning, /datum/reagent/toxin/trioxin, /datum/reagent/toxin/phoron_salt, /datum/reagent/toxin/nanites, /datum/reagent/nitroglycerin) + var/list/chems = decls_repository.get_decls_of_subtype(/decl/reagent/) + var/list/exclusion = list(/decl/reagent/drink, /decl/reagent, /decl/reagent/adminordrazine, /decl/reagent/polysomnine/beer2, /decl/reagent/azoth, /decl/reagent/elixir,\ + /decl/reagent/liquid_fire, /decl/reagent/philosopher_stone, /decl/reagent/toxin/undead, /decl/reagent/love_potion, /decl/reagent/shapesand, /decl/reagent/usolve,\ + /decl/reagent/sglue, /decl/reagent/black_matter, /decl/reagent/bottle_lightning, /decl/reagent/toxin/trioxin, /decl/reagent/toxin/nanites, /decl/reagent/nitroglycerin) chems -= exclusion for (var/i in 1 to rand(2, 4)) var/obj/item/reagent_containers/chem_disp_cartridge/C = new /obj/item/reagent_containers/chem_disp_cartridge(L) var/rname = pick(chems) - var/datum/reagent/R = SSchemistry.chemical_reagents[rname] + var/decl/reagent/R = decls_repository.get_decl(rname) //If we get a drink, reroll it once. //Should result in a higher chance of getting medicines and chemicals - if (istype(R, /datum/reagent/drink) || istype(R, /datum/reagent/alcohol/ethanol)) + if (istype(R, /decl/reagent/drink) || istype(R, /decl/reagent/alcohol)) rname = pick(chems) - R = SSchemistry.chemical_reagents[rname] + R = decls_repository.get_decl(rname) C.reagents.add_reagent(rname, C.volume) C.setLabel(R.name) @@ -123,7 +123,7 @@ STOCK_ITEM_UNCOMMON(circuitboards, 3) exclusion += typesof(/obj/item/circuitboard/mecha) allboards -= exclusion - for(var/i in 1 to rand(2, 3)) + for(var/i in 1 to rand(1, 2)) var/type = pick(allboards) new type(L) @@ -171,7 +171,7 @@ STOCK_ITEM_UNCOMMON(MMI, 1.5) STOCK_ITEM_UNCOMMON(voidsuit, 2) new /obj/random/voidsuit(L,1) -STOCK_ITEM_UNCOMMON(violin, 2) +STOCK_ITEM_UNCOMMON(violin, 1) new /obj/item/device/violin(L) STOCK_ITEM_UNCOMMON(atmosfiresuit, 2) @@ -193,18 +193,9 @@ STOCK_ITEM_UNCOMMON(carpet, 2) STOCK_ITEM_UNCOMMON(gift, 4) new /obj/item/a_gift(L) -STOCK_ITEM_UNCOMMON(coatrack, 1) - var/turf/T = get_turf(L) - if(!turf_clear(T)) - for (var/turf/U in range(T,1)) - if (turf_clear(U)) - T = U - break - new /obj/structure/coatrack(T) - STOCK_ITEM_UNCOMMON(riotshield, 2) new /obj/item/shield/riot(L) - if(prob(40)) + if(prob(20)) new /obj/item/shield/riot(L) STOCK_ITEM_UNCOMMON(fireaxe, 1) @@ -267,7 +258,7 @@ STOCK_ITEM_UNCOMMON(manual, 2) var/type = pick(booklist) new type(L) -STOCK_ITEM_UNCOMMON(spystuff, 1) +STOCK_ITEM_UNCOMMON(spystuff, 0.75) if(prob(40)) new /obj/item/device/radiojammer(L) else @@ -278,7 +269,7 @@ STOCK_ITEM_UNCOMMON(seeds, 1) var/obj/item/seeds/SP = pick(subtypesof(/obj/item/seeds) - /obj/item/seeds/cutting) new SP(L) -STOCK_ITEM_UNCOMMON(rped, 2) +STOCK_ITEM_UNCOMMON(rped, 1) new /obj/item/storage/part_replacer(L) STOCK_ITEM_UNCOMMON(briefcase, 2) @@ -369,8 +360,10 @@ STOCK_ITEM_UNCOMMON(wristbound, 0.5) STOCK_ITEM_UNCOMMON(pops, 0.5) if(prob(85)) new /obj/item/storage/box/snappops(L) - else + else if (prob(25)) new /obj/item/storage/box/snappops/syndi(L) + else + new /obj/item/storage/box/partypopper(L) STOCK_ITEM_UNCOMMON(collectable_headwear, 0.5) var/type = pick(subtypesof(/obj/item/clothing/head/collectable)) @@ -391,17 +384,16 @@ STOCK_ITEM_UNCOMMON(pickaxes, 1) new type(L) STOCK_ITEM_UNCOMMON(alt_glasses, 1) - var/list/glasses = list(/obj/item/clothing/glasses/regular/circle, + var/list/glasses = list(/obj/item/clothing/glasses/regular/circle, /obj/item/clothing/glasses/regular/jamjar, /obj/item/clothing/glasses/threedglasses, /obj/item/clothing/glasses/regular/hipster, /obj/item/clothing/glasses/regular/scanners) - for(var/i in 1 to rand(1, 2)) - var/type = pick(glasses) - new type(L) + var/type = pick(glasses) + new type(L) STOCK_ITEM_UNCOMMON(gumballs, 3) new /obj/item/glass_jar/gumball(L) STOCK_ITEM_UNCOMMON(nothing, 0) - // no-op \ No newline at end of file + // no-op diff --git a/code/modules/cargo/random_stock/t3_rare.dm b/code/modules/cargo/random_stock/t3_rare.dm index def319bec2a..647e9de57ec 100644 --- a/code/modules/cargo/random_stock/t3_rare.dm +++ b/code/modules/cargo/random_stock/t3_rare.dm @@ -91,7 +91,7 @@ STOCK_ITEM_RARE(exogear, 1.5) /obj/item/mecha_equipment/sleeper = 0.9 ) - for(var/i in 1 to rand(1,3)) + for(var/i in 1 to rand(1,2)) var/type = pickweight(equips) new type(L) @@ -126,13 +126,6 @@ STOCK_ITEM_RARE(watertank, 1) else new /obj/item/watertank(L) -STOCK_ITEM_RARE(bmonster, 0.5) - var/obj/item/battle_monsters/wrapped/W = pick(subtypesof(/obj/item/battle_monsters/wrapped)) - new W(L) - if(prob(15)) - W = pick(subtypesof(/obj/item/battle_monsters/wrapped)) - new W(L) - STOCK_ITEM_RARE(rare_clothing, 1) var/list/clothing_picks = list( /obj/item/clothing/under/elyra_holo, @@ -154,4 +147,8 @@ STOCK_ITEM_RARE(rare_clothing, 1) var/obj/item/clothing/C = pick(clothing_picks) new C(L) +STOCK_ITEM_RARE(megacorp_goods, 0.25) + var/obj/item/adv_item = pick(/obj/item/storage/backpack/service, /obj/item/device/advanced_healthanalyzer) + new adv_item(L) + STOCK_ITEM_RARE(nothing, 0) \ No newline at end of file diff --git a/code/modules/client/preference_setup/antagonism/01_candidacy.dm b/code/modules/client/preference_setup/antagonism/01_candidacy.dm index e4eae1f4f28..58d8100e6de 100644 --- a/code/modules/client/preference_setup/antagonism/01_candidacy.dm +++ b/code/modules/client/preference_setup/antagonism/01_candidacy.dm @@ -57,42 +57,10 @@ else dat += "Yes / No
" dat += "" - - var/list/ghost_traps = get_ghost_traps() - for(var/ghost_trap_key in ghost_traps) - var/datum/ghosttrap/ghost_trap = ghost_traps[ghost_trap_key] - if(!ghost_trap.list_as_special_role) - continue - - dat += "[(ghost_trap.ghost_trap_role)]: " - var/ban_state = banned_from_ghost_role(preference_mob(), ghost_trap) - if(ban_state == AGEBAN) - var/age_to_beat = 0 - for (var/A in ghost_trap.ban_checks) - age_to_beat = player_old_enough_for_role(preference_mob(), A) - if (age_to_beat) - break - dat += "\[IN [age_to_beat] DAYS\]
" - else if (ban_state == RANBAN) - dat += "\[BANNED\]
" - else if(ghost_trap.pref_check in pref.be_special_role) - dat += "Yes / No
" - else - dat += "Yes / No
" - dat += "" dat += "" . = dat.Join() -/datum/category_item/player_setup_item/proc/banned_from_ghost_role(var/mob, var/datum/ghosttrap/ghost_trap) - for(var/ban_type in ghost_trap.ban_checks) - . = jobban_isbanned(mob, ban_type) - if(. == "AGE WHITELISTED") - return AGEBAN - else if (.) - return RANBAN - return NOBAN - /datum/category_item/player_setup_item/antagonism/candidacy/OnTopic(var/href,var/list/href_list, var/mob/user) if(href_list["add_special"]) if(!(href_list["add_special"] in valid_special_roles())) @@ -112,13 +80,6 @@ var/datum/antagonist/antag = all_antag_types[antag_type] private_valid_special_roles += antag.role_type - var/list/ghost_traps = get_ghost_traps() - for(var/ghost_trap_key in ghost_traps) - var/datum/ghosttrap/ghost_trap = ghost_traps[ghost_trap_key] - if(!ghost_trap.list_as_special_role) - continue - private_valid_special_roles += ghost_trap.pref_check - return private_valid_special_roles #undef AGEBAN diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index 8798e7c6c44..2b5767e3397 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -148,7 +148,7 @@ Reagents adjustment . = valid_reagents[pick(valid_reagents)] else . = valid_reagents[metadata] - I.reagents.add_reagent(., I.reagents.get_free_space()) + I.reagents.add_reagent(., REAGENTS_FREE_SPACE(I.reagents)) /* Custom Name @@ -205,4 +205,4 @@ var/datum/gear_tweak/custom_desc/gear_tweak_free_desc = new() /datum/gear_tweak/custom_desc/tweak_item(var/obj/item/I, var/metadata) if(!metadata) return I.desc - I.desc = metadata \ No newline at end of file + I.desc = metadata diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm index 40459ee626d..57cebe09e31 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm @@ -116,8 +116,9 @@ /datum/gear/accessory/webbing display_name = "webbing, simple" - path = /obj/item/clothing/accessory/storage/webbing + path = /obj/item/clothing/accessory/storage/webbing/grayscale cost = 2 + flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION /datum/gear/accessory/brown_pouches display_name = "drop pouches, engineering" diff --git a/code/modules/client/preference_setup/loadout/loadout_head.dm b/code/modules/client/preference_setup/loadout/loadout_head.dm index f31ec72ddcf..f1bd3d18120 100644 --- a/code/modules/client/preference_setup/loadout/loadout_head.dm +++ b/code/modules/client/preference_setup/loadout/loadout_head.dm @@ -21,6 +21,7 @@ bandanas["bandana, red"] = /obj/item/clothing/head/bandana/red bandanas["bandana, captain"] = /obj/item/clothing/head/bandana/captain bandanas["bandana, security"] = /obj/item/clothing/head/bandana/security + bandanas["bandana, security (corporate)"] = /obj/item/clothing/head/bandana/security/corp bandanas["bandana, science"] = /obj/item/clothing/head/bandana/science bandanas["bandana, medical"] = /obj/item/clothing/head/bandana/medical bandanas["bandana, engineering"] = /obj/item/clothing/head/bandana/engineering @@ -51,6 +52,7 @@ softcaps["softcap, red"] = /obj/item/clothing/head/softcap/red softcaps["softcap, captain"] = /obj/item/clothing/head/softcap/captain softcaps["softcap, security"] = /obj/item/clothing/head/softcap/security + softcaps["softcap, security (corporate)"] = /obj/item/clothing/head/softcap/security/corp softcaps["softcap, science"] = /obj/item/clothing/head/softcap/science softcaps["softcap, medical"] = /obj/item/clothing/head/softcap/medical softcaps["softcap, engineering"] = /obj/item/clothing/head/softcap/engineering @@ -80,6 +82,7 @@ berets["beret, red"] = /obj/item/clothing/head/beret/red berets["beret, captain"] = /obj/item/clothing/head/beret/captain berets["beret, security"] = /obj/item/clothing/head/beret/security + berets["beret, security (corporate)"] = /obj/item/clothing/head/beret/security/corp berets["beret, science"] = /obj/item/clothing/head/beret/science berets["beret, medical"] = /obj/item/clothing/head/beret/medical berets["beret, engineering"] = /obj/item/clothing/head/beret/engineering @@ -105,10 +108,10 @@ /datum/gear/head/warden/New() ..() var/wardenhead = list() - wardenhead["blue warden hat"] = /obj/item/clothing/head/warden - wardenhead["black warden hat"] = /obj/item/clothing/head/warden/alt - wardenhead["commissar's cap"] = /obj/item/clothing/head/warden/commissar - wardenhead["warden beret"] = /obj/item/clothing/head/beret/security/warden + wardenhead["warden hat, standard"] = /obj/item/clothing/head/warden + wardenhead["warden hat, corporate"] = /obj/item/clothing/head/warden/corp + wardenhead["warden beret, standard"] = /obj/item/clothing/head/beret/security/warden + wardenhead["warden beret, corporate"] = /obj/item/clothing/head/beret/security/warden/corp gear_tweaks += new/datum/gear_tweak/path(wardenhead) /datum/gear/head/hos @@ -120,22 +123,12 @@ /datum/gear/head/hos/New() ..() var/hoshead = list() - hoshead["blue commander beret"] = /obj/item/clothing/head/beret/security/hos - hoshead["black commander beret"] = /obj/item/clothing/head/beret/security/hos/alt - hoshead["blue commander hat"] = /obj/item/clothing/head/hos/cap - hoshead["black commander hat"] = /obj/item/clothing/head/hos/cap/alt + hoshead["head of security hat, standard"] = /obj/item/clothing/head/hos + hoshead["head of security hat, corporate"] = /obj/item/clothing/head/hos/corp + hoshead["head of security beret, standard"] = /obj/item/clothing/head/beret/security/hos + hoshead["head of security beret, corporate"] = /obj/item/clothing/head/beret/security/hos/corp gear_tweaks += new/datum/gear_tweak/path(hoshead) -/datum/gear/head/corp - display_name = "cap, corporate (security)" - path = /obj/item/clothing/head/softcap/security/corp - allowed_roles = list("Security Officer","Head of Security", "Warden", "Security Cadet", "Detective", "Forensic Technician",) - -/datum/gear/head/sec - display_name = "cap, security" - path = /obj/item/clothing/head/softcap/security - allowed_roles = list("Security Officer", "Head of Security", "Warden", "Security Cadet", "Detective", "Forensic Technician",) - /datum/gear/head/hardhat display_name = "hardhat selection" path = /obj/item/clothing/head/hardhat diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index 1cca87f102e..51a5329bd59 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -201,21 +201,58 @@ wintercoat["winter coat, mining"] = /obj/item/clothing/suit/storage/hooded/wintercoat/miner gear_tweaks += new/datum/gear_tweak/path(wintercoat) -/datum/gear/suit/secjacket - display_name = "navy security jacket (Security Officer)" - path = /obj/item/clothing/suit/security/navyofficer +/datum/gear/suit/secjacketofficer + display_name = "security jacket selection (Security Officer)" + path = /obj/item/clothing/suit/security/officer allowed_roles = list("Security Officer", "Head of Security", "Warden") +/datum/gear/suit/secjacketofficer/New() + ..() + var/secjacket = list() + secjacket["security jacket"] = /obj/item/clothing/suit/security/officer + secjacket["security jacket, blue"] = /obj/item/clothing/suit/security/officer/blue + secjacket["security jacket, dark navy"] = /obj/item/clothing/suit/security/officer/dnavy + gear_tweaks += new/datum/gear_tweak/path(secjacket) + /datum/gear/suit/secjacketwarden - display_name = "navy security jacket (Warden)" - path = /obj/item/clothing/suit/security/navywarden + display_name = "security jacket selection (Warden)" + path = /obj/item/clothing/suit/security/warden allowed_roles = list("Head of Security", "Warden") +/datum/gear/suit/secjacketwarden/New() + ..() + var/secjacket = list() + secjacket["security jacket"] = /obj/item/clothing/suit/security/warden + secjacket["security jacket, blue"] = /obj/item/clothing/suit/security/warden/blue + secjacket["security jacket, dark navy"] = /obj/item/clothing/suit/security/warden/dnavy + gear_tweaks += new/datum/gear_tweak/path(secjacket) + /datum/gear/suit/secjackethos - display_name = "navy security jacket (Head of Security)" - path = /obj/item/clothing/suit/security/navyhos + display_name = "security jacket selection (Head of Security)" + path = /obj/item/clothing/suit/security/hos allowed_roles = list("Head of Security") +/datum/gear/suit/secjackethos/New() + ..() + var/secjacket = list() + secjacket["security jacket"] = /obj/item/clothing/suit/security/hos + secjacket["security jacket, blue"] = /obj/item/clothing/suit/security/hos/blue + secjacket["security jacket, dark navy"] = /obj/item/clothing/suit/security/hos/dnavy + gear_tweaks += new/datum/gear_tweak/path(secjacket) + +/datum/gear/suit/secjacketforensictech + display_name = "security jacket selection (Forensic Technician)" + path = /obj/item/clothing/suit/storage/toggle/forensics + allowed_roles = list("Forensic Technician") + +/datum/gear/suit/secjacketforensictech/New() + ..() + var/secjacket = list() + secjacket["security jacket"] = /obj/item/clothing/suit/storage/toggle/forensics + secjacket["security jacket, blue"] = /obj/item/clothing/suit/storage/toggle/forensics/blue + secjacket["security jacket, dark navy"] = /obj/item/clothing/suit/storage/toggle/forensics/dnavy + gear_tweaks += new/datum/gear_tweak/path(secjacket) + /datum/gear/suit/dominia_cape display_name = "dominian cape" path = /obj/item/clothing/accessory/poncho/dominia_cape @@ -353,4 +390,4 @@ /datum/gear/suit/gadpathur display_name = "gadpathurian overcoat" path = /obj/item/clothing/suit/storage/gadpathur - flags = GEAR_HAS_DESC_SELECTION \ No newline at end of file + flags = GEAR_HAS_DESC_SELECTION diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm index fa9b198c984..593db51462b 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm @@ -284,7 +284,7 @@ var/uniform = list() uniform["warden uniform, standard"] = /obj/item/clothing/under/rank/warden uniform["warden uniform, corporate"] = /obj/item/clothing/under/rank/warden/corp - uniform["warden uniform, dark blue"] = /obj/item/clothing/under/rank/warden/dark_blue + uniform["warden uniform, blue"] = /obj/item/clothing/under/rank/warden/blue gear_tweaks += new/datum/gear_tweak/path(uniform) /datum/gear/uniform/hos @@ -333,4 +333,4 @@ /datum/gear/uniform/gadpathur display_name = "gadpathurian fatigues" path = /obj/item/clothing/under/uniform/gadpathur - flags = GEAR_HAS_DESC_SELECTION \ No newline at end of file + flags = GEAR_HAS_DESC_SELECTION diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno/tajara.dm b/code/modules/client/preference_setup/loadout/loadout_xeno/tajara.dm index 8f67b3c21f0..6570ce0fbce 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno/tajara.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno/tajara.dm @@ -14,8 +14,12 @@ taj_gloves["orange gloves"] = /obj/item/clothing/gloves/orange/tajara taj_gloves["purple gloves"] = /obj/item/clothing/gloves/purple/tajara taj_gloves["brown gloves"] = /obj/item/clothing/gloves/brown/tajara + taj_gloves["light brown gloves"] = /obj/item/clothing/gloves/light_brown/tajara taj_gloves["green gloves"] = /obj/item/clothing/gloves/green/tajara + taj_gloves["grey gloves"] = /obj/item/clothing/gloves/grey/tajara taj_gloves["white gloves"] = /obj/item/clothing/gloves/white/tajara + taj_gloves["rainbow gloves"] = /obj/item/clothing/gloves/rainbow/tajara + taj_gloves["black leather gloves"] = /obj/item/clothing/gloves/black_leather/tajara taj_gloves["machinist gloves"] = /obj/item/clothing/gloves/black/tajara/smithgloves gear_tweaks += new/datum/gear_tweak/path(taj_gloves) diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm b/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm index f32a298b053..c1d0102d225 100644 --- a/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm +++ b/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm @@ -40,8 +40,12 @@ un_gloves["orange gloves"] = /obj/item/clothing/gloves/orange/unathi un_gloves["purple gloves"] = /obj/item/clothing/gloves/purple/unathi un_gloves["brown gloves"] = /obj/item/clothing/gloves/brown/unathi + un_gloves["light brown gloves"] = /obj/item/clothing/gloves/light_brown/unathi un_gloves["green gloves"] = /obj/item/clothing/gloves/green/unathi + un_gloves["grey gloves"] = /obj/item/clothing/gloves/grey/unathi un_gloves["white gloves"] = /obj/item/clothing/gloves/white/unathi + un_gloves["rainbow gloves"] = /obj/item/clothing/gloves/rainbow/unathi + un_gloves["black leather gloves"] = /obj/item/clothing/gloves/black_leather/unathi gear_tweaks += new/datum/gear_tweak/path(un_gloves) /datum/gear/uniform/unathi diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 3e275d60d4e..b8ce8e3e78f 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -136,16 +136,31 @@ desc = "Brown gloves made for Unathi use." species_restricted = list(BODYTYPE_UNATHI) +/obj/item/clothing/gloves/light_brown/unathi + name = "light brown gloves" + desc = "Light brown gloves made for Unathi use." + species_restricted = list(BODYTYPE_UNATHI) + /obj/item/clothing/gloves/green/unathi name = "green gloves" desc = "Green gloves made for Unathi use." species_restricted = list(BODYTYPE_UNATHI) +/obj/item/clothing/gloves/grey/unathi + name = "grey gloves" + desc = "Grey gloves made for Unathi use." + species_restricted = list(BODYTYPE_UNATHI) + /obj/item/clothing/gloves/white/unathi name = "white gloves" desc = "White gloves made for Unathi use." species_restricted = list(BODYTYPE_UNATHI) +/obj/item/clothing/gloves/rainbow/unathi + name = "rainbow gloves" + desc = "Rainbow gloves made for Unathi use." + species_restricted = list(BODYTYPE_UNATHI) + /obj/item/clothing/gloves/evening name = "evening gloves" desc = "A pair of gloves that reach past the elbow." @@ -157,6 +172,11 @@ icon_state = "black_leather" item_state = "black_leather" +/obj/item/clothing/gloves/black_leather/unathi + name = "black leather gloves" + desc = "Black leather gloves made for Unathi use." + species_restricted = list(BODYTYPE_UNATHI) + /obj/item/clothing/gloves/black_leather/colour icon_state = "full_leather_colour" item_state = "full_leather_colour" diff --git a/code/modules/clothing/gloves/xeno/tajara.dm b/code/modules/clothing/gloves/xeno/tajara.dm index 97186c933ab..b5db486f512 100644 --- a/code/modules/clothing/gloves/xeno/tajara.dm +++ b/code/modules/clothing/gloves/xeno/tajara.dm @@ -27,14 +27,30 @@ desc = "Brown gloves made for Tajaran use." species_restricted = list(BODYTYPE_TAJARA) +/obj/item/clothing/gloves/light_brown/tajara + desc = "Light brown gloves made for Tajaran use." + species_restricted = list(BODYTYPE_TAJARA) + /obj/item/clothing/gloves/green/tajara desc = "Green gloves made for Tajaran use." species_restricted = list(BODYTYPE_TAJARA) +/obj/item/clothing/gloves/grey/tajara + desc = "Grey gloves made for Tajaran use." + species_restricted = list(BODYTYPE_TAJARA) + /obj/item/clothing/gloves/white/tajara desc = "White gloves made for Tajaran use." species_restricted = list (BODYTYPE_TAJARA) +/obj/item/clothing/gloves/rainbow/tajara + desc = "Rainbow gloves made for Tajaran use." + species_restricted = list(BODYTYPE_TAJARA) + +/obj/item/clothing/gloves/black_leather/tajara + desc = "Black leather gloves made for Tajaran use." + species_restricted = list(BODYTYPE_TAJARA) + /obj/item/clothing/gloves/black/tajara/smithgloves name = "machinist gloves" desc = "Protective leather gloves worn by Adhomian urban workers." diff --git a/code/modules/clothing/head/bandanas.dm b/code/modules/clothing/head/bandanas.dm index ae62a802af0..322218d3b4f 100644 --- a/code/modules/clothing/head/bandanas.dm +++ b/code/modules/clothing/head/bandanas.dm @@ -82,3 +82,11 @@ desc = "It's a janitor bandana with some fine nanotech lining. For the viscera cleaners of today!" icon_state = "bandana_janitor" item_state = "bandana_janitor" + +// Corporate. + +/obj/item/clothing/head/bandana/security/corp + name = "corporate security bandana" + desc = "It's a security bandana with some fine nanotech lining. Who knew a do-rag could be so oppresive?" + icon_state = "corp" + item_state = "corp" diff --git a/code/modules/clothing/head/berets.dm b/code/modules/clothing/head/berets.dm index 0d492c6c09f..f2d66884833 100644 --- a/code/modules/clothing/head/berets.dm +++ b/code/modules/clothing/head/berets.dm @@ -83,7 +83,7 @@ icon_state = "beret_janitor" item_state = "beret_janitor" -// alt. sec stuff, because security needs berets for every link in the chain of command +// alt. sec stuff, because security needs berets for every link in the chain of command for some reason /obj/item/clothing/head/beret/security/officer name = "officer beret" @@ -92,13 +92,13 @@ item_state = "beret_officer" /obj/item/clothing/head/beret/security/hos - name = "blue commander beret" - desc = "A beret in security navy blue beret with a commander's rank emblem. For heads of security that are more inclined towards style than safety." + name = "commander beret" + desc = "A beret in security navy blue with a commander's rank emblem. For heads of security that are more inclined towards style than safety." icon_state = "beret_hos" item_state = "beret_hos" -/obj/item/clothing/head/beret/security/hos/alt - name = "black commander beret" +/obj/item/clothing/head/beret/security/hos/corp + name = "corporate commander beret" desc = "A beret in corporate black with a commander's rank emblem. For heads of security that are more inclined towards style than safety." icon_state = "corp" item_state = "corp" @@ -109,6 +109,12 @@ icon_state = "beret_warden" item_state = "beret_warden" +/obj/item/clothing/head/beret/security/warden/corp + name = "corporate warden beret" + desc = "A beret in corporate black with a warden's rank emblem. For wardens that are more inclined towards style than safety." + icon_state = "corp" + item_state = "corp" + // Corporate. /obj/item/clothing/head/beret/security/corp diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 0c3547e3d0b..6f99a3faf7a 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -67,28 +67,31 @@ desc = "A grey fedora - either the cornerstone of a detective's style or a poor attempt at looking cool, depending on the person wearing it." /obj/item/clothing/head/warden - name = "blue warden hat" - desc = "A navy blue warden hat. For showing who is in charge of the brig." - icon_state = "wardencap" + name = "warden hat" + desc = "A blue warden hat. For showing who is in charge of the brig." + icon = 'icons/obj/clothing/hats/security.dmi' + icon_state = "warden" + item_state = "warden" flags_inv = HIDEEARS + contained_sprite = TRUE -/obj/item/clothing/head/warden/alt - name = "black warden hat" - desc = "A black warden hat. For showing who is in charge of the brig." - icon_state = "wardencap_alt" +/obj/item/clothing/head/warden/corp + name = "corporate warden hat" + desc = "A black warden parade hat. For showing who is in charge of the brig." + icon_state = "corp" + item_state = "corp" -/obj/item/clothing/head/warden/commissar - name = "commissar's cap" - desc = "A security commissar's cap." - icon_state = "commissarcap" - -/obj/item/clothing/head/hos/cap - name = "blue commander hat" - desc = "The navy blue hat of the Head of Security. For showing the officers who's in charge." - icon_state = "hoscap" +/obj/item/clothing/head/hos + name = "head of security hat" + desc = "The navy blue parade hat of the Head of Security. For showing the officers who's in charge." + icon = 'icons/obj/clothing/hats/security.dmi' + icon_state = "hos" + item_state = "hos" flags_inv = HIDEEARS + contained_sprite = TRUE -/obj/item/clothing/head/hos/cap/alt - name = "black commander hat" - desc = "The black hat of the Head of Security. For showing the officers who's in charge." - icon_state = "hoscap_alt" +/obj/item/clothing/head/hos/corp + name = "corporate head of security hat" + desc = "The black parade hat of the Head of Security. For showing the officers who's in charge." + icon_state = "corp" + item_state = "corp" diff --git a/code/modules/clothing/rings/rings.dm b/code/modules/clothing/rings/rings.dm index 854a38623d9..e909a4797c7 100644 --- a/code/modules/clothing/rings/rings.dm +++ b/code/modules/clothing/rings/rings.dm @@ -40,10 +40,7 @@ desc = "A ring made from what appears to be silver." icon_state = "material" origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - -/obj/item/clothing/ring/reagent/sleepy/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/polysomnine, 15) + reagents_to_add = list(/decl/reagent/polysomnine = 15) //Seals and Signet Rings @@ -69,4 +66,4 @@ /obj/item/clothing/ring/seal/signet/proc/change_name(var/signet_name = "Unknown") name = "[signet_name]'s signet ring" - desc = "A signet ring belonging to [signet_name], for when you're too sophisticated to sign letters." \ No newline at end of file + desc = "A signet ring belonging to [signet_name], for when you're too sophisticated to sign letters." diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm index f92b5ba500c..c16b6dd6dda 100644 --- a/code/modules/clothing/spacesuits/rig/modules/utility.dm +++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm @@ -170,15 +170,15 @@ interface_desc = "Dispenses loaded chemicals directly into the wearer's bloodstream." charges = list( - list("tricordrazine", "tricordrazine", /datum/reagent/tricordrazine, 80), - list("mortaphenyl", "mortaphenyl", /datum/reagent/mortaphenyl, 80), - list("dexalin plus", "dexalinp", /datum/reagent/dexalin/plus, 80), - list("antibiotics", "thetamycin", /datum/reagent/thetamycin, 80), - list("antitoxins", "dylovene", /datum/reagent/dylovene, 80), - list("nutrients", "glucose", /datum/reagent/nutriment/glucose, 80), - list("hyronalin", "hyronalin", /datum/reagent/hyronalin, 80), - list("synaptizine", "synaptizine", /datum/reagent/synaptizine, 80), - list("radium", "radium", /datum/reagent/radium, 80) + list("tricordrazine", "tricordrazine", /decl/reagent/tricordrazine, 80), + list("mortaphenyl", "mortaphenyl", /decl/reagent/mortaphenyl, 80), + list("dexalin plus", "dexalinp", /decl/reagent/dexalin/plus, 80), + list("antibiotics", "thetamycin", /decl/reagent/thetamycin, 80), + list("antitoxins", "dylovene", /decl/reagent/dylovene, 80), + list("nutrients", "glucose", /decl/reagent/nutriment/glucose, 80), + list("hyronalin", "hyronalin", /decl/reagent/hyronalin, 80), + list("synaptizine", "synaptizine", /decl/reagent/synaptizine, 80), + list("radium", "radium", /decl/reagent/radium, 80) ) var/max_reagent_volume = 80 //Used when refilling. @@ -190,15 +190,15 @@ //just over a syringe worth of each. Want more? Go refill. Gives the ninja another reason to have to show their face. charges = list( - list("tricordrazine", "tricordrazine", /datum/reagent/tricordrazine, 20), - list("mortaphenyl", "mortaphenyl", /datum/reagent/mortaphenyl, 20), - list("dexalin plus", "dexalinp", /datum/reagent/dexalin/plus, 20), - list("antibiotics", "thetamycin", /datum/reagent/thetamycin, 20), - list("antitoxins", "dylovene", /datum/reagent/dylovene, 20), - list("nutrients", "glucose", /datum/reagent/nutriment/glucose, 80), - list("hyronalin", "hyronalin", /datum/reagent/hyronalin, 20), - list("synaptizine", "synaptizine", /datum/reagent/synaptizine, 20), - list("radium", "radium", /datum/reagent/radium, 20) + list("tricordrazine", "tricordrazine", /decl/reagent/tricordrazine, 20), + list("mortaphenyl", "mortaphenyl", /decl/reagent/mortaphenyl, 20), + list("dexalin plus", "dexalinp", /decl/reagent/dexalin/plus, 20), + list("antibiotics", "thetamycin", /decl/reagent/thetamycin, 20), + list("antitoxins", "dylovene", /decl/reagent/dylovene, 20), + list("nutrients", "glucose", /decl/reagent/nutriment/glucose, 80), + list("hyronalin", "hyronalin", /decl/reagent/hyronalin, 20), + list("synaptizine", "synaptizine", /decl/reagent/synaptizine, 20), + list("radium", "radium", /decl/reagent/radium, 20) ) category = MODULE_UTILITY @@ -213,18 +213,18 @@ // Magical chemical filtration system, do not question it. var/total_transferred = 0 - for(var/datum/reagent/R in input_item.reagents.reagent_list) + for(var/_R in input_item.reagents.reagent_volumes) for(var/chargetype in charges) var/datum/rig_charge/charge = charges[chargetype] - if(charge.product_type == R.type) + if(charge.product_type == _R) - var/chems_to_transfer = R.volume + var/chems_to_transfer = input_item.reagents.reagent_volumes[_R] if((charge.charges + chems_to_transfer) > max_reagent_volume) chems_to_transfer = max_reagent_volume - charge.charges charge.charges += chems_to_transfer - input_item.reagents.remove_reagent(R.type, chems_to_transfer) + input_item.reagents.remove_reagent(_R, chems_to_transfer) total_transferred += chems_to_transfer break @@ -288,10 +288,10 @@ desc = "A complex web of tubing and needles suitable for hardsuit use." charges = list( - list("synaptizine", "synaptizine", /datum/reagent/synaptizine, 30), - list("hyperzine", "hyperzine", /datum/reagent/hyperzine, 30), - list("oxycomorphine", "oxycomorphine", /datum/reagent/oxycomorphine, 30), - list("nutrients", "glucose", /datum/reagent/nutriment/glucose, 80) + list("synaptizine", "synaptizine", /decl/reagent/synaptizine, 30), + list("hyperzine", "hyperzine", /decl/reagent/hyperzine, 30), + list("oxycomorphine", "oxycomorphine", /decl/reagent/oxycomorphine, 30), + list("nutrients", "glucose", /decl/reagent/nutriment/glucose, 80) ) interface_name = "combat chem dispenser" @@ -304,11 +304,11 @@ desc = "A complex web of tubing and needles suitable for vaurcan hardsuit use." charges = list( - list("synaptizine", "synaptizine", /datum/reagent/synaptizine, 30), - list("hyperzine", "hyperzine", /datum/reagent/hyperzine, 30), - list("oxycomorphine", "oxycomorphine", /datum/reagent/oxycomorphine, 30), - list("phoron", "phoron", /datum/reagent/toxin/phoron, 60), - list("kois", "k'ois paste", /datum/reagent/kois, 80) + list("synaptizine", "synaptizine", /decl/reagent/synaptizine, 30), + list("hyperzine", "hyperzine", /decl/reagent/hyperzine, 30), + list("oxycomorphine", "oxycomorphine", /decl/reagent/oxycomorphine, 30), + list("phoron", "phoron", /decl/reagent/toxin/phoron, 60), + list("kois", "k'ois paste", /decl/reagent/kois, 80) ) interface_name = "vaurca combat chem dispenser" @@ -321,8 +321,8 @@ desc = "A complex web of tubing and needles suitable for hardsuit use." charges = list( - list("dexalin", "dexalin", /datum/reagent/dexalin, 5), - list("inaprovaline", "inaprovaline", /datum/reagent/inaprovaline, 5) + list("dexalin", "dexalin", /decl/reagent/dexalin, 5), + list("inaprovaline", "inaprovaline", /decl/reagent/inaprovaline, 5) ) interface_name = "chem dispenser" @@ -346,10 +346,10 @@ /obj/item/rig_module/chem_dispenser/injector/paramedic //downgraded version charges = list( - list("tricordrazine", "tricordrazine", /datum/reagent/tricordrazine, 40), - list("mortaphenyl", "mortaphenyl", /datum/reagent/mortaphenyl, 40), - list("dexalin", "dexalin", /datum/reagent/dexalin, 40), - list("inaprovaline", "inaprovaline", /datum/reagent/inaprovaline, 40) + list("tricordrazine", "tricordrazine", /decl/reagent/tricordrazine, 40), + list("mortaphenyl", "mortaphenyl", /decl/reagent/mortaphenyl, 40), + list("dexalin", "dexalin", /decl/reagent/dexalin, 40), + list("inaprovaline", "inaprovaline", /decl/reagent/inaprovaline, 40) ) /obj/item/rig_module/voice diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 8a109443abe..6b4c2de26ee 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -65,41 +65,12 @@ blood_overlay_type = "armor" armor = list(melee = 50, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) -/obj/item/clothing/suit/armor/vest/security - name = "security armor" - desc = "An armored vest that protects against some damage. This one has a corporate badge." - icon_state = "armorsec" - item_state = "armor" - -/obj/item/clothing/suit/armor/vest/warden - name = "warden's jacket" - desc = "An armored jacket with silver rank pips and livery." - icon_state = "warden_jacket" - item_state = "warden_jacket" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS - pocket_slots = 4//Jackets have more slots - -/obj/item/clothing/suit/armor/vest/warden/commissar - name = "commissar's jacket" - desc = "An tasteful dark blue jacket with silver and white highlights. Has hard-plate inserts for armor." - icon_state = "commissar_warden" - item_state = "commissar_warden" - /obj/item/clothing/suit/armor/vest/fib name = "\improper FIB armored vest" desc = "An armored vest used by Federal Investigations Bureau agents during operations." icon_state = "fib_armor" item_state = "fib_armor" -/obj/item/clothing/suit/armor/hos - name = "head of security's jacket" - desc = "An armored jacket with golden rank pips and livery." - icon_state = "hos" - item_state = "hos" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS - armor = list(melee = 65, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) - pocket_slots = 4//More slots because coat - /obj/item/clothing/suit/storage/toggle/armor/hos name = "armored trenchcoat" desc = "A trenchcoat lined with a protective alloy and some slick leather." @@ -194,15 +165,6 @@ body_parts_covered = UPPER_TORSO|ARMS pocket_slots = 4//coat, so more slots -/obj/item/clothing/suit/armor/det_suit - name = "armor" - desc = "An armored vest with a detective's badge on it." - icon_state = "detective-armor" - item_state = "armor" - blood_overlay_type = "armor" - body_parts_covered = UPPER_TORSO|LOWER_TORSO - armor = list(melee = 50, bullet = 15, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0) - //Reactive armor //When the wearer gets hit, this armor will teleport the user a short distance away (to safety or to more danger, no one knows. That's the fun of it!) /obj/item/clothing/suit/armor/reactive @@ -391,19 +353,19 @@ /obj/item/clothing/suit/storage/vest/detective name = "detective armor vest" - desc = "A simple kevlar plate carrier in a vintage brown, it has a detective's badge clipped to the chest." + desc = "A simple kevlar plate carrier belonging to Nanotrasen. This one has a detective's badge clipped to the chest." icon_state = "detectivevest_nobadge" item_state = "detectivevest_nobadge" icon_badge = "detectivevest_badge" icon_nobadge = "detectivevest_nobadge" -/obj/item/clothing/suit/storage/vest/csi +/obj/item/clothing/suit/storage/vest/ft name = "forensic technician armor vest" desc = "A simple kevlar plate carrier belonging to Nanotrasen. This one has a forensic technician's badge clipped to the chest." - icon_state = "csivest_nobadge" - item_state = "csivest_nobadge" - icon_badge = "csivest_badge" - icon_nobadge = "csivest_nobadge" + icon_state = "forensictech_nobadge" + item_state = "forensictech_nobadge" + icon_badge = "forensictech_badge" + icon_nobadge = "forensictech_nobadge" /obj/item/clothing/suit/storage/hazardvest/cadet name = "cadet hazard vest" diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index a6cc8fad029..c6153ea2f33 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -81,73 +81,90 @@ obj/item/clothing/suit/apron/overalls/blue body_parts_covered = 0 //Security -/obj/item/clothing/suit/security/navyofficer + +/obj/item/clothing/suit/security/officer name = "security officer's jacket" desc = "This jacket is for those special occasions when a security officer actually feels safe." + icon_state = "officerjacket" + item_state = "officerjacket" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + +/obj/item/clothing/suit/security/officer/blue icon_state = "officerbluejacket" item_state = "officerbluejacket" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS -/obj/item/clothing/suit/security/navywarden +/obj/item/clothing/suit/security/officer/dnavy + icon_state = "officerdnavyjacket" + item_state = "officerdnavyjacket" + +/obj/item/clothing/suit/security/warden name = "warden's jacket" desc = "Perfectly suited for the warden that wants to leave an impression of style on those who visit the brig." - icon_state = "wardenbluejacket" - item_state = "wardenbluejacket" + icon_state = "wardenjacket" + item_state = "wardenjacket" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS -/obj/item/clothing/suit/security/navyhos +/obj/item/clothing/suit/security/warden/blue + icon_state = "wardenbluejacket" + item_state = "wardenbluejacket" + +/obj/item/clothing/suit/security/warden/dnavy + icon_state = "wardendnavyjacket" + item_state = "wardendnavyjacket" + +/obj/item/clothing/suit/security/hos name = "head of security's jacket" desc = "This piece of clothing was specifically designed for asserting superior authority." + icon_state = "hosjacket" + item_state = "hosjacket" + body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + +/obj/item/clothing/suit/security/hos/blue icon_state = "hosbluejacket" item_state = "hosbluejacket" - body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS + +/obj/item/clothing/suit/security/hos/dnavy + icon_state = "hosdnavyjacket" + item_state = "hosdnavyjacket" //Detective /obj/item/clothing/suit/storage/det_jacket name = "detective's jacket" - desc = "Stylish yet comfortable professional jacket manufactured by CL corporation for NT detectives. Unique fiber structure will offer moderate protection from various hazards investigators may encounter in the line of duty." + desc = "Stylish yet comfortable professional jacket manufactured by CL corporation for NT detectives." icon_state = "det_jacket" item_state = "det_jacket" blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|ARMS allowed = list(/obj/item/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/gun/energy,/obj/item/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/box/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/device/taperecorder) - armor = list(melee = 50, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) - siemens_coefficient = 0.7 /obj/item/clothing/suit/storage/toggle/det_trench name = "brown trenchcoat" - desc = "A rugged canvas trenchcoat, designed and created by TX Fabrication Corp. The coat is externally impact resistant - perfect for your next act of autodefenestration!" + desc = "A rugged canvas trenchcoat, designed and created by TX Fabrication Corp. Perfect for your next act of autodefenestration!" icon_state = "detective" item_state = "detective" blood_overlay_type = "coat" body_parts_covered = UPPER_TORSO|ARMS - allowed = list(/obj/item/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/gun/energy,/obj/item/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/box/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/device/taperecorder) - armor = list(melee = 50, bullet = 10, laser = 25, energy = 10, bomb = 0, bio = 0, rad = 0) - siemens_coefficient = 0.7 - + allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/device/flashlight,/obj/item/gun/energy,/obj/item/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/storage/box/fancy/cigarettes,/obj/item/flame/lighter,/obj/item/device/taperecorder) /obj/item/clothing/suit/storage/toggle/det_trench/black name = "black trenchcoat" icon_state = "detective2" //Forensics -/obj/item/clothing/suit/storage/forensics - name = "jacket" - desc = "A forensics technician jacket." - item_state = "det_suit" +/obj/item/clothing/suit/storage/toggle/forensics + name = "forensic technician's jacket" + desc = "A jacket for the slick, on the beat sleuth." + icon_state = "forensics" + item_state = "forensics" body_parts_covered = UPPER_TORSO|ARMS - allowed = list(/obj/item/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/gun/energy,/obj/item/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/handcuffs,/obj/item/device/taperecorder) - armor = list(melee = 10, bullet = 10, laser = 15, energy = 10, bomb = 0, bio = 0, rad = 0) -/obj/item/clothing/suit/storage/forensics/red - name = "red jacket" - desc = "A red forensics technician jacket." - icon_state = "forensics_red" +/obj/item/clothing/suit/storage/toggle/forensics/blue + icon_state = "forensicsblue" + item_state = "forensicsblue" -/obj/item/clothing/suit/storage/forensics/blue - name = "blue jacket" - desc = "A blue forensics technician jacket." - icon_state = "forensics_blue" +/obj/item/clothing/suit/storage/toggle/forensics/dnavy + icon_state = "forensicsdnavy" + item_state = "forensicsdnavy" //Engineering /obj/item/clothing/suit/storage/hazardvest diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index bde567292a4..e2663fe8625 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -57,13 +57,6 @@ fire_resist = T0C+5200 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT -/obj/item/clothing/suit/johnny_coat - name = "johnny~~ coat" - desc = "Johnny~~" - icon_state = "johnny" - item_state = "johnny" - - /obj/item/clothing/suit/justice name = "justice suit" desc = "This pretty much looks ridiculous." @@ -509,7 +502,7 @@ icon_state = "serv_dep_jacket" item_state = "serv_dep_jacket" -/obj/item/clothing/suit/storage/fib +/obj/item/clothing/suit/storage/toggle/fib name = "\improper FIB agent jacket" desc = "A jacket used by Federal Investigations Bureau agents while on the field." icon_state = "fib_jacket" diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index f842b8d04f7..7e8e7cf2e20 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -49,6 +49,7 @@ mob_overlay = image("icon" = INV_ACCESSORIES_DEF_ICON, "icon_state" = "[tmp_icon_state]") if(color) mob_overlay.color = color + mob_overlay.appearance_flags = RESET_ALPHA return mob_overlay //when user attached an accessory to S diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/under/accessories/storage.dm index baaa2033ef8..b4a4c51280e 100644 --- a/code/modules/clothing/under/accessories/storage.dm +++ b/code/modules/clothing/under/accessories/storage.dm @@ -49,6 +49,9 @@ desc = "Sturdy mess of synthcotton belts and buckles, ready to share your burden." icon_state = "webbing" +/obj/item/clothing/accessory/storage/webbing/grayscale + icon_state = "webbing_g" + /obj/item/clothing/accessory/storage/black_vest name = "black webbing vest" desc = "Robust black synthcotton vest with lots of pockets to hold whatever you need, but cannot hold in hands." diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 144dc6d3fb3..391058b195f 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -45,9 +45,9 @@ icon_state = "warden_corporate" worn_state = "warden_corporate" -/obj/item/clothing/under/rank/warden/dark_blue - icon_state = "warden_darkblue" - worn_state = "warden_darkblue" +/obj/item/clothing/under/rank/warden/blue + icon_state = "warden_blue" + worn_state = "warden_blue" /obj/item/clothing/under/rank/warden/remote name = "remote warden's uniform" diff --git a/code/modules/cooking/machinery/cooking_machines/_appliance.dm b/code/modules/cooking/machinery/cooking_machines/_appliance.dm index ecdd79ba88e..91c83e0e5f0 100644 --- a/code/modules/cooking/machinery/cooking_machines/_appliance.dm +++ b/code/modules/cooking/machinery/cooking_machines/_appliance.dm @@ -253,17 +253,17 @@ for (var/obj/item/J in CI.container) oilwork(J, CI) - for (var/r in CI.container.reagents.reagent_list) - var/datum/reagent/R = r - if (istype(R, /datum/reagent/nutriment)) - CI.max_cookwork += R.volume *2//Added reagents contribute less than those in food items due to granular form + for (var/_R in CI.container.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + if (istype(R, /decl/reagent/nutriment)) + CI.max_cookwork += CI.container.reagents.reagent_volumes[_R] *2//Added reagents contribute less than those in food items due to granular form //Nonfat reagents will soak oil - if (!istype(R, /datum/reagent/nutriment/triglyceride)) - CI.max_oil += R.volume * 0.25 + if (!istype(R, /decl/reagent/nutriment/triglyceride)) + CI.max_oil += CI.container.reagents.reagent_volumes[_R] * 0.25 else - CI.max_cookwork += R.volume - CI.max_oil += R.volume * 0.10 + CI.max_cookwork += CI.container.reagents.reagent_volumes[_R] + CI.max_oil += CI.container.reagents.reagent_volumes[_R]* 0.10 //Rescaling cooking work to avoid insanely long times for large things var/brackets = CI.max_cookwork / 4 @@ -274,17 +274,17 @@ var/obj/item/reagent_containers/food/snacks/S = I var/work = 0 if (istype(S) && S.reagents) - for (var/r in S.reagents.reagent_list) - var/datum/reagent/R = r - if (istype(R, /datum/reagent/nutriment)) - work += R.volume *3//Core nutrients contribute much more than peripheral chemicals + for (var/_R in S.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + if (istype(R, /decl/reagent/nutriment)) + work += S.reagents.reagent_volumes[_R] *3//Core nutrients contribute much more than peripheral chemicals //Nonfat reagents will soak oil - if (!istype(R, /datum/reagent/nutriment/triglyceride)) - CI.max_oil += R.volume * 0.35 + if (!istype(R, /decl/reagent/nutriment/triglyceride)) + CI.max_oil += S.reagents.reagent_volumes[_R] * 0.35 else - work += R.volume - CI.max_oil += R.volume * 0.15 + work += S.reagents.reagent_volumes[_R] + CI.max_oil += S.reagents.reagent_volumes[_R] * 0.15 else if(istype(I, /obj/item/holder)) @@ -575,13 +575,13 @@ result.kitchen_tag = SA.kitchen_tag if (SA.meat_amount) reagent_amount = SA.meat_amount*9 // at a rate of 9 protein per meat - var/datum/reagent/digest_product = victim.get_digestion_product() + var/decl/reagent/digest_product = victim.get_digestion_product() var/list/data var/meat_name = result.kitchen_tag || victim.name if(ishuman(victim)) var/mob/living/carbon/human/CH = victim meat_name = CH.species?.name || meat_name - if(istype(digest_product, /datum/reagent/nutriment/protein)) + if(istype(digest_product, /decl/reagent/nutriment/protein)) data = list("[meat_name] meat" = reagent_amount) result.reagents.add_reagent(victim.get_digestion_product(), reagent_amount, data) diff --git a/code/modules/cooking/machinery/cooking_machines/_cooker.dm b/code/modules/cooking/machinery/cooking_machines/_cooker.dm index 69978cb362f..f5b16c61753 100644 --- a/code/modules/cooking/machinery/cooking_machines/_cooker.dm +++ b/code/modules/cooking/machinery/cooking_machines/_cooker.dm @@ -138,7 +138,7 @@ update_cooking_power() // update! for(var/cooking_obj in cooking_objs) var/datum/cooking_item/CI = cooking_obj - if(!CI.container?.reagents) + if(isemptylist(CI.container?.reagents.reagent_data)) continue CI.container.reagents.set_temperature(min(temperature, CI.container.reagents.get_temperature() + 10*SIGN(temperature - CI.container.reagents.get_temperature()))) // max of 5C per second return ..() diff --git a/code/modules/cooking/machinery/cooking_machines/container.dm b/code/modules/cooking/machinery/cooking_machines/container.dm index 18756520b65..158946311e2 100644 --- a/code/modules/cooking/machinery/cooking_machines/container.dm +++ b/code/modules/cooking/machinery/cooking_machines/container.dm @@ -118,8 +118,8 @@ else if (LAZYLEN(contents)) var/obj/O = locate() in contents return . + O.name //Just append the name of the first object - else if (reagents && reagents.total_volume > 0) - var/datum/reagent/R = reagents.get_master_reagent() + else if (reagents.total_volume > 0) + var/decl/reagent/R = reagents.get_primary_reagent_decl() return . + R.name//Append name of most voluminous reagent return . + "empty" diff --git a/code/modules/cooking/machinery/cooking_machines/fryer.dm b/code/modules/cooking/machinery/cooking_machines/fryer.dm index 0afd850add6..25a4f7695ff 100644 --- a/code/modules/cooking/machinery/cooking_machines/fryer.dm +++ b/code/modules/cooking/machinery/cooking_machines/fryer.dm @@ -40,7 +40,7 @@ if (prob(20)) //Sometimes the fryer will start with much less than full oil, significantly impacting efficiency until filled variance = rand()*0.5 - oil.add_reagent(/datum/reagent/nutriment/triglyceride/oil/corn, optimal_oil*(1 - variance)) + oil.add_reagent(/decl/reagent/nutriment/triglyceride/oil/corn, optimal_oil*(1 - variance)) fry_loop = new(list(src), FALSE) /obj/machinery/appliance/cooker/fryer/heat_up() @@ -57,9 +57,9 @@ ..()//In addition to parent temperature calculation //Fryer efficiency also drops when oil levels arent optimal var/oil_level = 0 - var/datum/reagent/nutriment/triglyceride/oil/OL = oil.get_master_reagent() + var/decl/reagent/nutriment/triglyceride/oil/OL = oil.get_primary_reagent_decl() if (OL && istype(OL)) - oil_level = OL.volume + oil_level = oil.reagent_volumes[OL.type] var/oil_efficiency = 0 if (oil_level) @@ -97,18 +97,19 @@ var/total_oil = 0 var/total_our_oil = 0 var/total_removed = 0 - var/datum/reagent/our_oil = oil.get_master_reagent() + var/decl/reagent/our_oil = oil.get_primary_reagent_decl() for (var/obj/item/I in CI.container) if (I.reagents && I.reagents.total_volume) - for (var/datum/reagent/R in I.reagents.reagent_list) - if (istype(R, /datum/reagent/nutriment/triglyceride/oil)) - total_oil += R.volume + for (var/_R in I.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + if (istype(R, /decl/reagent/nutriment/triglyceride/oil)) + total_oil += I.reagents.reagent_volumes[_R] if (R.type != our_oil.type) - total_removed += R.volume - I.reagents.remove_reagent(R.type, R.volume) + total_removed += I.reagents.reagent_volumes[_R] + I.reagents.remove_reagent(_R, I.reagents.reagent_volumes[_R]) else - total_our_oil += R.volume + total_our_oil += I.reagents.reagent_volumes[_R] if (total_removed > 0 || total_oil != CI.max_oil) total_oil = min(total_oil, CI.max_oil) @@ -125,10 +126,9 @@ for (var/thing in CI.container) var/obj/item/I = thing if (I.reagents && I.reagents.total_volume) - for (var/reagent in I.reagents.reagent_list) - var/datum/reagent/R = reagent - if (istype(R, /datum/reagent/nutriment/triglyceride/oil) && R.type == our_oil.type) - I.reagents.remove_reagent(R.type, R.volume*portion) + for (var/_R in I.reagents.reagent_volumes) + if (_R == our_oil.type) + I.reagents.remove_reagent(_R, I.reagents.reagent_volumes[_R]*portion) I.reagents.set_temperature(T0C + 40 + rand(-5, 5)) // warm, but not hot; avoiding aftereffects of the hot oil /obj/machinery/appliance/cooker/fryer/cook_mob(var/mob/living/victim, var/mob/user) @@ -149,8 +149,9 @@ var/damage = rand(7,13) //Though this damage seems reduced, some hot oil is transferred to the victim and will burn them for a while after - var/datum/reagent/nutriment/triglyceride/oil/OL = oil.get_master_reagent() - damage *= OL.heatdamage(victim) + var/decl/reagent/nutriment/triglyceride/oil/OL = oil.get_primary_reagent_decl() + if(istype(OL)) + damage *= OL.heatdamage(victim, oil) var/obj/item/organ/external/E var/nopain @@ -204,13 +205,13 @@ //That would really require coding some sort of filter or better replacement mechanism first //So for now, restrict to oil only var/amount = 0 - for (var/reagent in I.reagents.reagent_list) - var/datum/reagent/R = reagent - if (istype(R, /datum/reagent/nutriment/triglyceride/oil)) - var/delta = oil.get_free_space() - delta = min(delta, R.volume) - oil.add_reagent(R.type, delta) - I.reagents.remove_reagent(R.type, delta) + for (var/_R in I.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + if (istype(R, /decl/reagent/nutriment/triglyceride/oil)) + var/delta = REAGENTS_FREE_SPACE(oil) + delta = min(delta, I.reagents.reagent_volumes[_R]) + oil.add_reagent(_R, delta) + I.reagents.remove_reagent(_R, delta) amount += delta if (amount > 0) user.visible_message("[user] pours some oil into [src].", SPAN_NOTICE("You pour [amount]u of oil into [src]."), SPAN_NOTICE("You hear something viscous being poured into a metal container.")) diff --git a/code/modules/cooking/machinery/gibber.dm b/code/modules/cooking/machinery/gibber.dm index 708c82e2b50..1ec616d6368 100644 --- a/code/modules/cooking/machinery/gibber.dm +++ b/code/modules/cooking/machinery/gibber.dm @@ -200,7 +200,7 @@ for(var/i=1 to slab_count) var/obj/item/reagent_containers/food/snacks/meat/new_meat = new slab_type(src, rand(3,8)) if(istype(new_meat)) - new_meat.reagents.add_reagent(/datum/reagent/nutriment,slab_nutrition) + new_meat.reagents.add_reagent(/decl/reagent/nutriment,slab_nutrition) if(occupant.reagents) occupant.reagents.trans_to_obj(new_meat, round(occupant.reagents.total_volume/slab_count,1)) diff --git a/code/modules/cooking/machinery/icecream.dm b/code/modules/cooking/machinery/icecream.dm index 183490798fe..0375ccf8011 100644 --- a/code/modules/cooking/machinery/icecream.dm +++ b/code/modules/cooking/machinery/icecream.dm @@ -23,30 +23,30 @@ var/dispense_flavour = ICECREAM_VANILLA var/flavour_name = "vanilla" reagents_to_add = list( - /datum/reagent/drink/milk = 5, - /datum/reagent/nutriment/flour = 5, - /datum/reagent/sugar = 5, - /datum/reagent/drink/ice = 5 + /decl/reagent/drink/milk = 5, + /decl/reagent/nutriment/flour = 5, + /decl/reagent/sugar = 5, + /decl/reagent/drink/ice = 5 ) /obj/machinery/icecream_vat/proc/get_ingredient_list(var/type) switch(type) if(ICECREAM_CHOCOLATE) - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice, /datum/reagent/nutriment/coco) + return list(/decl/reagent/drink/milk, /decl/reagent/drink/ice, /decl/reagent/nutriment/coco) if(ICECREAM_STRAWBERRY) - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice, /datum/reagent/drink/berryjuice) + return list(/decl/reagent/drink/milk, /decl/reagent/drink/ice, /decl/reagent/drink/berryjuice) if(ICECREAM_BLUE) - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice, /datum/reagent/alcohol/ethanol/singulo) + return list(/decl/reagent/drink/milk, /decl/reagent/drink/ice, /decl/reagent/alcohol/singulo) if(ICECREAM_CHERRY) - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice, /datum/reagent/nutriment/cherryjelly) + return list(/decl/reagent/drink/milk, /decl/reagent/drink/ice, /decl/reagent/nutriment/cherryjelly) if(ICECREAM_BANANA) - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice, /datum/reagent/drink/banana) + return list(/decl/reagent/drink/milk, /decl/reagent/drink/ice, /decl/reagent/drink/banana) if(CONE_WAFFLE) - return list(/datum/reagent/nutriment/flour, /datum/reagent/sugar) + return list(/decl/reagent/nutriment/flour, /decl/reagent/sugar) if(CONE_CHOC) - return list(/datum/reagent/nutriment/flour, /datum/reagent/sugar, /datum/reagent/nutriment/coco) + return list(/decl/reagent/nutriment/flour, /decl/reagent/sugar, /decl/reagent/nutriment/coco) else - return list(/datum/reagent/drink/milk, /datum/reagent/drink/ice) + return list(/decl/reagent/drink/milk, /decl/reagent/drink/ice) /obj/machinery/icecream_vat/proc/get_flavour_name(var/flavour_type) switch(flavour_type) @@ -92,9 +92,10 @@ dat += "Chocolate cones: Dispense Make x5 [product_types[CONE_CHOC]] cones left. (Ingredients: flour, sugar, coco powder)
" dat += "
" dat += "VAT CONTENT
" - for(var/datum/reagent/R in reagents.reagent_list) - dat += "[R.name]: [R.volume]" - dat += "Purge
" + for(var/_R in reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + dat += "[R.name]: [reagents.reagent_volumes[_R]]" + dat += "Purge
" dat += "Refresh Close" var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src) @@ -112,7 +113,7 @@ // if(beaker) // beaker.reagents.trans_to(I, 10) if(I.reagents.total_volume < 10) - I.reagents.add_reagent(/datum/reagent/sugar, 10 - I.reagents.total_volume, temperature = T0C - 15) + I.reagents.add_reagent(/decl/reagent/sugar, 10 - I.reagents.total_volume, temperature = T0C - 15) else to_chat(user, SPAN_WARNING("There is not enough icecream left!")) else @@ -188,7 +189,7 @@ layer = 3.1 bitesize = 3 volume = 20 - reagents_to_add = list(/datum/reagent/nutriment = 5) + reagents_to_add = list(/decl/reagent/nutriment = 5) var/ice_creamed = 0 var/cone_type diff --git a/code/modules/cooking/recipes/cultural/recipes_dionae.dm b/code/modules/cooking/recipes/cultural/recipes_dionae.dm index 2beb68d8111..db45d58df4f 100644 --- a/code/modules/cooking/recipes/cultural/recipes_dionae.dm +++ b/code/modules/cooking/recipes/cultural/recipes_dionae.dm @@ -1,6 +1,6 @@ /decl/recipe/dionae_soup appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) fruit = list("cabbage" = 1) items = list( /obj/item/reagent_containers/food/snacks/meat/dionanymph @@ -10,10 +10,10 @@ /decl/recipe/dionae_stew appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) fruit = list("potato" = 1, "carrot" = 1, "mushroom" = 1) items = list( /obj/item/reagent_containers/food/snacks/meat/dionanymph ) result = /obj/item/reagent_containers/food/snacks/stew/diona - reagent_mix = RECIPE_REAGENT_REPLACE \ No newline at end of file + reagent_mix = RECIPE_REAGENT_REPLACE diff --git a/code/modules/cooking/recipes/cultural/recipes_earth.dm b/code/modules/cooking/recipes/cultural/recipes_earth.dm index b192a2ddc16..a496f84b687 100644 --- a/code/modules/cooking/recipes/cultural/recipes_earth.dm +++ b/code/modules/cooking/recipes/cultural/recipes_earth.dm @@ -2,7 +2,7 @@ //========================= /decl/recipe/chips appliance = SKILLET | FRYER - reagents = list(/datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/sodiumchloride = 1) items = list( /obj/item/reagent_containers/food/snacks/tortilla ) @@ -26,13 +26,13 @@ /decl/recipe/salsa fruit = list("chili" = 1, "tomato" = 1, "lime" = 1) - reagents = list(/datum/reagent/spacespice = 1, /datum/reagent/blackpepper = 1,/datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/spacespice = 1, /decl/reagent/blackpepper = 1,/decl/reagent/sodiumchloride = 1) result = /obj/item/reagent_containers/food/snacks/dip/salsa reagent_mix = RECIPE_REAGENT_REPLACE //Ingredients are mixed together. /decl/recipe/guac fruit = list("chili" = 1, "lime" = 1) - reagents = list(/datum/reagent/spacespice = 1, /datum/reagent/blackpepper = 1,/datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/spacespice = 1, /decl/reagent/blackpepper = 1,/decl/reagent/sodiumchloride = 1) items = list( /obj/item/reagent_containers/food/snacks/tofu ) @@ -42,7 +42,7 @@ /decl/recipe/cheesesauce appliance = SKILLET | SAUCEPAN // melt the cheese fruit = list("chili" = 1, "tomato" = 1) - reagents = list(/datum/reagent/spacespice = 1, /datum/reagent/blackpepper = 1,/datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/spacespice = 1, /decl/reagent/blackpepper = 1,/decl/reagent/sodiumchloride = 1) items = list( /obj/item/reagent_containers/food/snacks/cheesewedge ) @@ -51,7 +51,7 @@ /decl/recipe/redcurry appliance = SKILLET - reagents = list(/datum/reagent/drink/milk/cream = 5, /datum/reagent/spacespice = 2, /datum/reagent/nutriment/rice = 5) + reagents = list(/decl/reagent/drink/milk/cream = 5, /decl/reagent/spacespice = 2, /decl/reagent/nutriment/rice = 5) items = list( /obj/item/reagent_containers/food/snacks/cutlet, /obj/item/reagent_containers/food/snacks/cutlet @@ -61,7 +61,7 @@ /decl/recipe/greencurry appliance = SKILLET - reagents = list(/datum/reagent/drink/milk/cream = 5, /datum/reagent/spacespice = 2, /datum/reagent/nutriment/rice = 5) + reagents = list(/decl/reagent/drink/milk/cream = 5, /decl/reagent/spacespice = 2, /decl/reagent/nutriment/rice = 5) fruit = list("chili" = 1) items = list( /obj/item/reagent_containers/food/snacks/tofu, @@ -72,39 +72,39 @@ /decl/recipe/yellowcurry appliance = SKILLET - reagents = list(/datum/reagent/drink/milk/cream = 5, /datum/reagent/spacespice = 2, /datum/reagent/nutriment/rice = 5) + reagents = list(/decl/reagent/drink/milk/cream = 5, /decl/reagent/spacespice = 2, /decl/reagent/nutriment/rice = 5) fruit = list("peanut" = 2, "potato" = 1) reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product result = /obj/item/reagent_containers/food/snacks/yellowcurry /decl/recipe/friedrice appliance = SKILLET | SAUCEPAN - reagents = list(/datum/reagent/water = 5, /datum/reagent/nutriment/rice = 10, /datum/reagent/nutriment/soysauce = 5) + reagents = list(/decl/reagent/water = 5, /decl/reagent/nutriment/rice = 10, /decl/reagent/nutriment/soysauce = 5) fruit = list("carrot" = 1, "cabbage" = 1) reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product result = /obj/item/reagent_containers/food/snacks/friedrice /decl/recipe/risotto appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/alcohol/ethanol/wine = 5, /datum/reagent/nutriment/rice = 10, /datum/reagent/spacespice = 1) + reagents = list(/decl/reagent/alcohol/wine = 5, /decl/reagent/nutriment/rice = 10, /decl/reagent/spacespice = 1) fruit = list("mushroom" = 1) reagent_mix = RECIPE_REAGENT_REPLACE //Get that rice and wine outta here result = /obj/item/reagent_containers/food/snacks/risotto /decl/recipe/boiledrice appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 5, /datum/reagent/nutriment/rice = 10) + reagents = list(/decl/reagent/water = 5, /decl/reagent/nutriment/rice = 10) result = /obj/item/reagent_containers/food/snacks/boiledrice /decl/recipe/ricepudding appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/drink/milk = 5, /datum/reagent/nutriment/rice = 10) + reagents = list(/decl/reagent/drink/milk = 5, /decl/reagent/nutriment/rice = 10) result = /obj/item/reagent_containers/food/snacks/ricepudding /decl/recipe/bibimbap appliance = SAUCEPAN | POT fruit = list("carrot" = 1, "cabbage" = 1, "mushroom" = 1) - reagents = list(/datum/reagent/nutriment/rice = 5, /datum/reagent/spacespice = 2) + reagents = list(/decl/reagent/nutriment/rice = 5, /decl/reagent/spacespice = 2) items = list( /obj/item/reagent_containers/food/snacks/egg, /obj/item/reagent_containers/food/snacks/cutlet @@ -114,7 +114,7 @@ /decl/recipe/boiledspagetti appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 5) + reagents = list(/decl/reagent/water = 5) items = list( /obj/item/reagent_containers/food/snacks/spagetti ) @@ -123,13 +123,13 @@ /decl/recipe/pastatomato appliance = SAUCEPAN | POT fruit = list("tomato" = 2) - reagents = list(/datum/reagent/water = 5) + reagents = list(/decl/reagent/water = 5) items = list(/obj/item/reagent_containers/food/snacks/spagetti) result = /obj/item/reagent_containers/food/snacks/pastatomato /decl/recipe/meatballspagetti appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 5) + reagents = list(/decl/reagent/water = 5) items = list( /obj/item/reagent_containers/food/snacks/spagetti, /obj/item/reagent_containers/food/snacks/meatball, @@ -139,7 +139,7 @@ /decl/recipe/spesslaw appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 5) + reagents = list(/decl/reagent/water = 5) items = list( /obj/item/reagent_containers/food/snacks/spagetti, /obj/item/reagent_containers/food/snacks/meatball, @@ -151,7 +151,7 @@ /decl/recipe/lomein appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 5, /datum/reagent/nutriment/soysauce = 5) + reagents = list(/decl/reagent/water = 5, /decl/reagent/nutriment/soysauce = 5) fruit = list("carrot" = 1, "cabbage" = 1) items = list( /obj/item/reagent_containers/food/snacks/spagetti @@ -181,7 +181,7 @@ /decl/recipe/stuffing appliance = OVEN - reagents = list(/datum/reagent/water = 5, /datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1) + reagents = list(/decl/reagent/water = 5, /decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1) items = list( /obj/item/reagent_containers/food/snacks/sliceable/bread ) @@ -189,7 +189,7 @@ /decl/recipe/tortilla appliance = SKILLET - reagents = list(/datum/reagent/nutriment/flour = 5,/datum/reagent/water = 5) + reagents = list(/decl/reagent/nutriment/flour = 5,/decl/reagent/water = 5) result = /obj/item/reagent_containers/food/snacks/tortilla reagent_mix = RECIPE_REAGENT_REPLACE //no gross flour or water @@ -201,7 +201,7 @@ /obj/item/reagent_containers/food/snacks/meatball, /obj/item/reagent_containers/food/snacks/meatball ) - reagents = list(/datum/reagent/spacespice = 1) + reagents = list(/decl/reagent/spacespice = 1) result = /obj/item/reagent_containers/food/snacks/burrito /decl/recipe/burrito_vegan @@ -250,7 +250,7 @@ /decl/recipe/meatbun appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/spacespice = 1, /datum/reagent/water = 5) + reagents = list(/decl/reagent/spacespice = 1, /decl/reagent/water = 5) items = list( /obj/item/reagent_containers/food/snacks/doughslice, /obj/item/reagent_containers/food/snacks/rawcutlet @@ -260,7 +260,7 @@ /decl/recipe/custardbun appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/spacespice = 1, /datum/reagent/water = 5, /datum/reagent/nutriment/protein/egg = 3) + reagents = list(/decl/reagent/spacespice = 1, /decl/reagent/water = 5, /decl/reagent/nutriment/protein/egg = 3) items = list( /obj/item/reagent_containers/food/snacks/doughslice ) @@ -269,7 +269,7 @@ /decl/recipe/chickenmomo appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/spacespice = 2, /datum/reagent/water = 5) + reagents = list(/decl/reagent/spacespice = 2, /decl/reagent/water = 5) items = list( /obj/item/reagent_containers/food/snacks/doughslice, /obj/item/reagent_containers/food/snacks/doughslice, @@ -281,7 +281,7 @@ /decl/recipe/veggiemomo appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/spacespice = 2, /datum/reagent/water = 5) + reagents = list(/decl/reagent/spacespice = 2, /decl/reagent/water = 5) fruit = list("carrot" = 1, "cabbage" = 1) items = list( /obj/item/reagent_containers/food/snacks/doughslice, diff --git a/code/modules/cooking/recipes/cultural/recipes_skrell.dm b/code/modules/cooking/recipes/cultural/recipes_skrell.dm index 4ed2f2a00b9..5b1c13085a4 100644 --- a/code/modules/cooking/recipes/cultural/recipes_skrell.dm +++ b/code/modules/cooking/recipes/cultural/recipes_skrell.dm @@ -2,14 +2,14 @@ /decl/recipe/lortl appliance = OVEN fruit = list("q'lort slice" = 1) - reagents = list(/datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/sodiumchloride = 1) result = /obj/item/reagent_containers/food/snacks/lortl reagent_mix = RECIPE_REAGENT_REPLACE /decl/recipe/lortl_dry appliance = MIX fruit = list("dried q'lort slice" = 1) - reagents = list(/datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/sodiumchloride = 1) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/reagent_containers/food/snacks/lortl @@ -25,14 +25,14 @@ /decl/recipe/zantiri appliance = SAUCEPAN | POT fruit = list("guami" = 2, "eki" = 1) - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/reagent_containers/food/snacks/soup/zantiri /decl/recipe/qilvo appliance = SAUCEPAN | POT fruit = list("seaweed" = 2) - reagents = list(/datum/reagent/water = 10, /datum/reagent/drink/milk/cream = 5) + reagents = list(/decl/reagent/water = 10, /decl/reagent/drink/milk/cream = 5) items = list( /obj/item/reagent_containers/food/snacks/squidmeat ) diff --git a/code/modules/cooking/recipes/cultural/recipes_tajara.dm b/code/modules/cooking/recipes/cultural/recipes_tajara.dm index 1e9143f4332..1f802e3843b 100644 --- a/code/modules/cooking/recipes/cultural/recipes_tajara.dm +++ b/code/modules/cooking/recipes/cultural/recipes_tajara.dm @@ -2,7 +2,7 @@ /decl/recipe/tajaran_bread appliance = OVEN fruit = list("nifberries" = 1) - reagents = list(/datum/reagent/spacespice = 1) + reagents = list(/decl/reagent/spacespice = 1) items = list( /obj/item/reagent_containers/food/snacks/flatbread ) @@ -11,7 +11,7 @@ /decl/recipe/hardbread appliance = OVEN - reagents = list(/datum/reagent/spacespice = 1) + reagents = list(/decl/reagent/spacespice = 1) items = list( /obj/item/reagent_containers/food/snacks/tajaran_bread, /obj/item/reagent_containers/food/snacks/tajaran_bread, @@ -23,7 +23,7 @@ /decl/recipe/tajaran_stew appliance = SAUCEPAN | POT fruit = list("nifberries" = 2, "mushroom" = 1, "mtear" = 1) - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) items = list( /obj/item/reagent_containers/food/snacks/meat/adhomai, /obj/item/reagent_containers/food/snacks/meat/adhomai @@ -33,12 +33,12 @@ /decl/recipe/earthenroot_soup appliance = SAUCEPAN | POT fruit = list("earthenroot" = 2) - reagents = list(/datum/reagent/water = 10, /datum/reagent/spacespice = 1, /datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/water = 10, /decl/reagent/spacespice = 1, /decl/reagent/sodiumchloride = 1) result = /obj/item/reagent_containers/food/snacks/soup/earthenroot /decl/recipe/bloodpudding appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/nutriment/flour/nfrihi = 5, /datum/reagent/blood = 10) + reagents = list(/decl/reagent/nutriment/flour/nfrihi = 5, /decl/reagent/blood = 10) items = list( /obj/item/reagent_containers/food/snacks/spreads/lard, /obj/item/reagent_containers/food/snacks/meat/adhomai @@ -58,7 +58,7 @@ name = "Fermented Hma'trra Meat" id = "fermentedworm" result = null - required_reagents = list(/datum/reagent/enzyme = 5) + required_reagents = list(/decl/reagent/enzyme = 5) /datum/chemical_reaction/fermentedworm/on_reaction(var/datum/reagents/holder, var/created_volume) new /obj/item/reagent_containers/food/snacks/fermented_worm(holder.my_atom.loc) @@ -74,7 +74,7 @@ // Tajaran Seafood /decl/recipe/spicy_clams fruit = list("chili" = 1, "cabbage" = 1) - reagents = list(/datum/reagent/capsaicin = 1, /datum/reagent/spacespice = 1) + reagents = list(/decl/reagent/capsaicin = 1, /decl/reagent/spacespice = 1) items = list( /obj/item/reagent_containers/food/snacks/clam, /obj/item/reagent_containers/food/snacks/clam @@ -85,7 +85,7 @@ /decl/recipe/tajcandy appliance = OVEN fruit = list("nmshaan" = 2) - reagents = list(/datum/reagent/drink/milk/adhomai = 5, /datum/reagent/nutriment/protein/egg = 3) + reagents = list(/decl/reagent/drink/milk/adhomai = 5, /decl/reagent/nutriment/protein/egg = 3) reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/reagent_containers/food/snacks/dough @@ -95,7 +95,7 @@ /decl/recipe/scoutration appliance = OVEN fruit = list("nifberries" = 2) - reagents = list(/datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/sodiumchloride = 1) reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/reagent_containers/food/snacks/meat/adhomai, diff --git a/code/modules/cooking/recipes/cultural/recipes_unathi.dm b/code/modules/cooking/recipes/cultural/recipes_unathi.dm index 00facc34d7b..51b8646fff7 100644 --- a/code/modules/cooking/recipes/cultural/recipes_unathi.dm +++ b/code/modules/cooking/recipes/cultural/recipes_unathi.dm @@ -35,7 +35,7 @@ /obj/item/reagent_containers/food/snacks/egg, /obj/item/reagent_containers/food/snacks/egg ) - reagents = list(/datum/reagent/blood = 15) + reagents = list(/decl/reagent/blood = 15) result = /obj/item/reagent_containers/food/snacks/riztizkzi_sea /decl/recipe/father_breakfast @@ -64,7 +64,7 @@ /obj/item/reagent_containers/food/snacks/fish, /obj/item/reagent_containers/food/snacks/fish ) - reagents = list(/datum/reagent/spacespice = 1) + reagents = list(/decl/reagent/spacespice = 1) fruit = list("cabbage" = 1, "lime" = 1) result = /obj/item/reagent_containers/food/snacks/sliceable/grilled_carp diff --git a/code/modules/cooking/recipes/recipe.dm b/code/modules/cooking/recipes/recipe.dm index 94676ebb909..11e5698499b 100644 --- a/code/modules/cooking/recipes/recipe.dm +++ b/code/modules/cooking/recipes/recipe.dm @@ -34,10 +34,10 @@ /decl/recipe var/display_name - var/list/reagents // example: = list(/datum/reagent/drink/berryjuice = 5) // do not list same reagent twice + var/list/reagents // example: = list(/decl/reagent/drink/berryjuice = 5) // do not list same reagent twice var/list/items // example: = list(/obj/item/crowbar, /obj/item/welder) // place /foo/bar before /foo var/list/fruit // example: = list("fruit" = 3) - var/datum/reagent/coating = null//Required coating on all items in the recipe. The default value of null explitly requires no coating + var/decl/reagent/coating = null//Required coating on all items in the recipe. The default value of null explitly requires no coating //A value of -1 is permissive and cares not for any coatings //Any typepath indicates a specific coating that should be present //Coatings are used for batter, breadcrumbs, beer-batter, colonel's secret coating, etc @@ -93,14 +93,14 @@ . = TRUE for (var/r_r in reagents) - var/aval_r_amnt = avail_reagents.get_reagent_amount(r_r) + var/aval_r_amnt = REAGENT_VOLUME(avail_reagents, r_r) if (aval_r_amnt - reagents[r_r] >= 0) if (aval_r_amnt>reagents[r_r]) . = COOK_CHECK_EXTRA else return COOK_CHECK_FAIL - if ((reagents?length(reagents):0) < length(avail_reagents.reagent_list)) + if ((reagents?length(reagents):0) < length(avail_reagents.reagent_volumes)) return COOK_CHECK_EXTRA return . @@ -258,25 +258,27 @@ if (RECIPE_REAGENT_MAX) //We want the highest of each. //Iterate through everything in buffer. If the target has less than the buffer, then top it up - for (var/datum/reagent/R in buffer.reagent_list) - var/rvol = holder.get_reagent_amount(R.type) - if (rvol < R.volume) + for (var/_R in buffer.reagent_volumes) + var/rvol = REAGENT_VOLUME(holder, _R) + var/bvol = REAGENT_VOLUME(buffer, _R) + if (rvol < bvol) //Transfer the difference - buffer.trans_type_to(holder, R.type, R.volume-rvol) + buffer.trans_type_to(holder, _R, bvol-rvol) if (RECIPE_REAGENT_MIN) //Min is slightly more complex. We want the result to have the lowest from each side //But zero will not count. Where a side has zero its ignored and the side with a nonzero value is used - for (var/datum/reagent/R in buffer.reagent_list) - var/rvol = holder.get_reagent_amount(R.type) + for (var/_R in buffer.reagent_volumes) + var/rvol = REAGENT_VOLUME(holder, _R) + var/bvol = REAGENT_VOLUME(buffer, _R) if (rvol == 0) //If the target has zero of this reagent - buffer.trans_type_to(holder, R.type, R.volume) + buffer.trans_type_to(holder, _R, bvol) //Then transfer all of ours - else if (rvol > R.volume) + else if (rvol > bvol) //if the target has more than ours //Remove the difference - holder.remove_reagent(R.type, rvol-R.volume) + holder.remove_reagent(_R, rvol-bvol) if (length(results) > 1) diff --git a/code/modules/cooking/recipes/recipes_baked.dm b/code/modules/cooking/recipes/recipes_baked.dm index 83884afa336..bd8ec40d5ea 100644 --- a/code/modules/cooking/recipes/recipes_baked.dm +++ b/code/modules/cooking/recipes/recipes_baked.dm @@ -81,7 +81,7 @@ /decl/recipe/soywafers appliance = OVEN fruit = list("soybeans" = 1) - reagents = list(/datum/reagent/nutriment/flour = 10) + reagents = list(/decl/reagent/nutriment/flour = 10) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/reagent_containers/food/snacks/soywafers @@ -102,14 +102,14 @@ /decl/recipe/dionaroast appliance = OVEN fruit = list("apple" = 1) - reagents = list(/datum/reagent/acid/polyacid = 5) //It dissolves the carapace. Still poisonous, though. + reagents = list(/decl/reagent/acid/polyacid = 5) //It dissolves the carapace. Still poisonous, though. items = list(/obj/item/reagent_containers/food/snacks/meat/dionanymph) result = /obj/item/reagent_containers/food/snacks/sliceable/dionaroast reagent_mix = RECIPE_REAGENT_REPLACE //No eating polyacid /decl/recipe/ribplate //Putting this here for not seeing a roast section. appliance = OVEN - reagents = list(/datum/reagent/nutriment/honey = 5, /datum/reagent/spacespice = 2, /datum/reagent/blackpepper = 1) + reagents = list(/decl/reagent/nutriment/honey = 5, /decl/reagent/spacespice = 2, /decl/reagent/blackpepper = 1) items = list(/obj/item/reagent_containers/food/snacks/meat) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/reagent_containers/food/snacks/ribplate @@ -144,12 +144,12 @@ /decl/recipe/plumphelmetbiscuit appliance = OVEN fruit = list("plumphelmet" = 1) - reagents = list(/datum/reagent/water = 5, /datum/reagent/nutriment/flour = 5) + reagents = list(/decl/reagent/water = 5, /decl/reagent/nutriment/flour = 5) result = /obj/item/reagent_containers/food/snacks/plumphelmetbiscuit /decl/recipe/spacylibertyduff appliance = OVEN - reagents = list(/datum/reagent/water = 5, /datum/reagent/alcohol/ethanol/vodka = 5, /datum/reagent/psilocybin = 5) + reagents = list(/decl/reagent/water = 5, /decl/reagent/alcohol/vodka = 5, /decl/reagent/psilocybin = 5) result = /obj/item/reagent_containers/food/snacks/spacylibertyduff /decl/recipe/hotdiggitydonk //heated donk, in lieu of a microwave @@ -161,7 +161,7 @@ /decl/recipe/rofflewaffles appliance = OVEN - reagents = list(/datum/reagent/psilocybin = 5, /datum/reagent/sugar = 10) + reagents = list(/decl/reagent/psilocybin = 5, /decl/reagent/sugar = 10) items = list( /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/dough diff --git a/code/modules/cooking/recipes/recipes_breads.dm b/code/modules/cooking/recipes/recipes_breads.dm index 65f3772eb5a..d796b6dbfe3 100644 --- a/code/modules/cooking/recipes/recipes_breads.dm +++ b/code/modules/cooking/recipes/recipes_breads.dm @@ -15,12 +15,12 @@ /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/dough ) - reagents = list(/datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/sodiumchloride = 1) result = /obj/item/reagent_containers/food/snacks/sliceable/bread /decl/recipe/baguette appliance = OVEN - reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1) + reagents = list(/decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1) items = list( /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/dough @@ -109,7 +109,7 @@ /decl/recipe/bananabread appliance = OVEN fruit = list("banana" = 1) - reagents = list(/datum/reagent/drink/milk = 5, /datum/reagent/sugar = 15) + reagents = list(/decl/reagent/drink/milk = 5, /decl/reagent/sugar = 15) items = list( /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/dough, @@ -119,7 +119,7 @@ /decl/recipe/croissant appliance = OVEN - reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/water = 5, /datum/reagent/drink/milk = 5) + reagents = list(/decl/reagent/sodiumchloride = 1, /decl/reagent/water = 5, /decl/reagent/drink/milk = 5) reagent_mix = RECIPE_REAGENT_REPLACE items = list(/obj/item/reagent_containers/food/snacks/dough) result = /obj/item/reagent_containers/food/snacks/croissant @@ -133,7 +133,7 @@ /decl/recipe/cracker appliance = OVEN - reagents = list(/datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/sodiumchloride = 1) items = list( /obj/item/reagent_containers/food/snacks/doughslice ) @@ -143,7 +143,7 @@ //================================ /decl/recipe/slimetoast appliance = SKILLET - reagents = list(/datum/reagent/slimejelly = 5) + reagents = list(/decl/reagent/slimejelly = 5) items = list( /obj/item/reagent_containers/food/snacks/breadslice ) @@ -151,7 +151,7 @@ /decl/recipe/jelliedtoast appliance = SKILLET - reagents = list(/datum/reagent/nutriment/cherryjelly = 5) + reagents = list(/decl/reagent/nutriment/cherryjelly = 5) items = list( /obj/item/reagent_containers/food/snacks/breadslice ) diff --git a/code/modules/cooking/recipes/recipes_breakfast.dm b/code/modules/cooking/recipes/recipes_breakfast.dm index 55965bb638c..7e9af06f93b 100644 --- a/code/modules/cooking/recipes/recipes_breakfast.dm +++ b/code/modules/cooking/recipes/recipes_breakfast.dm @@ -1,6 +1,6 @@ /decl/recipe/friedegg_easy appliance = SKILLET - reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1) + reagents = list(/decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1) items = list( /obj/item/reagent_containers/food/snacks/egg ) @@ -15,7 +15,7 @@ /decl/recipe/poachedegg appliance = SKILLET | SAUCEPAN - reagents = list(/datum/reagent/spacespice = 1, /datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1, /datum/reagent/water = 5) + reagents = list(/decl/reagent/spacespice = 1, /decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1, /decl/reagent/water = 5) items = list( /obj/item/reagent_containers/food/snacks/egg ) @@ -24,7 +24,7 @@ /decl/recipe/honeytoast appliance = SKILLET - reagents = list(/datum/reagent/nutriment/honey = 5) + reagents = list(/decl/reagent/nutriment/honey = 5) items = list( /obj/item/reagent_containers/food/snacks/breadslice ) @@ -52,7 +52,7 @@ /decl/recipe/boiledegg appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 5) + reagents = list(/decl/reagent/water = 5) reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/reagent_containers/food/snacks/egg @@ -65,13 +65,13 @@ /obj/item/reagent_containers/food/snacks/cheesewedge, /obj/item/reagent_containers/food/snacks/cheesewedge ) - reagents = list(/datum/reagent/nutriment/protein/egg = 6) + reagents = list(/decl/reagent/nutriment/protein/egg = 6) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/reagent_containers/food/snacks/omelette /decl/recipe/muffin appliance = OVEN - reagents = list(/datum/reagent/drink/milk = 5, /datum/reagent/sugar = 5) + reagents = list(/decl/reagent/drink/milk = 5, /decl/reagent/sugar = 5) reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/reagent_containers/food/snacks/dough @@ -80,7 +80,7 @@ /decl/recipe/berrymuffin appliance = OVEN - reagents = list(/datum/reagent/drink/milk = 5, /datum/reagent/sugar = 5) + reagents = list(/decl/reagent/drink/milk = 5, /decl/reagent/sugar = 5) reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/reagent_containers/food/snacks/dough @@ -90,7 +90,7 @@ /decl/recipe/quiche appliance = OVEN - reagents = list(/datum/reagent/drink/milk = 5, /datum/reagent/nutriment/protein/egg = 9, /datum/reagent/nutriment/flour = 10) + reagents = list(/decl/reagent/drink/milk = 5, /decl/reagent/nutriment/protein/egg = 9, /decl/reagent/nutriment/flour = 10) items = list(/obj/item/reagent_containers/food/snacks/cheesewedge) result = /obj/item/reagent_containers/food/snacks/sliceable/quiche reagent_mix = RECIPE_REAGENT_REPLACE //No raw egg in finished product, protein after cooking causes magic meatballs otherwise @@ -107,7 +107,7 @@ /decl/recipe/waffles appliance = SKILLET - reagents = list(/datum/reagent/sugar = 10) + reagents = list(/decl/reagent/sugar = 10) items = list( /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/dough diff --git a/code/modules/cooking/recipes/recipes_fryer.dm b/code/modules/cooking/recipes/recipes_fryer.dm index 1344508b6bd..c24b9b891ff 100644 --- a/code/modules/cooking/recipes/recipes_fryer.dm +++ b/code/modules/cooking/recipes/recipes_fryer.dm @@ -11,14 +11,14 @@ /decl/recipe/jpoppers appliance = FRYER fruit = list("chili" = 1) - coating = /datum/reagent/nutriment/coating/batter + coating = /decl/reagent/nutriment/coating/batter result = /obj/item/reagent_containers/food/snacks/jalapeno_poppers /decl/recipe/risottoballs appliance = FRYER - reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1) + reagents = list(/decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1) items = list(/obj/item/reagent_containers/food/snacks/risotto) - coating = /datum/reagent/nutriment/coating/batter + coating = /decl/reagent/nutriment/coating/batter reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product result = /obj/item/reagent_containers/food/snacks/risottoballs @@ -33,7 +33,7 @@ /decl/recipe/friedmushroom appliance = FRYER fruit = list("plumphelmet" = 1) - coating = /datum/reagent/nutriment/coating/beerbatter + coating = /decl/reagent/nutriment/coating/beerbatter reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product result = /obj/item/reagent_containers/food/snacks/friedmushroom @@ -54,7 +54,7 @@ /obj/item/reagent_containers/food/snacks/sausage ) result = /obj/item/reagent_containers/food/snacks/sausage/battered - coating = /datum/reagent/nutriment/coating/batter + coating = /decl/reagent/nutriment/coating/batter /decl/recipe/katsu @@ -63,7 +63,7 @@ /obj/item/reagent_containers/food/snacks/meat/chicken ) result = /obj/item/reagent_containers/food/snacks/chickenkatsu - coating = /datum/reagent/nutriment/coating/beerbatter + coating = /decl/reagent/nutriment/coating/beerbatter /decl/recipe/pizzacrunch_1 @@ -72,7 +72,7 @@ /obj/item/reagent_containers/food/snacks/sliceable/pizza ) result = /obj/item/reagent_containers/food/snacks/sliceable/pizza/crunch - coating = /datum/reagent/nutriment/coating/batter + coating = /decl/reagent/nutriment/coating/batter //Alternate pizza crunch recipe for combination pizzas made in oven /decl/recipe/pizzacrunch_2 @@ -81,7 +81,7 @@ /obj/item/reagent_containers/food/snacks/variable/pizza ) result = /obj/item/reagent_containers/food/snacks/sliceable/pizza/crunch - coating = /datum/reagent/nutriment/coating/batter + coating = /decl/reagent/nutriment/coating/batter //Fishy Recipes //================== @@ -98,14 +98,14 @@ items = list( /obj/item/reagent_containers/food/snacks/fish ) - coating = /datum/reagent/nutriment/coating/batter + coating = /decl/reagent/nutriment/coating/batter result = /obj/item/reagent_containers/food/snacks/fishfingers //Sweet Recipes. //================== /decl/recipe/jellydonut appliance = FRYER - reagents = list(/datum/reagent/drink/berryjuice = 10, /datum/reagent/sugar = 10) + reagents = list(/decl/reagent/drink/berryjuice = 10, /decl/reagent/sugar = 10) items = list( /obj/item/reagent_containers/food/snacks/dough ) @@ -113,16 +113,16 @@ result_quantity = 2 /decl/recipe/jellydonut/slime - reagents = list(/datum/reagent/slimejelly = 10, /datum/reagent/sugar = 10) + reagents = list(/decl/reagent/slimejelly = 10, /decl/reagent/sugar = 10) result = /obj/item/reagent_containers/food/snacks/donut/slimejelly /decl/recipe/jellydonut/cherry - reagents = list(/datum/reagent/nutriment/cherryjelly = 10, /datum/reagent/sugar = 10) + reagents = list(/decl/reagent/nutriment/cherryjelly = 10, /decl/reagent/sugar = 10) result = /obj/item/reagent_containers/food/snacks/donut/cherryjelly /decl/recipe/donut appliance = FRYER - reagents = list(/datum/reagent/sugar = 10) + reagents = list(/decl/reagent/sugar = 10) items = list( /obj/item/reagent_containers/food/snacks/dough ) @@ -131,7 +131,7 @@ /decl/recipe/funnelcake appliance = FRYER - reagents = list(/datum/reagent/sugar = 5, /datum/reagent/nutriment/coating/batter = 10) + reagents = list(/decl/reagent/sugar = 5, /decl/reagent/nutriment/coating/batter = 10) result = /obj/item/reagent_containers/food/snacks/funnelcake /decl/recipe/pisanggoreng @@ -139,7 +139,7 @@ fruit = list("banana" = 2) reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product result = /obj/item/reagent_containers/food/snacks/pisanggoreng - coating = /datum/reagent/nutriment/coating/batter + coating = /decl/reagent/nutriment/coating/batter /decl/recipe/corn_dog appliance = FRYER @@ -147,7 +147,7 @@ /obj/item/reagent_containers/food/snacks/sausage ) fruit = list("corn" = 1) - coating = /datum/reagent/nutriment/coating/batter + coating = /decl/reagent/nutriment/coating/batter result = /obj/item/reagent_containers/food/snacks/corn_dog /decl/recipe/sweet_and_sour @@ -156,12 +156,12 @@ /obj/item/reagent_containers/food/snacks/bacon, /obj/item/reagent_containers/food/snacks/cutlet ) - reagents = list(/datum/reagent/nutriment/soysauce = 5, /datum/reagent/nutriment/coating/batter = 10) + reagents = list(/decl/reagent/nutriment/soysauce = 5, /decl/reagent/nutriment/coating/batter = 10) result = /obj/item/reagent_containers/food/snacks/sweet_and_sour /decl/recipe/wingfangchu appliance = FRYER - reagents = list(/datum/reagent/nutriment/soysauce = 5) + reagents = list(/decl/reagent/nutriment/soysauce = 5) items = list( /obj/item/reagent_containers/food/snacks/xenomeat ) diff --git a/code/modules/cooking/recipes/recipes_grill.dm b/code/modules/cooking/recipes/recipes_grill.dm index 47d365da1d0..5ccd591c8fb 100644 --- a/code/modules/cooking/recipes/recipes_grill.dm +++ b/code/modules/cooking/recipes/recipes_grill.dm @@ -3,5 +3,5 @@ items = list( /obj/item/reagent_containers/food/snacks/meat ) - reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1, /datum/reagent/spacespice = 1) - result = /obj/item/reagent_containers/food/snacks/meatsteak/grilled \ No newline at end of file + reagents = list(/decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1, /decl/reagent/spacespice = 1) + result = /obj/item/reagent_containers/food/snacks/meatsteak/grilled diff --git a/code/modules/cooking/recipes/recipes_meat.dm b/code/modules/cooking/recipes/recipes_meat.dm index 06a78b4553a..423ff8c0ebc 100644 --- a/code/modules/cooking/recipes/recipes_meat.dm +++ b/code/modules/cooking/recipes/recipes_meat.dm @@ -50,13 +50,13 @@ /decl/recipe/meatsteak appliance = SKILLET - reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1) + reagents = list(/decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1) items = list(/obj/item/reagent_containers/food/snacks/meat) result = /obj/item/reagent_containers/food/snacks/meatsteak /decl/recipe/syntisteak appliance = SKILLET - reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1) + reagents = list(/decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1) items = list(/obj/item/reagent_containers/food/snacks/meat/syntiflesh) result = /obj/item/reagent_containers/food/snacks/meatsteak @@ -71,7 +71,7 @@ /decl/recipe/nugget appliance = FRYER - reagents = list(/datum/reagent/nutriment/flour = 5) + reagents = list(/decl/reagent/nutriment/flour = 5) items = list( /obj/item/reagent_containers/food/snacks/meat/chicken ) diff --git a/code/modules/cooking/recipes/recipes_mix.dm b/code/modules/cooking/recipes/recipes_mix.dm index 794a34dfd92..a8b7964c75d 100644 --- a/code/modules/cooking/recipes/recipes_mix.dm +++ b/code/modules/cooking/recipes/recipes_mix.dm @@ -102,7 +102,7 @@ /obj/item/reagent_containers/food/snacks/meat, /obj/item/reagent_containers/food/snacks/meat ) - reagents = list(/datum/reagent/nutriment/protein/egg = 3) + reagents = list(/decl/reagent/nutriment/protein/egg = 3) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/reagent_containers/food/snacks/burger/bigbite @@ -117,7 +117,7 @@ /decl/recipe/superbiteburger fruit = list("tomato" = 1) - reagents = list(/datum/reagent/sodiumchloride = 5, /datum/reagent/blackpepper = 5) + reagents = list(/decl/reagent/sodiumchloride = 5, /decl/reagent/blackpepper = 5) items = list( /obj/item/reagent_containers/food/snacks/burger/bigbite, /obj/item/reagent_containers/food/snacks/dough, @@ -129,18 +129,18 @@ /decl/recipe/candiedapple fruit = list("apple" = 1) - reagents = list(/datum/reagent/water = 5, /datum/reagent/sugar = 5) + reagents = list(/decl/reagent/water = 5, /decl/reagent/sugar = 5) result = /obj/item/reagent_containers/food/snacks/candiedapple /decl/recipe/slimeburger - reagents = list(/datum/reagent/slimejelly = 5) + reagents = list(/decl/reagent/slimejelly = 5) items = list( /obj/item/reagent_containers/food/snacks/bun ) result = /obj/item/reagent_containers/food/snacks/burger/jelly/slime /decl/recipe/jellyburger - reagents = list(/datum/reagent/nutriment/cherryjelly = 5) + reagents = list(/decl/reagent/nutriment/cherryjelly = 5) items = list( /obj/item/reagent_containers/food/snacks/bun ) @@ -148,7 +148,7 @@ /decl/recipe/twobread appliance = SKILLET | MIX - reagents = list(/datum/reagent/alcohol/ethanol/wine = 5) + reagents = list(/decl/reagent/alcohol/wine = 5) items = list( /obj/item/reagent_containers/food/snacks/breadslice, /obj/item/reagent_containers/food/snacks/breadslice @@ -156,7 +156,7 @@ result = /obj/item/reagent_containers/food/snacks/twobread /decl/recipe/slimesandwich - reagents = list(/datum/reagent/slimejelly = 5) + reagents = list(/decl/reagent/slimejelly = 5) items = list( /obj/item/reagent_containers/food/snacks/breadslice, /obj/item/reagent_containers/food/snacks/breadslice @@ -164,7 +164,7 @@ result = /obj/item/reagent_containers/food/snacks/jellysandwich/slime /decl/recipe/cherrysandwich - reagents = list(/datum/reagent/nutriment/cherryjelly = 5) + reagents = list(/decl/reagent/nutriment/cherryjelly = 5) items = list( /obj/item/reagent_containers/food/snacks/breadslice, /obj/item/reagent_containers/food/snacks/breadslice @@ -187,7 +187,7 @@ . = ..(container) for (var/obj/item/reagent_containers/food/snacks/salad/validsalad/being_cooked in .) - being_cooked.reagents.del_reagent(/datum/reagent/toxin) + being_cooked.reagents.del_reagent(/decl/reagent/toxin) /* /decl/recipe/neuralbroke @@ -230,7 +230,7 @@ /decl/recipe/donerkebab fruit = list("tomato" = 1, "cabbage" = 1) - reagents = list(/datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/sodiumchloride = 1) items = list( /obj/item/reagent_containers/food/snacks/meatsteak, /obj/item/reagent_containers/food/snacks/sliceable/flatdough @@ -238,7 +238,7 @@ result = /obj/item/reagent_containers/food/snacks/donerkebab /decl/recipe/sashimi - reagents = list(/datum/reagent/nutriment/soysauce = 5) + reagents = list(/decl/reagent/nutriment/soysauce = 5) items = list( /obj/item/reagent_containers/food/snacks/fish ) @@ -253,7 +253,7 @@ /obj/item/reagent_containers/food/snacks/breadslice, /obj/item/reagent_containers/food/snacks/cheesewedge ) - reagents = list(/datum/reagent/spacespice = 1) + reagents = list(/decl/reagent/spacespice = 1) result = /obj/item/reagent_containers/food/snacks/cheese_cracker result_quantity = 4 @@ -290,7 +290,7 @@ result = /obj/item/reagent_containers/food/snacks/mashedpotato /decl/recipe/icecreamsandwich - reagents = list(/datum/reagent/drink/milk = 5, /datum/reagent/drink/ice = 5) + reagents = list(/decl/reagent/drink/milk = 5, /decl/reagent/drink/ice = 5) reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/reagent_containers/food/snacks/icecream @@ -299,7 +299,7 @@ /decl/recipe/banana_split fruit = list("banana" = 1) - reagents = list(/datum/reagent/drink/milk = 5, /datum/reagent/drink/ice = 5) + reagents = list(/decl/reagent/drink/milk = 5, /decl/reagent/drink/ice = 5) reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/reagent_containers/food/snacks/icecream diff --git a/code/modules/cooking/recipes/recipes_pan.dm b/code/modules/cooking/recipes/recipes_pan.dm index f027f326763..7feafc456a4 100644 --- a/code/modules/cooking/recipes/recipes_pan.dm +++ b/code/modules/cooking/recipes/recipes_pan.dm @@ -6,24 +6,24 @@ // Jellies /decl/recipe/amanitajelly appliance = SAUCEPAN - reagents = list(/datum/reagent/water = 5, /datum/reagent/alcohol/ethanol/vodka = 5, /datum/reagent/toxin/amatoxin = 5) + reagents = list(/decl/reagent/water = 5, /decl/reagent/alcohol/vodka = 5, /decl/reagent/toxin/amatoxin = 5) result = /obj/item/reagent_containers/food/snacks/amanitajelly make_food(var/obj/container as obj) . = ..(container) for (var/obj/item/reagent_containers/food/snacks/amanitajelly/being_cooked in .) - being_cooked.reagents.del_reagent(/datum/reagent/toxin/amatoxin) + being_cooked.reagents.del_reagent(/decl/reagent/toxin/amatoxin) // Ports from the microwave... yeah /decl/recipe/mint appliance = SAUCEPAN - reagents = list(/datum/reagent/sugar = 5, /datum/reagent/frostoil = 5) + reagents = list(/decl/reagent/sugar = 5, /decl/reagent/frostoil = 5) result = /obj/item/reagent_containers/food/snacks/mint /decl/recipe/porkbowl appliance = SAUCEPAN - reagents = list(/datum/reagent/water = 5, /datum/reagent/nutriment/rice = 10) + reagents = list(/decl/reagent/water = 5, /decl/reagent/nutriment/rice = 10) reagent_mix = RECIPE_REAGENT_REPLACE items = list( /obj/item/reagent_containers/food/snacks/bacon @@ -32,7 +32,7 @@ /decl/recipe/crab_legs appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 10, /datum/reagent/sodiumchloride = 1) + reagents = list(/decl/reagent/water = 10, /decl/reagent/sodiumchloride = 1) items = list( /obj/item/reagent_containers/food/snacks/crabmeat, /obj/item/reagent_containers/food/snacks/spreads diff --git a/code/modules/cooking/recipes/recipes_pastries.dm b/code/modules/cooking/recipes/recipes_pastries.dm index ef7e3015b32..dcde62c439d 100644 --- a/code/modules/cooking/recipes/recipes_pastries.dm +++ b/code/modules/cooking/recipes/recipes_pastries.dm @@ -3,7 +3,7 @@ /decl/recipe/cookie appliance = OVEN - reagents = list(/datum/reagent/drink/milk = 10, /datum/reagent/sugar = 10) + reagents = list(/decl/reagent/drink/milk = 10, /decl/reagent/sugar = 10) items = list( /obj/item/reagent_containers/food/snacks/dough, /obj/item/reagent_containers/food/snacks/chocolatebar @@ -14,7 +14,7 @@ /decl/recipe/fortunecookie appliance = OVEN - reagents = list(/datum/reagent/sugar = 5) + reagents = list(/decl/reagent/sugar = 5) items = list( /obj/item/reagent_containers/food/snacks/doughslice, /obj/item/paper @@ -62,13 +62,13 @@ /decl/recipe/brownies appliance = OVEN - reagents = list(/datum/reagent/browniemix = 10, /datum/reagent/nutriment/protein/egg = 3) + reagents = list(/decl/reagent/browniemix = 10, /decl/reagent/nutriment/protein/egg = 3) reagent_mix = RECIPE_REAGENT_REPLACE //No egg or mix in final recipe result = /obj/item/reagent_containers/food/snacks/sliceable/brownies /decl/recipe/cosmicbrownies appliance = OVEN - reagents = list(/datum/reagent/browniemix = 10, /datum/reagent/nutriment/protein/egg = 3) + reagents = list(/decl/reagent/browniemix = 10, /decl/reagent/nutriment/protein/egg = 3) fruit = list("ambrosia" = 1) reagent_mix = RECIPE_REAGENT_REPLACE //No egg or mix in final recipe result = /obj/item/reagent_containers/food/snacks/sliceable/cosmicbrownies @@ -77,7 +77,7 @@ //============ /decl/recipe/cake appliance = OVEN - reagents = list(/datum/reagent/drink/milk = 5, /datum/reagent/nutriment/flour = 15, /datum/reagent/sugar = 15, /datum/reagent/nutriment/protein/egg = 9) + reagents = list(/decl/reagent/drink/milk = 5, /decl/reagent/nutriment/flour = 15, /decl/reagent/sugar = 15, /decl/reagent/nutriment/protein/egg = 9) result = /obj/item/reagent_containers/food/snacks/sliceable/cake/plain reagent_mix = RECIPE_REAGENT_REPLACE @@ -134,12 +134,12 @@ items = list( /obj/item/reagent_containers/food/snacks/dough ) - reagents = list(/datum/reagent/nutriment/honey = 5) + reagents = list(/decl/reagent/nutriment/honey = 5) result = /obj/item/reagent_containers/food/snacks/honeybun /decl/recipe/truffle appliance = OVEN - reagents = list(/datum/reagent/nutriment/coco = 2, /datum/reagent/drink/milk/cream = 5) + reagents = list(/decl/reagent/nutriment/coco = 2, /decl/reagent/drink/milk/cream = 5) items = list( /obj/item/reagent_containers/food/snacks/chocolatebar ) @@ -177,7 +177,7 @@ /decl/recipe/pie appliance = OVEN fruit = list("banana" = 1) - reagents = list(/datum/reagent/sugar = 5) + reagents = list(/decl/reagent/sugar = 5) items = list(/obj/item/reagent_containers/food/snacks/sliceable/flatdough) result = /obj/item/reagent_containers/food/snacks/pie @@ -187,12 +187,12 @@ /decl/recipe/pie/cherry fruit = list("cherries" = 1) - reagents = list(/datum/reagent/sugar = 10) + reagents = list(/decl/reagent/sugar = 10) result = /obj/item/reagent_containers/food/snacks/cherrypie /decl/recipe/pie/amanita fruit = null - reagents = list(/datum/reagent/toxin/amatoxin = 5) + reagents = list(/decl/reagent/toxin/amatoxin = 5) result = /obj/item/reagent_containers/food/snacks/amanita_pie /decl/recipe/pie/plump @@ -202,21 +202,21 @@ /decl/recipe/pie/pumpkin fruit = null - reagents = list(/datum/reagent/sugar = 5, /datum/reagent/nutriment/pumpkinpulp = 5, /datum/reagent/spacespice/pumpkinspice = 2) + reagents = list(/decl/reagent/sugar = 5, /decl/reagent/nutriment/pumpkinpulp = 5, /decl/reagent/spacespice/pumpkinspice = 2) result = /obj/item/reagent_containers/food/snacks/sliceable/pumpkinpie reagent_mix = RECIPE_REAGENT_REPLACE /decl/recipe/appletart appliance = OVEN fruit = list("goldapple" = 1) - reagents = list(/datum/reagent/sugar = 5, /datum/reagent/drink/milk = 5, /datum/reagent/nutriment/flour = 10, /datum/reagent/nutriment/protein/egg = 3) + reagents = list(/decl/reagent/sugar = 5, /decl/reagent/drink/milk = 5, /decl/reagent/nutriment/flour = 10, /decl/reagent/nutriment/protein/egg = 3) result = /obj/item/reagent_containers/food/snacks/appletart reagent_mix = RECIPE_REAGENT_REPLACE /decl/recipe/keylimepie appliance = OVEN fruit = list("lime" = 2) - reagents = list(/datum/reagent/drink/milk = 5, /datum/reagent/sugar = 5, /datum/reagent/nutriment/protein/egg = 3, /datum/reagent/nutriment/flour = 10) + reagents = list(/decl/reagent/drink/milk = 5, /decl/reagent/sugar = 5, /decl/reagent/nutriment/protein/egg = 3, /decl/reagent/nutriment/flour = 10) result = /obj/item/reagent_containers/food/snacks/sliceable/keylimepie reagent_mix = RECIPE_REAGENT_REPLACE //No raw egg in finished product, protein after cooking causes magic meatballs otherwise diff --git a/code/modules/cooking/recipes/recipes_soup.dm b/code/modules/cooking/recipes/recipes_soup.dm index daa192f3fec..9b0fe5383d1 100644 --- a/code/modules/cooking/recipes/recipes_soup.dm +++ b/code/modules/cooking/recipes/recipes_soup.dm @@ -1,48 +1,48 @@ /decl/recipe/onionsoup appliance = SAUCEPAN | POT fruit = list("onion" = 1) - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) result = /obj/item/reagent_containers/food/snacks/soup/onion /decl/recipe/bluespacetomatosoup appliance = SAUCEPAN | POT fruit = list("bluespacetomato" = 2) - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) result = /obj/item/reagent_containers/food/snacks/soup/bluespace /decl/recipe/meatballsoup appliance = SAUCEPAN | POT fruit = list("carrot" = 1, "potato" = 1) - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) items = list(/obj/item/reagent_containers/food/snacks/meatball) result = /obj/item/reagent_containers/food/snacks/soup/meatball /decl/recipe/vegetablesoup appliance = SAUCEPAN | POT fruit = list("carrot" = 1, "potato" = 1, "corn" = 1, "eggplant" = 1) - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) result = /obj/item/reagent_containers/food/snacks/soup/vegetable /decl/recipe/nettlesoup appliance = SAUCEPAN | POT fruit = list("nettle" = 1, "potato" = 1, ) - reagents = list(/datum/reagent/water = 10, /datum/reagent/nutriment/protein/egg = 3) + reagents = list(/decl/reagent/water = 10, /decl/reagent/nutriment/protein/egg = 3) result = /obj/item/reagent_containers/food/snacks/soup/nettle /decl/recipe/wishsoup appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 20) + reagents = list(/decl/reagent/water = 20) result= /obj/item/reagent_containers/food/snacks/soup/wish /decl/recipe/tomatosoup appliance = SAUCEPAN | POT fruit = list("tomato" = 2) - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) result = /obj/item/reagent_containers/food/snacks/soup/tomato /decl/recipe/milosoup appliance = POT - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) items = list( /obj/item/reagent_containers/food/snacks/soydope, /obj/item/reagent_containers/food/snacks/soydope, @@ -53,18 +53,18 @@ /decl/recipe/bloodsoup appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/blood = 30) + reagents = list(/decl/reagent/blood = 30) result = /obj/item/reagent_containers/food/snacks/soup/blood /decl/recipe/slimesoup appliance = SAUCEPAN | POT - reagents = list(/datum/reagent/water = 10, /datum/reagent/slimejelly = 5) + reagents = list(/decl/reagent/water = 10, /decl/reagent/slimejelly = 5) items = list() result = /obj/item/reagent_containers/food/snacks/soup/slime /decl/recipe/mysterysoup appliance = POT - reagents = list(/datum/reagent/water = 10, /datum/reagent/nutriment/protein/egg = 3) + reagents = list(/decl/reagent/water = 10, /decl/reagent/nutriment/protein/egg = 3) items = list( /obj/item/reagent_containers/food/snacks/badrecipe, /obj/item/reagent_containers/food/snacks/tofu, @@ -76,35 +76,35 @@ /decl/recipe/mushroomsoup appliance = SAUCEPAN | POT fruit = list("mushroom" = 1) - reagents = list(/datum/reagent/water = 5, /datum/reagent/drink/milk = 5) + reagents = list(/decl/reagent/water = 5, /decl/reagent/drink/milk = 5) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/reagent_containers/food/snacks/soup/mushroom /decl/recipe/chawanmushi appliance = SAUCEPAN fruit = list("mushroom" = 1) - reagents = list(/datum/reagent/water = 5, /datum/reagent/nutriment/soysauce = 5, /datum/reagent/nutriment/protein/egg = 6) + reagents = list(/decl/reagent/water = 5, /decl/reagent/nutriment/soysauce = 5, /decl/reagent/nutriment/protein/egg = 6) reagent_mix = RECIPE_REAGENT_REPLACE result = /obj/item/reagent_containers/food/snacks/chawanmushi /decl/recipe/beetsoup appliance = SAUCEPAN | POT fruit = list("whitebeet" = 1, "cabbage" = 1) - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) result = /obj/item/reagent_containers/food/snacks/soup/beet // Stews /decl/recipe/stew appliance = POT fruit = list("potato" = 1, "tomato" = 1, "carrot" = 1, "eggplant" = 1, "mushroom" = 1) - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) items = list(/obj/item/reagent_containers/food/snacks/meat) result = /obj/item/reagent_containers/food/snacks/stew /decl/recipe/bearstew appliance = POT fruit = list("potato" = 1, "tomato" = 1, "carrot" = 1, "eggplant" = 1, "mushroom" = 1) - reagents = list(/datum/reagent/water = 10) + reagents = list(/decl/reagent/water = 10) items = list(/obj/item/reagent_containers/food/snacks/bearmeat) reagent_mix = RECIPE_REAGENT_REPLACE //Simplify end product result = /obj/item/reagent_containers/food/snacks/stew/bear diff --git a/code/modules/detectivework/tools/luminol.dm b/code/modules/detectivework/tools/luminol.dm index 967755dcfc4..9ef1c48504f 100644 --- a/code/modules/detectivework/tools/luminol.dm +++ b/code/modules/detectivework/tools/luminol.dm @@ -7,7 +7,4 @@ amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10) volume = 250 - -/obj/item/reagent_containers/spray/luminol/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/luminol, 250) \ No newline at end of file + reagents_to_add = list(/decl/reagent/luminol = 250) diff --git a/code/modules/detectivework/tools/rag.dm b/code/modules/detectivework/tools/rag.dm index f7b39981cdb..10859c0bc91 100644 --- a/code/modules/detectivework/tools/rag.dm +++ b/code/modules/detectivework/tools/rag.dm @@ -25,7 +25,6 @@ can_be_placed_into = null flags = OPENCONTAINER | NOBLUDGEON unacidable = 0 - shatter = FALSE var/on_fire = 0 var/burn_time = 20 //if the rag burns for too long it turns to ashes @@ -140,23 +139,24 @@ to_chat(user, SPAN_NOTICE("You begin to bandage \a [W.desc] on [M]'s [affecting.name] with a rag.")) if(!do_mob(user, M, W.damage/10)) // takes twice as long as a normal bandage to_chat(user, SPAN_NOTICE("You must stand still to bandage wounds.")) - break - for(var/datum/reagent/R in reagents.reagent_list) - var/strength = R.germ_adjust * R.volume/4 - if(istype(R, /datum/reagent/alcohol)) - var/datum/reagent/alcohol/A = R + return + for(var/_R in reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + var/strength = R.germ_adjust * reagents.reagent_volumes[_R]/4 + if(istype(R, /decl/reagent/alcohol)) + var/decl/reagent/alcohol/A = R strength = strength * (A.strength/100) W.germ_level -= min(strength, W.germ_level)//Clean the wound a bit. if (W.germ_level <= 0) - W.disinfected = 1//The wound becomes disinfected if fully cleaned + W.disinfected = TRUE//The wound becomes disinfected if fully cleaned break reagents.trans_to_mob(H, reagents.total_volume*0.75, CHEM_TOUCH) // most of it gets on the skin reagents.trans_to_mob(H, reagents.total_volume*0.25, CHEM_BLOOD) // some gets in the wound - user.visible_message(SPAN_NOTICE("\The [user] bandages \a [W.desc] on [M]'s [affecting.name] with a rag, tying it in place."), \ - SPAN_NOTICE("You bandage \a [W.desc] on [M]'s [affecting.name] with a rag, tying it in place.")) + user.visible_message(SPAN_NOTICE("\The [user] bandages \a [W.desc] on [M]'s [affecting.name] with [src], tying it in place."), \ + SPAN_NOTICE("You bandage \a [W.desc] on [M]'s [affecting.name] with [src], tying it in place.")) W.bandage() qdel(src) // the rag is used up, it'll be all bloody and useless after - break // we can only do one at a time + return // we can only do one at a time else if(reagents.total_volume) if(user.zone_sel.selecting == BP_MOUTH && !(M.wear_mask && M.wear_mask.item_flags & AIRTIGHT)) user.do_attack_animation(src) @@ -182,7 +182,7 @@ return if(istype(A, /obj/structure/reagent_dispensers) || istype(A, /obj/structure/mopbucket) || istype(A, /obj/item/reagent_containers/glass) || istype(A, /obj/structure/sink)) - if(!reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(reagents)) to_chat(user, SPAN_WARNING("\The [src] is already soaked.")) return @@ -210,7 +210,7 @@ //rag must have a minimum of 2 units welder fuel and at least 80% of the reagents must be welder fuel. //maybe generalize flammable reagents someday /obj/item/reagent_containers/glass/rag/proc/can_ignite() - var/fuel = reagents.get_reagent_amount(/datum/reagent/fuel) + var/fuel = REAGENT_VOLUME(reagents, /decl/reagent/fuel) return (fuel >= 2 && fuel >= reagents.total_volume*0.8) /obj/item/reagent_containers/glass/rag/proc/ignite() @@ -220,10 +220,10 @@ return //also copied from matches - if(reagents.get_reagent_amount(/datum/reagent/toxin/phoron)) // the phoron explodes when exposed to fire + if(REAGENT_VOLUME(reagents, /decl/reagent/toxin/phoron)) // the phoron explodes when exposed to fire visible_message(SPAN_DANGER("\The [src] conflagrates violently!")) var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount(/datum/reagent/toxin/phoron) / 2.5, 1), get_turf(src), 0, 0) + e.set_up(round(REAGENT_VOLUME(reagents, /decl/reagent/toxin/phoron) / 2.5, 1), get_turf(src), 0, 0) e.start() qdel(src) return @@ -267,7 +267,7 @@ qdel(src) return - reagents.remove_reagent(/datum/reagent/fuel, reagents.maximum_volume/25) + reagents.remove_reagent(/decl/reagent/fuel, reagents.maximum_volume/25) update_name() update_icon() burn_time-- diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 9867e5b610b..3717ac98756 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -5,47 +5,52 @@ var/interval = 2 var/list/vents = list() var/list/gunk = list( - /datum/reagent/water = 10, - /datum/reagent/carbon = 5, - /datum/reagent/nutriment/flour = 8, - /datum/reagent/spacecleaner = 6, - /datum/reagent/nutriment = 6, - /datum/reagent/capsaicin/condensed = 2, - /datum/reagent/mindbreaker = 0.5, - /datum/reagent/lube = 4, - /datum/reagent/paint = 3, - /datum/reagent/drink/banana = 3, - /datum/reagent/space_drugs = 3, - /datum/reagent/water/holywater = 1, - /datum/reagent/drink/hot_coco = 3, - /datum/reagent/hyperzine = 0.75, - /datum/reagent/luminol = 2, - /datum/reagent/fuel = 3, - /datum/reagent/blood = 2, - /datum/reagent/sterilizine = 3, - /datum/reagent/verunol = 3, - /datum/reagent/toxin/fertilizer/monoammoniumphosphate = 1, - /datum/reagent/saline = 2, - /datum/reagent/mental/kokoreed = 0.5, - /datum/reagent/mental/vaam = 0.5, - /datum/reagent/toxin/tobacco = 3, - /datum/reagent/stone_dust = 0.5, - /datum/reagent/crayon_dust = 1, - /datum/reagent/alcohol/butanol = 2, - /datum/reagent/alcohol/ethanol = 2, - /datum/reagent/sugar = 2, - /datum/reagent/drink/coffee = 4, - /datum/reagent/wulumunusha = 0.25, - /datum/reagent/nutriment/virusfood = 2, - /datum/reagent/sodiumchloride = 2, - /datum/reagent/drink/zorasoda/venomgrass = 1, - /datum/reagent/nutriment/protein/egg = 2, - /datum/reagent/serotrotium = 1, - /datum/reagent/psilocybin = 0.5, - /datum/reagent/toxin/spectrocybin = 0.1 + /decl/reagent/water = 10, + /decl/reagent/carbon = 5, + /decl/reagent/nutriment/flour = 8, + /decl/reagent/spacecleaner = 6, + /decl/reagent/nutriment = 6, + /decl/reagent/capsaicin/condensed = 2, + /decl/reagent/mindbreaker = 0.5, + /decl/reagent/lube = 4, + /decl/reagent/paint = 3, + /decl/reagent/drink/banana = 3, + /decl/reagent/space_drugs = 3, + /decl/reagent/water/holywater = 1, + /decl/reagent/drink/hot_coco = 3, + /decl/reagent/hyperzine = 0.75, + /decl/reagent/luminol = 2, + /decl/reagent/fuel = 3, + /decl/reagent/blood = 2, + /decl/reagent/sterilizine = 3, + /decl/reagent/verunol = 3, + /decl/reagent/toxin/fertilizer/monoammoniumphosphate = 1, + /decl/reagent/saline = 2, + /decl/reagent/mental/kokoreed = 0.5, + /decl/reagent/mental/vaam = 0.5, + /decl/reagent/toxin/tobacco = 3, + /decl/reagent/stone_dust = 0.5, + /decl/reagent/crayon_dust = 1, + /decl/reagent/alcohol/butanol = 2, + /decl/reagent/alcohol = 2, + /decl/reagent/sugar = 2, + /decl/reagent/drink/coffee = 4, + /decl/reagent/wulumunusha = 0.25, + /decl/reagent/nutriment/virusfood = 2, + /decl/reagent/sodiumchloride = 2, + /decl/reagent/drink/zorasoda/venomgrass = 1, + /decl/reagent/nutriment/protein/egg = 2, + /decl/reagent/serotrotium = 1, + /decl/reagent/psilocybin = 0.5, + /decl/reagent/toxin/spectrocybin = 0.1 ) - var/list/gunk_data = list( - /datum/reagent/paint = list("#FE191A", "#AAAA79", "#5F89E6", "#6CDB38", "#B474B6", "#F0DD34") + var/list/paint_reagents = list( + /decl/reagent/crayon_dust/red, + /decl/reagent/crayon_dust/orange, + /decl/reagent/crayon_dust/yellow, + /decl/reagent/crayon_dust/green, + /decl/reagent/crayon_dust/blue, + /decl/reagent/crayon_dust/purple ) @@ -66,11 +71,15 @@ var/obj/machinery/atmospherics/unary/vent_scrubber/vent = pick_n_take(vents) if(vent && vent.loc && !vent.is_welded()) - var/datum/reagent/chem = pickweight(gunk) + var/decl/reagent/chem = pickweight(gunk) var/reagent_amount = rand(2,5) * 5 //10 to 25 units var/datum/reagents/R = new/datum/reagents(reagent_amount) R.my_atom = vent - R.add_reagent(chem, reagent_amount, pick(gunk_data[chem])) + R.add_reagent(chem, reagent_amount) + if(chem == /decl/reagent/paint) // so it's not just paint + var/chem2 = pick(paint_reagents) + R.maximum_volume += 1 + R.add_reagent(chem2, 1) var/datum/effect/effect/system/smoke_spread/chem/smoke = new smoke.show_log = 0 // This displays a log on creation @@ -82,4 +91,4 @@ /datum/event/vent_clog/announce() - command_announcement.Announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert", new_sound = 'sound/AI/scrubbers.ogg') \ No newline at end of file + command_announcement.Announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert", new_sound = 'sound/AI/scrubbers.ogg') diff --git a/code/modules/examine/examine.dm b/code/modules/examine/examine.dm index 030a42942c2..c316c6e91a0 100644 --- a/code/modules/examine/examine.dm +++ b/code/modules/examine/examine.dm @@ -82,3 +82,15 @@ var/is_cult = mind?.special_role == "Cultist" || isobserver(src) if(client) client.update_description_holders(A, is_antag, is_cult) + +/mob/proc/can_examine() + if(client?.eye == src) + return TRUE + return FALSE + +/mob/living/silicon/pai/can_examine() + . = ..() + if(!.) + var/atom/our_holder = recursive_loc_turf_check(src, 5) + if(isturf(our_holder.loc)) // are we folded in on the ground + return TRUE \ No newline at end of file diff --git a/code/modules/ghostroles/spawner/antagonist/revenant.dm b/code/modules/ghostroles/spawner/antagonist/revenant.dm new file mode 100644 index 00000000000..2d59205d165 --- /dev/null +++ b/code/modules/ghostroles/spawner/antagonist/revenant.dm @@ -0,0 +1,45 @@ +/datum/ghostspawner/revenant + short_name = MODE_REVENANT + name = "Revenant" + desc = "A creature borne of bluespace, you are here to wreak havoc and put an end to bluespace experimentation, one station at a time." + tags = list("Antagonist") + + observers_only = TRUE + show_on_job_select = FALSE + + enabled = FALSE + landmark_name = "Revenant" + max_count = 0 + + spawn_mob = /mob/living/carbon/human/revenant + respawn_flag = ANIMAL + + var/has_fired = FALSE + +/datum/ghostspawner/revenant/spawn_mob(mob/user) + var/turf/T = select_spawnlocation() + var/mob/living/carbon/human/revenant/R + if(T) + R = new /mob/living/carbon/human/revenant(T) + else + to_chat(user, SPAN_WARNING("Unable to find any spawn point.")) + return + + if(R) + announce_ghost_joinleave(user, FALSE, "They are now a [name].") + R.ckey = user.ckey + + revenants.add_antagonist(R.mind, TRUE, TRUE, FALSE, TRUE, TRUE) + if(!has_fired) + INVOKE_ASYNC(src, .proc/play_ambience, R) + + return R + +/datum/ghostspawner/revenant/proc/play_ambience(var/mob/living/carbon/human/H) + for(var/m in player_list - H) + var/mob/M = m + if(M.ear_deaf) + continue + M.playsound_simple(get_turf(M), 'sound/ambience/tension/tension.ogg', 75, FALSE) + to_chat(M, FONT_LARGE(SPAN_CULT("A faint hum coming from the station walls fills your ears..."))) + has_fired = TRUE \ No newline at end of file diff --git a/code/modules/ghostroles/spawner/atom/borer.dm b/code/modules/ghostroles/spawner/atom/borer.dm index a31226367a9..783a8c159ce 100644 --- a/code/modules/ghostroles/spawner/atom/borer.dm +++ b/code/modules/ghostroles/spawner/atom/borer.dm @@ -4,6 +4,8 @@ desc = "Infest crew, reproduce, repeat." tags = list("Antagonist") + observers_only = TRUE + loc_type = GS_LOC_ATOM atom_add_message = "A borer has been birthed!" diff --git a/code/modules/ghostroles/spawner/atom/diona_nymph.dm b/code/modules/ghostroles/spawner/atom/diona_nymph.dm new file mode 100644 index 00000000000..25fa86fa305 --- /dev/null +++ b/code/modules/ghostroles/spawner/atom/diona_nymph.dm @@ -0,0 +1,10 @@ +/datum/ghostspawner/diona_nymph + short_name = "diona_nymph" + name = "Diona Nymph" + desc = "Join in as a Diona Nymph. Suck blood, act cuter than you really are." + tags = list("Simple Mobs") + + loc_type = GS_LOC_ATOM + atom_add_message = "A Diona Nymph has sprung up somewhere on the station!" + + spawn_mob = /mob/living/carbon/alien/diona \ No newline at end of file diff --git a/code/modules/ghostroles/spawner/atom/imaginary_friend.dm b/code/modules/ghostroles/spawner/atom/imaginary_friend.dm new file mode 100644 index 00000000000..d3e36bf2f4f --- /dev/null +++ b/code/modules/ghostroles/spawner/atom/imaginary_friend.dm @@ -0,0 +1,10 @@ +/datum/ghostspawner/imaginary_friend + short_name = "imaginary_friend" + name = "Imaginary Friend" + desc = "Join in as a Imaginary Friend, help them find their way throughout the round." + tags = list("Mental Trauma") + + loc_type = GS_LOC_ATOM + atom_add_message = "Someone has conjured up an imaginary friend!" + + spawn_mob = /mob/abstract/mental/friend \ No newline at end of file diff --git a/code/modules/ghostroles/spawner/atom/living_plant.dm b/code/modules/ghostroles/spawner/atom/living_plant.dm new file mode 100644 index 00000000000..f7b74f88203 --- /dev/null +++ b/code/modules/ghostroles/spawner/atom/living_plant.dm @@ -0,0 +1,10 @@ +/datum/ghostspawner/living_plant + short_name = "living_plant" + name = "Living Plant" + desc = "Join in as a Living Plant. What do plants do?" + tags = list("Simple Mobs") + + loc_type = GS_LOC_ATOM + atom_add_message = "A Living Plant has sprung up somewhere on the station!" + + spawn_mob = /mob/living \ No newline at end of file diff --git a/code/modules/ghostroles/spawner/atom/split_personality.dm b/code/modules/ghostroles/spawner/atom/split_personality.dm new file mode 100644 index 00000000000..849e9c43885 --- /dev/null +++ b/code/modules/ghostroles/spawner/atom/split_personality.dm @@ -0,0 +1,10 @@ +/datum/ghostspawner/split_personality + short_name = "split_personality" + name = "Split Personality" + desc = "Join in as a Split Personality, play the alter ego of one poor crewmember." + tags = list("Mental Trauma") + + loc_type = GS_LOC_ATOM + atom_add_message = "Someone has developed a split personality!" + + spawn_mob = /mob/living/mental/split_personality \ No newline at end of file diff --git a/code/modules/ghostroles/spawner/base.dm b/code/modules/ghostroles/spawner/base.dm index cd40b8ec4b8..0844e1b589e 100644 --- a/code/modules/ghostroles/spawner/base.dm +++ b/code/modules/ghostroles/spawner/base.dm @@ -2,7 +2,10 @@ var/short_name = null var/name = null var/desc = null + + var/observers_only = FALSE var/show_on_job_select = TRUE // Determines if the ghost spawner role is considered unique or not. + var/welcome_message = null var/list/tags = list() //Tags associated with that spawner @@ -71,6 +74,9 @@ if(!is_alien_whitelisted(user, req_species_whitelist)) return "Missing Species Whitelist" + if(observers_only && !isobserver(user)) + return "Observers Only" + return FALSE //Return a error message if the user CANT spawn. Otherwise FALSE diff --git a/code/modules/ghostroles/spawner/simplemob/reboot_maintdrone.dm b/code/modules/ghostroles/spawner/simplemob/reboot_maintdrone.dm new file mode 100644 index 00000000000..57512b27707 --- /dev/null +++ b/code/modules/ghostroles/spawner/simplemob/reboot_maintdrone.dm @@ -0,0 +1,10 @@ +/datum/ghostspawner/rebooted_maint_drone + short_name = "rebooted_maint_drone" + name = "Rebooted Maint Drone" + desc = "Join in as a Rebooted Maintenance Drone. Do dronelike things." + tags = list("Simple Mobs") + + loc_type = GS_LOC_ATOM + atom_add_message = "A maintenance drone has started its rebooting procedure!" + + spawn_mob = /mob/living/silicon/robot/drone \ No newline at end of file diff --git a/code/modules/ghosttrap/trap.dm b/code/modules/ghosttrap/trap.dm deleted file mode 100644 index 06ebf8dee1e..00000000000 --- a/code/modules/ghosttrap/trap.dm +++ /dev/null @@ -1,433 +0,0 @@ -// This system is used to grab a ghost from observers with the required preferences and -// lack of bans set. See posibrain.dm for an example of how they are called/used. ~Z - -var/list/ghost_traps - -/proc/get_ghost_trap(var/trap_key) - if(!ghost_traps) - populate_ghost_traps() - return ghost_traps[trap_key] - -/proc/get_ghost_traps() - if(!ghost_traps) - populate_ghost_traps() - return ghost_traps - -/proc/populate_ghost_traps() - ghost_traps = list() - for(var/traptype in typesof(/datum/ghosttrap)) - var/datum/ghosttrap/G = new traptype - ghost_traps[G.object] = G - -/datum/ghosttrap - var/object = "positronic brain" - var/respawn_check = 0//Which respawning test we check against - var/list/ban_checks = list("AI","Cyborg") - var/pref_check = BE_SYNTH - var/ghost_trap_message = "They are occupying a positronic brain now." - var/ghost_trap_role = "Positronic Brain" - var/can_set_own_name = TRUE - var/list_as_special_role = TRUE // If true, this entry will be listed as a special role in the character setup - - var/list/request_timeouts - -/datum/ghosttrap/New() - request_timeouts = list() - ..() - -// Check for bans, proper atom types, etc. -/datum/ghosttrap/proc/assess_candidate(var/mob/abstract/observer/candidate, var/mob/target) - if(!candidate.MayRespawn(1, respawn_check)) - return 0 - if(islist(ban_checks)) - for(var/bantype in ban_checks) - if(jobban_isbanned(candidate, "[bantype]")) - to_chat(candidate, "You are banned from one or more required roles and hence cannot enter play as \a [object].") - return 0 - return 1 - -// Print a message to all ghosts with the right prefs/lack of bans. -/datum/ghosttrap/proc/request_player(var/mob/target, var/request_string, var/request_timeout) - if(request_timeout) - request_timeouts[target] = world.time + request_timeout - destroyed_event.register(target, src, /datum/ghosttrap/proc/target_destroyed) - else - request_timeouts -= target - - for(var/mob/abstract/observer/O in player_list) - if(!O.MayRespawn()) - continue - if(islist(ban_checks)) - for(var/bantype in ban_checks) - if(jobban_isbanned(O, "[bantype]")) - continue - if(pref_check && !(pref_check in O.client.prefs.be_special_role)) - continue - if(O.client) - to_chat(O, "[ghost_follow_link(target, O)] [request_string] (Occupy)") - -/datum/ghosttrap/proc/target_destroyed(var/destroyed_target) - request_timeouts -= destroyed_target - -// Handles a response to request_player(). -/datum/ghosttrap/Topic(href, href_list) - if(..()) - return 1 - if(href_list["candidate"] && href_list["target"]) - var/mob/abstract/observer/candidate = locate(href_list["candidate"]) // BYOND magic. - var/mob/target = locate(href_list["target"]) // So much BYOND magic. - if(!target || !candidate) - return - if(candidate != usr) - return - if(request_timeouts[target] && world.time > request_timeouts[target]) - to_chat(candidate, "This occupation request is no longer valid.") - return - if(target.key) - to_chat(candidate, "The target is already occupied.") - return - if(assess_candidate(candidate, target)) - transfer_personality(candidate,target) - return 1 - -// Shunts the ckey/mind into the target mob. -/datum/ghosttrap/proc/transfer_personality(var/mob/candidate, var/mob/target) - if(!assess_candidate(candidate)) - return 0 - target.ckey = candidate.ckey - if(target.mind) - target.mind.assigned_role = "[ghost_trap_role]" - announce_ghost_joinleave(candidate, 0, "[ghost_trap_message]") - welcome_candidate(target) - set_new_name(target) - return 1 - -// Fluff! -/datum/ghosttrap/proc/welcome_candidate(var/mob/target) - to_chat(target, "You are a positronic brain, brought into existence on [station_name()].") - to_chat(target, "As a synthetic intelligence, you answer to all crewmembers, as well as the AI.") - to_chat(target, "Remember, the purpose of your existence is to serve the crew and the station. Above all else, do no harm.") - to_chat(target, "Use say [target.get_language_prefix()]b to speak to other artificial intelligences.") - var/turf/T = get_turf(target) - T.visible_message("\The [target] chimes quietly.") - var/obj/item/device/mmi/digital/posibrain/P = target.loc - if(!istype(P)) //wat - return - P.searching = 0 - P.name = "positronic brain ([P.brainmob.name])" - P.icon_state = "posibrain-occupied" - -// Allows people to set their own name. May or may not need to be removed for posibrains if people are dumbasses. -/datum/ghosttrap/proc/set_new_name(var/mob/target) - if(!can_set_own_name) - return - - var/newname = sanitizeSafe(input(target,"Enter a name, or leave blank for the default name.", "Name change","") as text, MAX_NAME_LEN) - if (newname != "") - target.real_name = newname - target.name = target.real_name - -/*********************************** -* Diona pods and walking mushrooms * -***********************************/ -/datum/ghosttrap/plant - object = "living plant" - ban_checks = list("Dionaea") - pref_check = BE_PLANT - ghost_trap_message = "They are occupying a living plant now." - ghost_trap_role = "Plant" - -/datum/ghosttrap/plant/welcome_candidate(var/mob/target) - to_chat(target, "You awaken slowly, stirring into sluggish motion as the air caresses you.") - // This is a hack, replace with some kind of species blurb proc. - if(istype(target,/mob/living/carbon/alien/diona)) - to_chat(target, "You are \a [target], one of a race of drifting interstellar plantlike creatures that sometimes share their seeds with human traders.") - to_chat(target, "Too much darkness will send you into shock and starve you, but light will help you heal.") - -/***************** -* Cortical Borer * -*****************/ -/datum/ghosttrap/borer - object = "cortical borer" - ban_checks = list("Borer") - pref_check = MODE_BORER - ghost_trap_message = "They are occupying a borer now." - ghost_trap_role = "Cortical Borer" - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/borer/welcome_candidate(var/mob/target) - to_chat(target, "You are a cortical borer! You are a brain slug that worms its way into the head of its victim. Use stealth, persuasion and your powers of mind control to keep you, your host and your eventual spawn safe and warm.") - to_chat(target, "You can speak to your victim with say, to other borers with say [target.get_language_prefix()]x, and use your Abilities tab to access powers.") - -/******************** -* Maintenance Drone * -*********************/ -/datum/ghosttrap/drone - object = "maintenance drone" - pref_check = BE_PAI - ghost_trap_message = "They are occupying a maintenance drone now." - ghost_trap_role = "Maintenance Drone" - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/drone/New() - respawn_check = MINISYNTH - ..() - -datum/ghosttrap/drone/assess_candidate(var/mob/abstract/observer/candidate, var/mob/target) - . = ..() - if(. && !target.can_be_possessed_by(candidate)) - return 0 - -datum/ghosttrap/drone/transfer_personality(var/mob/candidate, var/mob/living/silicon/robot/drone/drone) - if(!assess_candidate(candidate)) - return 0 - drone.transfer_personality(candidate.client) - -/******************** -* Mining Drone * -*********************/ -/datum/ghosttrap/mdrone - object = "mining drone" - pref_check = BE_PAI - ghost_trap_message = "They are occupying a mining drone now." - ghost_trap_role = "Mining Drone" - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/mdrone/New() - respawn_check = MINISYNTH - ..() - -/datum/ghosttrap/mdrone/assess_candidate(var/mob/abstract/observer/candidate, var/mob/target) - . = ..() - if(. && !target.can_be_possessed_by(candidate)) - return 0 - -datum/ghosttrap/drone/transfer_personality(var/mob/candidate, var/mob/living/silicon/robot/drone/drone) - if(!assess_candidate(candidate)) - return 0 - drone.transfer_personality(candidate.client) - var/tmp_health = drone.health - drone.revive() - drone.health = tmp_health - drone.updatehealth() - -/*********************************** -* Syndicate Cyborg * -***********************************/ - -/datum/ghosttrap/syndicateborg - object = "syndicate cyborg" - ban_checks = list("Antagonist","AI","Cyborg") - pref_check = BE_SYNTH - ghost_trap_message = "They are occupying a syndicate cyborg now." - ghost_trap_role = "Syndicate Cyborg" - can_set_own_name = TRUE - list_as_special_role = FALSE - -/datum/ghosttrap/syndicateborg/welcome_candidate(var/mob/target) - to_chat(target, "You are a syndicate cyborg, bound to help and follow the orders of the mercenaries that are deploying you. Remember to speak to the other mercenaries to know more about their plans") - mercs.add_antagonist_mind(target.mind,1) - -/************** -* pAI * -**************/ -/datum/ghosttrap/pai - object = "pAI" - pref_check = BE_PAI - ghost_trap_message = "They are occupying a pAI now." - ghost_trap_role = "pAI" - -datum/ghosttrap/pai/assess_candidate(var/mob/candidate, var/mob/target) - return 0 - -datum/ghosttrap/pai/transfer_personality(var/mob/candidate, var/mob/living/silicon/robot/drone/drone) - return 0 - -/************** -* Wizard Familiar * -**************/ - -/datum/ghosttrap/familiar - object = "wizard familiar" - pref_check = MODE_WIZARD - ghost_trap_message = "They are occupying a familiar now." - ghost_trap_role = "Wizard Familiar" - ban_checks = list(MODE_WIZARD) - list_as_special_role = FALSE - -/datum/ghosttrap/familiar/welcome_candidate(var/mob/target) - return 0 - -/************** -* Skeleton minion * -**************/ - -/datum/ghosttrap/skeleton - object = "skeleton minion" - pref_check = MODE_WIZARD - ghost_trap_message = "They are occupying a skeleton minion." - ghost_trap_role = "Skeleton Minion" - ban_checks = list(MODE_WIZARD) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/skeleton/welcome_candidate(var/mob/target) - return 0 - -//Gamemodes - -/datum/ghosttrap/merc - object = "Mercenary" - pref_check = MODE_MERCENARY - ghost_trap_message = "They are occupying a mercenary." - ghost_trap_role = "Mercenary" - ban_checks = list(MODE_MERCENARY) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/merc/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/raider - object = "Raider" - pref_check = MODE_RAIDER - ghost_trap_message = "They are occupying a raider." - ghost_trap_role = "Raider" - ban_checks = list(MODE_RAIDER) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/raider/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/ninja - object = "Ninja" - pref_check = MODE_NINJA - ghost_trap_message = "They are occupying a ninja." - ghost_trap_role = "Ninja" - ban_checks = list(MODE_NINJA) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/ninja/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/wizard - object = "Wizard" - pref_check = MODE_WIZARD - ghost_trap_message = "They are occupying a wizard." - ghost_trap_role = "Wizard" - ban_checks = list(MODE_WIZARD) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/wizard/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/malf - object = "AI Malfunction" - pref_check = MODE_MALFUNCTION - ghost_trap_message = "They are occupying a malfunctioning AI." - ghost_trap_role = "Malfuntioning AI" - ban_checks = list(MODE_MALFUNCTION) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/malf/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/ert - object = "Emergency Responder" - pref_check = MODE_ERT - ghost_trap_message = "They are occupying an ERT member." - ghost_trap_role = "ERT member" - ban_checks = list(MODE_ERT) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/ert/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/changeling - object = "Changeling" - pref_check = MODE_CHANGELING - ghost_trap_message = "They are occupying a changeling." - ghost_trap_role = "Changeling" - ban_checks = list(MODE_CHANGELING) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/changeling/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/cultist - object = "Cult" - pref_check = MODE_CULTIST - ghost_trap_message = "They are occupying a cultist." - ghost_trap_role = "Cultist" - ban_checks = list(MODE_CULTIST) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/cultist/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/traitor - object = "Traitor" - pref_check = MODE_TRAITOR - ghost_trap_message = "They are occupying a traitor." - ghost_trap_role = "Traitor" - ban_checks = list(MODE_TRAITOR) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/traitor/welcome_candidate(var/mob/target) - to_chat(target, " Check your notes for your uplink code!") - return 1 - -/datum/ghosttrap/vampire - object = "Vampire" - pref_check = MODE_VAMPIRE - ghost_trap_message = "They are occupying a vampire." - ghost_trap_role = "Vampire" - ban_checks = list(MODE_VAMPIRE) - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/vampire/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/special - object = "Special" - pref_check = null - ghost_trap_message = "They are occupying a person." - ghost_trap_role = "person" - ban_checks = list() - can_set_own_name = FALSE - list_as_special_role = FALSE - -/datum/ghosttrap/special/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/brainwashed - object = "split personality" - ghost_trap_message = "They are a split personality now." - ghost_trap_role = "Split personality" - can_set_own_name = TRUE - list_as_special_role = TRUE - -/datum/ghosttrap/brainwashed/welcome_candidate(var/mob/target) - return 0 - -/datum/ghosttrap/friend - object = "friend" - ghost_trap_message = "They are an imaginary friend now." - ghost_trap_role = "Imaginary friend" - can_set_own_name = TRUE - list_as_special_role = TRUE - -/datum/ghosttrap/friend/welcome_candidate(var/mob/target) - return 0 diff --git a/code/modules/goonchat/browserassets/css/browserOutput.css b/code/modules/goonchat/browserassets/css/browserOutput.css index 34bc2f672a4..4b5f760fe25 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput.css +++ b/code/modules/goonchat/browserassets/css/browserOutput.css @@ -363,6 +363,7 @@ h1.alert, h2.alert {color: #a4bad6;} .yassa {color: #6323b6;} .delvahhi {color: #914123; font-weight: bold;} .siiktau {color: #be3434;} +.revenant {color: #1ca5aa; font-style: italic;} .interface {color: #750e75;} diff --git a/code/modules/goonchat/browserassets/css/browserOutput_white.css b/code/modules/goonchat/browserassets/css/browserOutput_white.css index 11b73d8acef..e6212e178e9 100644 --- a/code/modules/goonchat/browserassets/css/browserOutput_white.css +++ b/code/modules/goonchat/browserassets/css/browserOutput_white.css @@ -360,6 +360,7 @@ h1.alert, h2.alert {color: #000080;} .yassa {color: #400987;} .delvahhi {color: #5E2612; font-weight: bold;} .siiktau {color: #A52A2A;} +.revenant {color: #215a5c; font-style: italic;} .interface {color: #750e75;} diff --git a/code/modules/heavy_vehicle/equipment/engineering.dm b/code/modules/heavy_vehicle/equipment/engineering.dm index 6ee4c4bc6d3..44f29631e5c 100644 --- a/code/modules/heavy_vehicle/equipment/engineering.dm +++ b/code/modules/heavy_vehicle/equipment/engineering.dm @@ -31,7 +31,7 @@ /obj/item/extinguisher/mech/New() reagents = new/datum/reagents(max_water) reagents.my_atom = src - reagents.add_reagent(/datum/reagent/toxin/fertilizer/monoammoniumphosphate, max_water) + reagents.add_reagent(/decl/reagent/toxin/fertilizer/monoammoniumphosphate, max_water) ..() /obj/item/extinguisher/mech/get_hardpoint_maptext() diff --git a/code/modules/hydroponics/beekeeping/honey_extractor.dm b/code/modules/hydroponics/beekeeping/honey_extractor.dm index f212f9b79e2..536c68cb239 100644 --- a/code/modules/hydroponics/beekeeping/honey_extractor.dm +++ b/code/modules/hydroponics/beekeeping/honey_extractor.dm @@ -34,7 +34,7 @@ return var/obj/item/reagent_containers/glass/G = I var/transferred = min(G.reagents.maximum_volume - G.reagents.total_volume, honey) - G.reagents.add_reagent(/datum/reagent/nutriment/honey, transferred) + G.reagents.add_reagent(/decl/reagent/nutriment/honey, transferred) honey -= transferred user.visible_message(SPAN_NOTICE("\The [user] collects honey from \the [src] into \the [G]."), SPAN_NOTICE("You collect [transferred] units of honey from \the [src] into \the [G].")) return @@ -47,4 +47,4 @@ contained_frame.forceMove(get_turf(src)) contained_frame = null new /obj/item/stack/wax(get_turf(src)) - icon_state = "centrifuge" \ No newline at end of file + icon_state = "centrifuge" diff --git a/code/modules/hydroponics/beekeeping/smoker.dm b/code/modules/hydroponics/beekeeping/smoker.dm index 4111221eaa3..588452078bd 100644 --- a/code/modules/hydroponics/beekeeping/smoker.dm +++ b/code/modules/hydroponics/beekeeping/smoker.dm @@ -51,11 +51,11 @@ smoke_at(A) /obj/item/bee_smoker/proc/get_fuel() - return reagents.get_reagent_amount(/datum/reagent/fuel) + return REAGENT_VOLUME(reagents, /decl/reagent/fuel) /obj/item/bee_smoker/proc/remove_fuel(var/amount = 1, var/mob/M = null) if(get_fuel() >= amount) - reagents.remove_reagent(/datum/reagent/fuel, amount) + reagents.remove_reagent(/decl/reagent/fuel, amount) return TRUE else if(M) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index 8ac23996a45..6dbafc67979 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -54,7 +54,7 @@ var/list/data = list() if(reagent_data.len > 1 && potency > 0) rtotal += round(potency/reagent_data[2]) - if(rid == /datum/reagent/nutriment) + if(rid == /decl/reagent/nutriment) data[seed.seed_name] = max(1,rtotal) reagents.add_reagent(rid,max(1,rtotal),data) update_desc() @@ -74,33 +74,33 @@ desc = SSplants.product_descs["[seed.uid]"] else var/list/descriptors = list() - if(reagents.has_reagent(/datum/reagent/sugar) || reagents.has_reagent(/datum/reagent/nutriment/cherryjelly) || reagents.has_reagent(/datum/reagent/nutriment/honey) || reagents.has_reagent(/datum/reagent/drink/berryjuice)) + if(reagents.has_reagent(/decl/reagent/sugar) || reagents.has_reagent(/decl/reagent/nutriment/cherryjelly) || reagents.has_reagent(/decl/reagent/nutriment/honey) || reagents.has_reagent(/decl/reagent/drink/berryjuice)) descriptors |= "sweet" - if(reagents.has_reagent(/datum/reagent/dylovene)) + if(reagents.has_reagent(/decl/reagent/dylovene)) descriptors |= "astringent" - if(reagents.has_reagent(/datum/reagent/frostoil)) + if(reagents.has_reagent(/decl/reagent/frostoil)) descriptors |= "numbing" - if(reagents.has_reagent(/datum/reagent/nutriment)) + if(reagents.has_reagent(/decl/reagent/nutriment)) descriptors |= "nutritious" - if(reagents.has_reagent(/datum/reagent/capsaicin/condensed) || reagents.has_reagent(/datum/reagent/capsaicin)) + if(reagents.has_reagent(/decl/reagent/capsaicin/condensed) || reagents.has_reagent(/decl/reagent/capsaicin)) descriptors |= "spicy" - if(reagents.has_reagent(/datum/reagent/nutriment/coco)) + if(reagents.has_reagent(/decl/reagent/nutriment/coco)) descriptors |= "bitter" - if(reagents.has_reagent(/datum/reagent/drink/orangejuice) || reagents.has_reagent(/datum/reagent/drink/lemonjuice) || reagents.has_reagent(/datum/reagent/drink/limejuice)) + if(reagents.has_reagent(/decl/reagent/drink/orangejuice) || reagents.has_reagent(/decl/reagent/drink/lemonjuice) || reagents.has_reagent(/decl/reagent/drink/limejuice)) descriptors |= "sweet-sour" - if(reagents.has_reagent(/datum/reagent/radium) || reagents.has_reagent(/datum/reagent/uranium)) + if(reagents.has_reagent(/decl/reagent/radium) || reagents.has_reagent(/decl/reagent/uranium)) descriptors |= "radioactive" - if(reagents.has_reagent(/datum/reagent/toxin/amatoxin) || reagents.has_reagent(/datum/reagent/toxin)) + if(reagents.has_reagent(/decl/reagent/toxin/amatoxin) || reagents.has_reagent(/decl/reagent/toxin)) descriptors |= "poisonous" - if(reagents.has_reagent(/datum/reagent/psilocybin) || reagents.has_reagent(/datum/reagent/space_drugs)) + if(reagents.has_reagent(/decl/reagent/psilocybin) || reagents.has_reagent(/decl/reagent/space_drugs)) descriptors |= "hallucinogenic" - if(reagents.has_reagent(/datum/reagent/bicaridine) || reagents.has_reagent(/datum/reagent/dylovene)) + if(reagents.has_reagent(/decl/reagent/bicaridine) || reagents.has_reagent(/decl/reagent/dylovene)) descriptors |= "medicinal" - if(reagents.has_reagent(/datum/reagent/gold)) + if(reagents.has_reagent(/decl/reagent/gold)) descriptors |= "shiny" - if(reagents.has_reagent(/datum/reagent/lube)) + if(reagents.has_reagent(/decl/reagent/lube)) descriptors |= "slippery" - if(reagents.has_reagent(/datum/reagent/acid/polyacid) || reagents.has_reagent(/datum/reagent/acid) || reagents.has_reagent(/datum/reagent/acid/hydrochloric)) + if(reagents.has_reagent(/decl/reagent/acid/polyacid) || reagents.has_reagent(/decl/reagent/acid) || reagents.has_reagent(/decl/reagent/acid/hydrochloric)) descriptors |= "acidic" if(seed.get_trait(TRAIT_JUICY)) descriptors |= "juicy" @@ -194,7 +194,7 @@ qdel(src) return else if(seed.chems) - if(istype(W,/obj/item/material/hatchet) && !isnull(seed.chems[/datum/reagent/woodpulp])) + if(istype(W,/obj/item/material/hatchet) && !isnull(seed.chems[/decl/reagent/woodpulp])) user.show_message("You make planks out of \the [src]!", 1) playsound(loc, 'sound/effects/woodcutting.ogg', 50, 1) var/flesh_colour = seed.get_trait(TRAIT_FLESH_COLOUR) @@ -211,17 +211,17 @@ to_chat(user, "You add the newly-formed wood to the stack. It now contains [NG.amount] planks.") qdel(src) return - else if(!isnull(seed.chems[/datum/reagent/drink/potatojuice])) + else if(!isnull(seed.chems[/decl/reagent/drink/potatojuice])) to_chat(user, "You slice \the [src] into sticks.") new /obj/item/reagent_containers/food/snacks/rawsticks(get_turf(src)) qdel(src) return - else if(!isnull(seed.chems[/datum/reagent/drink/carrotjuice])) + else if(!isnull(seed.chems[/decl/reagent/drink/carrotjuice])) to_chat(user, "You slice \the [src] into sticks.") new /obj/item/reagent_containers/food/snacks/carrotfries(get_turf(src)) qdel(src) return - else if(!isnull(seed.chems[/datum/reagent/drink/milk/soymilk])) + else if(!isnull(seed.chems[/decl/reagent/drink/milk/soymilk])) to_chat(user, "You roughly chop up \the [src].") new /obj/item/reagent_containers/food/snacks/soydope(get_turf(src)) qdel(src) diff --git a/code/modules/hydroponics/grown_inedible.dm b/code/modules/hydroponics/grown_inedible.dm index cd680fdc80e..ab1f453eb51 100644 --- a/code/modules/hydroponics/grown_inedible.dm +++ b/code/modules/hydroponics/grown_inedible.dm @@ -29,10 +29,10 @@ potency = S.get_trait(TRAIT_POTENCY) for(var/rid in S.chems) - var/list/reagent_data = S.chems[rid] - var/rtotal = reagent_data[1] - if(reagent_data.len > 1 && potency > 0) - rtotal += round(potency/reagent_data[2]) + var/list/chem_data = S.chems[rid] + var/rtotal = chem_data[1] + if(chem_data.len > 1 && potency > 0) + rtotal += round(potency/chem_data[2]) reagents.add_reagent(rid,max(1,rtotal)) /obj/item/corncob diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index 3554d1677f2..7e2177b7feb 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -413,48 +413,48 @@ chems = list() if(prob(80)) - chems[/datum/reagent/nutriment] = list(rand(1,10),rand(10,20)) + chems[/decl/reagent/nutriment] = list(rand(1,10),rand(10,20)) var/additional_chems = rand(0,5) if(additional_chems) var/list/possible_chems = list( - /datum/reagent/acetone, - /datum/reagent/alkysine, - /datum/reagent/aslimetoxin, - /datum/reagent/bicaridine, - /datum/reagent/butazoline, - /datum/reagent/blood, - /datum/reagent/cryoxadone, - /datum/reagent/cryptobiolin, - /datum/reagent/toxin/cyanide, - /datum/reagent/dermaline, - /datum/reagent/dexalin, - /datum/reagent/ethylredoxrazine, - /datum/reagent/hydrazine, - /datum/reagent/hyperzine, - /datum/reagent/hyronalin, - /datum/reagent/impedrezene, - /datum/reagent/mercury, - /datum/reagent/mindbreaker, - /datum/reagent/inaprovaline, - /datum/reagent/peridaxon, - /datum/reagent/toxin/phoron, - /datum/reagent/toxin/plasticide, - /datum/reagent/potassium, - /datum/reagent/radium, - /datum/reagent/rezadone, - /datum/reagent/ryetalyn, - /datum/reagent/slimejelly, - /datum/reagent/space_drugs, - /datum/reagent/soporific, - /datum/reagent/sugar, - /datum/reagent/synaptizine, - /datum/reagent/thermite, - /datum/reagent/toxin, - /datum/reagent/mortaphenyl, - /datum/reagent/water, - /datum/reagent/woodpulp, + /decl/reagent/acetone, + /decl/reagent/alkysine, + /decl/reagent/aslimetoxin, + /decl/reagent/bicaridine, + /decl/reagent/butazoline, + /decl/reagent/blood, + /decl/reagent/cryoxadone, + /decl/reagent/cryptobiolin, + /decl/reagent/toxin/cyanide, + /decl/reagent/dermaline, + /decl/reagent/dexalin, + /decl/reagent/ethylredoxrazine, + /decl/reagent/hydrazine, + /decl/reagent/hyperzine, + /decl/reagent/hyronalin, + /decl/reagent/impedrezene, + /decl/reagent/mercury, + /decl/reagent/mindbreaker, + /decl/reagent/inaprovaline, + /decl/reagent/peridaxon, + /decl/reagent/toxin/phoron, + /decl/reagent/toxin/plasticide, + /decl/reagent/potassium, + /decl/reagent/radium, + /decl/reagent/rezadone, + /decl/reagent/ryetalyn, + /decl/reagent/slimejelly, + /decl/reagent/space_drugs, + /decl/reagent/soporific, + /decl/reagent/sugar, + /decl/reagent/synaptizine, + /decl/reagent/thermite, + /decl/reagent/toxin, + /decl/reagent/mortaphenyl, + /decl/reagent/water, + /decl/reagent/woodpulp, ) for(var/x=1;x<=additional_chems;x++) diff --git a/code/modules/hydroponics/seed_datums/adhomai.dm b/code/modules/hydroponics/seed_datums/adhomai.dm index 66b12071023..e4cae8ba170 100644 --- a/code/modules/hydroponics/seed_datums/adhomai.dm +++ b/code/modules/hydroponics/seed_datums/adhomai.dm @@ -5,7 +5,7 @@ name = "shand" seed_name = "S'Rendarr's hand" display_name = "S'Rendarr's hand leaves" - chems = list(/datum/reagent/toxin/tobacco = list(1, 5), /datum/reagent/bicaridine = list(3, 5), /datum/reagent/mental/nicotine = list(1, 3)) + chems = list(/decl/reagent/toxin/tobacco = list(1, 5), /decl/reagent/bicaridine = list(3, 5), /decl/reagent/mental/nicotine = list(1, 3)) kitchen_tag = "shand" /datum/seed/shand/setup_traits() @@ -28,7 +28,7 @@ name = "mtear" seed_name = "Messa's tear" display_name = "Messa's tear leaves" - chems = list(/datum/reagent/nutriment/honey = list(1, 10), /datum/reagent/kelotane = list(3, 5)) + chems = list(/decl/reagent/nutriment/honey = list(1, 10), /decl/reagent/kelotane = list(3, 5)) kitchen_tag = "mtear" /datum/seed/mtear/setup_traits() @@ -51,7 +51,7 @@ name = "earthenroot" seed_name = "earthen-root" display_name = "earthen-roots" - chems = list(/datum/reagent/nutriment = list(0, 5), /datum/reagent/sugar = list(1, 5), /datum/reagent/drink/earthenrootjuice = list(4, 8)) + chems = list(/decl/reagent/nutriment = list(0, 5), /decl/reagent/sugar = list(1, 5), /decl/reagent/drink/earthenrootjuice = list(4, 8)) kitchen_tag = "earthenroot" /datum/seed/earthenroot/setup_traits() @@ -74,7 +74,7 @@ name = "nifberries" seed_name = "dirt berries" display_name = "dirt berries shrub" - chems = list(/datum/reagent/nutriment = list(0, 15), /datum/reagent/nutriment/triglyceride/oil = list(1, 5)) + chems = list(/decl/reagent/nutriment = list(0, 15), /decl/reagent/nutriment/triglyceride/oil = list(1, 5)) kitchen_tag = "nifberries" /datum/seed/nifberries/setup_traits() @@ -102,7 +102,7 @@ seed_noun = SEED_NOUN_NODES display_name = "blizzard ear stalks" mutants = null - chems = list(/datum/reagent/nutriment/flour/nfrihi = list(10, 10)) + chems = list(/decl/reagent/nutriment/flour/nfrihi = list(10, 10)) splat_type = /obj/effect/plant kitchen_tag = "nfrihi" @@ -129,7 +129,7 @@ display_name = "sugar trees" seed_noun = SEED_NOUN_SEEDS mutants = null - chems = list(/datum/reagent/sugar = list(2, 10)) + chems = list(/decl/reagent/sugar = list(2, 10)) kitchen_tag = "nmshaan" /datum/seed/nmshaan/setup_traits() diff --git a/code/modules/hydroponics/seed_datums/flowers.dm b/code/modules/hydroponics/seed_datums/flowers.dm index 532f70f597a..fcd0598f163 100644 --- a/code/modules/hydroponics/seed_datums/flowers.dm +++ b/code/modules/hydroponics/seed_datums/flowers.dm @@ -3,7 +3,7 @@ name = "harebells" seed_name = "harebell" display_name = "harebells" - chems = list(/datum/reagent/nutriment = list(1,20)) + chems = list(/decl/reagent/nutriment = list(1,20)) /obj/item/seeds/harebell seed_type = "harebells" @@ -23,7 +23,7 @@ name = "poppies" seed_name = "poppy" display_name = "poppies" - chems = list(/datum/reagent/nutriment = list(1,20), /datum/reagent/bicaridine = list(1,10)) + chems = list(/decl/reagent/nutriment = list(1,20), /decl/reagent/bicaridine = list(1,10)) kitchen_tag = "poppy" /datum/seed/flower/poppy/setup_traits() @@ -58,4 +58,4 @@ set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15) /obj/item/seeds/sunflowerseed - seed_type = "sunflowers" \ No newline at end of file + seed_type = "sunflowers" diff --git a/code/modules/hydroponics/seed_datums/fruits.dm b/code/modules/hydroponics/seed_datums/fruits.dm index 045e8257b2d..99c6eceb160 100644 --- a/code/modules/hydroponics/seed_datums/fruits.dm +++ b/code/modules/hydroponics/seed_datums/fruits.dm @@ -5,7 +5,7 @@ name = "lime" seed_name = "lime" display_name = "lime trees" - chems = list(/datum/reagent/nutriment = list(1,20), /datum/reagent/drink/limejuice = list(10,20)) + chems = list(/decl/reagent/nutriment = list(1,20), /decl/reagent/drink/limejuice = list(10,20)) kitchen_tag = "lime" /datum/seed/citrus/setup_traits() @@ -28,7 +28,7 @@ name = "lemon" seed_name = "lemon" display_name = "lemon trees" - chems = list(/datum/reagent/nutriment = list(1,20), /datum/reagent/drink/lemonjuice = list(10,20)) + chems = list(/decl/reagent/nutriment = list(1,20), /decl/reagent/drink/lemonjuice = list(10,20)) kitchen_tag = "lemon" /datum/seed/citrus/lemon/setup_traits() @@ -46,7 +46,7 @@ seed_name = "orange" display_name = "orange trees" kitchen_tag = "orange" - chems = list(/datum/reagent/nutriment = list(1,20), /datum/reagent/drink/orangejuice = list(10,20)) + chems = list(/decl/reagent/nutriment = list(1,20), /decl/reagent/drink/orangejuice = list(10,20)) /datum/seed/citrus/orange/setup_traits() ..() @@ -63,7 +63,7 @@ seed_name = "grape" display_name = "grapevines" mutants = list("greengrapes") - chems = list(/datum/reagent/nutriment = list(1,10), /datum/reagent/sugar = list(1,5), /datum/reagent/drink/grapejuice = list(10,10)) + chems = list(/decl/reagent/nutriment = list(1,10), /decl/reagent/sugar = list(1,5), /decl/reagent/drink/grapejuice = list(10,10)) /datum/seed/grapes/setup_traits() ..() @@ -87,7 +87,7 @@ seed_name = "green grape" display_name = "green grapevines" mutants = null - chems = list(/datum/reagent/nutriment = list(1,10), /datum/reagent/kelotane = list(3,5), /datum/reagent/drink/grapejuice = list(10,10)) + chems = list(/decl/reagent/nutriment = list(1,10), /decl/reagent/kelotane = list(3,5), /decl/reagent/drink/grapejuice = list(10,10)) /datum/seed/grapes/green/setup_traits() ..() @@ -104,7 +104,7 @@ seed_name = "berry" display_name = "berry bush" mutants = list("glowberries","poisonberries","blueberries") - chems = list(/datum/reagent/nutriment = list(1,10), /datum/reagent/drink/berryjuice = list(10,10)) + chems = list(/decl/reagent/nutriment = list(1,10), /decl/reagent/drink/berryjuice = list(10,10)) kitchen_tag = "berries" /datum/seed/berry/setup_traits() @@ -129,7 +129,7 @@ seed_name = "blueberry" display_name = "blueberry bush" mutants = list("berries","poisonberries","glowberries") - chems = list(/datum/reagent/nutriment = list(1,10), /datum/reagent/drink/berryjuice = list(10,10)) + chems = list(/decl/reagent/nutriment = list(1,10), /decl/reagent/drink/berryjuice = list(10,10)) /datum/seed/berry/blue/setup_traits() ..() @@ -149,7 +149,7 @@ seed_name = "glowberry" display_name = "glowberry bush" mutants = null - chems = list(/datum/reagent/nutriment = list(1,10), /datum/reagent/uranium = list(3,5)) + chems = list(/decl/reagent/nutriment = list(1,10), /decl/reagent/uranium = list(3,5)) /datum/seed/berry/glow/setup_traits() ..() @@ -172,7 +172,7 @@ seed_name = "poison berry" display_name = "poison berry bush" mutants = list("deathberries") - chems = list(/datum/reagent/nutriment = list(1), /datum/reagent/toxin = list(3,5), /datum/reagent/toxin/poisonberryjuice = list(10,5)) + chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/toxin = list(3,5), /decl/reagent/toxin/poisonberryjuice = list(10,5)) /datum/seed/berry/poison/setup_traits() ..() @@ -188,7 +188,7 @@ seed_name = "death berry" display_name = "death berry bush" mutants = null - chems = list(/datum/reagent/nutriment = list(1), /datum/reagent/toxin = list(3,3), /datum/reagent/lexorin = list(1,5)) + chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/toxin = list(3,3), /decl/reagent/lexorin = list(1,5)) /datum/seed/berry/poison/death/setup_traits() ..() @@ -207,7 +207,7 @@ seed_name = "apple" display_name = "apple tree" mutants = list("poisonapple","goldapple") - chems = list(/datum/reagent/drink/applejuice = list(1,10), /datum/reagent/nutriment = list(1,10)) + chems = list(/decl/reagent/drink/applejuice = list(1,10), /decl/reagent/nutriment = list(1,10)) kitchen_tag = "apple" /datum/seed/apple/setup_traits() @@ -229,7 +229,7 @@ /datum/seed/apple/poison name = "poisonapple" mutants = null - chems = list(/datum/reagent/toxin/cyanide = list(1,5)) + chems = list(/decl/reagent/toxin/cyanide = list(1,5)) /obj/item/seeds/poisonedappleseed seed_type = "poisonapple" @@ -239,7 +239,7 @@ seed_name = "golden apple" display_name = "gold apple tree" mutants = null - chems = list(/datum/reagent/drink/applejuice = list(1,10), MATERIAL_GOLD = list(1,5)) + chems = list(/decl/reagent/drink/applejuice = list(1,10), MATERIAL_GOLD = list(1,5)) kitchen_tag = "goldapple" /datum/seed/apple/gold/setup_traits() @@ -260,7 +260,7 @@ name = "cacao" seed_name = "cacao" display_name = "cacao tree" - chems = list(/datum/reagent/nutriment = list(1,10), /datum/reagent/nutriment/coco = list(4,5)) + chems = list(/decl/reagent/nutriment = list(1,10), /decl/reagent/nutriment/coco = list(4,5)) /obj/item/seeds/cocoapodseed seed_type = "cacao" @@ -282,7 +282,7 @@ name = "banana" seed_name = "banana" display_name = "banana tree" - chems = list(/datum/reagent/drink/banana = list(10,10)) + chems = list(/decl/reagent/drink/banana = list(10,10)) trash_type = /obj/item/bananapeel kitchen_tag = "banana" @@ -308,7 +308,7 @@ seed_name = "cherry" seed_noun = SEED_NOUN_PITS display_name = "cherry tree" - chems = list(/datum/reagent/nutriment = list(1,15), /datum/reagent/sugar = list(1,15), /datum/reagent/nutriment/cherryjelly = list(10,15)) + chems = list(/decl/reagent/nutriment = list(1,15), /decl/reagent/sugar = list(1,15), /decl/reagent/nutriment/cherryjelly = list(10,15)) kitchen_tag = "cherries" /datum/seed/cherries/setup_traits() @@ -331,7 +331,7 @@ name = "watermelon" seed_name = "watermelon" display_name = "watermelon vine" - chems = list(/datum/reagent/nutriment = list(1,6), /datum/reagent/drink/watermelonjuice = list(10,6)) + chems = list(/decl/reagent/nutriment = list(1,6), /decl/reagent/drink/watermelonjuice = list(10,6)) /datum/seed/watermelon/setup_traits() ..() @@ -357,7 +357,7 @@ name = "pumpkin" seed_name = "pumpkin" display_name = "pumpkin vine" - chems = list(/datum/reagent/nutriment/pumpkinpulp = list(5,6)) + chems = list(/decl/reagent/nutriment/pumpkinpulp = list(5,6)) kitchen_tag = "pumpkin" /datum/seed/pumpkin/setup_traits() diff --git a/code/modules/hydroponics/seed_datums/grains.dm b/code/modules/hydroponics/seed_datums/grains.dm index 06d73303f37..838a5bc393f 100644 --- a/code/modules/hydroponics/seed_datums/grains.dm +++ b/code/modules/hydroponics/seed_datums/grains.dm @@ -2,7 +2,7 @@ name = "wheat" seed_name = "wheat" display_name = "wheat stalks" - chems = list(/datum/reagent/nutriment = list(1,25), /datum/reagent/nutriment/flour = list(15,15)) + chems = list(/decl/reagent/nutriment = list(1,25), /decl/reagent/nutriment/flour = list(15,15)) kitchen_tag = "wheat" /datum/seed/wheat/setup_traits() @@ -25,7 +25,7 @@ name = "corn" seed_name = "corn" display_name = "ears of corn" - chems = list(/datum/reagent/nutriment = list(1,10), /datum/reagent/nutriment/triglyceride/oil/corn = list(1,10)) + chems = list(/decl/reagent/nutriment = list(1,10), /decl/reagent/nutriment/triglyceride/oil/corn = list(1,10)) kitchen_tag = "corn" trash_type = /obj/item/corncob @@ -50,7 +50,7 @@ name = "rice" seed_name = "rice" display_name = "rice stalks" - chems = list(/datum/reagent/nutriment = list(1,25), /datum/reagent/nutriment/rice = list(10,15)) + chems = list(/decl/reagent/nutriment = list(1,25), /decl/reagent/nutriment/rice = list(10,15)) kitchen_tag = "rice" /datum/seed/rice/setup_traits() diff --git a/code/modules/hydroponics/seed_datums/jargon.dm b/code/modules/hydroponics/seed_datums/jargon.dm index 7749a5a374b..77fafe6b6e7 100644 --- a/code/modules/hydroponics/seed_datums/jargon.dm +++ b/code/modules/hydroponics/seed_datums/jargon.dm @@ -5,7 +5,7 @@ seed_name = "dyn" display_name = "dyn bush" mutants = null - chems = list(/datum/reagent/drink/dynjuice = list(2, 2), /datum/reagent/dylovene = list(0, 1)) + chems = list(/decl/reagent/drink/dynjuice = list(2, 2), /decl/reagent/dylovene = list(0, 1)) kitchen_tag = "dyn leaf" /datum/seed/dyn/setup_traits() @@ -25,7 +25,7 @@ name = "wulumunusha" seed_name = "wulumunusha" display_name = "wulumunusha vines" - chems = list(/datum/reagent/wulumunusha = list(3, 5)) + chems = list(/decl/reagent/wulumunusha = list(3, 5)) kitchen_tag = "wulumunusha" /datum/seed/wulumunusha/setup_traits() @@ -47,7 +47,7 @@ seed_name = "q'lort bulb" display_name = "q'lort" mutants = null - chems = list(/datum/reagent/nutriment = list(3, 5)) + chems = list(/decl/reagent/nutriment = list(3, 5)) kitchen_tag = "q'lort" /datum/seed/qlort/setup_traits() @@ -70,7 +70,7 @@ seed_name = "guami fruit" display_name = "guami vine" mutants = null - chems = list(/datum/reagent/nutriment = list(5, 9)) + chems = list(/decl/reagent/nutriment = list(5, 9)) kitchen_tag = "guami" /datum/seed/guami/setup_traits() @@ -95,7 +95,7 @@ seed_name = "eki" display_name = "eki" mutants = null - chems = list(/datum/reagent/nutriment = list(7, 11)) + chems = list(/decl/reagent/nutriment = list(7, 11)) kitchen_tag = "eki" /datum/seed/eki/setup_traits() @@ -119,7 +119,7 @@ seed_name = "ylpha berry" display_name = "ylpha berry bush" mutants = null - chems = list(/datum/reagent/nutriment = list(3, 5)) + chems = list(/decl/reagent/nutriment = list(3, 5)) kitchen_tag = "ylpha" /datum/seed/ylpha/setup_traits() diff --git a/code/modules/hydroponics/seed_datums/misc.dm b/code/modules/hydroponics/seed_datums/misc.dm index 93a4a14fb75..848acc0ebc5 100644 --- a/code/modules/hydroponics/seed_datums/misc.dm +++ b/code/modules/hydroponics/seed_datums/misc.dm @@ -22,7 +22,7 @@ name = "sugarcane" seed_name = "sugarcane" display_name = "sugarcanes" - chems = list(/datum/reagent/sugar = list(4,5)) + chems = list(/decl/reagent/sugar = list(4,5)) /datum/seed/sugarcane/setup_traits() ..() @@ -44,7 +44,7 @@ name = "grass" seed_name = "grass" display_name = "grass" - chems = list(/datum/reagent/nutriment = list(1,20)) + chems = list(/decl/reagent/nutriment = list(1,20)) kitchen_tag = "grass" /datum/seed/grass/setup_traits() @@ -81,7 +81,7 @@ name = "peppercorn" seed_name = "peppercorn" display_name = "black pepper" - chems = list(/datum/reagent/blackpepper = list(10,10)) + chems = list(/decl/reagent/blackpepper = list(10,10)) /datum/seed/peppercorn/setup_traits() ..() @@ -102,7 +102,7 @@ name = "kudzu" seed_name = "kudzu" display_name = "kudzu vines" - chems = list(/datum/reagent/nutriment = list(1,50), /datum/reagent/dylovene = list(1,25)) + chems = list(/decl/reagent/nutriment = list(1,50), /decl/reagent/dylovene = list(1,25)) /datum/seed/kudzu/setup_traits() ..() diff --git a/code/modules/hydroponics/seed_datums/mushrooms.dm b/code/modules/hydroponics/seed_datums/mushrooms.dm index 195874489e1..a9aaf2493b0 100644 --- a/code/modules/hydroponics/seed_datums/mushrooms.dm +++ b/code/modules/hydroponics/seed_datums/mushrooms.dm @@ -7,7 +7,7 @@ seed_noun = SEED_NOUN_SPORES display_name = "chanterelle mushrooms" mutants = list("reishi","amanita","plumphelmet") - chems = list(/datum/reagent/nutriment = list(1,25)) + chems = list(/decl/reagent/nutriment = list(1,25)) splat_type = /obj/effect/plant kitchen_tag = "mushroom" @@ -34,8 +34,8 @@ seed_noun = SEED_NOUN_SPORES display_name = "k'ois spores" chems = list( - /datum/reagent/kois = list(4), - /datum/reagent/toxin/phoron = list(8)) + /decl/reagent/kois = list(4), + /decl/reagent/toxin/phoron = list(8)) splat_type = /obj/effect/plant kitchen_tag = "koisspore" mutants = null @@ -67,8 +67,8 @@ display_name = "black k'ois spores" mutants = null chems = list( - /datum/reagent/kois/black = list(4), - /datum/reagent/toxin/phoron = list(2)) + /decl/reagent/kois/black = list(4), + /decl/reagent/toxin/phoron = list(2)) /datum/seed/koisspore/black/setup_traits() ..() @@ -108,7 +108,7 @@ seed_name = "plump helmet" display_name = "plump helmet mushrooms" mutants = list("walkingmushroom","towercap") - chems = list(/datum/reagent/nutriment = list(2,10)) + chems = list(/decl/reagent/nutriment = list(2,10)) kitchen_tag = "plumphelmet" /datum/seed/mushroom/plump/setup_traits() @@ -147,7 +147,7 @@ seed_name = "reishi" display_name = "reishi" mutants = list("libertycap","glowshroom") - chems = list(/datum/reagent/nutriment = list(1,50), /datum/reagent/psilocybin = list(3,5)) + chems = list(/decl/reagent/nutriment = list(1,50), /decl/reagent/psilocybin = list(3,5)) /datum/seed/mushroom/hallucinogenic/setup_traits() ..() @@ -168,7 +168,7 @@ seed_name = "liberty cap" display_name = "liberty cap mushrooms" mutants = list("ghostmushroom") - chems = list(/datum/reagent/nutriment = list(1), /datum/reagent/soporific = list(3,3), /datum/reagent/space_drugs = list(1,25)) + chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/soporific = list(3,3), /decl/reagent/space_drugs = list(1,25)) /datum/seed/mushroom/hallucinogenic/strong/setup_traits() ..() @@ -187,7 +187,7 @@ seed_name = "fly amanita" display_name = "fly amanita mushrooms" mutants = list("destroyingangel","plastic","panocelium") - chems = list(/datum/reagent/nutriment = list(1), /datum/reagent/toxin/amatoxin = list(3,3), /datum/reagent/psilocybin = list(1,25)) + chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/toxin/amatoxin = list(3,3), /decl/reagent/psilocybin = list(1,25)) /datum/seed/mushroom/poison/setup_traits() ..() @@ -208,7 +208,7 @@ seed_name = "destroying angel" display_name = "destroying angel mushrooms" mutants = null - chems = list(/datum/reagent/nutriment = list(1,50), /datum/reagent/toxin/amatoxin = list(13,3), /datum/reagent/psilocybin = list(1,25)) + chems = list(/decl/reagent/nutriment = list(1,50), /decl/reagent/toxin/amatoxin = list(13,3), /decl/reagent/psilocybin = list(1,25)) /datum/seed/mushroom/poison/death/setup_traits() ..() @@ -228,7 +228,7 @@ seed_name = "panocelium" display_name = "panocelium mushrooms" mutants = null - chems = list(/datum/reagent/nutriment = list(1,50), /datum/reagent/toxin/panotoxin = list(10,3), /datum/reagent/psilocybin = list(1,25)) + chems = list(/decl/reagent/nutriment = list(1,50), /decl/reagent/toxin/panotoxin = list(10,3), /decl/reagent/psilocybin = list(1,25)) /datum/seed/mushroom/poison/panocelium/setup_traits() ..() @@ -247,7 +247,7 @@ name = "towercap" seed_name = "tower cap" display_name = "tower caps" - chems = list(/datum/reagent/woodpulp = list(10,1)) + chems = list(/decl/reagent/woodpulp = list(10,1)) mutants = null /datum/seed/mushroom/towercap/setup_traits() @@ -266,7 +266,7 @@ seed_name = "glowshroom" display_name = "glowshrooms" mutants = null - chems = list(/datum/reagent/radium = list(1,20)) + chems = list(/decl/reagent/radium = list(1,20)) /datum/seed/mushroom/glowshroom/setup_traits() ..() @@ -289,7 +289,7 @@ seed_name = "plastellium" display_name = "plastellium" mutants = null - chems = list(/datum/reagent/toxin/plasticide = list(1,10)) + chems = list(/decl/reagent/toxin/plasticide = list(1,10)) /datum/seed/mushroom/plastic/setup_traits() ..() @@ -310,7 +310,7 @@ seed_name = "ghost mushroom" display_name = "ghost mushroom" mutants = null - chems = list(/datum/reagent/toxin/spectrocybin = list(5,15)) + chems = list(/decl/reagent/toxin/spectrocybin = list(5,15)) /datum/seed/mushroom/ghost/setup_traits() ..() diff --git a/code/modules/hydroponics/seed_datums/root_vegetables.dm b/code/modules/hydroponics/seed_datums/root_vegetables.dm index 5b85a535f56..7197a81dc03 100644 --- a/code/modules/hydroponics/seed_datums/root_vegetables.dm +++ b/code/modules/hydroponics/seed_datums/root_vegetables.dm @@ -2,7 +2,7 @@ name = "carrot" seed_name = "carrot" display_name = "carrots" - chems = list(/datum/reagent/nutriment = list(1,20), /datum/reagent/oculine = list(3,5), /datum/reagent/drink/carrotjuice = list(10,20)) + chems = list(/decl/reagent/nutriment = list(1,20), /decl/reagent/oculine = list(3,5), /decl/reagent/drink/carrotjuice = list(10,20)) kitchen_tag = "carrot" /datum/seed/carrots/setup_traits() @@ -23,7 +23,7 @@ name = "garlic" seed_name = "garlic" display_name = "garlic" - chems = list(/datum/reagent/drink/garlicjuice = list(1,5)) + chems = list(/decl/reagent/drink/garlicjuice = list(1,5)) kitchen_tag = "garlic" /datum/seed/garlic/setup_traits() @@ -44,7 +44,7 @@ name = "onion" seed_name = "onion" display_name = "onions" - chems = list(/datum/reagent/drink/onionjuice = list(1,5)) + chems = list(/decl/reagent/drink/onionjuice = list(1,5)) kitchen_tag = "onion" /datum/seed/onion/setup_traits() @@ -65,7 +65,7 @@ name = "potato" seed_name = "potato" display_name = "potatoes" - chems = list(/datum/reagent/nutriment = list(1,10), /datum/reagent/drink/potatojuice = list(10,10)) + chems = list(/decl/reagent/nutriment = list(1,10), /decl/reagent/drink/potatojuice = list(10,10)) kitchen_tag = "potato" /datum/seed/potato/setup_traits() @@ -87,7 +87,7 @@ name = "whitebeet" seed_name = "white-beet" display_name = "white-beets" - chems = list(/datum/reagent/nutriment = list(0,20), /datum/reagent/sugar = list(1,5)) + chems = list(/decl/reagent/nutriment = list(0,20), /decl/reagent/sugar = list(1,5)) kitchen_tag = "whitebeet" /datum/seed/whitebeets/setup_traits() @@ -103,4 +103,4 @@ set_trait(TRAIT_WATER_CONSUMPTION, 6) /obj/item/seeds/whitebeetseed - seed_type = "whitebeet" \ No newline at end of file + seed_type = "whitebeet" diff --git a/code/modules/hydroponics/seed_datums/smokables.dm b/code/modules/hydroponics/seed_datums/smokables.dm index b26448c3c1e..4cd866d54af 100644 --- a/code/modules/hydroponics/seed_datums/smokables.dm +++ b/code/modules/hydroponics/seed_datums/smokables.dm @@ -6,7 +6,7 @@ seed_name = "tobacco" display_name = "tobacco leaves" mutants = list("finetobacco", "puretobacco", "badtobacco") - chems = list(/datum/reagent/toxin/tobacco = list(1,10)) + chems = list(/decl/reagent/toxin/tobacco = list(1,10)) /datum/seed/tobacco/setup_traits() ..() @@ -29,7 +29,7 @@ name = "finetobacco" seed_name = "fine tobacco" display_name = "fine tobacco leaves" - chems = list(/datum/reagent/toxin/tobacco/rich = list(1,10)) + chems = list(/decl/reagent/toxin/tobacco/rich = list(1,10)) /datum/seed/tobacco/finetobacco/setup_traits() ..() @@ -45,7 +45,7 @@ name = "puretobacco" seed_name = "succulent tobacco" display_name = "succulent tobacco leaves" - chems = list(/datum/reagent/mental/nicotine = list(1,10)) + chems = list(/decl/reagent/mental/nicotine = list(1,10)) /datum/seed/tobacco/puretobacco/setup_traits() ..() @@ -60,7 +60,7 @@ seed_name = "low-grade tobacco" display_name = "low-grade tobacco leaves" mutants = list("tobacco") - chems = list(/datum/reagent/toxin/tobacco/fake = list(1,10)) + chems = list(/decl/reagent/toxin/tobacco/fake = list(1,10)) //////////////// // Ambrosia // @@ -70,7 +70,7 @@ seed_name = "ambrosia vulgaris" display_name = "ambrosia vulgaris" mutants = list("ambrosiadeus") - chems = list(/datum/reagent/nutriment = list(1), /datum/reagent/space_drugs = list(1,8), /datum/reagent/kelotane = list(1,8,1), /datum/reagent/bicaridine = list(1,10,1), /datum/reagent/toxin = list(1,10)) + chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/space_drugs = list(1,8), /decl/reagent/kelotane = list(1,8,1), /decl/reagent/bicaridine = list(1,10,1), /decl/reagent/toxin = list(1,10)) kitchen_tag = "ambrosia" /datum/seed/ambrosia/setup_traits() @@ -93,7 +93,7 @@ seed_name = "ambrosia deus" display_name = "ambrosia deus" mutants = null - chems = list(/datum/reagent/nutriment = list(1), /datum/reagent/bicaridine = list(1,8), /datum/reagent/synaptizine = list(1,8,1), /datum/reagent/hyperzine = list(1,10,1), /datum/reagent/space_drugs = list(1,10)) + chems = list(/decl/reagent/nutriment = list(1), /decl/reagent/bicaridine = list(1,8), /decl/reagent/synaptizine = list(1,8,1), /decl/reagent/hyperzine = list(1,10,1), /decl/reagent/space_drugs = list(1,10)) kitchen_tag = "ambrosiadeus" /datum/seed/ambrosia/deus/setup_traits() @@ -102,4 +102,4 @@ set_trait(TRAIT_PLANT_COLOUR,"#2A9C61") /obj/item/seeds/ambrosiadeusseed - seed_type = "ambrosiadeus" \ No newline at end of file + seed_type = "ambrosiadeus" diff --git a/code/modules/hydroponics/seed_datums/tomato.dm b/code/modules/hydroponics/seed_datums/tomato.dm index 894d6119fd3..84a0a11382c 100644 --- a/code/modules/hydroponics/seed_datums/tomato.dm +++ b/code/modules/hydroponics/seed_datums/tomato.dm @@ -6,7 +6,7 @@ seed_name = "tomato" display_name = "tomato plant" mutants = list("bluetomato","bloodtomato") // no killer :[ - chems = list(/datum/reagent/nutriment = list(1,10), /datum/reagent/drink/tomatojuice = list(10,10)) + chems = list(/decl/reagent/nutriment = list(1,10), /decl/reagent/drink/tomatojuice = list(10,10)) kitchen_tag = "tomato" /datum/seed/tomato/setup_traits() @@ -32,7 +32,7 @@ seed_name = "blood tomato" display_name = "blood tomato plant" mutants = list("killer") - chems = list(/datum/reagent/nutriment = list(1,10), /datum/reagent/blood = list(1,5)) + chems = list(/decl/reagent/nutriment = list(1,10), /decl/reagent/blood = list(1,5)) splat_type = /obj/effect/decal/cleanable/blood/splatter /datum/seed/tomato/blood/setup_traits() @@ -64,7 +64,7 @@ seed_name = "blue tomato" display_name = "blue tomato plant" mutants = list("bluespacetomato") - chems = list(/datum/reagent/nutriment = list(1,20), /datum/reagent/lube = list(1,5)) + chems = list(/decl/reagent/nutriment = list(1,20), /decl/reagent/lube = list(1,5)) /datum/seed/tomato/blue/setup_traits() ..() @@ -79,7 +79,7 @@ seed_name = "bluespace tomato" display_name = "bluespace tomato plant" mutants = null - chems = list(/datum/reagent/nutriment = list(1,20), /datum/reagent/alcohol/ethanol/singulo = list(10,5)) + chems = list(/decl/reagent/nutriment = list(1,20), /decl/reagent/alcohol/singulo = list(10,5)) /datum/seed/tomato/blue/teleport/setup_traits() ..() diff --git a/code/modules/hydroponics/seed_datums/vegetables.dm b/code/modules/hydroponics/seed_datums/vegetables.dm index 0285fa02e4f..2e874814385 100644 --- a/code/modules/hydroponics/seed_datums/vegetables.dm +++ b/code/modules/hydroponics/seed_datums/vegetables.dm @@ -5,7 +5,7 @@ name = "chili" seed_name = "chili" display_name = "chili plants" - chems = list(/datum/reagent/capsaicin = list(3,5), /datum/reagent/nutriment = list(1,25)) + chems = list(/decl/reagent/capsaicin = list(3,5), /decl/reagent/nutriment = list(1,25)) mutants = list("icechili") kitchen_tag = "chili" @@ -30,7 +30,7 @@ seed_name = "ice pepper" display_name = "ice-pepper plants" mutants = null - chems = list(/datum/reagent/frostoil = list(3,5), /datum/reagent/nutriment = list(1,50)) + chems = list(/decl/reagent/frostoil = list(3,5), /decl/reagent/nutriment = list(1,50)) kitchen_tag = "icechili" /datum/seed/chili/ice/setup_traits() @@ -50,7 +50,7 @@ seed_name = "nettle" display_name = "nettles" mutants = list("deathnettle") - chems = list(/datum/reagent/nutriment = list(1,50), /datum/reagent/acid = list(0,1)) + chems = list(/decl/reagent/nutriment = list(1,50), /decl/reagent/acid = list(0,1)) kitchen_tag = "nettle" kitchen_tag = "nettle" @@ -74,7 +74,7 @@ seed_name = "death nettle" display_name = "death nettles" mutants = null - chems = list(/datum/reagent/nutriment = list(1,50), /datum/reagent/acid/polyacid = list(0,1)) + chems = list(/decl/reagent/nutriment = list(1,50), /decl/reagent/acid/polyacid = list(0,1)) kitchen_tag = "deathnettle" /datum/seed/nettle/death/setup_traits() @@ -95,7 +95,7 @@ seed_name = "eggplant" display_name = "eggplants" mutants = list("realeggplant") - chems = list(/datum/reagent/nutriment = list(1,10)) + chems = list(/decl/reagent/nutriment = list(1,10)) kitchen_tag = "eggplant" /datum/seed/eggplant/setup_traits() @@ -118,7 +118,7 @@ name = "huge eggplant" seed_name = "realeggplant" display_name = "eggplants" - chems = list(/datum/reagent/nutriment = list(15,30)) + chems = list(/decl/reagent/nutriment = list(15,30)) kitchen_tag = "realeggplant" /datum/seed/realeggplant/setup_traits() @@ -141,7 +141,7 @@ name = "peanut" seed_name = "peanut" display_name = "peanut vines" - chems = list(/datum/reagent/nutriment = list(1,10)) + chems = list(/decl/reagent/nutriment = list(1,10)) kitchen_tag = "peanut" /datum/seed/peanuts/setup_traits() @@ -163,7 +163,7 @@ name = "soybean" seed_name = "soybean" display_name = "soybeans" - chems = list(/datum/reagent/nutriment = list(1,20), /datum/reagent/drink/milk/soymilk = list(10,20)) + chems = list(/decl/reagent/nutriment = list(1,20), /decl/reagent/drink/milk/soymilk = list(10,20)) kitchen_tag = "soybeans" /datum/seed/soybean/setup_traits() @@ -188,7 +188,7 @@ name = "cabbage" seed_name = "cabbage" display_name = "cabbages" - chems = list(/datum/reagent/nutriment = list(1,10)) + chems = list(/decl/reagent/nutriment = list(1,10)) kitchen_tag = "cabbage" /datum/seed/cabbage/setup_traits() diff --git a/code/modules/hydroponics/seed_mobs.dm b/code/modules/hydroponics/seed_mobs.dm index 3c2ee048a7f..82c5cd4dc83 100644 --- a/code/modules/hydroponics/seed_mobs.dm +++ b/code/modules/hydroponics/seed_mobs.dm @@ -1,19 +1,25 @@ // The following procs are used to grab players for mobs produced by a seed (mostly for dionaea). /datum/seed/proc/handle_living_product(var/mob/living/host) + if(!host || !istype(host)) + return - if(!host || !istype(host)) return + var/host_spawner_type = "living_plant" + if(istype(host, /mob/living/carbon/alien/diona)) + host_spawner_type = "diona_nymph" - var/datum/ghosttrap/plant/P = get_ghost_trap("living plant") - P.request_player(host, "Someone is harvesting \a [display_name].") + SSghostroles.add_spawn_atom(host_spawner_type, host) + addtimer(CALLBACK(src, .proc/kill_living_product, WEAKREF(host), host_spawner_type), 3 MINUTES) - spawn(75) - if(!host.ckey && !host.client) - host.death() // This seems redundant, but a lot of mobs don't - host.stat = DEAD // handle death() properly. Better safe than etc. - host.visible_message("[host] is malformed and unable to survive. It expires pitifully, leaving behind some seeds.") +/datum/seed/proc/kill_living_product(var/datum/weakref/host_ref, var/product_spawner_type = "living_plant") + var/mob/living/host = host_ref.resolve() + if(host && !host.ckey && !host.client) + SSghostroles.remove_spawn_atom(product_spawner_type, host) + host.death() // This seems redundant, but a lot of mobs don't + host.stat = DEAD // handle death() properly. Better safe than etc. + host.visible_message("[host] is malformed and unable to survive. It expires pitifully, leaving behind some seeds.") - var/total_yield = rand(1,3) - for(var/j = 0;j<=total_yield;j++) - var/obj/item/seeds/S = new(get_turf(host)) - S.seed_type = name - S.update_seed() + var/total_yield = rand(1,3) + for(var/j = 0;j<=total_yield;j++) + var/obj/item/seeds/S = new(get_turf(host)) + S.seed_type = name + S.update_seed() \ No newline at end of file diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm index 50ebccbd04e..7f0e33da785 100644 --- a/code/modules/hydroponics/spreading/spreading.dm +++ b/code/modules/hydroponics/spreading/spreading.dm @@ -130,7 +130,7 @@ update_icon() SSplants.add_plant(src) // Some plants eat through plating. - if(islist(seed.chems) && !isnull(seed.chems[/datum/reagent/acid/polyacid])) + if(islist(seed.chems) && !isnull(seed.chems[/decl/reagent/acid/polyacid])) var/turf/T = get_turf(src) T.ex_act(prob(80) ? 3 : 2) @@ -195,7 +195,7 @@ if(growth>2 && growth == max_growth) layer = (seed && seed.force_layer) ? seed.force_layer : 5 opacity = 1 - if(islist(seed.chems) && !isnull(seed.chems[/datum/reagent/woodpulp])) + if(islist(seed.chems) && !isnull(seed.chems[/decl/reagent/woodpulp])) density = 1 else layer = (seed && seed.force_layer) ? seed.force_layer : 5 diff --git a/code/modules/hydroponics/spreading/spreading_growth.dm b/code/modules/hydroponics/spreading/spreading_growth.dm index 572994a41ce..d1c7aca1311 100644 --- a/code/modules/hydroponics/spreading/spreading_growth.dm +++ b/code/modules/hydroponics/spreading/spreading_growth.dm @@ -17,7 +17,7 @@ if((locate(/obj/effect/plant) in floor.contents) || (locate(/obj/effect/dead_plant) in floor.contents) ) continue if(floor.density) - if(seed && seed.chems[/datum/reagent/acid/polyacid]) + if(seed && seed.chems[/decl/reagent/acid/polyacid]) addtimer(CALLBACK(floor, /atom/.proc/ex_act, 3), rand(5, 25)) continue if(!Adjacent(floor) || !floor.Enter(src)) @@ -39,7 +39,7 @@ return 0 for(var/obj/effect/effect/smoke/chem/smoke in view(1, src)) - if(smoke.reagents.has_reagent(/datum/reagent/toxin/plantbgone)) + if(smoke.reagents.has_reagent(/decl/reagent/toxin/plantbgone)) die_off() return @@ -85,7 +85,7 @@ if(is_mature() && neighbors.len && prob(spread_chance)) //spread to 1-3 adjacent turfs depending on yield trait. var/max_spread = between(1, round(seed.get_trait(TRAIT_YIELD)*3/14), 3) - + do_spread(spread_chance, max_spread) // We shouldn't have spawned if the controller doesn't exist. diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index 80036df099b..1a24df072f3 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -52,86 +52,86 @@ // Reagent information for process(), consider moving this to a controller along // with cycle information under 'mechanical concerns' at some point. var/global/list/toxic_reagents = list( - /datum/reagent/dylovene = -2, - /datum/reagent/toxin = 2, - /datum/reagent/hydrazine = 2.5, - /datum/reagent/acetone = 1, - /datum/reagent/acid = 1.5, - /datum/reagent/acid/hydrochloric = 1.5, - /datum/reagent/acid/polyacid = 3, - /datum/reagent/toxin/plantbgone = 3, - /datum/reagent/cryoxadone = -3, - /datum/reagent/radium = 2, - /datum/reagent/raskara_dust = 2.5 + /decl/reagent/dylovene = -2, + /decl/reagent/toxin = 2, + /decl/reagent/hydrazine = 2.5, + /decl/reagent/acetone = 1, + /decl/reagent/acid = 1.5, + /decl/reagent/acid/hydrochloric = 1.5, + /decl/reagent/acid/polyacid = 3, + /decl/reagent/toxin/plantbgone = 3, + /decl/reagent/cryoxadone = -3, + /decl/reagent/radium = 2, + /decl/reagent/raskara_dust = 2.5 ) var/global/list/nutrient_reagents = list( - /datum/reagent/drink/milk = 0.1, - /datum/reagent/alcohol/ethanol/beer = 0.25, - /datum/reagent/phosphorus = 0.1, - /datum/reagent/sugar = 0.1, - /datum/reagent/drink/sodawater = 0.1, - /datum/reagent/ammonia = 1, - /datum/reagent/diethylamine = 2, - /datum/reagent/nutriment = 1, - /datum/reagent/adminordrazine = 1, + /decl/reagent/drink/milk = 0.1, + /decl/reagent/alcohol/beer = 0.25, + /decl/reagent/phosphorus = 0.1, + /decl/reagent/sugar = 0.1, + /decl/reagent/drink/sodawater = 0.1, + /decl/reagent/ammonia = 1, + /decl/reagent/diethylamine = 2, + /decl/reagent/nutriment = 1, + /decl/reagent/adminordrazine = 1, // Fertilizers - /datum/reagent/toxin/fertilizer/eznutrient = 1, - /datum/reagent/toxin/fertilizer/robustharvest = 1, - /datum/reagent/toxin/fertilizer/left4zed = 1, - /datum/reagent/toxin/fertilizer/monoammoniumphosphate = 1 + /decl/reagent/toxin/fertilizer/eznutrient = 1, + /decl/reagent/toxin/fertilizer/robustharvest = 1, + /decl/reagent/toxin/fertilizer/left4zed = 1, + /decl/reagent/toxin/fertilizer/monoammoniumphosphate = 1 ) var/global/list/weedkiller_reagents = list( - /datum/reagent/hydrazine = -4, - /datum/reagent/phosphorus = -2, - /datum/reagent/sugar = 2, - /datum/reagent/acid = -2, - /datum/reagent/acid/hydrochloric = -2, - /datum/reagent/acid/polyacid = -4, - /datum/reagent/toxin/plantbgone = -8, - /datum/reagent/adminordrazine = -5 + /decl/reagent/hydrazine = -4, + /decl/reagent/phosphorus = -2, + /decl/reagent/sugar = 2, + /decl/reagent/acid = -2, + /decl/reagent/acid/hydrochloric = -2, + /decl/reagent/acid/polyacid = -4, + /decl/reagent/toxin/plantbgone = -8, + /decl/reagent/adminordrazine = -5 ) var/global/list/pestkiller_reagents = list( - /datum/reagent/sugar = 2, - /datum/reagent/diethylamine = -2, - /datum/reagent/adminordrazine = -5 + /decl/reagent/sugar = 2, + /decl/reagent/diethylamine = -2, + /decl/reagent/adminordrazine = -5 ) var/global/list/water_reagents = list( - /datum/reagent/water = 1, - /datum/reagent/adminordrazine = 1, - /datum/reagent/drink/milk = 0.9, - /datum/reagent/alcohol/ethanol/beer = 0.7, - /datum/reagent/hydrazine = -2, - /datum/reagent/phosphorus = -0.5, - /datum/reagent/water = 1, - /datum/reagent/drink/sodawater = 1 + /decl/reagent/water = 1, + /decl/reagent/adminordrazine = 1, + /decl/reagent/drink/milk = 0.9, + /decl/reagent/alcohol/beer = 0.7, + /decl/reagent/hydrazine = -2, + /decl/reagent/phosphorus = -0.5, + /decl/reagent/water = 1, + /decl/reagent/drink/sodawater = 1 ) // Beneficial reagents also have values for modifying yield_mod and mut_mod (in that order). var/global/list/beneficial_reagents = list( - /datum/reagent/alcohol/ethanol/beer=list( -0.05, 0, 0 ), - /datum/reagent/hydrazine = list( -2, 0, 0 ), - /datum/reagent/phosphorus = list( -0.75, 0, 0 ), - /datum/reagent/drink/sodawater = list( 0.1, 0, 0 ), - /datum/reagent/acid = list( -1, 0, 0 ), - /datum/reagent/acid/hydrochloric = list( -1, 0, 0 ), - /datum/reagent/acid/polyacid = list( -2, 0, 0 ), - /datum/reagent/toxin/plantbgone = list( -2, 0, 0.2), - /datum/reagent/cryoxadone = list( 3, 0, 0 ), - /datum/reagent/ammonia = list( 0.5, 0, 0 ), - /datum/reagent/diethylamine = list( 1, 0, 0 ), - /datum/reagent/nutriment = list( 0.5, 0.1, 0 ), - /datum/reagent/radium = list( -1.5, 0, 0.2), - /datum/reagent/adminordrazine = list( 1, 1, 1 ), + /decl/reagent/alcohol/beer=list( -0.05, 0, 0 ), + /decl/reagent/hydrazine = list( -2, 0, 0 ), + /decl/reagent/phosphorus = list( -0.75, 0, 0 ), + /decl/reagent/drink/sodawater = list( 0.1, 0, 0 ), + /decl/reagent/acid = list( -1, 0, 0 ), + /decl/reagent/acid/hydrochloric = list( -1, 0, 0 ), + /decl/reagent/acid/polyacid = list( -2, 0, 0 ), + /decl/reagent/toxin/plantbgone = list( -2, 0, 0.2), + /decl/reagent/cryoxadone = list( 3, 0, 0 ), + /decl/reagent/ammonia = list( 0.5, 0, 0 ), + /decl/reagent/diethylamine = list( 1, 0, 0 ), + /decl/reagent/nutriment = list( 0.5, 0.1, 0 ), + /decl/reagent/radium = list( -1.5, 0, 0.2), + /decl/reagent/adminordrazine = list( 1, 1, 1 ), // Fertilizers - /datum/reagent/toxin/fertilizer/robustharvest = list( 0, 0.2, 0 ), - /datum/reagent/toxin/fertilizer/left4zed = list( 0, 0, 0.2) + /decl/reagent/toxin/fertilizer/robustharvest = list( 0, 0.2, 0 ), + /decl/reagent/toxin/fertilizer/left4zed = list( 0, 0, 0.2) ) // Mutagen list specifies minimum value for the mutation to take place, rather // than a bound as the lists above specify. var/global/list/mutagenic_reagents = list( - /datum/reagent/radium = 8, - /datum/reagent/mutagen = 15 + /decl/reagent/radium = 8, + /decl/reagent/mutagen = 15 ) /obj/machinery/portable_atmospherics/hydroponics/AltClick() @@ -152,16 +152,18 @@ return ..() /obj/machinery/portable_atmospherics/hydroponics/attack_ghost(var/mob/abstract/observer/user) - if(!(harvest && seed && ispath(seed.product_type, /mob))) + if(!(seed && ispath(seed.product_type, /mob))) + to_chat(user, SPAN_WARNING("This tray doesn't have any seeds, or the planted seeds does not spawn a mob!")) return - - var/datum/ghosttrap/plant/G = get_ghost_trap("living plant") - if(!G.assess_candidate(user)) + if(!harvest) + to_chat(user, SPAN_WARNING("\The [src] isn't ready to harvest yet!")) return - var/response = alert(user, "Are you sure you want to harvest this [seed.display_name]?", "Living plant request", "Yes", "No") + if(jobban_isbanned(user, "Dionaea")) + to_chat(user, SPAN_WARNING("You are banned from playing Dionae and other living plants!")) + return + var/response = alert(user, "Are you sure you want to harvest this [seed.display_name]?", "Living Plant Request", "Yes", "No") if(response == "Yes") harvest() - return /obj/machinery/portable_atmospherics/hydroponics/attack_generic(var/mob/user) @@ -175,12 +177,12 @@ if(nymph.stat == DEAD || nymph.paralysis || nymph.weakened || nymph.stunned || nymph.restrained()) return if(weedlevel > 0) - nymph.ingested.add_reagent(/datum/reagent/nutriment, weedlevel/6) + nymph.ingested.add_reagent(/decl/reagent/nutriment, weedlevel/6) weedlevel = 0 nymph.visible_message("[nymph] roots through [src], ripping out weeds and eating them noisily.","You root through [src], ripping out weeds and eating them noisily.") return if (dead)//Let nymphs eat dead plants - nymph.ingested.add_reagent(/datum/reagent/nutriment, 1) + nymph.ingested.add_reagent(/decl/reagent/nutriment, 1) nymph.visible_message("[nymph] rips out the dead plants from [src], and loudly munches them.","You root out the dead plants in [src], eating them with loud chewing sounds.") remove_dead(user) return @@ -252,37 +254,37 @@ reagents.trans_to_obj(temp_chem_holder, min(reagents.total_volume,rand(1,3))) - for(var/datum/reagent/R in temp_chem_holder.reagents.reagent_list) + for(var/_R in temp_chem_holder.reagents.reagent_volumes) - var/reagent_total = temp_chem_holder.reagents.get_reagent_amount(R.type) + var/reagent_total = REAGENT_VOLUME(temp_chem_holder.reagents, _R) if(seed && !dead) //Handle some general level adjustments. - if(toxic_reagents[R.type]) - toxins += toxic_reagents[R.type] * reagent_total - if(weedkiller_reagents[R.type]) - weedlevel -= weedkiller_reagents[R.type] * reagent_total - if(pestkiller_reagents[R.type]) - pestlevel += pestkiller_reagents[R.type] * reagent_total + if(toxic_reagents[_R]) + toxins += toxic_reagents[_R] * reagent_total + if(weedkiller_reagents[_R]) + weedlevel -= weedkiller_reagents[_R] * reagent_total + if(pestkiller_reagents[_R]) + pestlevel += pestkiller_reagents[_R] * reagent_total // Beneficial reagents have a few impacts along with health buffs. - if(beneficial_reagents[R.type]) - health += beneficial_reagents[R.type][1] * reagent_total - yield_mod += beneficial_reagents[R.type][2] * reagent_total - mutation_mod += beneficial_reagents[R.type][3] * reagent_total + if(beneficial_reagents[_R]) + health += beneficial_reagents[_R][1] * reagent_total + yield_mod += beneficial_reagents[_R][2] * reagent_total + mutation_mod += beneficial_reagents[_R][3] * reagent_total // Mutagen is distinct from the previous types and mostly has a chance of proccing a mutation. - if(mutagenic_reagents[R.type]) - mutation_level += reagent_total*mutagenic_reagents[R.type]+mutation_mod + if(mutagenic_reagents[_R]) + mutation_level += reagent_total*mutagenic_reagents[_R]+mutation_mod // Handle nutrient refilling. - if(nutrient_reagents[R.type]) - nutrilevel += nutrient_reagents[R.type] * reagent_total + if(nutrient_reagents[_R]) + nutrilevel += nutrient_reagents[_R] * reagent_total // Handle water and water refilling. var/water_added = 0 - if(water_reagents[R.type]) - var/water_input = water_reagents[R.type] * reagent_total + if(water_reagents[_R]) + var/water_input = water_reagents[_R] * reagent_total water_added += water_input waterlevel += water_input @@ -454,20 +456,17 @@ if(!RC.is_open_container()) to_chat(user, SPAN_WARNING("You need to open \the [RC] first!")) return - if (RC.reagents.reagent_list.len == 1) - if (RC.reagents.has_reagent(/datum/reagent/water, 1)) + if (LAZYLEN(RC.reagents.reagent_volumes) == 1) + if (RC.reagents.has_reagent(/decl/reagent/water, 1)) if (waterlevel < maxWaterLevel) var/amountToRemove = min((maxWaterLevel - waterlevel), RC.reagents.total_volume) - RC.reagents.remove_reagent(/datum/reagent/water, amountToRemove, 1) + RC.reagents.remove_reagent(/decl/reagent/water, amountToRemove, 1) waterlevel += amountToRemove user.visible_message("[user] transfers some water to the tray.", "You transfer about [amountToRemove] units of water to the tray.") else to_chat(user, SPAN_WARNING("This tray is full of water already.")) return 1 - if (O.is_open_container()) - return 0 - if(O.iswirecutter() || istype(O, /obj/item/surgery/scalpel)) if(!seed) diff --git a/code/modules/hydroponics/trays/tray_apiary.dm b/code/modules/hydroponics/trays/tray_apiary.dm index 72291eb7a06..6d459f978a2 100644 --- a/code/modules/hydroponics/trays/tray_apiary.dm +++ b/code/modules/hydroponics/trays/tray_apiary.dm @@ -90,7 +90,7 @@ else to_chat(user, "You begin to harvest the honey.") if(do_after(user,50/O.toolspeed)) - G.reagents.add_reagent(/datum/reagent/nutriment/honey,harvestable_honey) + G.reagents.add_reagent(/decl/reagent/nutriment/honey,harvestable_honey) harvestable_honey = 0 to_chat(user, "You successfully harvest the honey.") else @@ -233,7 +233,7 @@ health -= 15 var/obj/item/reagent_containers/food/snacks/honeycomb/H = new(src.loc) if(toxic > 0) - H.reagents.add_reagent(/datum/reagent/toxin, toxic) + H.reagents.add_reagent(/decl/reagent/toxin, toxic) to_chat(usr, "You harvest the honeycomb from the hive. There is a wild buzzing!") angry_swarm(usr) diff --git a/code/modules/hydroponics/trays/tray_reagents.dm b/code/modules/hydroponics/trays/tray_reagents.dm index 8946516de5d..be0dcf91d21 100644 --- a/code/modules/hydroponics/trays/tray_reagents.dm +++ b/code/modules/hydroponics/trays/tray_reagents.dm @@ -99,7 +99,6 @@ drop_sound = 'sound/weapons/jug_empty_impact.ogg' fragile = 0 - shatter = FALSE unacidable = FALSE force = 1 @@ -158,14 +157,14 @@ /obj/item/reagent_containers/glass/fertilizer/ez name = "jug of E-Z-Nutrient" icon_state = "plastic_jug_ez" - reagents_to_add = list(/datum/reagent/toxin/fertilizer/eznutrient = 80) + reagents_to_add = list(/decl/reagent/toxin/fertilizer/eznutrient = 80) /obj/item/reagent_containers/glass/fertilizer/l4z name = "jug of Left-4-Zed" icon_state = "plastic_jug_l4z" - reagents_to_add = list(/datum/reagent/toxin/fertilizer/left4zed = 80) + reagents_to_add = list(/decl/reagent/toxin/fertilizer/left4zed = 80) /obj/item/reagent_containers/glass/fertilizer/rh name = "jug of Robust Harvest" icon_state = "plastic_jug_rh" - reagents_to_add = list(/datum/reagent/toxin/fertilizer/robustharvest = 80) \ No newline at end of file + reagents_to_add = list(/decl/reagent/toxin/fertilizer/robustharvest = 80) diff --git a/code/modules/hydroponics/trays/tray_soil.dm b/code/modules/hydroponics/trays/tray_soil.dm index 802691bc385..88d19b43728 100644 --- a/code/modules/hydroponics/trays/tray_soil.dm +++ b/code/modules/hydroponics/trays/tray_soil.dm @@ -13,11 +13,11 @@ //A special case for if the container has only water, for manual watering with buckets if (istype(O,/obj/item/reagent_containers)) var/obj/item/reagent_containers/RC = O - if (RC.reagents.reagent_list.len == 1) - if (RC.reagents.has_reagent(/datum/reagent/water, 1)) + if (LAZYLEN(RC.reagents.reagent_volumes) == 1) + if (RC.reagents.has_reagent(/decl/reagent/water, 1)) if (waterlevel < maxWaterLevel) var/amountToRemove = min((maxWaterLevel - waterlevel), RC.reagents.total_volume) - RC.reagents.remove_reagent(/datum/reagent/water, amountToRemove, 1) + RC.reagents.remove_reagent(/decl/reagent/water, amountToRemove, 1) waterlevel += amountToRemove user.visible_message("[user] pours [amountToRemove]u of water into the soil."," You pour [amountToRemove]u of water into the soil.") else diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm index b1bb1f695d8..f6b7256e70d 100644 --- a/code/modules/hydroponics/trays/tray_tools.dm +++ b/code/modules/hydroponics/trays/tray_tools.dm @@ -108,12 +108,13 @@ dat += "Potency[grown_seed.get_trait(TRAIT_POTENCY)]" dat += "" - if(grown_reagents && grown_reagents.reagent_list && grown_reagents.reagent_list.len) + if(LAZYLEN(grown_reagents?.reagent_volumes)) dat += "

Reagent Data

" dat += "
This sample contains: " - for(var/datum/reagent/R in grown_reagents.reagent_list) - dat += "
- [R.name], [grown_reagents.get_reagent_amount(R.type)] unit(s)" + for(var/_R in grown_reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + dat += "
- [R.name], [REAGENT_VOLUME(grown_reagents, R.type)] unit(s)" dat += "

Other Data

" diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index 37ea4ac217d..afb348fa283 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -10,7 +10,6 @@ var/upgraded = FALSE // When hit with an upgrade disk, will turn true, allowing it to print the higher tier circuits. var/can_clone = FALSE // Same for above, but will allow the printer to duplicate a specific assembly. - var/current_category var/obj/item/device/electronic_assembly/assembly_to_clone /obj/item/device/integrated_circuit_printer/upgraded @@ -28,7 +27,7 @@ if(stack.use(num)) to_chat(user, "You add [num] sheet\s to \the [src].") metal += num * metal_per_sheet - interact(user) + SSvueui.check_uis_for_change(src) return TRUE if(istype(O,/obj/item/integrated_circuit)) @@ -36,7 +35,7 @@ user.unEquip(O) metal = min(metal + O.w_class, max_metal) qdel(O) - interact(user) + SSvueui.check_uis_for_change(src) return TRUE if(istype(O,/obj/item/disk/integrated_circuit/upgrade/advanced)) @@ -45,7 +44,7 @@ return TRUE to_chat(user, "You install \the [O] into \the [src]. ") upgraded = TRUE - interact(user) + SSvueui.check_uis_for_change(src) return TRUE if(istype(O,/obj/item/disk/integrated_circuit/upgrade/clone)) @@ -54,7 +53,7 @@ return TRUE to_chat(user, "You install \the [O] into \the [src]. ") can_clone = TRUE - interact(user) + SSvueui.check_uis_for_change(src) return TRUE return ..() @@ -63,44 +62,27 @@ interact(user) /obj/item/device/integrated_circuit_printer/interact(mob/user) - var/window_height = 600 - var/window_width = 500 + var/datum/vueui/ui = SSvueui.get_open_ui(user, src) + if (!ui) + ui = new(user, src, "devices-circuit-printer", 600, 500, "Integrated Circuit Printer") + ui.open() - if(isnull(current_category)) - current_category = SSelectronics.printer_recipe_list[1] +/obj/item/device/integrated_circuit_printer/vueui_data_change(list/data, mob/user, datum/vueui/ui) + . = ..() + data = . || data || list() - var/HTML = "

Integrated Circuit Printer


" - HTML += "Metal: [metal/metal_per_sheet]/[max_metal/metal_per_sheet] sheets.
" - HTML += "Circuits available: [upgraded ? "Regular":"Advanced"]." - HTML += "Assembly Cloning: [can_clone ? "Available": "Unavailable"]." - if(assembly_to_clone) - HTML += "Assembly '[assembly_to_clone.name]' loaded." - HTML += "Crossed out circuits mean that the printer is not sufficentally upgraded to create that circuit.
" - HTML += "
" - HTML += "Categories:" - for(var/category in SSelectronics.printer_recipe_list) - if(category != current_category) - HTML += " [category] " - else // Bold the button if it's already selected. - HTML += " [category] " - HTML += "
" - HTML += "

[current_category]

" + data["metal"] = metal / metal_per_sheet + data["metal_max"] = max_metal / metal_per_sheet + data["upgraded"] = upgraded + data["can_clone"] = can_clone + data["assembly_to_clone"] = assembly_to_clone ? assembly_to_clone.name : FALSE + + if(upgraded) + data["circuits"] = SSelectronics.printer_recipe_list_upgraded + else + data["circuits"] = SSelectronics.printer_recipe_list_basic - var/list/current_list = SSelectronics.printer_recipe_list[current_category] - for(var/obj/O in current_list) - var/can_build = TRUE - if(istype(O, /obj/item/integrated_circuit)) - var/obj/item/integrated_circuit/IC = O - if((IC.spawn_flags & IC_SPAWN_RESEARCH) && (!(IC.spawn_flags & IC_SPAWN_DEFAULT)) && !upgraded) - can_build = FALSE - if(can_build) - HTML += "[O.name]: [O.desc]
" - else - HTML += "[O.name]: [O.desc]
" - - var/datum/browser/B = new(user, "integrated_printer", null, window_width, window_height) - B.set_content(HTML) - B.open(FALSE) + return data /obj/item/device/integrated_circuit_printer/Topic(href, href_list) if(..()) @@ -108,9 +90,6 @@ add_fingerprint(usr) - if(href_list["category"]) - current_category = href_list["category"] - if(href_list["build"]) var/build_type = text2path(href_list["build"]) if(!build_type || !ispath(build_type)) @@ -139,14 +118,15 @@ else new build_type(get_turf(loc)) - interact(usr) + SSvueui.check_uis_for_change(src) /obj/item/device/integrated_circuit_printer/proc/can_print(build_type) - var/list/current_list = SSelectronics.printer_recipe_list[current_category] + for(var/category in SSelectronics.printer_recipe_list) + var/list/current_list = SSelectronics.printer_recipe_list[category] - for (var/obj/O in current_list) - if (O.type == build_type) - return TRUE + for (var/obj/O in current_list) + if (O.type == build_type) + return TRUE return FALSE diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index ddd2099d188..8333fd069d2 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -130,7 +130,7 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2) var/volume = 60 - var/list/fuel = list(/datum/reagent/toxin/phoron = 50000, /datum/reagent/slimejelly = 25000, /datum/reagent/fuel = 15000, /datum/reagent/carbon = 10000, /datum/reagent/alcohol/ethanol = 10000, /datum/reagent/nutriment = 8000, /datum/reagent/blood = 5000) + var/list/fuel = list(/decl/reagent/toxin/phoron = 50000, /decl/reagent/slimejelly = 25000, /decl/reagent/fuel = 15000, /decl/reagent/carbon = 10000, /decl/reagent/alcohol = 10000, /decl/reagent/nutriment = 8000, /decl/reagent/blood = 5000) /obj/item/integrated_circuit/passive/power/chemical_cell/New() ..() diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index 010152bffa1..8393beee557 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -129,7 +129,7 @@ if(!TS.Adjacent(TT)) activate_pin(3) return - var/tramount = Clamp(min(transfer_amount, reagents.get_free_space()), 0, reagents.maximum_volume) + var/tramount = Clamp(min(transfer_amount, REAGENTS_FREE_SPACE(reagents)), 0, reagents.maximum_volume) if(ismob(target))//Blood! if(istype(target, /mob/living/carbon)) var/mob/living/carbon/T = target @@ -145,21 +145,7 @@ else activate_pin(3) return - var/datum/reagent/B - if(istype(T, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = T - if(H.species && !H.has_organ(BP_HEART)) - H.reagents.trans_to_obj(src, tramount) - else - B = T.take_blood(src, tramount) - else - B = T.take_blood(src,tramount) - if (B) - reagents.reagent_list |= B - reagents.update_total() - on_reagent_change() - reagents.handle_reactions() - B = null + T.take_blood(src,tramount) visible_message( "[assembly] takes a blood sample from [target].") else activate_pin(3) @@ -229,11 +215,11 @@ if(!source.is_open_container() || !target.is_open_container()) return if(direc) - if(!target.reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(target.reagents)) return source.reagents.trans_to(target, transfer_amount) else - if(!source.reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(source.reagents)) return target.reagents.trans_to(source, transfer_amount) activate_pin(2) @@ -296,7 +282,8 @@ /obj/item/integrated_circuit/reagent/storage/scan/do_work() var/list/cont = list() - for(var/datum/reagent/RE in reagents.reagent_list) + for(var/_RE in reagents.reagent_volumes) + var/decl/reagent/RE = decls_repository.get_decl(_RE) cont += RE.name set_pin_data(IC_OUTPUT, 3, cont) set_pin_data(IC_OUTPUT, 4, reagents.generate_taste_message(src)) @@ -348,14 +335,15 @@ return if(!source.is_open_container() || !target.is_open_container()) return - if(!target.reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(target.reagents)) return - for(var/datum/reagent/G in source.reagents.reagent_list) + for(var/_G in source.reagents.reagent_volumes) + var/decl/reagent/G = decls_repository.get_decl(_G) if (!direc) if(lowertext(G.name) in demand) - source.reagents.trans_type_to(target, G.type, transfer_amount) + source.reagents.trans_type_to(target, _G, transfer_amount) else if(!(lowertext(G.name) in demand)) - source.reagents.trans_type_to(target, G.type, transfer_amount) + source.reagents.trans_type_to(target, _G, transfer_amount) activate_pin(2) push_data() diff --git a/code/modules/item_worth/Value_procs/obj/items.dm b/code/modules/item_worth/Value_procs/obj/items.dm index 2f31dc986f7..a784c699363 100644 --- a/code/modules/item_worth/Value_procs/obj/items.dm +++ b/code/modules/item_worth/Value_procs/obj/items.dm @@ -9,9 +9,9 @@ /obj/item/reagent_containers/Value() . = ..() if(reagents) - for(var/a in reagents.reagent_list) - var/datum/reagent/reg = a - . += reg.value * reg.volume + for(var/a in reagents.reagent_volumes) + var/decl/reagent/reg = decls_repository.get_decl(a) + . += reg.value * reagents.reagent_volumes[a] . = round(.) /obj/item/stack/Value(var/base) diff --git a/code/modules/item_worth/reagents.dm b/code/modules/item_worth/reagents.dm index 7ba4bd151cc..6588d2c82b6 100644 --- a/code/modules/item_worth/reagents.dm +++ b/code/modules/item_worth/reagents.dm @@ -1,802 +1,802 @@ //These value assume that each unit is roughly a gram -/datum/reagent +/decl/reagent var/value = 1 //per unit -/datum/reagent/blood +/decl/reagent/blood value = 2 -/datum/reagent/water +/decl/reagent/water value = 0 -/datum/reagent/fuel +/decl/reagent/fuel value = 6.8 -/datum/reagent/acetone +/decl/reagent/acetone value = 0.27 -/datum/reagent/aluminum +/decl/reagent/aluminum value = 0.02 -/datum/reagent/ammonia +/decl/reagent/ammonia value = 0.01 -/datum/reagent/carbon +/decl/reagent/carbon value = 0.2 -/datum/reagent/copper +/decl/reagent/copper value = 0.02 -/datum/reagent/alcohol/ethanol +/decl/reagent/alcohol value = 0.01 -/datum/reagent/alcohol/butanol +/decl/reagent/alcohol/butanol value = 0.02 -/datum/reagent/alcohol/butanol/xuizijuice +/decl/reagent/alcohol/butanol/xuizijuice value = 0.2 -/datum/reagent/alcohol/butanol/xuizijuice +/decl/reagent/alcohol/butanol/xuizijuice value = 0.2 -/datum/reagent/hydrazine +/decl/reagent/hydrazine value = 0.017 -/datum/reagent/iron +/decl/reagent/iron value = 0.01 -/datum/reagent/lithium +/decl/reagent/lithium value = 6 -/datum/reagent/mercury +/decl/reagent/mercury value = 0.02 -/datum/reagent/phosphorus +/decl/reagent/phosphorus value = 0.4 -/datum/reagent/potassium +/decl/reagent/potassium value = 1 -/datum/reagent/radium +/decl/reagent/radium value = 50 //Radium is crazy expensive, like 100k+ per gram. So probably a bit less expensive in the future. -/datum/reagent/acid +/decl/reagent/acid value = 0.2 -/datum/reagent/acid/stomach +/decl/reagent/acid/stomach value = 0 -/datum/reagent/sodium +/decl/reagent/sodium value = 0.1 -/datum/reagent/sugar +/decl/reagent/sugar value = 0.1 -/datum/reagent/sulfur +/decl/reagent/sulfur value = 2 -/datum/reagent/kois +/decl/reagent/kois value = 0.5 -/datum/reagent/nutriment +/decl/reagent/nutriment value = 0.1 -/datum/reagent/nutriment/virus_food +/decl/reagent/nutriment/virus_food value = 0.15 -/datum/reagent/nutriment/sprinkles +/decl/reagent/nutriment/sprinkles value = 0.05 -/datum/reagent/nutriment/mint +/decl/reagent/nutriment/mint value = 0.14 -/datum/reagent/lipozine +/decl/reagent/lipozine value = 0.11 -/datum/reagent/sodiumchloride +/decl/reagent/sodiumchloride value = 0.11 -/datum/reagent/blackpepper +/decl/reagent/blackpepper value = 0.1 -/datum/reagent/enzyme +/decl/reagent/enzyme value = 0.2 -/datum/reagent/frostoil +/decl/reagent/frostoil value = 0.2 -/datum/reagent/capsaicin +/decl/reagent/capsaicin value = 0.2 -/datum/reagent/capsaicin/condensed +/decl/reagent/capsaicin/condensed value = 0.5 -/datum/reagent/drink +/decl/reagent/drink value = 0.1 -/datum/reagent/drink/milk/chocolate +/decl/reagent/drink/milk/chocolate value = 0.11 -/datum/reagent/drink/milk/cream +/decl/reagent/drink/milk/cream value = 0.12 -/datum/reagent/drink/coffee +/decl/reagent/drink/coffee value = 0.12 -/datum/reagent/drink/coffee/soy_latte +/decl/reagent/drink/coffee/soy_latte value = 0.13 -/datum/reagent/drink/hot_coco +/decl/reagent/drink/hot_coco value = 0.11 -/datum/reagent/drink/milkshake +/decl/reagent/drink/milkshake value = 0.12 -/datum/reagent/drink/rewriter +/decl/reagent/drink/rewriter value = 0.11 -/datum/reagent/drink/nuka_cola +/decl/reagent/drink/nuka_cola value = 0.13 -/datum/reagent/drink/doctorsdelight +/decl/reagent/drink/doctorsdelight value = 0.3 -/datum/reagent/drink/ice +/decl/reagent/drink/ice value = 0 -/datum/reagent/drink/nothing +/decl/reagent/drink/nothing value = 0 -/datum/reagent/alcohol/ethanol/absinthe +/decl/reagent/alcohol/absinthe value = 0.13 -/datum/reagent/alcohol/ethanol/ale +/decl/reagent/alcohol/ale value = 0.13 -/datum/reagent/alcohol/ethanol/beer +/decl/reagent/alcohol/beer value = 0.12 -/datum/reagent/alcohol/ethanol/bitters +/decl/reagent/alcohol/bitters value = 0.15 -/datum/reagent/alcohol/ethanol/bluecuracao +/decl/reagent/alcohol/bluecuracao value = 0.16 -/datum/reagent/alcohol/ethanol/champagne +/decl/reagent/alcohol/champagne value = 0.2 -/datum/reagent/alcohol/ethanol/cognac +/decl/reagent/alcohol/cognac value = 0.2 -/datum/reagent/alcohol/ethanol/deadrum +/decl/reagent/alcohol/deadrum value = 0.15 -/datum/reagent/alcohol/ethanol/gin +/decl/reagent/alcohol/gin value = 0.1 -/datum/reagent/alcohol/ethanol/coffee/kahlua +/decl/reagent/alcohol/coffee/kahlua value = 0.14 -/datum/reagent/alcohol/ethanol/melonliquor +/decl/reagent/alcohol/melonliquor value = 0.13 -/datum/reagent/alcohol/ethanol/rum +/decl/reagent/alcohol/rum value = 0.1 -/datum/reagent/alcohol/ethanol/sake +/decl/reagent/alcohol/sake value = 0.11 -/datum/reagent/alcohol/ethanol/tequila +/decl/reagent/alcohol/tequila value = 0.1 -/datum/reagent/alcohol/ethanol/thirteenloko +/decl/reagent/alcohol/thirteenloko value = 0.15 -/datum/reagent/alcohol/ethanol/vermouth +/decl/reagent/alcohol/vermouth value = 0.1 -/datum/reagent/alcohol/ethanol/vodka +/decl/reagent/alcohol/vodka value = 0.1 -/datum/reagent/alcohol/ethanol/whiskey +/decl/reagent/alcohol/whiskey value = 0.1 -/datum/reagent/alcohol/ethanol/wine +/decl/reagent/alcohol/wine value = 0.1 -/datum/reagent/alcohol/ethanol/acid_spit +/decl/reagent/alcohol/acid_spit value = 0.15 -/datum/reagent/alcohol/ethanol/alliescocktail +/decl/reagent/alcohol/alliescocktail value = 0.16 -/datum/reagent/alcohol/ethanol/aloe +/decl/reagent/alcohol/aloe value = 0.17 -/datum/reagent/alcohol/ethanol/amasec +/decl/reagent/alcohol/amasec value = 0.16 -/datum/reagent/alcohol/ethanol/andalusia +/decl/reagent/alcohol/andalusia value = 0.15 -/datum/reagent/alcohol/ethanol/antifreeze +/decl/reagent/alcohol/antifreeze value = 0.16 -/datum/reagent/alcohol/ethanol/atomicbomb +/decl/reagent/alcohol/atomicbomb value = 0.21 -/datum/reagent/alcohol/ethanol/coffee/b52 +/decl/reagent/alcohol/coffee/b52 value = 0.17 -/datum/reagent/alcohol/ethanol/bahama_mama +/decl/reagent/alcohol/bahama_mama value = 0.15 -/datum/reagent/alcohol/ethanol/bananahonk +/decl/reagent/alcohol/bananahonk value = 0.15 -/datum/reagent/alcohol/ethanol/barefoot +/decl/reagent/alcohol/barefoot value = 0.14 -/datum/reagent/alcohol/ethanol/beepsky_smash +/decl/reagent/alcohol/beepsky_smash value = 0.2 -/datum/reagent/alcohol/ethanol/bilk +/decl/reagent/alcohol/bilk value = 0.12 -/datum/reagent/alcohol/ethanol/blackrussian +/decl/reagent/alcohol/blackrussian value = 0.14 -/datum/reagent/alcohol/ethanol/bloodymary +/decl/reagent/alcohol/bloodymary value = 0.14 -/datum/reagent/alcohol/ethanol/booger +/decl/reagent/alcohol/booger value = 0.13 -/datum/reagent/alcohol/ethanol/coffee/brave_bull +/decl/reagent/alcohol/coffee/brave_bull value = 0.16 -/datum/reagent/alcohol/ethanol/cmojito +/decl/reagent/alcohol/cmojito value = 0.14 -/datum/reagent/alcohol/ethanol/gibsonpunch +/decl/reagent/alcohol/gibsonpunch value = 0.19 -/datum/reagent/alcohol/ethanol/classic +/decl/reagent/alcohol/classic value = 0.14 -/datum/reagent/alcohol/ethanol/martini +/decl/reagent/alcohol/martini value = 0.16 -/datum/reagent/alcohol/ethanol/corkpopper +/decl/reagent/alcohol/corkpopper value = 0.13 -/datum/reagent/alcohol/ethanol/rumandcola +/decl/reagent/alcohol/rumandcola value = 0.15 -/datum/reagent/alcohol/ethanol/cubalibre +/decl/reagent/alcohol/cubalibre value = 0.16 -/datum/reagent/alcohol/ethanol/demonsblood +/decl/reagent/alcohol/demonsblood value = 0.15 -/datum/reagent/alcohol/ethanol/devilskiss +/decl/reagent/alcohol/devilskiss value = 0.14 -/datum/reagent/alcohol/ethanol/driestmartini +/decl/reagent/alcohol/driestmartini value = 0.16 -/datum/reagent/alcohol/ethanol/ginfizz +/decl/reagent/alcohol/ginfizz value = 0.13 -/datum/reagent/alcohol/ethanol/french75 +/decl/reagent/alcohol/french75 value = 0.17 -/datum/reagent/alcohol/ethanol/grog +/decl/reagent/alcohol/grog value = 0.11 -/datum/reagent/alcohol/ethanol/erikasurprise +/decl/reagent/alcohol/erikasurprise value = 0.16 -/datum/reagent/alcohol/ethanol/gargleblaster +/decl/reagent/alcohol/gargleblaster value = 0.21 -/datum/reagent/alcohol/ethanol/gintonic +/decl/reagent/alcohol/gintonic value = 0.15 -/datum/reagent/alcohol/ethanol/goldschlager +/decl/reagent/alcohol/goldschlager value = 0.2 -/datum/reagent/alcohol/ethanol/hippiesdelight +/decl/reagent/alcohol/hippiesdelight value = 0.12 -/datum/reagent/alcohol/ethanol/hooch +/decl/reagent/alcohol/hooch value = 0.11 -/datum/reagent/alcohol/ethanol/iced_beer +/decl/reagent/alcohol/iced_beer value = 0.13 -/datum/reagent/alcohol/ethanol/irishcarbomb +/decl/reagent/alcohol/irishcarbomb value = 0.14 -/datum/reagent/alcohol/ethanol/coffee/irishcoffee +/decl/reagent/alcohol/coffee/irishcoffee value = 0.12 -/datum/reagent/alcohol/ethanol/irish_cream +/decl/reagent/alcohol/irish_cream value = 0.13 -/datum/reagent/alcohol/ethanol/longislandicedtea +/decl/reagent/alcohol/longislandicedtea value = 0.13 -/datum/reagent/alcohol/ethanol/manhattan +/decl/reagent/alcohol/manhattan value = 0.14 -/datum/reagent/alcohol/ethanol/manhattan_proj +/decl/reagent/alcohol/manhattan_proj value = 0.2 -/datum/reagent/alcohol/ethanol/manly_dorf +/decl/reagent/alcohol/manly_dorf value = 0.13 -/datum/reagent/alcohol/ethanol/margarita +/decl/reagent/alcohol/margarita value = 0.15 -/datum/reagent/alcohol/ethanol/mead +/decl/reagent/alcohol/mead value = 0.13 -/datum/reagent/alcohol/ethanol/moonshine +/decl/reagent/alcohol/moonshine value = 0.11 -/datum/reagent/alcohol/ethanol/muscmule +/decl/reagent/alcohol/muscmule value = 0.14 -/datum/reagent/alcohol/ethanol/neurotoxin +/decl/reagent/alcohol/neurotoxin value = 0.2 -/datum/reagent/alcohol/ethanol/omimosa +/decl/reagent/alcohol/omimosa value = 0.18 -/datum/reagent/alcohol/ethanol/patron +/decl/reagent/alcohol/patron value = 0.16 -/datum/reagent/alcohol/ethanol/pinkgin +/decl/reagent/alcohol/pinkgin value = 0.11 -/datum/reagent/alcohol/ethanol/pinkgintonic +/decl/reagent/alcohol/pinkgintonic value = 0.13 -/datum/reagent/alcohol/ethanol/piratepunch +/decl/reagent/alcohol/piratepunch value = 0.14 -/datum/reagent/alcohol/ethanol/planterpunch +/decl/reagent/alcohol/planterpunch value = 0.13 -/datum/reagent/alcohol/ethanol/pwine +/decl/reagent/alcohol/pwine value = 0.19 -/datum/reagent/alcohol/ethanol/red_mead +/decl/reagent/alcohol/red_mead value = 0.14 -/datum/reagent/alcohol/ethanol/sbiten +/decl/reagent/alcohol/sbiten value = 0.13 -/datum/reagent/alcohol/ethanol/screwdrivercocktail +/decl/reagent/alcohol/screwdrivercocktail value = 0.13 -/datum/reagent/alcohol/ethanol/silencer +/decl/reagent/alcohol/silencer value = 0.135 -/datum/reagent/alcohol/ethanol/singulo +/decl/reagent/alcohol/singulo value = 0.2 -/datum/reagent/alcohol/ethanol/snowwhite +/decl/reagent/alcohol/snowwhite value = 0.125 -/datum/reagent/alcohol/ethanol/ssroyale +/decl/reagent/alcohol/ssroyale value = 0.14 -/datum/reagent/alcohol/ethanol/suidream +/decl/reagent/alcohol/suidream value = 0.12 -/datum/reagent/alcohol/ethanol/gibsonhooch +/decl/reagent/alcohol/gibsonhooch value = 0.21 -/datum/reagent/alcohol/ethanol/tequila_sunrise +/decl/reagent/alcohol/tequila_sunrise value = 0.13 -/datum/reagent/alcohol/ethanol/threemileisland +/decl/reagent/alcohol/threemileisland value = 0.2 -/datum/reagent/alcohol/ethanol/toxins_special +/decl/reagent/alcohol/toxins_special value = 0.2 -/datum/reagent/alcohol/ethanol/vodkamartini +/decl/reagent/alcohol/vodkamartini value = 0.135 -/datum/reagent/alcohol/ethanol/vodkatonic +/decl/reagent/alcohol/vodkatonic value = 0.145 -/datum/reagent/alcohol/ethanol/white_russian +/decl/reagent/alcohol/white_russian value = 0.125 -/datum/reagent/alcohol/ethanol/whiskey_cola +/decl/reagent/alcohol/whiskey_cola value = 0.15 -/datum/reagent/alcohol/ethanol/whiskeysoda +/decl/reagent/alcohol/whiskeysoda value = 0.15 -/datum/reagent/alcohol/ethanol/specialwhiskey +/decl/reagent/alcohol/specialwhiskey value = 0.3 -/datum/reagent/alcohol/ethanol/daiquiri +/decl/reagent/alcohol/daiquiri value = 0.15 -/datum/reagent/alcohol/ethanol/icepick +/decl/reagent/alcohol/icepick value = 0.15 -/datum/reagent/alcohol/ethanol/poussecafe +/decl/reagent/alcohol/poussecafe value = 0.17 -/datum/reagent/alcohol/ethanol/mintjulep +/decl/reagent/alcohol/mintjulep value = 0.15 -/datum/reagent/alcohol/ethanol/johncollins +/decl/reagent/alcohol/johncollins value = 0.17 -/datum/reagent/alcohol/ethanol/gimlet +/decl/reagent/alcohol/gimlet value = 0.13 -/datum/reagent/alcohol/ethanol/starsandstripes +/decl/reagent/alcohol/starsandstripes value = 0.15 -/datum/reagent/alcohol/ethanol/metropolitan +/decl/reagent/alcohol/metropolitan value = 0.13 -/datum/reagent/alcohol/ethanol/caruso +/decl/reagent/alcohol/caruso value = 0.18 -/datum/reagent/alcohol/ethanol/aprilshower +/decl/reagent/alcohol/aprilshower value = 0.15 -/datum/reagent/alcohol/ethanol/carthusiansazerac +/decl/reagent/alcohol/carthusiansazerac value = 0.17 -/datum/reagent/alcohol/ethanol/deweycocktail +/decl/reagent/alcohol/deweycocktail value = 0.15 -/datum/reagent/alcohol/ethanol/chartreusegreen +/decl/reagent/alcohol/chartreusegreen value = 0.18 -/datum/reagent/alcohol/ethanol/chartreuseyellow +/decl/reagent/alcohol/chartreuseyellow value = 0.18 -/datum/reagent/alcohol/ethanol/cremewhite +/decl/reagent/alcohol/cremewhite value = 0.14 -/datum/reagent/alcohol/ethanol/cremeyvette +/decl/reagent/alcohol/cremeyvette value = 0.17 -/datum/reagent/alcohol/ethanol/brandy +/decl/reagent/alcohol/brandy value = 0.2 -/datum/reagent/alcohol/ethanol/guinness +/decl/reagent/alcohol/guinness value = 0.1 -/datum/reagent/alcohol/ethanol/drambuie +/decl/reagent/alcohol/drambuie value = 0.18 -/datum/reagent/alcohol/ethanol/oldfashioned +/decl/reagent/alcohol/oldfashioned value = 0.15 -/datum/reagent/alcohol/ethanol/blindrussian +/decl/reagent/alcohol/blindrussian value = 0.16 -/datum/reagent/alcohol/ethanol/rustynail +/decl/reagent/alcohol/rustynail value = 0.13 -/datum/reagent/alcohol/ethanol/tallrussian +/decl/reagent/alcohol/tallrussian value = 0.15 -/datum/reagent/alcohol/ethanol/solarian_white +/decl/reagent/alcohol/solarian_white value = 0.125 -/datum/reagent/alcohol/ethanol/solarian_marine +/decl/reagent/alcohol/solarian_marine value = 0.2 -/datum/reagent/alcohol/ethanol/cloudyoran +/decl/reagent/alcohol/cloudyoran value = 0.12 -/datum/reagent/alcohol/ethanol/djinntea +/decl/reagent/alcohol/djinntea value = 0.12 -/datum/reagent/alcohol/ethanol/permanentrevolution +/decl/reagent/alcohol/permanentrevolution value = 0.13 -/datum/reagent/alcohol/ethanol/internationale +/decl/reagent/alcohol/internationale value = 0.13 -/datum/reagent/alcohol/ethanol/dionamama +/decl/reagent/alcohol/dionamama value = 0.2 -/datum/reagent/alcohol/ethanol/jovianstorm +/decl/reagent/alcohol/jovianstorm value = 0.13 -/datum/reagent/alcohol/ethanol/primeminister +/decl/reagent/alcohol/primeminister value = 0.13 -/datum/reagent/alcohol/ethanol/peacetreaty +/decl/reagent/alcohol/peacetreaty value = 0.15 -/datum/reagent/alcohol/ethanol/fiscream +/decl/reagent/alcohol/fiscream value = 0.14 -/datum/reagent/alcohol/ethanol/coffee/fiscoffee +/decl/reagent/alcohol/coffee/fiscoffee value = 0.13 -/datum/reagent/alcohol/ethanol/fisfirebomb +/decl/reagent/alcohol/fisfirebomb value = 0.15 -/datum/reagent/inaprovaline +/decl/reagent/inaprovaline value = 2.5 -/datum/reagent/bicaridine +/decl/reagent/bicaridine value = 4.9 -/datum/reagent/dermaline +/decl/reagent/dermaline value = 3.9 -/datum/reagent/dylovene +/decl/reagent/dylovene value = 2.1 -/datum/reagent/dexalin +/decl/reagent/dexalin value = 2.4 -/datum/reagent/dexalin/plus +/decl/reagent/dexalin/plus value = 3.6 -/datum/reagent/tricordrazine +/decl/reagent/tricordrazine value = 6 -/datum/reagent/cryoxadone +/decl/reagent/cryoxadone value = 3.9 -/datum/reagent/clonexadone +/decl/reagent/clonexadone value = 5.5 -/datum/reagent/perconol +/decl/reagent/perconol value = 3.3 -/datum/reagent/mortaphenyl +/decl/reagent/mortaphenyl value = 3.1 -/datum/reagent/oxycomorphine +/decl/reagent/oxycomorphine value = 3.3 -/datum/reagent/synaptizine +/decl/reagent/synaptizine value = 4.6 -/datum/reagent/alkysine +/decl/reagent/alkysine value = 5.9 -/datum/reagent/oculine +/decl/reagent/oculine value = 4.2 -/datum/reagent/peridaxon +/decl/reagent/peridaxon value = 6 -/datum/reagent/ryetalyn +/decl/reagent/ryetalyn value = 3.6 -/datum/reagent/pneumalin +/decl/reagent/pneumalin value = 3.2 -/datum/reagent/hyperzine +/decl/reagent/hyperzine value = 3.9 -/datum/reagent/ethylredoxrazine +/decl/reagent/ethylredoxrazine value = 3.1 -/datum/reagent/hyronalin +/decl/reagent/hyronalin value = 2.3 -/datum/reagent/arithrazine +/decl/reagent/arithrazine value = 2.7 -/datum/reagent/thetamycin +/decl/reagent/thetamycin value = 2.5 -/datum/reagent/coughsyrup +/decl/reagent/coughsyrup value = 1.5 -/datum/reagent/sterilizine +/decl/reagent/sterilizine value = 2.2 -/datum/reagent/leporazine +/decl/reagent/leporazine value = 2 -/datum/reagent/mental/corophenidate +/decl/reagent/mental/corophenidate value = 6 -/datum/reagent/mental/parvosil +/decl/reagent/mental/parvosil value = 6 -/datum/reagent/mental/neurostabin +/decl/reagent/mental/neurostabin value = 6 -/datum/reagent/mental/minaphobin +/decl/reagent/mental/minaphobin value = 6 -/datum/reagent/mental/emoxanyl +/decl/reagent/mental/emoxanyl value = 6 -/datum/reagent/mental/orastabin +/decl/reagent/mental/orastabin value = 6 -/datum/reagent/mental/neurapan +/decl/reagent/mental/neurapan value = 6 -/datum/reagent/mental/nerospectan +/decl/reagent/mental/nerospectan value = 6 -/datum/reagent/mental/truthserum +/decl/reagent/mental/truthserum value = 8 -/datum/reagent/mental/nicotine +/decl/reagent/mental/nicotine value = 2 -/datum/reagent/rezadone +/decl/reagent/rezadone value = 5 -/datum/reagent/verunol +/decl/reagent/verunol value = 2 -/datum/reagent/crayon_dust +/decl/reagent/crayon_dust value = 0.001 -/datum/reagent/adminordrazine +/decl/reagent/adminordrazine value = 1000 -/datum/reagent/gold +/decl/reagent/gold value = 7 -/datum/reagent/silver +/decl/reagent/silver value = 4 -/datum/reagent/uranium +/decl/reagent/uranium value = 9 -/datum/reagent/platinum +/decl/reagent/platinum value = 3 -/datum/reagent/adrenaline +/decl/reagent/adrenaline value = 3 -/datum/reagent/diethylamine +/decl/reagent/diethylamine value = 0.9 -/datum/reagent/surfactant +/decl/reagent/surfactant value = 0.05 -/datum/reagent/thermite +/decl/reagent/thermite value = 6 -/datum/reagent/spacecleaner +/decl/reagent/spacecleaner value = 0.7 -/datum/reagent/lube +/decl/reagent/lube value = 0.6 -/datum/reagent/glycerol +/decl/reagent/glycerol value = 8 -/datum/reagent/nitroglycerin +/decl/reagent/nitroglycerin value = 9 -/datum/reagent/coolant +/decl/reagent/coolant value = 0.8 -/datum/reagent/woodpulp +/decl/reagent/woodpulp value = 0.6 -/datum/reagent/luminol +/decl/reagent/luminol value = 1.4 -/datum/reagent/toxin +/decl/reagent/toxin value = 2 -/datum/reagent/toxin/plasticide +/decl/reagent/toxin/plasticide value = 2.1 -/datum/reagent/toxin/amatoxin +/decl/reagent/toxin/amatoxin value = 2.3 -/datum/reagent/toxin/carpotoxin +/decl/reagent/toxin/carpotoxin value = 3 -/datum/reagent/toxin/phoron +/decl/reagent/toxin/phoron value = 10 -/datum/reagent/toxin/cyanide +/decl/reagent/toxin/cyanide value = 3.3 -/datum/reagent/toxin/potassium_chloride +/decl/reagent/toxin/potassium_chloride value = 4.4 -/datum/reagent/toxin/potassium_chlorophoride +/decl/reagent/toxin/potassium_chlorophoride value = 4.5 -/datum/reagent/toxin/zombiepowder +/decl/reagent/toxin/zombiepowder value = 2.9 -/datum/reagent/toxin/fertilizer +/decl/reagent/toxin/fertilizer value = 1.2 -/datum/reagent/toxin/plantbgone +/decl/reagent/toxin/plantbgone value = 1.1 -/datum/reagent/acid/polyacid +/decl/reagent/acid/polyacid value = 2 -/datum/reagent/lexorin +/decl/reagent/lexorin value = 2.4 -/datum/reagent/mutagen +/decl/reagent/mutagen value = 3.1 -/datum/reagent/slimejelly +/decl/reagent/slimejelly value = 1.2 -/datum/reagent/soporific +/decl/reagent/soporific value = 2.5 -/datum/reagent/polysomnine +/decl/reagent/polysomnine value = 2.6 -/datum/reagent/polysomnine/beer2 +/decl/reagent/polysomnine/beer2 value = 2.2 -/datum/reagent/space_drugs +/decl/reagent/space_drugs value = 2.8 -/datum/reagent/serotrotium +/decl/reagent/serotrotium value = 2.5 -/datum/reagent/cryptobiolin +/decl/reagent/cryptobiolin value = 2 -/datum/reagent/impedrezene +/decl/reagent/impedrezene value = 1.8 -/datum/reagent/mindbreaker +/decl/reagent/mindbreaker value = 0.6 -/datum/reagent/psilocybin +/decl/reagent/psilocybin value = 0.7 -/datum/reagent/aslimetoxin +/decl/reagent/aslimetoxin value = 3 -/datum/reagent/toxin/nanites +/decl/reagent/toxin/nanites value = 9 -/datum/reagent/estus +/decl/reagent/estus value = 50 -/datum/reagent/liquid_fire +/decl/reagent/liquid_fire value = 50 -/datum/reagent/black_matter +/decl/reagent/black_matter value = 250 -/datum/reagent/bluespace_dust +/decl/reagent/bluespace_dust value = 250 -/datum/reagent/philosopher_stone +/decl/reagent/philosopher_stone value = 1000 -/datum/reagent/elixir +/decl/reagent/elixir value = 1000 -/datum/reagent/azoth +/decl/reagent/azoth value = 500 -/datum/reagent/toxin/undead +/decl/reagent/toxin/undead value = 300 diff --git a/code/modules/item_worth/worths_list.dm b/code/modules/item_worth/worths_list.dm index 57ef122015f..b4d35b30a78 100644 --- a/code/modules/item_worth/worths_list.dm +++ b/code/modules/item_worth/worths_list.dm @@ -495,12 +495,12 @@ var/list/worths = list( /obj/item/clothing/suit/armor/reactive = 5000, /obj/item/clothing/suit/armor/centcomm = 2000, /obj/item/clothing/suit/armor/heavy = 1000, - /obj/item/clothing/suit/armor/hos = 1000, + /obj/item/clothing/suit/security/hos = 100, /obj/item/clothing/suit/armor/tactical = 1500, /obj/item/clothing/suit/armor = 500, /obj/item/clothing/suit/bio_suit = 150, /obj/item/clothing/suit/captunic/capjacket = 100, - /obj/item/clothing/suit/security/navyhos = 80, + /obj/item/clothing/suit/security/hos/dnavy = 80, /obj/item/clothing/suit/storage/hazardvest = 60, /obj/item/clothing/suit/storage/toggle/labcoat = 55, /obj/item/clothing/suit/bluetag = 20, @@ -524,8 +524,8 @@ var/list/worths = list( /obj/item/clothing/head/helmet/gladiator = 300, /obj/item/clothing/head/helmet/ert = 1000, /obj/item/clothing/head/helmet/hos = 800, - /obj/item/clothing/head/hos/cap = 100, - /obj/item/clothing/head/hos/cap/alt = 100, + /obj/item/clothing/head/hos = 100, + /obj/item/clothing/head/hos/corp = 100, /obj/item/clothing/head/helmet = 250, /obj/item/clothing/head/culthood = 150, /obj/item/clothing/head/caphat/hop = 100, @@ -885,4 +885,3 @@ var/list/worths = list( /obj/vehicle/bike = 1500, /obj/vehicle = 1000 ) //Must be in descending order. Child before parents, otherwise it doesn't work., - diff --git a/code/modules/makeshift/makeshift_reagents.dm b/code/modules/makeshift/makeshift_reagents.dm index 073f4e2ada1..b5243d5d39a 100644 --- a/code/modules/makeshift/makeshift_reagents.dm +++ b/code/modules/makeshift/makeshift_reagents.dm @@ -15,14 +15,14 @@ var/list/forbidden = list(/obj/item/reagent_containers/inhaler, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/glass, /obj/item/extinguisher) // duplicate from blender code, since it's not really worth a define. also, it has fewer things. var/list/sheet_reagents = list( //have a number of reagents which is a factor of REAGENTS_PER_SHEET (default 20) unless you like decimals - /obj/item/stack/material/iron = list(/datum/reagent/iron), - /obj/item/stack/material/uranium = list(/datum/reagent/uranium), - /obj/item/stack/material/phoron = list(/datum/reagent/toxin/phoron), - /obj/item/stack/material/gold = list(/datum/reagent/gold), - /obj/item/stack/material/silver = list(/datum/reagent/silver), - /obj/item/stack/material/steel = list(/datum/reagent/iron, /datum/reagent/carbon), - /obj/item/stack/material/sandstone = list(/datum/reagent/silicon, /datum/reagent/acetone), - /obj/item/stack/material/glass = list(/datum/reagent/silicate), + /obj/item/stack/material/iron = list(/decl/reagent/iron), + /obj/item/stack/material/uranium = list(/decl/reagent/uranium), + /obj/item/stack/material/phoron = list(/decl/reagent/toxin/phoron), + /obj/item/stack/material/gold = list(/decl/reagent/gold), + /obj/item/stack/material/silver = list(/decl/reagent/silver), + /obj/item/stack/material/steel = list(/decl/reagent/iron, /decl/reagent/carbon), + /obj/item/stack/material/sandstone = list(/decl/reagent/silicon, /decl/reagent/acetone), + /obj/item/stack/material/glass = list(/decl/reagent/silicate), ) // removed borosilicate glass, platinum, and plasteel, too tough. just steal a grinder if you need it /obj/structure/chemkit/Initialize() @@ -80,13 +80,13 @@ var/amt = 0 switch(phase_filter) if("solid") - amt = reagents.trans_ids_to(I.reagents, reagents.get_ids_by_phase(SOLID), reagents.get_free_space()) + amt = reagents.trans_ids_to(I.reagents, reagents.get_ids_by_phase(SOLID), REAGENTS_FREE_SPACE(reagents)) if("liquid") - amt = reagents.trans_ids_to(I.reagents, reagents.get_ids_by_phase(LIQUID), reagents.get_free_space()) + amt = reagents.trans_ids_to(I.reagents, reagents.get_ids_by_phase(LIQUID), REAGENTS_FREE_SPACE(reagents)) if("gas") - amt = reagents.trans_ids_to(I.reagents, reagents.get_ids_by_phase(GAS), reagents.get_free_space()) + amt = reagents.trans_ids_to(I.reagents, reagents.get_ids_by_phase(GAS), REAGENTS_FREE_SPACE(reagents)) else - amt = reagents.trans_to_holder(I.reagents, reagents.get_free_space()) + amt = reagents.trans_to_holder(I.reagents, REAGENTS_FREE_SPACE(reagents)) if(amt) to_chat(user, SPAN_NOTICE("You fill \the [I] with [amt] units from \the [src].")) else if(I.reagents && I.reagents.total_volume) @@ -97,7 +97,7 @@ if(!istype(stack)) return var/list/sheet_components = sheet_reagents[stack.type] - var/amount_to_take = max(0,min(stack.amount,round(reagents.get_free_space()/REAGENTS_PER_SHEET))) + var/amount_to_take = max(0,min(stack.amount,round(REAGENTS_FREE_SPACE(reagents)/REAGENTS_PER_SHEET))) if(!amount_to_take) return stack.use(amount_to_take) @@ -214,17 +214,18 @@ /obj/structure/distillery/proc/distill() if(!reagents || !reagents.total_volume) // can't distill nothing return - for(var/datum/reagent/R in src.reagents.reagent_list) - if(!istype(R, /datum/reagent/alcohol)) + for(var/_R in reagents.reagent_volumes) + var/decl/reagent/alcohol/AR = decls_repository.get_decl(_R) + if(!istype(AR)) return - var/datum/reagent/alcohol/AR = R - reagents.add_reagent(/datum/reagent/water, (1-(AR.strength/100))*AR.volume) - if(istype(AR, /datum/reagent/alcohol/ethanol)) - reagents.add_reagent(/datum/reagent/alcohol/ethanol, (AR.strength/100)*AR.volume) - if(istype(AR, /datum/reagent/alcohol/butanol)) - reagents.add_reagent(/datum/reagent/alcohol/butanol, (AR.strength/100)*AR.volume) - reagents.remove_reagent(AR.type, AR.volume) - src.icon_state = "distillery-off" + var/ARvol = REAGENT_VOLUME(reagents, AR.type) + reagents.add_reagent(/decl/reagent/water, (1-(AR.strength/100))*ARvol) + if(istype(AR, /decl/reagent/alcohol)) + reagents.add_reagent(/decl/reagent/alcohol, (AR.strength/100)*ARvol) + else if(istype(AR, /decl/reagent/alcohol/butanol)) + reagents.add_reagent(/decl/reagent/alcohol/butanol, (AR.strength/100)*ARvol) + reagents.remove_reagent(AR.type, ARvol) + icon_state = "distillery-off" /obj/structure/distillery/attackby(obj/item/W, mob/user) if(W.iscrowbar()) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index d9d5be2f1c3..43b9ad397fd 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -921,6 +921,14 @@ var/list/total_extraction_beacons = list() return if(A.anchored) return + var/turf/T = get_turf(A) + for(var/found_inhibitor in bluespace_inhibitors) + var/obj/machinery/anti_bluespace/AB = found_inhibitor + if(T.z != AB.z || get_dist(T, AB) > 8 || (AB.stat & (NOPOWER | BROKEN))) + continue + AB.use_power(AB.active_power_usage) + to_chat(user, SPAN_WARNING("A nearby bluespace inhibitor interferes with \the [src]!")) + return to_chat(user, SPAN_NOTICE("You start attaching the pack to \the [A]...")) if(do_after(user,50)) to_chat(user, SPAN_NOTICE("You attach the pack to \the [A] and activate it.")) @@ -968,11 +976,10 @@ var/list/total_extraction_beacons = list() var/area/area_name = get_area(src) name += " ([rand(100,999)]) ([area_name.name])" total_extraction_beacons += src - ..() /obj/structure/extraction_point/Destroy() total_extraction_beacons -= src - . = ..() + return ..() /**********************Resonator**********************/ diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 2560f8bda8c..26052d55879 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -389,8 +389,8 @@ var/list/mineral_can_smooth_with = list( if(prob(25)) var/datum/reagents/R = new/datum/reagents(20) R.my_atom = src - R.add_reagent(/datum/reagent/stone_dust,20) - var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem(/datum/reagent/stone_dust) // have to explicitly say the type to avoid issues with warnings + R.add_reagent(/decl/reagent/stone_dust,20) + var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem(/decl/reagent/stone_dust) // have to explicitly say the type to avoid issues with warnings S.show_log = 0 S.set_up(R, 10, 0, src, 40) S.start() diff --git a/code/modules/mob/abstract/new_player/menu.dm b/code/modules/mob/abstract/new_player/menu.dm index 53628e96e33..a6dc0d7d418 100644 --- a/code/modules/mob/abstract/new_player/menu.dm +++ b/code/modules/mob/abstract/new_player/menu.dm @@ -260,7 +260,7 @@ observer.started_as_observer = 1 close_spawn_windows() - var/obj/O = locate("landmark*Observer-Start") + var/obj/O = locate("landmark*Observer-Start") in landmarks_list if(istype(O)) to_chat(src, "Now teleporting.") observer.forceMove(O.loc) diff --git a/code/modules/mob/abstract/new_player/new_player.dm b/code/modules/mob/abstract/new_player/new_player.dm index 1ff4878858e..77d28c7641a 100644 --- a/code/modules/mob/abstract/new_player/new_player.dm +++ b/code/modules/mob/abstract/new_player/new_player.dm @@ -355,6 +355,7 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player) new_character.dna.ready_dna(new_character) new_character.dna.b_type = client.prefs.b_type new_character.sync_organ_dna() + new_character.fixblood() // now that dna is set if(client.prefs.disabilities & NEARSIGHTED) // Set defer to 1 if you add more crap here so it only recalculates struc_enzymes once. - N3X new_character.dna.SetSEState(GLASSESBLOCK,1,0) diff --git a/code/modules/mob/abstract/observer/login.dm b/code/modules/mob/abstract/observer/login.dm index 0794f6ccf06..e600165b568 100644 --- a/code/modules/mob/abstract/observer/login.dm +++ b/code/modules/mob/abstract/observer/login.dm @@ -2,4 +2,5 @@ ..() if (ghostimage) ghostimage.icon_state = src.icon_state + compile_overlays() // works like cut_overlays but it actually works updateghostimages() diff --git a/code/modules/mob/language/outsider.dm b/code/modules/mob/language/outsider.dm index 6645192969c..e48a0c511a9 100644 --- a/code/modules/mob/language/outsider.dm +++ b/code/modules/mob/language/outsider.dm @@ -92,4 +92,15 @@ space_chance = 10 /datum/language/terminator/get_random_name() - return "HK [pick(list("Hera","Zeus","Artemis","Athena","Ares","Hades","Poseidon","Demeter","Apollo","Aphrodite","Hermes","Hestia","Dionysus","Persephone","Kronos","Odysseus","Ajax","Agamemnon","Chiron","Charon"))]-[rand(100, 999)]" \ No newline at end of file + return "HK [pick(list("Hera","Zeus","Artemis","Athena","Ares","Hades","Poseidon","Demeter","Apollo","Aphrodite","Hermes","Hestia","Dionysus","Persephone","Kronos","Odysseus","Ajax","Agamemnon","Chiron","Charon"))]-[rand(100, 999)]" + +/datum/language/revenant + name = LANGUAGE_REVENANT + desc = "The language of the forsaken bluespace inhabitants." + speech_verb = list("gargles") + ask_verb = list("gags") + exclaim_verb = list("retches") + colour = "revenant" + key = "c" + syllables = list("grhhg", "ghrohg", "grgugh", "grrhh", "hghh", "rghghh", "gghhh", "ggrh", "aghrh") + flags = RESTRICTED \ No newline at end of file diff --git a/code/modules/mob/living/bot/farmbot.dm b/code/modules/mob/living/bot/farmbot.dm index 2ffc9e87e9c..46c095f36ba 100644 --- a/code/modules/mob/living/bot/farmbot.dm +++ b/code/modules/mob/living/bot/farmbot.dm @@ -225,7 +225,7 @@ if(do_after(src, 30)) visible_message(SPAN_NOTICE("[src] eliminates the pests in \the [A].")) T.pestlevel = 0 - T.reagents.add_reagent(/datum/reagent/nutriment, 0.5) + T.reagents.add_reagent(/decl/reagent/nutriment, 0.5) T.update_icon() if(FARMBOT_NUTRIMENT) action = "fertile" @@ -234,7 +234,7 @@ attacking = TRUE if(do_after(src, 30)) visible_message(SPAN_NOTICE("[src] waters \the [A].")) - T.reagents.add_reagent(/datum/reagent/ammonia, 10) + T.reagents.add_reagent(/decl/reagent/ammonia, 10) attacking = FALSE action = "" update_icon() @@ -247,7 +247,7 @@ visible_message(SPAN_NOTICE("[src] starts refilling its tank from \the [A].")) attacking = TRUE while(do_after(src, 10) && tank.reagents.total_volume < tank.reagents.maximum_volume) - tank.reagents.add_reagent(/datum/reagent/water, 10) + tank.reagents.add_reagent(/decl/reagent/water, 10) if(prob(5)) playsound(get_turf(src), 'sound/effects/slosh.ogg', 25, TRUE) attacking = FALSE @@ -296,7 +296,7 @@ return FALSE if(tray.dead && removes_dead || tray.harvest && collects_produce) return FARMBOT_COLLECT - else if(waters_trays && tray.waterlevel < 10 && !tray.reagents.has_reagent(/datum/reagent/water)) + else if(waters_trays && tray.waterlevel < 10 && !tray.reagents.has_reagent(/decl/reagent/water)) return FARMBOT_WATER else if(uproots_weeds && tray.weedlevel >= 5) return FARMBOT_UPROOT @@ -376,4 +376,4 @@ created_name = t /obj/item/farmbot_arm_assembly/attack_hand(mob/user) - return //it's a converted watertank, no you cannot pick it up and put it in your backpack \ No newline at end of file + return //it's a converted watertank, no you cannot pick it up and put it in your backpack diff --git a/code/modules/mob/living/bot/medbot.dm b/code/modules/mob/living/bot/medbot.dm index 5d37f9295ba..64ed0ce9f82 100644 --- a/code/modules/mob/living/bot/medbot.dm +++ b/code/modules/mob/living/bot/medbot.dm @@ -22,11 +22,11 @@ var/injection_amount = 10 //How much reagent do we inject at a time? var/heal_threshold = 10 //Start healing when they have this much damage in a category var/use_beaker = 0 //Use reagents in beaker instead of default treatment agents. - var/treatment_brute = /datum/reagent/tricordrazine - var/treatment_oxy = /datum/reagent/tricordrazine - var/treatment_fire = /datum/reagent/tricordrazine - var/treatment_tox = /datum/reagent/tricordrazine - var/treatment_emag = /datum/reagent/toxin + var/treatment_brute = /decl/reagent/tricordrazine + var/treatment_oxy = /decl/reagent/tricordrazine + var/treatment_fire = /decl/reagent/tricordrazine + var/treatment_tox = /decl/reagent/tricordrazine + var/treatment_emag = /decl/reagent/toxin var/declare_treatment = 0 //When attempting to treat a patient, should it notify everyone wearing medhuds? @@ -294,9 +294,10 @@ // If they're injured, we're using a beaker, and they don't have on of the chems in the beaker if(reagent_glass && use_beaker && ((H.getBruteLoss() >= heal_threshold) || (H.getToxLoss() >= heal_threshold) || (H.getToxLoss() >= heal_threshold) || (H.getOxyLoss() >= (heal_threshold + 15)))) - for(var/datum/reagent/R in reagent_glass.reagents.reagent_list) + for(var/_R in reagent_glass.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) if(!H.reagents.has_reagent(R)) - return 1 + return TRUE continue if((H.getBruteLoss() >= heal_threshold) && (!H.reagents.has_reagent(treatment_brute))) diff --git a/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm b/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm index 789c3c7a52d..5cfbe095d35 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona_nymph.dm @@ -9,7 +9,7 @@ density = 0 mouth_size = 2 //how large of a creature it can swallow at once, and how big of a bite it can take out of larger things eat_types = 0 //This is a bitfield which must be initialised in New(). The valid values for it are in devour.dm - composition_reagent = /datum/reagent/nutriment //Dionae are plants, so eating them doesn't give animal protein + composition_reagent = /decl/reagent/nutriment //Dionae are plants, so eating them doesn't give animal protein name = "diona nymph" voice_name = "diona nymph" accent = ACCENT_ROOTSONG @@ -191,22 +191,14 @@ vessel = new/datum/reagents(600) vessel.my_atom = src - vessel.add_reagent(/datum/reagent/blood, 560) + vessel.add_reagent(/decl/reagent/blood, 560, temperature = species.body_temperature) fixblood() /mob/living/carbon/alien/diona/proc/fixblood() - for(var/datum/reagent/blood/B in vessel.reagent_list) - if(B.type == /datum/reagent/blood) - B.data = list( - "donor" = WEAKREF(src), - "species" = species.name, - "blood_DNA" = name, - "blood_colour" = species.blood_color, - "blood_type" = null, - "resistances" = null, - "trace_chem" = null - ) - B.color = B.data["blood_colour"] + if(!REAGENT_DATA(vessel, /decl/reagent/blood)) + return + var/list/new_blood_data = get_blood_data() + vessel.reagent_data[/decl/reagent/blood] = vessel.reagent_data[/decl/reagent/blood] ^ new_blood_data | new_blood_data /mob/living/carbon/alien/diona/proc/setup_dionastats() var/MLS = (1.5 / 2.1) //Maximum energy lost per second, in total darkness diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index cbfeaa72a31..643a1e0668a 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -15,6 +15,7 @@ //Active emote/pose var/pose = null var/list/chem_effects = list() + var/list/chem_doses = list() var/intoxication = 0//Units of alcohol in their system var/datum/reagents/metabolism/bloodstr = null var/datum/reagents/metabolism/touching = null diff --git a/code/modules/mob/living/carbon/diona_base.dm b/code/modules/mob/living/carbon/diona_base.dm index 3d1cacd0f83..a37a8cce7d0 100644 --- a/code/modules/mob/living/carbon/diona_base.dm +++ b/code/modules/mob/living/carbon/diona_base.dm @@ -416,9 +416,7 @@ var/list/diona_banned_languages = list( visible_message("With a shower of sticky sap, a new mass of tendrils bursts forth from [src]'s trunk, forming a new [E].", "With a shower of sticky sap, a new mass of tendrils bursts forth from your trunk, forming a new [E].") - var/datum/reagents/vessel = get_vessel(0) - var/datum/reagent/B = vessel.get_master_reagent() - B.touch_turf(get_turf(src)) + blood_splatter(get_turf(src), src, TRUE) regenerate_icons() DS.LMS = min(2, DS.LMS) //Prevents a message about darkness in light areas @@ -636,18 +634,18 @@ var/list/diona_banned_languages = list( //Attempt to find the blood vessel, but don't create a fake one if its not there. //If the target doesn't have a vessel its probably due to someone not implementing it properly, like xenos //We'll still allow it - var/datum/reagents/vessel = D.get_vessel(1) var/newDNA - var/datum/reagent/blood/B = vessel.get_master_reagent() - var/total_blood = B.volume + var/datum/reagents/vessel + + var/total_blood = REAGENT_VOLUME(vessel, /decl/reagent/blood) var/remove_amount = total_blood * 0.05 if(ishuman(D)) var/mob/living/carbon/human/H = D remove_amount = H.species.blood_volume * 0.05 if(remove_amount > 0) - vessel.remove_reagent(/datum/reagent/blood, remove_amount, TRUE) + vessel.remove_reagent(/decl/reagent/blood, remove_amount, TRUE) user.adjustNutritionLoss(-remove_amount * 0.5) - var/list/data = vessel.get_data(/datum/reagent/blood) + var/list/data = REAGENT_DATA(vessel, /decl/reagent/blood) newDNA = data["blood_DNA"] if(!newDNA) //Fallback. Adminspawned mobs, and possibly some others, have null dna. @@ -656,7 +654,7 @@ var/list/diona_banned_languages = list( D.adjustBruteLoss(4) user.visible_message(SPAN_NOTICE("[user] sucks some blood from \the [D].") , SPAN_NOTICE("You extract a delicious mouthful of blood from \the [D]!")) to_chat(D, SPAN_NOTICE("You feel some liquid being injected at the bite site.")) - D.reagents.add_reagent(/datum/reagent/mortaphenyl/aphrodite, 5) + D.reagents.add_reagent(/decl/reagent/mortaphenyl/aphrodite, 5) if(D.client) INVOKE_ASYNC(src, .proc/memory_transfer, user, D) if(newDNA in sampled_DNA) diff --git a/code/modules/mob/living/carbon/human/MedicalSideEffects.dm b/code/modules/mob/living/carbon/human/MedicalSideEffects.dm index f51b4b720b0..898934aa731 100644 --- a/code/modules/mob/living/carbon/human/MedicalSideEffects.dm +++ b/code/modules/mob/living/carbon/human/MedicalSideEffects.dm @@ -13,7 +13,7 @@ if(H.reagents.has_reagent(R)) return 0 for(var/R in triggers) - if(H.reagents.get_reagent_amount(R) >= triggers[R]) + if(REAGENT_VOLUME(H.reagents, R) >= triggers[R]) return 1 return 0 @@ -82,8 +82,8 @@ // ======== /datum/medical_effect/headache name = "Headache" - triggers = list(/datum/reagent/cryoxadone = 10, /datum/reagent/bicaridine = 15, /datum/reagent/tricordrazine = 15) - cures = list(/datum/reagent/alkysine, /datum/reagent/mortaphenyl, /datum/reagent/perconol, /datum/reagent/oxycomorphine) + triggers = list(/decl/reagent/cryoxadone = 10, /decl/reagent/bicaridine = 15, /decl/reagent/tricordrazine = 15) + cures = list(/decl/reagent/alkysine, /decl/reagent/mortaphenyl, /decl/reagent/perconol, /decl/reagent/oxycomorphine) cure_message = "Your head stops throbbing..." /datum/medical_effect/headache/on_life(mob/living/carbon/human/H, strength) @@ -99,8 +99,8 @@ // =========== /datum/medical_effect/bad_stomach name = "Bad Stomach" - triggers = list(/datum/reagent/kelotane = 30, /datum/reagent/dermaline = 15) - cures = list(/datum/reagent/dylovene) + triggers = list(/decl/reagent/kelotane = 30, /decl/reagent/dermaline = 15) + cures = list(/decl/reagent/dylovene) cure_message = "Your stomach feels a little better now..." /datum/medical_effect/bad_stomach/on_life(mob/living/carbon/human/H, strength) @@ -116,8 +116,8 @@ // ====== /datum/medical_effect/cramps name = "Cramps" - triggers = list(/datum/reagent/dylovene = 30, /datum/reagent/mortaphenyl = 15) - cures = list(/datum/reagent/inaprovaline) + triggers = list(/decl/reagent/dylovene = 30, /decl/reagent/mortaphenyl = 15) + cures = list(/decl/reagent/inaprovaline) cure_message = "The cramps let up..." /datum/medical_effect/cramps/on_life(mob/living/carbon/human/H, strength) @@ -134,8 +134,8 @@ // ==== /datum/medical_effect/itch name = "Itch" - triggers = list(/datum/reagent/space_drugs = 10) - cures = list(/datum/reagent/inaprovaline) + triggers = list(/decl/reagent/space_drugs = 10) + cures = list(/decl/reagent/inaprovaline) cure_message = "The itching stops..." /datum/medical_effect/itch/on_life(mob/living/carbon/human/H, strength) diff --git a/code/modules/mob/living/carbon/human/chem_side_effects.dm b/code/modules/mob/living/carbon/human/chem_side_effects.dm index dbad15a61dd..52bb50d0e42 100644 --- a/code/modules/mob/living/carbon/human/chem_side_effects.dm +++ b/code/modules/mob/living/carbon/human/chem_side_effects.dm @@ -13,7 +13,7 @@ if(H.reagents.has_reagent(R)) return 0 for(var/R in triggers) - if(H.reagents.get_reagent_amount(R) >= triggers[R]) + if(REAGENT_VOLUME(H.reagents, R) >= triggers[R]) return 1 return 0 @@ -82,8 +82,8 @@ // ======== /datum/medical_effect/headache name = "Headache" - triggers = list(/datum/reagent/cryoxadone = 10, /datum/reagent/bicaridine = 15, /datum/reagent/tricordrazine = 15) - cures = list(/datum/reagent/alkysine, /datum/reagent/mortaphenyl, /datum/reagent/perconol, /datum/reagent/oxycomorphine) + triggers = list(/decl/reagent/cryoxadone = 10, /decl/reagent/bicaridine = 15, /decl/reagent/tricordrazine = 15) + cures = list(/decl/reagent/alkysine, /decl/reagent/mortaphenyl, /decl/reagent/perconol, /decl/reagent/oxycomorphine) cure_message = "Your head stops throbbing..." /datum/medical_effect/headache/on_life(mob/living/carbon/human/H, strength) @@ -99,8 +99,8 @@ // =========== /datum/medical_effect/bad_stomach name = "Bad Stomach" - triggers = list(/datum/reagent/kelotane = 30, /datum/reagent/dermaline = 15) - cures = list(/datum/reagent/dylovene) + triggers = list(/decl/reagent/kelotane = 30, /decl/reagent/dermaline = 15) + cures = list(/decl/reagent/dylovene) cure_message = "Your stomach feels a little better now..." /datum/medical_effect/bad_stomach/on_life(mob/living/carbon/human/H, strength) @@ -116,8 +116,8 @@ // ====== /datum/medical_effect/cramps name = "Cramps" - triggers = list(/datum/reagent/dylovene = 30, /datum/reagent/mortaphenyl = 15) - cures = list(/datum/reagent/inaprovaline) + triggers = list(/decl/reagent/dylovene = 30, /decl/reagent/mortaphenyl = 15) + cures = list(/decl/reagent/inaprovaline) cure_message = "The cramps let up..." /datum/medical_effect/cramps/on_life(mob/living/carbon/human/H, strength) @@ -134,8 +134,8 @@ // ==== /datum/medical_effect/itch name = "Itch" - triggers = list(/datum/reagent/space_drugs = 10) - cures = list(/datum/reagent/inaprovaline) + triggers = list(/decl/reagent/space_drugs = 10) + cures = list(/decl/reagent/inaprovaline) cure_message = "The itching stops..." /datum/medical_effect/itch/on_life(mob/living/carbon/human/H, strength) diff --git a/code/modules/mob/living/carbon/human/devour.dm b/code/modules/mob/living/carbon/human/devour.dm index eb11bc56bfe..40268900acd 100644 --- a/code/modules/mob/living/carbon/human/devour.dm +++ b/code/modules/mob/living/carbon/human/devour.dm @@ -39,7 +39,7 @@ /mob/living/carbon/human/proc/do_gradual_devour(var/mob/living/victim, var/eat_speed) set waitfor = FALSE - + //This function will start consuming the victim by taking bites out of them. //Victim or attacker moving will interrupt it //A bite will be taken every 4 seconds @@ -50,7 +50,6 @@ var/turf/ourloc = src.loc var/turf/victimloc = victim.loc var/messes = 0 //Number of bloodstains we've placed - var/datum/reagents/vessel = victim.get_vessel(1) if(!victim.composition_reagent_quantity) victim.calculate_composition() var/dam_multiplier = 1 @@ -89,10 +88,10 @@ S.ingested.add_reagent(victim.composition_reagent, (victim.composition_reagent_quantity * 0.5) * PEPB) visible_message("[src] bites a chunk out of [victim]!","[bitemessage(victim)]") if(messes < victim.mob_size - 1 && prob(50)) - handle_devour_mess(src, victim, vessel) + handle_devour_mess(src, victim) if(victim.getBruteLoss() >= victim_maxhealth) visible_message("[src] finishes devouring [victim].","You finish devouring [victim].") - handle_devour_mess(src, victim, vessel, 1) + handle_devour_mess(src, victim, TRUE) qdel(victim) else if(nutrition >= (max_nutrition - 60)) @@ -119,67 +118,29 @@ "You chow down on \the [victim].", "You gobble \the [victim]'s flesh.") -/proc/handle_devour_mess(var/mob/user, var/mob/living/victim, var/datum/reagents/vessel, var/finish = 0) - //The maximum number of blood placements is equal to the mob size of the victim - //We will use one blood placement on each of the following, in this order - //Bloodying the victim's tile - //Bloodying the attacker, if possible - //Bloodying the attacker's tile - //After that, we will allocate the remaining blood placements to random tiles around the victim and attacker, until either all are used or victim is dead - var/datum/reagent/blood/B = vessel.get_master_reagent() - +/proc/handle_devour_mess(var/mob/user, var/mob/living/victim, var/finish = 0) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.add_blood(victim) if (!turf_hasblood(get_turf(victim))) - devour_add_blood(victim, get_turf(victim), vessel) - return 1 - - else if (istype(user, /mob/living/carbon/human) && !user.blood_DNA) - //if this blood isn't already in the list, add it - user.blood_DNA = list(B.data["blood_DNA"]) - user.blood_color = B.data["blood_color"] - user.update_inv_gloves() //handles bloody hands overlays and updating - user.verbs += /mob/living/carbon/human/proc/bloody_doodle - return 1 - - else if (!turf_hasblood(get_turf(user))) - devour_add_blood(victim, get_turf(user), vessel) - return 1 + blood_splatter(get_turf(victim), victim, TRUE) if (finish) //A bigger victim makes more gibs - if (victim.mob_size >= 3) + if (victim.mob_size >= MOB_TINY) new /obj/effect/decal/cleanable/blood/gibs(get_turf(victim)) - if (victim.mob_size >= 5) + if (victim.mob_size >= MOB_SMALL) new /obj/effect/decal/cleanable/blood/gibs(get_turf(victim)) - if (victim.mob_size >= 7) + if (victim.mob_size >= MOB_MEDIUM) new /obj/effect/decal/cleanable/blood/gibs(get_turf(victim)) - if (victim.mob_size >= 9) + if (victim.mob_size >= MOB_LARGE) new /obj/effect/decal/cleanable/blood/gibs(get_turf(victim)) - return 1 - return 0 - -/proc/devour_add_blood(var/mob/living/M, var/turf/location, var/datum/reagents/vessel) - for(var/datum/reagent/blood/source in vessel.reagent_list) - var/obj/effect/decal/cleanable/blood/B = new /obj/effect/decal/cleanable/blood(location) - - // Update appearance. - if(source.data["blood_colour"]) - B.basecolor = source.data["blood_colour"] - B.update_icon() - - // Update blood information. - if(source.data["blood_DNA"]) - B.blood_DNA = list() - if(source.data["blood_type"]) - B.blood_DNA[source.data["blood_DNA"]] = source.data["blood_type"] - else - B.blood_DNA[source.data["blood_DNA"]] = "O+" - - B.fluorescent = 0 - B.invisibility = 0 + return TRUE + return FALSE /proc/turf_hasblood(var/turf/test) for (var/obj/effect/decal/cleanable/blood/b in test) - return 1 - return 0 + return TRUE + return FALSE #undef PPM diff --git a/code/modules/mob/living/carbon/human/diona_gestalt.dm b/code/modules/mob/living/carbon/human/diona_gestalt.dm index 1eace4b4061..da0b3fc9b3b 100644 --- a/code/modules/mob/living/carbon/human/diona_gestalt.dm +++ b/code/modules/mob/living/carbon/human/diona_gestalt.dm @@ -12,7 +12,7 @@ /mob/living/carbon/human/proc/setup_gestalt() - composition_reagent = /datum/reagent/nutriment //Dionae are plants, so eating them doesn't give animal protein + composition_reagent = /decl/reagent/nutriment //Dionae are plants, so eating them doesn't give animal protein setup_dionastats() verbs += /mob/living/carbon/human/proc/check_light verbs += /mob/living/carbon/human/proc/diona_split_nymph diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 985c5201386..dbe0bbfffaf 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1214,7 +1214,7 @@ /mob/living/carbon/human/revive(reset_to_roundstart = TRUE) if(species && !(species.flags & NO_BLOOD)) - vessel.add_reagent(/datum/reagent/blood,560-vessel.total_volume) + vessel.add_reagent(/decl/reagent/blood,560-vessel.total_volume, temperature = species.body_temperature) fixblood() // Fix up all organs. @@ -1284,17 +1284,19 @@ L.bruise() //returns 1 if made bloody, returns 0 otherwise -/mob/living/carbon/human/add_blood(mob/living/carbon/human/M as mob) +/mob/living/carbon/human/add_blood(mob/living/carbon/C as mob) if (!..()) - return 0 + return FALSE //if this blood isn't already in the list, add it - if(istype(M)) - if(!blood_DNA[M.dna.unique_enzymes]) - blood_DNA[M.dna.unique_enzymes] = M.dna.b_type - hand_blood_color = species.blood_color + hand_blood_color = COLOR_HUMAN_BLOOD + if(ishuman(C)) + var/mob/living/carbon/human/H = C + if(!blood_DNA[H.dna.unique_enzymes]) + blood_DNA[H.dna.unique_enzymes] = H.dna.b_type + hand_blood_color = H.species?.blood_color src.update_inv_gloves() //handles bloody hands overlays and updating verbs += /mob/living/carbon/human/proc/bloody_doodle - return 1 //we applied blood to the item + return TRUE //we applied blood to the item /mob/living/carbon/human/proc/get_full_print() if(!dna ||!dna.uni_identity) @@ -1454,8 +1456,7 @@ spawn(0) regenerate_icons() if (vessel) - vessel.add_reagent(/datum/reagent/blood,560-vessel.total_volume) - fixblood() + restore_blood() // Rebuild the HUD. If they aren't logged in then login() should reinstantiate it for them. if(client && client.screen) @@ -1972,7 +1973,7 @@ /mob/living/carbon/human/proc/make_adrenaline(var/amount) if(stat == CONSCIOUS) - reagents.add_reagent(/datum/reagent/adrenaline, amount) + reagents.add_reagent(/decl/reagent/adrenaline, amount) /mob/living/carbon/human/proc/gigashatter() for(var/obj/item/organ/external/E in organs) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 9241458c02f..aaa9c675607 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -355,8 +355,8 @@ This function restores the subjects blood to max. */ /mob/living/carbon/human/proc/restore_blood() if(!(species.flags & NO_BLOOD)) - var/total_blood = vessel.get_reagent_amount(/datum/reagent/blood) - vessel.add_reagent(/datum/reagent/blood,560.0-total_blood) + var/total_blood = REAGENT_VOLUME(vessel, /decl/reagent/blood) + vessel.add_reagent(/decl/reagent/blood,560.0-total_blood, temperature = species.body_temperature) /* @@ -457,4 +457,4 @@ This function restores all organs. /mob/living/carbon/human/remove_blood_simple(var/blood) if(should_have_organ(BP_HEART)) - vessel.remove_reagent(/datum/reagent/blood, blood) + vessel.remove_reagent(/decl/reagent/blood, blood) diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 139ab5350fc..a2f7e99712f 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -189,7 +189,8 @@ //Handles chem traces /mob/living/carbon/human/proc/handle_trace_chems() //New are added for reagents to random organs. - for(var/datum/reagent/A in reagents.reagent_list) + for(var/_A in reagents.reagent_volumes) + var/decl/reagent/A = decls_repository.get_decl(_A) var/obj/item/organ/O = pick(organs) O.trace_chemicals[A.name] = 100 @@ -199,7 +200,7 @@ O.set_dna(dna) /mob/living/carbon/human/proc/get_blood_alcohol() - return round(intoxication/max(vessel.get_reagent_amount(/datum/reagent/blood),1),0.01) + return round(intoxication/max(REAGENT_VOLUME(vessel, /decl/reagent/blood),1),0.01) /mob/living/proc/is_asystole() return FALSE diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 585059e9b55..0781d8cdd3d 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -583,6 +583,15 @@ mob/living/carbon/human/proc/change_monitor() A.throw_at(target, 10, 30, usr) msg_admin_attack("[key_name_admin(src)] launched a quill at [key_name_admin(target)] (JMP)",ckey=key_name(src),ckey_target=key_name(target)) +/mob/living/carbon/human/proc/dissolve() + set name = "Dissolve Self" + set desc = "Dissolve yourself in order to escape permanent imprisonment." + set category = "Abilities" + + if(alert(usr, "This ability kills you, are you sure you want to do this?", "Dissolve Self", "Yes", "No") == "No") + return + visible_message(SPAN_DANGER("[src] dissolves!"), SPAN_WARNING("You dissolve yourself, rejoining your brethren in bluespace.")) + death() /mob/living/carbon/human/proc/shatter_light() set category = "Abilities" @@ -596,7 +605,7 @@ mob/living/carbon/human/proc/change_monitor() last_special = world.time + 50 visible_message("\The [src] shrieks!") - playsound(src.loc, 'sound/species/shadow/grue_screech.ogg', 100, 1) + playsound(src.loc, 'sound/species/revenant/grue_screech.ogg', 100, 1) for(var/obj/machinery/light/L in range(7)) L.broken() @@ -612,7 +621,7 @@ mob/living/carbon/human/proc/change_monitor() last_special = world.time + 100 - playsound(src.loc, 'sound/species/shadow/grue_growl.ogg', 100, 1) + playsound(src.loc, 'sound/species/revenant/grue_growl.ogg', 100, 1) src.set_light(4,-20) @@ -689,7 +698,7 @@ mob/living/carbon/human/proc/change_monitor() src.visible_message("\The [src] takes a step backwards and rears up.", "You take a step backwards and then...") if(do_after(src,5)) - playsound(loc, 'sound/species/shadow/grue_screech.ogg', 100, 1) + playsound(loc, 'sound/species/revenant/grue_screech.ogg', 100, 1) src.visible_message("\The [src] charges!") trampling() @@ -822,7 +831,7 @@ mob/living/carbon/human/proc/change_monitor() return last_special = world.time + 100 - playsound(loc, 'sound/species/shadow/grue_screech.ogg', 100, 1) + playsound(loc, 'sound/species/revenant/grue_screech.ogg', 100, 1) visible_message("\The [src] unleashes a torrent of raging flame!", "You unleash a gust of fire!", "You hear the roar of an inferno!") @@ -846,7 +855,7 @@ mob/living/carbon/human/proc/change_monitor() D.create_reagents(200) if(!src) return - D.reagents.add_reagent(/datum/reagent/fuel/napalm, 200) + D.reagents.add_reagent(/decl/reagent/fuel/napalm, 200) D.set_color() D.set_up(my_target, rand(6,8), 1, 50) return @@ -891,7 +900,7 @@ mob/living/carbon/human/proc/change_monitor() adjustBruteLoss(-10*O.amount) adjustFireLoss(-10*O.amount) if(!(species.flags & NO_BLOOD)) - vessel.add_reagent(/datum/reagent/blood,20*O.amount) + vessel.add_reagent(/decl/reagent/blood,20*O.amount, temperature = species.body_temperature) qdel(O) last_special = world.time + 50 diff --git a/code/modules/mob/living/carbon/human/intoxication.dm b/code/modules/mob/living/carbon/human/intoxication.dm index 88151f6a243..13a93d7e50f 100644 --- a/code/modules/mob/living/carbon/human/intoxication.dm +++ b/code/modules/mob/living/carbon/human/intoxication.dm @@ -21,9 +21,11 @@ var/bac = get_blood_alcohol() - if(bac > INTOX_BUZZED*SR && bac < INTOX_MUSCLEIMP*SR && !(locate(/datum/modifier/buzzed) in modifiers)) - to_chat(src,"You feel buzzed.") - add_modifier(/datum/modifier/buzzed, MODIFIER_CUSTOM) + if(bac > INTOX_BUZZED*SR && bac < INTOX_MUSCLEIMP*SR) + move_delay_mod += -0.75 + sprint_cost_factor += -0.1 + if(prob(5)) + to_chat(src,"You feel buzzed.") if(bac > INTOX_JUDGEIMP*SR) if (dizziness == 0) @@ -33,9 +35,10 @@ if(bac > INTOX_MUSCLEIMP*SR) slurring = max(slurring, 25) - if (!(locate(/datum/modifier/drunk) in modifiers)) + if (prob(5)) to_chat(src,"You feel drunk!") - add_modifier(/datum/modifier/drunk, MODIFIER_CUSTOM) + move_delay_mod += 2 + sprint_cost_factor += 0.2 if(bac > INTOX_REACTION*SR) if (confused == 0) @@ -74,62 +77,7 @@ sleeping = max(sleeping, 6 SECONDS) adjustBrainLoss(1,5) - if (bac > INTOX_DEATH*SR && !src.reagents.has_reagent(/datum/reagent/ethylredoxrazine)) //Death usually occurs here + if (bac > INTOX_DEATH*SR && !src.reagents.has_reagent(/decl/reagent/ethylredoxrazine)) //Death usually occurs here add_chemical_effect(CE_HEPATOTOXIC, 10) adjustOxyLoss(3,100) adjustBrainLoss(1,50) - - -//Pleasant feeling from being slightly drunk -//Makes you faster and reduces sprint cost -//Wears off if you get too drunk or too sober, a balance must be maintained -/datum/modifier/buzzed - -/datum/modifier/buzzed/activate() - ..() - var/mob/living/carbon/human/H = target - if(istype(H)) - H.move_delay_mod += -0.75 - H.sprint_cost_factor += -0.1 - -/datum/modifier/buzzed/deactivate() - ..() - var/mob/living/carbon/human/H = target - if(istype(H)) - H.move_delay_mod -= -0.75 - H.sprint_cost_factor -= -0.1 - -/datum/modifier/buzzed/custom_validity() - var/mob/living/carbon/human/H = target - if(!istype(H)) - return 0 - var/bac = H.get_blood_alcohol() - if(bac >= INTOX_BUZZED*H.species.ethanol_resistance && bac <= INTOX_MUSCLEIMP*H.species.ethanol_resistance) - return 1 - - return 0 - -/datum/modifier/drunk - -/datum/modifier/drunk/activate() - ..() - var/mob/living/carbon/human/H = target - if(istype(H)) - H.move_delay_mod += 2 - H.sprint_cost_factor += 0.2 - -/datum/modifier/drunk/deactivate() - ..() - var/mob/living/carbon/human/H = target - if(istype(H)) - H.move_delay_mod -= 2 - H.sprint_cost_factor -= -0.2 - -/datum/modifier/drunk/custom_validity() - var/mob/living/carbon/human/H = target - if(!istype(H)) - return 0 - if(H.get_blood_alcohol() >= INTOX_MUSCLEIMP*H.species.ethanol_resistance) - return 1 - - return 0 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 905b98a9f3a..d4f7d3d7a0b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -623,6 +623,22 @@ if(prob(2)) to_chat(src, SPAN_WARNING(pick("The itch is becoming progressively worse.", "You need to scratch that itch!", "The itch isn't going!"))) + sprint_speed_factor = species.sprint_speed_factor + stamina_recovery = species.stamina_recovery + sprint_cost_factor = species.sprint_cost_factor + move_delay_mod = 0 + + if(CE_ADRENALINE in chem_effects) + sprint_speed_factor += 0.1*chem_effects[CE_ADRENALINE] + max_stamina *= 1 + chem_effects[CE_ADRENALINE] + sprint_cost_factor -= 0.35 * chem_effects[CE_ADRENALINE] + stamina_recovery += max ((stamina_recovery * 0.7 * chem_effects[CE_ADRENALINE]), 5) + + if(CE_SPEEDBOOST in chem_effects) + sprint_speed_factor += 0.2 * chem_effects[CE_SPEEDBOOST] + stamina_recovery *= 1 + 0.3 * chem_effects[CE_SPEEDBOOST] + move_delay_mod += -1.5 * chem_effects[CE_SPEEDBOOST] + if(CE_FEVER in chem_effects) var/normal_temp = species?.body_temperature || (T0C+37) var/fever = chem_effects[CE_FEVER] @@ -691,6 +707,14 @@ if(!isSynthetic()) handle_trace_chems() + for(var/_R in chem_doses) + if ((_R in bloodstr.reagent_volumes) || (_R in ingested.reagent_volumes) || (_R in breathing.reagent_volumes) || (_R in touching.reagent_volumes)) + continue + var/decl/reagent/R = decls_repository.get_decl(_R) + chem_doses[_R] -= R.metabolism + if(chem_doses[_R] <= 0) + chem_doses -= _R + updatehealth() return //TODO: DEFERRED diff --git a/code/modules/mob/living/carbon/human/species/outsider/revenant.dm b/code/modules/mob/living/carbon/human/species/outsider/revenant.dm new file mode 100644 index 00000000000..0ee45d4e8fa --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/outsider/revenant.dm @@ -0,0 +1,133 @@ +/mob/living/carbon/human/revenant/Initialize(mapload) + . = ..(mapload, SPECIES_REVENANT) + alpha = 0 + animate(src, 2 SECONDS, alpha = 180) + +/datum/species/revenant + name = SPECIES_REVENANT + name_plural = "revenants" + + blurb = "Have you ever been alone at night \ + thought you heard footsteps behind, \ + and turned around and no one's there? \ + And as you quicken up your pace \ + you find it hard to look again, \ + because you're sure there's someone there." + + icobase = 'icons/mob/human_races/r_revenant.dmi' + deform = 'icons/mob/human_races/r_revenant.dmi' + eyes = "eyes_revenant" + has_floating_eyes = TRUE + + default_genders = list(NEUTER) + + language = LANGUAGE_REVENANT + default_language = LANGUAGE_REVENANT + + unarmed_types = list(/datum/unarmed_attack/claws/shredding) + darksight = 8 + has_organ = list() + siemens_coefficient = 0 + rarity_value = 10 + + break_cuffs = TRUE + + ethanol_resistance = -1 + taste_sensitivity = TASTE_NUMB + + speech_sounds = list('sound/species/revenant/grue_growl.ogg') + speech_chance = 50 + + warning_low_pressure = 50 //immune to pressure, so they can into space/survive breaches without worries + hazard_low_pressure = -1 + + cold_level_1 = 80 + cold_level_2 = 50 + cold_level_3 = 0 + + brute_mod = 1.2 + burn_mod = 0.6 + fall_mod = 0 + + breath_type = null + poison_type = null + + blood_color = "#0084b8" + flesh_color = "#0071db" + + remains_type = /obj/effect/decal/cleanable/ash + death_message = "dissolves into ash..." + death_message_range = 7 + + flags = NO_BLOOD | NO_SCAN | NO_POISON | NO_BREATHE + spawn_flags = IS_RESTRICTED + + vision_flags = DEFAULT_SIGHT | SEE_MOBS + + has_limbs = list( + BP_CHEST = list("path" = /obj/item/organ/external/chest), + BP_GROIN = list("path" = /obj/item/organ/external/groin), + BP_HEAD = list("path" = /obj/item/organ/external/head/unbreakable/revenant), + BP_L_ARM = list("path" = /obj/item/organ/external/arm), + BP_R_ARM = list("path" = /obj/item/organ/external/arm/right), + BP_L_LEG = list("path" = /obj/item/organ/external/leg), + BP_R_LEG = list("path" = /obj/item/organ/external/leg/right), + BP_L_HAND = list("path" = /obj/item/organ/external/hand), + BP_R_HAND = list("path" = /obj/item/organ/external/hand/right), + BP_L_FOOT = list("path" = /obj/item/organ/external/foot), + BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right) + ) + + stamina = 100 + stamina_recovery = 5 + sprint_speed_factor = 0.8 + sprint_cost_factor = 0.5 + + inherent_verbs = list( + /mob/living/carbon/human/proc/shatter_light, + /mob/living/carbon/human/proc/darkness_eyes, + /mob/living/carbon/human/proc/dissolve + ) + + move_trail = /obj/effect/decal/cleanable/blood/tracks/claw + + max_nutrition_factor = -1 + max_hydration_factor = -1 + + hud_type = /datum/hud_data/construct + +/datum/species/revenant/handle_death(var/mob/living/carbon/human/H) + if(player_is_antag(H.mind)) + var/datum/ghostspawner/revenant/R = SSghostroles.get_spawner(MODE_REVENANT) + R.count = max(R.count - 1, 0) + INVOKE_ASYNC(src, .proc/spawn_gore, get_turf(H)) + H.set_death_time(ANIMAL, world.time) + for(var/obj/item/I in H) + H.unEquip(I) + qdel(H) + +/datum/species/revenant/proc/spawn_gore(var/turf/T) + var/obj/effect/decal/cleanable/blood/gibs/G = new /obj/effect/decal/cleanable/blood/gibs(T) + G.basecolor = blood_color + G.fleshcolor = flesh_color + G.update_icon() + +/datum/species/revenant/handle_post_spawn(var/mob/living/carbon/human/H) + H.real_name = "Revenant" + H.name = H.real_name + ..() + H.gender = NEUTER + +/datum/species/revenant/get_random_name() + return "Revenant" + +/datum/species/revenant/handle_death_check(var/mob/living/carbon/human/H) + if(H.get_total_health() <= config.health_threshold_dead) + return TRUE + return FALSE + +/datum/species/revenant/bullet_act(var/obj/item/projectile/P, var/def_zone, var/mob/living/carbon/human/H) + if((istype(P, /obj/item/projectile/energy) || istype(P, /obj/item/projectile/beam)) && prob(30)) + H.visible_message(SPAN_CULT("The [P.name] gets absorbed by [H]!"), SPAN_CULT("You absorb the [P.name]!")) + return -1 + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm deleted file mode 100644 index 7efdfbcaf14..00000000000 --- a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm +++ /dev/null @@ -1,118 +0,0 @@ -/mob/living/carbon/human/shadow/Initialize(mapload) - . = ..(mapload, SPECIES_SHADOW) - -/datum/species/shadow - name = SPECIES_SHADOW - name_plural = "shadows" - - blurb = "Have you ever been alone at night \ - thought you heard footsteps behind, \ - and turned around and no one's there? \ - And as you quicken up your pace \ - you find it hard to look again, \ - because you're sure there's someone there." - - icobase = 'icons/mob/human_races/r_shadow.dmi' - deform = 'icons/mob/human_races/r_shadow.dmi' - eyes = "eyes_shadow" - has_floating_eyes = 1 - - language = "Cult" - - unarmed_types = list(/datum/unarmed_attack/bite/sharp, /datum/unarmed_attack/claws/strong) - light_dam = 2 - darksight = 8 - has_organ = list() - siemens_coefficient = 0 - rarity_value = 10 - - break_cuffs = TRUE - - fall_mod = 0 - - ethanol_resistance = -1 - taste_sensitivity = TASTE_NUMB - - speech_sounds = list('sound/species/shadow/grue_growl.ogg') - speech_chance = 50 - - warning_low_pressure = 50 //immune to pressure, so they can into space/survive breaches without worries - hazard_low_pressure = 0 - - cold_level_1 = 80 - cold_level_2 = 50 - cold_level_3 = 0 - - brute_mod = 0.5 - burn_mod = 1.2 - - breath_type = null - poison_type = null - - blood_color = "#CCCCCC" - flesh_color = "#AAAAAA" - - remains_type = /obj/effect/decal/cleanable/ash - death_message = "dissolves into ash..." - death_message_range = 7 - - flags = NO_BLOOD | NO_SCAN | NO_SLIP | NO_POISON | NO_PAIN | NO_BREATHE | NO_EMBED - spawn_flags = IS_RESTRICTED - - vision_flags = DEFAULT_SIGHT | SEE_MOBS - - has_limbs = list( - BP_CHEST = list("path" = /obj/item/organ/external/chest/unbreakable), - BP_GROIN = list("path" = /obj/item/organ/external/groin/unbreakable), - BP_HEAD = list("path" = /obj/item/organ/external/head/unbreakable), - BP_L_ARM = list("path" = /obj/item/organ/external/arm/unbreakable), - BP_R_ARM = list("path" = /obj/item/organ/external/arm/right/unbreakable), - BP_L_LEG = list("path" = /obj/item/organ/external/leg/unbreakable), - BP_R_LEG = list("path" = /obj/item/organ/external/leg/right/unbreakable), - BP_L_HAND = list("path" = /obj/item/organ/external/hand/unbreakable), - BP_R_HAND = list("path" = /obj/item/organ/external/hand/right/unbreakable), - BP_L_FOOT = list("path" = /obj/item/organ/external/foot/unbreakable), - BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right/unbreakable) - ) - - stamina = 500 //Tireless automatons - stamina_recovery = 1 - sprint_speed_factor = 0.3 - exhaust_threshold = 0 //No oxyloss, so zero threshold - - inherent_verbs = list( - /mob/living/carbon/human/proc/shatter_light, - /mob/living/carbon/human/proc/create_darkness, - /mob/living/carbon/human/proc/darkness_eyes, - /mob/living/carbon/human/proc/shadow_step - ) - - move_trail = /obj/effect/decal/cleanable/blood/tracks/claw - - max_nutrition_factor = -1 - - max_hydration_factor = -1 - - hud_type = /datum/hud_data/construct - -/datum/species/shadow/handle_death(var/mob/living/carbon/human/H) - spawn(1) - new /obj/effect/decal/cleanable/ash(H.loc) - qdel(H) - -/datum/species/shadow/handle_post_spawn(var/mob/living/carbon/human/H) - if(H.mind) - H.mind.assigned_role = "Shadow" - H.mind.special_role = "Shadow" - H.real_name = "grue" - H.name = H.real_name - H.gender = NEUTER - ..() - -/datum/species/shadow/get_random_name() - return "grue" - -/datum/species/shadow/handle_death_check(var/mob/living/carbon/human/H) - if(H.get_total_health() <= config.health_threshold_dead) - return TRUE - return FALSE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index b5784e080bc..c250ce86d02 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -327,7 +327,6 @@ return /datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs. - for(var/obj/item/organ/organ in H.contents) if((organ in H.organs) || (organ in H.internal_organs)) qdel(organ) @@ -336,6 +335,8 @@ if(H.internal_organs) H.internal_organs.Cut() if(H.organs_by_name) H.organs_by_name.Cut() if(H.internal_organs_by_name) H.internal_organs_by_name.Cut() + if(H.bad_external_organs) H.bad_external_organs.Cut() + if(H.bad_internal_organs) H.bad_internal_organs.Cut() H.organs = list() H.internal_organs = list() @@ -624,7 +625,7 @@ return FALSE /datum/species/proc/get_digestion_product() - return /datum/reagent/nutriment + return /decl/reagent/nutriment /datum/species/proc/can_commune() return FALSE diff --git a/code/modules/mob/living/carbon/human/species/species_attack.dm b/code/modules/mob/living/carbon/human/species/species_attack.dm index 0206a63214e..e3374f19193 100644 --- a/code/modules/mob/living/carbon/human/species/species_attack.dm +++ b/code/modules/mob/living/carbon/human/species/species_attack.dm @@ -57,6 +57,10 @@ if(3 to 4) user.visible_message("[user] [pick(attack_verb)] [pick("", "", "the side of")] [target]'s [affecting.name]!") if(5) user.visible_message("[user] tears [user.get_pronoun("his")] [pick(attack_noun)] [pick("deep into", "into", "across")] [target]'s [affecting.name]!") +/datum/unarmed_attack/claws/shredding + shredding = TRUE + attack_name = "durable claws" + /datum/unarmed_attack/claws/strong attack_verb = list("slashed") damage = 10 @@ -187,11 +191,8 @@ infection_chance -= target.run_armor_check(zone,"melee") if(prob(infection_chance)) if(target.reagents) - var/inject_amount = 10 - var/trioxin_amount = target.reagents.get_reagent_amount(/datum/reagent/toxin/trioxin) - if(inject_amount + trioxin_amount > ZOMBIE_MAX_TRIOXIN) - inject_amount = ZOMBIE_MAX_TRIOXIN - trioxin_amount - target.reagents.add_reagent(/datum/reagent/toxin/trioxin, inject_amount) + var/trioxin_amount = REAGENT_VOLUME(target.reagents, /decl/reagent/toxin/trioxin) + target.reagents.add_reagent(/decl/reagent/toxin/trioxin, min(10, ZOMBIE_MAX_TRIOXIN - trioxin_amount)) /datum/unarmed_attack/golem attack_verb = list("smashed", "crushed", "rammed") diff --git a/code/modules/mob/living/carbon/human/species/station/human/human_subspecies.dm b/code/modules/mob/living/carbon/human/species/station/human/human_subspecies.dm index 02fb7a7eedc..bf818be7e82 100644 --- a/code/modules/mob/living/carbon/human/species/station/human/human_subspecies.dm +++ b/code/modules/mob/living/carbon/human/species/station/human/human_subspecies.dm @@ -51,8 +51,8 @@ var/obj/item/organ/internal/stomach/S = H.internal_organs_by_name[BP_STOMACH] if(S) - for(var/datum/reagent/R in S.ingested.reagent_list) - if(R.type == /datum/reagent/rmt) + for(var/_R in S.ingested.reagent_volumes) + if(_R == /decl/reagent/rmt) return 0 return 4 @@ -84,8 +84,8 @@ var/obj/item/organ/internal/stomach/S = H.internal_organs_by_name[BP_STOMACH] if(S) - for(var/datum/reagent/R in S.ingested.reagent_list) - if(R.type == /datum/reagent/rmt) + for(var/_R in S.ingested.reagent_volumes) + if(_R == /decl/reagent/rmt) return var/pain_message = pick("You feel sluggish as if something is weighing you down.", diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 49f471ba389..5f7b22446c8 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -251,7 +251,7 @@ There are several things that need to be remembered: . = list() if(build_from_parts) var/mutable_appearance/M = mutable_appearance(icon_file, "[item_state]_[worn_overlay]") - M.appearance_flags = RESET_COLOR + M.appearance_flags = RESET_COLOR|RESET_ALPHA . += M //BASE MOB SPRITE @@ -584,6 +584,7 @@ There are several things that need to be remembered: for(var/obj/item/clothing/accessory/A in under.accessories) ovr += A.get_mob_overlay() + standing.appearance_flags = RESET_ALPHA overlays_raw[UNIFORM_LAYER] = ovr || standing if(update_icons) @@ -632,6 +633,7 @@ There are several things that need to be remembered: result_layer = list(result_layer, lanyard_card, plastic_film) else result_layer = list(result_layer, plastic_film) + result_layer.appearance_flags = RESET_ALPHA overlays_raw[id_layer] = result_layer BITSET(hud_updateflag, ID_HUD) @@ -671,10 +673,12 @@ There are several things that need to be remembered: result_layer = list(result_layer, bloodsies) gloves.screen_loc = ui_gloves + result_layer.appearance_flags = RESET_ALPHA overlays_raw[GLOVES_LAYER] = result_layer else if(blood_DNA) - var/image/bloodsies = image(species.blood_mask, "bloodyhands") + var/image/bloodsies = image(species.blood_mask, "bloodyhands") bloodsies.color = hand_blood_color + bloodsies.appearance_flags = RESET_ALPHA overlays_raw[GLOVES_LAYER] = bloodsies else overlays_raw[GLOVES_LAYER] = null @@ -704,6 +708,8 @@ There are several things that need to be remembered: if(glasses.color) glasses_overlay.color = glasses.color + if(glasses_overlay) + glasses_overlay.appearance_flags = RESET_ALPHA overlays_raw[GLASSES_LAYER] = glasses_overlay if(update_icons) @@ -745,6 +751,8 @@ There are several things that need to be remembered: if(worn_overlays) result_layer.overlays.Add(worn_overlays) + if(result_layer) + result_layer.appearance_flags = RESET_ALPHA overlays_raw[L_EAR_LAYER] = result_layer else overlays_raw[L_EAR_LAYER] = null @@ -788,6 +796,8 @@ There are several things that need to be remembered: if(worn_overlays) result_layer.overlays.Add(worn_overlays) + if(result_layer) + result_layer.appearance_flags = RESET_ALPHA overlays_raw[R_EAR_LAYER] = result_layer else overlays_raw[R_EAR_LAYER] = null @@ -830,12 +840,15 @@ There are several things that need to be remembered: if(worn_overlays) result_layer.overlays.Add(worn_overlays) + if(result_layer) + result_layer.appearance_flags = RESET_ALPHA var/list/ovr if(shoes.blood_DNA) var/obj/item/clothing/shoes/S = shoes var/image/bloodsies = image(species.blood_mask, "[S.blood_overlay_type]blood") bloodsies.color = shoes.blood_color + bloodsies.appearance_flags = RESET_ALPHA ovr = list(result_layer, bloodsies) //Shoe layer stuff from Polaris v1.0333a @@ -850,6 +863,7 @@ There are several things that need to be remembered: if(footprint_color) // Handles bloody feet. var/image/bloodsies = image(species.blood_mask, "shoeblood") bloodsies.color = footprint_color + bloodsies.appearance_flags = RESET_ALPHA overlays_raw[SHOES_LAYER] = bloodsies else overlays_raw[SHOES_LAYER] = null @@ -866,11 +880,15 @@ There are several things that need to be remembered: if(s_store.contained_sprite) s_store.auto_adapt_species(src) var/state="[UNDERSCORE_OR_NULL(s_store.icon_species_tag)][s_store.item_state][WORN_SSTORE]" - overlays_raw[SUIT_STORE_LAYER] = image(s_store.icon_override || s_store.icon, state) + var/image/s_store_image = image(s_store.icon_override || s_store.icon, state) + s_store_image.appearance_flags = RESET_ALPHA + overlays_raw[SUIT_STORE_LAYER] = s_store_image s_store.screen_loc = ui_sstore1 else //s_store.auto_adapt_species(src) - overlays_raw[SUIT_STORE_LAYER] = image('icons/mob/belt_mirror.dmi', s_store.item_state || s_store.icon_state) + var/image/s_store_image = image('icons/mob/belt_mirror.dmi', s_store.item_state || s_store.icon_state) + s_store_image.appearance_flags = RESET_ALPHA + overlays_raw[SUIT_STORE_LAYER] = s_store_image s_store.screen_loc = ui_sstore1 //TODO else overlays_raw[SUIT_STORE_LAYER] = null @@ -907,12 +925,13 @@ There are several things that need to be remembered: standing = image(t_icon, head.icon_state) standing.color = head.color - + standing.appearance_flags = RESET_ALPHA var/list/ovr if(head.blood_DNA) var/image/bloodsies = image("icon" = species.blood_mask, "icon_state" = "helmetblood") bloodsies.color = head.blood_color + bloodsies.appearance_flags = RESET_ALPHA ovr = list(standing, bloodsies) if(istype(head,/obj/item/clothing/head)) @@ -960,6 +979,7 @@ There are several things that need to be remembered: t_icon = 'icons/mob/belt.dmi' standing = image(t_icon, t_state) + standing.appearance_flags = RESET_ALPHA var/list/ovr if(belt.contents.len && istype(belt, /obj/item/storage/belt)) @@ -973,6 +993,8 @@ There are several things that need to be remembered: else c_icon = 'icons/mob/belt.dmi' c_state = i.item_state || i.icon_state + var/image/belt_item_image = image(c_icon, c_state) + belt_item_image.appearance_flags = RESET_ALPHA ovr += image(c_icon, c_state) var/beltlayer = BELT_LAYER @@ -1017,6 +1039,7 @@ There are several things that need to be remembered: if(wear_suit.color) result_layer.color = wear_suit.color + result_layer.appearance_flags = RESET_ALPHA var/image/worn_overlays = wear_suit.worn_overlays(t_icon) if(worn_overlays) result_layer.overlays.Add(worn_overlays) @@ -1027,6 +1050,7 @@ There are several things that need to be remembered: var/obj/item/clothing/suit/S = wear_suit var/image/bloodsies = image(species.blood_mask, "[S.blood_overlay_type]blood") bloodsies.color = wear_suit.blood_color + bloodsies.appearance_flags = RESET_ALPHA ovr = list(result_layer, bloodsies) // Accessories - copied from uniform, BOILERPLATE because fuck this system. @@ -1089,12 +1113,14 @@ There are several things that need to be remembered: if (wear_mask.color) standing.color = wear_mask.color + standing.appearance_flags = RESET_ALPHA var/list/ovr if( !istype(wear_mask, /obj/item/clothing/mask/smokable/cigarette) && wear_mask.blood_DNA ) var/image/bloodsies = image(species.blood_mask, "maskblood") bloodsies.color = wear_mask.blood_color + bloodsies.appearance_flags = RESET_ALPHA ovr = list(standing, bloodsies) overlays_raw[FACEMASK_LAYER] = ovr || standing @@ -1152,6 +1178,7 @@ There are several things that need to be remembered: var/image/standing = image(overlay_icon, overlay_state) if (back.color) standing.color = back.color + standing.appearance_flags = RESET_ALPHA overlays_raw[BACK_LAYER] = standing @@ -1189,6 +1216,7 @@ There are several things that need to be remembered: standing = image(handcuffed.sprite_sheets[GET_BODY_TYPE], "handcuff1") else standing = image('icons/mob/mob.dmi', "handcuff1") + standing.appearance_flags = RESET_ALPHA overlays_raw[HANDCUFF_LAYER] = standing else overlays_raw[HANDCUFF_LAYER] = null @@ -1209,6 +1237,7 @@ There are several things that need to be remembered: standing = image(legcuffed.sprite_sheets[GET_BODY_TYPE], "legcuff1") else standing = image('icons/mob/mob.dmi', "legcuff1") + standing.appearance_flags = RESET_ALPHA overlays_raw[LEGCUFF_LAYER] = standing if(m_intent != M_WALK) @@ -1243,6 +1272,7 @@ There are several things that need to be remembered: if(r_hand.color) result_layer.color = r_hand.color + result_layer.appearance_flags = RESET_ALPHA overlays_raw[R_HAND_LAYER] = result_layer else if(r_hand.item_state_slots && r_hand.item_state_slots[slot_r_hand_str]) @@ -1267,6 +1297,7 @@ There are several things that need to be remembered: if(worn_overlays) result_layer.overlays.Add(worn_overlays) + result_layer.appearance_flags = RESET_ALPHA overlays_raw[R_HAND_LAYER] = result_layer if(update_icons) @@ -1293,6 +1324,7 @@ There are several things that need to be remembered: if(l_hand.color) result_layer.color = l_hand.color + result_layer.appearance_flags = RESET_ALPHA overlays_raw[L_HAND_LAYER] = result_layer else if(l_hand.item_state_slots && l_hand.item_state_slots[slot_l_hand_str]) @@ -1317,6 +1349,7 @@ There are several things that need to be remembered: if(worn_overlays) result_layer.overlays.Add(worn_overlays) + result_layer.appearance_flags = RESET_ALPHA overlays_raw[L_HAND_LAYER] = result_layer if(update_icons) @@ -1432,7 +1465,10 @@ There are several things that need to be remembered: if (QDELING(src)) return - overlays_raw[FIRE_LAYER] = on_fire ? image(species.onfire_overlay, "Standing", layer = FIRE_LAYER) : null + var/image/fire_image = on_fire ? image(species.onfire_overlay, "Standing", layer = FIRE_LAYER) : null + if(fire_image) + fire_image.appearance_flags = RESET_ALPHA + overlays_raw[FIRE_LAYER] = fire_image if(update_icons) update_icon() @@ -1459,11 +1495,13 @@ There are several things that need to be remembered: if(overlay_state in surgery_states) var/image/flesh = image(icon = surgery_icon, icon_state = overlay_state, layer = -SURGERY_LAYER) flesh.color = E.owner.species.flesh_color + flesh.appearance_flags = RESET_ALPHA LAZYADD(overlays_to_add, flesh) overlay_state = "[base_state]-blood" if(overlay_state in surgery_states) var/image/blood = image(icon = surgery_icon, icon_state = overlay_state, layer = -SURGERY_LAYER) blood.color = E.owner.species.blood_color + blood.appearance_flags = RESET_ALPHA LAZYADD(overlays_to_add, blood) overlay_state = "[base_state]-bones" if(overlay_state in surgery_states) diff --git a/code/modules/mob/living/carbon/slime/items.dm b/code/modules/mob/living/carbon/slime/items.dm index 243d3a3d7b9..f9b7f2ecc02 100644 --- a/code/modules/mob/living/carbon/slime/items.dm +++ b/code/modules/mob/living/carbon/slime/items.dm @@ -29,7 +29,7 @@ /obj/item/slime_extract/Initialize() . = ..() create_reagents(100) - reagents.add_reagent(/datum/reagent/slimejelly, 30) + reagents.add_reagent(/decl/reagent/slimejelly, 30) /obj/item/slime_extract/grey name = "grey slime extract" @@ -270,7 +270,7 @@ G.name = G.species.get_random_name() G.real_name = G.name if(wizardy) - bluespace_golems.add_antagonist(G.mind, TRUE, TRUE, FALSE, TRUE, TRUE) + wizard_golems.add_antagonist(G.mind, TRUE, TRUE, FALSE, TRUE, TRUE) else to_chat(G, SPAN_NOTICE("You are a golem. Serve your master, and assist them in completing their goals at any cost.")) diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm index b5d12323e5d..940ed7ee136 100644 --- a/code/modules/mob/living/carbon/slime/slime.dm +++ b/code/modules/mob/living/carbon/slime/slime.dm @@ -6,7 +6,7 @@ var/is_adult = 0 speak_emote = list("chirps") mob_size = 4 - composition_reagent = /datum/reagent/slimejelly + composition_reagent = /decl/reagent/slimejelly layer = 5 maxHealth = 150 health = 150 @@ -157,9 +157,9 @@ tally += (283.222 - bodytemperature) / 10 * 1.75 if(reagents) - if(reagents.has_reagent(/datum/reagent/hyperzine)) // Hyperzine slows slimes down + if(reagents.has_reagent(/decl/reagent/hyperzine)) // Hyperzine slows slimes down tally *= 2 - if(reagents.has_reagent(/datum/reagent/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow + if(reagents.has_reagent(/decl/reagent/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow tally *= 5 if(health <= 0) // if damaged, the slime moves twice as slow diff --git a/code/modules/mob/living/carbon/taste.dm b/code/modules/mob/living/carbon/taste.dm index 0ef11113c6e..f908079052a 100644 --- a/code/modules/mob/living/carbon/taste.dm +++ b/code/modules/mob/living/carbon/taste.dm @@ -31,11 +31,12 @@ calculate text size per text. var/list/out = list() var/list/tastes = list() //descriptor = strength if(minimum_percent <= 100) - for(var/datum/reagent/R in reagent_list) + for(var/_R in reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) if(!R.taste_mult) continue - if(R.type == /datum/reagent/nutriment) - var/list/taste_data = R.get_data() + if(R.type == /decl/reagent/nutriment) + var/list/taste_data = REAGENT_DATA(src, R.type) for(var/taste in taste_data) if(taste in tastes) tastes[taste] += taste_data[taste] @@ -43,7 +44,7 @@ calculate text size per text. tastes[taste] = taste_data[taste] else var/taste_desc = R.taste_description - var/taste_amount = get_reagent_amount(R.type) * R.taste_mult + var/taste_amount = REAGENT_VOLUME(src, R.type) * R.taste_mult if(R.taste_description in tastes) tastes[taste_desc] += taste_amount else @@ -93,4 +94,4 @@ calculate text size per text. return "[temp_text][temp_text ? " " : ""][english_list(out, "something indescribable")]." /mob/living/carbon/proc/get_fullness() - return nutrition + (reagents.get_reagent_amount(/datum/reagent/nutriment) * 25) + return nutrition + (REAGENT_VOLUME(reagents, /decl/reagent/nutriment) * 25) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index b6cc60dbe64..c95348b8ee0 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -650,9 +650,9 @@ default behaviour is: location.add_blood(M) if(ishuman(M)) var/mob/living/carbon/human/H = M - var/total_blood = round(H.vessel.get_reagent_amount(/datum/reagent/blood)) + var/total_blood = round(REAGENT_VOLUME(H.vessel, /decl/reagent/blood)) if(total_blood > 0) - H.vessel.remove_reagent(/datum/reagent/blood, 1) + H.vessel.remove_reagent(/decl/reagent/blood, 1) step(pulling, get_dir(pulling.loc, T)) @@ -928,9 +928,9 @@ default behaviour is: if (!composition_reagent)//if no reagent has been set, then we'll set one var/type = find_type(src) if (type & TYPE_SYNTHETIC) - src.composition_reagent = /datum/reagent/iron + src.composition_reagent = /decl/reagent/iron else - src.composition_reagent = /datum/reagent/nutriment/protein + src.composition_reagent = /decl/reagent/nutriment/protein //if the mob is a simple animal with a defined meat quantity if (istype(src, /mob/living/simple_animal)) diff --git a/code/modules/mob/living/parasite/meme.dm b/code/modules/mob/living/parasite/meme.dm index 4e01c91d59f..d2da60c77a0 100644 --- a/code/modules/mob/living/parasite/meme.dm +++ b/code/modules/mob/living/parasite/meme.dm @@ -77,7 +77,7 @@ var/controlling meme_points = min(meme_points + gain, MAXIMUM_MEME_POINTS) // if there are sleep toxins in the host's body, that's bad - if(host.reagents.has_reagent(/datum/reagent/soporific)) + if(host.reagents.has_reagent(/decl/reagent/soporific)) to_chat(src, "Something in your host's blood makes you lose consciousness, you fade away...") src.death() return diff --git a/code/modules/mob/living/silicon/computer.dm b/code/modules/mob/living/silicon/computer.dm index daa5afa7445..e83e732517c 100644 --- a/code/modules/mob/living/silicon/computer.dm +++ b/code/modules/mob/living/silicon/computer.dm @@ -66,6 +66,9 @@ set name = "Access Local Computer" set category = "Subsystems" + if(!parent_computer) + to_chat(usr, SPAN_WARNING("You don't have a local computer to interface with!")) + return parent_computer.attack_self(src) /******************** diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index a5aee4ba6dd..7cdba8ae5b4 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -10,7 +10,6 @@ mob_size = 1//As a holographic projection, a pAI is massless except for its card device can_pull_size = 2 //max size for an object the pAI can pull - var/network = "SS13" var/obj/machinery/camera/current = null var/ram = 100 // Used as currency to purchase different abilities @@ -181,6 +180,7 @@ verbs += /mob/living/silicon/pai/proc/choose_chassis verbs += /mob/living/silicon/pai/proc/choose_verbs verbs += /mob/living/silicon/proc/computer_interact + verbs += /mob/living/silicon/pai/proc/personal_computer_interact verbs += /mob/living/silicon/proc/silicon_mimic_accent . = ..() @@ -429,7 +429,21 @@ canmove = !resting //Overriding this will stop a number of headaches down the track. -/mob/living/silicon/pai/attackby(obj/item/W as obj, mob/user as mob) +/mob/living/silicon/pai/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/stack/nanopaste)) + var/obj/item/stack/nanopaste/N = W + if(getBruteLoss() || getFireLoss()) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + if(do_mob(user, src, 1 SECOND)) + adjustBruteLoss(-50) // these numbers are so high to make it so that people don't have to waste nanopaste on basic pAI + adjustFireLoss(-50) + updatehealth() + N.use(1) + user.visible_message("[user] applies some [N] at [src]'s damaged areas.", SPAN_NOTICE("You apply some [N] at [src]'s damaged areas.")) + else + to_chat(user, SPAN_NOTICE("All [src]'s systems are nominal.")) + return + if(W.force) visible_message("[user.name] attacks [src] with [W]!") src.adjustBruteLoss(W.force) @@ -437,8 +451,6 @@ else visible_message("[user.name] bonks [src] harmlessly with [W].") - return - /mob/living/silicon/pai/AltClick(mob/user as mob) if(!user || user.stat || user.lying || user.restrained() || !Adjacent(user)) return visible_message("[user.name] boops [src] on the head.") @@ -514,6 +526,8 @@ to_chat(src, "You are too small to pull that.") return +/mob/living/silicon/pai/UnarmedAttack(atom/A, proximity) + A.attack_pai(src) /mob/living/silicon/pai/verb/select_card_icon() set category = "pAI Commands" diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index f5d562b82e7..8a218dba9d5 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -80,6 +80,8 @@ var/hat_x_offset = 0 var/hat_y_offset = -13 + var/rebooting = FALSE + /mob/living/silicon/robot/drone/can_be_possessed_by(var/mob/abstract/observer/possessor) if(!istype(possessor) || !possessor.client || !possessor.ckey) return FALSE @@ -239,6 +241,9 @@ if(!allowed(usr)) to_chat(user, SPAN_WARNING("Access denied.")) return + if(rebooting) + to_chat(user, SPAN_WARNING("\The [src] is already rebooting!")) + return user.visible_message(SPAN_NOTICE("\The [user] swipes [user.get_pronoun("his")] ID card through \the [src], attempting to reboot it."), SPAN_NOTICE("You swipe your ID card through \the [src], attempting to reboot it.")) request_player() return @@ -370,11 +375,17 @@ //Reboot procs. +/mob/living/silicon/robot/drone/Logout() + . = ..() + rebooting = FALSE + /mob/living/silicon/robot/drone/proc/request_player() if(too_many_active_drones()) return - var/datum/ghosttrap/G = get_ghost_trap("maintenance drone") - G.request_player(src, "Someone is attempting to reboot a maintenance drone.", 30 SECONDS) + if(rebooting) + return + stat = CONSCIOUS + SSghostroles.add_spawn_atom("rebooted_maint_drone", src) /mob/living/silicon/robot/drone/proc/transfer_personality(var/client/player) if(!player) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index a412e247d48..dae42d169b1 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -119,8 +119,8 @@ var/global/list/robot_modules = list( else if(F.times_used) F.times_used-- - if(E && E.reagents.total_volume < E.reagents.maximum_volume) - E.reagents.add_reagent(/datum/reagent/toxin/fertilizer/monoammoniumphosphate, E.max_water * 0.2) + if(E.reagents && (REAGENTS_FREE_SPACE(E.reagents) > 0)) + E.reagents.add_reagent(/decl/reagent/toxin/fertilizer/monoammoniumphosphate, E.max_water * 0.2) if(!synths.len) return @@ -235,7 +235,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/tape_roll(src) //allows it to place flyers src.modules += new /obj/item/device/nanoquikpay(src) src.emag = new /obj/item/reagent_containers/hypospray/cmo(src) - src.emag.reagents.add_reagent(/datum/reagent/wulumunusha, 30) + src.emag.reagents.add_reagent(/decl/reagent/wulumunusha, 30) src.emag.name = "Wulumunusha Hypospray" var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(10000) @@ -261,7 +261,7 @@ var/global/list/robot_modules = list( S.update_icon() if(src.emag) var/obj/item/reagent_containers/hypospray/cmo/PS = src.emag - PS.reagents.add_reagent(/datum/reagent/wulumunusha, 2 * amount) + PS.reagents.add_reagent(/decl/reagent/wulumunusha, 2 * amount) ..() /obj/item/robot_module/medical/rescue @@ -303,7 +303,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws. src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to. src.emag = new /obj/item/reagent_containers/hypospray/cmo(src) - src.emag.reagents.add_reagent(/datum/reagent/wulumunusha, 30) + src.emag.reagents.add_reagent(/decl/reagent/wulumunusha, 30) src.emag.name = "Wulumunusha Hypospray" var/datum/matter_synth/medicine = new /datum/matter_synth/medicine(15000) @@ -334,7 +334,7 @@ var/global/list/robot_modules = list( S.update_icon() if(src.emag) var/obj/item/reagent_containers/spray/PS = src.emag - PS.reagents.add_reagent(/datum/reagent/wulumunusha, 2 * amount) + PS.reagents.add_reagent(/decl/reagent/wulumunusha, 2 * amount) ..() /obj/item/robot_module/engineering @@ -552,7 +552,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/device/flash(src) // Non-lethal tool that prevents any 'borg from going lethal on Crew so long as it's an option according to laws. src.modules += new /obj/item/crowbar/robotic(src) // Base crowbar that all 'borgs should have access to. src.emag = new /obj/item/reagent_containers/spray(src) - src.emag.reagents.add_reagent(/datum/reagent/lube, 250) + src.emag.reagents.add_reagent(/decl/reagent/lube, 250) src.emag.name = "Lube spray" /obj/item/robot_module/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) @@ -561,7 +561,7 @@ var/global/list/robot_modules = list( LR.Charge(R, amount) if(src.emag) var/obj/item/reagent_containers/spray/S = src.emag - S.reagents.add_reagent(/datum/reagent/lube, 2 * amount) + S.reagents.add_reagent(/decl/reagent/lube, 2 * amount) /obj/item/robot_module/clerical name = "service robot module" @@ -643,7 +643,7 @@ var/global/list/robot_modules = list( var/datum/reagents/RG = new /datum/reagents(50) src.emag.reagents = RG RG.my_atom = src.emag - RG.add_reagent(/datum/reagent/polysomnine/beer2, 50) + RG.add_reagent(/decl/reagent/polysomnine/beer2, 50) src.emag.name = "Mickey Finn's Special Brew" /obj/item/robot_module/clerical/general diff --git a/code/modules/mob/living/simple_animal/borer/borer_powers.dm b/code/modules/mob/living/simple_animal/borer/borer_powers.dm index 5093327b834..938ac67432b 100644 --- a/code/modules/mob/living/simple_animal/borer/borer_powers.dm +++ b/code/modules/mob/living/simple_animal/borer/borer_powers.dm @@ -205,7 +205,7 @@ to_chat(src, SPAN_WARNING("You don't have enough chemicals!")) return - var/list/choices = list("Inaprovaline" = /datum/reagent/inaprovaline, "Bicaridine" = /datum/reagent/bicaridine, "Kelotane" = /datum/reagent/kelotane, "Dylovene" = /datum/reagent/dylovene, "Hyperzine" = /datum/reagent/hyperzine, "Peridaxon" = /datum/reagent/peridaxon, "Mortaphenyl" = /datum/reagent/mortaphenyl, "Neurapan" = /datum/reagent/mental/neurapan) + var/list/choices = list("Inaprovaline" = /decl/reagent/inaprovaline, "Bicaridine" = /decl/reagent/bicaridine, "Kelotane" = /decl/reagent/kelotane, "Dylovene" = /decl/reagent/dylovene, "Hyperzine" = /decl/reagent/hyperzine, "Peridaxon" = /decl/reagent/peridaxon, "Mortaphenyl" = /decl/reagent/mortaphenyl, "Neurapan" = /decl/reagent/mental/neurapan) var/chem = input("Select a chemical to secrete.", "Chemicals") as null|anything in choices if(!chem || chemicals < 20 || !host || controlling || !src || stat) //Sanity check. @@ -503,4 +503,4 @@ to_chat(src, SPAN_WARNING("You cannot do that in your current state.")) return - health_scan_mob(host, src, TRUE, TRUE) \ No newline at end of file + health_scan_mob(host, src, TRUE, TRUE) diff --git a/code/modules/mob/living/simple_animal/friendly/adhomai.dm b/code/modules/mob/living/simple_animal/friendly/adhomai.dm index bf6a13e20cb..771769cdca6 100644 --- a/code/modules/mob/living/simple_animal/friendly/adhomai.dm +++ b/code/modules/mob/living/simple_animal/friendly/adhomai.dm @@ -69,7 +69,7 @@ canbrush = TRUE has_udder = TRUE - milk_type = /datum/reagent/drink/milk/adhomai + milk_type = /decl/reagent/drink/milk/adhomai meat_type = /obj/item/reagent_containers/food/snacks/meat/adhomai butchering_products = list(/obj/item/stack/material/animalhide = 5) @@ -126,7 +126,7 @@ health = 50 has_udder = TRUE - milk_type = /datum/reagent/drink/milk + milk_type = /decl/reagent/drink/milk meat_type = /obj/item/reagent_containers/food/snacks/meat/chicken organ_names = list("head", "chest", "fatty core", "blubberous torso", "thick centre", "left leg", "right leg") @@ -155,4 +155,4 @@ /mob/living/simple_animal/schlorrgo/fall_impact() visible_message(SPAN_NOTICE("\The [src] bounces after landing!")) step(src, pick(alldirs), 1) - return FALSE \ No newline at end of file + return FALSE 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 0687f33e6be..9b52595ec18 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -118,6 +118,32 @@ else ..() +/mob/living/simple_animal/pig + name = "pig" + desc = "Used in the past simply as meat farms, modern people recognize the affectionate side of these bacon factories." + icon = 'icons/mob/npc/livestock.dmi' + icon_state = "pig" + icon_living = "pig" + icon_dead = "pig_dead" + speak = list("oink", "oink oink", "OINK") + speak_emote = list("squeels") + emote_hear = list("snorts", "grunts") + emote_see = list("sways its tail") + speak_chance = 1 + turns_per_move = 5 + see_in_dark = 6 + meat_type = /obj/item/reagent_containers/food/snacks/meat/pig + meat_amount = 20 + organ_names = list("head", "chest", "right fore leg", "left fore leg", "right rear leg", "left rear leg") + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + attacktext = "kicked" + health = 120 + emote_sounds = list('sound/effects/creatures/pigsnort.ogg') + butchering_products = list(/obj/item/stack/material/hairlesshide = 6) + forbidden_foods = list(/obj/item/reagent_containers/food/snacks/egg) + /mob/living/simple_animal/chick name = "\improper chick" desc = "Adorable! They make such a racket though." diff --git a/code/modules/mob/living/simple_animal/friendly/hakhma.dm b/code/modules/mob/living/simple_animal/friendly/hakhma.dm index a120f56b039..1398df4a350 100644 --- a/code/modules/mob/living/simple_animal/friendly/hakhma.dm +++ b/code/modules/mob/living/simple_animal/friendly/hakhma.dm @@ -25,4 +25,4 @@ mob_size = 15 has_udder = TRUE - milk_type = /datum/reagent/drink/milk/beetle + milk_type = /decl/reagent/drink/milk/beetle diff --git a/code/modules/mob/living/simple_animal/friendly/slime.dm b/code/modules/mob/living/simple_animal/friendly/slime.dm index 86b39b7185e..25539dbf626 100644 --- a/code/modules/mob/living/simple_animal/friendly/slime.dm +++ b/code/modules/mob/living/simple_animal/friendly/slime.dm @@ -14,7 +14,7 @@ emote_see = list("jiggles", "bounces in place") var/colour = "grey" mob_size = 3 - composition_reagent = /datum/reagent/slimejelly + composition_reagent = /decl/reagent/slimejelly /mob/living/simple_animal/slime/can_force_feed(var/feeder, var/food, var/feedback) if(feedback) @@ -36,7 +36,7 @@ emote_see = list("jiggles", "bounces in place") var/colour = "grey" mob_size = 6 - composition_reagent = /datum/reagent/slimejelly + composition_reagent = /decl/reagent/slimejelly /mob/living/simple_animal/adultslime/Initialize() . = ..() @@ -54,4 +54,4 @@ S2.icon_living = "[src.colour] baby slime" S2.icon_dead = "[src.colour] baby slime dead" S2.colour = "[src.colour]" - qdel(src) \ No newline at end of file + qdel(src) 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 0cfdcc42efa..c5a5b51bc12 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -21,7 +21,6 @@ response_help = "pets" response_disarm = "gently pushes aside" response_harm = "pokes" - blood_overlay_icon = null stop_automated_movement_when_pulled = 0 maxHealth = 200 health = 200 @@ -31,7 +30,7 @@ heat_damage_per_tick = 20 cold_damage_per_tick = 20 var/poison_per_bite = 5 - var/poison_type = /datum/reagent/toxin + var/poison_type = /decl/reagent/toxin faction = "spiders" var/busy = 0 pass_flags = PASSTABLE @@ -55,7 +54,7 @@ melee_damage_upper = 10 poison_per_bite = 10 var/atom/cocoon_target - poison_type = /datum/reagent/soporific + poison_type = /decl/reagent/soporific var/fed = 0 //hunters have the most poison and move the fastest, so they can find prey @@ -80,7 +79,7 @@ if(isliving(.)) var/mob/living/L = . if(L.reagents) - L.reagents.add_reagent(/datum/reagent/toxin, poison_per_bite) + L.reagents.add_reagent(/decl/reagent/toxin, poison_per_bite) if(prob(poison_per_bite) && (!issilicon(L) && !isipc(L))) to_chat(L, "You feel a tiny prick.") L.reagents.add_reagent(poison_type, 5) diff --git a/code/modules/mob/living/simple_animal/hostile/sarlacc.dm b/code/modules/mob/living/simple_animal/hostile/sarlacc.dm index 77777c5f44e..db9d65f5736 100644 --- a/code/modules/mob/living/simple_animal/hostile/sarlacc.dm +++ b/code/modules/mob/living/simple_animal/hostile/sarlacc.dm @@ -397,7 +397,7 @@ if(istype(A, /mob/living)) var/mob/living/L = A if(L.reagents) - var/madhouse = pick(/datum/reagent/psilocybin,/datum/reagent/mindbreaker,/datum/reagent/impedrezene,/datum/reagent/cryptobiolin,/datum/reagent/soporific,/datum/reagent/mutagen) + var/madhouse = pick(/decl/reagent/psilocybin,/decl/reagent/mindbreaker,/decl/reagent/impedrezene,/decl/reagent/cryptobiolin,/decl/reagent/soporific,/decl/reagent/mutagen) var/madhouse_verbal_component = pick(thoughts) L.reagents.add_reagent("[madhouse]", 3) to_chat(L, "[madhouse_verbal_component]") diff --git a/code/modules/mob/living/simple_animal/hostile/viscerator.dm b/code/modules/mob/living/simple_animal/hostile/viscerator.dm index 4b4728ca2d7..5623d20a424 100644 --- a/code/modules/mob/living/simple_animal/hostile/viscerator.dm +++ b/code/modules/mob/living/simple_animal/hostile/viscerator.dm @@ -52,11 +52,9 @@ if(severity == 1.0) apply_damage(5) -/mob/living/simple_animal/hostile/viscerator/lube/Initialize() - . = ..() - create_reagents(30) - reagents.add_reagent(/datum/reagent/lube, 30) +/mob/living/simple_animal/hostile/viscerator/lube + reagents_to_add = list(/decl/reagent/lube = 30) /mob/living/simple_animal/hostile/viscerator/lube/death() reagents.splash(get_turf(src), 30) - ..() \ No newline at end of file + ..() diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index 4099e052e92..fb72721eae3 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -356,8 +356,4 @@ gender = PLURAL icon = 'icons/obj/wizard.dmi' icon_state = "blectoplasm" - -/obj/item/ectoplasm/bs/Initialize() - . = ..() - create_reagents(8) - reagents.add_reagent(/datum/reagent/bluespace_dust, 8) + reagents_to_add = list(/decl/reagent/bluespace_dust = 8) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 780d11b83a7..9885dd0b5a2 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -126,7 +126,7 @@ var/has_udder = FALSE var/datum/reagents/udder = null - var/milk_type = /datum/reagent/drink/milk + var/milk_type = /decl/reagent/drink/milk var/list/butchering_products //if anything else is created when butchering this creature, like bones and leather @@ -375,10 +375,11 @@ if (!reagents || !reagents.total_volume) return - for(var/datum/reagent/current in reagents.reagent_list) - var/removed = min(current.metabolism*digest_factor, current.volume) - if (istype(current, /datum/reagent/nutriment))//If its food, it feeds us - var/datum/reagent/nutriment/N = current + for(var/_current in reagents.reagent_volumes) + var/decl/reagent/current = decls_repository.get_decl(_current) + var/removed = min(current.metabolism*digest_factor, REAGENT_VOLUME(reagents, _current)) + if (_current == /decl/reagent/nutriment)//If its food, it feeds us + var/decl/reagent/nutriment/N = current adjustNutritionLoss(-removed*N.nutriment_factor) var/heal_amount = removed*N.regen_factor if (getBruteLoss() > 0) @@ -390,7 +391,7 @@ adjustFireLoss(-n) heal_amount -= n updatehealth() - current.remove_self(removed)//If its not food, it just does nothing. no fancy effects + current.remove_self(removed, reagents)//If its not food, it just does nothing. no fancy effects /mob/living/simple_animal/can_eat() if (!hunger_enabled || nutrition > max_nutrition * 0.9) @@ -798,7 +799,7 @@ mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj) adjustFireLoss(rand(3, 5)) /mob/living/simple_animal/get_digestion_product() - return /datum/reagent/nutriment + return /decl/reagent/nutriment /mob/living/simple_animal/bullet_impact_visuals(var/obj/item/projectile/P, var/def_zone, var/damage) ..() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 408bd4424bf..c8eb4c0ff3f 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -1030,38 +1030,6 @@ proc/is_blind(A) if (is_type_in_typecache(src, SSmob.mtl_humanoid)) . |= TYPE_HUMANOID - -/mob/living/proc/get_vessel(create = FALSE) - if (!create) - return - - //we make a new vessel for whatever creature we're devouring. this allows blood to come from creatures that can't normally bleed - //We create an MD5 hash of the mob's reference to use as its DNA string. - //This creates unique DNA for each creature in a consistently repeatable process - var/datum/reagents/vessel = new/datum/reagents(600) - vessel.add_reagent(/datum/reagent/blood,560) - for(var/datum/reagent/blood/B in vessel.reagent_list) - if(B.type == /datum/reagent/blood) - B.data = list( - "donor" = WEAKREF(src), - "species" = name, - "blood_DNA" = md5("\ref[src]"), - "blood_colour" = "#a10808", - "blood_type" = null, - "resistances" = null, - "trace_chem" = null - ) - - B.color = B.data["blood_colour"] - - return vessel - -/mob/living/carbon/human/get_vessel(create = FALSE) - . = vessel - -/mob/living/carbon/alien/diona/get_vessel(create = FALSE) - . = vessel - #undef SAFE_PERP /mob/proc/get_multitool(var/obj/P) diff --git a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm index ead8bf1b721..95415be0843 100644 --- a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm +++ b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm @@ -22,7 +22,7 @@ var/global/ntnrc_uid = 0 /datum/ntnet_conversation/proc/process_message(var/datum/ntnet_message/message, var/update_ui = TRUE) var/admin_log = message.format_admin_log() if (admin_log) - log_ntirc("[message.user.client.ckey]/([message.nuser.username]): [admin_log]", ckey=key_name(message.user), conversation=title) + log_ntirc("[message.user.client.ckey] ([message.user.client.mob.real_name])|([message.nuser.username]) -> ([title]): [admin_log]", ckey=key_name(message.user), conversation=title) for(var/datum/ntnet_user/U in users) for(var/datum/computer_file/program/chat_client/Cl in U.clients) diff --git a/code/modules/modular_computers/computers/modular_computer/hardware.dm b/code/modules/modular_computers/computers/modular_computer/hardware.dm index 29b2698966b..2fd0986a420 100644 --- a/code/modules/modular_computers/computers/modular_computer/hardware.dm +++ b/code/modules/modular_computers/computers/modular_computer/hardware.dm @@ -69,7 +69,6 @@ to_chat(user, SPAN_NOTICE("You install \the [H] into \the [src].")) verbs += /obj/item/modular_computer/proc/eject_personal_ai personal_ai.pai.parent_computer = src - personal_ai.pai.verbs += /mob/living/silicon/pai/proc/personal_computer_interact to_chat(personal_ai.pai, SPAN_NOTICE("You gain access to \the [src]'s computronics.")) user.drop_from_inventory(H, src) update_icon() @@ -119,7 +118,6 @@ H.forceMove(get_turf(src)) if(put_in_hands) user.put_in_hands(H) - personal_ai.pai.verbs -= /mob/living/silicon/pai/proc/personal_computer_interact to_chat(personal_ai.pai, SPAN_NOTICE("You lose access to \the [src]'s computronics.")) personal_ai.pai.parent_computer = null update_icon() diff --git a/code/modules/modular_computers/computers/modular_computer/interaction.dm b/code/modules/modular_computers/computers/modular_computer/interaction.dm index 0298b088d42..ebb199f1f88 100644 --- a/code/modules/modular_computers/computers/modular_computer/interaction.dm +++ b/code/modules/modular_computers/computers/modular_computer/interaction.dm @@ -157,11 +157,12 @@ if(scan_mode == SCANNER_REAGENT) if(!isobj(A) || isnull(A.reagents)) return - if(A.reagents.reagent_list.len) - var/reagents_length = A.reagents.reagent_list.len + var/reagents_length = LAZYLEN(A.reagents.reagent_volumes) + if(reagents_length) to_chat(user, SPAN_NOTICE("[reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.")) - for(var/re in A.reagents.reagent_list) - to_chat(user, SPAN_NOTICE(" [re]")) + for(var/_re in A.reagents.reagent_volumes) + var/decl/reagent/re = decls_repository.get_decl(_re) + to_chat(user, SPAN_NOTICE(" [re.name]")) else to_chat(user, SPAN_NOTICE("No active chemical agents found in [A].")) @@ -188,6 +189,10 @@ return attack_self(user) return ..() +// pai can take a look, but they cannot interact with the UI +/obj/item/modular_computer/attack_pai(mob/user) + return attack_self(user) + // On-click handling. Turns on the computer if it's off and opens the GUI. /obj/item/modular_computer/attack_self(mob/user) if(enabled && screen_on) diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 87dd535d373..85ac869ff16 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -14,23 +14,14 @@ if(species && species.flags & NO_BLOOD) //We want the var for safety but we can do without the actual blood. return - vessel.add_reagent(/datum/reagent/blood, species.blood_volume) - fixblood() + vessel.add_reagent(/decl/reagent/blood, species.blood_volume, temperature = species?.body_temperature) //Resets blood data /mob/living/carbon/human/proc/fixblood() - for(var/datum/reagent/blood/B in vessel.reagent_list) - if(B.type == /datum/reagent/blood) - B.data = list( - "donor" = WEAKREF(src), - "species" = species.bodytype, - "blood_DNA" = dna.unique_enzymes, - "blood_colour" = species.blood_color, - "blood_type" = dna.b_type, - "resistances" = null, - "trace_chem" = null - ) - B.color = B.data["blood_colour"] + if(!REAGENT_VOLUME(vessel, /decl/reagent/blood)) + return + LAZYINITLIST(vessel.reagent_data) + LAZYSET(vessel.reagent_data, /decl/reagent/blood, get_blood_data()) //Makes a blood drop, leaking amt units of blood from the mob /mob/living/carbon/human/proc/drip(var/amt as num, var/tar = src, var/spraydir) @@ -41,7 +32,7 @@ if(!amt) return - vessel.remove_reagent(/datum/reagent/blood,amt) + vessel.remove_reagent(/decl/reagent/blood,amt) blood_splatter(tar, src, spray_dir = spraydir) #define BLOOD_SPRAY_DISTANCE 2 @@ -93,7 +84,7 @@ #undef BLOOD_SPRAY_DISTANCE /mob/living/carbon/human/proc/get_blood_volume() - return round((vessel.get_reagent_amount(/datum/reagent/blood)/species.blood_volume)*100) + return round((REAGENT_VOLUME(vessel, /decl/reagent/blood)/species.blood_volume)*100) /mob/living/carbon/human/proc/get_blood_circulation() var/obj/item/organ/internal/heart/heart = internal_organs_by_name[BP_HEART] @@ -149,91 +140,41 @@ //Gets blood from mob to the container, preserving all data in it. /mob/living/carbon/proc/take_blood(obj/item/reagent_containers/container, var/amount) - - var/datum/reagent/B = get_blood(container.reagents) - if(!B) B = new /datum/reagent/blood - B.holder = container - B.volume += amount - - //set reagent data - B.data["donor"] = WEAKREF(src) - B.data["blood_DNA"] = copytext(src.dna.unique_enzymes,1,0) - if(src.resistances && src.resistances.len) - if(B.data["resistances"]) - B.data["resistances"] |= src.resistances.Copy() - else - B.data["resistances"] = src.resistances.Copy() - B.data["blood_type"] = copytext(src.dna.b_type,1,0) - - // Putting this here due to return shenanigans. - if(istype(src,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = src - B.data["blood_colour"] = H.species.blood_color - B.color = B.data["blood_colour"] - B.data["species"] = H.species.bodytype - - var/list/temp_chem = list() - for(var/datum/reagent/R in src.reagents.reagent_list) - temp_chem += R.type - temp_chem[R.type] = R.volume - B.data["trace_chem"] = list2params(temp_chem) - return B + container.reagents.add_reagent(/decl/reagent/blood, amount, get_blood_data(), temperature = species?.body_temperature) + return TRUE //For humans, blood does not appear from blue, it comes from vessels. /mob/living/carbon/human/take_blood(obj/item/reagent_containers/container, var/amount) + if(!should_have_organ(BP_HEART)) + reagents.trans_to_obj(container, amount) + return TRUE - if(species && species.flags & NO_BLOOD) - return null + if(vessel.total_volume < amount) + return FALSE - if(vessel.get_reagent_amount(/datum/reagent/blood) < amount) - return null + vessel.trans_to_holder(container.reagents, amount) - . = ..() - vessel.remove_reagent(/datum/reagent/blood,amount) // Removes blood if human + if(vessel.has_reagent(/decl/reagent/blood)) + LAZYSET(vessel.reagent_data, /decl/reagent/blood, get_blood_data()) + vessel.trans_to_holder(container.reagents, amount) + return TRUE -//Transfers blood from container ot vessels -/mob/living/carbon/proc/inject_blood(var/datum/reagent/blood/injected, var/amount) - if (!injected || !istype(injected)) - return - var/list/chems = list() - chems = params2list(injected.data["trace_chem"]) +//Transfers blood from container to vessels +/mob/living/carbon/proc/inject_blood(var/amount, var/datum/reagents/donor) + var/list/injected_data = REAGENT_DATA(donor, /decl/reagent/blood) + var/chems = LAZYACCESS(injected_data, "trace_chem") for(var/C in chems) - src.reagents.add_reagent(C, (text2num(chems[C]) / species.blood_volume) * amount)//adds trace chemicals to owner's blood - reagents.update_total() + reagents.add_reagent(C, (text2num(chems[C]) / species.blood_volume) * amount)//adds trace chemicals to owner's blood //Transfers blood from reagents to vessel, respecting blood types compatability. -/mob/living/carbon/human/inject_blood(var/datum/reagent/blood/injected, var/amount) - // In case of mobs without blood, put it in their chem storage. - if(species.flags & NO_BLOOD) - reagents.add_reagent(/datum/reagent/blood, amount, injected.data) - reagents.update_total() +/mob/living/carbon/human/inject_blood(var/amount, var/datum/reagents/donor) + if(!should_have_organ(BP_HEART)) + reagents.add_reagent(/decl/reagent/blood, amount, REAGENT_DATA(donor, /decl/reagent/blood), temperature = species?.body_temperature) return - - var/datum/reagent/blood/our = get_blood(vessel) - - if (!injected || !our) - return - var/datum/vampire/vampire - if(mind) - vampire = mind.antag_datums[MODE_VAMPIRE] - if(!vampire && blood_incompatible(injected.data["blood_type"],our.data["blood_type"],injected.data["species"],our.data["species"])) - reagents.add_reagent(/datum/reagent/toxin,amount * 0.5) - reagents.update_total() - else - vessel.add_reagent(/datum/reagent/blood, amount, injected.data) - vessel.update_total() + // Incompatibility is handled in mix_data now. + vessel.add_reagent(/decl/reagent/blood, amount, REAGENT_DATA(donor, /decl/reagent/blood), temperature = species?.body_temperature) ..() -//Gets human's own blood. -/mob/living/carbon/proc/get_blood(datum/reagents/container) - var/datum/reagent/blood/res = locate() in container.reagent_list //Grab some blood - if(res) // Make sure there's some blood at all - if(weakref && res.data["donor"] != weakref) //If it's not theirs, then we look for theirs - for(var/datum/reagent/blood/D in container.reagent_list) - if(D.data["donor"] == weakref) - return D - return res - proc/blood_incompatible(donor,receiver,donor_species,receiver_species) if(!donor || !receiver) return 0 @@ -257,19 +198,31 @@ proc/blood_incompatible(donor,receiver,donor_species,receiver_species) //AB is a universal receiver. return 0 -proc/blood_splatter(var/target, var/datum/reagent/blood/source, var/large, var/spray_dir) +/mob/living/carbon/proc/get_blood_data() + var/data = list() + data["donor"] = WEAKREF(src) + if(dna) + data["blood_DNA"] = dna.unique_enzymes + data["blood_type"] = dna.b_type + else + data["blood_DNA"] = md5(ref(src)) + data["blood_type"] = "O+" + if(species) + data["species"] = species.bodytype + data["blood_colour"] = species.blood_color + var/list/temp_chem = list() + for(var/R in reagents.reagent_volumes) + temp_chem[R] = REAGENT_VOLUME(reagents, R) + data["trace_chem"] = temp_chem + data["dose_chem"] = chem_doses.Copy() + return data - var/obj/effect/decal/cleanable/blood/B +proc/blood_splatter(var/target, var/source, var/large, var/spray_dir) + + var/obj/effect/decal/cleanable/blood/splatter var/decal_type = /obj/effect/decal/cleanable/blood/splatter var/turf/T = get_turf(target) - if(istype(source,/mob/living/carbon/human)) - var/mob/living/carbon/human/M = source - source = M.get_blood(M.vessel) - - if(!istype(source)) - source = null - // Are we dripping or splattering? var/list/drips = list() // Only a certain number of drips (or one large splatter) can be on a given turf. @@ -280,40 +233,47 @@ proc/blood_splatter(var/target, var/datum/reagent/blood/source, var/large, var/s decal_type = /obj/effect/decal/cleanable/blood/drip // Find a blood decal or create a new one. - B = locate(decal_type) in T if(T) var/list/existing = filter_list(T.contents, decal_type) if(length(existing) > 3) - B = pick(existing) - if(!B) - B = new decal_type(T) + splatter = pick(existing) + if(!splatter) + splatter = new decal_type(T) - var/obj/effect/decal/cleanable/blood/drip/drop = B - if(istype(drop) && LAZYLEN(drips) && !large) - drop.add_overlay(drips) + var/obj/effect/decal/cleanable/blood/drip/drop = splatter + if(istype(drop) && drips && drips.len && !large) + drop.overlays |= drips drop.drips |= drips // If there's no data to copy, call it quits here. - if(!source) - return B + var/list/blood_data + if(islist(source)) + blood_data = source + if(ishuman(source)) + var/mob/living/carbon/human/donor = source + blood_data = donor.get_blood_data() + else if(isatom(source)) + var/atom/donor = source + blood_data = REAGENT_DATA(donor.reagents, /decl/reagent/blood) + if(!islist(blood_data)) + return splatter // Update appearance. - if(source.data["blood_colour"]) - B.basecolor = source.data["blood_colour"] - B.update_icon() - + if(blood_data["blood_colour"]) + splatter.basecolor = blood_data["blood_colour"] + splatter.update_icon() if(spray_dir) - B.icon_state = "squirt" - B.dir = spray_dir + splatter.icon_state = "squirt" + splatter.set_dir(spray_dir) // Update blood information. - if(source.data["blood_DNA"]) - B.blood_DNA = list() - if(source.data["blood_type"]) - B.blood_DNA[source.data["blood_DNA"]] = source.data["blood_type"] + if(blood_data["blood_DNA"]) + splatter.blood_DNA = list() + if(blood_data["blood_type"]) + splatter.blood_DNA[blood_data["blood_DNA"]] = blood_data["blood_type"] else - B.blood_DNA[source.data["blood_DNA"]] = "O+" + splatter.blood_DNA[blood_data["blood_DNA"]] = "O+" - B.fluorescent = 0 - B.invisibility = 0 - return B + splatter.fluorescent = 0 + splatter.invisibility = 0 + return splatter diff --git a/code/modules/organs/internal/_internal.dm b/code/modules/organs/internal/_internal.dm index 0f8fa376ce5..75698b6e8ce 100644 --- a/code/modules/organs/internal/_internal.dm +++ b/code/modules/organs/internal/_internal.dm @@ -124,7 +124,7 @@ tick_surge_damage() //Yes, this is intentional. /obj/item/organ/internal/proc/handle_regeneration() - if(!damage || BP_IS_ROBOTIC(src) || !owner || owner.chem_effects[CE_TOXIN] || owner.is_asystole()) + if(!damage || BP_IS_ROBOTIC(src) || !istype(owner) || owner.chem_effects[CE_TOXIN] || (toxin_type in owner.chem_effects) || owner.is_asystole()) return if(damage < 0.1*max_damage) heal_damage(0.1) diff --git a/code/modules/organs/internal/heart.dm b/code/modules/organs/internal/heart.dm index f7715a8a955..82cf0812488 100644 --- a/code/modules/organs/internal/heart.dm +++ b/code/modules/organs/internal/heart.dm @@ -116,24 +116,15 @@ return if(pulse != PULSE_NONE || BP_IS_ROBOTIC(src)) - var/blood_volume = round(owner.vessel.get_reagent_amount(/datum/reagent/blood)) + var/blood_volume = round(REAGENT_VOLUME(owner.vessel, /decl/reagent/blood)) //Blood regeneration if there is some space if(blood_volume < species.blood_volume && blood_volume) - var/datum/reagent/blood/B = locate() in owner.vessel.reagent_list //Grab some blood - if(B) // Make sure there's some blood at all - if(weakref && B.data["donor"] != weakref) //If it's not theirs, then we look for theirs - donor is a weakref here, but it should be safe to just directly compare it. - for(var/datum/reagent/blood/D in owner.vessel.reagent_list) - if(weakref && D.data["donor"] == weakref) - B = D - break - - B.volume += 0.1 // regenerate blood VERY slowly - if(blood_volume <= BLOOD_VOLUME_SAFE) //We loose nutrition and hydration very slowly if our blood is too low + if(REAGENT_DATA(owner.vessel, /decl/reagent/blood)) // Make sure there's blood at all + owner.vessel.add_reagent(/decl/reagent/blood, 0.1 + LAZYACCESS(owner.chem_effects, CE_BLOODRESTORE), temperature = species?.body_temperature) + if(blood_volume <= BLOOD_VOLUME_SAFE) //We lose nutrition and hydration very slowly if our blood is too low owner.adjustNutritionLoss(2) owner.adjustHydrationLoss(1) - if(CE_BLOODRESTORE in owner.chem_effects) - B.volume += owner.chem_effects[CE_BLOODRESTORE] //Bleeding out var/blood_max = 0 @@ -162,7 +153,7 @@ blood_max += bleed_amount do_spray += "[temp.name]" else - owner.vessel.remove_reagent(/datum/reagent/blood, bleed_amount) + owner.vessel.remove_reagent(/decl/reagent/blood, bleed_amount) switch(pulse) if(PULSE_SLOW) diff --git a/code/modules/organs/internal/kidneys.dm b/code/modules/organs/internal/kidneys.dm index ea64c2f8b06..2c0727c5f81 100644 --- a/code/modules/organs/internal/kidneys.dm +++ b/code/modules/organs/internal/kidneys.dm @@ -22,7 +22,7 @@ // Coffee is really bad for you with busted kidneys. // This should probably be expanded in some way, but fucked if I know // what else kidneys can process in our reagent list. - var/datum/reagent/drink/coffee = locate(/datum/reagent/drink/coffee) in owner.reagents.reagent_list + var/decl/reagent/drink/coffee = REAGENT_VOLUME(owner.reagents, /decl/reagent/drink/coffee) if(coffee) if(is_bruised()) owner.adjustToxLoss(0.1 * PROCESS_ACCURACY) @@ -30,11 +30,11 @@ owner.adjustToxLoss(0.3 * PROCESS_ACCURACY) if(is_bruised()) - if(prob(5) && reagents.get_reagent_amount(/datum/reagent/potassium) < 5) - reagents.add_reagent(/datum/reagent/potassium, REM*5) + if(prob(5) && REAGENT_VOLUME(reagents, /decl/reagent/potassium) < 5) + reagents.add_reagent(/decl/reagent/potassium, REM*5) if(is_broken()) - if(owner.reagents.get_reagent_amount(/datum/reagent/potassium) < 15) - owner.reagents.add_reagent(/datum/reagent/potassium, REM*2) + if(REAGENT_VOLUME(owner.reagents, /decl/reagent/potassium) < 15) + owner.reagents.add_reagent(/decl/reagent/potassium, REM*2) //If your kidneys aren't working, your body's going to have a hard time cleaning your blood. if(!owner.chem_effects[CE_ANTITOXIN]) @@ -42,4 +42,4 @@ if(is_broken()) owner.adjustToxLoss(0.5) if(status & ORGAN_DEAD) - owner.adjustToxLoss(1) \ No newline at end of file + owner.adjustToxLoss(1) diff --git a/code/modules/organs/internal/lungs.dm b/code/modules/organs/internal/lungs.dm index 2102db897e6..8705083be4b 100644 --- a/code/modules/organs/internal/lungs.dm +++ b/code/modules/organs/internal/lungs.dm @@ -234,7 +234,7 @@ if(toxins_pp > safe_toxins_max) var/ratio = (poison/safe_toxins_max) * 10 if(reagents) - reagents.add_reagent(/datum/reagent/toxin, Clamp(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE)) + reagents.add_reagent(/decl/reagent/toxin, Clamp(ratio, MIN_TOXIN_DAMAGE, MAX_TOXIN_DAMAGE)) breath.adjust_gas(poison_type, -poison/6, update = 0) //update after owner.phoron_alert = max(owner.phoron_alert, 1) else @@ -377,4 +377,4 @@ rescued = FALSE #undef HUMAN_MAX_OXYLOSS -#undef HUMAN_CRIT_MAX_OXYLOSS \ No newline at end of file +#undef HUMAN_CRIT_MAX_OXYLOSS diff --git a/code/modules/organs/internal/stomach.dm b/code/modules/organs/internal/stomach.dm index 552e087779a..69f8b2b3cfe 100644 --- a/code/modules/organs/internal/stomach.dm +++ b/code/modules/organs/internal/stomach.dm @@ -126,7 +126,7 @@ if(should_process_alcohol) - var/alcohol_volume = ingested.get_reagent_amount(/datum/reagent/alcohol/ethanol) + var/alcohol_volume = REAGENT_VOLUME(ingested, /decl/reagent/alcohol) // Alcohol counts as double volume for the purposes of vomit probability var/effective_volume = ingested.total_volume + alcohol_volume diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 1695309d415..7eb20dd21b3 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -174,11 +174,10 @@ log_debug("Organ [DEBUG_REF(src)] had QDELETED reagents! Regenerating.") create_reagents(5) - var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list - if(B && !(status & ORGAN_ROBOT) && prob(40)) - reagents.remove_reagent(/datum/reagent/blood,0.1) + if(REAGENT_VOLUME(reagents, /decl/reagent/blood) && !(status & ORGAN_ROBOT) && prob(40)) + reagents.remove_reagent(/decl/reagent/blood,0.1) if (isturf(loc)) - blood_splatter(src,B,1) + blood_splatter(src,src,TRUE) if(config.organs_decay) damage += rand(1,3) if(damage >= max_damage) damage = max_damage @@ -267,7 +266,7 @@ germ_level += rand(2,3) if(501 to INFINITY) germ_level += rand(3,5) - owner.reagents.add_reagent(/datum/reagent/toxin, rand(1,2)) + owner.reagents.add_reagent(/decl/reagent/toxin, rand(1,2)) /obj/item/organ/proc/receive_chem(chemical as obj) return 0 @@ -287,10 +286,10 @@ //Germs /obj/item/organ/proc/handle_antibiotics() - if(!owner) + if(!owner || !(CE_ANTIBIOTIC in owner.chem_effects)) return - var/antibiotics = owner.reagents?.get_reagent_amount(/datum/reagent/thetamycin) + var/antibiotics = owner.chem_effects[CE_ANTIBIOTIC] if (!germ_level || antibiotics < 5) return @@ -391,8 +390,8 @@ if (!reagents) create_reagents(5) - var/datum/reagent/blood/organ_blood = locate(/datum/reagent/blood) in reagents.reagent_list - if(!organ_blood || !organ_blood.data["blood_DNA"]) + var/blood_data = LAZYACCESS(reagents.reagent_data, /decl/reagent/blood) + if(!("blood_DNA" in blood_data)) owner.vessel.trans_to(src, 5, 1, 1) if(owner && vital) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 8d0b9dec0f7..a1bbe78ec15 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -362,7 +362,7 @@ organ_hit_chance += 5 * damage_amt / organ_damage_threshold if(encased && !(status & ORGAN_BROKEN)) //ribs protect - organ_hit_chance *= 0.6 + organ_hit_chance *= 0.2 organ_hit_chance = min(organ_hit_chance, 100) if(prob(organ_hit_chance)) @@ -431,14 +431,7 @@ This function completely restores a damaged organ to perfect condition. */ /obj/item/organ/external/rejuvenate() damage_state = "00" - src.status &= ~ORGAN_BROKEN - src.status &= ~ORGAN_BLEEDING - src.status &= ~ORGAN_SPLINTED - src.status &= ~ORGAN_CUT_AWAY - src.status &= ~ORGAN_DESTROYED - src.status &= ~ORGAN_DEAD - src.status &= ~ORGAN_MUTATED - src.status &= ~ORGAN_SPLINTED + status &= ~ORGAN_DAMAGE_STATES perma_injury = 0 brute_dam = 0 burn_dam = 0 diff --git a/code/modules/organs/subtypes/autakh.dm b/code/modules/organs/subtypes/autakh.dm index aebad9d3c59..1b0848e478a 100644 --- a/code/modules/organs/subtypes/autakh.dm +++ b/code/modules/organs/subtypes/autakh.dm @@ -137,7 +137,7 @@ to_chat(owner, "\The [src] activates, releasing a stream of chemicals into your veins!") - owner.reagents.add_reagent(/datum/reagent/adrenaline, 15) + owner.reagents.add_reagent(/decl/reagent/adrenaline, 15) /obj/item/organ/internal/augment/venomous_rest name = "venomous rest implant" @@ -156,9 +156,9 @@ return FALSE if(owner.reagents) - owner.reagents.add_reagent(/datum/reagent/inaprovaline, 10) - owner.reagents.add_reagent(/datum/reagent/tricordrazine, 10) - owner.reagents.add_reagent(/datum/reagent/soporific, 15) + owner.reagents.add_reagent(/decl/reagent/inaprovaline, 10) + owner.reagents.add_reagent(/decl/reagent/tricordrazine, 10) + owner.reagents.add_reagent(/decl/reagent/soporific, 15) take_damage(15) to_chat(owner, "\The [src] activates, releasing a stream of chemicals into your veins!") diff --git a/code/modules/organs/subtypes/diona.dm b/code/modules/organs/subtypes/diona.dm index f9e7f8b0fbf..716eaa52ed1 100644 --- a/code/modules/organs/subtypes/diona.dm +++ b/code/modules/organs/subtypes/diona.dm @@ -8,12 +8,14 @@ /turf/proc/create_diona_nymph() var/mob/living/carbon/alien/diona/D = new(src) - var/datum/ghosttrap/plant/P = get_ghost_trap("living plant") - P.request_player(D, "A diona nymph has split off from its gestalt. ") - sleep(120) - if(D) - if(!D.ckey || !D.client) - D.death() + SSghostroles.add_spawn_atom("diona_nymph", D) + addtimer(CALLBACK(src, .proc/kill_diona_nymph, WEAKREF(D)), 3 MINUTES) + +/turf/proc/kill_diona_nymph(var/datum/weakref/diona_ref) + var/mob/living/carbon/alien/diona/D = diona_ref.resolve() + if(D && (!D.ckey || !D.client)) + SSghostroles.remove_spawn_atom("diona_nymph", D) + D.death() //Probable future TODO: Refactor diona organs to be /obj/item/organ/external/bodypart/diona //Having them not inherit from specific bodypart classes is a problem diff --git a/code/modules/organs/subtypes/parasite.dm b/code/modules/organs/subtypes/parasite.dm index ecc6c3f8c66..3b45175eb52 100644 --- a/code/modules/organs/subtypes/parasite.dm +++ b/code/modules/organs/subtypes/parasite.dm @@ -90,8 +90,8 @@ set_light(1, l_color = "#E6E600") if(prob(10)) to_chat(owner, "You feel something squirming inside of you!") - owner.reagents.add_reagent(/datum/reagent/toxin/phoron, 8) - owner.reagents.add_reagent(/datum/reagent/kois, 5) + owner.reagents.add_reagent(/decl/reagent/toxin/phoron, 8) + owner.reagents.add_reagent(/decl/reagent/kois, 5) if(stage >= 4) if(prob(10)) @@ -101,8 +101,8 @@ var/turf/T = get_turf(owner) var/datum/reagents/R = new/datum/reagents(100) - R.add_reagent(/datum/reagent/kois,10) - R.add_reagent(/datum/reagent/toxin/phoron,10) + R.add_reagent(/decl/reagent/kois,10) + R.add_reagent(/decl/reagent/toxin/phoron,10) var/datum/effect/effect/system/smoke_spread/chem/spores/S = new("koisspore") S.attach(T) @@ -157,7 +157,7 @@ if(prob(5)) to_chat(owner, "You feel something squirming inside of you!") - owner.reagents.add_reagent(/datum/reagent/kois/black, 4) + owner.reagents.add_reagent(/decl/reagent/kois/black, 4) else if(prob(10)) to_chat(owner, "You feel disorientated!") @@ -199,8 +199,8 @@ var/turf/T = get_turf(owner) var/datum/reagents/R = new/datum/reagents(100) - R.add_reagent(/datum/reagent/kois/black,10) - R.add_reagent(/datum/reagent/toxin/phoron,5) + R.add_reagent(/decl/reagent/kois/black,10) + R.add_reagent(/decl/reagent/toxin/phoron,5) var/datum/effect/effect/system/smoke_spread/chem/spores/S = new("blackkois") S.attach(T) @@ -318,4 +318,4 @@ owner.change_skin_color(r, g, b) owner.update_dna() else - owner.adjustToxLoss(50) \ No newline at end of file + owner.adjustToxLoss(50) diff --git a/code/modules/organs/subtypes/unbreakable.dm b/code/modules/organs/subtypes/unbreakable.dm index 8c29b0b4e54..9fc70fb376d 100644 --- a/code/modules/organs/subtypes/unbreakable.dm +++ b/code/modules/organs/subtypes/unbreakable.dm @@ -41,4 +41,9 @@ /obj/item/organ/external/head/unbreakable dislocated = -1 - limb_flags = ORGAN_CAN_AMPUTATE \ No newline at end of file + limb_flags = ORGAN_CAN_AMPUTATE + +/obj/item/organ/external/head/unbreakable/revenant/get_additional_images(var/mob/living/carbon/human/H) + var/image/return_image = image(H.species.eyes_icons, H, "[H.species.eyes]_glow", EFFECTS_ABOVE_LIGHTING_LAYER) + return_image.appearance_flags = KEEP_APART + return list(return_image) \ No newline at end of file diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 2d6bcf7f3f7..1662f435def 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -202,7 +202,7 @@ Pen exclusive commands /obj/item/pen/reagent/sleepy desc = "It's a black ink pen with a sharp point and a carefully engraved \"Waffle Co.\"" origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - reagents_to_add = list(/datum/reagent/polysomnine = 22) + reagents_to_add = list(/decl/reagent/polysomnine = 22) /* @@ -210,29 +210,29 @@ Pen exclusive commands */ /obj/item/pen/reagent/paralysis origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - reagents_to_add = list(/datum/reagent/toxin/dextrotoxin = 10) + reagents_to_add = list(/decl/reagent/toxin/dextrotoxin = 10) /obj/item/pen/reagent/healing origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - reagents_to_add = list(/datum/reagent/tricordrazine = 10, /datum/reagent/dermaline = 5, /datum/reagent/bicaridine = 5) + reagents_to_add = list(/decl/reagent/tricordrazine = 10, /decl/reagent/dermaline = 5, /decl/reagent/bicaridine = 5) icon_state = "pen_green" colour = "green" /obj/item/pen/reagent/pacifier origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - reagents_to_add = list(/datum/reagent/wulumunusha = 2, /datum/reagent/pacifier = 15, /datum/reagent/cryptobiolin = 10) + reagents_to_add = list(/decl/reagent/wulumunusha = 2, /decl/reagent/pacifier = 15, /decl/reagent/cryptobiolin = 10) icon_state = "pen_blue" colour = "blue" /obj/item/pen/reagent/hyperzine origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - reagents_to_add = list(/datum/reagent/hyperzine = 10) + reagents_to_add = list(/decl/reagent/hyperzine = 10) icon_state = "pen_yellow" colour = "yellow" /obj/item/pen/reagent/poison origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - reagents_to_add = list(/datum/reagent/toxin/cyanide = 1, /datum/reagent/lexorin = 20) + reagents_to_add = list(/decl/reagent/toxin/cyanide = 1, /decl/reagent/lexorin = 20) icon_state = "pen_red" colour = "red" @@ -304,7 +304,7 @@ Pen exclusive commands var/shadeColour = "#220000" //RGB var/instant = 0 var/colourName = "red" //for updateIcon purposes - reagents_to_add = list(/datum/reagent/crayon_dust = 10) + reagents_to_add = list(/decl/reagent/crayon_dust = 10) /obj/item/pen/crayon/Initialize() . = ..() diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 84a14d5ecc9..c21bc70bbbb 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -95,7 +95,7 @@ to_chat(user, "You inject the solution into the power cell.") - if(S.reagents.has_reagent(/datum/reagent/toxin/phoron, 5)) + if(S.reagents.has_reagent(/decl/reagent/toxin/phoron, 5)) rigged = 1 diff --git a/code/modules/power/lights/bulbs.dm b/code/modules/power/lights/bulbs.dm index eec584f7c9e..14d2da5347a 100644 --- a/code/modules/power/lights/bulbs.dm +++ b/code/modules/power/lights/bulbs.dm @@ -152,7 +152,7 @@ to_chat(user, SPAN_NOTICE("You inject the solution into \the [src].")) - if(S.reagents.has_reagent(/datum/reagent/toxin/phoron, 5)) + if(S.reagents.has_reagent(/decl/reagent/toxin/phoron, 5)) log_admin("LOG: [user.name] ([user.ckey]) injected a light with phoron, rigging it to explode.",ckey=key_name(user)) message_admins("LOG: [user.name] ([user.ckey]) injected a light with phoron, rigging it to explode.") diff --git a/code/modules/projectiles/guns/launcher/syringe_gun.dm b/code/modules/projectiles/guns/launcher/syringe_gun.dm index 438323f5d69..6901676f227 100644 --- a/code/modules/projectiles/guns/launcher/syringe_gun.dm +++ b/code/modules/projectiles/guns/launcher/syringe_gun.dm @@ -51,9 +51,9 @@ var/mob/living/L = hit_atom //unfortuately we don't know where the dart will actually hit, since that's done by the parent. if(L.can_inject() && syringe.reagents) - var/datum/reagent/reagent_log = syringe.reagents.get_reagents() + var/decl/reagent/reagent_log = syringe.reagents.get_reagents() syringe.reagents.trans_to_mob(L, 15, CHEM_BLOOD) - admin_inject_log(thrower, L, src, reagent_log, reagent_log.get_temperature(), 15, violent=1) + admin_inject_log(thrower, L, src, reagent_log, syringe.reagents.get_temperature(), 15, violent=1) syringe.break_syringe(iscarbon(hit_atom)? hit_atom : null) syringe.update_icon() diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm index 7d955d9d15a..e4bd0b20d0d 100644 --- a/code/modules/projectiles/guns/projectile/dartgun.dm +++ b/code/modules/projectiles/guns/projectile/dartgun.dm @@ -101,9 +101,9 @@ if (beakers.len) to_chat(user, "[src] contains:") for(var/obj/item/reagent_containers/glass/beaker/B in beakers) - if(B.reagents && B.reagents.reagent_list.len) - for(var/datum/reagent/R in B.reagents.reagent_list) - to_chat(user, "[R.volume] units of [R.name]") + for(var/_R in B.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + to_chat(user, "[B.reagents.reagent_volumes[_R]] units of [R.name]") /obj/item/gun/projectile/dartgun/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/reagent_containers/glass)) @@ -136,9 +136,10 @@ var/i = 1 for(var/obj/item/reagent_containers/glass/beaker/B in beakers) dat += "Beaker [i] contains: " - if(B.reagents && B.reagents.reagent_list.len) - for(var/datum/reagent/R in B.reagents.reagent_list) - dat += "
[R.volume] units of [R.name], " + if(LAZYLEN(B.reagents.reagent_volumes)) + for(var/_R in B.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + dat += "
[B.reagents.reagent_volumes[_R]] units of [R.name], " if (check_beaker_mixing(B)) dat += text("Mixing ") else diff --git a/code/modules/projectiles/guns/projectile/musket.dm b/code/modules/projectiles/guns/projectile/musket.dm index 1342c72ce46..5d69411108b 100644 --- a/code/modules/projectiles/guns/projectile/musket.dm +++ b/code/modules/projectiles/guns/projectile/musket.dm @@ -57,11 +57,11 @@ to_chat(user, SPAN_WARNING("\The [src] is already full of gunpowder.")) return var/obj/item/reagent_containers/C = W - if(C.reagents.has_reagent(/datum/reagent/gunpowder, 5)) + if(C.reagents.has_reagent(/decl/reagent/gunpowder, 5)) if(do_after(user, 15)) if(has_powder) return - C.reagents.remove_reagent(/datum/reagent/gunpowder, 5) + C.reagents.remove_reagent(/decl/reagent/gunpowder, 5) has_powder = TRUE to_chat(user, SPAN_NOTICE("You fill \the [src] with gunpowder.")) @@ -75,4 +75,4 @@ amount_per_transfer_from_this = 5 possible_transfer_amounts = list(5) volume = 30 - reagents_to_add = list(/datum/reagent/gunpowder = 30) \ No newline at end of file + reagents_to_add = list(/decl/reagent/gunpowder = 30) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 50bba62021d..af105b48988 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -264,14 +264,14 @@ if(blocked < 100 && !(blocked < 20)) L.emote("yawns") if(blocked < 20) - if(L.reagents) L.reagents.add_reagent(/datum/reagent/soporific, 10) + if(L.reagents) L.reagents.add_reagent(/decl/reagent/soporific, 10) if(def_zone == BP_HEAD && blocked < 100) - if(L.reagents) L.reagents.add_reagent(/datum/reagent/soporific, 15) + if(L.reagents) L.reagents.add_reagent(/decl/reagent/soporific, 15) if(def_zone != "torso" && def_zone != BP_HEAD) if(blocked < 100 && !(blocked < 20)) L.emote("yawns") if(blocked < 20) - if(L.reagents) L.reagents.add_reagent(/datum/reagent/soporific, 5) + if(L.reagents) L.reagents.add_reagent(/decl/reagent/soporific, 5) if(isanimal(target)) target.visible_message("[target] twitches, foaming at the mouth.") diff --git a/code/modules/reagents/Chemistry-Colours.dm b/code/modules/reagents/Chemistry-Colours.dm index 38020e20a49..40438c65c65 100644 --- a/code/modules/reagents/Chemistry-Colours.dm +++ b/code/modules/reagents/Chemistry-Colours.dm @@ -1,23 +1,33 @@ /datum/reagents/proc/get_color() - if(!reagent_list || !reagent_list.len) + if(!LAZYLEN(reagent_volumes)) return "#ffffffff" - if(reagent_list.len == 1) // It's pretty common and saves a lot of work - var/datum/reagent/R = reagent_list[1] - return R.color + if(reagent_volumes.len == 1) // It's pretty common and saves a lot of work + var/decl/reagent/R = decls_repository.get_decl(reagent_volumes[1]) + return R.get_color(src) var/list/colors = list(0, 0, 0, 0) var/tot_w = 0 - for(var/datum/reagent/R in reagent_list) + for(var/rtype in reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(rtype) + if(R.color_weight <= 0) + continue var/hex = uppertext(R.color) if(length(hex) == 7) hex += "FF" - if(length(hex) != 9) // PANIC PANIC PANIC - warning("Reagent [R.type] has an incorrect color set ([R.color])") - hex = "#FFFFFFFF" - colors[1] += hex2num(copytext(hex, 2, 4)) * R.volume * R.color_weight - colors[2] += hex2num(copytext(hex, 4, 6)) * R.volume * R.color_weight - colors[3] += hex2num(copytext(hex, 6, 8)) * R.volume * R.color_weight - colors[4] += hex2num(copytext(hex, 8, 10)) * R.volume * R.color_weight - tot_w += R.volume * R.color_weight + var/mod = REAGENT_VOLUME(src, rtype) * R.color_weight + colors[1] += hex2num(copytext(hex, 2, 4)) * mod + colors[2] += hex2num(copytext(hex, 4, 6)) * mod + colors[3] += hex2num(copytext(hex, 6, 8)) * mod + colors[4] += hex2num(copytext(hex, 8, 10)) * mod + tot_w += mod - return rgb(colors[1] / tot_w, colors[2] / tot_w, colors[3] / tot_w, colors[4] / tot_w) \ No newline at end of file + return rgb(colors[1] / tot_w, colors[2] / tot_w, colors[3] / tot_w, colors[4] / tot_w) + +/decl/reagent/proc/get_color(var/datum/reagents/holder) + return color + +/decl/reagent/blood/get_color(var/datum/reagents/holder) + if(!holder || isemptylist(REAGENT_DATA(holder, type))) + return color + + return LAZYACCESS(holder.reagent_data[type], "blood_colour") || color // return default colour if not set diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 21fa7d9e330..52435010051 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -1,14 +1,16 @@ #define PROCESS_REACTION_ITER 5 //when processing a reaction, iterate this many times /datum/reagents - var/list/datum/reagent/reagent_list = list() + var/primary_reagent + var/list/reagent_volumes + var/list/list/reagent_data var/total_volume = 0 var/maximum_volume = 100 - var/atom/my_atom = null + var/atom/my_atom - var/temperature = T20C + var/thermal_energy = 0 -/datum/reagents/New(var/max = 100, atom/A = null) +/datum/reagents/New(var/max = 100, atom/A) ..() maximum_volume = max my_atom = A @@ -18,70 +20,41 @@ if(SSchemistry) SSchemistry.active_holders -= src - for(var/datum/reagent/R in reagent_list) - qdel(R) - reagent_list.Cut() - reagent_list = null + LAZYCLEARLIST(reagent_data) + LAZYCLEARLIST(reagent_volumes) if(my_atom && my_atom.reagents == src) my_atom.reagents = null /* Internal procs */ /datum/reagents/proc/apply_force(var/force) // applies force to the reagents inside it - for (var/datum/reagent/A in reagent_list) - A.apply_force(force) + for (var/_A in reagent_volumes) + var/decl/reagent/A = decls_repository.get_decl(_A) + A.apply_force(force, src) -/datum/reagents/proc/get_free_space() // Returns free space. - return maximum_volume - total_volume +/datum/reagents/proc/get_primary_reagent_name() // Returns the name of the reagent with the biggest volume. + var/decl/reagent/reagent = get_primary_reagent_decl() + if(reagent) + . = reagent.name -/datum/reagents/proc/get_master_reagent() // Returns reference to the reagent with the biggest volume. - var/the_reagent = null - var/the_volume = 0 - - for(var/datum/reagent/A in reagent_list) - if(A.volume > the_volume) - the_volume = A.volume - the_reagent = A - - return the_reagent - -/datum/reagents/proc/get_reagent(var/rtype) // Returns reference to reagent matching passed type - for(var/datum/reagent/A in reagent_list) - if (A.type == rtype) - return A - - return null - -/datum/reagents/proc/get_master_reagent_name() // Returns the name of the reagent with the biggest volume. - var/the_name = null - var/the_volume = 0 - for(var/datum/reagent/A in reagent_list) - if(A.volume > the_volume) - the_volume = A.volume - the_name = A.name - - return the_name - -/datum/reagents/proc/get_master_reagent_type() // Returns the type of the reagent with the biggest volume. - var/the_type = null - var/the_volume = 0 - for(var/datum/reagent/A in reagent_list) - if(A.volume > the_volume) - the_volume = A.volume - the_type = A.type - - return the_type +/datum/reagents/proc/get_primary_reagent_decl() + return primary_reagent && decls_repository.get_decl(primary_reagent) /datum/reagents/proc/update_total() // Updates volume and temperature. - total_volume = 0 - - for(var/datum/reagent/R in reagent_list) - if(R.volume < MINIMUM_CHEMICAL_VOLUME) - del_reagent(R.type) + primary_reagent = null + if(isemptylist(reagent_volumes)) + thermal_energy = 0 + for(var/R in reagent_volumes) + var/vol = reagent_volumes[R] + if(vol < MINIMUM_CHEMICAL_VOLUME) + del_reagent(R, update = FALSE) // to avoid an infinite loop AND trigger final effects else - total_volume += R.volume - + total_volume += vol + if(!primary_reagent || reagent_volumes[primary_reagent] < vol) + primary_reagent = R + if(total_volume > maximum_volume) + remove_any(maximum_volume - total_volume) return max(total_volume,0) /datum/reagents/proc/update_holder(var/reactions = TRUE) @@ -92,8 +65,6 @@ my_atom.on_reagent_change() /datum/reagents/proc/delete() - for(var/datum/reagent/R in reagent_list) - R.holder = null if(my_atom) my_atom.reagents = null @@ -101,164 +72,149 @@ if(SSchemistry) SSchemistry.mark_for_update(src) +/datum/reagents/proc/has_reactions() + var/list/eligible_reactions = list() + for(var/thing in reagent_volumes) + eligible_reactions |= SSchemistry.chemical_reactions[thing] + + for(var/datum/chemical_reaction/C in eligible_reactions) + if(C.can_happen(src)) + return TRUE + //returns 1 if the holder should continue reactiong, 0 otherwise. /datum/reagents/proc/process_reactions() - if(!my_atom || !my_atom.loc || my_atom.flags & NOREACT) - return 0 + if(!my_atom?.loc) + return FALSE + if(my_atom.flags & NOREACT) + return FALSE var/reaction_occured var/list/effect_reactions = list() var/list/eligible_reactions = list() for(var/i in 1 to PROCESS_REACTION_ITER) - reaction_occured = 0 + reaction_occured = FALSE //need to rebuild this to account for chain reactions - for(var/datum/reagent/R in reagent_list) - eligible_reactions |= SSchemistry.chemical_reactions[R.type] + for(var/thing in reagent_volumes) + eligible_reactions |= SSchemistry.chemical_reactions[thing] for(var/datum/chemical_reaction/C in eligible_reactions) if(C.can_happen(src) && C.process(src)) effect_reactions |= C - reaction_occured = 1 - + reaction_occured = TRUE eligible_reactions.Cut() - if(!reaction_occured) break for(var/datum/chemical_reaction/C in effect_reactions) C.post_reaction(src) - var/temps_updated = equalize_temperature() - update_holder(reactions = reaction_occured) - - return temps_updated + return has_reactions() /* Holder-to-chemical */ -/datum/reagents/proc/add_reagent(var/rtype, var/amount, var/data = null, var/safety = 0, var/temperature = 0, var/thermal_energy = 0) - if(!isnum(amount) || amount <= 0) - return 0 - - update_total() //Does this need to be here? It's called in update_holder. - var/old_amount = amount - amount = min(amount, get_free_space()) - - for(var/datum/reagent/R in reagent_list) - if(R.type == rtype) //Existing reagent - R.volume += amount - if(thermal_energy > 0 && old_amount > 0) - R.add_thermal_energy(thermal_energy * (amount/old_amount) ) - else - if(temperature <= 0) - temperature = R.default_temperature - R.add_thermal_energy(temperature * R.specific_heat * amount) - if(!isnull(data)) // For all we know, it could be zero or empty string and meaningful - R.mix_data(data, amount) - update_holder(!safety) - return 1 - - var/datum/reagent/D = SSchemistry.chemical_reagents[rtype] //New reagent - if(D) - var/datum/reagent/R = new D.type() - reagent_list += R - R.holder = src - R.volume = amount - R.specific_heat = SSchemistry.check_specific_heat(R) - R.thermal_energy = 0 - if(thermal_energy > 0 && old_amount > 0) - R.set_thermal_energy(thermal_energy * (amount/old_amount) ) +/datum/reagents/proc/add_reagent(var/rtype, var/amount, var/data = null, var/safety = 0, var/temperature = 0, var/new_thermal_energy = 0) + if(amount <= 0) + return FALSE + new_thermal_energy /= amount // Re-multiplied later + amount = min(amount, REAGENTS_FREE_SPACE(src)) + new_thermal_energy *= amount + var/decl/reagent/newreagent = decls_repository.get_decl(rtype) + LAZYINITLIST(reagent_volumes) + if(!reagent_volumes[rtype]) // New reagent + reagent_volumes[rtype] = amount + total_volume += amount // so temperature calculations work + var/tmp_data = newreagent.initialize_data(data, src) + if(LAZYLEN(tmp_data)) + LAZYSET(reagent_data, rtype, tmp_data) + if(temperature <= 0) + temperature = newreagent.default_temperature + if(new_thermal_energy > 0) + newreagent.set_thermal_energy(new_thermal_energy, src, safety = TRUE) else - if(temperature <= 0) - temperature = R.default_temperature - R.set_temperature(temperature) - R.initialize_data(data) - update_holder(!safety) - return 1 - else - warning("[my_atom] attempted to add a reagent called '[rtype]' which doesn't exist. ([usr])") - return 0 + newreagent.set_temperature(temperature, src, safety = TRUE) + if(!new_thermal_energy && round(temperature, 1) != round(get_temperature(), 1)) + crash_with("Temperature [temperature] did not match [get_temperature()] after adding NEW reagent [rtype]!") + else // Existing reagent + var/old_energy = (newreagent.get_thermal_energy(src)/reagent_volumes[rtype]) * amount + reagent_volumes[rtype] += amount + total_volume += amount // so temperature calculations work + if(!isnull(data)) + LAZYSET(reagent_data, rtype, newreagent.mix_data(data, amount, src)) + if(temperature <= 0) + temperature = newreagent.default_temperature + newreagent.add_thermal_energy(old_energy, src, safety = TRUE) // This part has the safety var set because thermal shock shouldn't occur due to it. + if(new_thermal_energy > 0) // This if-else is for the change from the current temperature. + newreagent.add_thermal_energy(new_thermal_energy - old_energy, src, FALSE) + else + newreagent.set_temperature(temperature, src, safety = FALSE) + UNSETEMPTY(reagent_volumes) + update_holder(!safety) + return TRUE /datum/reagents/proc/remove_reagent(var/rtype, var/amount, var/safety = 0) - if(!isnum(amount)) - return 0 + var/old_volume = REAGENT_VOLUME(src, rtype) + if(!isnum(amount) || old_volume <= 0) + return FALSE + amount = min(amount, old_volume) + var/decl/reagent/current = decls_repository.get_decl(rtype) + thermal_energy -= current.get_thermal_energy(src) * (amount/old_volume) + reagent_volumes[rtype] -= amount + update_holder(!safety) + return TRUE - for(var/datum/reagent/current in reagent_list) - if(current.type == rtype) - amount = min(amount,current.volume) - var/old_volume = current.volume - current.volume -= amount - current.add_thermal_energy( -(current.thermal_energy * (amount/old_volume)) ) - update_holder(!safety) - return 1 - return 0 - -/datum/reagents/proc/del_reagent(var/rtype) - for(var/datum/reagent/current in reagent_list) - if (current.type == rtype) - if(ismob(my_atom)) - current.final_effect(my_atom) - reagent_list -= current - qdel(current) - update_holder(FALSE) - return 0 +/datum/reagents/proc/del_reagent(var/rtype, update = TRUE) + var/decl/reagent/current = decls_repository.get_decl(rtype) + if(REAGENT_VOLUME(src, rtype) > 0) + thermal_energy -= current.get_thermal_energy(src) + if(ismob(my_atom)) + current.final_effect(my_atom, src) + if(primary_reagent == rtype) + primary_reagent = null + LAZYREMOVE(reagent_data, rtype) + LAZYREMOVE(reagent_volumes, rtype) + if(update) + update_holder(FALSE) + return FALSE /datum/reagents/proc/has_reagent(var/rtype, var/amount = 0) - for(var/datum/reagent/current in reagent_list) - if(current.type == rtype) - if(current.volume >= amount) - return 1 - else - return 0 - return 0 + return (rtype in reagent_volumes) && reagent_volumes[rtype] >= amount /datum/reagents/proc/has_any_reagent(var/list/check_reagents) - for(var/datum/reagent/current in reagent_list) - if(current.type in check_reagents) - if(current.volume >= check_reagents[current.type]) - return 1 - else - return 0 - return 0 + for(var/current in check_reagents) + if(has_reagent(current)) + return TRUE + return FALSE /datum/reagents/proc/has_all_reagents(var/list/check_reagents) - //this only works if check_reagents has no duplicate entries... hopefully okay since it expects an associative list - var/missing = check_reagents.len - for(var/datum/reagent/current in reagent_list) - if(current.type in check_reagents) - if(current.volume >= check_reagents[current.type]) - missing-- - return !missing + for(var/current in check_reagents) + if(!has_reagent(current)) + return FALSE + return TRUE /datum/reagents/proc/clear_reagents() - for(var/datum/reagent/current in reagent_list) - del_reagent(current.type) - return - -/datum/reagents/proc/get_reagent_amount(var/rtype) - for(var/datum/reagent/current in reagent_list) - if(current.type == rtype) - return current.volume - return 0 - -/datum/reagents/proc/get_data(var/rtype) - for(var/datum/reagent/current in reagent_list) - if(current.type == rtype) - return current.get_data() - return 0 + if(ismob(my_atom)) + for(var/_current in reagent_volumes) + var/decl/reagent/current = decls_repository.get_decl(_current) + current.final_effect(my_atom, src) + LAZYCLEARLIST(reagent_volumes) + LAZYCLEARLIST(reagent_data) + update_holder(FALSE) /datum/reagents/proc/get_reagents() . = list() - for(var/datum/reagent/current in reagent_list) - . += "[current.name] ([current.volume])" + for(var/_current in reagent_volumes) + var/decl/reagent/current = decls_repository.get_decl(_current) + . += "[current.name] ([reagent_volumes[_current]])" return english_list(., "EMPTY", "", ", ", ", ") /datum/reagents/proc/get_ids_by_phase(var/phase) // this proc will probably need to be changed if you can have one reagent in multiple states at the same time . = list() - for(var/datum/reagent/current in reagent_list) + for(var/_current in reagent_volumes) + var/decl/reagent/current = decls_repository.get_decl(_current) if(phase == current.reagent_state) - . += current.type + . += _current /* Holder-to-holder and similar procs */ @@ -270,8 +226,9 @@ var/part = amount / total_volume - for(var/datum/reagent/current in reagent_list) - var/amount_to_remove = current.volume * part + for(var/_current in reagent_volumes) + var/decl/reagent/current = decls_repository.get_decl(_current) + var/amount_to_remove = reagent_volumes[_current] * part remove_reagent(current.type, amount_to_remove, 1) update_holder() @@ -285,19 +242,20 @@ if (amount <= 0 || multiplier <= 0) return 0 - amount = max(0, min(amount, total_volume, target.get_free_space() / multiplier)) + amount = max(0, min(amount, total_volume, REAGENTS_FREE_SPACE(target) / multiplier)) if(!amount) return 0 var/part = amount / total_volume - for(var/datum/reagent/current in reagent_list) - var/amount_to_transfer = current.volume * part - var/energy_to_transfer = current.get_thermal_energy() * (amount_to_transfer / current.volume) - target.add_reagent(current.type, amount_to_transfer * multiplier, current.get_data(), TRUE, thermal_energy = energy_to_transfer * multiplier) // We don't react until everything is in place + for(var/_current in reagent_volumes) + var/decl/reagent/current = decls_repository.get_decl(_current) + var/amount_to_transfer = reagent_volumes[_current] * part + var/energy_to_transfer = current.get_thermal_energy(src) * part + target.add_reagent(_current, amount_to_transfer * multiplier, REAGENT_DATA(src, _current), TRUE, new_thermal_energy = energy_to_transfer * multiplier) // We don't react until everything is in place if(!copy) - remove_reagent(current.type, amount_to_transfer, TRUE) + remove_reagent(_current, amount_to_transfer, TRUE) if(!copy) update_holder() @@ -338,23 +296,23 @@ if (!target) return - var/datum/reagent/transfering_reagent = get_reagent(rtype) + var/decl/reagent/transfering_reagent = decls_repository.get_decl(rtype) if (istype(target, /atom)) var/atom/A = target if (!A.reagents || !A.simulated) return - amount = min(amount, transfering_reagent.volume) + amount = min(amount, REAGENT_VOLUME(src, rtype)) if(!amount) return var/datum/reagents/F = new /datum/reagents(amount) - var/tmpdata = get_data(rtype) - var/transfering_thermal_energy = transfering_reagent.get_thermal_energy() * (amount/transfering_reagent.volume) - F.add_reagent(rtype, amount, tmpdata, thermal_energy = transfering_thermal_energy) + var/tmpdata = REAGENT_DATA(src, rtype) + var/transfering_thermal_energy = transfering_reagent.get_thermal_energy(src) * (amount/REAGENT_VOLUME(src, rtype)) + F.add_reagent(rtype, amount, tmpdata, new_thermal_energy = transfering_thermal_energy) remove_reagent(rtype, amount) @@ -393,14 +351,15 @@ if(temperature >= REAGENTS_BURNING_TEMP_HIGH) var/burn_damage = Clamp(total_volume*(temperature - REAGENTS_BURNING_TEMP_HIGH)*REAGENTS_BURNING_TEMP_HIGH_DAMAGE,0,REAGENTS_BURNING_TEMP_HIGH_DAMAGE_CAP) target.adjustFireLoss(burn_damage) - target.visible_message(SPAN_DANGER("The hot liquid burns \the [target]!")) + target.visible_message(SPAN_DANGER("The hot liquid burns [target]!")) else if(temperature <= REAGENTS_BURNING_TEMP_LOW) var/burn_damage = Clamp(total_volume*(REAGENTS_BURNING_TEMP_LOW - temperature)*REAGENTS_BURNING_TEMP_LOW_DAMAGE,0,REAGENTS_BURNING_TEMP_LOW_DAMAGE_CAP) target.adjustFireLoss(burn_damage) - target.visible_message(SPAN_DANGER("The freezing liquid burns \the [target]!")) + target.visible_message(SPAN_DANGER("The freezing liquid burns [target]!")) - for(var/datum/reagent/current in reagent_list) - current.touch_mob(target, current.volume) + for(var/_current in reagent_volumes) + var/decl/reagent/current = decls_repository.get_decl(_current) + current.touch_mob(target, reagent_volumes[_current], src) update_holder() @@ -408,8 +367,9 @@ if(!target || !istype(target) || !target.simulated) return - for(var/datum/reagent/current in reagent_list) - current.touch_turf(target, current.volume) + for(var/_current in reagent_volumes) + var/decl/reagent/current = decls_repository.get_decl(_current) + current.touch_turf(target, reagent_volumes[_current], src) update_holder() @@ -417,8 +377,9 @@ if(!target || !istype(target) || !target.simulated) return - for(var/datum/reagent/current in reagent_list) - current.touch_obj(target, current.volume) + for(var/_current in reagent_volumes) + var/decl/reagent/current = decls_repository.get_decl(_current) + current.touch_obj(target, reagent_volumes[_current], src) update_holder() @@ -441,18 +402,19 @@ var/mob/living/carbon/C = target if(istype(C)) - if(type == CHEM_BREATHE) - var/datum/reagents/R = C.breathing - return C.inhale(src, R, amount, multiplier, copy, bypass_checks) - if(type == CHEM_BLOOD) - var/datum/reagents/R = C.reagents - return trans_to_holder(R, amount, multiplier, copy) - if(type == CHEM_INGEST) - var/datum/reagents/R = C.get_ingested_reagents() - return C.ingest(src, R, amount, multiplier, copy) - if(type == CHEM_TOUCH) - var/datum/reagents/R = C.touching - return trans_to_holder(R, amount, multiplier, copy) + switch(type) + if(CHEM_BREATHE) + var/datum/reagents/R = C.breathing + return C.inhale(src, R, amount, multiplier, copy, bypass_checks) + if(CHEM_BLOOD) + var/datum/reagents/R = C.reagents + return trans_to_holder(R, amount, multiplier, copy) + if(CHEM_INGEST) + var/datum/reagents/R = C.get_ingested_reagents() + return C.ingest(src, R, amount, multiplier, copy) + if(CHEM_TOUCH) + var/datum/reagents/R = C.touching + return trans_to_holder(R, amount, multiplier, copy) else //If the target has a reagent holder, we'll try to put it there instead. This allows feeding simple animals if(target.reagents && type == CHEM_BLOOD || type == CHEM_INGEST) @@ -559,4 +521,4 @@ if(reagents) reagents.maximum_volume = max(reagents.maximum_volume, max_vol) else - reagents = new/datum/reagents(max_vol, src) \ No newline at end of file + reagents = new/datum/reagents(max_vol, src) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 54e1f8e1e2e..2fc2aafd466 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -94,14 +94,11 @@ var/dat = "" if(!condi) if(href_list["name"] == "Blood") - var/datum/reagent/blood/G - for(var/datum/reagent/F in R.reagent_list) - if(F.name == href_list["name"]) - G = F - break + var/decl/reagent/blood/G = decls_repository.get_decl(/decl/reagent/blood) + var/Gdata = REAGENT_DATA(R, /decl/reagent/blood) var/A = G.name - var/B = G.data["blood_type"] - var/C = G.data["blood_DNA"] + var/B = Gdata["blood_type"] + var/C = Gdata["blood_DNA"] dat += "Chemmaster 3000Chemical infos:

Name:
[A]

Description:
Blood Type: [B]
DNA: [C]


(Back)" else dat += "Chemmaster 3000Chemical infos:

Name:
[href_list["name"]]

Description:
[href_list["desc"]]


(Back)" @@ -173,13 +170,13 @@ var/amount_per_pill = reagents.total_volume/count if (amount_per_pill > 60) amount_per_pill = 60 - var/name = sanitizeSafe(input(usr,"Name:","Name your pill!","[reagents.get_master_reagent_name()] ([amount_per_pill] units)"), MAX_NAME_LEN) + var/name = sanitizeSafe(input(usr,"Name:","Name your pill!","[reagents.get_primary_reagent_name()] ([amount_per_pill] units)"), MAX_NAME_LEN) if(reagents.total_volume/count < 1) //Sanity checking. return while (count-- && count >= 0) var/obj/item/reagent_containers/pill/P = new/obj/item/reagent_containers/pill(get_turf(src)) - if(!name) name = reagents.get_master_reagent_name() + if(!name) name = reagents.get_primary_reagent_name() P.name = "[name] pill" P.pixel_x = rand(-7, 7) //random position P.pixel_y = rand(-7, 7) @@ -190,9 +187,9 @@ else if (href_list["createbottle"]) if(!condi) - var/name = sanitizeSafe(input(usr,"Name:","Name your bottle!",reagents.get_master_reagent_name()), MAX_NAME_LEN) + var/name = sanitizeSafe(input(usr,"Name:","Name your bottle!",reagents.get_primary_reagent_name()), MAX_NAME_LEN) var/obj/item/reagent_containers/glass/bottle/P = new/obj/item/reagent_containers/glass/bottle(get_turf(src)) - if(!name) name = reagents.get_master_reagent_name() + if(!name) name = reagents.get_primary_reagent_name() P.name = "[name] bottle" P.pixel_x = rand(-7, 7) //random position P.pixel_y = rand(-7, 7) @@ -262,25 +259,27 @@ dat += "Beaker is empty." else dat += "Add to buffer:
" - for(var/datum/reagent/G in R.reagent_list) - dat += "[G.name] , [G.volume] Units - " + for(var/_G in R.reagent_volumes) + var/decl/reagent/G = decls_repository.get_decl(_G) + dat += "[G.name] , [REAGENT_VOLUME(R, _G)] Units - " dat += "(Analyze) " - dat += "(1) " - dat += "(5) " - dat += "(10) " - dat += "(All) " - dat += "(Custom)
" + dat += "(1) " + dat += "(5) " + dat += "(10) " + dat += "(All) " + dat += "(Custom)
" dat += "
Transfer to [(!mode ? "disposal" : "beaker")]:
" if(reagents.total_volume) - for(var/datum/reagent/N in reagents.reagent_list) - dat += "[N.name] , [N.volume] Units - " + for(var/_N in reagents.reagent_volumes) + var/decl/reagent/N = decls_repository.get_decl(_N) + dat += "[N.name] , [REAGENT_VOLUME(reagents, _N)] Units - " dat += "(Analyze) " - dat += "(1) " - dat += "(5) " - dat += "(10) " - dat += "(All) " - dat += "(Custom)
" + dat += "(1) " + dat += "(5) " + dat += "(10) " + dat += "(All) " + dat += "(Custom)
" else dat += "Empty
" if(!condi) @@ -318,18 +317,18 @@ var/limit = 10 var/list/holdingitems = list() var/list/sheet_reagents = list( //have a number of reagents which is a factor of REAGENTS_PER_SHEET (default 20) unless you like decimals - /obj/item/stack/material/iron = list(/datum/reagent/iron), - /obj/item/stack/material/uranium = list(/datum/reagent/uranium), - /obj/item/stack/material/phoron = list(/datum/reagent/toxin/phoron), - /obj/item/stack/material/gold = list(/datum/reagent/gold), - /obj/item/stack/material/silver = list(/datum/reagent/silver), - /obj/item/stack/material/platinum = list(/datum/reagent/platinum), - /obj/item/stack/material/mhydrogen = list(/datum/reagent/hydrazine), // i guess - /obj/item/stack/material/steel = list(/datum/reagent/iron, /datum/reagent/carbon), - /obj/item/stack/material/plasteel = list(/datum/reagent/iron, /datum/reagent/iron, /datum/reagent/carbon, /datum/reagent/carbon, /datum/reagent/platinum), //8 iron, 8 carbon, 4 platinum, - /obj/item/stack/material/sandstone = list(/datum/reagent/silicon, /datum/reagent/acetone), - /obj/item/stack/material/glass = list(/datum/reagent/silicate), - /obj/item/stack/material/glass/phoronglass = list(/datum/reagent/platinum, /datum/reagent/silicate, /datum/reagent/silicate, /datum/reagent/silicate), //5 platinum, 15 silicate, + /obj/item/stack/material/iron = list(/decl/reagent/iron), + /obj/item/stack/material/uranium = list(/decl/reagent/uranium), + /obj/item/stack/material/phoron = list(/decl/reagent/toxin/phoron), + /obj/item/stack/material/gold = list(/decl/reagent/gold), + /obj/item/stack/material/silver = list(/decl/reagent/silver), + /obj/item/stack/material/platinum = list(/decl/reagent/platinum), + /obj/item/stack/material/mhydrogen = list(/decl/reagent/hydrazine), // i guess + /obj/item/stack/material/steel = list(/decl/reagent/iron, /decl/reagent/carbon), + /obj/item/stack/material/plasteel = list(/decl/reagent/iron, /decl/reagent/iron, /decl/reagent/carbon, /decl/reagent/carbon, /decl/reagent/platinum), //8 iron, 8 carbon, 4 platinum, + /obj/item/stack/material/sandstone = list(/decl/reagent/silicon, /decl/reagent/acetone), + /obj/item/stack/material/glass = list(/decl/reagent/silicate), + /obj/item/stack/material/glass/phoronglass = list(/decl/reagent/platinum, /decl/reagent/silicate, /decl/reagent/silicate, /decl/reagent/silicate), //5 platinum, 15 silicate, ) /obj/machinery/reagentgrinder/Initialize() @@ -425,13 +424,12 @@ else is_beaker_ready = 1 beaker_contents = "The beaker contains:
" - var/anything = 0 - for(var/datum/reagent/R in beaker.reagents.reagent_list) - anything = 1 - beaker_contents += "[R.volume] - [R.name]
" - if(!anything) + if(!LAZYLEN(beaker.reagents.reagent_volumes)) beaker_contents += "Nothing
" - + else + for(var/_R in beaker.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + beaker_contents += "[beaker.reagents.reagent_volumes[_R]] - [R.name]
" dat = {" Processing Chamber contains:
diff --git a/code/modules/reagents/Chemistry-Metabolism.dm b/code/modules/reagents/Chemistry-Metabolism.dm index 16f36397218..606cd22b7bd 100644 --- a/code/modules/reagents/Chemistry-Metabolism.dm +++ b/code/modules/reagents/Chemistry-Metabolism.dm @@ -10,17 +10,18 @@ parent = parent_mob /datum/reagents/metabolism/proc/metabolize() - if(parent) - var/metabolism_type = 0 //non-human mobs - if(ishuman(parent)) - var/mob/living/carbon/human/H = parent - metabolism_type = H.species.reagent_tag - // run this first to get all the chem effects sorted - for(var/thing in reagent_list) - var/datum/reagent/R = thing - R.affect_chem_effect(parent, metabolism_type, metabolism_class) - // then run this to actually do what the chems do - for(var/thing in reagent_list) - var/datum/reagent/R = thing - R.on_mob_life(parent, metabolism_type, metabolism_class) - update_total() \ No newline at end of file + if(!parent) + return + var/metabolism_type = 0 //non-human mobs + if(ishuman(parent)) + var/mob/living/carbon/human/H = parent + metabolism_type = H.species.reagent_tag + // run this first to get all the chem effects sorted + for(var/_R in reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + R.affect_chem_effect(parent, metabolism_type, metabolism_class, src) + // then run this to actually do what the chems do + for(var/_current in reagent_volumes) + var/decl/reagent/current = decls_repository.get_decl(_current) + current.on_mob_life(parent, metabolism_type, metabolism_class, src) + update_total() diff --git a/code/modules/reagents/Chemistry-Readme.dm b/code/modules/reagents/Chemistry-Readme.dm deleted file mode 100644 index cb65a65f1cf..00000000000 --- a/code/modules/reagents/Chemistry-Readme.dm +++ /dev/null @@ -1,324 +0,0 @@ -/* -NOTE: IF YOU UPDATE THE REAGENT-SYSTEM, ALSO UPDATE THIS README. - -Structure: /////////////////// ////////////////////////// - // Mob or object // -------> // Reagents var (datum) // Is a reference to the datum that holds the reagents. - /////////////////// ////////////////////////// - | | - The object that holds everything. V - reagent_list var (list) A List of datums, each datum is a reagent. - - | | | - V V V - - reagents (datums) Reagents. I.e. Water , antitoxins or mercury. - - -Random important notes: - - An objects on_reagent_change will be called every time the objects reagents change. - Useful if you want to update the objects icon etc. - -About the Holder: - - The holder (reagents datum) is the datum that holds a list of all reagents - currently in the object.It also has all the procs needed to manipulate reagents - - Vars: - list/datum/reagent/reagent_list - List of reagent datums. - - total_volume - Total volume of all reagents. - - maximum_volume - Maximum volume. - - atom/my_atom - Reference to the object that contains this. - - Procs: - - get_free_space() - Returns the remaining free volume in the holder. - - get_master_reagent() - Returns the reference to the reagent with the largest volume - - get_master_reagent_name() - Ditto, but returns the name. - - get_master_reagent_type() - Ditto, but returns type. - - update_total() - Updates total volume, called automatically. - - handle_reactions() - Checks reagents and triggers any reactions that happen. Usually called automatically. - - add_reagent(var/id, var/amount, var/data = null, var/safety = 0) - Adds [amount] units of [id] reagent. [data] will be passed to reagent's mix_data() or initialize_data(). If [safety] is 0, handle_reactions() will be called. Returns 1 if successful, 0 otherwise. - - remove_reagent(var/id, var/amount, var/safety = 0) - Ditto, but removes reagent. Returns 1 if successful, 0 otherwise. - - del_reagent(var/id) - Removes all of the reagent. - - has_reagent(var/id, var/amount = 0) - Checks if holder has at least [amount] of [id] reagent. Returns 1 if the reagent is found and volume is above [amount]. Returns 0 otherwise. - - clear_reagents() - Removes all reagents. - - get_reagent_amount(var/id) - Returns reagent volume. Returns 0 if reagent is not found. - - get_data(var/id) - Returns get_data() of the reagent. - - get_reagents() - Returns a string containing all reagent ids and volumes, e.g. "carbon(4),nittrogen(5)". - - remove_any(var/amount = 1) - Removes up to [amount] of reagents from [src]. Returns actual amount removed. - - trans_to_holder(var/datum/reagents/target, var/amount = 1, var/multiplier = 1, var/copy = 0) - Transfers [amount] reagents from [src] to [target], multiplying them by [multiplier]. Returns actual amount removed from [src] (not amount transferred to [target]). If [copy] is 1, copies reagents instead. - - touch(var/atom/target) - When applying reagents to an atom externally, touch() is called to trigger any on-touch effects of the reagent. - This does not handle transferring reagents to things. - For example, splashing someone with water will get them wet and extinguish them if they are on fire, - even if they are wearing an impermeable suit that prevents the reagents from contacting the skin. - Basically just defers to touch_mob(target), touch_turf(target), or touch_obj(target), depending on target's type. - Not recommended to use this directly, since trans_to() calls it before attempting to transfer. - - touch_mob(var/mob/target) - Calls each reagent's touch_mob(target). - - touch_turf(var/turf/target) - Calls each reagent's touch_turf(target). - - touch_obj(var/obj/target) - Calls each reagent's touch_obj(target). - - trans_to(var/atom/target, var/amount = 1, var/multiplier = 1, var/copy = 0) - The general proc for applying reagents to things externally (as opposed to directly injected into the contents). - It first calls touch, then the appropriate trans_to_*() or splash_mob(). - If for some reason you want touch effects to be bypassed (e.g. injecting stuff directly into a reagent container or person), call the appropriate trans_to_*() proc. - - Calls touch() before checking the type of [target], calling splash_mob(target, amount), trans_to_turf(target, amount, multiplier, copy), or trans_to_obj(target, amount, multiplier, copy). - - trans_type_to(var/atom/target, var/id, var/amount = 1) - Transfers [amount] of [id] to [target]. Returns amount transferred. - - splash_mob(var/mob/target, var/amount = 1, var/clothes = 1) - Checks mob's clothing if [clothes] is 1 and transfers [amount] reagents to mob's skin. - Don't call this directly. Call apply_to() instead. - - trans_to_mob(var/mob/target, var/amount = 1, var/type = CHEM_BLOOD, var/multiplier = 1, var/copy = 0) - Transfers [amount] reagents to the mob's appropriate holder, depending on [type]. Ignores protection. - - trans_to_turf(var/turf/target, var/amount = 1, var/multiplier = 1, var/copy = 0) - Turfs don't currently have any reagents. Puts [amount] reagents into a temporary holder, calls touch_turf(target) from it, and deletes it. - - trans_to_obj(var/turf/target, var/amount = 1, var/multiplier = 1, var/copy = 0) - If target has reagents, transfers [amount] to it. Otherwise, same as trans_to_turf(). - - atom/proc/create_reagents(var/max_vol) - Creates a new reagent datum. - -About Reagents: - - Reagents are all the things you can mix and fille in bottles etc. This can be anything from - rejuvs over water to... iron. - - Vars: - - name - Name that shows up in-game. - - id - ID that is used for internal tracking. MUST BE UNIQUE. - - description - Description that shows up in-game. - - datum/reagents/holder - Reference to holder. - - reagent_state - Could be GAS, LIQUID, or SOLID. Affects nothing. Reserved for future use. - - list/data - Use varies by reagent. Custom variable. For example, blood stores blood group and viruses. - - volume - Current volume. - - metabolism - How quickly reagent is processed in mob's bloodstream; by default aslo affects ingest and touch metabolism. - - ingest_met - How quickly reagent is processed when ingested; [metabolism] is used if zero. - - touch_met - Ditto when touching. - - breathe_met - Ditton when breathing. - - dose - How much of the reagent has been processed, limited by [max_dose]. Used for reagents with varying effects (e.g. ethanol or rezadone) and overdosing. - - max_dose - Maximum amount of reagent that has ever been in a mob. Exists so dose won't grow infinitely when small amounts of reagent are added over time. - - overdose - od_minimum_dose - If [volume] is bigger than [overdose] - AND - If [dose] is bigger than [od_minimum_dose] - THEN the overdose() proc is called every tick. - - scannable - If set to 1, will show up on health analyzers by name. - - affects_dead - If set to 1, will affect dead players. Used by Adminordrazine. - - glass_icon_state - Used by drinks. icon_state of the glass when this reagent is the master reagent. - - glass_name - Ditto for glass name. - - glass_desc - Ditto for glass desciption. - - glass_center_of_mass - Used for glass placement on tables. - - color - "#RRGGBB" or "#RRGGBBAA" where A is alpha channel. - - color_weight - How much reagent affects color of holder. Used by paint. - - metabolism_min - Minimum amount of this reagent in the stomach/blood/lungs for this metabolism to actually run. - - conflicting_reagents - List of reagents that conflict with the medication. Runs the affect_conflicting proc for each medication if present. - - Procs: - - remove_self(var/amount) - Removes [amount] of itself. - - touch_mob(var/mob/M) - Called when reagent is in another holder and not splashing the mob. Can be used with noncarbons. - - touch_obj(var/obj/O) - How reagent reacts with objects. - - touch_turf(var/turf/T) - How reagent reacts with turfs. - - on_mob_life(var/mob/living/carbon/M, var/alien, var/location) - Makes necessary checks and calls one of affect procs. - - affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - How reagent affects mob when injected. [removed] is the amount of reagent that has been removed this tick. [alien] is the mob's reagent flag. - - affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - Ditto, ingested. Defaults to affect_blood with halved dose. - - affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - Ditto, touching. - - affect_breathe(var/mob/living/carbon/M, var/alien, var/removed) - Ditto, breathing. Defaults to affect_blood with 75% dose. - - overdose(var/mob/living/carbon/M, var/alien) - Called when volume is above overdose and dose is greater than a minimum dose. Defaults to M.adjustToxLoss(REM). - - initialize_data(var/newdata) - Called when reagent is created. Defaults to setting [data] to [newdata]. - - mix_data(var/newdata, var/newamount) - Called when [newamount] of reagent with [newdata] data is added to the current reagent. Used by paint. - - get_data() - Returns data. Can be overriden. - - affect_conflicting(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagent/conflicting_reagent) - Called when a reagent conflicts with another reagent in the system. - -About Recipes: - - Recipes are simple datums that contain a list of required reagents and a result. - They also have a proc that is called when the recipe is matched. - - Vars: - - name - Name of the reaction, currently unused. - - id - ID of the reaction, must be unique. - - result - ID of the resulting reagent. Can be null. - - list/required_reagents - Reagents that are required for the reaction and are used up during it. - - list/catalysts - Ditto, but not used up. - - list/inhibitors - Opposite, prevent the reaction from happening. - - result_amount - Amount of resulting reagent. - - mix_message - Message that is shown to mobs when reaction happens. - - Procs: - - can_happen(var/datum/reagents/holder) - Customizable. If it returns 0, reaction will not happen. Defaults to always returning 1. Used by slime core reactions. - - on_reaction(var/datum/reagents/holder, var/created_volume) - Called when reaction happens. Used by explosives. - - send_data(var/datum/reagents/T) - Sets resulting reagent's data. Used by blood paint. - -About the Tools: - - By default, all atom have a reagents var - but its empty. if you want to use an object for the chem. - system you'll need to add something like this in its new proc: - - atom/proc/create_reagents(var/max_volume) - - Other important stuff: - - amount_per_transfer_from_this var - This var is mostly used by beakers and bottles. - It simply tells us how much to transfer when - 'pouring' our reagents into something else. - - atom/proc/is_open_container() - Checks atom/var/flags & OPENCONTAINER. - If this returns 1 , you can use syringes, beakers etc - to manipulate the contents of this object. - If it's 0, you'll need to write your own custom reagent - transfer code since you will not be able to use the standard - tools to manipulate it. - -*/ diff --git a/code/modules/reagents/Chemistry-Reagents-Helpers.dm b/code/modules/reagents/Chemistry-Reagents-Helpers.dm index 303940bd700..0a816089a9b 100644 --- a/code/modules/reagents/Chemistry-Reagents-Helpers.dm +++ b/code/modules/reagents/Chemistry-Reagents-Helpers.dm @@ -3,7 +3,7 @@ return FALSE if(!reagents) return FALSE - if(!reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(reagents)) return FALSE return TRUE diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 5a534e34c17..b106b2bc97d 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1,12 +1,9 @@ -/datum/reagent +/decl/reagent var/name = "Reagent" var/description = "A non-descript chemical." var/taste_description = "old rotten bandaids" var/taste_mult = 1 //how this taste compares to others. Higher values means it is more noticable - var/datum/reagents/holder = null var/reagent_state = SOLID - var/list/data = null - var/volume = 0 var/metabolism = REM // This would be 0.2 normally var/ingest_met = 0 var/touch_met = 0 @@ -14,10 +11,8 @@ var/ingest_mul = 0.5 var/touch_mul = 0 var/breathe_mul = 0.75 - var/dose = 0 - var/max_dose = 0 var/overdose = 0 // Volume of a chemical required in the blood to meet overdose criteria. - var/od_minimum_dose = 5 // Metabolised dose of a chemical required to meet overdose criteria. + var/od_minimum_dose = 5 // Metabolised dose of a chemical required to meet overdose criteria. var/scannable = 0 // Shows up on health analyzers. var/affects_dead = 0 var/glass_icon_state = null @@ -34,37 +29,43 @@ var/metabolism_min = 0.01 //How much for the medicine to be present in the system to actually have an effect. var/conflicting_reagent //Reagents that conflict with this medicine, and cause adverse effects when in the blood. - var/default_temperature = T0C + 20 //This is it's default spawning temperature, if none is provided. - var/thermal_energy = 0 //Internal value, should never change. + var/default_temperature = T0C + 20 //This is its default spawning temperature, if none is provided. var/specific_heat = -1 //The higher, the more difficult it is to change its temperature. 0 or lower values indicate that the specific heat has yet to be assigned. var/fallback_specific_heat = -1 //Setting this value above 0 will set the specific heat to this value only if the system could not find an appropriate specific heat to assign using the recipe system. - //Never ever ever ever change this value for datum/reagent. This should only be used for massive, yet specific things like drinks or food where it is infeasible to assign a specific heat value. + //Never ever ever ever change this value for decl/reagent. This should only be used for massive, yet specific things like drinks or food where it is infeasible to assign a specific heat value. var/germ_adjust = 0 // for makeshift bandages/disinfectant var/carbonated = FALSE // if it's carbonated or not -/datum/reagent/proc/initialize_data(var/newdata) // Called when the reagent is created. +/decl/reagent/proc/initialize_data(var/newdata, var/datum/reagents/holder) // Called when the reagent is created. if(!isnull(newdata)) - data = newdata - metabolism = round(metabolism,0.001) + return newdata -/datum/reagent/proc/remove_self(var/amount) // Shortcut - if (!holder) - return - - holder.remove_reagent(type, amount) +/decl/reagent/proc/remove_self(var/amount, var/datum/reagents/holder) // Shortcut + holder.remove_reagent(type, amount) // Don't typecheck this, fix anywhere this is called with a null holder. // This doesn't apply to skin contact - this is for, e.g. extinguishers and sprays. The difference is that reagent is not directly on the mob's skin - it might just be on their clothing. -/datum/reagent/proc/touch_mob(var/mob/living/M, var/amount) +/decl/reagent/proc/touch_mob(var/mob/living/M, var/amount, var/datum/reagents/holder) return -/datum/reagent/proc/touch_obj(var/obj/O, var/amount) // Acid melting, cleaner cleaning, etc +/decl/reagent/proc/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) // Acid melting, cleaner cleaning, etc return -/datum/reagent/proc/touch_turf(var/turf/T, var/amount) // Cleaner cleaning, lube lubbing, etc, all go here +/decl/reagent/proc/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) // Cleaner cleaning, lube lubbing, etc, all go here return -/datum/reagent/proc/on_mob_life(var/mob/living/carbon/M, var/alien, var/location) // Currently, on_mob_life is called on carbons. Any interaction with non-carbon mobs (lube) will need to be done in touch_mob. +/decl/reagent/proc/get_overdose(mob/living/carbon/M, location, datum/reagents/holder) + return overdose + +/decl/reagent/proc/get_od_min_dose(mob/living/carbon/M, location, datum/reagents/holder) + return od_minimum_dose + +/decl/reagent/proc/is_overdosing(mob/living/carbon/M, location, datum/reagents/holder) + var/OD = get_overdose(M, location, holder) + var/OD_min = get_od_min_dose(M, location, holder) + return OD && (REAGENT_VOLUME(holder, type) > OD) && (LAZYACCESS(M.chem_doses, type) > OD_min) && (!location || (location != CHEM_TOUCH)) //OD based on volume in blood, but waits for a small amount of the drug to metabolise before kicking in. + +/decl/reagent/proc/on_mob_life(var/mob/living/carbon/M, var/alien, var/location, var/datum/reagents/holder) // Currently, on_mob_life is called on carbons. Any interaction with non-carbon mobs (lube) will need to be done in touch_mob. if(!istype(M)) return if(!affects_dead && M.stat == DEAD) @@ -81,53 +82,55 @@ removed = breathe_met removed = M.get_metabolism(removed) - max_dose = max(volume, max_dose) - if(overdose && (volume > overdose) && (dose > od_minimum_dose) && (location != CHEM_TOUCH)) //OD based on volume in blood, but waits for a small amount of the drug to metabolise before kicking in. - overdose(M, alien, removed, dose/overdose) //Actual overdose threshold now = overdose + od_minimum_dose. ie. Synaptizine; 5u OD threshold + 1 unit min. metab'd dose = 6u actual OD threshold. + if(is_overdosing(M, location, holder)) + overdose(M, alien, removed, LAZYACCESS(M.chem_doses, type)/get_overdose(M, location, holder), holder) //Actual overdose threshold now = overdose + od_minimum_dose. ie. Synaptizine; 5u OD threshold + 1 unit min. metab'd dose = 6u actual OD threshold. - if(dose == 0) - initial_effect(M,alien) + if(LAZYACCESS(M.chem_doses, type) == 0) + initial_effect(M,alien, holder) - dose = min(dose + removed, max_dose) + LAZYSET(M.chem_doses, type, LAZYACCESS(M.chem_doses, type) + removed) - var/bodytempchange = Clamp((get_temperature() - M.bodytemperature) * removed * REAGENTS_BODYTEMP,-REAGENTS_BODYTEMP_MAX * removed, REAGENTS_BODYTEMP_MAX * removed) + var/bodytempchange = Clamp((holder.get_temperature() - M.bodytemperature) * removed * REAGENTS_BODYTEMP,-REAGENTS_BODYTEMP_MAX * removed, REAGENTS_BODYTEMP_MAX * removed) if(abs(bodytempchange) >= REAGENTS_BODYTEMP_MIN) M.bodytemperature += round(bodytempchange,REAGENTS_BODYTEMP_MIN) + holder.set_temperature(holder.get_temperature() - round(bodytempchange,REAGENTS_BODYTEMP_MIN)) - for(var/datum/reagent/R in M.bloodstr.reagent_list) + for(var/_R in M.bloodstr.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) if(istype(R, conflicting_reagent)) - affect_conflicting(M,alien,removed,R) + affect_conflicting(M,alien,removed,R, holder) + if(removed >= metabolism_min) switch(location) if(CHEM_BLOOD) - affect_blood(M, alien, removed) + affect_blood(M, alien, removed, holder) if(CHEM_INGEST) - affect_ingest(M, alien, removed) + affect_ingest(M, alien, removed, holder) if(CHEM_TOUCH) - affect_touch(M, alien, removed) + affect_touch(M, alien, removed, holder) if(CHEM_BREATHE) - affect_breathe(M, alien, removed) + affect_breathe(M, alien, removed, holder) - remove_self(removed) + remove_self(removed, holder) // Called when a beaker is thrown or something is hit with it, AND the beaker doesn't break. -/datum/reagent/proc/apply_force(var/force) +/decl/reagent/proc/apply_force(var/force, var/datum/reagents/holder) return force //Initial effect is called once when the reagent first starts affecting a mob. -/datum/reagent/proc/initial_effect(var/mob/living/carbon/M, var/alien) +/decl/reagent/proc/initial_effect(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) return //Final effect is called once when the reagent finishes affecting a mob. -/datum/reagent/proc/final_effect(var/mob/living/carbon/M) +/decl/reagent/proc/final_effect(var/mob/living/carbon/M, var/datum/reagents/holder) return -/datum/reagent/proc/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/proc/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) return // if your chem directly affects other chems, use this to make sure all the chem_effects are applied before the standard chem affect_thing is run -/datum/reagent/proc/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/proc/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(!istype(M)) return FALSE if(!affects_dead && M.stat == DEAD) @@ -136,48 +139,23 @@ return FALSE return TRUE -/datum/reagent/proc/affect_conflicting(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagent/conflicting_reagent) +/decl/reagent/proc/affect_conflicting(var/mob/living/carbon/M, var/alien, var/removed, var/decl/reagent/conflicting_reagent, var/datum/reagents/holder) M.adjustToxLoss(removed) -/datum/reagent/proc/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/proc/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(ingest_mul) - affect_blood(M, alien, removed * ingest_mul) + affect_blood(M, alien, removed * ingest_mul, holder) -/datum/reagent/proc/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/proc/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(touch_mul) - affect_blood(M, alien, removed * touch_mul) + affect_blood(M, alien, removed * touch_mul, holder) -/datum/reagent/proc/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/proc/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(breathe_mul) - affect_blood(M, alien, removed * breathe_mul) + affect_blood(M, alien, removed * breathe_mul, holder) -/datum/reagent/proc/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1) // Overdose effect. Doesn't happen instantly. +/decl/reagent/proc/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder) // Overdose effect. Doesn't happen instantly. M.adjustToxLoss(REM) -/datum/reagent/proc/mix_data(var/newdata, var/newamount) // You have a reagent with data, and new reagent with its own data get added, how do you deal with that? - return - -/datum/reagent/proc/get_data() // Just in case you have a reagent that handles data differently. - if(islist(data)) - return data.Copy() - else if(data) - return data - -/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references - . = ..() - holder = null - -/* DEPRECATED - TODO: REMOVE EVERYWHERE */ - -/datum/reagent/proc/reaction_turf(var/turf/target) - touch_turf(target) - -/datum/reagent/proc/reaction_obj(var/obj/target) - touch_obj(target) - -/datum/reagent/proc/reaction_mob(var/mob/target) - touch_mob(target) - - - - +/decl/reagent/proc/mix_data(var/newdata, var/newamount, var/datum/reagents/holder) // You have a reagent with data, and new reagent with its own data get added, how do you deal with that? + return REAGENT_DATA(holder, type) diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index 5e25284a09f..096b55af78f 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -1,13 +1,4 @@ -/datum/reagent/blood - data = list( - "donor" = null, - "species" = SPECIES_HUMAN, - "blood_DNA" = null, - "blood_type" = null, - "blood_colour" = "#A10808", - "resistances" = null, - "trace_chem" = null - ) +/decl/reagent/blood name = "Blood" reagent_state = LIQUID metabolism = REM * 5 @@ -21,55 +12,73 @@ fallback_specific_heat = 3.617 -/datum/reagent/blood/initialize_data(var/newdata) - ..() - if(data && data["blood_colour"]) - color = data["blood_colour"] - return +/decl/reagent/blood/mix_data(var/list/newdata, var/newamount, var/datum/reagents/holder) + var/list/data = ..() + if(LAZYACCESS(newdata, "trace_chem")) + var/list/other_chems = LAZYACCESS(newdata, "trace_chem") + if(!data) + data = newdata.Copy() + else if(!data["trace_chem"]) + data["trace_chem"] = other_chems.Copy() + else + var/list/my_chems = data["trace_chem"] + for(var/chem in other_chems) + my_chems[chem] = my_chems[chem] + other_chems[chem] + var/datum/weakref/W = LAZYACCESS(data, "donor") + var/mob/living/carbon/self = W?.resolve() + if(!(MODE_VAMPIRE in self?.mind?.antag_datums) && blood_incompatible(LAZYACCESS(newdata, "blood_type"), LAZYACCESS(data, "blood_type"), LAZYACCESS(newdata, "species"), LAZYACCESS(data, "species"))) + remove_self(newamount * 0.5, holder) // So the blood isn't *entirely* useless + var/mob/living/carbon/human/recipient = holder.my_atom + if(istype(recipient) && holder == recipient.vessel) + recipient.reagents.add_reagent(/decl/reagent/toxin/coagulated_blood, newamount * 0.5) + // it has no effect if added to the vessel + else + holder.add_reagent(/decl/reagent/toxin/coagulated_blood, newamount * 0.5) + . = data -/datum/reagent/blood/touch_turf(var/turf/simulated/T) +/decl/reagent/blood/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder) - if(!istype(T) || volume < 3) + if(!istype(T) || amount < 3) return - - var/datum/weakref/W = data["donor"] - if (!W) + var/list/rdata = REAGENT_DATA(holder, type) + if(isemptylist(rdata)) + return + var/datum/weakref/W = rdata["donor"] + var/mob/living/carbon/C = W?.resolve() + if (!C || istype(C, /mob/living/carbon/human)) blood_splatter(T, src, 1) return - W = W.resolve() - if(istype(W, /mob/living/carbon/human)) - blood_splatter(T, src, 1) - - else if(istype(W, /mob/living/carbon/alien)) + else if(istype(C, /mob/living/carbon/alien)) var/obj/effect/decal/cleanable/blood/B = blood_splatter(T, src, 1) if(B) B.blood_DNA["UNKNOWN DNA STRUCTURE"] = "X*" -/datum/reagent/blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(ishuman(M)) - if(M.mind) - var/datum/vampire/vampire = M.mind.antag_datums[MODE_VAMPIRE] - if(M.dna.unique_enzymes == data["blood_DNA"]) //so vampires can't drink their own blood + if (M.mind && (MODE_VAMPIRE in M.mind.antag_datums)) + if(LAZYLEN(REAGENT_DATA(holder, type) && M.dna.unique_enzymes == LAZYACCESS(holder.reagent_data[type], "blood_DNA"))) //so vampires can't drink their own blood return + var/datum/vampire/vampire = M.mind.antag_datums[MODE_VAMPIRE] vampire.blood_usable += removed to_chat(M, "You have accumulated [vampire.blood_usable] [vampire.blood_usable > 1 ? "units" : "unit"] of usable blood. It tastes quite stale.") return - if(dose > 5) - M.adjustToxLoss(removed) + var/dose = M.chem_doses[type] if(dose > 15) + M.adjustToxLoss(removed * 2) + else if(dose > 5) M.adjustToxLoss(removed) -/datum/reagent/blood/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/blood/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien == IS_MACHINE) return -/datum/reagent/blood/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.inject_blood(src, volume) - remove_self(volume) +/decl/reagent/blood/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + M.inject_blood(REAGENT_VOLUME(holder, type), holder) + remove_self(REAGENT_VOLUME(holder, type), holder) #define WATER_LATENT_HEAT 19000 // How much heat is removed when applied to a hot turf, in J/unit (19000 makes 120 u of water roughly equivalent to 4L) -/datum/reagent/water +/decl/reagent/water name = "Water" description = "A ubiquitous chemical substance that is composed of hydrogen and oxygen." reagent_state = LIQUID @@ -89,12 +98,12 @@ germ_adjust = 0.05 // i mean, i guess you could try... -/datum/reagent/water/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/water/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(!istype(M)) return M.adjustHydrationLoss(-6*removed) -/datum/reagent/water/touch_turf(var/turf/simulated/T) +/decl/reagent/water/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder) if(!istype(T)) return @@ -110,43 +119,43 @@ qdel(hotspot) if (environment && environment.temperature > min_temperature) // Abstracted as steam or something - var/removed_heat = between(0, volume * WATER_LATENT_HEAT, -environment.get_thermal_energy_change(min_temperature)) + var/removed_heat = between(0, amount * WATER_LATENT_HEAT, -environment.get_thermal_energy_change(min_temperature)) environment.add_thermal_energy(-removed_heat) if (prob(5)) T.visible_message("The water sizzles as it lands on \the [T]!") - else if(volume >= 10) - T.wet_floor(WET_TYPE_WATER,volume) + else if(amount >= 10) + T.wet_floor(WET_TYPE_WATER,amount) -/datum/reagent/water/touch_obj(var/obj/O) +/decl/reagent/water/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) if(istype(O, /obj/item/reagent_containers/food/snacks/monkeycube)) var/obj/item/reagent_containers/food/snacks/monkeycube/cube = O if(!cube.wrapped) cube.Expand() -/datum/reagent/water/touch_mob(var/mob/M, var/amount) +/decl/reagent/water/touch_mob(var/mob/M, var/amount, var/datum/reagents/holder) . = ..() if(istype(M) && isliving(M)) var/mob/living/L = M var/needed = min(L.fire_stacks, amount) L.ExtinguishMob(needed) - remove_self(needed) + remove_self(needed, holder) if(istype(M) && !istype(M, /mob/abstract)) M.color = initial(M.color) -/datum/reagent/water/affect_touch(var/mob/living/carbon/slime/S, var/alien, var/removed) +/decl/reagent/water/affect_touch(var/mob/living/carbon/slime/S, var/alien, var/removed, var/datum/reagents/holder) if(istype(S)) - S.adjustToxLoss( volume * (removed/REM) * 0.23 ) + S.adjustToxLoss( REAGENT_VOLUME(holder, type) * (removed/REM) * 0.23 ) if(!S.client) if(S.target) // Like cats S.target = null ++S.discipline - if(dose == removed) + if(S.chem_doses[type] == removed) S.visible_message(SPAN_WARNING("[S]'s flesh sizzles where the water touches it!"), SPAN_DANGER("Your flesh burns in the water!")) -/datum/reagent/water/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/water/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(istype(M, /mob/living/carbon/slime)) var/mob/living/carbon/slime/S = M S.adjustToxLoss(12 * removed) // A slime having water forced down its throat would cause much more damage then being splashed on it @@ -155,7 +164,7 @@ ++S.discipline -/datum/reagent/fuel +/decl/reagent/fuel name = "Welding Fuel" description = "Required for welders. Flammable." reagent_state = LIQUID @@ -169,19 +178,19 @@ fallback_specific_heat = 0.605 -/datum/reagent/fuel/touch_turf(var/turf/T) - new /obj/effect/decal/cleanable/liquid_fuel(T, volume) - remove_self(volume) +/decl/reagent/fuel/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) + new /obj/effect/decal/cleanable/liquid_fuel(T, amount) + remove_self(amount, holder) return -/datum/reagent/fuel/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/fuel/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/obj/item/organ/internal/augment/fuel_cell/aug = M.internal_organs_by_name[BP_AUG_FUEL_CELL] if(aug && !aug.is_broken()) M.adjustNutritionLoss(-8 * removed) else M.adjustToxLoss(2 * removed) -/datum/reagent/fuel/touch_mob(var/mob/living/L, var/amount) +/decl/reagent/fuel/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder) . = ..() if(istype(L)) L.adjust_fire_stacks(amount / 10) // Splashing people with welding fuel to make them easy to ignite! diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm index 05048d881b3..ba87b1c031d 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Dispenser.dm @@ -1,4 +1,4 @@ -/datum/reagent/acetone +/decl/reagent/acetone name = "Acetone" description = "A colorless liquid solvent used in chemical synthesis." reagent_state = LIQUID @@ -7,17 +7,17 @@ taste_description = "acid" fallback_specific_heat = 0.567 -/datum/reagent/acetone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/acetone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustToxLoss(removed * 3) -/datum/reagent/acetone/touch_obj(var/obj/O) //I copied this wholesale from ethanol and could likely be converted into a shared proc. ~Techhead +/decl/reagent/acetone/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) //I copied this wholesale from ethanol and could likely be converted into a shared proc. ~Techhead if(istype(O, /obj/item/paper)) var/obj/item/paper/paperaffected = O paperaffected.clearpaper() to_chat(usr, "The solution dissolves the ink on the paper.") return if(istype(O, /obj/item/book)) - if(volume < 5) + if(amount < 5) return if(istype(O, /obj/item/book/tome)) to_chat(usr, "The solution does nothing. Whatever this is, it isn't normal ink.") @@ -27,7 +27,7 @@ to_chat(usr, "The solution dissolves the ink on the book.") return -/datum/reagent/aluminum +/decl/reagent/aluminum name = "Aluminum" description = "A silvery white and ductile member of the boron group of chemical elements." reagent_state = SOLID @@ -36,7 +36,7 @@ taste_mult = 1.1 fallback_specific_heat = 0.811 -/datum/reagent/ammonia +/decl/reagent/ammonia name = "Ammonia" description = "A caustic substance commonly used in fertilizer or household cleaners. Poisonous to most lifeforms, lingers for a while if inhaled." reagent_state = LIQUID @@ -48,10 +48,10 @@ breathe_met = REM * 0.25 fallback_specific_heat = 1.048 -/datum/reagent/ammonia/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/ammonia/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustToxLoss(removed * 1.5) -/datum/reagent/carbon +/decl/reagent/carbon name = "Carbon" description = "A chemical element, the building block of life." reagent_state = SOLID @@ -62,25 +62,25 @@ fallback_specific_heat = 0.018 scannable = TRUE -/datum/reagent/carbon/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/carbon/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/datum/reagents/ingested = M.get_ingested_reagents() - if(ingested && ingested.reagent_list.len > 1) // Need to have at least 2 reagents - cabon and something to remove - var/effect = 1 / (ingested.reagent_list.len - 1) - for(var/datum/reagent/R in ingested.reagent_list) - if(R == src) + if(ingested && LAZYLEN(ingested.reagent_volumes) > 1) // Need to have at least 2 reagents - cabon and something to remove + var/effect = 1 / (ingested.reagent_volumes.len - 1) + for(var/_R in ingested.reagent_volumes) + if(_R == type) continue - ingested.remove_reagent(R.type, removed * effect) + ingested.remove_reagent(_R, removed * effect) -/datum/reagent/carbon/touch_turf(var/turf/T) +/decl/reagent/carbon/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) if(!istype(T, /turf/space)) var/obj/effect/decal/cleanable/dirt/dirtoverlay = locate(/obj/effect/decal/cleanable/dirt, T) if (!dirtoverlay) dirtoverlay = new/obj/effect/decal/cleanable/dirt(T) - dirtoverlay.alpha = volume * 30 + dirtoverlay.alpha = amount * 30 else - dirtoverlay.alpha = min(dirtoverlay.alpha + volume * 30, 255) + dirtoverlay.alpha = min(dirtoverlay.alpha + amount * 30, 255) -/datum/reagent/copper +/decl/reagent/copper name = "Copper" description = "A highly ductile metal." color = "#6E3B08" @@ -88,11 +88,11 @@ fallback_specific_heat = 1.148 scannable = TRUE -/datum/reagent/copper/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/copper/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if (alien & IS_SKRELL) M.add_chemical_effect(CE_BLOODRESTORE, 3 * removed) -/datum/reagent/alcohol //Parent class for all alcoholic reagents, though this one shouldn't be used anywhere. +/decl/reagent/alcohol //Parent class for all alcoholic reagents, though this one shouldn't be used anywhere. name = null // This null name should prevent alcohol from being added to global lists. description = "An abstract type you shouldn't be able to see." reagent_state = LIQUID @@ -107,7 +107,6 @@ var/adj_temp = 0 var/targ_temp = 310 var/halluci = 0 - var/datum/modifier/caffeine_mod var/caffeine = 0 var/flammability_divisor = 10 @@ -125,25 +124,19 @@ var/blood_to_ingest_scale = 2 -/datum/reagent/alcohol/Destroy() - if (caffeine_mod) - QDEL_NULL(caffeine_mod) - - return ..() - -/datum/reagent/alcohol/touch_mob(mob/living/L, amount) +/decl/reagent/alcohol/touch_mob(mob/living/L, amount, var/datum/reagents/holder) . = ..() if (istype(L) && strength > 40) L.adjust_fire_stacks((amount / (flammability_divisor || 1)) * (strength / 100)) -/datum/reagent/alcohol/affect_blood(mob/living/carbon/M, alien, removed) +/decl/reagent/alcohol/affect_blood(mob/living/carbon/M, alien, removed, var/datum/reagents/holder) if(prob(10*(strength/100))) to_chat(M, SPAN_DANGER("Your insides are burning!")) // it would be quite painful to inject alcohol or otherwise get it in your bloodstream directly, without metabolising any M.adjustToxLoss(removed * blood_to_ingest_scale * (strength/100) ) - affect_ingest(M,alien,removed * blood_to_ingest_scale) + affect_ingest(M,alien,removed * blood_to_ingest_scale, holder) return -/datum/reagent/alcohol/affect_ingest(mob/living/carbon/M, alien, removed) +/decl/reagent/alcohol/affect_ingest(mob/living/carbon/M, alien, removed, var/datum/reagents/holder) if(alien != IS_DIONA) M.intoxication += (strength / 100) * removed * 3.5 @@ -156,15 +149,14 @@ if(caffeine) M.add_chemical_effect(CE_PULSE, caffeine*2) - if(!caffeine_mod) - caffeine_mod = M.add_modifier(/datum/modifier/stimulant, MODIFIER_REAGENT, src, _strength = caffeine, override = MODIFIER_OVERRIDE_STRENGTHEN) + M.add_up_to_chemical_effect(CE_SPEEDBOOST, 1) if (adj_temp > 0 && M.bodytemperature < targ_temp) // 310 is the normal bodytemp. 310.055 M.bodytemperature = min(targ_temp, M.bodytemperature + (adj_temp * TEMPERATURE_DAMAGE_COEFFICIENT)) if (adj_temp < 0 && M.bodytemperature > targ_temp) M.bodytemperature = min(targ_temp, M.bodytemperature - (adj_temp * TEMPERATURE_DAMAGE_COEFFICIENT)) -/datum/reagent/alcohol/ethanol +/decl/reagent/alcohol name = "Ethanol" description = "A well-known alcohol with a variety of applications." flammability_divisor = 10 @@ -179,7 +171,7 @@ distillation_point = T0C + 78.37 -/datum/reagent/alcohol/ethanol/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/alcohol/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(!istype(M)) return var/obj/item/organ/internal/parasite/P = M.internal_organs_by_name["blackkois"] @@ -194,14 +186,14 @@ ..() -/datum/reagent/alcohol/ethanol/touch_obj(var/obj/O) +/decl/reagent/alcohol/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) if(istype(O, /obj/item/paper)) var/obj/item/paper/paperaffected = O paperaffected.clearpaper() to_chat(usr, "The solution dissolves the ink on the paper.") return if(istype(O, /obj/item/book)) - if(volume < 5) + if(amount < 5) return if(istype(O, /obj/item/book/tome)) to_chat(usr, "The solution does nothing. Whatever this is, it isn't normal ink.") @@ -214,7 +206,7 @@ // Butanol is a common alcohol that is fairly ineffective for humans and most other species, but highly intoxicating to unathi. // Most behavior is inherited from alcohol. -/datum/reagent/alcohol/butanol +/decl/reagent/alcohol/butanol name = "Butanol" description = "A fairly harmless alcohol that has intoxicating effects on certain species." reagent_state = LIQUID @@ -232,7 +224,7 @@ distillation_point = T0C + 117.7 -/datum/reagent/alcohol/butanol/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/alcohol/butanol/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(!istype(M)) return var/obj/item/organ/internal/parasite/P = M.internal_organs_by_name["blackkois"] @@ -247,7 +239,7 @@ ..() -/datum/reagent/hydrazine +/decl/reagent/hydrazine name = "Hydrazine" description = "A toxic, colorless, flammable liquid with a strong ammonia-like odor, in hydrate form." reagent_state = LIQUID @@ -258,27 +250,27 @@ fallback_specific_heat = 0.549 //Unknown -/datum/reagent/hydrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/hydrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/obj/item/organ/internal/augment/fuel_cell/aug = M.internal_organs_by_name[BP_AUG_FUEL_CELL] if(aug && !aug.is_broken()) M.adjustNutritionLoss(-12 * removed) else M.adjustToxLoss(4 * removed) -/datum/reagent/hydrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) // Hydrazine is both toxic and flammable. +/decl/reagent/hydrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) // Hydrazine is both toxic and flammable. M.adjust_fire_stacks(removed / 12) M.adjustToxLoss(0.2 * removed) -/datum/reagent/hydrazine/touch_turf(var/turf/T) - new /obj/effect/decal/cleanable/liquid_fuel(T, volume) - remove_self(volume) +/decl/reagent/hydrazine/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) + new /obj/effect/decal/cleanable/liquid_fuel(T, amount) + remove_self(amount, holder) return -/datum/reagent/hydrazine/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed) +/decl/reagent/hydrazine/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) . = ..() H.add_chemical_effect(CE_PNEUMOTOXIC, removed * 0.5) -/datum/reagent/iron +/decl/reagent/iron name = "Iron" description = "Pure iron is a metal." reagent_state = SOLID @@ -288,11 +280,11 @@ fallback_specific_heat = 1.181 -/datum/reagent/iron/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/iron/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if (!(alien & (IS_SKRELL | IS_VAURCA))) M.add_chemical_effect(CE_BLOODRESTORE, 3 * removed) -/datum/reagent/lithium +/decl/reagent/lithium name = "Lithium" description = "A chemical element, used as antidepressant." reagent_state = SOLID @@ -301,13 +293,13 @@ fallback_specific_heat = 0.633 -/datum/reagent/lithium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/lithium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(M.canmove && !M.restrained() && !(istype(M.loc, /turf/space))) step(M, pick(cardinal)) if(prob(5)) M.emote(pick("twitch", "drool", "moan")) -/datum/reagent/mercury +/decl/reagent/mercury name = "Mercury" description = "A poisonous chemical element, one of two that is a liquid at human room temperature and pressure." reagent_state = LIQUID @@ -322,8 +314,9 @@ fallback_specific_heat = 0.631 -/datum/reagent/mercury/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mercury/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_NEUROTOXIC, 2*removed) + var/dose = M.chem_doses[type] if(dose > 1) if(prob(dose/2)) to_chat(M, SPAN_WARNING(pick("You feel a tingly sensation in your body.", "You can smell something unusual.", "You can taste something unusual.", "You hear a faint white-noise that's gradually getting louder."))) @@ -340,7 +333,7 @@ M.add_chemical_effect(CE_UNDEXTROUS, 1) //A budget dextrotoxin that's a tad more dangerous and slower to take effect. M.Weaken(10) -/datum/reagent/phosphorus +/decl/reagent/phosphorus name = "Phosphorus" description = "A chemical element, the backbone of biological energy carriers." reagent_state = SOLID @@ -349,7 +342,7 @@ fallback_specific_heat = 0.569 -/datum/reagent/potassium +/decl/reagent/potassium name = "Potassium" description = "A soft, low-melting solid that can easily be cut with a knife. Reacts violently with water." reagent_state = SOLID @@ -358,13 +351,13 @@ fallback_specific_heat = 0.214 -/datum/reagent/potassium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(volume > 3) +/decl/reagent/potassium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(REAGENT_VOLUME(holder, type) > 3) M.add_chemical_effect(CE_PULSE, 1) - if(volume > 10) + if(REAGENT_VOLUME(holder, type) > 10) M.add_chemical_effect(CE_PULSE, 1) -/datum/reagent/radium +/decl/reagent/radium name = "Radium" description = "Radium is an alkaline earth metal. It is extremely radioactive." reagent_state = SOLID @@ -375,18 +368,18 @@ fallback_specific_heat = 0.220 var/message_shown = FALSE -/datum/reagent/radium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/radium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.apply_effect(10 * removed, IRRADIATE, blocked = 0) // Radium may increase your chances to cure a disease -/datum/reagent/radium/touch_turf(var/turf/T) - if(volume >= 3) +/decl/reagent/radium/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) + if(amount >= 3) if(!istype(T, /turf/space)) var/obj/effect/decal/cleanable/greenglow/glow = locate(/obj/effect/decal/cleanable/greenglow, T) if(!glow) new /obj/effect/decal/cleanable/greenglow(T) return -/datum/reagent/acid +/decl/reagent/acid name = "Sulphuric Acid" description = "A very corrosive mineral acid with the molecular formula H2SO4." reagent_state = LIQUID @@ -399,20 +392,20 @@ fallback_specific_heat = 0.815 -/datum/reagent/acid/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/acid/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.take_organ_damage(0, removed * power) -/datum/reagent/acid/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed) +/decl/reagent/acid/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) . = ..() H.add_chemical_effect(CE_PNEUMOTOXIC, removed * power * 0.5) -/datum/reagent/acid/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) // This is the most interesting +/decl/reagent/acid/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) // This is the most interesting if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.head) if(H.head.unacidable) to_chat(H, "Your [H.head] protects you from the acid.") - remove_self(volume) + remove_self(REAGENT_VOLUME(holder, type)) return else if(removed > meltdose) to_chat(H, "Your [H.head] melts away!") @@ -426,7 +419,7 @@ if(H.wear_mask) if(H.wear_mask.unacidable) to_chat(H, "Your [H.wear_mask] protects you from the acid.") - remove_self(volume) + remove_self(REAGENT_VOLUME(holder, type)) return else if(removed > meltdose) to_chat(H, "Your [H.wear_mask] melts away!") @@ -449,11 +442,11 @@ if(removed <= 0) return - if(volume < meltdose) // Not enough to melt anything + if(REAGENT_VOLUME(holder, type) < meltdose) // Not enough to melt anything M.take_organ_damage(0, removed * power * 0.2) //burn damage, since it causes chemical burns. Acid doesn't make bones shatter, like brute trauma would. return if(!M.unacidable && removed > 0) - if(istype(M, /mob/living/carbon/human) && volume >= meltdose) + if(istype(M, /mob/living/carbon/human) && REAGENT_VOLUME(holder, type) >= meltdose) var/mob/living/carbon/human/H = M var/obj/item/organ/external/affecting = H.get_organ(BP_HEAD) if(affecting) @@ -465,18 +458,18 @@ else M.take_organ_damage(0, removed * power * 0.1) // Balance. The damage is instant, so it's weaker. 10 units -> 5 damage, double for pacid. 120 units beaker could deal 60, but a) it's burn, which is not as dangerous, b) it's a one-use weapon, c) missing with it will splash it over the ground and d) clothes give some protection, so not everything will hit -/datum/reagent/acid/touch_obj(var/obj/O) +/decl/reagent/acid/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) if(O.unacidable) return - if((istype(O, /obj/item) || istype(O, /obj/effect/plant)) && (volume > meltdose)) + if((istype(O, /obj/item) || istype(O, /obj/effect/plant)) && (amount > meltdose)) var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(get_turf(O)) I.desc = "Looks like this was \an [O] some time ago." for(var/mob/M in viewers(get_turf(O), 5)) to_chat(M, "\The [O] melts.") qdel(O) - remove_self(meltdose) // 10 units of acid will not melt EVERYTHING on the tile + remove_self(meltdose, holder) // 10 units of acid will not melt EVERYTHING on the tile -/datum/reagent/acid/hydrochloric //Like sulfuric, but less toxic and more acidic. +/decl/reagent/acid/hydrochloric //Like sulfuric, but less toxic and more acidic. name = "Hydrochloric Acid" description = "A very corrosive mineral acid with the molecular formula HCl." reagent_state = LIQUID @@ -486,7 +479,7 @@ taste_description = "stomach acid" fallback_specific_heat = 1.710 -/datum/reagent/acid/polyacid //Not in dispensers, but it should be here +/decl/reagent/acid/polyacid //Not in dispensers, but it should be here name = "Polytrinic Acid" description = "Polytrinic acid is a an extremely corrosive chemical substance." reagent_state = LIQUID @@ -495,13 +488,13 @@ meltdose = 4 taste_description = "acid" -/datum/reagent/acid/stomach +/decl/reagent/acid/stomach name = "Stomach Acid" taste_description = "coppery foulness" power = 2 color = "#d8ff00" -/datum/reagent/silicon +/decl/reagent/silicon name = "Silicon" description = "A tetravalent metalloid, silicon is less reactive than its chemical analog carbon." reagent_state = SOLID @@ -509,7 +502,7 @@ taste_description = "metal" fallback_specific_heat = 2.650 -/datum/reagent/sodium +/decl/reagent/sodium name = "Sodium" description = "A chemical element, readily reacts with water." reagent_state = SOLID @@ -517,7 +510,7 @@ taste_description = "salty metal" fallback_specific_heat = 0.483 -/datum/reagent/sugar +/decl/reagent/sugar name = "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 @@ -534,10 +527,10 @@ condiment_desc = "Tasty space sugar!" condiment_icon_state = "sugar" -/datum/reagent/sugar/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/sugar/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustNutritionLoss(-removed*3) -/datum/reagent/sulfur +/decl/reagent/sulfur name = "Sulfur" description = "A chemical element with a pungent smell." reagent_state = SOLID @@ -547,11 +540,11 @@ fallback_specific_heat = 0.503 -/datum/reagent/sulfur/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/sulfur/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if (alien & IS_VAURCA) M.add_chemical_effect(CE_BLOODRESTORE, 3 * removed) -/datum/reagent/tungsten +/decl/reagent/tungsten name = "Tungsten" description = "A chemical element, and a strong oxidising agent." reagent_state = SOLID diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm index e068d0fd722..a94dfb31a97 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Drugs.dm @@ -1,4 +1,4 @@ -/datum/reagent/space_drugs +/decl/reagent/space_drugs name = "Space Drugs" description = "Mercury Monolithium Sucrose, or space drugs, is a potent relaxant commonly found in Ambrosia plants. Lasts twice as long when inhaled." reagent_state = LIQUID @@ -9,13 +9,13 @@ taste_mult = 0.4 breathe_met = REM * 0.5 * 0.5 -/datum/reagent/space_drugs/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/space_drugs/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) return M.add_chemical_effect(CE_PULSE, -1) - var/power = (dose + volume)/2 //Larger the dose and volume, the more affected you are by the chemical. + var/power = (M.chem_doses[type] + REAGENT_VOLUME(holder, type))/2 //Larger the dose and volume, the more affected you are by the chemical. M.druggy = max(M.druggy, power) M.add_chemical_effect(CE_PAINKILLER, 5 + round(power,5)) @@ -38,11 +38,11 @@ if(prob(3)) M.emote(pick("smile","giggle","moan","yawn","laugh","drool","twitch")) -/datum/reagent/space_drugs/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1) +/decl/reagent/space_drugs/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder) . = ..() M.hallucination = max(M.hallucination, 30 * scale) -/datum/reagent/serotrotium +/decl/reagent/serotrotium name = "Serotrotium" description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans." reagent_state = LIQUID @@ -52,7 +52,7 @@ taste_description = "bitterness" fallback_specific_heat = 1.2 -/datum/reagent/serotrotium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/serotrotium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) return @@ -60,7 +60,7 @@ M.emote(pick("twitch", "drool", "moan", "gasp")) return -/datum/reagent/cryptobiolin +/decl/reagent/cryptobiolin name = "Cryptobiolin" description = "Cryptobiolin causes confusion and dizzyness." reagent_state = LIQUID @@ -69,7 +69,7 @@ overdose = REAGENTS_OVERDOSE taste_description = "sourness" -/datum/reagent/cryptobiolin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/cryptobiolin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) return @@ -78,7 +78,7 @@ M.add_chemical_effect(CE_HALLUCINATE, 1) M.confused = max(M.confused, 20) -/datum/reagent/impedrezene +/decl/reagent/impedrezene name = "Impedrezene" description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions." reagent_state = LIQUID @@ -86,7 +86,7 @@ overdose = REAGENTS_OVERDOSE taste_description = "numbness" -/datum/reagent/impedrezene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/impedrezene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.jitteriness = max(M.jitteriness - 5, 0) M.confused = max(M.confused, 10) if(prob(80)) @@ -96,7 +96,7 @@ if(prob(10)) M.emote("drool") -/datum/reagent/mindbreaker +/decl/reagent/mindbreaker name = "Mindbreaker Toxin" description = "An incredibly potent hallucinogen designed to wreak havoc on the brain, resulting in disturbing hallucinations with long-term impacts on those given the drug - this drug is not pleasant, thus the name, and only hardcore addicts use the drug recreationally." reagent_state = LIQUID @@ -105,13 +105,13 @@ overdose = REAGENTS_OVERDOSE taste_description = "sourness" -/datum/reagent/mindbreaker/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mindbreaker/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.hallucination = max(M.hallucination, 100) M.add_chemical_effect(CE_HALLUCINATE, 2) if(prob(10)) M.add_chemical_effect(CE_NEUROTOXIC, 5*removed) -/datum/reagent/psilocybin +/decl/reagent/psilocybin name = "Psilocybin" description = "A strong psychotropic derived from certain species of mushroom." color = "#E700E7" @@ -120,12 +120,13 @@ taste_description = "mushroom" fallback_specific_heat = 1.2 -/datum/reagent/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) return M.druggy = max(M.druggy, 30) M.add_chemical_effect(CE_HALLUCINATE, 1) + var/dose = M.chem_doses[type] if(dose < 1) M.apply_effect(3, STUTTER) M.make_dizzy(5) @@ -148,7 +149,7 @@ if(prob(15)) M.emote(pick("twitch", "giggle")) -/datum/reagent/raskara_dust +/decl/reagent/raskara_dust name = "Raskara Dust" description = "A powdery narcotic found in the gang-ridden slums of Biesel and Sol. Known for it's relaxing poperties that cause trance-like states when inhaled. Casual users tend to snort or inhale, while hardcore users inject." reagent_state = SOLID @@ -159,23 +160,23 @@ breathe_met = REM * 0.2 ingest_met = REM * 0.3 -/datum/reagent/raskara_dust/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/raskara_dust/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 10) M.drowsyness += 1 * removed -/datum/reagent/raskara_dust/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/raskara_dust/affect_breathe(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 25) M.drowsyness += 2 * removed if(prob(5)) M.emote("cough") -/datum/reagent/raskara_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/raskara_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 50) M.drowsyness += 3 * removed if(prob(5)) M.emote("twitch") -/datum/reagent/night_juice +/decl/reagent/night_juice name = "Nightlife" description = "A liquid narcotic commonly used by the more wealthy drug-abusing citizens of the Eridani Federation. Works as a potent stimulant that causes extreme awakefulness. Lethal in high doses." reagent_state = LIQUID @@ -185,28 +186,31 @@ breathe_met = REM * 0.1 breathe_mul = 0.5 ingest_mul = 0.125 - var/special_counter = 0 -/datum/reagent/night_juice/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/night_juice/initialize_data(newdata, datum/reagents/holder) + . = ..() + LAZYSET(., "special", 0) + +/decl/reagent/night_juice/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(!istype(M)) return - special_counter += (volume/10)*removed + holder.reagent_data[type]["special"] += (REAGENT_VOLUME(holder, type)/10)*removed - M.make_jittery(5 + special_counter) - M.drowsyness = max(0,M.drowsyness - (1 + special_counter*0.1)) - if(special_counter > 5) + M.make_jittery(5 + holder.reagent_data[type]["special"]) + M.drowsyness = max(0,M.drowsyness - (1 + holder.reagent_data[type]["special"]*0.1)) + if(holder.reagent_data[type]["special"] > 5) M.add_chemical_effect(CE_SPEEDBOOST, 1) - M.apply_effect(1 + special_counter*0.25, STUTTER) - M.druggy = max(M.druggy, special_counter*0.25) - M.hallucination = max(M.hallucination, special_counter*5 - 100) - M.make_jittery(special_counter) - if(prob(special_counter)) + M.apply_effect(1 + holder.reagent_data[type]["special"]*0.25, STUTTER) + M.druggy = max(M.druggy, holder.reagent_data[type]["special"]*0.25) + M.hallucination = max(M.hallucination, holder.reagent_data[type]["special"]*5 - 100) + M.make_jittery(holder.reagent_data[type]["special"]) + if(prob(holder.reagent_data[type]["special"])) M.emote("twitch") var/obj/item/organ/H = M.internal_organs_by_name[BP_HEART] - H.take_damage(special_counter * removed * 0.025) + H.take_damage(holder.reagent_data[type]["special"] * removed * 0.025) -/datum/reagent/guwan_painkillers +/decl/reagent/guwan_painkillers name = "Tremble" description = "An ancient tribal Unathi narcotic based on the outer gel layer of the seeds of a poisonous flower. The chemical itself acts as a very potent omni-healer when consumed, however as the chemical metabolizes, it causes immense and cripling pain." reagent_state = LIQUID @@ -216,11 +220,12 @@ overdose = 10 fallback_specific_heat = 1 -/datum/reagent/guwan_painkillers/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - affect_ingest(M,alien,removed*0.5) +/decl/reagent/guwan_painkillers/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + affect_ingest(M, alien, removed*0.5, holder) -/datum/reagent/guwan_painkillers/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - if(dose > 5 && volume <= 3) +/decl/reagent/guwan_painkillers/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + var/dose = M.chem_doses[type] + if(dose > 5 && REAGENT_VOLUME(holder, type) <= 3) M.adjustHalLoss(removed*300) //So oxycomorphine can't be used with it. else if(dose > 5) @@ -230,18 +235,17 @@ M.add_chemical_effect(CE_PAINKILLER, 10) M.heal_organ_damage(2 * removed,2 * removed) -/datum/reagent/toxin/stimm //Homemade Hyperzine, ported from Polaris +/decl/reagent/toxin/stimm //Homemade Hyperzine, ported from Polaris name = "Stimm" description = "A homemade stimulant with some serious side-effects." taste_description = "sweetness" taste_mult = 1.8 color = "#d0583a" - var/datum/modifier = null metabolism = REM * 3 overdose = 10 strength = 3 -/datum/reagent/toxin/stimm/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/stimm/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien == IS_TAJARA) removed *= 1.25 ..() @@ -250,15 +254,9 @@ if(prob(5)) // average of 6 brute every 20 seconds. M.visible_message("[M] shudders violently.", "You shudder uncontrollably, it hurts.") M.take_organ_damage(6 * removed, 0) - M.add_chemical_effect(CE_SPEEDBOOST, 1) - if (!modifier) - modifier = M.add_modifier(/datum/modifier/stimulant, MODIFIER_REAGENT, src, _strength = 1, override = MODIFIER_OVERRIDE_STRENGTHEN) + M.add_up_to_chemical_effect(CE_SPEEDBOOST, 1) -/datum/reagent/toxin/stimm/Destroy() - QDEL_NULL(modifier) - return ..() - -/datum/reagent/toxin/lean +/decl/reagent/toxin/lean name = "Lean" description = "A mixture of cough syrup, space-up, and sugar." taste_description = "sickly-sweet soda" @@ -271,7 +269,7 @@ glass_name = "glass of purple drank" glass_desc = "Bottoms up." -/datum/reagent/toxin/lean/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/lean/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.hallucination = max(M.hallucination, 40) M.add_chemical_effect(CE_PAINKILLER, 40) // basically like Perconol, but a bit worse // doesn't make you vomit, though @@ -284,14 +282,14 @@ if(prob(50)) M.drowsyness = max(M.drowsyness, 3) -/datum/reagent/toxin/krok +/decl/reagent/toxin/krok name = "Krok Juice" description = "An advanced Eridanian variant of ancient krokodil, known for causing prosthetic malfunctions." strength = 3 metabolism = REM overdose = 15 -/datum/reagent/toxin/krok/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/krok/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(!istype(H)) return @@ -313,7 +311,7 @@ if(eyes.status & ORGAN_ROBOT) M.hallucination = max(M.hallucination, 40) -/datum/reagent/wulumunusha +/decl/reagent/wulumunusha name = "Wulumunusha Extract" description = "The extract of the wulumunusha fruit, it can cause hallucinations and muteness." color = "#61E2EC" @@ -321,10 +319,10 @@ fallback_specific_heat = 1 overdose = 10 -/datum/reagent/wulumunusha/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/wulumunusha/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.druggy = max(M.druggy, 100) M.silent = max(M.silent, 5) -/datum/reagent/wulumunusha/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1) +/decl/reagent/wulumunusha/overdose(var/mob/living/carbon/M, var/alien, var/removed = 0, var/scale = 1, var/datum/reagents/holder) if(isskrell(M)) - M.hallucination = max(M.hallucination, 10 * scale) //light hallucinations that afflict skrell \ No newline at end of file + M.hallucination = max(M.hallucination, 10 * scale) //light hallucinations that afflict skrell diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 90a3694eb7a..6691d6de353 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -1,5 +1,5 @@ /* Food */ -/datum/reagent/kois +/decl/reagent/kois name = "K'ois" description = "A thick goopy substance, rich in K'ois nutrients." metabolism = REM * 4 @@ -11,7 +11,7 @@ var/kois_type = 1 fallback_specific_heat = 0.75 -/datum/reagent/kois/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/kois/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(!ishuman(M)) return var/obj/item/organ/internal/parasite/P = M.internal_organs_by_name["blackkois"] @@ -23,11 +23,11 @@ else infect(M, alien, removed) -/datum/reagent/kois/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/kois/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(ishuman(M)) infect(M, alien, removed) -/datum/reagent/kois/proc/infect(var/mob/living/carbon/human/H, var/alien, var/removed) +/decl/reagent/kois/proc/infect(var/mob/living/carbon/human/H, var/alien, var/removed) var/obj/item/organ/internal/parasite/P = H.internal_organs_by_name["blackkois"] if((alien != IS_VAURCA) && !(istype(P) && P.stage >= 3)) H.adjustToxLoss(1 * removed) @@ -43,7 +43,7 @@ var/obj/item/organ/internal/parasite/blackkois/infest = new() infest.replaced(H, affected) -/datum/reagent/kois/clean +/decl/reagent/kois/clean name = "Filtered K'ois" description = "A strange, ketchup-like substance, filled with K'ois nutrients." color = "#ece9dd" @@ -51,7 +51,7 @@ kois_type = 0 fallback_specific_heat = 1 -/datum/reagent/kois/black +/decl/reagent/kois/black name = "Modified K'ois" description = "A thick goopy substance, rich in K'ois nutrients. This sample appears to be modified." color = "#31004A" @@ -60,7 +60,7 @@ fallback_specific_heat = 0.5 /* Food */ -/datum/reagent/nutriment +/decl/reagent/nutriment name = "Nutriment" description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." taste_mult = 4 @@ -78,47 +78,49 @@ taste_description = "food" fallback_specific_heat = 1.25 -/datum/reagent/nutriment/synthetic +/decl/reagent/nutriment/synthetic name = "Synthetic Nutriment" description = "A cheaper alternative to actual nutriment." taste_description = "cheap food" nutriment_factor = 10 attrition_factor = (REM * 4)/BASE_MAX_NUTRITION // Increases attrition rate. -/datum/reagent/nutriment/mix_data(var/list/newdata, var/newamount) - if(!islist(newdata) || !newdata.len) - return - for(var/i in newdata) - if(!(i in data)) - data[i] = 0 - continue - data[i] += newdata[i] - var/totalFlavor = 1 - for(var/i in 1 to data.len) - totalFlavor += data[data[i]] - - if (!totalFlavor) +/decl/reagent/nutriment/mix_data(var/list/newdata, var/newamount, var/datum/reagents/holder) + if(isemptylist(newdata)) return - for(var/i in data) //cull the tasteless - if(data[i] && data[i]/totalFlavor * 100 < 10) - data[i] = null - data -= data[i] + //add the new taste data + var/list/data = ..() + for(var/taste in newdata) + if(taste in data) + data[taste] += newdata[taste] + else + data[taste] = newdata[taste] -/datum/reagent/nutriment/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) + //cull all tastes below 10% of total + var/totalFlavor = 0 + for(var/taste in data) + totalFlavor += data[taste] + if(totalFlavor) + for(var/taste in data) //cull the tasteless + if(data[taste] && data[taste]/totalFlavor < 0.1) + data -= taste + . = data + +/decl/reagent/nutriment/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(injectable) - affect_ingest(M, alien, removed) + affect_ingest(M, alien, removed, holder) -/datum/reagent/nutriment/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/nutriment/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(!istype(M)) return var/obj/item/organ/internal/parasite/P = M.internal_organs_by_name["blackkois"] if((alien == IS_VAURCA) || (istype(P) && P.stage >= 3)) M.adjustToxLoss(1.5 * removed) else if(alien != IS_UNATHI) - digest(M,removed) + digest(M,removed, holder = holder) -/datum/reagent/nutriment/proc/digest(var/mob/living/carbon/M, var/removed) +/decl/reagent/nutriment/proc/digest(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder) M.heal_organ_damage(regen_factor * removed, 0) M.adjustNutritionLoss(-nutriment_factor * removed) M.nutrition_attrition_rate = Clamp(M.nutrition_attrition_rate + attrition_factor, 1, 2) @@ -132,57 +134,49 @@ Coatings have both a raw and a cooked image. Raw coating is generally unhealthy Generally coatings are intended for deep frying foods */ -/datum/reagent/nutriment/coating +/decl/reagent/nutriment/coating nutriment_factor = 6 //Less dense than the food itself, but coatings still add extra calories - var/messaged = 0 var/icon_raw var/icon_cooked var/coated_adj = "coated" var/cooked_name = "coating" taste_description = "some sort of frying coating" -/datum/reagent/nutriment/coating/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/nutriment/coating/initial_effect(mob/living/carbon/M, alien, datum/reagents/holder) + . = ..() + to_chat(M, "Ugh, this raw [name] tastes disgusting.") - //We'll assume that the batter isnt going to be regurgitated and eaten by someone else. Only show this once - if (data["cooked"] != 1) - if (!messaged) - to_chat(M, "Ugh, this raw [name] tastes disgusting.") - nutriment_factor *= 0.5 - messaged = 1 +/decl/reagent/nutriment/coating/digest(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder) + var/nut_fact = holder.reagent_data[type]["cooked"] ? nutriment_factor : nutriment_factor / 2 // it's the nut fact + M.heal_organ_damage(regen_factor * removed, 0) + M.adjustNutritionLoss(-nut_fact * removed) + M.nutrition_attrition_rate = Clamp(M.nutrition_attrition_rate + attrition_factor, 1, 2) + M.add_chemical_effect(CE_BLOODRESTORE, blood_factor * removed) + M.intoxication -= min(M.intoxication,nut_fact*removed*0.05) //Nutrients can absorb alcohol. +/decl/reagent/nutriment/coating/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if (!holder.reagent_data[type]["cooked"]) //Raw coatings will sometimes cause vomiting if (ishuman(M) && prob(1)) var/mob/living/carbon/human/H = M H.delayed_vomit() - ..() + . = ..() -/datum/reagent/nutriment/coating/initialize_data(var/newdata) // Called when the reagent is created. - ..() - if (!data) - data = list() - else - if (isnull(data["cooked"])) - data["cooked"] = 0 - return - data["cooked"] = 0 - if (holder && holder.my_atom && istype(holder.my_atom,/obj/item/reagent_containers/food/snacks)) - data["cooked"] = 1 +/decl/reagent/nutriment/coating/initialize_data(var/list/newdata, var/datum/reagents/holder) // Called when the reagent is created. + var/list/data = ..() + LAZYSET(data, "cooked", istype(holder?.my_atom,/obj/item/reagent_containers/food/snacks)) + if(data["cooked"]) name = cooked_name + return data //Batter which is part of objects at compiletime spawns in a cooked state +/decl/reagent/nutriment/coating/mix_data(var/list/newdata, var/newamount, var/datum/reagents/holder) + var/list/data = ..() + LAZYSET(data, "cooked", LAZYACCESS(newdata, "cooked")) + return data -//Handles setting the temperature when oils are mixed -/datum/reagent/nutriment/coating/mix_data(var/newdata, var/newamount) - if (!data) - data = list() - - data["cooked"] = newdata["cooked"] - - return ..() - - -/datum/reagent/nutriment/coating/batter +/decl/reagent/nutriment/coating/batter name = "Batter Mix" cooked_name = "batter" color = "#f5f4e9" @@ -192,7 +186,7 @@ coated_adj = "battered" taste_description = "batter" -/datum/reagent/nutriment/coating/beerbatter +/decl/reagent/nutriment/coating/beerbatter name = "Beer Batter Mix" cooked_name = "beer batter" color = "#f5f4e9" @@ -202,57 +196,57 @@ coated_adj = "beer-battered" taste_description = "beer-batter" -/datum/reagent/nutriment/coating/beerbatter/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/nutriment/coating/beerbatter/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() M.intoxication += removed*0.02 //Very slightly alcoholic //============================== -/datum/reagent/nutriment/protein // Bad for Skrell! +/decl/reagent/nutriment/protein // Bad for Skrell! name = "Animal Protein" color = "#440000" blood_factor = 3 taste_description = "meat" -/datum/reagent/nutriment/protein/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/nutriment/protein/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien && alien == IS_UNATHI) - digest(M,removed) + digest(M,removed, holder = holder) return ..() -/datum/reagent/nutriment/protein/tofu //Good for Skrell! +/decl/reagent/nutriment/protein/tofu //Good for Skrell! name = "Tofu Protein" color = "#fdffa8" taste_description = "tofu" -/datum/reagent/nutriment/protein/seafood // Good for Skrell! +/decl/reagent/nutriment/protein/seafood // Good for Skrell! name = "Seafood Protein" color = "#f5f4e9" taste_description = "fish" -/datum/reagent/nutriment/protein/seafood/mollusc +/decl/reagent/nutriment/protein/seafood/mollusc name = "Mollusc Protein" taste_description = "cold, bitter slime" hydration_factor = 6 -/datum/reagent/nutriment/protein/egg // Also bad for skrell. +/decl/reagent/nutriment/protein/egg // Also bad for skrell. name = "Egg Yolk" color = "#FFFFAA" taste_description = "egg" -/datum/reagent/nutriment/egg/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/nutriment/egg/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien && alien == IS_UNATHI) - digest(M,removed) + digest(M, removed, holder = holder) return ..() -/datum/reagent/nutriment/protein/cheese // Also bad for skrell. +/decl/reagent/nutriment/protein/cheese // Also bad for skrell. name = "Cheese" color = "#EDB91F" taste_description = "cheese" //Fats //========================= -/datum/reagent/nutriment/triglyceride +/decl/reagent/nutriment/triglyceride name = "Triglyceride" description = "More commonly known as fat, the third macronutrient, with over double the energy content of carbs and protein" @@ -262,13 +256,13 @@ taste_description = "fat" //Unathi can digest fats too -/datum/reagent/nutriment/triglyceride/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/nutriment/triglyceride/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien && alien == IS_UNATHI) - digest(M,removed) + digest(M, removed, holder = holder) return ..() -/datum/reagent/nutriment/triglyceride/oil +/decl/reagent/nutriment/triglyceride/oil //Having this base class in case we want to add more variants of oil name = "Oil" description = "Oils are liquid fats." @@ -279,21 +273,21 @@ taste_description = "some sort of oil" taste_mult = 0.1 -/datum/reagent/nutriment/triglyceride/oil/touch_turf(var/turf/simulated/T) +/decl/reagent/nutriment/triglyceride/oil/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder) if(!istype(T)) return - if(volume >= 3) - T.wet_floor(WET_TYPE_LUBE,volume) + if(amount >= 3) + T.wet_floor(WET_TYPE_LUBE,amount) //Calculates a scaling factor for scalding damage, based on the temperature of the oil and creature's heat resistance -/datum/reagent/nutriment/triglyceride/oil/proc/heatdamage(var/mob/living/carbon/M) +/decl/reagent/nutriment/triglyceride/oil/proc/heatdamage(var/mob/living/carbon/M, var/datum/reagents/holder) var/threshold = 360//Human heatdamage threshold var/datum/species/S = M.get_species(1) if (S && istype(S)) threshold = S.heat_level_1 //If temperature is too low to burn, return a factor of 0. no damage - if (get_temperature() < threshold) + if (holder.get_temperature() < threshold) return 0 //Step = degrees above heat level 1 for 1.0 multiplier @@ -301,21 +295,9 @@ if (S && istype(S)) step = (S.heat_level_2 - S.heat_level_1)*1.5 - . = get_temperature() - threshold - . /= step - . = min(., 2.5)//Cap multiplier at 2.5 + return min((holder.get_temperature() - threshold)/step, 2.5) -/datum/reagent/nutriment/triglyceride/oil/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - var/dfactor = heatdamage(M) - if (dfactor) - M.take_organ_damage(0, removed * 1.5 * dfactor) - set_temperature(get_temperature() - (6 * removed) / (1 + volume*0.1))//Cools off as it burns you - if (lastburnmessage+100 < world.time) - to_chat(M, SPAN_DANGER("Searing hot oil burns you, wash it off quick!")) - lastburnmessage = world.time - - -/datum/reagent/nutriment/triglyceride/oil/corn +/decl/reagent/nutriment/triglyceride/oil/corn name = "Corn Oil" description = "An oil derived from various types of corn." taste_description = "corn oil" @@ -324,7 +306,7 @@ condiment_icon_state = "oliveoil" -/datum/reagent/nutriment/honey +/decl/reagent/nutriment/honey name = "Honey" description = "A golden yellow syrup, loaded with sugary sweetness." nutriment_factor = 10 @@ -332,7 +314,7 @@ taste_description = "honey" germ_adjust = 5 -/datum/reagent/nutriment/flour +/decl/reagent/nutriment/flour name = "Flour" description = "This is what you rub all over yourself to pretend to be a ghost." reagent_state = SOLID @@ -344,20 +326,20 @@ condiment_icon_state = "flour" condiment_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/nutriment/flour/touch_turf(var/turf/simulated/T) +/decl/reagent/nutriment/flour/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder) if(!istype(T, /turf/space)) if(locate(/obj/effect/decal/cleanable/flour) in T) return new /obj/effect/decal/cleanable/flour(T) -/datum/reagent/nutriment/flour/nfrihi +/decl/reagent/nutriment/flour/nfrihi name = "blizzard ear flour" taste_description = "chalky starch" color = "#DFDEA1" condiment_name = "Adhomian flour sack" -/datum/reagent/nutriment/coco +/decl/reagent/nutriment/coco name = "Coco Powder" description = "A fatty, bitter paste made from coco beans." reagent_state = SOLID @@ -366,7 +348,7 @@ taste_description = "bitterness" taste_mult = 1.3 -/datum/reagent/nutriment/soysauce +/decl/reagent/nutriment/soysauce name = "Soy Sauce" description = "A salty sauce made from the soy plant." reagent_state = LIQUID @@ -378,7 +360,7 @@ condiment_desc = "A salty soy-based flavoring." condiment_icon_state = "soysauce" -/datum/reagent/nutriment/ketchup +/decl/reagent/nutriment/ketchup name = "Ketchup" description = "Ketchup, catsup, whatever. It's tomato paste." reagent_state = LIQUID @@ -390,7 +372,7 @@ condiment_icon_state = "ketchup" condiment_center_of_mass = list("x"=16, "y"=6) -/datum/reagent/nutriment/rice +/decl/reagent/nutriment/rice name = "Rice" description = "Enjoy the great taste of nothing." reagent_state = SOLID @@ -402,7 +384,7 @@ condiment_icon_state = "rice" condiment_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/nutriment/cherryjelly +/decl/reagent/nutriment/cherryjelly name = "Cherry Jelly" description = "Totally the best. Only to be spread on foods with excellent lateral symmetry." reagent_state = LIQUID @@ -411,7 +393,7 @@ taste_description = "cherry" taste_mult = 1.3 -/datum/reagent/nutriment/virusfood +/decl/reagent/nutriment/virusfood name = "Virus Food" description = "A mixture of water, milk, and oxygen. Virus cells can use this mixture to reproduce." reagent_state = LIQUID @@ -420,27 +402,27 @@ taste_description = "vomit" taste_mult = 2 -/datum/reagent/nutriment/sprinkles +/decl/reagent/nutriment/sprinkles name = "Sprinkles" description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." nutriment_factor = 1 color = "#FF00FF" taste_description = "sweetness" -/datum/reagent/nutriment/mint +/decl/reagent/nutriment/mint name = "Mint" description = "Also known as Mentha." reagent_state = LIQUID color = "#CF3600" taste_description = "mint" -/datum/reagent/nutriment/glucose +/decl/reagent/nutriment/glucose name = "Glucose" color = "#FFFFFF" injectable = 1 taste_description = "sweetness" -/datum/reagent/lipozine // The anti-nutriment. +/decl/reagent/lipozine // The anti-nutriment. name = "Lipozine" description = "A chemical compound that causes a powerful fat-burning reaction." reagent_state = LIQUID @@ -448,17 +430,17 @@ overdose = REAGENTS_OVERDOSE taste_description = "mothballs" -/datum/reagent/lipozine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/lipozine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustNutritionLoss(10*removed) M.overeatduration = 0 -/datum/reagent/lipozine/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/lipozine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustNutritionLoss(10*removed) if(prob(2)) to_chat(M, SPAN_DANGER("You feel yourself wasting away.")) M.adjustHalLoss(10) -/datum/reagent/nutriment/barbecue +/decl/reagent/nutriment/barbecue name = "Barbecue Sauce" description = "Barbecue sauce for barbecues and long shifts." taste_description = "barbecue" @@ -468,7 +450,7 @@ condiment_name = "barbecue sauce" condiment_icon_state = "barbecue" -/datum/reagent/nutriment/garlicsauce +/decl/reagent/nutriment/garlicsauce name = "Garlic Sauce" description = "Garlic sauce, perfect for spicing up a plate of garlic." taste_description = "garlic" @@ -480,7 +462,7 @@ /* Non-food stuff like condiments */ -/datum/reagent/sodiumchloride +/decl/reagent/sodiumchloride name = "Salt" description = "A salt made of sodium chloride. Commonly used to season food." reagent_state = SOLID @@ -492,16 +474,16 @@ condiment_icon_state = "saltshakersmall" condiment_center_of_mass = list("x"=17, "y"=11) -/datum/reagent/sodiumchloride/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/sodiumchloride/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.intoxication -= min(M.intoxication,removed*2) //Salt absorbs alcohol M.adjustHydrationLoss(2*removed) -/datum/reagent/sodiumchloride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/sodiumchloride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.intoxication -= min(M.intoxication,removed*20) M.adjustHydrationLoss(20*removed) M.adjustToxLoss(removed*2) -/datum/reagent/blackpepper +/decl/reagent/blackpepper name = "Black Pepper" description = "A powder ground from peppercorns. *AAAACHOOO*" reagent_state = SOLID @@ -513,7 +495,7 @@ condiment_icon_state = "peppermillsmall" condiment_center_of_mass = list("x"=17, "y"=11) -/datum/reagent/enzyme +/decl/reagent/enzyme name = "Universal Enzyme" description = "A universal enzyme used in the preparation of certain chemicals and foods." reagent_state = LIQUID @@ -526,7 +508,7 @@ condiment_icon_state = "enzyme" condiment_center_of_mass = list("x"=18, "y"=7) -/datum/reagent/frostoil +/decl/reagent/frostoil name = "Frost Oil" description = "A special oil that chemically chills the body. Extracted from Ice Peppers." reagent_state = LIQUID @@ -540,15 +522,15 @@ condiment_desc = "Leaves the tongue numb in its passage." condiment_icon_state = "coldsauce" -/datum/reagent/frostoil/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/frostoil/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.bodytemperature = max(M.bodytemperature - 10 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) if(prob(1)) M.emote("shiver") if(istype(M, /mob/living/carbon/slime)) M.bodytemperature = max(M.bodytemperature - rand(10,20), 0) - holder.remove_reagent(/datum/reagent/capsaicin, 5) + holder.remove_reagent(/decl/reagent/capsaicin, 5) -/datum/reagent/capsaicin +/decl/reagent/capsaicin name = "Capsaicin Oil" description = "This is what makes chilis hot." reagent_state = LIQUID @@ -566,17 +548,19 @@ var/slime_temp_adj = 10 -/datum/reagent/capsaicin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/capsaicin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustToxLoss(0.5 * removed) -/datum/reagent/capsaicin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/capsaicin/initial_effect(var/mob/living/carbon/M, var/alien) + to_chat(M, discomfort_message) + +/decl/reagent/capsaicin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(ishuman(M)) var/mob/living/carbon/human/H = M if(!H.can_feel_pain()) return - if(dose < agony_dose) - if(prob(5) || dose == metabolism) //dose == metabolism is a very hacky way of forcing the message the first time this procs - to_chat(M, discomfort_message) + if(M.chem_doses[type] < agony_dose && prob(5)) + to_chat(M, discomfort_message) else M.apply_effect(agony_amount, PAIN, 0) if(prob(5)) @@ -584,12 +568,12 @@ to_chat(M, "You feel like your insides are burning!") if(istype(M, /mob/living/carbon/slime)) M.bodytemperature += rand(0, 15) + slime_temp_adj - holder.remove_reagent(/datum/reagent/frostoil, 5) + holder.remove_reagent(/decl/reagent/frostoil, 5) #define EYES_PROTECTED 1 #define EYES_MECH 2 -/datum/reagent/capsaicin/condensed +/decl/reagent/capsaicin/condensed name = "Condensed Capsaicin" description = "A chemical agent used for self-defense and in police work." taste_mult = 10 @@ -602,7 +586,7 @@ slime_temp_adj = 15 fallback_specific_heat = 4 -/datum/reagent/capsaicin/condensed/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/capsaicin/condensed/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/eyes_covered = 0 var/mouth_covered = 0 var/no_pain = 0 @@ -658,25 +642,22 @@ M.visible_message("[M] [pick("coughs!","coughs hysterically!","splutters!")]") M.apply_effect(40, PAIN, 0) -/datum/reagent/capsaicin/condensed/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/capsaicin/condensed/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(ishuman(M)) var/mob/living/carbon/human/H = M if(!H.can_feel_pain()) return - if(dose == metabolism) - to_chat(M, "You feel like your insides are burning!") - else - M.apply_effect(4, PAIN, 0) - if(prob(5)) - M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", "You feel like your insides are burning!") + M.apply_effect(4, PAIN, 0) + if(prob(5)) + M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", "You feel like your insides are burning!") if(istype(M, /mob/living/carbon/slime)) M.bodytemperature += rand(15, 30) - holder.remove_reagent(/datum/reagent/frostoil, 5) + holder.remove_reagent(/decl/reagent/frostoil, 5) #undef EYES_PROTECTED #undef EYES_MECH -/datum/reagent/spacespice +/decl/reagent/spacespice name = "Space Spice" description = "An exotic blend of spices for cooking. It must flow." reagent_state = SOLID @@ -688,7 +669,7 @@ condiment_icon_state = "spacespicebottle" condiment_center_of_mass = list("x"=16, "y"=10) -/datum/reagent/browniemix +/decl/reagent/browniemix name = "Brownie Mix" description = "A dry mix for making delicious brownies." reagent_state = SOLID @@ -697,7 +678,7 @@ /* Drinks */ -/datum/reagent/drink +/decl/reagent/drink name = "Drink" description = "Uh, some kind of drink." reagent_state = LIQUID @@ -710,27 +691,20 @@ var/adj_sleepy = 0 var/adj_temp = 0 //do NOT use for temp changes based on the temperature of the drinks, only for things such as spices. var/caffeine = 0 // strength of stimulant effect, since so many drinks use it - var/datum/modifier/modifier = null unaffected_species = IS_MACHINE var/blood_to_ingest_scale = 2 fallback_specific_heat = 1.75 -/datum/reagent/drink/Destroy() - if (modifier) - QDEL_NULL(modifier) - return ..() +/decl/reagent/drink/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + digest(M,alien,removed * blood_to_ingest_scale, FALSE, holder) -/datum/reagent/drink/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - digest(M,alien,removed * blood_to_ingest_scale, FALSE) +/decl/reagent/drink/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + digest(M, alien, removed, holder = holder) -/datum/reagent/drink/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - digest(M,alien,removed) - -/datum/reagent/drink/proc/digest(var/mob/living/carbon/M, var/alien, var/removed, var/add_nutrition = TRUE) +/decl/reagent/drink/proc/digest(var/mob/living/carbon/M, var/alien, var/removed, var/add_nutrition = TRUE, var/datum/reagents/holder) if(alien != IS_DIONA) if (caffeine) - if(!modifier) - modifier = M.add_modifier(/datum/modifier/stimulant, MODIFIER_REAGENT, src, _strength = caffeine, override = MODIFIER_OVERRIDE_STRENGTHEN) + M.add_up_to_chemical_effect(CE_SPEEDBOOST, caffeine) M.add_chemical_effect(CE_PULSE, 1) M.dizziness = max(0, M.dizziness + adj_dizzy) M.drowsyness = max(0, M.drowsyness + adj_drowsy) @@ -746,7 +720,7 @@ M.bodytemperature = min(310, M.bodytemperature - (adj_temp * TEMPERATURE_DAMAGE_COEFFICIENT)) // Juices -/datum/reagent/drink/banana +/decl/reagent/drink/banana name = "Banana Juice" description = "The raw essence of a banana." color = "#C3AF00" @@ -756,7 +730,7 @@ glass_name = "glass of banana juice" glass_desc = "The raw essence of a banana. HONK!" -/datum/reagent/drink/berryjuice +/decl/reagent/drink/berryjuice name = "Berry Juice" description = "A delicious blend of several different kinds of berries." color = "#990066" @@ -766,7 +740,7 @@ glass_name = "glass of berry juice" glass_desc = "Berry juice. Or maybe it's jam. Who cares?" -/datum/reagent/drink/carrotjuice +/decl/reagent/drink/carrotjuice name = "Carrot juice" description = "It is just like a carrot but without crunching." color = "#FF8C00" // rgb: 255, 140, 0 @@ -776,12 +750,13 @@ glass_name = "glass of carrot juice" glass_desc = "It is just like a carrot but without crunching." -/datum/reagent/drink/carrotjuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/carrotjuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() - if(alien != IS_DIONA) - M.reagents.add_reagent(/datum/reagent/oculine, removed * 0.2) + if(alien == IS_DIONA) + return + holder.add_reagent(/decl/reagent/oculine, removed * 0.2) -/datum/reagent/drink/grapejuice +/decl/reagent/drink/grapejuice name = "Grape Juice" description = "It's grrrrrape!" color = "#863333" @@ -791,7 +766,7 @@ glass_name = "glass of grape juice" glass_desc = "It's grrrrrape!" -/datum/reagent/drink/lemonjuice +/decl/reagent/drink/lemonjuice name = "Lemon Juice" description = "This juice is VERY sour." color = "#AFAF00" @@ -801,7 +776,7 @@ glass_name = "glass of lemon juice" glass_desc = "Sour..." -/datum/reagent/drink/limejuice +/decl/reagent/drink/limejuice name = "Lime Juice" description = "The sweet-sour juice of limes." color = "#365E30" @@ -812,7 +787,7 @@ glass_name = "glass of lime juice" glass_desc = "A glass of sweet-sour lime juice" -/datum/reagent/drink/orangejuice +/decl/reagent/drink/orangejuice name = "Orange Juice" description = "Both delicious AND rich in Vitamin C, what more do you need?" color = "#E78108" @@ -822,12 +797,13 @@ glass_name = "glass of orange juice" glass_desc = "Vitamins! Yay!" -/datum/reagent/drink/orangejuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/orangejuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() - if(alien != IS_DIONA) - M.adjustOxyLoss(-2 * removed) + if(alien == IS_DIONA) + return + M.adjustOxyLoss(-2 * removed) -/datum/reagent/toxin/poisonberryjuice // It has more in common with toxins than drinks... but it's a juice +/decl/reagent/toxin/poisonberryjuice // It has more in common with toxins than drinks... but it's a juice name = "Poison Berry Juice" description = "A tasty juice blended from various kinds of very deadly and toxic berries." color = "#863353" @@ -838,7 +814,7 @@ glass_name = "glass of poison berry juice" glass_desc = "A glass of deadly juice." -/datum/reagent/drink/potatojuice +/decl/reagent/drink/potatojuice name = "Potato Juice" description = "Juice of the potato. Bleh." nutrition = 2 @@ -849,7 +825,7 @@ glass_name = "glass of potato juice" glass_desc = "Juice from a potato. Bleh." -/datum/reagent/drink/tomatojuice +/decl/reagent/drink/tomatojuice name = "Tomato Juice" description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?" color = "#731008" @@ -859,11 +835,11 @@ glass_name = "glass of tomato juice" glass_desc = "Are you sure this is tomato juice?" -/datum/reagent/drink/tomatojuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/tomatojuice/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() M.heal_organ_damage(0, 0.1 * removed) -/datum/reagent/drink/watermelonjuice +/decl/reagent/drink/watermelonjuice name = "Watermelon Juice" description = "Delicious juice made from watermelon." color = "#B83333" @@ -873,7 +849,7 @@ glass_name = "glass of watermelon juice" glass_desc = "Delicious juice made from watermelon." -/datum/reagent/drink/pineapplejuice +/decl/reagent/drink/pineapplejuice name = "Pineapple Juice" description = "From freshly canned pineapples." color = "#FFFF00" @@ -883,7 +859,7 @@ glass_name = "glass of pineapple juice" glass_desc = "What the hell is this?" -/datum/reagent/drink/earthenrootjuice +/decl/reagent/drink/earthenrootjuice name = "Earthen-Root Juice" description = "Juice extracted from earthen-root, a plant native to Adhomai." color = "#4D8F53" @@ -893,7 +869,7 @@ glass_name = "glass of earthen-root juice" glass_desc = "Juice extracted from earthen-root, a plant native to Adhomai." -/datum/reagent/drink/garlicjuice +/decl/reagent/drink/garlicjuice name = "Garlic Juice" description = "Who would even drink this?" taste_description = "garlic" @@ -905,7 +881,7 @@ germ_adjust = 7.5 // has allicin, an antibiotic -/datum/reagent/drink/onionjuice +/decl/reagent/drink/onionjuice name = "Onion Juice" description = "Juice from an onion, for when you need to cry." taste_description = "onion" @@ -915,7 +891,7 @@ glass_name = "glass of onion juice" glass_desc = "Juice from an onion, for when you need to cry." -/datum/reagent/drink/applejuice +/decl/reagent/drink/applejuice name = "Apple Juice" description = "Juice from an apple. The most basic beverage you can imagine." taste_description = "apple juice" @@ -925,7 +901,7 @@ glass_name = "glass of apple juice" glass_desc = "Juice from an apple. The most basic beverage you can imagine." -/datum/reagent/drink/dynjuice +/decl/reagent/drink/dynjuice name = "Dyn Juice" description = "Juice from a dyn leaf. Good for you, but normally not consumed undiluted." taste_description = "astringent menthol" @@ -935,7 +911,7 @@ glass_name = "glass of dyn juice" glass_desc = "Juice from a dyn leaf. Good for you, but normally not consumed undiluted." -/datum/reagent/drink/dynjuice/hot +/decl/reagent/drink/dynjuice/hot name = "Dyn Tea" taste_description = "peppermint water" description = "An old-fashioned, but traditional Skrell drink with documented medicinal properties." @@ -944,7 +920,7 @@ glass_name = "cup of dyn tea" glass_desc = "An old-fashioned, but traditional Skrell drink with documented medicinal properties." -/datum/reagent/drink/dynjuice/cold +/decl/reagent/drink/dynjuice/cold name = "Dyn Ice Tea" taste_description = "fizzy mint tea" description = "A modern spin on an old formula, popular among Skrell youngsters. Good for you." @@ -955,7 +931,7 @@ // Everything else -/datum/reagent/drink/milk +/decl/reagent/drink/milk name = "Milk" description = "An opaque white liquid produced by the mammary glands of mammals." color = "#DFDFDF" @@ -967,13 +943,13 @@ default_temperature = T0C + 5 -/datum/reagent/drink/milk/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/milk/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.heal_organ_damage(0.1 * removed, 0) - holder.remove_reagent(/datum/reagent/capsaicin, 10 * removed) + holder.remove_reagent(/decl/reagent/capsaicin, 10 * removed) -/datum/reagent/drink/milk/cream +/decl/reagent/drink/milk/cream name = "Cream" description = "The fatty, still liquid part of milk. Why don't you mix this with sum scotch, eh?" color = "#DFD7AF" @@ -983,7 +959,7 @@ glass_name = "glass of cream" glass_desc = "Ewwww..." -/datum/reagent/drink/milk/soymilk +/decl/reagent/drink/milk/soymilk name = "Soy Milk" description = "An opaque white liquid made from soybeans." color = "#DFDFC7" @@ -993,19 +969,19 @@ glass_name = "glass of soy milk" glass_desc = "White and nutritious soy goodness!" -/datum/reagent/drink/milk/adhomai +/decl/reagent/drink/milk/adhomai name = "Fatshouters Milk" description = "An opaque white liquid produced by the mammary glands of native adhomian animal." taste_description = "fatty milk" -/datum/reagent/drink/milk/adhomai/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/milk/adhomai/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(ishuman(M)) var/mob/living/carbon/human/H = M if(alien != IS_TAJARA && prob(5)) H.delayed_vomit() -/datum/reagent/drink/milk/adhomai/fermented +/decl/reagent/drink/milk/adhomai/fermented name = "Fermented Fatshouters Milk" description = "A tajaran made fermented dairy product, traditionally consumed by nomadic population of Adhomai." taste_description = "sour milk" @@ -1013,7 +989,7 @@ glass_name = "glass of fermented fatshouters milk" glass_desc = "A tajaran made fermented dairy product, traditionally consumed by nomadic population of Adhomai." -/datum/reagent/drink/milk/beetle +/decl/reagent/drink/milk/beetle name = "Hakhma Milk" description = "A milky substance extracted from the brood sac of the viviparous Hakhma, often consumed by Offworlders and Scarabs." nutrition = 4 @@ -1023,7 +999,7 @@ glass_name = "glass of hakhma milk" glass_desc = "A milky substance extracted from the brood sac of the viviparous Hakhma, often consumed by Offworlders and Scarabs." -/datum/reagent/drink/tea +/decl/reagent/drink/tea name = "Tea" description = "Tasty black tea, it has antioxidants, it's good for you!" color = "#101000" @@ -1038,7 +1014,7 @@ var/last_taste_time = -100 -/datum/reagent/drink/tea/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/tea/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien == IS_DIONA) if(last_taste_time + 800 < world.time) // Not to spam message to_chat(M, "Your body withers as you feel slight pain throughout.") @@ -1046,7 +1022,7 @@ metabolism = REM * 0.33 M.adjustToxLoss(1.5 * removed) -/datum/reagent/drink/icetea +/decl/reagent/drink/icetea name = "Iced Tea" description = "No relation to a certain rap artist/ actor." color = "#984707" @@ -1059,7 +1035,7 @@ //Hipster tea and cider drinks to go along with hipster coffee drinks -/datum/reagent/drink/tea/chaitea +/decl/reagent/drink/tea/chaitea name = "Chai Tea" description = "A tea spiced with cinnamon and cloves." color = "#DBAD81" @@ -1069,7 +1045,7 @@ glass_name = "cup of chai tea" glass_desc = "A tea spiced with cinnamon and cloves." -/datum/reagent/drink/tea/coco_chaitea +/decl/reagent/drink/tea/coco_chaitea name = "Chocolate Chai" description = "A surprisingly pleasant mix of chocolate and spice." color = "#664300" @@ -1079,7 +1055,7 @@ glass_name = "cup of chocolate chai tea" glass_desc = "A surprisingly pleasant mix of chocolate and spice." -/datum/reagent/drink/tea/chaitealatte +/decl/reagent/drink/tea/chaitealatte name = "Chai Latte" description = "A frothy spiced tea." color = "#DBAD81" @@ -1089,14 +1065,14 @@ glass_name = "cup of chai latte" glass_desc = "For when you need the energy to yell at the barista for making your drink wrong." -/datum/reagent/drink/tea/chaitealatte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) //milk effects +/decl/reagent/drink/tea/chaitealatte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) //milk effects ..() if(alien != IS_DIONA) M.heal_organ_damage(0.1 * removed, 0) - holder.remove_reagent(/datum/reagent/capsaicin, 10 * removed) + holder.remove_reagent(/decl/reagent/capsaicin, 10 * removed) -/datum/reagent/drink/tea/coco_chailatte +/decl/reagent/drink/tea/coco_chailatte name = "Chocolate Chai Latte" description = "Sweet, liquid chocolate. Have a cup of this and maybe you'll calm down." color = "#664300" @@ -1106,13 +1082,13 @@ glass_name = "cup of chocolate chai latte" glass_desc = "Sweet, liquid chocolate. Have a cup of this and maybe you'll calm down." -/datum/reagent/drink/tea/coco_chailatte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) //milk effects +/decl/reagent/drink/tea/coco_chailatte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) //milk effects ..() if(alien != IS_DIONA) M.heal_organ_damage(0.1 * removed, 0) - holder.remove_reagent(/datum/reagent/capsaicin, 10 * removed) + holder.remove_reagent(/decl/reagent/capsaicin, 10 * removed) -/datum/reagent/drink/tea/cofftea +/decl/reagent/drink/tea/cofftea name = "Cofftea" description = "The only neutral ground in the tea versus coffee debate." color = "#292303" @@ -1126,7 +1102,7 @@ glass_name = "cup of cofftea" glass_desc = "The only neutral ground in the tea versus coffee debate." -/datum/reagent/drink/tea/bureacratea +/decl/reagent/drink/tea/bureacratea name = "Bureacratea" description = "An Eridani favorite for long nights of contract review." color = "#2B1902" @@ -1140,7 +1116,7 @@ glass_name = "cup of bureacratea" glass_desc = "An Eridani favorite for long nights of contract review." -/datum/reagent/drink/tea/desert_tea //not in butanol path since xuizi is strength 5 by itself so the alcohol content is negligible when mixed +/decl/reagent/drink/tea/desert_tea //not in butanol path since xuizi is strength 5 by itself so the alcohol content is negligible when mixed name = "Desert Blossom Tea" description = "A simple, semi-sweet tea from Moghes, that uses a little xuizi juice for flavor." color = "#A8F062" @@ -1150,7 +1126,7 @@ glass_name = "cup of desert blossom tea" glass_desc = "A simple, semi-sweet tea from Moghes, popular with guildsmen and peasants." -/datum/reagent/drink/tea/greentea +/decl/reagent/drink/tea/greentea name = "Green Tea" description = "Tasty green tea. It's good for you!" color = "#B7C49D" @@ -1160,7 +1136,7 @@ glass_name = "cup of green tea" glass_desc = "Tasty green tea. It's good for you!" -/datum/reagent/drink/tea/halfandhalf +/decl/reagent/drink/tea/halfandhalf name = "Half and Half" description = "Tea and lemonade; not to be confused with the dairy creamer." color = "#997207" @@ -1170,7 +1146,7 @@ glass_name = "glass of half and half" glass_desc = "Tea and lemonade; not to be confused with the dairy creamer." -/datum/reagent/drink/tea/heretic_tea +/decl/reagent/drink/tea/heretic_tea name = "Heretics' Tea" description = "A non-alcoholic take on a bloody brew." color = "#820000" @@ -1181,7 +1157,7 @@ glass_name = "glass of Heretics' Tea" glass_desc = "A non-alcoholic take on a bloody brew." -/datum/reagent/drink/tea/kira_tea +/decl/reagent/drink/tea/kira_tea name = "Kira Tea" description = "A sweet take on a fizzy favorite." color = "#8A8A57" @@ -1192,7 +1168,7 @@ glass_name = "glass of kira tea" glass_desc = "A sweet take on a fizzy favorite." -/datum/reagent/drink/tea/librarian_special +/decl/reagent/drink/tea/librarian_special name = "Librarian Special" description = "Shhhhhh!" color = "#101000" @@ -1202,11 +1178,11 @@ glass_name = "cup of Librarian Special" glass_desc = "Shhhhhh!" -/datum/reagent/drink/tea/librarian_special/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/tea/librarian_special/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() M.silent += 3 -/datum/reagent/drink/tea/mars_tea +/decl/reagent/drink/tea/mars_tea name = "Martian Tea" description = "A foul-smelling brew that you probably don't want to try." color = "#101000" @@ -1216,7 +1192,7 @@ glass_name = "cup of martian tea" glass_desc = "A foul-smelling brew that you probably don't want to try." -/datum/reagent/drink/tea/mendell_tea +/decl/reagent/drink/tea/mendell_tea name = "Mendell Afternoon Tea" description = "A simple, minty tea." color = "#859466" @@ -1226,7 +1202,7 @@ glass_name = "cup of Mendell Afternoon Tea" glass_desc = "A simple, minty tea. A Biesel favorite." -/datum/reagent/drink/tea/berry_tea +/decl/reagent/drink/tea/berry_tea name = "Mixed Berry Tea" description = "Hot tea with a sweet, fruity taste!" color = "#2E0206" @@ -1236,7 +1212,7 @@ glass_name = "cup of mixed berry tea" glass_desc = "Hot tea with a sweet, fruity taste!" -/datum/reagent/drink/tea/pomegranate_icetea +/decl/reagent/drink/tea/pomegranate_icetea name = "Pomegranate Iced Tea" description = "A refreshing, fruity tea. No fruit was harmed in the making of this drink." color = "#302109" @@ -1246,7 +1222,7 @@ glass_name = "glass of pomegranate iced tea" glass_desc = "A refreshing, fruity tea. No fruit was harmed in the making of this drink." -/datum/reagent/drink/tea/portsvilleminttea +/decl/reagent/drink/tea/portsvilleminttea name = "Portsville Mint Tea" description = "A popular iced pick-me-up originating from a city in Eos, on Biesel." color = "#b6f442" @@ -1256,7 +1232,7 @@ glass_name = "glass of Portsville Mint Tea" glass_desc = "A popular iced pick-me-up originating from a city in Eos, on Biesel." -/datum/reagent/drink/tea/potatea +/decl/reagent/drink/tea/potatea name = "Potatea" description = "Why would you ever drink this?" color = "#2B2710" @@ -1267,7 +1243,7 @@ glass_name = "cup of potatea" glass_desc = "Why would you ever drink this?" -/datum/reagent/drink/tea/securitea +/decl/reagent/drink/tea/securitea name = "Securitea" description = "The safest drink around." color = "#030B36" @@ -1277,7 +1253,7 @@ glass_name = "cup of securitea" glass_desc = "Help, maint!!" -/datum/reagent/drink/tea/sleepytime_tea +/decl/reagent/drink/tea/sleepytime_tea name = "Sleepytime Tea" description = "The perfect drink to enjoy before falling asleep in your favorite chair." color = "#101000" @@ -1289,7 +1265,7 @@ glass_name = "cup of sleepytime tea" glass_desc = "The perfect drink to enjoy before falling asleep in your favorite chair." -/datum/reagent/drink/tea/hakhma_tea +/decl/reagent/drink/tea/hakhma_tea name = "Spiced Hakhma Tea" description = "A tea often brewed by Offworlders and Scarabs during important meals." color = "#8F6742" @@ -1300,13 +1276,13 @@ glass_name = "cup of spiced hakhma tea" glass_desc = "A tea often brewed by Offworlders and Scarabs during important meals." -/datum/reagent/drink/tea/hakhma_tea/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) //milk effects +/decl/reagent/drink/tea/hakhma_tea/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) //milk effects ..() if(alien != IS_DIONA) M.heal_organ_damage(0.1 * removed, 0) - holder.remove_reagent(/datum/reagent/capsaicin, 10 * removed) + holder.remove_reagent(/decl/reagent/capsaicin, 10 * removed) -/datum/reagent/drink/tea/sweet_tea +/decl/reagent/drink/tea/sweet_tea name = "Sweet Tea" description = "Hope you have a good dentist!" color = "#984707" @@ -1316,7 +1292,7 @@ glass_name = "glass of sweet tea" glass_desc = "Hope you have a good dentist!" -/datum/reagent/drink/dynjuice/thewake //dyn properties +/decl/reagent/drink/dynjuice/thewake //dyn properties name = "The Wake" description = "The tea-based alternative to a Sromshine." color = "#00E0E0" @@ -1329,7 +1305,7 @@ glass_name = "cup of The Wake" glass_desc = "Most young skrell get a kick out of letting humans try this." -/datum/reagent/drink/tea/tomatea +/decl/reagent/drink/tea/tomatea name = "Tomatea" description = "Basically tomato soup in a mug." color = "#9F3400" @@ -1339,11 +1315,11 @@ glass_name = "cup of tomatea" glass_desc = "Basically tomato soup in a mug." -/datum/reagent/drink/tea/tomatea/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/tea/tomatea/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() M.heal_organ_damage(0, 0.1 * removed) //has tomato juice -/datum/reagent/drink/tea/tropical_icetea +/decl/reagent/drink/tea/tropical_icetea name = "Tropical Iced Tea" description = "For maximum enjoyment, drink while at the beach on a warm summer day." color = "#773404" @@ -1357,7 +1333,7 @@ //Coffee //========== -/datum/reagent/drink/coffee +/decl/reagent/drink/coffee name = "Coffee" description = "Coffee is a brewed drink prepared from roasted seeds, commonly called coffee beans, of the coffee plant." color = "#482000" @@ -1373,10 +1349,10 @@ glass_name = "cup of coffee" glass_desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere." -/datum/reagent/drink/coffee/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/coffee/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(adj_temp > 0) - holder.remove_reagent(/datum/reagent/frostoil, 10 * removed) + holder.remove_reagent(/decl/reagent/frostoil, 10 * removed) if(M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) @@ -1387,11 +1363,11 @@ M.sleeping = max(0, M.sleeping - 2) M.intoxication = max(0, (M.intoxication - (removed*0.25))) -/datum/reagent/drink/coffee/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/drink/coffee/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) if(alien != IS_DIONA) M.make_jittery(5) -/datum/reagent/drink/coffee/icecoffee +/decl/reagent/drink/coffee/icecoffee name = "Frappe Coffee" description = "Coffee and ice, refreshing and cool." color = "#102838" @@ -1400,7 +1376,7 @@ glass_name = "glass of frappe coffee" glass_desc = "A drink to perk you up and refresh you!" -/datum/reagent/drink/coffee/soy_latte +/decl/reagent/drink/coffee/soy_latte name = "Soy Latte" description = "A nice and tasty beverage to enjoy while reading your hippie books." color = "#664300" @@ -1411,11 +1387,11 @@ glass_desc = "A nice and refreshing beverage to enjoy while reading." glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/soy_latte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/coffee/soy_latte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() M.heal_organ_damage(0.1 * removed, 0) -/datum/reagent/drink/coffee/cafe_latte +/decl/reagent/drink/coffee/cafe_latte name = "Cafe Latte" description = "A nice, strong and tasty beverage to enjoy while reading." color = "#664300" // rgb: 102, 67, 0 @@ -1426,11 +1402,11 @@ glass_desc = "A nice, strong and refreshing beverage to enjoy while reading." glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/cafe_latte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/coffee/cafe_latte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() M.heal_organ_damage(0.1 * removed, 0) -/datum/reagent/drink/coffee/espresso +/decl/reagent/drink/coffee/espresso name = "Espresso" description = "A strong coffee made by passing nearly boiling water through coffee seeds at high pressure." color = "#664300" // rgb: 102, 67, 0 @@ -1441,7 +1417,7 @@ glass_desc = "A strong coffee made by passing nearly boiling water through coffee seeds at high pressure." glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/freddo_espresso +/decl/reagent/drink/coffee/freddo_espresso name = "Freddo Espresso" description = "Espresso with ice cubes poured over ice." color = "#664300" // rgb: 102, 67, 0 @@ -1452,7 +1428,7 @@ glass_desc = "Espresso with ice cubes poured over ice." glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/caffe_americano +/decl/reagent/drink/coffee/caffe_americano name = "Caffe Americano" description = "Espresso diluted with hot water." color = "#664300" // rgb: 102, 67, 0 @@ -1463,7 +1439,7 @@ glass_desc = "delicious coffee" glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/flat_white +/decl/reagent/drink/coffee/flat_white name = "Flat White Espresso" description = "Espresso with a bit of steamy hot milk." color = "#664300" // rgb: 102, 67, 0 @@ -1474,7 +1450,7 @@ glass_desc = "Espresso with a bit of steamy hot milk." glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/latte +/decl/reagent/drink/coffee/latte name = "Latte" description = "A nice, strong, and refreshing beverage to enjoy while reading." color = "#664300" // rgb: 102, 67, 0 @@ -1485,11 +1461,11 @@ glass_desc = "A nice, strong, and refreshing beverage to enjoy while reading." glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/latte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/coffee/latte/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() M.heal_organ_damage(0.1 * removed, 0) -/datum/reagent/drink/coffee/latte/caramel +/decl/reagent/drink/coffee/latte/caramel name = "Caramel Latte" description = "A latte with caramel flavoring syrup added." taste_description = "bitter caramel cream" @@ -1497,7 +1473,7 @@ glass_icon_state = "caramel_latte" glass_name = "glass of caramel latte" glass_desc = "A latte with caramel syrup drizzled into it. Lovely!" -/datum/reagent/drink/coffee/latte/mocha +/decl/reagent/drink/coffee/latte/mocha name = "Mocha Latte" description = "A latte with chocolate flavoring syrup added." taste_description = "bitter chocolate cream" @@ -1505,7 +1481,7 @@ glass_icon_state = "mocha_latte" glass_name = "glass of chocolate latte" glass_desc = "A latte with chocolate syrup drizzled into it. Lovely!" -/datum/reagent/drink/coffee/latte/vanilla +/decl/reagent/drink/coffee/latte/vanilla name = "Vanilla Latte" description = "A latte with vanilla flavoring syrup added." taste_description = "bitter vanilla cream" @@ -1514,7 +1490,7 @@ glass_name = "glass of vanilla latte" glass_desc = "A latte with vanilla syrup drizzled into it. Lovely!" -/datum/reagent/drink/coffee/cappuccino +/decl/reagent/drink/coffee/cappuccino name = "Cappuccino" description = "Espresso with steamed milk foam." color = "#664300" // rgb: 102, 67, 0 @@ -1525,7 +1501,7 @@ glass_desc = "Espresso with steamed milk foam." glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/freddo_cappuccino +/decl/reagent/drink/coffee/freddo_cappuccino name = "Freddo Cappuccino" description = "Espresso with steamed milk foam, on ice." color = "#664300" // rgb: 102, 67, 0 @@ -1536,7 +1512,7 @@ glass_desc = "Espresso with steamed milk foam, on ice." glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/macchiato +/decl/reagent/drink/coffee/macchiato name = "Macchiato" description = "Espresso with milk foam." color = "#664300" // rgb: 102, 67, 0 @@ -1547,7 +1523,7 @@ glass_desc = "Espresso with milk foam." glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/mocacchino +/decl/reagent/drink/coffee/mocacchino name = "Mocacchino" description = "Espresso with hot milk and chocolate." color = "#664300" // rgb: 102, 67, 0 @@ -1558,7 +1534,7 @@ glass_desc = "Espresso with hot milk and chocolate." glass_center_of_mass = list("x"=15, "y"=9) -/datum/reagent/drink/coffee/icecoffee/psfrappe +/decl/reagent/drink/coffee/icecoffee/psfrappe name = "Pumpkin Spice Frappe" description = "A seasonal treat popular around the autumn times." color = "#9C6B19" @@ -1568,7 +1544,7 @@ glass_name = "glass of pumpkin spice frappe" glass_desc = "A seasonal treat popular around the autumn times." -/datum/reagent/drink/coffee/latte/pumpkinspice +/decl/reagent/drink/coffee/latte/pumpkinspice name = "Pumpkin Spice Latte" description = "A seasonal drink favored in autumn." color = "#9C6B19" @@ -1578,7 +1554,7 @@ glass_name = "cup of pumpkin spice latte" glass_desc = "A hot cup of pumpkin spiced coffee. Autumn really is the best season!" -/datum/reagent/drink/coffee/sadpslatte +/decl/reagent/drink/coffee/sadpslatte name = "Processed Pumpkin Latte" description = "A processed drink vaguely reminicent of autumn bliss." color = "#9C6B19" @@ -1588,7 +1564,7 @@ glass_name = "cup of cheap pumpkin latte" glass_desc = "Maybe you should just go ask the barista for something more authentic..." -/datum/reagent/drink/coffee/mars +/decl/reagent/drink/coffee/mars name = "Martian Special" description = "Black coffee, heavily peppered." taste_description = "bitter coffee, pungent black pepper and just a hint of shaky politics" @@ -1597,7 +1573,7 @@ glass_name = "cup of Martian Special" glass_desc = "Just by the pungent, sharp smell, you figure you probably don't want to drink that..." -/datum/reagent/drink/hot_coco +/decl/reagent/drink/hot_coco name = "Hot Chocolate" description = "Made with love! And cocoa beans." reagent_state = LIQUID @@ -1609,7 +1585,7 @@ glass_name = "cup of hot chocolate" glass_desc = "Made with love! And cocoa beans." -/datum/reagent/drink/sodawater +/decl/reagent/drink/sodawater name = "Soda Water" description = "A can of club soda. Why not make a scotch and soda?" color = "#619494" @@ -1622,7 +1598,7 @@ glass_name = "glass of soda water" glass_desc = "Soda water. Why not make a scotch and soda?" -/datum/reagent/drink/grapesoda +/decl/reagent/drink/grapesoda name = "Grape Soda" description = "Grapes made into a fine drank." color = "#421C52" @@ -1634,7 +1610,7 @@ glass_name = "glass of grape soda" glass_desc = "Looks like a delicious drink!" -/datum/reagent/drink/tonic +/decl/reagent/drink/tonic name = "Tonic Water" description = "It tastes strange but at least the quinine keeps the Space Malaria at bay." color = "#664300" @@ -1648,7 +1624,7 @@ glass_name = "glass of tonic water" glass_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." -/datum/reagent/drink/lemonade +/decl/reagent/drink/lemonade name = "Lemonade" description = "Oh the nostalgia..." color = "#FFFF00" @@ -1658,7 +1634,7 @@ glass_name = "glass of lemonade" glass_desc = "Oh the nostalgia..." -/datum/reagent/drink/lemonade/pink +/decl/reagent/drink/lemonade/pink name = "Pink Lemonade" description = "A fruity pink citrus drink." color = "#FFC0CB" @@ -1668,7 +1644,7 @@ glass_name = "glass of pink lemonade" glass_desc = "You feel girlier just looking at this." -/datum/reagent/drink/kiraspecial +/decl/reagent/drink/kiraspecial name = "Kira Special" description = "Long live the guy who everyone had mistaken for a girl. Baka!" color = "#CCCC99" @@ -1680,7 +1656,7 @@ glass_desc = "Long live the guy who everyone had mistaken for a girl. Baka!" glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/drink/brownstar +/decl/reagent/drink/brownstar name = "Brown Star" description = "It's not what it sounds like..." color = "#9F3400" @@ -1691,7 +1667,7 @@ glass_name = "glass of Brown Star" glass_desc = "It's not what it sounds like..." -/datum/reagent/drink/mintsyrup +/decl/reagent/drink/mintsyrup name = "Mint Syrup" description = "A simple syrup that tastes strongly of mint." color = "#539830" @@ -1702,7 +1678,7 @@ glass_desc = "Pure mint syrup. Prepare your tastebuds." glass_center_of_mass = list("x"=17, "y"=6) -/datum/reagent/drink/milkshake +/decl/reagent/drink/milkshake name = "Milkshake" description = "Glorious brainfreezing mixture." color = "#AEE5E4" @@ -1713,7 +1689,7 @@ glass_desc = "Glorious brainfreezing mixture." glass_center_of_mass = list("x"=16, "y"=7) -/datum/reagent/drink/rewriter +/decl/reagent/drink/rewriter name = "Rewriter" description = "The secret of the sanctuary of the Libarian..." color = "#485000" @@ -1726,12 +1702,12 @@ glass_desc = "The secret of the sanctuary of the Libarian..." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/drink/rewriter/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/rewriter/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.make_jittery(5) -/datum/reagent/drink/nuka_cola +/decl/reagent/drink/nuka_cola name = "Nuka Cola" description = "Cola, cola never changes." color = "#100800" @@ -1745,7 +1721,7 @@ glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland" glass_center_of_mass = list("x"=16, "y"=6) -/datum/reagent/drink/nuka_cola/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/nuka_cola/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.add_chemical_effect(CE_SPEEDBOOST, 1) @@ -1754,7 +1730,7 @@ M.dizziness += 5 M.drowsyness = 0 -/datum/reagent/drink/grenadine +/decl/reagent/drink/grenadine name = "Grenadine Syrup" description = "Made in the modern day with proper pomegranate substitute. Who uses real fruit, anyways?" color = "#FF004F" @@ -1765,7 +1741,7 @@ glass_desc = "Sweet and tangy, a bar syrup used to add color or flavor to drinks." glass_center_of_mass = list("x"=17, "y"=6) -/datum/reagent/drink/space_cola +/decl/reagent/drink/space_cola name = "Space Cola" description = "A refreshing beverage." reagent_state = LIQUID @@ -1779,7 +1755,7 @@ glass_desc = "A glass of refreshing Space Cola" glass_center_of_mass = list("x"=17, "y"=6) -/datum/reagent/drink/spacemountainwind +/decl/reagent/drink/spacemountainwind name = "Mountain Wind" description = "Blows right through you like a space wind." color = "#102000" @@ -1792,7 +1768,7 @@ glass_name = "glass of Space Mountain Wind" glass_desc = "Space Mountain Wind. As you know, there are no mountains in space, only wind." -/datum/reagent/drink/dr_gibb +/decl/reagent/drink/dr_gibb name = "Dr. Gibb" description = "A delicious blend of 42 different flavours" color = "#102000" @@ -1804,7 +1780,7 @@ glass_name = "glass of Dr. Gibb" glass_desc = "Dr. Gibb. Not as dangerous as the name might imply." -/datum/reagent/drink/root_beer +/decl/reagent/drink/root_beer name = "RnD Root Beer" description = "A classic Earth drink from the United Americas province." color = "#211100" @@ -1816,7 +1792,7 @@ glass_name = "glass of RnD Root Beer" glass_desc = "A glass of bubbly RnD Root Beer." -/datum/reagent/drink/spaceup +/decl/reagent/drink/spaceup name = "Space-Up" description = "Tastes like a hull breach in your mouth." color = "#202800" @@ -1827,7 +1803,7 @@ glass_name = "glass of Space-up" glass_desc = "Space-up. It helps keep your cool." -/datum/reagent/drink/lemon_lime +/decl/reagent/drink/lemon_lime name = "Lemon Lime" description = "A tangy substance made of 0.5% natural citrus!" color = "#878F00" @@ -1837,7 +1813,7 @@ glass_name = "glass of lemon lime soda" glass_desc = "A tangy substance made of 0.5% natural citrus!" -/datum/reagent/drink/doctorsdelight +/decl/reagent/drink/doctorsdelight name = "The Doctor's Delight" description = "A gulp a day keeps the MediBot away. That's probably for the best." reagent_state = LIQUID @@ -1852,7 +1828,7 @@ blood_to_ingest_scale = 1 -/datum/reagent/drink/doctorsdelight/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/doctorsdelight/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.adjustOxyLoss(-4 * removed) @@ -1862,7 +1838,7 @@ if(M.confused) M.confused = max(0, M.confused - 5) -/datum/reagent/drink/dry_ramen +/decl/reagent/drink/dry_ramen name = "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 @@ -1871,7 +1847,7 @@ color = "#302000" taste_description = "dry and cheap noodles" -/datum/reagent/drink/hot_ramen +/decl/reagent/drink/hot_ramen name = "Hot Ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." reagent_state = LIQUID @@ -1881,7 +1857,7 @@ adj_temp = 5 taste_description = "wet and cheap noodles" -/datum/reagent/drink/hell_ramen +/decl/reagent/drink/hell_ramen name = "Hell Ramen" description = "The noodles are boiled, the flavors are artificial, just like being back in school." reagent_state = LIQUID @@ -1891,7 +1867,7 @@ taste_description = "wet and cheap noodles on fire" adj_temp = 20 -/datum/reagent/drink/ice +/decl/reagent/drink/ice name = "Ice" description = "Frozen water, your dentist wouldn't like you chewing this." reagent_state = SOLID @@ -1906,7 +1882,7 @@ default_temperature = T0C - 10 -/datum/reagent/drink/nothing +/decl/reagent/drink/nothing name = "Nothing" description = "Absolutely nothing." taste_description = "nothing" @@ -1915,7 +1891,7 @@ glass_name = "glass of nothing" glass_desc = "Absolutely nothing." -/datum/reagent/drink/meatshake +/decl/reagent/drink/meatshake name = "Meatshake" color = "#874c20" description = "Blended meat and cream for those who want crippling heart failure down the road." @@ -1925,7 +1901,7 @@ glass_name = "Meatshake" glass_desc = "Blended meat and cream for those who want crippling health issues down the road. Has two straws for sharing! Perfect for dates!" -/datum/reagent/drink/ciderhot +/decl/reagent/drink/ciderhot name = "Apple Cider" description = "A great drink to warm up a crisp autumn afternoon!" color = "#664300" @@ -1935,7 +1911,7 @@ glass_name = "cup of apple cider" glass_desc = "A great drink to warm up a crisp autumn afternoon!" -/datum/reagent/drink/cidercold +/decl/reagent/drink/cidercold name = "Apple Cider" description = "A refreshing mug of fresh apples and cinnamon." color = "#664300" @@ -1945,7 +1921,7 @@ glass_name = "mug of apple cider" glass_desc = "A refreshing mug of fresh apples and cinnamon." -/datum/reagent/drink/cidercheap +/decl/reagent/drink/cidercheap name = "Apple Cider Juice" description = "It's just spiced up apple juice. Ugh." color = "#664300" @@ -1955,7 +1931,7 @@ glass_name = "mug of apple cider juice" glass_desc = "It's just spiced up apple juice. Sometimes the barista can't work miracles." -/datum/reagent/drink/toothpaste +/decl/reagent/drink/toothpaste name = "Toothpaste" description = "A paste commonly used in oral hygiene." reagent_state = LIQUID @@ -1969,7 +1945,7 @@ glass_desc = "Dentists recommend drinking zero glasses a day, and instead brushing normally." glass_center_of_mass = list("x"=7, "y"=8) -/datum/reagent/drink/toothpaste/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/drink/toothpaste/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(!istype(M)) return @@ -1977,7 +1953,7 @@ if(alien == IS_VAURCA) M.intoxication += (strength / 100) * removed * 3.5 -/datum/reagent/drink/toothpaste/cold_gate +/decl/reagent/drink/toothpaste/cold_gate name = "Cold Gate" description = "A C'thur Favorite, guaranteed to make even the bloodiest of warriors mandibles shimmer." strength = 25 @@ -1988,7 +1964,7 @@ glass_desc = "A C'thur Favorite, guaranteed to make even the bloodiest of warriors mandibles shimmer." glass_center_of_mass = list("x"=7, "y"=8) -/datum/reagent/drink/toothpaste/waterfresh +/decl/reagent/drink/toothpaste/waterfresh name = "Waterfresh" description = "A concoction of toothpaste and mouthwash, for when you need to show your pearly whites." strength = 40 @@ -1999,7 +1975,7 @@ glass_desc = "A concoction of toothpaste and mouthwash, for when you need to show your pearly whites. Toothbrush Included." glass_center_of_mass = list("x"=7, "y"=8) -/datum/reagent/drink/toothpaste/sedantian_firestorm +/decl/reagent/drink/toothpaste/sedantian_firestorm name = "Sedantian Firestorm" description = "Florinated phoron, is the drink suppose to be on fire?" strength = 80 @@ -2012,7 +1988,7 @@ glass_desc = "Florinated phoron, is the drink suppose to be on fire?" glass_center_of_mass = list("x"=7, "y"=8) -/datum/reagent/drink/toothpaste/kois_odyne +/decl/reagent/drink/toothpaste/kois_odyne name = "K'ois Odyne" description = "A favourite among the younger vaurca, born from an accident involving nanopaste and the repair of internal augments." strength = 60 @@ -2023,7 +1999,7 @@ glass_desc = "A favourite among the younger vaurca, born from an accident involving nanopaste and the repair of internal augments." glass_center_of_mass = list("x"=7, "y"=8) -/datum/reagent/drink/toothpaste/teathpaste +/decl/reagent/drink/toothpaste/teathpaste name = "Teathpaste" description = "A sad attempt to reduce the effects of sugary tea on your teeth." color = "#45615A" @@ -2037,7 +2013,7 @@ var/last_taste_time = -100 -/datum/reagent/drink/toothpaste/teathpaste/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/toothpaste/teathpaste/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien == IS_DIONA) if(last_taste_time + 800 < world.time) // Not to spam message to_chat(M, "Your body withers as you feel slight pain throughout.") @@ -2049,7 +2025,7 @@ // Basic -/datum/reagent/alcohol/ethanol/absinthe +/decl/reagent/alcohol/absinthe name = "Absinthe" description = "Watch out that the Green Fairy doesn't come for you!" color = "#33EE00" @@ -2061,7 +2037,7 @@ glass_desc = "Wormwood, anise, oh my." glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/ale +/decl/reagent/alcohol/ale name = "Ale" description = "A dark alchoholic beverage made by malted barley and yeast." color = "#664300" @@ -2074,7 +2050,7 @@ glass_desc = "A freezing pint of delicious ale" glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/beer +/decl/reagent/alcohol/beer name = "Beer" description = "An alcoholic beverage made from malted grains, hops, yeast, and water." color = "#664300" @@ -2088,12 +2064,12 @@ glass_desc = "A freezing pint of beer" glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/beer/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/beer/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.jitteriness = max(M.jitteriness - 3, 0) -/datum/reagent/alcohol/ethanol/bitters +/decl/reagent/alcohol/bitters name = "Aromatic Bitters" description = "A very, very concentrated and bitter herbal alcohol." color = "#223319" @@ -2105,7 +2081,7 @@ glass_desc = "A pungent glass of bitters." glass_center_of_mass = list ("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/bluecuracao +/decl/reagent/alcohol/bluecuracao name = "Blue Curacao" description = "Exotically blue, fruity drink, distilled from oranges." color = "#0000CD" @@ -2117,7 +2093,7 @@ glass_desc = "Exotically blue, fruity drink, distilled from oranges." glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/champagne +/decl/reagent/alcohol/champagne name = "Champagne" description = "A classy sparkling wine, usually found in meeting rooms and basements." color = "#EBECC0" @@ -2130,7 +2106,7 @@ glass_desc = "Off-white and bubbly. So passe." glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/cognac +/decl/reagent/alcohol/cognac name = "Cognac" description = "A sweet and strongly alchoholic drink, made after numerous distillations and years of maturing. Classy as fornication." color = "#AB3C05" @@ -2142,7 +2118,7 @@ glass_desc = "Damn, you feel like some kind of French aristocrat just by holding this." glass_center_of_mass = list("x"=16, "y"=6) -/datum/reagent/alcohol/ethanol/deadrum +/decl/reagent/alcohol/deadrum name = "Deadrum" description = "Popular with the sailors. Not very popular with everyone else." color = "#664300" @@ -2154,12 +2130,12 @@ glass_desc = "Now you want to Pray for a pirate suit, don't you?" glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/deadrum/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/deadrum/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.dizziness +=5 -/datum/reagent/alcohol/ethanol/gin +/decl/reagent/alcohol/gin name = "Gin" description = "It's gin. In space. I say, good sir." color = "#664300" @@ -2171,7 +2147,7 @@ glass_desc = "A crystal clear glass of Griffeater gin." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/victorygin +/decl/reagent/alcohol/victorygin name = "Victory Gin" description = "An oily Adhomai-based gin." color = "#664300" @@ -2183,7 +2159,7 @@ glass_desc = "It has an oily smell and doesn't taste like typical gin." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/djinntea +/decl/reagent/alcohol/djinntea name = "Djinn Tea" description = "A mildly alcoholic spin on a popular Skrell drink." color = "#84C0C0" @@ -2195,10 +2171,10 @@ glass_desc = "A mildly alcoholic spin on a popular Skrell drink. Less good for you than the original." //Base type for alchoholic drinks containing coffee -/datum/reagent/alcohol/ethanol/coffee +/decl/reagent/alcohol/coffee overdose = 45 -/datum/reagent/alcohol/ethanol/coffee/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/coffee/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.dizziness = max(0, M.dizziness - 5) @@ -2207,11 +2183,11 @@ if(M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) -/datum/reagent/alcohol/ethanol/coffee/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/alcohol/coffee/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) if(alien != IS_DIONA) M.make_jittery(5) -/datum/reagent/alcohol/ethanol/coffee/kahlua +/decl/reagent/alcohol/coffee/kahlua name = "Kahlua" description = "A widely known, Mexican coffee-flavoured liqueur. In production since 1936!" color = "#664300" @@ -2224,7 +2200,7 @@ glass_desc = "DAMN, THIS THING LOOKS ROBUST" glass_center_of_mass = list("x"=15, "y"=7) -/datum/reagent/alcohol/ethanol/makgeolli +/decl/reagent/alcohol/makgeolli name = "Makgeolli" description = "A mild Konyanger sparkling rice wine." color = "#664300" @@ -2236,7 +2212,7 @@ glass_desc = "A clear alcohol similar to sparkling wine, brewed from rice." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/melonliquor +/decl/reagent/alcohol/melonliquor name = "Melon Liquor" description = "A relatively sweet and fruity 46 proof liquor." color = "#138808" // rgb: 19, 136, 8 @@ -2248,7 +2224,7 @@ glass_desc = "A relatively sweet and fruity 46 proof liquor." glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/rum +/decl/reagent/alcohol/rum name = "Rum" description = "Yohoho and all that." color = "#664300" @@ -2260,7 +2236,7 @@ glass_desc = "Now you want to Pray for a pirate suit, don't you?" glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/sake +/decl/reagent/alcohol/sake name = "Sake" description = "Anime's favorite drink." color = "#664300" @@ -2272,7 +2248,7 @@ glass_desc = "A glass of sake." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/cloudyoran +/decl/reagent/alcohol/cloudyoran name = "Cloudy Oran" description = "Reminds Suits of home. Dregs, not so much." color = "#F6F6F6" @@ -2284,7 +2260,7 @@ glass_desc = "A frothy white beverage. Reminds Suits of home. Dregs, not so much." glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/soju +/decl/reagent/alcohol/soju name = "Soju" description = "A mild Konyanger spirit that is best described as rice vodka." color = "#664300" @@ -2296,7 +2272,7 @@ glass_desc = "A clear alcohol similar to vodka, brewed from rice." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/tequila +/decl/reagent/alcohol/tequila name = "Tequila" description = "A strong and mildly flavoured, mexican produced spirit. Feeling thirsty hombre?" color = "#FFFF91" @@ -2308,7 +2284,7 @@ glass_desc = "Now all that's missing is the weird colored shades!" glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/thirteenloko +/decl/reagent/alcohol/thirteenloko name = "Thirteen Loko" description = "A potent mixture of caffeine and alcohol." color = "#102000" @@ -2322,7 +2298,7 @@ glass_name = "glass of Thirteen Loko" glass_desc = "This is a glass of Thirteen Loko, it appears to be of the highest quality. The drink, not the glass." -/datum/reagent/alcohol/ethanol/thirteenloko/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/thirteenloko/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien == IS_DIONA) return @@ -2333,7 +2309,7 @@ M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) -/datum/reagent/alcohol/ethanol/vermouth +/decl/reagent/alcohol/vermouth name = "Vermouth" description = "You suddenly feel a craving for a martini..." color = "#91FF91" // rgb: 145, 255, 145 @@ -2346,7 +2322,7 @@ glass_desc = "You wonder why you're even drinking this straight." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/vodka +/decl/reagent/alcohol/vodka name = "Vodka" description = "Number one drink AND fueling choice for Russians worldwide." color = "#0064C8" // rgb: 0, 100, 200 @@ -2358,11 +2334,11 @@ glass_desc = "The glass contain wodka. Xynta." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/vodka/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/vodka/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() M.apply_effect(max(M.total_radiation - 1 * removed, 0), IRRADIATE, blocked = 0) -/datum/reagent/alcohol/ethanol/vodka/mushroom +/decl/reagent/alcohol/vodka/mushroom name = "Mushroom Vodka" description = "A strong drink distilled from mushrooms grown in caves. Tastes like dissatisfaction." color = "#0064C8" // rgb: 0, 100, 200 @@ -2373,7 +2349,7 @@ glass_desc = "The glass contain wodka made from mushrooms. Blyat." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/whiskey +/decl/reagent/alcohol/whiskey name = "Whiskey" description = "A superb and well-aged single-malt whiskey. Damn." color = "#664300" @@ -2385,7 +2361,7 @@ glass_desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/wine +/decl/reagent/alcohol/wine name = "Wine" description = "A premium alchoholic beverage made from distilled grape juice." color = "#7E4043" // rgb: 126, 64, 67 @@ -2399,7 +2375,7 @@ // Cocktails -/datum/reagent/alcohol/ethanol/acid_spit +/decl/reagent/alcohol/acid_spit name = "Acid Spit" description = "A drink for the daring, can be deadly if incorrectly prepared!" reagent_state = LIQUID @@ -2412,7 +2388,7 @@ glass_desc = "A drink from the company archives. Made from live aliens." glass_center_of_mass = list("x"=16, "y"=7) -/datum/reagent/alcohol/ethanol/alliescocktail +/decl/reagent/alcohol/alliescocktail name = "Allies Cocktail" description = "A drink made from your allies, not as sweet as when made from your enemies." color = "#664300" @@ -2424,7 +2400,7 @@ glass_desc = "A drink made from your allies." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/aloe +/decl/reagent/alcohol/aloe name = "Aloe" description = "So very, very, very good." color = "#664300" @@ -2436,7 +2412,7 @@ glass_desc = "Very, very, very good." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/amasec +/decl/reagent/alcohol/amasec name = "Amasec" description = "Official drink of the Gun Club!" reagent_state = LIQUID @@ -2449,7 +2425,7 @@ glass_desc = "Always handy before COMBAT!!!" glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/andalusia +/decl/reagent/alcohol/andalusia name = "Andalusia" description = "A nice, strangely named drink." color = "#664300" @@ -2461,7 +2437,7 @@ glass_desc = "A nice, strange named drink." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/antifreeze +/decl/reagent/alcohol/antifreeze name = "Anti-freeze" description = "Ultimate refreshment." color = "#664300" @@ -2475,7 +2451,7 @@ glass_desc = "The ultimate refreshment." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/atomicbomb +/decl/reagent/alcohol/atomicbomb name = "Atomic Bomb" description = "Nuclear proliferation never tasted so good." reagent_state = LIQUID @@ -2489,7 +2465,7 @@ glass_desc = "We cannot take legal responsibility for your actions after imbibing." glass_center_of_mass = list("x"=15, "y"=7) -/datum/reagent/alcohol/ethanol/coffee/b52 +/decl/reagent/alcohol/coffee/b52 name = "B-52" description = "Coffee, Irish Cream, and cognac. You will get bombed." color = "#664300" @@ -2500,7 +2476,7 @@ glass_name = "glass of B-52" glass_desc = "Kahlua, Irish cream, and congac. You will get bombed." -/datum/reagent/alcohol/ethanol/bahama_mama +/decl/reagent/alcohol/bahama_mama name = "Bahama mama" description = "Tropical cocktail." color = "#FF7F3B" @@ -2512,7 +2488,7 @@ glass_desc = "Tropical cocktail" glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/diona_mama +/decl/reagent/alcohol/diona_mama name = "Diona Mama" description = "Lightly irradiated." color = "#56A05D" @@ -2525,7 +2501,7 @@ glass_desc = "Lightly irradiated, just the way Dionae like it." glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/jovian_storm +/decl/reagent/alcohol/jovian_storm name = "Jovian Storm" description = "Named after Jupiter’s storm. It’ll blow you away." color = "#AA856A" @@ -2537,7 +2513,7 @@ glass_desc = "A classic Callistean drink named after Jupiter’s storm. It’ll blow you away." glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/bananahonk +/decl/reagent/alcohol/bananahonk name = "Banana Mama" description = "A drink from Clown Heaven." nutriment_factor = 1 @@ -2550,7 +2526,7 @@ glass_desc = "A drink from Banana Heaven." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/barefoot +/decl/reagent/alcohol/barefoot name = "Barefoot" description = "Barefoot and pregnant" color = "#664300" @@ -2562,7 +2538,7 @@ glass_desc = "Barefoot and pregnant" glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/beepsky_smash +/decl/reagent/alcohol/beepsky_smash name = "Beepsky Smash" description = "Deny drinking this and prepare for THE LAW." reagent_state = LIQUID @@ -2575,12 +2551,12 @@ glass_desc = "Heavy, hot and strong. Just like the Iron fist of the LAW." glass_center_of_mass = list("x"=18, "y"=10) -/datum/reagent/alcohol/ethanol/beepsky_smash/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/beepsky_smash/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.Stun(2) -/datum/reagent/alcohol/ethanol/bilk +/decl/reagent/alcohol/bilk name = "Bilk" description = "This appears to be beer mixed with milk. Disgusting." color = "#895C4C" @@ -2592,7 +2568,7 @@ glass_name = "glass of bilk" glass_desc = "A brew of milk and beer. For those alcoholics who fear osteoporosis." -/datum/reagent/alcohol/ethanol/blackrussian +/decl/reagent/alcohol/blackrussian name = "Black Russian" description = "For the lactose-intolerant. Still as classy as a White Russian." color = "#360000" @@ -2604,7 +2580,7 @@ glass_desc = "For the lactose-intolerant. Still as classy as a White Russian." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/bloodymary +/decl/reagent/alcohol/bloodymary name = "Bloody Mary" 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" @@ -2615,7 +2591,7 @@ glass_name = "glass of Bloody Mary" glass_desc = "Tomato juice, mixed with Vodka and a lil' bit of lime. Tastes like liquid murder." -/datum/reagent/alcohol/ethanol/booger +/decl/reagent/alcohol/booger name = "Booger" description = "Ewww..." color = "#8CFF8C" @@ -2626,7 +2602,7 @@ glass_name = "glass of Booger" glass_desc = "Ewww..." -/datum/reagent/alcohol/ethanol/coffee/brave_bull +/decl/reagent/alcohol/coffee/brave_bull name = "Brave Bull" description = "It's just as effective as Dutch-Courage!" color = "#664300" @@ -2639,7 +2615,7 @@ glass_desc = "Tequila and coffee liquor, brought together in a mouthwatering mixture. Drink up." glass_center_of_mass = list("x"=15, "y"=8) -/datum/reagent/alcohol/ethanol/cmojito +/decl/reagent/alcohol/cmojito name = "Champagne Mojito" description = "A fizzy, minty and sweet drink." color = "#5DBA40" @@ -2650,7 +2626,7 @@ glass_name = "glass of champagne mojito" glass_desc = "Looks fun!" -/datum/reagent/alcohol/ethanol/gibsonpunch +/decl/reagent/alcohol/gibsonpunch name = "Gibson Punch" description = "An alcoholic fruit punch. It seems horribly sour at first, but a sweetly bitter aftertaste lingers in the mouth." color = "#5f712e" @@ -2662,7 +2638,7 @@ glass_desc = "An alcoholic fruit punch." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/classic +/decl/reagent/alcohol/classic name = "The Classic" description = "The classic bitter lemon cocktail." color = "#9a8922" @@ -2675,7 +2651,7 @@ glass_desc = "Just classic. Wow." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/martini +/decl/reagent/alcohol/martini name = "Classic Martini" description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious." color = "#664300" @@ -2687,7 +2663,7 @@ glass_desc = "Damn, the bartender even stirred it, not shook it." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/corkpopper +/decl/reagent/alcohol/corkpopper name = "Cork Popper" description = "A fancy cocktail with a hint of lemon." color = "#766818" @@ -2699,7 +2675,7 @@ glass_desc = "The confusing scent only proves all the more alluring." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/cubalibre +/decl/reagent/alcohol/cubalibre name = "Cuba Libre" description = "A rum and coke with lime. Viva la revolucion." color = "#3E1B00" @@ -2712,7 +2688,7 @@ glass_desc = "A classic mix of rum, cola, and lime." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/rumandcola +/decl/reagent/alcohol/rumandcola name = "Rum and Cola" description = "A classic cocktail consisting of rum and cola." color = "#3E1B00" @@ -2725,7 +2701,7 @@ glass_desc = "A classic mix of rum and cola." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/demonsblood +/decl/reagent/alcohol/demonsblood name = "Demons Blood" description = "AHHHH!!!!" color = "#820000" @@ -2738,7 +2714,7 @@ glass_desc = "Just looking at this thing makes the hair at the back of your neck stand up." glass_center_of_mass = list("x"=16, "y"=2) -/datum/reagent/alcohol/ethanol/devilskiss +/decl/reagent/alcohol/devilskiss name = "Devils Kiss" description = "Creepy time!" color = "#A68310" @@ -2750,7 +2726,7 @@ glass_desc = "Creepy time!" glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/driestmartini +/decl/reagent/alcohol/driestmartini name = "Driest Martini" description = "Only for the experienced. You think you see sand floating in the glass." nutriment_factor = 1 @@ -2763,7 +2739,7 @@ glass_desc = "Only for the experienced. You think you see sand floating in the glass." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/french75 +/decl/reagent/alcohol/french75 name = "French 75" description = "A sharp and classy cocktail." color = "#F4E68D" @@ -2776,7 +2752,7 @@ glass_desc = "It looks like a lemon shaved into your cocktail." glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/ginfizz +/decl/reagent/alcohol/ginfizz name = "Gin Fizz" description = "Refreshingly lemony, deliciously dry." color = "#664300" @@ -2789,7 +2765,7 @@ glass_desc = "Refreshingly lemony, deliciously dry." glass_center_of_mass = list("x"=16, "y"=7) -/datum/reagent/alcohol/ethanol/grog +/decl/reagent/alcohol/grog name = "Grog" description = "Watered-down rum, pirate approved!" reagent_state = LIQUID @@ -2801,7 +2777,7 @@ glass_name = "glass of grog" glass_desc = "A fine and cepa drink for Space." -/datum/reagent/alcohol/ethanol/erikasurprise +/decl/reagent/alcohol/erikasurprise name = "Erika Surprise" description = "The surprise is, it's green!" color = "#2E6671" @@ -2813,7 +2789,7 @@ glass_desc = "The surprise is, it's green!" glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/gargleblaster +/decl/reagent/alcohol/gargleblaster name = "Pan-Galactic Gargle Blaster" description = "Whoah, this stuff looks volatile!" reagent_state = LIQUID @@ -2826,7 +2802,7 @@ glass_desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy." glass_center_of_mass = list("x"=17, "y"=6) -/datum/reagent/alcohol/ethanol/gintonic +/decl/reagent/alcohol/gintonic name = "Gin and Tonic" description = "An all time classic, mild cocktail." color = "#664300" @@ -2839,7 +2815,7 @@ glass_desc = "A mild but still great cocktail. Drink up, like a true Englishman." glass_center_of_mass = list("x"=16, "y"=7) -/datum/reagent/alcohol/ethanol/goldschlager +/decl/reagent/alcohol/goldschlager name = "Goldschlager" description = "100 proof cinnamon schnapps, made for alcoholic teen girls on spring break." color = "#664300" @@ -2851,7 +2827,7 @@ glass_desc = "100 proof that teen girls will drink anything with gold in it." glass_center_of_mass = list("x"=16, "y"=12) -/datum/reagent/alcohol/ethanol/hippiesdelight +/decl/reagent/alcohol/hippiesdelight name = "Hippies' Delight" description = "You just don't get it maaaan." reagent_state = LIQUID @@ -2865,7 +2841,7 @@ glass_desc = "A drink enjoyed by people during the 1960's." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/hooch +/decl/reagent/alcohol/hooch name = "Hooch" description = "Either someone's failure at cocktail making or attempt in alchohol production. In any case, do you really want to drink that?" color = "#664300" @@ -2876,7 +2852,7 @@ glass_name = "glass of Hooch" glass_desc = "You've really hit rock bottom now... your liver packed its bags and left last night." -/datum/reagent/alcohol/ethanol/iced_beer +/decl/reagent/alcohol/iced_beer name = "Iced Beer" description = "A beer which is so cold the air around it freezes." color = "#664300" @@ -2890,7 +2866,7 @@ glass_desc = "A beer so frosty, the air around it freezes." glass_center_of_mass = list("x"=16, "y"=7) -/datum/reagent/alcohol/ethanol/irishcarbomb +/decl/reagent/alcohol/irishcarbomb name = "Irish Car Bomb" description = "Mmm, tastes like chocolate cake..." color = "#2E6671" @@ -2903,7 +2879,7 @@ glass_desc = "An irish car bomb." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/fisfirebomb +/decl/reagent/alcohol/fisfirebomb name = "Fisanduhian Firebomb" description = "Mmm, tastes like spicy chocolate..." color = "#320C00" @@ -2916,7 +2892,7 @@ glass_desc = "The somewhat spicier cousin to the Irish Car Bomb." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/coffee/irishcoffee +/decl/reagent/alcohol/coffee/irishcoffee name = "Irish Coffee" description = "Coffee, and alcohol. More fun than a Mimosa to drink in the morning." color = "#664300" @@ -2929,7 +2905,7 @@ glass_desc = "Coffee and alcohol. More fun than a Mimosa to drink in the morning." glass_center_of_mass = list("x"=15, "y"=10) -/datum/reagent/alcohol/ethanol/coffee/fiscoffee +/decl/reagent/alcohol/coffee/fiscoffee name = "Fisanduhian Coffee" description = "Coffee, and spicy alcohol. Popular among people who dislike Dominians." color = "#A9501C" @@ -2942,7 +2918,7 @@ glass_desc = "It's like an Irish coffee, but spicy and angry about Dominia." glass_center_of_mass = list("x"=15, "y"=10) -/datum/reagent/alcohol/ethanol/irishcream +/decl/reagent/alcohol/irishcream name = "Irish Cream" description = "Whiskey-imbued cream, what else would you expect from the Irish." color = "#664300" @@ -2954,7 +2930,7 @@ glass_desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?" glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/fiscream +/decl/reagent/alcohol/fiscream name = "Fisanduhian Cream" description = "A sweet, slightly spicy alcoholic cream. Fisanduh is not yet lost." color = "#C8AC97" @@ -2966,7 +2942,7 @@ glass_desc = "A sweet, slightly spicy alcoholic cream. Fisanduh is not yet lost." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/longislandicedtea +/decl/reagent/alcohol/longislandicedtea name = "Long Island Iced Tea" description = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." color = "#664300" @@ -2979,7 +2955,7 @@ glass_desc = "The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/manhattan +/decl/reagent/alcohol/manhattan name = "Manhattan" description = "The Detective's undercover drink of choice. He never could stomach gin..." color = "#664300" @@ -2991,7 +2967,7 @@ glass_desc = "The Detective's undercover drink of choice. He never could stomach gin..." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/manhattan_proj +/decl/reagent/alcohol/manhattan_proj name = "Manhattan Project" description = "A scientist's drink of choice, for pondering ways to blow up the station." color = "#664300" @@ -3004,7 +2980,7 @@ glass_desc = "A scientist's drink of choice, for thinking how to blow up the station." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/manly_dorf +/decl/reagent/alcohol/manly_dorf name = "The Manly Dorf" description = "Beer and Ale, brought together in a delicious mix. Intended for true men only." color = "#664300" @@ -3016,7 +2992,7 @@ glass_name = "glass of The Manly Dorf" glass_desc = "A manly concotion made from Ale and Beer. Intended for true men only." -/datum/reagent/alcohol/ethanol/margarita +/decl/reagent/alcohol/margarita name = "Margarita" description = "On the rocks with salt on the rim. Arriba~!" color = "#8CFF8C" @@ -3028,7 +3004,7 @@ glass_desc = "On the rocks with salt on the rim. Arriba~!" glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/mead +/decl/reagent/alcohol/mead name = "Mead" description = "A Viking's drink, though a cheap one." reagent_state = LIQUID @@ -3042,7 +3018,7 @@ glass_desc = "A Viking's beverage, though a cheap one." glass_center_of_mass = list("x"=17, "y"=10) -/datum/reagent/alcohol/ethanol/moonshine +/decl/reagent/alcohol/moonshine name = "Moonshine" description = "You've really hit rock bottom now... your liver packed its bags and left last night." color = "#664300" @@ -3053,7 +3029,7 @@ glass_name = "glass of moonshine" glass_desc = "You've really hit rock bottom now... your liver packed its bags and left last night." -/datum/reagent/alcohol/ethanol/muscmule +/decl/reagent/alcohol/muscmule name = "Muscovite Mule" description = "A surprisingly gentle cocktail, with a hidden punch." color = "#8EEC5F" @@ -3065,7 +3041,7 @@ glass_desc = "Such a pretty green, this couldn't possible go wrong!" glass_center_of_mass = list("x"=17, "y"=10) -/datum/reagent/alcohol/ethanol/neurotoxin +/decl/reagent/alcohol/neurotoxin name = "Neurotoxin" description = "A strong neurotoxin that puts the subject into a death-like state." reagent_state = LIQUID @@ -3081,14 +3057,14 @@ blood_to_ingest_scale = 1 metabolism = REM * 5 -/datum/reagent/alcohol/ethanol/neurotoxin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/neurotoxin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien == IS_DIONA) return M.Weaken(3) M.add_chemical_effect(CE_PULSE, -2) -/datum/reagent/alcohol/ethanol/omimosa +/decl/reagent/alcohol/omimosa name = "Orange Mimosa" description = "Wonderful start to any day." color = "#F4A121" @@ -3100,7 +3076,7 @@ glass_name = "glass of orange mimosa" glass_desc = "Smells like a fresh start." -/datum/reagent/alcohol/ethanol/patron +/decl/reagent/alcohol/patron name = "Patron" description = "Tequila with silver in it, a favorite of alcoholic women in the club scene." color = "#585840" @@ -3112,7 +3088,7 @@ glass_desc = "Drinking patron in the bar, with all the subpar ladies." glass_center_of_mass = list("x"=7, "y"=8) -/datum/reagent/alcohol/ethanol/pinkgin +/decl/reagent/alcohol/pinkgin name = "Pink Gin" description = "Bitters and Gin." color = "#DB80B2" @@ -3124,7 +3100,7 @@ glass_desc = "What an eccentric cocktail." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/pinkgintonic +/decl/reagent/alcohol/pinkgintonic name = "Pink Gin and Tonic." description = "Bitterer gin and tonic." color = "#F4BDDB" @@ -3136,7 +3112,7 @@ glass_name = "glass of pink gin and tonic" glass_desc = "You made gin and tonic more bitter... you madman!" -/datum/reagent/alcohol/ethanol/piratepunch +/decl/reagent/alcohol/piratepunch name = "Pirate's Punch" description = "Nautical punch!" color = "#ECE1A0" @@ -3148,7 +3124,7 @@ glass_desc = "Yarr harr fiddly dee, drink whatcha want 'cause a pirate is ye!" glass_center_of_mass = list("x"=17, "y"=10) -/datum/reagent/alcohol/ethanol/planterpunch +/decl/reagent/alcohol/planterpunch name = "Planter's Punch" description = "A popular beach cocktail." color = "#FFA700" @@ -3160,7 +3136,7 @@ glass_desc = "This takes you back, back to those endless white beaches of yore." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/pwine +/decl/reagent/alcohol/pwine name = "Poison Wine" description = "Is this even wine? Toxic! Hallucinogenic! Probably consumed in boatloads by your superiors!" color = "#000000" @@ -3174,10 +3150,11 @@ glass_desc = "A black ichor with an oily purple sheer on top. Are you sure you should drink this?" glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/pwine/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/pwine/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() M.add_chemical_effect(CE_HALLUCINATE, 1) M.hallucination = max(M.hallucination, 25) + var/dose = M.chem_doses[type] if(dose > 30) M.adjustToxLoss(2 * removed) @@ -3190,7 +3167,7 @@ else L.take_damage(100, 0) -/datum/reagent/alcohol/ethanol/red_mead +/decl/reagent/alcohol/red_mead name = "Red Mead" description = "The true Viking's drink! Even though it has a strange red color." color = "#C73C00" @@ -3202,7 +3179,7 @@ glass_desc = "A true Viking's beverage, though its color is strange." glass_center_of_mass = list("x"=17, "y"=10) -/datum/reagent/alcohol/ethanol/sbiten +/decl/reagent/alcohol/sbiten name = "Sbiten" description = "A spicy mix of mead and spices! Might be a little hot for the little guys!" color = "#664300" @@ -3216,7 +3193,7 @@ glass_desc = "A spicy mix of Mead and Spices. Very hot." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/screwdrivercocktail +/decl/reagent/alcohol/screwdrivercocktail name = "Screwdriver" description = "Vodka, mixed with plain ol' orange juice. The result is surprisingly delicious." color = "#A68310" @@ -3228,7 +3205,7 @@ glass_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer." glass_center_of_mass = list("x"=15, "y"=10) -/datum/reagent/alcohol/ethanol/silencer +/decl/reagent/alcohol/silencer name = "Silencer" description = "A drink from Mime Heaven." nutriment_factor = 1 @@ -3241,7 +3218,7 @@ glass_desc = "A drink from mime Heaven." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/singulo +/decl/reagent/alcohol/singulo name = "Singulo" description = "A blue-space beverage!" color = "#2E6671" @@ -3253,7 +3230,7 @@ glass_desc = "A blue-space beverage." glass_center_of_mass = list("x"=17, "y"=4) -/datum/reagent/alcohol/ethanol/snowwhite +/decl/reagent/alcohol/snowwhite name = "Snow White" description = "A cold refreshment" color = "#FFFFFF" @@ -3266,7 +3243,7 @@ glass_desc = "A cold refreshment." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/ethanol/ssroyale +/decl/reagent/alcohol/ssroyale name = "Southside Royale" description = "Classy cocktail containing citrus." color = "#66F446" @@ -3278,7 +3255,7 @@ glass_desc = "This cocktail is better than you. Maybe it's the crossed arms that give it away. Or the rich parents." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/suidream +/decl/reagent/alcohol/suidream name = "Sui Dream" description = "Comprised of: White soda, blue curacao, melon liquor." color = "#00A86B" @@ -3291,7 +3268,7 @@ glass_desc = "A froofy, fruity, and sweet mixed drink. Understanding the name only brings shame." glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/ethanol/gibsonhooch +/decl/reagent/alcohol/gibsonhooch name = "Gibson Hooch" description = "A disgusting concoction of cheap alcohol and soda - just what you need after a busy day at the factories." color = "#5f641d" @@ -3304,7 +3281,7 @@ glass_desc = "A factory worker's favorite... Because they can't afford much else." glass_center_of_mass = list("x"=16, "y"=10) -/datum/reagent/alcohol/ethanol/tequila_sunrise +/decl/reagent/alcohol/tequila_sunrise name = "Tequila Sunrise" description = "Tequila and orange juice. Much like a Screwdriver, only Mexican~" color = "#FFE48C" @@ -3315,7 +3292,7 @@ glass_name = "glass of Tequila Sunrise" glass_desc = "Oh great, now you feel nostalgic about sunrises back on Terra..." -/datum/reagent/alcohol/ethanol/threemileisland +/decl/reagent/alcohol/threemileisland name = "Three Mile Island Iced Tea" description = "Made for a woman, strong enough for a man." color = "#666340" @@ -3329,7 +3306,7 @@ glass_desc = "A glass of this is sure to prevent a meltdown." glass_center_of_mass = list("x"=16, "y"=2) -/datum/reagent/alcohol/ethanol/toxins_special +/decl/reagent/alcohol/toxins_special name = "Toxins Special" description = "This thing is ON FIRE! CALL THE DAMN SHUTTLE!" reagent_state = LIQUID @@ -3343,7 +3320,7 @@ glass_name = "glass of Toxins Special" glass_desc = "Whoah, this thing is on FIRE" -/datum/reagent/alcohol/ethanol/vodkamartini +/decl/reagent/alcohol/vodkamartini name = "Vodka Martini" description = "Vodka with Gin. Not quite how 007 enjoyed it, but still delicious." color = "#664300" @@ -3355,7 +3332,7 @@ glass_desc ="A bastardisation of the classic martini. Still great." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/ethanol/vodkatonic +/decl/reagent/alcohol/vodkatonic name = "Vodka and Tonic" description = "For when a gin and tonic isn't russian enough." color = "#0064C8" // rgb: 0, 100, 200 @@ -3367,7 +3344,7 @@ glass_desc = "For when a gin and tonic isn't Russian enough." glass_center_of_mass = list("x"=16, "y"=7) -/datum/reagent/alcohol/ethanol/white_russian +/decl/reagent/alcohol/white_russian name = "White Russian" description = "That's just, like, your opinion, man..." color = "#A68340" @@ -3379,7 +3356,7 @@ glass_desc = "A very nice looking drink. But that's just, like, your opinion, man." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/solarian_white +/decl/reagent/alcohol/solarian_white name = "Solarian White" description = "Despite the name, this is not a security officer." color = "#C3D1D4" @@ -3392,7 +3369,7 @@ glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/solarian_marine +/decl/reagent/alcohol/solarian_marine name = "Solarian Marine" description = "Drink too many of these, and you'll wake up invading Tau Ceti." reagent_state = LIQUID @@ -3406,7 +3383,7 @@ glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/permanent_revolution +/decl/reagent/alcohol/permanent_revolution name = "Permanent Revolution" description = "You have nothing to lose but your sobriety." color = "#A7AA60" @@ -3419,7 +3396,7 @@ glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/internationale +/decl/reagent/alcohol/internationale name = "Solarian White" description = "The subversive's choice." color = "#D9CCAA" @@ -3432,7 +3409,7 @@ glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/whiskeycola +/decl/reagent/alcohol/whiskeycola name = "Whiskey Cola" description = "Whiskey, mixed with cola. Surprisingly refreshing." color = "#3E1B00" @@ -3445,7 +3422,7 @@ glass_desc = "An innocent-looking mixture of cola and Whiskey. Delicious." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/whiskeysoda +/decl/reagent/alcohol/whiskeysoda name = "Whiskey Soda" description = "For the more refined griffon." color = "#664300" @@ -3458,7 +3435,7 @@ glass_desc = "Ultimate refreshment." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/ethanol/specialwhiskey // I have no idea what this is and where it comes from +/decl/reagent/alcohol/specialwhiskey // I have no idea what this is and where it comes from name = "Special Blend Whiskey" description = "Just when you thought regular station whiskey was good... This silky, amber goodness has to come along and ruin everything." color = "#664300" @@ -3471,7 +3448,7 @@ glass_center_of_mass = list("x"=16, "y"=12) // Snowflake drinks -/datum/reagent/drink/dr_gibb_diet +/decl/reagent/drink/dr_gibb_diet name = "Diet Dr. Gibb" description = "A delicious blend of 42 different flavours, one of which is water." color = "#102000" @@ -3482,7 +3459,7 @@ glass_name = "glass of Diet Dr. Gibb" glass_desc = "Regular Dr.Gibb is probably healthier than this cocktail of artificial flavors." -/datum/reagent/alcohol/ethanol/drdaniels +/decl/reagent/alcohol/drdaniels name = "Dr. Daniels" description = "A limited edition tallboy of Dr. Gibb's Infusions." color = "#8e6227" @@ -3499,7 +3476,7 @@ //aurora unique drinks -/datum/reagent/alcohol/ethanol/daiquiri +/decl/reagent/alcohol/daiquiri name = "Daiquiri" description = "Exotically blue, fruity drink, distilled from oranges." color = "#664300" @@ -3510,7 +3487,7 @@ glass_name = "glass of Daiquiri" glass_desc = "A splendid looking cocktail." -/datum/reagent/alcohol/ethanol/icepick +/decl/reagent/alcohol/icepick name = "Ice Pick" description = "Big. And red. Hmm...." color = "#664300" @@ -3521,7 +3498,7 @@ glass_name = "glass of Ice Pick" glass_desc = "Big. And red. Hmm..." -/datum/reagent/alcohol/ethanol/poussecafe +/decl/reagent/alcohol/poussecafe name = "Pousse-Cafe" description = "Smells of French and liquore." color = "#664300" @@ -3532,7 +3509,7 @@ glass_name = "glass of Pousse-Cafe" glass_desc = "Smells of French and liquore." -/datum/reagent/alcohol/ethanol/mintjulep +/decl/reagent/alcohol/mintjulep name = "Mint Julep" description = "As old as time itself, but how does it taste?" color = "#664300" @@ -3543,7 +3520,7 @@ glass_name = "glass of Mint Julep" glass_desc = "As old as time itself, but how does it taste?" -/datum/reagent/alcohol/ethanol/johncollins +/decl/reagent/alcohol/johncollins name = "John Collins" description = "Crystal clear, yellow, and smells of whiskey. How could this go wrong?" color = "#664300" @@ -3555,7 +3532,7 @@ glass_name = "glass of John Collins" glass_desc = "Named after a man, perhaps?" -/datum/reagent/alcohol/ethanol/gimlet +/decl/reagent/alcohol/gimlet name = "Gimlet" description = "Small, elegant, and kicks." color = "#664300" @@ -3567,7 +3544,7 @@ glass_name = "glass of Gimlet" glass_desc = "Small, elegant, and packs a punch." -/datum/reagent/alcohol/ethanol/starsandstripes +/decl/reagent/alcohol/starsandstripes name = "Stars and Stripes" description = "Someone, somewhere, is saluting." color = "#664300" @@ -3578,7 +3555,7 @@ glass_name = "glass of Stars and Stripes" glass_desc = "Someone, somewhere, is saluting." -/datum/reagent/alcohol/ethanol/metropolitan +/decl/reagent/alcohol/metropolitan name = "Metropolitan" description = "What more could you ask for?" color = "#664300" @@ -3589,7 +3566,7 @@ glass_name = "glass of Metropolitan" glass_desc = "What more could you ask for?" -/datum/reagent/alcohol/ethanol/primeminister +/decl/reagent/alcohol/primeminister name = "Prime Minister" description = "All the fun of power, none of the assassination risk!" color = "#FF3C00" @@ -3600,7 +3577,7 @@ glass_name = "glass of Prime Minister" glass_desc = "All the fun of power, none of the assassination risk!" -/datum/reagent/alcohol/ethanol/peacetreaty +/decl/reagent/alcohol/peacetreaty name = "Peace Treaty" description = "A diplomatic overture in a glass." color = "#DFDF93" @@ -3611,7 +3588,7 @@ glass_name = "glass of Peace Treaty" glass_desc = "A diplomatic overture in a glass" -/datum/reagent/alcohol/ethanol/caruso +/decl/reagent/alcohol/caruso name = "Caruso" description = "Green, almost alien." color = "#664300" @@ -3622,7 +3599,7 @@ glass_name = "glass of Caruso" glass_desc = "Green, almost alien." -/datum/reagent/alcohol/ethanol/aprilshower +/decl/reagent/alcohol/aprilshower name = "April Shower" description = "Smells of brandy." color = "#664300" @@ -3633,7 +3610,7 @@ glass_name = "glass of April Shower" glass_desc = "Smells of brandy." -/datum/reagent/alcohol/ethanol/carthusiansazerac +/decl/reagent/alcohol/carthusiansazerac name = "Carthusian Sazerac" description = "Whiskey and... Syrup?" color = "#664300" @@ -3644,7 +3621,7 @@ glass_name = "glass of Carthusian Sazerac" glass_desc = "Whiskey and... Syrup?" -/datum/reagent/alcohol/ethanol/deweycocktail +/decl/reagent/alcohol/deweycocktail name = "Dewey Cocktail" description = "Colours, look at all the colours!" color = "#664300" @@ -3655,7 +3632,7 @@ glass_name = "glass of Dewey Cocktail" glass_desc = "Colours, look at all the colours!" -/datum/reagent/alcohol/ethanol/chartreusegreen +/decl/reagent/alcohol/chartreusegreen name = "Green Chartreuse" description = "A green, strong liqueur." color = "#664300" @@ -3666,7 +3643,7 @@ glass_name = "glass of Green Chartreuse" glass_desc = "A green, strong liqueur." -/datum/reagent/alcohol/ethanol/chartreuseyellow +/decl/reagent/alcohol/chartreuseyellow name = "Yellow Chartreuse" description = "A yellow, strong liqueur." color = "#664300" @@ -3677,7 +3654,7 @@ glass_name = "glass of Yellow Chartreuse" glass_desc = "A yellow, strong liqueur." -/datum/reagent/alcohol/ethanol/cremewhite +/decl/reagent/alcohol/cremewhite name = "White Creme de Menthe" description = "Mint-flavoured alcohol, in a bottle." color = "#664300" @@ -3688,7 +3665,7 @@ glass_name = "glass of White Creme de Menthe" glass_desc = "Mint-flavoured alcohol." -/datum/reagent/alcohol/ethanol/cremeyvette +/decl/reagent/alcohol/cremeyvette name = "Creme de Yvette" description = "Berry-flavoured alcohol, in a bottle." color = "#664300" @@ -3699,7 +3676,7 @@ glass_name = "glass of Creme de Yvette" glass_desc = "Berry-flavoured alcohol." -/datum/reagent/alcohol/ethanol/brandy +/decl/reagent/alcohol/brandy name = "Brandy" description = "Cheap knock off for cognac." color = "#664300" @@ -3710,7 +3687,7 @@ glass_name = "glass of Brandy" glass_desc = "Cheap knock off for cognac." -/datum/reagent/alcohol/ethanol/guinness +/decl/reagent/alcohol/guinness name = "Guinness" description = "Special Guinnes drink." color = "#2E6671" @@ -3718,11 +3695,11 @@ taste_description = "dryness" carbonated = TRUE - glass_icon_state = "guinness_glass" + glass_icon_state = "guinnessglass" glass_name = "glass of Guinness" glass_desc = "A glass of Guinness." -/datum/reagent/alcohol/ethanol/drambuie +/decl/reagent/alcohol/drambuie name = "Drambuie" description = "A drink that smells like whiskey but tastes different." color = "#2E6671" @@ -3733,7 +3710,7 @@ glass_name = "glass of Drambuie" glass_desc = "A drink that smells like whiskey but tastes different." -/datum/reagent/alcohol/ethanol/oldfashioned +/decl/reagent/alcohol/oldfashioned name = "Old Fashioned" description = "That looks like it's from the sixties." color = "#2E6671" @@ -3744,7 +3721,7 @@ glass_name = "glass of Old Fashioned" glass_desc = "That looks like it's from the sixties." -/datum/reagent/alcohol/ethanol/blindrussian +/decl/reagent/alcohol/blindrussian name = "Blind Russian" description = "You can't see?" color = "#2E6671" @@ -3755,7 +3732,7 @@ glass_name = "glass of Blind Russian" glass_desc = "You can't see?" -/datum/reagent/alcohol/ethanol/rustynail +/decl/reagent/alcohol/rustynail name = "Rusty Nail" description = "Smells like lemon." color = "#2E6671" @@ -3766,7 +3743,7 @@ glass_name = "glass of Rusty Nail" glass_desc = "Smells like lemon." -/datum/reagent/alcohol/ethanol/tallrussian +/decl/reagent/alcohol/tallrussian name = "Tall Black Russian" description = "Just like black russian but taller." color = "#2E6671" @@ -3782,7 +3759,7 @@ //===================================== // Organized here because why not. -/datum/reagent/alcohol/ethanol/badtouch +/decl/reagent/alcohol/badtouch name = "Bad Touch" description = "We're nothing but mammals, after all." color = "#42f456" @@ -3793,7 +3770,7 @@ glass_name = "glass of Bad Touch" glass_desc = "We're nothing but mammals, after all." -/datum/reagent/alcohol/ethanol/bluelagoon +/decl/reagent/alcohol/bluelagoon name = "Blue Lagoon" description = "Because lagoons shouldn't come in other colors." color = "#51b8ef" @@ -3804,7 +3781,7 @@ glass_name = "glass of Blue Lagoon" glass_desc = "Because lagoons shouldn't come in other colors." -/datum/reagent/alcohol/ethanol/boukha +/decl/reagent/alcohol/boukha name = "Boukha" description = "A distillation of figs, popular in the Serene Republic of Elyra." color = "#efd0d0" @@ -3815,7 +3792,7 @@ glass_name = "glass of boukha" glass_desc = "A distillation of figs, popular in the Serene Republic of Elyra." -/datum/reagent/alcohol/ethanol/fireball +/decl/reagent/alcohol/fireball name = "Fireball" description = "Whiskey that's been infused with cinnamon and hot pepper. Meant for mixing." color = "#773404" @@ -3831,17 +3808,21 @@ var/discomfort_message = "Your insides feel uncomfortably hot!" var/slime_temp_adj = 3 -/datum/reagent/alcohol/ethanol/fireball/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/fireball/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustToxLoss(0.1 * removed) -/datum/reagent/alcohol/ethanol/fireball/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/fireball/initial_effect(mob/living/carbon/M, alien, datum/reagents/holder) + . = ..() + to_chat(M, discomfort_message) + +/decl/reagent/alcohol/fireball/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien != IS_DIONA) if(ishuman(M)) var/mob/living/carbon/human/H = M if(!H.can_feel_pain()) return - if(dose < agony_dose) - if(prob(5) || dose == metabolism) + if(M.chem_doses[type] < agony_dose) + if(prob(5)) to_chat(M, discomfort_message) else M.apply_effect(agony_amount, PAIN, 0) @@ -3850,9 +3831,9 @@ to_chat(M, "You feel like your insides are burning!") if(istype(M, /mob/living/carbon/slime)) M.bodytemperature += rand(0, 15) + slime_temp_adj - holder.remove_reagent(/datum/reagent/frostoil, 2) + holder.remove_reagent(/decl/reagent/frostoil, 2) -/datum/reagent/alcohol/ethanol/cherrytreefireball +/decl/reagent/alcohol/cherrytreefireball name = "Cherry Tree Fireball" description = "An iced fruit cocktail shaken with cinnamon whiskey. Hot, cold and sweet all at once." color = "#e87727" @@ -3863,7 +3844,7 @@ glass_name = "glass of Cherry Tree Fireball" glass_desc = "An iced fruit cocktail shaken with cinnamon whiskey. Hot, cold and sweet all at once." -/datum/reagent/alcohol/ethanol/cobaltvelvet +/decl/reagent/alcohol/cobaltvelvet name = "Cobalt Velvet" description = "An electric blue champagne cocktail that's popular on the club scene." color = "#a3ecf7" @@ -3875,7 +3856,7 @@ glass_name = "glass of Cobalt Velvet" glass_desc = "An electric blue champagne cocktail that's popular on the club scene." -/datum/reagent/alcohol/ethanol/fringeweaver +/decl/reagent/alcohol/fringeweaver name = "Fringe Weaver" description = "Effectively pure alcohol with a dose of sugar. It's as simple as it is strong." color = "#f78888" @@ -3886,7 +3867,7 @@ glass_name = "glass of Fringe Weaver" glass_desc = "Effectively pure alcohol with a dose of sugar. It's as simple as it is strong." -/datum/reagent/alcohol/ethanol/junglejuice +/decl/reagent/alcohol/junglejuice name = "Jungle Juice" description = "You're in the jungle now, baby." color = "#773404" @@ -3897,7 +3878,7 @@ glass_name = "glass of Jungle Juice" glass_desc = "You're in the jungle now, baby." -/datum/reagent/alcohol/ethanol/marsarita +/decl/reagent/alcohol/marsarita name = "Marsarita" description = "The margarita with a Martian twist. They call it something less embarrassing there." color = "#3eb7c9" @@ -3908,7 +3889,7 @@ glass_name = "glass of Marsarita" glass_desc = "The margarita with a Martian twist. They call it something less embarrassing there." -/datum/reagent/drink/meloncooler +/decl/reagent/drink/meloncooler name = "Melon Cooler" description = "Summertime on the beach, in liquid form." color = "#d8457b" @@ -3918,7 +3899,7 @@ glass_name = "glass of Melon Cooler" glass_desc = "Summertime on the beach, in liquid form." -/datum/reagent/alcohol/ethanol/midnightkiss +/decl/reagent/alcohol/midnightkiss name = "Midnight Kiss" description = "A champagne cocktail, quietly bubbling in a slender glass." color = "#13144c" @@ -3930,7 +3911,7 @@ glass_name = "glass of Midnight Kiss" glass_desc = "A champagne cocktail, quietly bubbling in a slender glass." -/datum/reagent/drink/millionairesour +/decl/reagent/drink/millionairesour name = "Millionaire Sour" description = "It's a good mix, a great mix. The best mix in known space. It's terrific, you're gonna love it." color = "#13144c" @@ -3940,7 +3921,7 @@ glass_name = "glass of Millionaire Sour" glass_desc = "It's a good mix, a great mix. Best mix in the galaxy. It's terrific, you're gonna love it." -/datum/reagent/alcohol/ethanol/olympusmons +/decl/reagent/alcohol/olympusmons name = "Olympus Mons" description = "Another, stronger version of the Black Russian. It's popular in some Martian arcologies." color = "#020407" @@ -3951,7 +3932,7 @@ glass_name = "glass of Olympus Mons" glass_desc = "Another, stronger version of the Black Russian. It's popular in some Martian arcologies." -/datum/reagent/alcohol/ethanol/europanail +/decl/reagent/alcohol/europanail name = "Europa Nail" description = "Named for Jupiter's moon. It looks about as crusty." color = "#785327" @@ -3962,7 +3943,7 @@ glass_name = "glass of Europa Nail" glass_desc = "Named for Jupiter's moon. It looks about as crusty." -/datum/reagent/drink/shirleytemple +/decl/reagent/drink/shirleytemple name = "Shirley Temple" description = "Straight from the good ship Lollipop." color = "#ce2727" @@ -3972,7 +3953,7 @@ glass_name = "glass of Shirley Temple" glass_desc = "Straight from the good ship Lollipop." -/datum/reagent/alcohol/ethanol/sugarrush +/decl/reagent/alcohol/sugarrush name = "Sugar Rush" description = "Sweet, light and fruity. As girly as it gets." color = "#d51d5d" @@ -3984,7 +3965,7 @@ glass_name = "glass of Sugar Rush" glass_desc = "Sweet, light and fruity. As girly as it gets." -/datum/reagent/alcohol/ethanol/sangria +/decl/reagent/alcohol/sangria name = "Sangria" description = "Red wine, splashed with brandy and infused with fruit." color = "#960707" @@ -3995,7 +3976,7 @@ glass_name = "glass of Sangria" glass_desc = "Red wine, splashed with brandy and infused with fruit." -/datum/reagent/alcohol/ethanol/bassline +/decl/reagent/alcohol/bassline name = "Bassline" description = "A vodka cocktail from Vega De Rosa, Mendell City's entertainment district. Purple and deep." color = "#6807b2" @@ -4006,7 +3987,7 @@ glass_name = "glass of Bassline" glass_desc = "A vodka cocktail from Vega De Rosa, Mendell City's entertainment district. Purple and deep." -/datum/reagent/alcohol/ethanol/bluebird +/decl/reagent/alcohol/bluebird name = "Bluebird" description = "A gin drink popularized by a spy thriller in 2452." color = "#4286f4" @@ -4017,7 +3998,7 @@ glass_name = "glass of Bluebird" glass_desc = "A gin drink popularized by a spy thriller in 2452." -/datum/reagent/alcohol/ethanol/whitewine +/decl/reagent/alcohol/whitewine name = "White Wine" description = "A premium alchoholic beverage made from distilled grape juice." color = "#e5d272" @@ -4029,7 +4010,7 @@ glass_desc = "A very classy looking drink." glass_center_of_mass = list("x"=15, "y"=7) -/datum/reagent/alcohol/ethanol/messa_mead +/decl/reagent/alcohol/messa_mead name = "Messa's Mead" description = "A sweet alcoholic adhomian drink. Produced with Messa's tears and earthen-root." color = "#664300" @@ -4040,7 +4021,7 @@ glass_name = "glass of Messa's Mead" glass_desc = "A sweet alcoholic adhomian drink. Produced with Messa's tears." -/datum/reagent/alcohol/ethanol/winter_offensive +/decl/reagent/alcohol/winter_offensive name = "Winter Offensive" description = "An alcoholic tajaran cocktail, named after the famous military campaign." color = "#664300" @@ -4052,7 +4033,7 @@ glass_name = "glass of Winter Offensive" glass_desc = "An alcoholic tajaran cocktail, named after the famous military campaign." -/datum/reagent/alcohol/ethanol/mountain_marauder +/decl/reagent/alcohol/mountain_marauder name = "Mountain Marauder" description = "An adhomian beverage made from fermented fatshouters milk and victory gin." color = "#DFDFDF" @@ -4063,14 +4044,14 @@ glass_name = "glass of Mountain Marauder" glass_desc = "An adhomian beverage made from fermented fatshouters milk and victory gin." -/datum/reagent/alcohol/ethanol/mountain_marauder/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/mountain_marauder/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(ishuman(M)) var/mob/living/carbon/human/H = M if(alien != IS_TAJARA && prob(5)) H.delayed_vomit() -/datum/reagent/alcohol/ethanol/cinnamonapplewhiskey +/decl/reagent/alcohol/cinnamonapplewhiskey name = "Cinnamon Apple Whiskey" description = "Cider with cinnamon whiskey. It's like drinking a hot apple pie!" color = "#664300" @@ -4085,7 +4066,7 @@ //==================== // Some are alocholic, some are not -/datum/reagent/alcohol/ethanol/thirdincident +/decl/reagent/alcohol/thirdincident name = "The Third Incident" color = "#1936a0" strength = 10 @@ -4096,7 +4077,7 @@ glass_name = "glass of the Third Incident" glass_desc = "A controversial drink popular with the punk youth of the Jargon Federation. Represents blood, eggs, and tears." -/datum/reagent/drink/upsidedowncup +/decl/reagent/drink/upsidedowncup name = "Upside-Down Cup" color = "#B2110A" description = "An age-old part of Skrell culture. Even children know of the humor." @@ -4106,7 +4087,7 @@ glass_name = "glass of Upside-Down Cup" glass_desc = "An age-old part of Skrell culture. Even children know of the humor. It's not actually upside down." -/datum/reagent/drink/smokinglizard +/decl/reagent/drink/smokinglizard name = "Cigarette Lizard" color = "#80C274" description = "The amusement of Cigarette Lizard, now in a cup!" @@ -4116,7 +4097,7 @@ glass_name = "glass of Cigarette Lizard" glass_desc = "The amusement of Cigarette Lizard, now in a cup!" -/datum/reagent/drink/coffee/sromshine +/decl/reagent/drink/coffee/sromshine name = "Sromshine" color = "#A14702" description = "The best part of waking up." @@ -4126,7 +4107,7 @@ glass_name = "cup of Sromshine" glass_desc = "The best part of waking up." -/datum/reagent/alcohol/ethanol/cbsc +/decl/reagent/alcohol/cbsc name = "Complex Bluespace Calculation" color = "#000000" strength = 25 @@ -4137,12 +4118,12 @@ glass_name = "glass of Complex Bluespace Calculation" glass_desc = "A loud bang. No, really, that's the joke. Skrell get a kick out of it." -/datum/reagent/alcohol/ethanol/cbsc/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/cbsc/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.make_jittery(10) -/datum/reagent/drink/algaesuprise +/decl/reagent/drink/algaesuprise name = "Pl'iuop Algae Surprise" color = "#FFFF80" description = "This bubbling drink gives off a faint moldy aroma." @@ -4152,7 +4133,7 @@ glass_name = "glass of Pl'iuop Algae Surprise" glass_desc = "This bubbling drink gives off a faint moldy aroma." -/datum/reagent/drink/xrim +/decl/reagent/drink/xrim name = "Xrim Garden" color = "#F6668E" description = "A colorful drink that smells a lot like rotten fruit." @@ -4162,7 +4143,7 @@ glass_name = "glass of Xrim Garden" glass_desc = "A colorful drink that smells a lot like rotten fruit." -/datum/reagent/alcohol/ethanol/rixulin_sundae +/decl/reagent/alcohol/rixulin_sundae name = "Rixulin Sundae" color = "#83E2C6" description = "A fizzing drink that looks like a really great time." @@ -4179,7 +4160,7 @@ //===================================== //These are mainly for unathi, and have very little (but still some) effect on other species -/datum/reagent/alcohol/butanol/xuizijuice +/decl/reagent/alcohol/butanol/xuizijuice name = "Xuizi Juice" description = "Blended flower buds from a Moghean Xuizi cactus. Has a mild butanol content and is a staple recreational beverage in Unathi culture." color = "#91de47" @@ -4190,7 +4171,7 @@ glass_name = "glass of Xuizi Juice" glass_desc = "The clear green liquid smells like vanilla, tastes like water. Unathi swear it has a rich taste and texture." -/datum/reagent/alcohol/butanol/sarezhiwine +/decl/reagent/alcohol/butanol/sarezhiwine name = "Sarezhi Wine" description = "An alcoholic beverage made from lightly fermented Sareszhi berries, considered an upper class delicacy on Moghes. Significant butanol content indicates intoxicating effects on Unathi." color = "#bf8fbc" @@ -4201,7 +4182,7 @@ glass_name = "glass of Sarezhi Wine" glass_desc = "It tastes like plain berry juice. Is this supposed to be alcoholic?" -/datum/reagent/alcohol/butanol/threetownscider +/decl/reagent/alcohol/butanol/threetownscider name = "Three Towns Cider" description = "A cider made on the west coast of the Moghresian Sea, this is simply one of many brands made in a region known for its craft local butanol, shipped throughout the Wasteland." color = "#b8f77e" @@ -4211,7 +4192,7 @@ //Kaed's Unathi Cocktails //======= //What an exciting time we live in, that lizards may drink fruity girl drinks. -/datum/reagent/alcohol/butanol/moghesmargarita +/decl/reagent/alcohol/butanol/moghesmargarita name = "Moghes Margarita" description = "A classic human cocktail, now ruined with cactus juice instead of tequila." color = "#8CFF8C" @@ -4223,7 +4204,7 @@ glass_desc = "A classic human cocktail, now ruined with cactus juice instead of tequila." glass_center_of_mass = list("x"=16, "y"=8) -/datum/reagent/alcohol/butanol/cactuscreme +/decl/reagent/alcohol/butanol/cactuscreme name = "Cactus Creme" description = "A tasty mix of berries and cream with xuizi juice, for the discerning unathi." color = "#664300" @@ -4235,7 +4216,7 @@ glass_desc = "A tasty mix of berries and cream with xuizi juice, for the discerning unathi." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/butanol/bahamalizard +/decl/reagent/alcohol/butanol/bahamalizard name = "Bahama Lizard" description = "A tropical cocktail containing cactus juice from Moghes, but no actual alcohol." color = "#FF7F3B" @@ -4247,7 +4228,7 @@ glass_desc = "A tropical cocktail containing cactus juice from Moghes, but no actual alcohol." glass_center_of_mass = list("x"=16, "y"=5) -/datum/reagent/alcohol/butanol/lizardphlegm +/decl/reagent/alcohol/butanol/lizardphlegm name = "Lizard Phlegm" description = "Looks gross, but smells fruity." color = "#8CFF8C" @@ -4258,7 +4239,7 @@ glass_name = "glass of Lizard Phlegm" glass_desc = "Looks gross, but smells fruity." -/datum/reagent/alcohol/butanol/cactustea +/decl/reagent/alcohol/butanol/cactustea name = "Cactus Tea" description = "Tea flavored with xuizi juice." color = "#664300" @@ -4269,7 +4250,7 @@ glass_name = "glass of Cactus Tea" glass_desc = "Tea flavored with xuizi juice." -/datum/reagent/alcohol/butanol/moghespolitan +/decl/reagent/alcohol/butanol/moghespolitan name = "Moghespolitan" description = "Pomegranate syrup and cactus juice, with a splash of Sarezhi Wine. Delicious!" color = "#664300" @@ -4280,7 +4261,7 @@ glass_name = "glass of Moghespolitan" glass_desc = "Pomegranate syrup and cactus juice, with a splash of Sarezhi Wine. Delicious!" -/datum/reagent/alcohol/butanol/wastelandheat +/decl/reagent/alcohol/butanol/wastelandheat name = "Wasteland Heat" description = "A mix of spicy cactus juice to warm you up." color = "#664300" @@ -4294,7 +4275,7 @@ glass_desc = "A mix of spicy cactus juice to warm you up. Maybe a little too warm for non-unathi, though." glass_center_of_mass = list("x"=17, "y"=8) -/datum/reagent/alcohol/butanol/sandgria +/decl/reagent/alcohol/butanol/sandgria name = "Sandgria" description = "Sarezhi wine, blended with citrus and a splash of cactus juice." color = "#960707" @@ -4305,7 +4286,7 @@ glass_name = "glass of Sandgria" glass_desc = "Sarezhi wine, blended with citrus and a splash of cactus juice." -/datum/reagent/alcohol/butanol/contactwine +/decl/reagent/alcohol/butanol/contactwine name = "Contact Wine" description = "A perfectly good glass of Sarezhi wine, ruined by adding radioactive material. It reminds you of something..." color = "#2E6671" @@ -4317,7 +4298,7 @@ glass_desc = "A perfectly good glass of Sarezhi wine, ruined by adding radioactive material. It reminds you of something..." glass_center_of_mass = list("x"=17, "y"=4) -/datum/reagent/alcohol/butanol/hereticblood +/decl/reagent/alcohol/butanol/hereticblood name = "Heretics Blood" description = "A fizzy cocktail made with cactus juice and heresy." color = "#820000" @@ -4329,7 +4310,7 @@ glass_desc = "A fizzy cocktail made with cactus juice and heresy." glass_center_of_mass = list("x"=16, "y"=2) -/datum/reagent/alcohol/butanol/sandpit +/decl/reagent/alcohol/butanol/sandpit name = "Sandpit" description = "An unusual mix of cactus and orange juice, mostly favored by unathi." color = "#A68310" @@ -4341,7 +4322,7 @@ glass_desc = "An unusual mix of cactus and orange juice, mostly favored by unathi." glass_center_of_mass = list("x"=15, "y"=10) -/datum/reagent/alcohol/butanol/cactuscola +/decl/reagent/alcohol/butanol/cactuscola name = "Cactus Cola" description = "Cactus juice splashed with cola, on ice. Simple and delicious." color = "#3E1B00" @@ -4354,7 +4335,7 @@ glass_desc = "Cactus juice splashed with cola, on ice. Simple and delicious." glass_center_of_mass = list("x"=16, "y"=9) -/datum/reagent/alcohol/butanol/bloodwine +/decl/reagent/alcohol/butanol/bloodwine name = "Bloodwine" description = "A traditional unathi drink said to strengthen one before a battle." color = "#C73C00" @@ -4366,7 +4347,7 @@ glass_desc = "A traditional unathi drink said to strengthen one before a battle." glass_center_of_mass = list("x"=15, "y"=7) -/datum/reagent/alcohol/butanol/crocodile_booze +/decl/reagent/alcohol/butanol/crocodile_booze name = "Crocodile Guwan" description = "A highly alcoholic butanol based beverage typically fermented using the venom of a zerl'ock and cheaply made Sarezhi Wine. A popular drink among Unathi troublemakers, conviently housed in a 2L plastic bottle." color = "#b0f442" @@ -4377,7 +4358,7 @@ glass_name = "glass of Crocodile Guwan" glass_desc = "The smell says no, but the pretty colors say yes." -/datum/reagent/alcohol/butanol/trizkizki_tea +/decl/reagent/alcohol/butanol/trizkizki_tea name = "Trizkizki Tea" description = "A popular drink from Ouerea that smells of crisp sea air." color = "#876185" @@ -4391,7 +4372,7 @@ var/last_taste_time = -100 -/datum/reagent/alcohol/butanol/trizkizki_tea/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alcohol/butanol/trizkizki_tea/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien == IS_DIONA) if(last_taste_time + 800 < world.time) // Not to spam message to_chat(M, "Your body withers as you feel slight pain throughout.") @@ -4401,7 +4382,7 @@ //ZZZZOOOODDDDAAAAA -/datum/reagent/drink/zorasoda +/decl/reagent/drink/zorasoda name = "Zo'ra Soda Cherry" description = "Zo'ra Soda, cherry edition. All good drinks come in cherry." color = "#102000" @@ -4410,7 +4391,7 @@ taste_description = "electric cherry" carbonated = TRUE -/datum/reagent/drink/zorasoda/phoron +/decl/reagent/drink/zorasoda/phoron name = "Zo'ra Soda Phoron Passion" description = "Reported to taste nothing like phoron, but everything like grapes." color = "#863333" @@ -4419,7 +4400,7 @@ taste_description = "electric grape" carbonated = TRUE -/datum/reagent/drink/zorasoda/kois +/decl/reagent/drink/zorasoda/kois name = "Zo'ra Soda K'ois Twist" description = "Whoever approved this in marketing needs to be drawn and quartered." color = "#dcd9cd" @@ -4428,12 +4409,12 @@ taste_description = "sugary cabbage" carbonated = TRUE -/datum/reagent/drink/zorasoda/kois/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/zorasoda/kois/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.make_jittery(5) -/datum/reagent/drink/zorasoda/hozm +/decl/reagent/drink/zorasoda/hozm name = "Zo'ra Soda High Octane Zorane Might" description = "It feels like someone is just driving a freezing cold spear through the bottom of your mouth." color = "#365000" @@ -4442,14 +4423,14 @@ taste_description = "a full-body bite into an acidic lemon" carbonated = TRUE -/datum/reagent/drink/zorasoda/hozm/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/zorasoda/hozm/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.make_jittery(20) M.dizziness += 5 M.drowsyness = 0 -/datum/reagent/drink/zorasoda/venomgrass +/decl/reagent/drink/zorasoda/venomgrass name = "Zo'ra Soda Sour Venom Grass" description = "The 'diet' version of High Energy Zorane Might, still tastes like a cloud of stinging polytrinic bees." color = "#100800" @@ -4458,12 +4439,12 @@ taste_description = "fizzy nettles" carbonated = TRUE -/datum/reagent/drink/zorasoda/venomgrass/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/zorasoda/venomgrass/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.make_jittery(5) -/datum/reagent/drink/zorasoda/klax +/decl/reagent/drink/zorasoda/klax name = "Klaxan Energy Crush" description = "An orange, cream soda. It's a wonder it got here." color = "#E78108" @@ -4473,12 +4454,12 @@ taste_description = "orange cream" carbonated = TRUE -/datum/reagent/drink/zorasoda/klax/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/zorasoda/klax/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.make_jittery(5) -/datum/reagent/drink/zorasoda/cthur +/decl/reagent/drink/zorasoda/cthur name = "C'thur Rockin' Raspberry" description = "A raspberry concoction you're pretty sure is already on recall." color = "#0000CD" @@ -4487,12 +4468,12 @@ taste_description = "flat raspberry" carbonated = TRUE -/datum/reagent/drink/zorasoda/cthur/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/zorasoda/cthur/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.make_jittery(15) -/datum/reagent/drink/zorasoda/drone +/decl/reagent/drink/zorasoda/drone name = "Drone Fuel" description = "It's thick as syrup and smells of gas. Why." color = "#31004A" @@ -4500,7 +4481,7 @@ taste_description = "viscous cola" carbonated = TRUE -/datum/reagent/drink/zorasoda/drone/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/drink/zorasoda/drone/affect_ingest(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(!istype(M)) return @@ -4510,13 +4491,13 @@ M.add_chemical_effect(CE_BLOODRESTORE, 2 * removed) M.make_jittery(5) else if(alien != IS_DIONA) - if (prob(10+dose)) - to_chat(M, pick("You feel nauseous", "Ugghh....", "Your stomach churns uncomfortably", "You feel like you're about to throw up", "You feel queasy","You feel pressure in your abdomen")) + if (prob(10+M.chem_doses[type])) + to_chat(M, pick("You feel nauseous!", "Ugh...", "Your stomach churns uncomfortably!", "You feel like you're about to throw up!", "You feel queasy!","You feel pressure in your abdomen!")) - if (prob(dose)) + if (prob(M.chem_doses[type])) M.vomit() -/datum/reagent/drink/zorasoda/jelly +/decl/reagent/drink/zorasoda/jelly name = "Royal Jelly" description = "It looks of mucus, but tastes like Heaven." color = "#FFFF00" @@ -4525,26 +4506,26 @@ taste_description = "a reassuring spectrum of color" carbonated = TRUE -/datum/reagent/drink/zorasoda/jelly/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/drink/zorasoda/jelly/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien != IS_DIONA) M.druggy = max(M.druggy, 30) M.dizziness += 5 M.drowsyness = 0 -/datum/reagent/nutriment/pumpkinpulp +/decl/reagent/nutriment/pumpkinpulp name = "Pumpkin Pulp" description = "The gooey insides of a slain pumpkin. This day is the greatest..." color = "#f9ab28" taste_description = "gooey pumpkin" -/datum/reagent/spacespice/pumpkinspice +/decl/reagent/spacespice/pumpkinspice name = "Pumpkin Spice" description = "A delicious seasonal flavoring." color = "#AE771C" taste_description = "autumn bliss" -/datum/reagent/drink/syrup_chocolate +/decl/reagent/drink/syrup_chocolate name = "Chocolate Syrup" description = "Thick chocolate syrup used to flavor drinks." taste_description = "chocolate" @@ -4553,7 +4534,7 @@ glass_name = "chocolate syrup" glass_desc = "Thick chocolate syrup used to flavor drinks." -/datum/reagent/drink/syrup_caramel +/decl/reagent/drink/syrup_caramel name = "Caramel Syrup" description = "Thick caramel syrup used to flavor drinks." taste_description = "caramel" @@ -4562,7 +4543,7 @@ glass_name = "caramel syrup" glass_desc = "Thick caramel syrup used to flavor drinks." -/datum/reagent/drink/syrup_vanilla +/decl/reagent/drink/syrup_vanilla name = "Vanilla Syrup" description = "Thick vanilla syrup used to flavor drinks." taste_description = "vanilla" @@ -4571,7 +4552,7 @@ glass_name = "vanilla syrup" glass_desc = "Thick vanilla syrup used to flavor drinks." -/datum/reagent/drink/syrup_pumpkin +/decl/reagent/drink/syrup_pumpkin name = "Pumpkin Spice Syrup" description = "Thick spiced pumpkin syrup used to flavor drinks." taste_description = "spiced pumpkin" @@ -4580,7 +4561,7 @@ glass_name = "pumpkin spice syrup" glass_desc = "Thick spiced pumpkin syrup used to flavor drinks." -/datum/reagent/drink/syrup_simple +/decl/reagent/drink/syrup_simple name = "Simple Syrup" description = "Thick, unflavored syrup used as a base for drinks or flavorings." taste_description = "molasses" @@ -4588,19 +4569,19 @@ glass_name = "simple syrup" glass_desc = "Thick, unflavored syrup used as a base for drinks or flavorings." -/datum/reagent/nutriment/caramel +/decl/reagent/nutriment/caramel name = "Caramel Sugar" reagent_state = SOLID description = "Caramelised sugar, used in various recipes." taste_description = "toasty sweetness" -/datum/reagent/drink/caramel +/decl/reagent/drink/caramel name = "Caramel Sauce" reagent_state = LIQUID description = "A caramel-based sauce. Now you're caramel dancin'." taste_description = "toasty sweet cream" -/datum/reagent/diona_powder +/decl/reagent/diona_powder name = "Dionae Powder" description = "Powdered Dionae ambergris." reagent_state = SOLID diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm index 8c2f56386e7..3362c462d9e 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm @@ -1,6 +1,6 @@ /* General medicine */ -/datum/reagent/inaprovaline +/decl/reagent/inaprovaline name = "Inaprovaline" description = "Inaprovaline is a cardiostimulant which stabilises myocardial contractility, working towards maintaining a steady pulse and blood pressure. Inaprovaline also acts as a weak analgesic." reagent_state = LIQUID @@ -12,16 +12,16 @@ scannable = TRUE taste_description = "bitterness" -/datum/reagent/inaprovaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/inaprovaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_STABLE) M.add_chemical_effect(CE_PAINKILLER, 25) -/datum/reagent/inaprovaline/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/inaprovaline/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(prob(2)) to_chat(M, SPAN_WARNING(pick("Your chest feels tight.", "Your chest is aching a bit.", "You have a stabbing pain in your chest."))) M.adjustHalLoss(5) -/datum/reagent/bicaridine +/decl/reagent/bicaridine name = "Bicaridine" description = "Bicaridine is a complex medication which specifically targets damaged tissues and damaged blood vessels by encouraging the rate at which the damaged tissues are regenerated. Overdosing bicaridine allows the drug to take effect on damaged muscular tissues of arteries." reagent_state = LIQUID @@ -33,26 +33,26 @@ fallback_specific_heat = 1 taste_mult = 3 -/datum/reagent/bicaridine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/bicaridine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.heal_organ_damage(5 * removed, 0) - if((locate(/datum/reagent/butazoline) in M.reagents.reagent_list)) - M.add_chemical_effect(CE_ITCH, dose * 2) + if(REAGENT_VOLUME(M.reagents, /decl/reagent/butazoline)) + M.add_chemical_effect(CE_ITCH, M.chem_doses[type] * 2) M.adjustHydrationLoss(2*removed) M.adjustCloneLoss(2.5*removed) // Cell regeneration spiralling out of control resulting in genetic damage. -/datum/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.dizziness = max(100, M.dizziness) M.make_dizzy(5) M.adjustHydrationLoss(5*removed) M.adjustNutritionLoss(5*removed) var/mob/living/carbon/human/H = M - if(dose > 30) //Bicaridine treats arterial bleeding when dose is greater than 30u and when the drug is overdosing (chemical volume in blood greater than 20). + if(M.chem_doses[type] > 30) //Bicaridine treats arterial bleeding when dose is greater than 30u and when the drug is overdosing (chemical volume in blood greater than 20). for(var/obj/item/organ/external/E in H.organs) if(E.status & ORGAN_ARTERY_CUT && prob(2)) E.status &= ~ORGAN_ARTERY_CUT -/datum/reagent/butazoline +/decl/reagent/butazoline name = "Butazoline" description = "Butazoline, a recent improvement upon Bicaridine, is specialised at treating the most traumatic of wounds, though less so for treating severe bleeding." reagent_state = LIQUID @@ -63,12 +63,12 @@ taste_description = "bitterness" taste_mult = 3 -/datum/reagent/butazoline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/butazoline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.heal_organ_damage(8 * removed, 0) - M.add_chemical_effect(CE_ITCH, dose) + M.add_chemical_effect(CE_ITCH, M.chem_doses[type]) M.adjustHydrationLoss(1*removed) -/datum/reagent/kelotane +/decl/reagent/kelotane name = "Kelotane" description = "Kelotane is a complex medication which specifically targets tissues which have been lost to severe burning by encouraging the rate at which these damaged tissues are regenerated." reagent_state = LIQUID @@ -78,14 +78,14 @@ metabolism = REM * 0.5 taste_description = "bitterness" -/datum/reagent/kelotane/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/kelotane/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.heal_organ_damage(0, 6 * removed) - if((locate(/datum/reagent/dermaline) in M.reagents.reagent_list)) - M.add_chemical_effect(CE_ITCH, dose * 2) + if(REAGENT_VOLUME(M.reagents, /decl/reagent/dermaline)) + M.add_chemical_effect(CE_ITCH, M.chem_doses[type] * 2) M.adjustHydrationLoss(2*removed) M.adjustCloneLoss(2.5*removed) //Cell regeneration spiralling out of control resulting in genetic damage. -/datum/reagent/kelotane/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/kelotane/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) var/mob/living/carbon/human/H = M var/obj/item/organ/external/head = H.get_organ(BP_HEAD) if(!(head.disfigured)) @@ -95,7 +95,7 @@ to_chat(M, SPAN_DANGER("Your face has swollen and blistered to such a degree that you are no longer recognisable!")) head.disfigured = TRUE -/datum/reagent/dermaline +/decl/reagent/dermaline name = "Dermaline" description = "Dermaline is a recent improvement of kelotane, working in a similar way, though twice as effective. Dermaline is capable of recovering even the most dire of burnt tissues, being able to treat full-thickness burning." reagent_state = LIQUID @@ -107,12 +107,12 @@ overdose = 15 taste_mult = 1.5 -/datum/reagent/dermaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/dermaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.heal_organ_damage(0, 12 * removed) - M.add_chemical_effect(CE_ITCH, dose) + M.add_chemical_effect(CE_ITCH, M.chem_doses[type]) M.adjustHydrationLoss(1*removed) -/datum/reagent/dylovene +/decl/reagent/dylovene name = "Dylovene" description = "Dylovene is a broad-spectrum over-the-counter antitoxin. It is used in response to a variety of poisoning cases, being able to neutralise and remove harmful toxins from the bloodstream." reagent_state = LIQUID @@ -124,10 +124,10 @@ var/remove_generic = TRUE var/list/remove_toxins = list( - /datum/reagent/toxin/zombiepowder + /decl/reagent/toxin/zombiepowder ) -/datum/reagent/dylovene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/dylovene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien == IS_DIONA) return @@ -138,20 +138,22 @@ var/removing = (4 * removed) var/datum/reagents/ingested = M.get_ingested_reagents() - for(var/datum/reagent/R in ingested.reagent_list) - if((remove_generic && istype(R, /datum/reagent/toxin)) || (R.type in remove_toxins)) + for(var/_R in ingested.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + if((remove_generic && istype(R, /decl/reagent/toxin)) || (_R in remove_toxins)) ingested.remove_reagent(R.type, removing) return - for(var/datum/reagent/R in M.reagents.reagent_list) - if((remove_generic && istype(R, /datum/reagent/toxin)) || (R.type in remove_toxins)) - M.reagents.remove_reagent(R.type, removing) + for(var/_R in M.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + if((remove_generic && istype(R, /decl/reagent/toxin)) || (_R in remove_toxins)) + M.reagents.remove_reagent(_R, removing) return -/datum/reagent/dylovene/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/dylovene/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustNutritionLoss(5 * removed) M.adjustHydrationLoss(5 * removed) -/datum/reagent/dexalin +/decl/reagent/dexalin name = "Dexalin" description = "Dexalin is a complex oxygen therapeutic and is available OTC. The chemical utilises carbon nanostructures which cling to oxygen and, in pathological conditions where tissues are hypoxic, will oxygenate these regions. Dexalin is twice as efficient when inhaled." reagent_state = LIQUID @@ -164,12 +166,12 @@ breathe_mul = 2 var/strength = 6 -/datum/reagent/dexalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/dexalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_OXYGENATED, strength/6) // 1 for dexalin, 2 for dexplus - holder.remove_reagent(/datum/reagent/lexorin, strength/3 * removed) + holder.remove_reagent(/decl/reagent/lexorin, strength/3 * removed) //Hyperoxia causes brain and eye damage -/datum/reagent/dexalin/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/dexalin/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_NEUROTOXIC, removed * (strength / 6)) if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -180,7 +182,7 @@ M.adjustToxLoss(removed * strength / 2) M.eye_blurry = max(M.eye_blurry, 5) -/datum/reagent/dexalin/plus +/decl/reagent/dexalin/plus name = "Dexalin Plus" fallback_specific_heat = 1 description = "Dexalin Plus was a ground-breaking improvement of Dexalin, capable of transporting several times the amount of oxygen, allowing it to have more clinical uses in treating hypoxia. Dexalin Plus is twice as efficient when inhaled." @@ -188,7 +190,7 @@ overdose = 15 strength = 12 -/datum/reagent/tricordrazine +/decl/reagent/tricordrazine name = "Tricordrazine" description = "Tricordrazine is an old, though still useful, medication largely set aside following bicaridine and kelotane's development. The drug increases the rate at which tissues regenerate, though far slower than modern medications." reagent_state = LIQUID @@ -200,16 +202,16 @@ breathe_mul = 0 metabolism = REM * 0.25 -/datum/reagent/tricordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/power = 1 + Clamp((get_temperature() - (T0C + 20))*0.1,-0.5,0.5) +/decl/reagent/tricordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + var/power = 1 + Clamp((holder.get_temperature() - (T0C + 20))*0.1,-0.5,0.5) //Heals 10% more brute and less burn for every 1 celcius above 20 celcius, up 50% more/less. //Heals 10% more burn and less brute for every 1 celcius below 20 celcius, up to 50% more/less. M.heal_organ_damage(3 * removed * power,3 * removed * power) -/datum/reagent/tricordrazine/overdose(var/mob/living/carbon/M, var/alien) - M.add_chemical_effect(CE_ITCH, dose) +/decl/reagent/tricordrazine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_ITCH, M.chem_doses[type]) -/datum/reagent/cryoxadone +/decl/reagent/cryoxadone name = "Cryoxadone" description = "Cryoxadone is a ground-breaking and complex medication that, when acting on bodies cooler than 170K, is capable of increasing the rate at which wounds regenerate, as well as treating genetic damage. Cryoxadone, alongside Clonexadone, are the backbones of the cloning industry." reagent_state = LIQUID @@ -218,7 +220,7 @@ scannable = TRUE taste_description = "sludge" -/datum/reagent/cryoxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/cryoxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_CRYO, 1) if(M.bodytemperature < 170) M.add_chemical_effect(CE_PULSE, -2) @@ -226,7 +228,7 @@ M.adjustOxyLoss(-10 * removed) M.heal_organ_damage(10 * removed, 10 * removed) -/datum/reagent/clonexadone +/decl/reagent/clonexadone name = "Clonexadone" description = "Clonexadone is a ground-breaking, complex medication that improved upon Cryoxadone. When acting on bodies cooler than 170K, the drug is capable of increasing the rate at which wounds regenerate, as well as treating genetic damage. Clonexadone, alongside Cryoxadone, are the backbones of the cloning industry." reagent_state = LIQUID @@ -235,7 +237,7 @@ scannable = TRUE taste_description = "slime" -/datum/reagent/clonexadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/clonexadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_CRYO, 1) if(M.bodytemperature < 170) M.add_chemical_effect(CE_PULSE, -2) @@ -245,7 +247,7 @@ /* Painkillers */ -/datum/reagent/perconol +/decl/reagent/perconol name = "Perconol" description = "Perconol is an advanced, analgesic medication which is highly effective at treating minor-mild pain, inflammation and high fevers. The drug is available over-the-counter for treating minor illnesses and mild pain. Perconol is not effective when inhaled." reagent_state = LIQUID @@ -260,15 +262,15 @@ metabolism_min = 0.005 breathe_mul = 0 -/datum/reagent/perconol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/perconol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 50) - M.add_chemical_effect(CE_NOFEVER, ((max_dose/2)^2-(dose-max_dose/2))/(max_dose/4)) // creates a smooth curve peaking at half the dose metabolised + M.add_chemical_effect(CE_NOFEVER, ((M.chem_doses[type]/2)^2-(REAGENT_VOLUME(holder, type)-M.chem_doses[type]/2))/(M.chem_doses[type]/4)) // creates a smooth curve peaking at half the dose metabolised -/datum/reagent/perconol/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/perconol/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) ..() M.hallucination = max(M.hallucination, 25) -/datum/reagent/mortaphenyl +/decl/reagent/mortaphenyl name = "Mortaphenyl" description = "Mortaphenyl is an advanced, powerful analgesic medication which is highly effective at treating mild-severe pain as a result of severe, physical injury. Mortaphenyl is not effective when inhaled." reagent_state = LIQUID @@ -283,7 +285,7 @@ metabolism_min = 0.005 breathe_mul = 0 -/datum/reagent/mortaphenyl/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mortaphenyl/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 80) if(!M.chem_effects[CE_CLEARSIGHT]) M.eye_blurry = max(M.eye_blurry, 5) @@ -296,22 +298,22 @@ var/bac = H.get_blood_alcohol() if(bac >= 0.03) M.hallucination = max(M.hallucination, bac * 300) - M.add_chemical_effect(CE_EMETIC, dose/6) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6) if(bac >= 0.08) if(M.losebreath < 15) M.losebreath++ - if((locate(/datum/reagent/oxycomorphine) in M.reagents.reagent_list)) - overdose = volume/2 //Straight to overdose. + if(REAGENT_VOLUME(M.reagents, /decl/reagent/oxycomorphine)) + overdose = REAGENT_VOLUME(holder, type)/2 //Straight to overdose. -/datum/reagent/mortaphenyl/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/mortaphenyl/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) ..() M.hallucination = max(M.hallucination, 40) - M.add_chemical_effect(CE_EMETIC, dose/6) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6) if(M.losebreath < 15) M.losebreath++ -/datum/reagent/mortaphenyl/aphrodite +/decl/reagent/mortaphenyl/aphrodite name = "Aphrodite" description = "Aphrodite is the name given to the chemical diona inject into organics soon after biting them. It serves a dual purpose of dulling the pain of the wound, and gathering deep-seated fragments of learned skills and memories, such as languages." color = "#a59153" @@ -320,14 +322,14 @@ fallback_specific_heat = 1 taste_description = "euphoric acid" -/datum/reagent/mortaphenyl/aphrodite/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mortaphenyl/aphrodite/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 70) if(!M.chem_effects[CE_CLEARSIGHT]) M.eye_blurry = max(M.eye_blurry, 3) if(!M.chem_effects[CE_STRAIGHTWALK]) M.confused = max(M.confused, 6) -/datum/reagent/oxycomorphine +/decl/reagent/oxycomorphine name = "Oxycomorphine" description = "Oxycomorphine is a highly advanced, powerful analgesic medication which is extremely effective at treating severe-agonising pain as a result of injuries usually incompatible with life. The drug is highly addictive and sense-numbing. Oxycomorphine is not effective when inhaled." reagent_state = LIQUID @@ -342,7 +344,7 @@ metabolism_min = 0.005 breathe_mul = 0 -/datum/reagent/oxycomorphine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/oxycomorphine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 200) if(!M.chem_effects[CE_CLEARSIGHT]) M.eye_blurry = max(M.eye_blurry, 5) @@ -356,24 +358,24 @@ if(bac >= 0.02) M.hallucination = max(M.hallucination, bac * 300) M.druggy = max(M.druggy, bac * 100) - M.add_chemical_effect(CE_EMETIC, dose/6) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6) if(bac >= 0.04) if(prob(3)) to_chat(M, SPAN_WARNING(pick("You're having trouble breathing.", "You begin to feel a bit light headed.", "Your breathing is very shallow.", ""))) if(M.losebreath < 15) M.losebreath++ -/datum/reagent/oxycomorphine/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/oxycomorphine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) ..() M.druggy = max(M.druggy, 20) M.hallucination = max(M.hallucination, 60) - M.add_chemical_effect(CE_EMETIC, dose/6) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/6) if(M.losebreath < 15) M.losebreath++ /* Other medicine */ -/datum/reagent/synaptizine +/decl/reagent/synaptizine name = "Synaptizine" description = "Synaptizine is an advanced synaptic stimulant and nootropic which improves synaptic transmission and keeps one alert, giving it many clinical uses in the treatment of paralysis, weakness, narcolepsy and hallucinations. Synaptizine is difficult to metabolise and is hard on the liver." reagent_state = LIQUID @@ -382,45 +384,39 @@ overdose = 10 od_minimum_dose = 1 scannable = TRUE - var/datum/modifier/modifier taste_description = "bitterness" metabolism_min = REM * 0.0125 -/datum/reagent/synaptizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/synaptizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.drowsyness = max(M.drowsyness - 5, 0) - if(volume < 10) // Will prevent synaptizine interrupting a seizure caused by its own overdose. + if(REAGENT_VOLUME(holder, type) < 10) // Will prevent synaptizine interrupting a seizure caused by its own overdose. M.AdjustParalysis(-1) M.AdjustStunned(-1) M.AdjustWeakened(-1) - holder.remove_reagent(/datum/reagent/mindbreaker, 5) + holder.remove_reagent(/decl/reagent/mindbreaker, 5) M.hallucination = max(0, M.hallucination - 10) M.eye_blurry = max(M.eye_blurry - 5, 0) M.confused = max(M.confused - 10, 0) - if(!modifier) - modifier = M.add_modifier(/datum/modifier/adrenaline, MODIFIER_REAGENT, src, _strength = 1, override = MODIFIER_OVERRIDE_STRENGTHEN) -/datum/reagent/synaptizine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/synaptizine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed) . = ..() if(.) M.add_chemical_effect(CE_CLEARSIGHT) M.add_chemical_effect(CE_STRAIGHTWALK) M.add_chemical_effect(CE_PAINKILLER, 40) M.add_chemical_effect(CE_HALLUCINATE, -1) + M.add_up_to_chemical_effect(CE_ADRENALINE, 1) -/datum/reagent/synaptizine/overdose(var/mob/living/carbon/M, var/alien) - if(prob(dose / 2)) +/decl/reagent/synaptizine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + if(prob(M.chem_doses[type] / 2)) to_chat(M, SPAN_WARNING(pick("You feel a tingly sensation in your body.", "You can smell something unusual.", "You can taste something unusual."))) - if(prob(dose / 3)) + if(prob(M.chem_doses[type] / 3)) if(prob(75)) M.emote(pick("twitch", "shiver")) else M.seizure() -/datum/reagent/synaptizine/Destroy() - QDEL_NULL(modifier) - return ..() - -/datum/reagent/alkysine +/decl/reagent/alkysine name = "Alkysine" description = "Alkysine is a complex drug which increases cerebral circulation, ensuring the brain does not become hypoxic and increasing the rate at which neurological function returns after a catastrophic injury." reagent_state = LIQUID @@ -431,37 +427,37 @@ taste_description = "bitterness" metabolism_min = REM * 0.075 -/datum/reagent/alkysine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(volume >= 2) //Increased effectiveness & no side-effects if given via IV drip with low transfer rate. +/decl/reagent/alkysine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(REAGENT_VOLUME(holder, type) >= 2) //Increased effectiveness & no side-effects if given via IV drip with low transfer rate. M.dizziness = max(125, M.dizziness) M.make_dizzy(5) - if(!(volume > 10)) + if(!(REAGENT_VOLUME(holder, type) > 10)) var/obj/item/organ/internal/brain/B = M.internal_organs_by_name[BP_BRAIN] if(B && M.species && M.species.has_organ[BP_BRAIN] && !isipc(M)) - if(prob(dose/5) && !B.has_trauma_type(BRAIN_TRAUMA_MILD)) + if(prob(M.chem_doses[type]/5) && !B.has_trauma_type(BRAIN_TRAUMA_MILD)) B.gain_trauma_type(pick(/datum/brain_trauma/mild/dumbness, /datum/brain_trauma/mild/muscle_weakness, /datum/brain_trauma/mild/colorblind)) //Handpicked suggested traumas considered less disruptive and conducive to roleplay. -/datum/reagent/alkysine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alkysine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() if(.) M.add_chemical_effect(CE_STRAIGHTWALK) - if(volume < 2) //Increased effectiveness & no side-effects if given via IV drip with low transfer rate. + if(REAGENT_VOLUME(holder, type) < 2) //Increased effectiveness & no side-effects if given via IV drip with low transfer rate. M.add_chemical_effect(CE_BRAIN_REGEN, 40) //1 unit of Alkysine fed via drip at a low transfer rate will raise activity by 10%. else M.add_chemical_effect(CE_BRAIN_REGEN, 30) //1 unit of Alkysine will raise brain activity by 7.5%. M.add_chemical_effect(CE_PAINKILLER, 10) -/datum/reagent/alkysine/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/alkysine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.hallucination = max(M.hallucination, 15) var/obj/item/organ/internal/brain/B = M.internal_organs_by_name[BP_BRAIN] if(B && M.species && M.species.has_organ[BP_BRAIN] && !isipc(M)) - if(prob(dose / 2) && !B.has_trauma_type(BRAIN_TRAUMA_SEVERE) && !B.has_trauma_type(BRAIN_TRAUMA_MILD) && !B.has_trauma_type(BRAIN_TRAUMA_SPECIAL)) + if(prob(M.chem_doses[type] / 2) && !B.has_trauma_type(BRAIN_TRAUMA_SEVERE) && !B.has_trauma_type(BRAIN_TRAUMA_MILD) && !B.has_trauma_type(BRAIN_TRAUMA_SPECIAL)) B.gain_trauma_type(/datum/brain_trauma/severe/paralysis, /datum/brain_trauma/severe/aphasia, /datum/brain_trauma/special/imaginary_friend) - if(prob(dose)) + if(prob(M.chem_doses[type])) to_chat(M, SPAN_WARNING(pick("You have a painful headache!", "You feel a throbbing pain behind your eyes!"))) ..() -/datum/reagent/oculine +/decl/reagent/oculine name = "Oculine" description = "Oculine is a complex organ-regenerative medication which increases the rate at which cells can differentiate into those required to recover damage to ocular tissues." reagent_state = LIQUID @@ -471,7 +467,7 @@ taste_mult = 0.33 //Specifically to cut the dull toxin taste out of foods using carrot taste_description = "dull toxin" -/datum/reagent/oculine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/oculine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.eye_blurry = max(M.eye_blurry - 5 * removed, 0) M.eye_blind = max(M.eye_blind - 5 * removed, 0) if(ishuman(M)) @@ -481,16 +477,16 @@ if(E.damage > 0) E.damage = max(E.damage - 5 * removed, 0) -/datum/reagent/oculine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/oculine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() if(.) M.add_chemical_effect(CE_CLEARSIGHT) -/datum/reagent/oculine/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/oculine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.hallucination = max(M.hallucination, 15) ..() -/datum/reagent/peridaxon +/decl/reagent/peridaxon name = "Peridaxon" description = "Peridaxon is complex, broad-spectrum organ-regenerative medication which increases the rate at which cells can differentiate into organ cells to recover damaged organ tissues. The drug is hard on the body, leading to confusion and drowsiness." reagent_state = LIQUID @@ -499,7 +495,7 @@ scannable = TRUE taste_description = "bitterness" -/datum/reagent/peridaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/peridaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(ishuman(M)) var/mob/living/carbon/human/H = M H.add_chemical_effect(CE_CLUMSY, 1) @@ -510,14 +506,14 @@ if((I.damage > 0) && (I.robotic != 2)) //Peridaxon heals only non-robotic organs I.damage = max(I.damage - removed, 0) -/datum/reagent/peridaxon/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/peridaxon/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) M.dizziness = max(150, M.dizziness) M.make_dizzy(5) - if(prob(dose / 2)) + if(prob(M.chem_doses[type] / 2)) to_chat(M, SPAN_DANGER("You feel your insides twisting and burning.")) M.adjustHalLoss(5) -/datum/reagent/ryetalyn +/decl/reagent/ryetalyn name = "Ryetalyn" description = "Ryetalyn is a novel, highly advanced, broad-spectrum medication, developed by Dominian scientists, which has varying clinical uses in treating genetic abnormalities including certain cancers, autoimmune conditions, and Hulk Syndrome." reagent_state = SOLID @@ -527,7 +523,7 @@ metabolism = 1 metabolism_min = 0.25 -/datum/reagent/ryetalyn/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/ryetalyn/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/needs_update = M.mutations.len > 0 M.mutations = list() @@ -539,7 +535,7 @@ var/mob/living/carbon/human/H = M H.update_mutations() -/datum/reagent/hyperzine +/decl/reagent/hyperzine name = "Hyperzine" description = "Hyperzine is a complex cardio-synaptic stimulant drug designed to increase the performance of the body. Downsides include violent muscle spasms and tremors." reagent_state = LIQUID @@ -551,30 +547,33 @@ metabolism_min = REM * 0.025 breathe_met = REM * 0.15 * 0.5 -/datum/reagent/hyperzine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/hyperzine/get_overdose(mob/living/carbon/M, location, datum/reagents/holder) + if(REAGENT_VOLUME(M.reagents, /decl/reagent/adrenaline) > 5) + return 10 //Volume of hyperzine required to OD reduced from 15u to 10u. + . = ..() + +/decl/reagent/hyperzine/get_od_min_dose(mob/living/carbon/M, location, datum/reagents/holder) + if(REAGENT_VOLUME(M.reagents, /decl/reagent/adrenaline) > 5) + return 0 // Takes effect instantly. + . = od_minimum_dose + +/decl/reagent/hyperzine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(prob(5)) M.emote(pick("twitch", "blink_r", "shiver")) M.add_chemical_effect(CE_SPEEDBOOST, 1) M.add_chemical_effect(CE_PULSE, 1) - if (!modifier) - modifier = M.add_modifier(/datum/modifier/stimulant, MODIFIER_REAGENT, src, _strength = 1, override = MODIFIER_OVERRIDE_STRENGTHEN) - if((locate(/datum/reagent/adrenaline) in M.reagents.reagent_list)) - if(M.reagents.get_reagent_amount(/datum/reagent/adrenaline) > 5) //So you can tolerate being attacked whilst hyperzine is in your system. - overdose = 10 //Volume of hyperzine required to OD reduced from 15u to 10u. - od_minimum_dose = 0 - -/datum/reagent/hyperzine/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/hyperzine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustNutritionLoss(5*removed) M.add_chemical_effect(CE_PULSE, 2) if(prob(5)) to_chat(M, SPAN_DANGER(pick("Your heart is beating rapidly!", "Your chest hurts!"))) - if(prob(dose / 3)) + if(prob(M.chem_doses[type] / 3)) M.visible_message("[M] twitches violently, grimacing.", "You twitch violently and feel yourself sprain a joint.") M.take_organ_damage(5 * removed, 0) M.adjustHalLoss(15) -/datum/reagent/hyperzine/Destroy() +/decl/reagent/hyperzine/Destroy() QDEL_NULL(modifier) return ..() @@ -583,7 +582,7 @@ //Ethylredoxrazine will remove a number of units of alcoholic substances from the patient's blood and stomach, equal to its pow //Once all alcohol in the body is neutralised, it will then cure intoxication and sober the patient up -/datum/reagent/ethylredoxrazine +/decl/reagent/ethylredoxrazine name = "Ethylredoxrazine" description = "Ethylredoxrazine is a powerful medication which oxidises ethanol in the bloodstream, reducing the burden on the liver to complete this task. Ethylredoxrazine also blocks the reuptake of neurotransmitters responsible for symptoms of alcohol intoxication." reagent_state = SOLID @@ -593,9 +592,9 @@ scannable = TRUE taste_description = "bitterness" -/datum/reagent/ethylredoxrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/ethylredoxrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/P = removed * ETHYL_REAGENT_POWER - var/DP = dose * ETHYL_REAGENT_POWER//tiny optimisation + var/DP = M.chem_doses[type] * ETHYL_REAGENT_POWER//tiny optimisation //These status effects will now take a little while for the dose to build up and remove them M.dizziness = max(0, M.dizziness - DP) @@ -605,9 +604,10 @@ var/datum/reagents/ingested = M.get_ingested_reagents() if(ingested) - for(var/datum/reagent/R in ingested.reagent_list) - if(istype(R, /datum/reagent/alcohol/ethanol)) - var/amount = min(P, R.volume) + for(var/_R in ingested.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + if(istype(R, /decl/reagent/alcohol)) + var/amount = min(P, REAGENT_VOLUME(ingested, _R)) ingested.remove_reagent(R.type, amount) P -= amount if (P <= 0) @@ -616,10 +616,11 @@ //Even though alcohol is not supposed to be injected, ethyl removes it from the blood too, //as a treatment option if someone was dumb enough to do this if(M.bloodstr) - for(var/datum/reagent/R in M.bloodstr.reagent_list) - if(istype(R, /datum/reagent/alcohol/ethanol)) - var/amount = min(P, R.volume) - M.bloodstr.remove_reagent(R.type, amount) + for(var/_R in M.bloodstr.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + if(istype(R, /decl/reagent/alcohol)) + var/amount = min(P, REAGENT_VOLUME(M.bloodstr, _R)) + M.bloodstr.remove_reagent(_R, amount) P -= amount if (P <= 0) return @@ -629,12 +630,12 @@ M.intoxication = max(0, (M.intoxication - (amount / ETHYL_INTOX_COST))) P -= amount -/datum/reagent/ethylredoxrazine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/ethylredoxrazine/affect_chem_effect(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() if(.) M.add_chemical_effect(CE_STRAIGHTWALK) -/datum/reagent/hyronalin +/decl/reagent/hyronalin name = "Hyronalin" description = "Hyronalin is a complex anti-radiation medication which specifically targets ionised cells, reducing their cell division rate to prevent their growth before gradually destroying these afflicted cells." reagent_state = LIQUID @@ -646,21 +647,25 @@ unaffected_species = IS_MACHINE var/last_taste_time = -10000 -/datum/reagent/hyronalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/hyronalin/initialize_data(newdata) + LAZYSET(newdata, "last_taste_time", 0) + return newdata + +/decl/reagent/hyronalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(M.is_diona()) - if(last_taste_time + 950 < world.time) // Not to spam message + if(holder.reagent_data[type]["last_taste_time"] + 950 < world.time) // Not to spam message to_chat(M, SPAN_DANGER("Your body withers as you feel a searing pain throughout.")) - last_taste_time = world.time - metabolism = REM * 0.22 - M.adjustToxLoss(45 * removed) // Tested numbers myself + holder.reagent_data[type]["last_taste_time"] = world.time + //metabolism = REM * 0.22 + M.adjustToxLoss(45 * removed * (0.22/0.25)) // Multiplier is to replace the above line else M.apply_radiation(-30 * removed) -/datum/reagent/hyronalin/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/hyronalin/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(prob(60)) M.take_organ_damage(4 * removed, 0) //Hyronaline OD deals brute damage to the same degree as Arithrazine -/datum/reagent/arithrazine +/decl/reagent/arithrazine name = "Arithrazine" description = "Arithrazine is a recent improvement of Hyronalin, rapidly destroying any ionised cells, though this often leads to collateral cell damage, resulting in contusions across affected parts of the body." reagent_state = LIQUID @@ -670,26 +675,30 @@ scannable = TRUE taste_description = "bitterness" unaffected_species = IS_MACHINE - var/last_taste_time = -10000 -/datum/reagent/arithrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/arithrazine/initialize_data(newdata) + var/list/data = newdata + LAZYSET(data, "last_taste_time", 0) + return data + +/decl/reagent/arithrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(M.is_diona()) - if(last_taste_time + 450 < world.time) // Not to spam message + if(holder.reagent_data[type]["last_taste_time"] + 950 < world.time) // Not to spam message to_chat(M, SPAN_DANGER("Your body withers as you feel a searing pain throughout.")) - last_taste_time = world.time - metabolism = REM * 0.195 - M.adjustToxLoss(115 * removed) // Tested numbers myself + holder.reagent_data[type]["last_taste_time"] = world.time + //metabolism = REM * 0.195 + M.adjustToxLoss(115 * removed * (0.195/0.25)) // Multiplier is to replace the above line else M.apply_radiation(-70 * removed) - M.add_chemical_effect(CE_ITCH, dose/2) + M.add_chemical_effect(CE_ITCH, M.chem_doses[type]/2) if(prob(60)) M.take_organ_damage(4 * removed, 0) -/datum/reagent/arithrazine/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/arithrazine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(prob(50)) M.take_organ_damage(6 * removed, 0) //Even more collateral damage dealt by arithrazine when overdosed. -/datum/reagent/thetamycin +/decl/reagent/thetamycin name = "Thetamycin" description = "Thetamycin is a complex, broad-spectrum antibiotic developed to treat wound infections, organ infections, and septicaemia, even those caused by superbugs with high anti-bacterial resistances." reagent_state = LIQUID @@ -703,15 +712,15 @@ taste_description = "bitter gauze soaked in rubbing alcohol" fallback_specific_heat = 0.605 // assuming it's ethanol-based -/datum/reagent/thetamycin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.add_chemical_effect(CE_EMETIC, dose/8) // chance per 2 second tick to cause vomiting - M.add_chemical_effect(CE_ANTIBIOTIC, dose) // strength of antibiotics; amount absorbed, need >5u dose to begin to be effective which'll take ~5 minutes to metabolise. need >10u dose if administered orally. +/decl/reagent/thetamycin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]/8) // chance per 2 second tick to cause vomiting + M.add_chemical_effect(CE_ANTIBIOTIC, M.chem_doses[type]) // strength of antibiotics; amount absorbed, need >5u dose to begin to be effective which'll take ~5 minutes to metabolise. need >10u dose if administered orally. -/datum/reagent/thetamycin/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/thetamycin/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) M.dizziness = max(150, M.dizziness) M.make_dizzy(5) -/datum/reagent/asinodryl +/decl/reagent/asinodryl name = "Asinodryl" description = "Asinodryl is an anti-emetic medication which acts by preventing the two regions in the brain responsible for vomiting from controlling the act of emesis." color = "#f5f2d0" @@ -720,12 +729,12 @@ metabolism = REM * 0.25 fallback_specific_heat = 1 -/datum/reagent/asinodryl/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/asinodryl/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien == IS_DIONA) return - M.add_chemical_effect(CE_ANTIEMETIC, dose/4) // 1u should suppress 2u thetamycin + M.add_chemical_effect(CE_ANTIEMETIC, M.chem_doses[type]/4) // 1u should suppress 2u thetamycin -/datum/reagent/coughsyrup +/decl/reagent/coughsyrup name = "Cough Syrup" description = "A complex antitussive medication available OTC which is very effective at suppressing cough reflexes. The medication also acts as a very weak analgesic medication, leading to it being a very cheap recreational drug or precursor to other recreational drugs." scannable = TRUE @@ -739,13 +748,13 @@ glass_name = "glass of cough syrup" glass_desc = "You'd better not." -/datum/reagent/coughsyrup/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/coughsyrup/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 5) // very slight painkiller effect at low doses -/datum/reagent/coughsyrup/overdose(var/mob/living/carbon/human/M, var/alien, var/removed) // effects based loosely on DXM +/decl/reagent/coughsyrup/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) // effects based loosely on DXM M.hallucination = max(M.hallucination, 40) M.add_chemical_effect(CE_PAINKILLER, 20) // stronger at higher doses - if(prob(dose)) + if(prob(M.chem_doses[type])) M.vomit() if(prob(7)) M.emote(pick("twitch", "drool", "moan", "giggle")) @@ -754,7 +763,7 @@ if(prob(50)) M.drowsyness = max(M.drowsyness, 3) -/datum/reagent/cetahydramine +/decl/reagent/cetahydramine name = "Cetahydramine" description = "Cetahydramine is a complex antihistamine medication available OTC which blocks the release of histamine, thus making it effective at suppressing allergies and sneezing. Cetahydramine can cause drowsiness in larger doses, making it an effective sleep aid." scannable = TRUE @@ -767,12 +776,12 @@ ingest_mul = 1 fallback_specific_heat = 0.605 // assuming it's ethanol-based -/datum/reagent/cetahydramine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.add_chemical_effect(CE_NOITCH, dose * 2) // 5 units of cetahydramine will counter 10 units of dermaline/butazoline itching. - if(prob(dose/2)) +/decl/reagent/cetahydramine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + M.add_chemical_effect(CE_NOITCH, M.chem_doses[type] * 2) // 5 units of cetahydramine will counter 10 units of dermaline/butazoline itching. + if(prob(M.chem_doses[type]/2)) M.drowsyness += 2 -/datum/reagent/sterilizine +/decl/reagent/sterilizine name = "Sterilizine" description = "Sterilizine is a chemical product composed of bleach and anti-toxins which can thoroughly disinfect wound sites and any biohazardous waste." reagent_state = LIQUID @@ -781,7 +790,7 @@ taste_description = "burning bleach" germ_adjust = 20 -/datum/reagent/sterilizine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/sterilizine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.germ_level -= min(removed*20, M.germ_level) for(var/obj/item/I in M.contents) I.was_bloodied = null @@ -794,18 +803,18 @@ if (W.germ_level <= 0) W.disinfected = 1//The wound becomes disinfected if fully cleaned -/datum/reagent/sterilizine/touch_obj(var/obj/O) - O.germ_level -= min(volume*20, O.germ_level) +/decl/reagent/sterilizine/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) + O.germ_level -= min(amount*20, O.germ_level) O.was_bloodied = null -/datum/reagent/sterilizine/touch_turf(var/turf/T) - T.germ_level -= min(volume*20, T.germ_level) +/decl/reagent/sterilizine/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) + T.germ_level -= min(amount*20, T.germ_level) for(var/obj/item/I in T.contents) I.was_bloodied = null for(var/obj/effect/decal/cleanable/blood/B in T) qdel(B) -/datum/reagent/leporazine +/decl/reagent/leporazine name = "Leporazine" description = "Leporazine is a complex medication which improves thermal homeostasis, stabilising and regulating the body's core temperature. Leporazine often results in hyperventilation which should be monitored." reagent_state = LIQUID @@ -814,14 +823,14 @@ scannable = TRUE taste_description = "bitterness" -/datum/reagent/leporazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(!(volume > 20)) +/decl/reagent/leporazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if(!(REAGENT_VOLUME(holder, type) > 20)) if(M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (40 * TEMPERATURE_DAMAGE_COEFFICIENT)) else if(M.bodytemperature < 311) M.bodytemperature = min(310, M.bodytemperature + (40 * TEMPERATURE_DAMAGE_COEFFICIENT)) -/datum/reagent/leporazine/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/leporazine/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) M.bodytemperature = max(M.bodytemperature - 2 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) if(prob(2)) M.emote("shiver") @@ -832,14 +841,13 @@ #define ANTIDEPRESSANT_MESSAGE_DELAY 1800 //3 minutes -/datum/reagent/mental +/decl/reagent/mental name = null //Just like alcohol description = "Some nameless, experimental antidepressant that you should obviously not have your hands on." reagent_state = LIQUID color = "#FFFFFF" metabolism = 0.001 * REM metabolism_min = 0 - data = 0 scannable = TRUE overdose = REAGENTS_OVERDOSE od_minimum_dose = 0.02 @@ -858,17 +866,19 @@ fallback_specific_heat = 1.5 -/datum/reagent/mental/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed) +/decl/reagent/mental/initialize_data(newdata, datum/reagents/holder) + var/data = newdata + LAZYSET(data, "last_tick_time", 0) + return data - if(!istype(H) || max_dose < min_dose || (world.time < data && volume > removed) || messagedelay == -1) +/decl/reagent/mental/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) + if(!istype(H) || LAZYACCESS(H.chem_doses, type) < min_dose || (world.time < holder.reagent_data[type]["last_tick_time"] && holder.reagent_volumes[type] > removed) || messagedelay == -1) return - //max_dose < min_dose and volume > removed prevents message startup/startdown spam if you're using something like a cigarette or similiar device that transfers a little bit of reagents at a time. - //If in the case that a cigarette has a lower transfer rate than the metabolism rate, then message spam will occur since it's starting and stopping constantly. - //This also prevents the whole code from working if the dosage is very small. var/hastrauma = 0 //whether or not the brain has trauma var/obj/item/organ/internal/brain/B = H.internal_organs_by_name[BP_BRAIN] var/bac = H.get_blood_alcohol() + var/mdelay = messagedelay if(alchohol_affected && bac > 0.03) H.hallucination = max(H.hallucination, bac * 400) @@ -876,47 +886,47 @@ if(B) //You won't feel anything if you don't have a brain. for(var/datum/brain_trauma/BT in B.traumas) var/goal_volume = suppress_traumas[BT] - if (volume >= goal_volume) // If the dosage is greater than the goal, then suppress the trauma. + if (REAGENT_VOLUME(holder, type) >= goal_volume) // If the dosage is greater than the goal, then suppress the trauma. if(!BT.suppressed && !BT.permanent) BT.suppressed = 1 BT.on_lose() - else if(volume < goal_volume-1 && goal_volume > 0) // -1 So it doesn't spam back and forth constantly if reagents are being metabolized + else if(REAGENT_VOLUME(holder, type) < goal_volume-1 && goal_volume > 0) // -1 So it doesn't spam back and forth constantly if reagents are being metabolized if(BT.suppressed) BT.suppressed = 0 BT.on_gain() hastrauma = 1 for(var/datum/brain_trauma/BT in dosage_traumas) - var/percentchance = max(0,dosage_traumas[BT] - dose*10) // If you've been taking this medication for a while then side effects are rarer. + var/percentchance = max(0,dosage_traumas[BT] - LAZYACCESS(H.chem_doses, type)*10) // If you've been taking this medication for a while then side effects are rarer. if(!H.has_trauma_type(BT) && prob(percentchance)) B.gain_trauma(BT,FALSE) - if(volume < max_dose*0.25) //If you haven't been taking your regular dose, then cause issues. + if(REAGENT_VOLUME(holder, type) < LAZYACCESS(H.chem_doses, type)/4) //If you haven't been taking your regular dose, then cause issues. var/suppress_withdrawl = FALSE for(var/k in suppressing_reagents) - var/datum/reagent/v = suppressing_reagents[k] + var/decl/reagent/v = suppressing_reagents[k] if(H.reagents.has_reagent(v,k)) suppress_withdrawl = TRUE break if(!suppress_withdrawl) if (H.shock_stage < 20 && worstmessage.len) to_chat(H, SPAN_DANGER("[pick(worstmessage)]")) - messagedelay = initial(messagedelay) * 0.25 + mdelay /= 4 for(var/k in withdrawal_traumas) var/datum/brain_trauma/BT = k - var/percentchance = max(withdrawal_traumas[k] * (dose/20)) //The higher the dosage, the more likely it is do get withdrawal traumas. + var/percentchance = max(withdrawal_traumas[k] * (LAZYACCESS(H.chem_doses, type)/20)) //The higher the dosage, the more likely it is do get withdrawal traumas. if(!H.has_trauma_type(BT) && prob(percentchance)) B.gain_trauma(BT,FALSE) - else if(hastrauma || volume < max_dose*0.5) //If your current dose is not high enough, then alert the player. + else if(hastrauma || REAGENT_VOLUME(holder, type) < LAZYACCESS(H.chem_doses, type)/2) //If your current dose is not high enough, then alert the player. if (H.shock_stage < 10 && badmessage.len) to_chat(H, SPAN_WARNING("[pick(badmessage)]")) - messagedelay = initial(messagedelay) * 0.5 + mdelay /= 2 else if (H.shock_stage < 5 && goodmessage.len) to_chat(H, SPAN_GOOD("[pick(goodmessage)]")) - messagedelay = initial(messagedelay) - data = world.time + (messagedelay SECONDS) + LAZYINITLIST(holder.reagent_data) + LAZYSET(holder.reagent_data[type], "last_tick_time", world.time + (mdelay SECONDS)) -/datum/reagent/mental/nicotine +/decl/reagent/mental/nicotine name = "Nicotine" description = "Nicotine is an ancient stimulant and relaxant commonly found in tobacco products. It is very poisonous, unless at very low doses." reagent_state = LIQUID @@ -924,7 +934,6 @@ metabolism = 0.0016 * REM overdose = 5 od_minimum_dose = 3 - data = 0 taste_description = "bitterness" goodmessage = list("You feel good.","You feel relaxed.","You feel alert and focused.") badmessage = list("You start to crave nicotine...") @@ -935,30 +944,28 @@ ) conflicting_reagent = null min_dose = 0.0064 * REM - var/datum/modifier/modifier -/datum/reagent/mental/nicotine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mental/nicotine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() M.add_chemical_effect(CE_PAINKILLER, 5) -/datum/reagent/mental/nicotine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/scale) +/decl/reagent/mental/nicotine/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/scale, var/datum/reagents/holder) . = ..() M.adjustOxyLoss(10 * removed * scale) M.Weaken(10 * removed * scale) M.add_chemical_effect(CE_PULSE, 0.5) -/datum/reagent/mental/corophenidate +/decl/reagent/mental/corophenidate name = "Corophenidate" description = "Corophenidate is a new generation, psychoactive stimulant used in the treatment of ADHD and ADD. It has far fewer side effects than previous generations of CNS stimulants. Withdrawal symptoms include hallucinations and disruption of focus." reagent_state = LIQUID color = "#8888AA" metabolism = 0.01 * REM od_minimum_dose = 0.2 - data = 0 taste_description = "paper" goodmessage = list("You feel focused.","You feel like you have no distractions.","You feel willing to work.") badmessage = list("You feel a little distracted...","You feel slight agitation...","You feel a dislike towards work...") - worstmessage = list("You feel completely distrtacted...","You feel like you don't want to work...","You think you see things...") + worstmessage = list("You feel completely distracted...","You feel like you don't want to work...","You think you see things...") suppress_traumas = list( /datum/brain_trauma/special/imaginary_friend = 20, /datum/brain_trauma/mild/hallucinations = 10, @@ -972,21 +979,20 @@ /datum/brain_trauma/mild/hallucinations = 2 ) -/datum/reagent/mental/corophenidate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mental/corophenidate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_HALLUCINATE, -1) ..() -/datum/reagent/mental/corophendiate/overdose(var/mob/living/carbon/M, var/alien) - M.add_chemical_effect(CE_EMETIC, dose / 6) +/decl/reagent/mental/corophendiate/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) -/datum/reagent/mental/neurostabin +/decl/reagent/mental/neurostabin name = "Neurostabin" description = "Neurostabin is a new generation, psychoactive drug used in the treatment of psychoses, and also has clinical significance in treating muscle weakness. It has far fewer side effects than previous generations of psychoactive drugs. Withdrawal symptoms include hallucinations and the development of phobias." reagent_state = LIQUID color = "#888888" metabolism = 0.01 * REM od_minimum_dose = 0.2 - data = 0 taste_description = "bitterness" goodmessage = list("You do not feel the need to worry about simple things.","You feel calm and level-headed.","You feel fine.") badmessage = list("You feel a little blue.","You feel slight agitation...","You feel a little nervous...") @@ -1005,17 +1011,16 @@ /datum/brain_trauma/mild/hallucinations = 2 ) -/datum/reagent/mental/neurostabin/overdose(var/mob/living/carbon/M, var/alien) - M.add_chemical_effect(CE_EMETIC, dose / 6) +/decl/reagent/mental/neurostabin/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) -/datum/reagent/mental/parvosil +/decl/reagent/mental/parvosil name = "Parvosil" description = "Parvosil is a new generation, psychoactive drug used in the treatment of anxiety disorders such as phobias and social anxiety. It has far fewer side effects than previous generations of psychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." reagent_state = LIQUID color = "#88AA88" metabolism = 0.02 * REM od_minimum_dose = 0.4 - data = 0 taste_description = "paper" goodmessage = list("You feel fine.","You feel rational.","You feel decent.") badmessage = list("You feel a little blue.","You feel slight agitation...","You feel a little nervous...") @@ -1030,19 +1035,18 @@ /datum/brain_trauma/mild/phobia/ = 10, /datum/brain_trauma/mild/hallucinations = 5 ) - suppressing_reagents = list(/datum/reagent/mental/neurostabin = 5) + suppressing_reagents = list(/decl/reagent/mental/neurostabin = 5) -/datum/reagent/mental/parvosil/overdose(var/mob/living/carbon/M, var/alien) - M.add_chemical_effect(CE_EMETIC, dose / 6) +/decl/reagent/mental/parvosil/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) -/datum/reagent/mental/minaphobin +/decl/reagent/mental/minaphobin name = "Minaphobin" description = "Minaphobin is a new generation, psychoactive drug used in the treatment of anxiety disorders such as phobias and social anxiety. It has far fewer side effects than previous generations of psychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." reagent_state = LIQUID color = "#FF8888" metabolism = 0.01 * REM od_minimum_dose = 0.2 - data = 0 taste_description = "duct tape" goodmessage = list("You feel relaxed.","You feel at ease.","You feel care free.") badmessage = list("You feel worried.","You feel slight agitation.","You feel nervous.") @@ -1059,21 +1063,20 @@ /datum/brain_trauma/mild/hallucinations = 10 ) suppressing_reagents = list( - /datum/reagent/mental/neurostabin = 5, - /datum/reagent/mental/parvosil = 5 + /decl/reagent/mental/neurostabin = 5, + /decl/reagent/mental/parvosil = 5 ) -/datum/reagent/mental/minaphobin/overdose(var/mob/living/carbon/M, var/alien) - M.add_chemical_effect(CE_EMETIC, dose / 6) +/decl/reagent/mental/minaphobin/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) -/datum/reagent/mental/emoxanyl +/decl/reagent/mental/emoxanyl name = "Emoxanyl" description = "Emoxanyl is a novel, psychoactive medication which increases cerebral circulation and is used to treat anxiety, depression, concussion, and epilepsy. It has fewer side effects than many other forms of psychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." reagent_state = LIQUID color = "#88FFFF" metabolism = 0.01 * REM od_minimum_dose = 0.2 - data = 0 taste_description = "scotch tape" goodmessage = list("You feel at ease.","Your mind feels healthy..") badmessage = list("You worry about the littlest thing.","Your head starts to feel weird...","You think you see things.") @@ -1092,23 +1095,22 @@ /datum/brain_trauma/mild/concussion = 10 ) suppressing_reagents = list( - /datum/reagent/mental/neurapan = 5, - /datum/reagent/mental/minaphobin = 5, - /datum/reagent/mental/neurostabin = 10, - /datum/reagent/mental/parvosil = 10 + /decl/reagent/mental/neurapan = 5, + /decl/reagent/mental/minaphobin = 5, + /decl/reagent/mental/neurostabin = 10, + /decl/reagent/mental/parvosil = 10 ) -/datum/reagent/mental/emoxanyl/overdose(var/mob/living/carbon/M, var/alien) - M.add_chemical_effect(CE_EMETIC, dose / 6) +/decl/reagent/mental/emoxanyl/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) -/datum/reagent/mental/orastabin +/decl/reagent/mental/orastabin name = "Orastabin" description = "Orastabin is a new generation, complex psychoactive medication used in the treatment of anxiety disorders and speech impediments. It has fewer side effects than many other forms of psychoactive drugs. Withdrawal symptoms include hallucinations and heightened anxiety." reagent_state = LIQUID color = "#FF88FF" metabolism = 0.01 * REM od_minimum_dose = 0.2 - data = 0 taste_description = "glue" goodmessage = list("You feel at ease.","Your mind feels healthy..","You feel unafraid to speak...") badmessage = list("You worry about the littlest thing.","You think you see things.") @@ -1127,17 +1129,17 @@ /datum/brain_trauma/mild/hallucinations = 25 ) suppressing_reagents = list( - /datum/reagent/mental/emoxanyl = 5, - /datum/reagent/mental/neurapan = 5, - /datum/reagent/mental/minaphobin = 5, - /datum/reagent/mental/neurostabin = 10, - /datum/reagent/mental/parvosil = 10 + /decl/reagent/mental/emoxanyl = 5, + /decl/reagent/mental/neurapan = 5, + /decl/reagent/mental/minaphobin = 5, + /decl/reagent/mental/neurostabin = 10, + /decl/reagent/mental/parvosil = 10 ) -/datum/reagent/mental/orastabin/overdose(var/mob/living/carbon/M, var/alien) - M.add_chemical_effect(CE_EMETIC, dose / 6) +/decl/reagent/mental/orastabin/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) -/datum/reagent/mental/neurapan +/decl/reagent/mental/neurapan name = "Neurapan" description = "Neurapan is a groundbreaking, expensive antipsychotic medication capable of treating a whole spectrum of mental illnesses, including psychoses, anxiety disorders, Tourette Syndrome and depression, and can alleviate symptoms of stress. Neurapan can be addictive due to its tranquilising effects, and withdrawal symptoms are dangerous." reagent_state = LIQUID @@ -1145,7 +1147,6 @@ overdose = 10 metabolism = 0.02 * REM od_minimum_dose = 0.4 - data = 0 taste_description = "tranquility" goodmessage = list("Your mind feels as one.","You feel incredibly comfortable.","Your body feels good.","Your thoughts are clear.", "You feel stress free.", "Nothing is bothering you anymore.") badmessage = list("The tranquility fades and you start hearing voices...","You think you see things...","You remember the stress you left behind...","You want attention...") @@ -1172,20 +1173,20 @@ /datum/brain_trauma/severe/monophobia = 50 ) suppressing_reagents = list( - /datum/reagent/mental/orastabin = 20, - /datum/reagent/mental/emoxanyl = 20, - /datum/reagent/mental/neurapan = 20, - /datum/reagent/mental/minaphobin = 20 + /decl/reagent/mental/orastabin = 20, + /decl/reagent/mental/emoxanyl = 20, + /decl/reagent/mental/neurapan = 20, + /decl/reagent/mental/minaphobin = 20 ) -/datum/reagent/mental/neurapan/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mental/neurapan/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_HALLUCINATE, -2) ..() -/datum/reagent/mental/neurapan/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/mental/neurapan/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) M.add_chemical_effect(CE_PACIFIED, 1) M.eye_blurry = max(M.eye_blurry, 30) - if((locate(/datum/reagent/oxycomorphine) in M.reagents.reagent_list)) + if(REAGENT_VOLUME(M.reagents, /decl/reagent/oxycomorphine)) M.ear_deaf = 20 M.drowsyness = max(M.drowsyness, 10) M.make_dizzy(15) @@ -1195,14 +1196,13 @@ if(prob(3)) to_chat(M, SPAN_GOOD(pick("Stress was an inconvenience that you are now free of.", "You feel somewhat dettached from reality.", "You can feel time passing by and it no longer bothers you."))) -/datum/reagent/mental/nerospectan +/decl/reagent/mental/nerospectan name = "Nerospectan" description = "Nerospectan is an expensive, new generation anti-psychotic medication capable of treating a whole spectrum of mental illnesses, including psychoses, anxiety disorders, Tourette Syndrome and depression, and can alleviate symptoms of stress. Nerospectan can be addictive due to its tranquilising effects, and withdrawal symptoms are dangerous." reagent_state = LIQUID color = "#FF8844" metabolism = 0.02 * REM od_minimum_dose = 0.4 - data = 0 taste_description = "paint" goodmessage = list("Your mind feels as one.","You feel comfortable speaking.","Your body feels good.","Your thoughts are pure.","Your body feels responsive.","You can handle being alone.") badmessage = list("You start hearing voices...","You think you see things...","You want a friend...") @@ -1226,27 +1226,26 @@ /datum/brain_trauma/special/imaginary_friend = 50 ) suppressing_reagents = list( - /datum/reagent/mental/orastabin = 20, - /datum/reagent/mental/emoxanyl = 20, - /datum/reagent/mental/neurapan = 20, - /datum/reagent/mental/minaphobin = 20 + /decl/reagent/mental/orastabin = 20, + /decl/reagent/mental/emoxanyl = 20, + /decl/reagent/mental/neurapan = 20, + /decl/reagent/mental/minaphobin = 20 ) -/datum/reagent/mental/nerospectan/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mental/nerospectan/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_HALLUCINATE, -2) ..() -/datum/reagent/mental/nerospectan/overdose(var/mob/living/carbon/M, var/alien) - M.add_chemical_effect(CE_EMETIC, dose / 6) +/decl/reagent/mental/nerospectan/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) -/datum/reagent/mental/truthserum +/decl/reagent/mental/truthserum name = "Truth Serum" description = "Truth Serum is an expensive and very unethical psychoactive drug capable of inhibiting defensive measures and reasoning in regards to communication, resulting in those under the effects of the drug to be very open to telling the truth." reagent_state = LIQUID color = "#888888" metabolism = 0.05 * REM od_minimum_dose = 1 - data = 0 taste_description = "something" goodmessage = list("You feel like you have nothing to hide.","You feel compelled to spill your secrets.","You feel like you can trust those around you.") badmessage = list() @@ -1260,17 +1259,16 @@ messagedelay = 30 ingest_mul = 1 -/datum/reagent/mental/truthserum/overdose(var/mob/living/carbon/M, var/alien) - M.add_chemical_effect(CE_EMETIC, dose / 6) +/decl/reagent/mental/truthserum/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) -/datum/reagent/mental/vaam +/decl/reagent/mental/vaam name = "V'krexi Amino Acid Mixture" description = "A mixture of several high-energy amino acids, based on the secretions and saliva of V'krexi larvae." reagent_state = LIQUID color = "#bcd827" metabolism = 0.4 * REM overdose = 20 - data = 0 taste_description = "bitterness" metabolism_min = 0.5 breathe_mul = 0 @@ -1280,14 +1278,13 @@ suppress_traumas = list( /datum/brain_trauma/mild/muscle_weakness/ = 0.01 ) - var/datum/modifier/modifier -/datum/reagent/mental/vaam/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mental/vaam/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() M.add_chemical_effect(CE_PAINKILLER, 5) M.drowsyness = 0 -/datum/reagent/mental/vaam/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/scale) +/decl/reagent/mental/vaam/overdose(var/mob/living/carbon/human/M, var/alien, var/removed, var/scale, var/datum/reagents/holder) . = ..() M.adjustOxyLoss(1 * removed * scale) M.Weaken(10 * removed * scale) @@ -1297,11 +1294,11 @@ if (prob(10)) to_chat(M, pick("You feel nauseous", "Ugghh....", "Your stomach churns uncomfortably", "You feel like you're about to throw up", "You feel queasy","You feel pressure in your abdomen")) - if (prob(dose)) + if (prob(M.chem_doses[type])) M.vomit() -/datum/reagent/mental/kokoreed +/decl/reagent/mental/kokoreed name = "Koko Reed Juice" description = "Juice from the Koko reed plant. Causes unique mental effects in Unathi." reagent_state = LIQUID @@ -1309,7 +1306,6 @@ metabolism = 0.0016 * REM overdose = 5 od_minimum_dose = 3 - data = 0 taste_description = "sugar" goodmessage = list("You feel pleasantly warm.","You feel like you've been basking in the sun.","You feel focused and warm...") badmessage = list() @@ -1317,20 +1313,18 @@ suppress_traumas = list() conflicting_reagent = null min_dose = 0.0064 * REM - var/datum/modifier/modifier -/datum/reagent/mental/kokoreed/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mental/kokoreed/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() if(M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT)) -/datum/reagent/mental/kokoreed/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/scale) +/decl/reagent/mental/kokoreed/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/scale, var/datum/reagents/holder) . = ..() if(isunathi(M)) - if (!modifier) - modifier = M.add_modifier(/datum/modifier/stimulant, MODIFIER_REAGENT, src, _strength = 1, override = MODIFIER_OVERRIDE_STRENGTHEN) + M.add_up_to_chemical_effect(CE_SPEEDBOOST, 1) -/datum/reagent/cataleptinol +/decl/reagent/cataleptinol name = "Cataleptinol" description = "Cataleptinol is a highly advanced, expensive medication capable of regenerating the most damaged of brain tissues. Cataleptinol is used in the treatment of dumbness, cerebral blindness, cerebral paralysis and aphasia. The drug is more effective when the patient's core temperature is below 170K." reagent_state = LIQUID @@ -1348,11 +1342,11 @@ /datum/brain_trauma/severe/aphasia/ ) -/datum/reagent/cataleptinol/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/cataleptinol/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_PAINKILLER, 10) M.dizziness = max(100, M.dizziness) M.make_dizzy(5) - var/chance = dose*removed + var/chance = M.chem_doses[type]*removed if(M.bodytemperature < 170) chance = (chance*4) + 5 M.add_chemical_effect(CE_BRAIN_REGEN, 30) //1 unit of cryo-tube Cataleptinol will raise brain activity by 10%. @@ -1362,11 +1356,11 @@ if(prob(chance)) M.cure_trauma_type(pick(curable_traumas)) -/datum/reagent/cataleptinol/overdose(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/cataleptinol/overdose(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.hallucination = max(M.hallucination, 15) var/obj/item/organ/internal/brain/B = M.internal_organs_by_name[BP_BRAIN] if(B && M.species && M.species.has_organ[BP_BRAIN] && !isipc(M)) - if(prob(dose / 2) && !B.has_trauma_type(BRAIN_TRAUMA_SEVERE) && !B.has_trauma_type(BRAIN_TRAUMA_MILD) && !B.has_trauma_type(BRAIN_TRAUMA_SPECIAL)) + if(prob(M.chem_doses[type] / 2) && !B.has_trauma_type(BRAIN_TRAUMA_SEVERE) && !B.has_trauma_type(BRAIN_TRAUMA_MILD) && !B.has_trauma_type(BRAIN_TRAUMA_SPECIAL)) B.gain_trauma_type(pick(/datum/brain_trauma/severe/paralysis, /datum/brain_trauma/severe/aphasia, /datum/brain_trauma/mild/dumbness, /datum/brain_trauma/mild/muscle_weakness, /datum/brain_trauma/mild/colorblind, /datum/brain_trauma/special/imaginary_friend)) if(prob(5)) to_chat(M, SPAN_WARNING(pick("You have a painful headache!", "You feel a throbbing pain behind your eyes!"))) @@ -1381,7 +1375,7 @@ //Narcolepsy //Discoordination -/datum/reagent/fluvectionem +/decl/reagent/fluvectionem name = "Fluvectionem" description = "Fluvectionem is a complex anti-toxin medication that is capable of purging the bloodstream of toxic reagents. The drug is capable of neutralising the most difficult of compounds and acts very fast, however it is inefficient and results in benign waste products that can be damaging to the liver." color = "#222244" @@ -1391,20 +1385,21 @@ taste_description = "thick salt" reagent_state = SOLID -/datum/reagent/fluvectionem/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - var/is_overdosed = overdose && (volume > overdose) && (dose > od_minimum_dose) +/decl/reagent/fluvectionem/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + var/is_overdosed = is_overdosing(M, holder = holder) if(is_overdosed) removed *= 2 var/amount_to_purge = removed*4 //Every unit removes 4 units of other chemicals var/amount_purged = 0 - for(var/datum/reagent/selected in M.reagents.reagent_list) - if(selected == src) + for(var/_selected in M.reagents.reagent_volumes) + var/decl/reagent/selected = decls_repository.get_decl(_selected) + if(_selected == type) continue - if(selected.type == /datum/reagent/blood && !is_overdosed) + if(_selected == /decl/reagent/blood && !is_overdosed) continue - var/local_amount = min(amount_to_purge, selected.volume) + var/local_amount = min(amount_to_purge, REAGENT_VOLUME(M.reagents, _selected)) M.reagents.remove_reagent(selected.type, local_amount) amount_to_purge -= local_amount amount_purged += local_amount @@ -1415,7 +1410,7 @@ . = ..() -/datum/reagent/pulmodeiectionem +/decl/reagent/pulmodeiectionem name = "Pulmodeiectionem" description = "Pulmodeiectionem is a complex anti-toxin medication that is capable of purging the lungs of toxic reagents by damaging the mucous lining of the bronchi and trachea, allowing particulate to be coughed out of the lungs. Pulmodeiectionem works only when inhaled and can cause long-term damage to the lungs." color = "#550055" @@ -1425,16 +1420,17 @@ taste_description = "coarse dust" reagent_state = SOLID -/datum/reagent/pulmodeiectionem/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed) +/decl/reagent/pulmodeiectionem/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) if(istype(H)) var/obj/item/organ/L = H.internal_organs_by_name[BP_LUNGS] if(istype(L) && !L.robotic && !L.is_broken()) var/amount_to_purge = removed*5 //Every unit removes 5 units of other chemicals. - for(var/datum/reagent/selected in H.breathing.reagent_list) + for(var/_selected in H.breathing.reagent_volumes) + var/decl/reagent/selected = decls_repository.get_decl(_selected) if(selected == src) continue - var/local_amount = min(amount_to_purge, selected.volume) - H.breathing.remove_reagent(selected.type, local_amount) + var/local_amount = min(amount_to_purge, REAGENT_VOLUME(H.breathing, _selected)) + H.breathing.remove_reagent(_selected, local_amount) amount_to_purge -= local_amount if(amount_to_purge <= 0) break @@ -1445,20 +1441,20 @@ H.add_chemical_effect(CE_PNEUMOTOXIC, 0.2*removed) . = ..() -/datum/reagent/pulmodeiectionem/affect_ingest(var/mob/living/carbon/human/H, var/alien, var/removed) - if(volume > 5) +/decl/reagent/pulmodeiectionem/affect_ingest(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) + if(REAGENT_VOLUME(holder, type) > 5) if(prob(50)) H.visible_message("[H] splutters, coughing up a cloud of purple dust.", "You cough up a cloud of purple dust.") - volume = volume - 10 + remove_self(10, holder) else H.adjustOxyLoss(2) H.add_chemical_effect(CE_PNEUMOTOXIC, 0.1) -/datum/reagent/pulmodeiectionem/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/pulmodeiectionem/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustToxLoss(2 * removed) - M.add_chemical_effect(CE_ITCH, dose) + M.add_chemical_effect(CE_ITCH, M.chem_doses[type]) -/datum/reagent/pneumalin +/decl/reagent/pneumalin name = "Pneumalin" description = "Pneumalin is a powerful, organ-regenerative medication that increases the rate at which lung tissues are regenerated. Pneumalin only works when inhaled, and overdosing can lead to severe bradycardia." color = "#8154b4" @@ -1467,7 +1463,7 @@ taste_description = "fine dust" reagent_state = SOLID -/datum/reagent/pneumalin/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed) +/decl/reagent/pneumalin/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) H.adjustOxyLoss(removed) //Every unit heals 1 oxy damage H.add_chemical_effect(CE_PNEUMOTOXIC, -removed * 1.5) H.add_chemical_effect(CE_PULSE, -1) @@ -1479,10 +1475,10 @@ . = ..() -/datum/reagent/pneumalin/overdose(var/mob/living/carbon/human/H, var/alien, var/removed) - H.add_chemical_effect(CE_PULSE, -dose * 0.33) +/decl/reagent/pneumalin/overdose(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) + H.add_chemical_effect(CE_PULSE, -H.chem_doses[type] * 0.33) -/datum/reagent/rezadone +/decl/reagent/rezadone name = "Rezadone" description = "Rezadone is an extremely expensive, ground-breaking miracle drug. The compound is capable of treating all kinds of physical damage, disfiguration, as well as genetic damage. Excessive consumption of rezadone can lead to severe disorientation." reagent_state = SOLID @@ -1491,18 +1487,18 @@ scannable = TRUE taste_description = "sickness" -/datum/reagent/rezadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/rezadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustCloneLoss(-20 * removed) M.adjustOxyLoss(-2 * removed) M.heal_organ_damage(20 * removed, 20 * removed) M.adjustToxLoss(-1 * removed) - if(dose > 3) + if(M.chem_doses[type] > 3) M.status_flags &= ~DISFIGURED - if(dose > 10) + if(M.chem_doses[type] > 10) M.make_dizzy(5) M.make_jittery(5) -/datum/reagent/verunol +/decl/reagent/verunol name = "Verunol Syrup" description = "A complex emetic medication that causes the patient to vomit due to gastric irritation and the stimulating of the vomit centres of the brain." reagent_state = LIQUID @@ -1511,16 +1507,16 @@ scannable = TRUE taste_description = "sweet syrup" -/datum/reagent/verunol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) - if (prob(10+dose)) +/decl/reagent/verunol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + if (prob(10+M.chem_doses[type])) to_chat(M, pick("You feel nauseous!", "Your stomach churns uncomfortably.", "You feel like you're about to throw up.", "You feel queasy.", "You feel bile in your throat.")) - M.add_chemical_effect(CE_EMETIC, dose) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type]) -/datum/reagent/verunol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/verunol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustToxLoss(2 * removed) //If you inject it you're doing it wrong -/datum/reagent/azoth +/decl/reagent/azoth name = "Azoth" description = "Azoth is a miraculous medicine, capable of healing internal injuries." reagent_state = LIQUID @@ -1529,7 +1525,7 @@ overdose = 5 fallback_specific_heat = 1.2 -/datum/reagent/azoth/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/azoth/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -1548,10 +1544,10 @@ E.stage = 0 return 1 -/datum/reagent/azoth/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/azoth/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) M.adjustBruteLoss(5) -/datum/reagent/adipemcina +/decl/reagent/adipemcina name = "Adipemcina" description = "Adipemcina is a complex, organ-regenerative medication that increases the rate at which cells differentiate into myocardial cells. Adipemcina overdoses result in severe liver damage and vomiting." reagent_state = LIQUID @@ -1560,20 +1556,20 @@ scannable = TRUE taste_description = "bitterness" -/datum/reagent/adipemcina/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/adipemcina/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) M.add_chemical_effect(CE_CARDIOTOXIC, -removed*2) var/obj/item/organ/internal/heart/H = M.internal_organs_by_name[BP_HEART] if(istype(H) && !BP_IS_ROBOTIC(H)) H.damage = max(H.damage - (removed * 2), 0) ..() -/datum/reagent/adipemcina/overdose(var/mob/living/carbon/human/M, var/alien) - M.add_chemical_effect(CE_EMETIC, dose / 6) +/decl/reagent/adipemcina/overdose(var/mob/living/carbon/human/M, var/alien, var/datum/reagents/holder) + M.add_chemical_effect(CE_EMETIC, M.chem_doses[type] / 6) if(istype(M)) if(prob(25)) M.add_chemical_effect(CE_HEPATOTOXIC, 1) -/datum/reagent/saline +/decl/reagent/saline name = "Saline Plus" description = "Saline Plus is an expensive improvement upon the various saline solutions of old. Saline Plus has wide clinical applications in the treatment of dehydration and hypovolaemia, with no more debates as to whether it is effective or not." reagent_state = LIQUID @@ -1587,21 +1583,21 @@ ingest_mul = 0 breathe_mul = 0 -/datum/reagent/saline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/saline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if((M.hydration > M.max_hydration) > CREW_HYDRATION_OVERHYDRATED) M.adjustHydrationLoss(-removed*2) else M.adjustHydrationLoss(-removed*5) - if(volume < 3) + if(REAGENT_VOLUME(holder, type) < 3) M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) -/datum/reagent/saline/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/saline/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) M.confused = max(M.confused, 20) M.make_jittery(5) if(prob(2)) M.emote("twitch") -/datum/reagent/adrenaline +/decl/reagent/adrenaline name = "Adrenaline" description = "Adrenaline is a hormone used as a drug to treat cardiac arrest and other cardiac dysrhythmias resulting in diminished or absent cardiac output." taste_description = "rush" @@ -1615,25 +1611,25 @@ breathe_mul = 0 ingest_mul = 0 -/datum/reagent/adrenaline/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/adrenaline/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(alien == IS_DIONA) return - if(dose < 1) //not that effective after initial rush - M.add_chemical_effect(CE_PAINKILLER, min(15*volume, 35)) + if(M.chem_doses[type] < 1) //not that effective after initial rush + M.add_chemical_effect(CE_PAINKILLER, min(15*REAGENT_VOLUME(holder, type), 35)) M.add_chemical_effect(CE_PULSE, 1) else - M.add_chemical_effect(CE_PAINKILLER, min(10*volume, 15)) + M.add_chemical_effect(CE_PAINKILLER, min(10*REAGENT_VOLUME(holder, type), 15)) M.add_chemical_effect(CE_PULSE, 2) - if(dose > 5) + if(M.chem_doses[type] > 5) M.make_jittery(5) - if(volume >= 5 && M.is_asystole()) - remove_self(5) + if(REAGENT_VOLUME(holder, type) >= 5 && M.is_asystole()) + remove_self(5, holder) if(M.resuscitate()) var/obj/item/organ/internal/heart = M.internal_organs_by_name[BP_HEART] M.add_chemical_effect(CE_CARDIOTOXIC, heart.max_damage * 0.15) //Secret Chems -/datum/reagent/elixir +/decl/reagent/elixir name = "Elixir of Life" description = "A mythical substance, the cure for the ultimate illness." color = "#ffd700" @@ -1641,14 +1637,14 @@ taste_description = "eternal blissfulness" fallback_specific_heat = 2 -/datum/reagent/elixir/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/elixir/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(ishuman(M)) if(M && M.stat == DEAD) M.adjustOxyLoss(-rand(15,20)) M.visible_message(SPAN_DANGER("\The [M] shudders violently!")) M.stat = 0 -/datum/reagent/pacifier +/decl/reagent/pacifier name = "Paxazide" description = "Paxazide is an expensive and unethical, psychoactive drug used to pacify people, suppressing regions of the brain responsible for anger and violence. Paxazide can be addictive due to its tranquilising effects, though withdrawal symptoms are scarce." reagent_state = LIQUID @@ -1656,13 +1652,13 @@ overdose = REAGENTS_OVERDOSE taste_description = "numbness" -/datum/reagent/pacifier/affect_blood(var/mob/living/carbon/H, var/alien, var/removed) +/decl/reagent/pacifier/affect_blood(var/mob/living/carbon/H, var/alien, var/removed, var/datum/reagents/holder) H.add_chemical_effect(CE_PACIFIED, 1) -/datum/reagent/pacifier/overdose(var/mob/living/carbon/H, var/alien) - H.add_chemical_effect(CE_EMETIC, dose / 6) +/decl/reagent/pacifier/overdose(var/mob/living/carbon/H, var/alien, var/datum/reagents/holder) + H.add_chemical_effect(CE_EMETIC, H.chem_doses[type] / 6) -/datum/reagent/rmt +/decl/reagent/rmt name = "Regenerative-Muscular Tissue Supplements" description = "RMT Supplement is a bioengineered, fast-acting growth factor that specifically helps recover bone and muscle mass caused by prolonged zero-gravity adaptations. It can also be used to treat chronic muscle weakness." reagent_state = LIQUID @@ -1673,11 +1669,11 @@ taste_description = "sourness" fallback_specific_heat = 1 -/datum/reagent/rmt/overdose(var/mob/living/carbon/H, var/alien) +/decl/reagent/rmt/overdose(var/mob/living/carbon/H, var/alien, var/datum/reagents/holder) if(prob(2)) to_chat(H, SPAN_WARNING(pick("Your muscles are stinging a bit.", "Your muscles ache."))) -/datum/reagent/coagzolug +/decl/reagent/coagzolug name = "Coagzolug" description = "A medicine that was stumbled upon by accident, coagzolug encourages blood to clot and slow down bleeding. An overdose causes dangerous blood clots capable of harming the heart." reagent_state = LIQUID @@ -1688,12 +1684,12 @@ taste_description = "throat-clenching sourness" fallback_specific_heat = 1 -/datum/reagent/coagzolug/affect_blood(mob/living/carbon/M, alien, removed) +/decl/reagent/coagzolug/affect_blood(mob/living/carbon/M, alien, removed) . = ..() M.add_chemical_effect(CE_BLOODCLOT) M.make_dizzy(5) -/datum/reagent/coagzolug/overdose(var/mob/living/carbon/H, var/alien) +/decl/reagent/coagzolug/overdose(var/mob/living/carbon/H, var/alien) if(prob(2)) to_chat(H, SPAN_WARNING(pick("You feel a clot shoot through your heart!", "Your veins feel like they're being shredded!"))) var/obj/item/organ/internal/heart/heart = H.internal_organs_by_name[BP_HEART] diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index 644fad9499a..8c12ead05f0 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -1,6 +1,6 @@ /* Paint and crayons */ -/datum/reagent/crayon_dust +/decl/reagent/crayon_dust name = "Crayon Dust" description = "Intensely coloured powder obtained by grinding crayons." reagent_state = LIQUID @@ -9,116 +9,84 @@ taste_description = "the back of class" fallback_specific_heat = 0.4 -/datum/reagent/crayon_dust/red +/decl/reagent/crayon_dust/red name = "Red Crayon Dust" color = "#FE191A" taste_description = "chalky strawberry wax" -/datum/reagent/crayon_dust/orange +/decl/reagent/crayon_dust/orange name = "Orange Crayon Dust" color = "#FFBE4F" taste_description = "chalky orange peels" -/datum/reagent/crayon_dust/yellow +/decl/reagent/crayon_dust/yellow name = "Yellow Crayon Dust" color = "#FDFE7D" taste_description = "chalky lemon rinds" -/datum/reagent/crayon_dust/green +/decl/reagent/crayon_dust/green name = "Green Crayon Dust" color = "#18A31A" taste_description = "chalky lime rinds" -/datum/reagent/crayon_dust/blue +/decl/reagent/crayon_dust/blue name = "Blue Crayon Dust" color = "#247CFF" taste_description = "chalky blueberry skins" -/datum/reagent/crayon_dust/purple +/decl/reagent/crayon_dust/purple name = "Purple Crayon Dust" color = "#CC0099" taste_description = "chalky grape skins" -/datum/reagent/crayon_dust/grey //Mime +/decl/reagent/crayon_dust/grey //Mime name = "Grey Crayon Dust" color = "#808080" taste_description = "chalky crushed dreams" -/datum/reagent/crayon_dust/brown //Rainbow +/decl/reagent/crayon_dust/brown //Rainbow name = "Brown Crayon Dust" color = "#846F35" taste_description = "raw, powerful creativity" -/datum/reagent/paint +/decl/reagent/paint name = "Paint" description = "This paint will stick to almost any object." reagent_state = LIQUID color = "#808080" overdose = REAGENTS_OVERDOSE * 0.5 - color_weight = 20 + color_weight = 0 taste_description = "chalk" fallback_specific_heat = 0.2 + var/unpaintable_types = list(/obj/item/reagent_containers, /obj/machinery/chem_master, /obj/machinery/chemical_dispenser, /obj/machinery/chem_heater) -/datum/reagent/paint/touch_turf(var/turf/T) +/decl/reagent/paint/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) if(istype(T) && !istype(T, /turf/space)) - T.color = color + T.color = holder.get_color() -/datum/reagent/paint/touch_obj(var/obj/O) +/decl/reagent/paint/touch_mob(var/mob/living/M, var/amount, var/datum/reagents/holder) + if(istype(M)) + M.color = holder.get_color() + +/decl/reagent/paint/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) //special checks for special items - if(istype(O, /obj/item/reagent_containers)) + var/setcolor = holder.get_color() + if(is_type_in_list(O, unpaintable_types)) return else if(istype(O, /obj/item/light)) var/obj/item/light/L = O - L.brightness_color = color + L.brightness_color = setcolor L.update() else if(istype(O, /obj/machinery/light)) var/obj/machinery/light/L = O - L.brightness_color = color + L.brightness_color = setcolor L.update() else if(istype(O)) - O.color = color - -/datum/reagent/paint/touch_mob(var/mob/M) - . = ..() - if(istype(M) && !istype(M, /mob/abstract)) //painting ghosts: not allowed - M.color = color //maybe someday change this to paint only clothes and exposed body parts for human mobs. - -/datum/reagent/paint/get_data() - return color - -/datum/reagent/paint/initialize_data(var/newdata) - color = newdata - return - -/datum/reagent/paint/mix_data(var/newdata, var/newamount) - var/list/colors = list(0, 0, 0, 0) - var/tot_w = 0 - - var/hex1 = uppertext(color) - var/hex2 = uppertext(newdata) - if(length(hex1) == 7) - hex1 += "FF" - if(length(hex2) == 7) - hex2 += "FF" - if(length(hex1) != 9 || length(hex2) != 9) - return - colors[1] += hex2num(copytext(hex1, 2, 4)) * volume - colors[2] += hex2num(copytext(hex1, 4, 6)) * volume - colors[3] += hex2num(copytext(hex1, 6, 8)) * volume - colors[4] += hex2num(copytext(hex1, 8, 10)) * volume - tot_w += volume - colors[1] += hex2num(copytext(hex2, 2, 4)) * newamount - colors[2] += hex2num(copytext(hex2, 4, 6)) * newamount - colors[3] += hex2num(copytext(hex2, 6, 8)) * newamount - colors[4] += hex2num(copytext(hex2, 8, 10)) * newamount - tot_w += newamount - - color = rgb(colors[1] / tot_w, colors[2] / tot_w, colors[3] / tot_w, colors[4] / tot_w) - return + O.color = setcolor /* Things that didn't fit anywhere else */ -/datum/reagent/adminordrazine //An OP chemical for admins +/decl/reagent/adminordrazine //An OP chemical for admins name = "Adminordrazine" description = "It's magic, I ain't gotta explain shit." reagent_state = LIQUID @@ -133,10 +101,10 @@ fallback_specific_heat = 10 //Magical. -/datum/reagent/adminordrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - affect_blood(M, alien, removed) +/decl/reagent/adminordrazine/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + affect_blood(M, alien, removed, holder) -/datum/reagent/adminordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/adminordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.setCloneLoss(0) M.setOxyLoss(0) M.total_radiation = 0 @@ -160,7 +128,7 @@ M.jitteriness = 0 M.intoxication = 0 -/datum/reagent/gold +/decl/reagent/gold name = "Gold" description = "Gold is a dense, soft, shiny metal and the most malleable and ductile metal known." reagent_state = SOLID @@ -168,7 +136,7 @@ taste_description = "expensive metal" fallback_specific_heat = 2.511 -/datum/reagent/silver +/decl/reagent/silver name = "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 @@ -176,7 +144,7 @@ taste_description = "expensive yet reasonable metal" fallback_specific_heat = 0.241 -/datum/reagent/uranium +/decl/reagent/uranium name = "Uranium" description = "A silvery-white metallic chemical element in the actinide series, weakly radioactive." reagent_state = SOLID @@ -184,21 +152,21 @@ taste_description = "the inside of a reactor" fallback_specific_heat = 2.286 -/datum/reagent/uranium/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) - affect_ingest(M, alien, removed) +/decl/reagent/uranium/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + affect_ingest(M, alien, removed, holder) -/datum/reagent/uranium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/uranium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.apply_effect(5 * removed, IRRADIATE, blocked = 0) -/datum/reagent/uranium/touch_turf(var/turf/T) - if(volume >= 3) +/decl/reagent/uranium/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) + if(amount >= 3) if(!istype(T, /turf/space)) var/obj/effect/decal/cleanable/greenglow/glow = locate(/obj/effect/decal/cleanable/greenglow, T) if(!glow) new /obj/effect/decal/cleanable/greenglow(T) return -/datum/reagent/platinum +/decl/reagent/platinum name ="Platinum" description = "Platinum is a naturally occuring silvery metalic element." reagent_state = SOLID @@ -206,7 +174,7 @@ taste_description = "salty metalic miner tears" fallback_specific_heat = 0.2971 -/datum/reagent/water/holywater +/decl/reagent/water/holywater name = "Holy Water" description = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality." color = "#E0E8EF" @@ -215,7 +183,7 @@ glass_name = "glass of holy water" glass_desc = "An ashen-obsidian-water mix, this solution will alter certain sections of the brain's rationality." -/datum/reagent/water/holywater/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/water/holywater/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(ishuman(M)) if(M.mind) @@ -228,38 +196,38 @@ M.adjust_fire_stacks(10) M.IgniteMob() -/datum/reagent/water/holywater/touch_turf(var/turf/T) - if(volume >= 5) +/decl/reagent/water/holywater/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) + if(amount >= 5) T.holy = 1 return -/datum/reagent/water/holywater/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/water/holywater/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien && alien == IS_UNDEAD) M.adjust_fire_stacks(5) M.IgniteMob() -/datum/reagent/diethylamine +/decl/reagent/diethylamine name = "Diethylamine" description = "A secondary amine, mildly corrosive." reagent_state = LIQUID color = "#604030" taste_description = "iron" -/datum/reagent/surfactant // Foam precursor +/decl/reagent/surfactant // Foam precursor name = "Azosurfactant" description = "A isocyanate liquid that forms a foam when mixed with water." reagent_state = LIQUID color = "#9E6B38" taste_description = "metal" -/datum/reagent/foaming_agent // Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually. +/decl/reagent/foaming_agent // Metal foaming agent. This is lithium hydride. Add other recipes (e.g. LiH + H2O -> LiOH + H2) eventually. name = "Foaming Agent" description = "A agent that yields metallic foam when mixed with light metal and a strong acid." reagent_state = SOLID color = "#664B63" taste_description = "metal" -/datum/reagent/thermite +/decl/reagent/thermite name = "Thermite" description = "Thermite produces an aluminothermic reaction known as a thermite reaction. Can be used to melt walls." reagent_state = SOLID @@ -267,24 +235,25 @@ touch_met = 50 taste_description = "sweet tasting metal" -/datum/reagent/thermite/touch_turf(var/turf/T) +/decl/reagent/thermite/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) . = ..() - if(volume >= 5) + if(amount >= 5) if(istype(T, /turf/simulated/wall)) var/turf/simulated/wall/W = T W.thermite = 1 W.add_overlay(image('icons/effects/effects.dmi',icon_state = "#673910")) - remove_self(5) + remove_self(5, holder) return -/datum/reagent/thermite/touch_mob(var/mob/living/L, var/amount) +/decl/reagent/thermite/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder) + . = ..() if(istype(L)) L.adjust_fire_stacks(amount / 5) -/datum/reagent/thermite/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/thermite/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustFireLoss(3 * removed) -/datum/reagent/spacecleaner +/decl/reagent/spacecleaner name = "Space Cleaner" description = "A compound used to clean things. Now with 50% more sodium hypochlorite!" reagent_state = LIQUID @@ -293,17 +262,17 @@ taste_description = "sourness" germ_adjust = 10 -/datum/reagent/spacecleaner/touch_obj(var/obj/O) +/decl/reagent/spacecleaner/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) O.clean_blood() -/datum/reagent/spacecleaner/touch_turf(var/turf/T) - if(volume >= 1) +/decl/reagent/spacecleaner/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) + if(amount >= 1) if(istype(T, /turf/simulated)) var/turf/simulated/S = T S.dirt = 0 T.clean_blood() -/datum/reagent/spacecleaner/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/spacecleaner/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(M.r_hand) M.r_hand.clean_blood() if(M.l_hand) @@ -333,59 +302,58 @@ if(istype(M,/mob/living/carbon/slime)) var/mob/living/carbon/slime/S = M - S.adjustToxLoss( volume * (removed/REM) * 0.5 ) + S.adjustToxLoss( REAGENT_VOLUME(holder, type) * (removed/REM) * 0.5 ) if(!S.client) if(S.target) // Like cats S.target = null ++S.discipline - if(dose == removed) + if(M.chem_doses[type] == removed) S.visible_message(SPAN_WARNING("[S]'s flesh sizzles where the space cleaner touches it!"), SPAN_DANGER("Your flesh burns in the space cleaner!")) -/datum/reagent/lube +/decl/reagent/lube name = "Space Lube" description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them." reagent_state = LIQUID color = "#009CA8" taste_description = "cherry" -/datum/reagent/lube/touch_turf(var/turf/simulated/T) +/decl/reagent/lube/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder) if(!istype(T)) return - if(volume >= 1) - T.wet_floor(WET_TYPE_LUBE,volume) + if(amount >= 1) + T.wet_floor(WET_TYPE_LUBE,amount) -/datum/reagent/silicate +/decl/reagent/silicate name = "Silicate" description = "A compound that can be used to reinforce glass." reagent_state = LIQUID color = "#C7FFFF" taste_description = "plastic" -/datum/reagent/silicate/touch_obj(var/obj/O) +/decl/reagent/silicate/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) if(istype(O, /obj/structure/window)) var/obj/structure/window/W = O - W.apply_silicate(volume) - remove_self(volume) + W.apply_silicate(amount) + remove_self(amount, holder) return -/datum/reagent/glycerol +/decl/reagent/glycerol name = "Glycerol" description = "Glycerol is a simple polyol compound. Glycerol is sweet-tasting and of low toxicity." reagent_state = LIQUID color = "#808080" taste_description = "sweetness" -/datum/reagent/nitroglycerin +/decl/reagent/nitroglycerin name = "Nitroglycerin" description = "Nitroglycerin is a heavy, colorless, oily, explosive liquid obtained by nitrating glycerol." reagent_state = LIQUID color = "#808080" taste_description = "oil" - var/temp_set = FALSE -/datum/reagent/nitroglycerin/proc/explode() +/decl/reagent/nitroglycerin/proc/explode(var/datum/reagents/holder) var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round (src.volume/2, 1), holder.my_atom, 0, 0) + e.set_up(round (REAGENT_VOLUME(holder, type)/2, 1), holder.my_atom, 0, 0) if(isliving(holder.my_atom)) e.amount *= 0.5 var/mob/living/L = holder.my_atom @@ -394,37 +362,30 @@ e.start() holder.clear_reagents() -/datum/reagent/nitroglycerin/add_thermal_energy(var/added_energy) +/decl/reagent/nitroglycerin/on_heat_change(var/added_energy, var/datum/reagents/holder) . = ..() - if(!temp_set) // so initial temperature-setting doesn't make stuff explode - temp_set = TRUE - return - if(added_energy > (specific_heat * 5 / volume)) - explode() + if(added_energy > (specific_heat * 5 / REAGENT_VOLUME(holder, type))) // heat shock + explode(holder) -/datum/reagent/nitroglycerin/apply_force(var/force) +/decl/reagent/nitroglycerin/apply_force(var/force, var/datum/reagents/holder) ..() if(prob(force * 6)) - explode() + explode(holder) -/datum/reagent/nitroglycerin/touch_turf(var/turf/T) +/decl/reagent/nitroglycerin/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) . = ..() - explode() + explode(holder) -/datum/reagent/nitroglycerin/touch_obj(var/obj/O) +/decl/reagent/nitroglycerin/touch_mob(var/mob/M, var/amount, var/datum/reagents/holder) . = ..() - explode() + explode(holder) -/datum/reagent/nitroglycerin/touch_mob(var/mob/M) - . = ..() - explode() - -/datum/reagent/nitroglycerin/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed) +/decl/reagent/nitroglycerin/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) if(!istype(H) || alien == IS_DIONA) return H.add_chemical_effect(CE_PULSE, 2) -/datum/reagent/coolant +/decl/reagent/coolant name = "Coolant" description = "Industrial cooling substance." reagent_state = LIQUID @@ -432,14 +393,14 @@ taste_description = "sourness" taste_mult = 1.1 -/datum/reagent/ultraglue +/decl/reagent/ultraglue name = "Ultra Glue" description = "An extremely powerful bonding agent." color = "#FFFFCC" taste_description = "a special education class" fallback_specific_heat = 1.5 -/datum/reagent/woodpulp +/decl/reagent/woodpulp name = "Wood Pulp" description = "A mass of wood fibers." reagent_state = LIQUID @@ -447,21 +408,21 @@ taste_description = "wood" fallback_specific_heat = 1.9 -/datum/reagent/luminol +/decl/reagent/luminol name = "Luminol" description = "A compound that interacts with blood on the molecular level." reagent_state = LIQUID color = "#F2F3F4" taste_description = "metal" -/datum/reagent/luminol/touch_obj(var/obj/O) +/decl/reagent/luminol/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) O.reveal_blood() -/datum/reagent/luminol/touch_mob(var/mob/living/L) +/decl/reagent/luminol/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder) . = ..() L.reveal_blood() -/datum/reagent/pyrosilicate +/decl/reagent/pyrosilicate name = "Pyrosilicate" description = "A bright orange powder consisting of strange self-heating properties that reacts when exposed to sodium chloride." reagent_state = SOLID @@ -469,7 +430,7 @@ taste_description = "chalk" default_temperature = 600 //Kelvin -/datum/reagent/cryosurfactant +/decl/reagent/cryosurfactant name = "Cryosurfactant" description = "A bright cyan liquid consisting of strange self-cooling properties that reacts when exposed to water." reagent_state = LIQUID @@ -477,55 +438,7 @@ taste_description = "needles" default_temperature = 100 //Kelvin -/datum/reagent/mutone - name = "Mutone" - description = "A strange green powder with even stranger properties." - reagent_state = SOLID - color = "#11AA11" - metabolism = (5/60) //5u every 60 seconds. - taste_description = "sweet metal" - var/stored_value = 0 //Internal value. Every 10 units equals a dosage. - -/datum/reagent/mutone/initial_effect(var/mob/living/carbon/M, var/alien) - stored_value = metabolism - -/datum/reagent/mutone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - stored_value += removed - if(stored_value >= 5) - to_chat(M, SPAN_NOTICE("You feel strange...")) - if(prob(25)) - randmutb(M) - else - randmutg(M) - M.UpdateAppearance() - stored_value -= 5 - -/datum/reagent/plexium - name = "Plexium" - description = "A yellow, fowl smelling liquid that seems to affect the brain in strange ways." - reagent_state = LIQUID - color = "#888822" - metabolism = 1 //1u every second - taste_description = "brain freeze" - var/stored_value = 0 //Internal value. Every 5 units equals a dosage. - -/datum/reagent/plexium/initial_effect(var/mob/living/carbon/M, var/alien) - stored_value = metabolism - -/datum/reagent/plexium/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed) - var/obj/item/organ/internal/brain/B = H.internal_organs_by_name[BP_BRAIN] - if(B && H.species && H.species.has_organ[BP_BRAIN] && !isipc(H)) - stored_value += removed - if(stored_value >= 5) - if(prob(50) && !B.has_trauma_type(BRAIN_TRAUMA_MILD)) - B.gain_trauma_type(BRAIN_TRAUMA_MILD) - else if(prob(50) && !B.has_trauma_type(BRAIN_TRAUMA_SEVERE)) - B.gain_trauma_type(BRAIN_TRAUMA_SEVERE) - else if(prob(50) && !B.has_trauma_type(BRAIN_TRAUMA_SPECIAL)) - B.gain_trauma_type(BRAIN_TRAUMA_SPECIAL) - stored_value -= 5 - -/datum/reagent/venenum +/decl/reagent/venenum name = "Venenum" description = "A thick tar like liquid that seems to move around on it's own every now and then. Limited data shows it only works when injected into the bloodstream." reagent_state = LIQUID @@ -536,15 +449,16 @@ ingest_mul = 0 breathe_mul = 0 touch_mul = 0 + fallback_specific_heat = 28.464 var/stored_value = 0 var/datum/dna/stored_dna -/datum/reagent/venenum/initial_effect(var/mob/living/carbon/M, var/alien) +/decl/reagent/venenum/initial_effect(var/mob/living/carbon/M, var/alien) stored_value = metabolism stored_dna = M.dna.Clone() to_chat(M, SPAN_WARNING("Your skin starts crawling...")) -/datum/reagent/venenum/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/venenum/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) stored_value += removed if(stored_value >= 1) M.visible_message(\ @@ -559,7 +473,7 @@ M.real_name = M.dna.real_name stored_value -= 1 -/datum/reagent/venenum/final_effect(var/mob/living/carbon/M) +/decl/reagent/venenum/final_effect(var/mob/living/carbon/M) if(stored_dna) M.dna = stored_dna.Clone() M.real_name = M.dna.real_name @@ -567,7 +481,7 @@ to_chat(M, SPAN_WARNING("You seem back to your normal self.")) -/datum/reagent/fuel/zoragel +/decl/reagent/fuel/zoragel name = "Inert Gel" description = "A particularly adhesive but otherwise inert and harmless gel." reagent_state = LIQUID @@ -575,7 +489,7 @@ touch_met = 50 taste_description = "plhegm" -/datum/reagent/fuel/napalm +/decl/reagent/fuel/napalm name = "Zo'rane Fire" description = "A highly flammable and cohesive gel once used commonly in the tunnels of Sedantis. Napalm sticks to kids." reagent_state = LIQUID @@ -583,26 +497,24 @@ touch_met = 50 taste_description = "fiery death" -/datum/reagent/fuel/napalm/touch_turf(var/turf/T) - new /obj/effect/decal/cleanable/liquid_fuel/napalm(T, volume/3) +/decl/reagent/fuel/napalm/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) + new /obj/effect/decal/cleanable/liquid_fuel/napalm(T, amount/3) for(var/mob/living/L in T) - L.adjust_fire_stacks(volume / 10) - L.add_modifier(/datum/modifier/napalm, MODIFIER_CUSTOM, _strength = 2) - remove_self(volume) + L.adjust_fire_stacks(amount / 10) + remove_self(amount, holder) return -/datum/reagent/fuel/napalm/touch_mob(var/mob/living/L, var/amount) +/decl/reagent/fuel/napalm/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder) . = ..() if(istype(L)) L.adjust_fire_stacks(amount / 10) // Splashing people with welding fuel to make them easy to ignite! new /obj/effect/decal/cleanable/liquid_fuel/napalm(get_turf(L), amount/3) L.adjustFireLoss(amount / 10) - remove_self(volume) - L.add_modifier(/datum/modifier/napalm, MODIFIER_CUSTOM, _strength = 2) + remove_self(amount, holder) //Secret chems. //Shhh don't tell no one. -/datum/reagent/estus +/decl/reagent/estus name = "Liquid Light" description = "This impossible substance slowly converts from a liquid into actual light." reagent_state = LIQUID @@ -610,29 +522,30 @@ scannable = TRUE metabolism = REM * 0.25 taste_description = "bottled fire" - var/datum/modifier/modifier fallback_specific_heat = 2.75 unaffected_species = IS_MACHINE -/datum/reagent/estus/affect_blood(var/mob/living/carbon/M, var/removed) - if (!modifier) - modifier = M.add_modifier(/datum/modifier/luminous, MODIFIER_REAGENT, src, _strength = 4, override = MODIFIER_OVERRIDE_STRENGTHEN) +/decl/reagent/estus/initial_effect(mob/living/carbon/M, alien, datum/reagents/holder) + . = ..() + M.set_light(REAGENT_VOLUME(holder, type), 4, LIGHT_COLOR_FIRE) + +/decl/reagent/estus/final_effect(mob/living/carbon/M, datum/reagents/holder) + . = ..() + M.set_light(FALSE) + +/decl/reagent/estus/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder) if(isundead(M)) M.heal_organ_damage(10 * removed, 15 * removed) -/datum/reagent/estus/affect_ingest(var/mob/living/carbon/M, var/removed) - if (!modifier) - modifier = M.add_modifier(/datum/modifier/luminous, MODIFIER_REAGENT, src, _strength = 4, override = MODIFIER_OVERRIDE_STRENGTHEN) +/decl/reagent/estus/affect_ingest(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder) if(isundead(M)) M.heal_organ_damage(10 * removed, 15 * removed) -/datum/reagent/estus/affect_touch(var/mob/living/carbon/M, var/removed) - if (!modifier) - modifier = M.add_modifier(/datum/modifier/luminous, MODIFIER_REAGENT, src, _strength = 4, override = MODIFIER_OVERRIDE_STRENGTHEN) +/decl/reagent/estus/affect_touch(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder) if(isundead(M)) M.heal_organ_damage(10 * removed, 15 * removed) -/datum/reagent/liquid_fire +/decl/reagent/liquid_fire name = "Liquid Fire" description = "A dangerous flammable chemical, capable of causing fires when in contact with organic matter." reagent_state = LIQUID @@ -642,18 +555,19 @@ fallback_specific_heat = 20 //This holds a ton of heat. unaffected_species = IS_MACHINE -/datum/reagent/liquid_fire/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/liquid_fire/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) . = ..() if(istype(M)) M.adjust_fire_stacks(10) M.IgniteMob() -/datum/reagent/liquid_fire/touch_mob(var/mob/living/L, var/amount) +/decl/reagent/liquid_fire/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder) + . = ..() if(istype(L)) L.adjust_fire_stacks(10) L.IgniteMob() -/datum/reagent/black_matter +/decl/reagent/black_matter name = "Unstable Black Matter" description = "A pitch black blend of cosmic origins, handle with care." color = "#000000" @@ -661,7 +575,7 @@ fallback_specific_heat = 100 //Yeah... unaffected_species = IS_MACHINE -/datum/reagent/black_matter/touch_turf(var/turf/T) +/decl/reagent/black_matter/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) var/obj/effect/portal/P = new /obj/effect/portal(T) P.creator = null P.icon = 'icons/obj/objects.dmi' @@ -674,10 +588,10 @@ pick_turfs += exit P.target = pick(pick_turfs) QDEL_IN(P, rand(150,300)) - remove_self(volume) + remove_self(amount, holder) return -/datum/reagent/bluespace_dust +/decl/reagent/bluespace_dust name = "Bluespace Dust" description = "A dust composed of microscopic bluespace crystals." color = "#1f8999" @@ -685,7 +599,7 @@ fallback_specific_heat = 0.1 unaffected_species = IS_MACHINE -/datum/reagent/bluespace_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/bluespace_dust/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(prob(25)) M.make_jittery(5) to_chat(M, SPAN_WARNING("You feel unstable...")) @@ -693,18 +607,18 @@ if(prob(10)) do_teleport(M, get_turf(M), 5, asoundin = 'sound/effects/phasein.ogg') -/datum/reagent/bluespace_dust/touch_mob(var/mob/living/L, var/amount) +/decl/reagent/bluespace_dust/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder) . = ..() do_teleport(L, get_turf(L), amount, asoundin = 'sound/effects/phasein.ogg') -/datum/reagent/philosopher_stone +/decl/reagent/philosopher_stone name = "Philosopher's Stone" description = "A mythical compound, rumored to be the catalyst of fantastic reactions." color = "#f4c430" taste_description = "heavenly knowledge" fallback_specific_heat = 1.25 -/datum/reagent/sglue +/decl/reagent/sglue name = "Sovereign Glue" description = "A very potent adhesive which can be applied to inanimate surfaces." reagent_state = LIQUID @@ -712,15 +626,15 @@ taste_description = "horses" fallback_specific_heat = 1.25 -/datum/reagent/sglue/touch_obj(var/obj/O) - if((istype(O, /obj/item) && !istype(O, /obj/item/reagent_containers)) && (volume > 10*O.w_class)) +/decl/reagent/sglue/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) + if((istype(O, /obj/item) && !istype(O, /obj/item/reagent_containers)) && (amount >= 10*O.w_class)) var/obj/item/I = O I.canremove = 0 I.desc += " It appears to glisten with some gluey substance." - remove_self(10*I.w_class) + remove_self(10*I.w_class, holder) I.visible_message(SPAN_NOTICE("[I] begins to glisten with some gluey substance.")) -/datum/reagent/usolve +/decl/reagent/usolve name = "Universal Solvent" description = "A very potent solvent which can be applied to inanimate surfaces." reagent_state = LIQUID @@ -728,15 +642,15 @@ taste_description = "alcohol" fallback_specific_heat = 1.75 -/datum/reagent/usolve/touch_obj(var/obj/O) - if((istype(O, /obj/item) && !istype(O, /obj/item/reagent_containers)) && (volume > 10*O.w_class)) +/decl/reagent/usolve/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) + if((istype(O, /obj/item) && !istype(O, /obj/item/reagent_containers)) && (amount >= 10*O.w_class)) var/obj/item/I = O I.canremove = initial(I.canremove) I.desc = initial(I.desc) I.visible_message(SPAN_NOTICE("A thin shell of glue cracks off of [I].")) - remove_self(10*I.w_class) + remove_self(10*I.w_class, holder) -/datum/reagent/shapesand +/decl/reagent/shapesand name = "Shapesand" description = "A strangely animate clump of sand which can shift its color and consistency." reagent_state = SOLID @@ -744,8 +658,8 @@ taste_description = "sand" fallback_specific_heat = 0.75 -/datum/reagent/shapesand/touch_obj(var/obj/O) - if((istype(O, /obj/item) && !istype(O, /obj/item/reagent_containers)) && (volume > 10*O.w_class)) +/decl/reagent/shapesand/touch_obj(var/obj/O, var/amount, var/datum/reagents/holder) + if((istype(O, /obj/item) && !istype(O, /obj/item/reagent_containers)) && (amount >= 10*O.w_class)) var/obj/item/shapesand/mimic = new /obj/item/shapesand(O.loc) mimic.name = O.name mimic.desc = O.desc @@ -753,7 +667,7 @@ mimic.icon_state = O.icon_state mimic.item_state = O.item_state mimic.overlays = O.overlays - remove_self(10*O.w_class) + remove_self(10*O.w_class, holder) mimic.visible_message(SPAN_NOTICE("The sand forms into an exact duplicate of [O].")) /obj/item/shapesand @@ -772,7 +686,7 @@ qdel(src) return -/datum/reagent/love_potion +/decl/reagent/love_potion name = "Philter of Love" description = "A sickly sweet compound that induces chemical dependency on the first person the subject sees." reagent_state = LIQUID @@ -780,7 +694,7 @@ taste_description = "sickly sweet candy" fallback_specific_heat = 2 //Thicc -/datum/reagent/love_potion/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed) +/decl/reagent/love_potion/affect_blood(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) if(!istype(H)) return @@ -789,7 +703,7 @@ if(!H.has_trauma_type(/datum/brain_trauma/special/love)) B.gain_trauma(/datum/brain_trauma/special/love,FALSE) -/datum/reagent/bottle_lightning +/decl/reagent/bottle_lightning name = "Bottled Lightning" description = "A mysterious compound capable of producing electrical discharges." reagent_state = LIQUID @@ -798,11 +712,11 @@ fallback_specific_heat = 10 unaffected_species = IS_MACHINE -/datum/reagent/bottle_lightning/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/bottle_lightning/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(prob(25)) tesla_zap(M, 6, 1500) -/datum/reagent/stone_dust +/decl/reagent/stone_dust name = "Stone Dust" description = "Crystalline silica dust, harmful when inhaled." reagent_state = SOLID @@ -810,7 +724,7 @@ taste_description = "dust" specific_heat = 1 -/datum/reagent/stone_dust/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed) +/decl/reagent/stone_dust/affect_breathe(var/mob/living/carbon/human/H, var/alien, var/removed, var/datum/reagents/holder) . = ..() if(istype(H)) if(prob(15)) @@ -818,7 +732,7 @@ if(istype(L) && !L.robotic) L.take_damage(0.5*removed) -/datum/reagent/gunpowder +/decl/reagent/gunpowder name = "Gunpowder" description = "A primitive explosive chemical." reagent_state = SOLID diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index 7ab0ebcb521..43158fb7339 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -1,6 +1,6 @@ /* Toxins, poisons, venoms */ -/datum/reagent/toxin +/decl/reagent/toxin name = "Toxin" description = "A toxic chemical." reagent_state = LIQUID @@ -13,7 +13,7 @@ var/target_organ // needs to be null by default var/strength = 2 // How much damage it deals per unit -/datum/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(strength && alien != IS_DIONA) var/dam = (strength * removed) if(ishuman(M)) @@ -37,7 +37,7 @@ if(dam) M.adjustToxLoss(target_organ ? (dam * 0.5) : dam) -/datum/reagent/toxin/plasticide +/decl/reagent/toxin/plasticide name = "Plasticide" description = "Liquid plastic, do not eat." reagent_state = LIQUID @@ -45,7 +45,7 @@ strength = 5 taste_description = "plastic" -/datum/reagent/toxin/amatoxin +/decl/reagent/toxin/amatoxin name = "Amatoxin" description = "A powerful poison derived from certain species of mushroom." reagent_state = LIQUID @@ -53,7 +53,7 @@ strength = 10 taste_description = "mushroom" -/datum/reagent/toxin/carpotoxin +/decl/reagent/toxin/carpotoxin name = "Carpotoxin" description = "A deadly neurotoxin produced by the dreaded space carp." reagent_state = LIQUID @@ -62,12 +62,12 @@ taste_description = "fish" target_organ = BP_BRAIN -/datum/reagent/toxin/carpotoxin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/carpotoxin/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien && alien == IS_UNATHI) return ..() -/datum/reagent/toxin/panotoxin +/decl/reagent/toxin/panotoxin name = "Panotoxin" description = "A strange poison from the strange panocelium mushroom that causes intense pain when injected." reagent_state = LIQUID @@ -75,10 +75,10 @@ strength = 0 taste_description = "stinging needles" -/datum/reagent/toxin/panotoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/panotoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) M.adjustHalLoss(removed*15) -/datum/reagent/toxin/phoron +/decl/reagent/toxin/phoron name = "Phoron" description = "Phoron in its liquid form. Twice as potent when breathed in." reagent_state = LIQUID @@ -89,7 +89,7 @@ breathe_mul = 2 fallback_specific_heat = 12 //Phoron is very dense and can hold a lot of energy. -/datum/reagent/toxin/phoron/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/phoron/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(ishuman(M)) var/mob/living/carbon/human/H = M @@ -121,12 +121,12 @@ else ..() -/datum/reagent/toxin/phoron/touch_mob(var/mob/living/L, var/amount) +/decl/reagent/toxin/phoron/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder) . = ..() if(istype(L)) L.adjust_fire_stacks(amount / 5) -/datum/reagent/toxin/phoron/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/phoron/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M var/obj/item/organ/internal/parasite/P = H.internal_organs_by_name["blackkois"] @@ -137,21 +137,13 @@ if(prob(50)) M.pl_effects() -/datum/reagent/toxin/phoron/touch_turf(var/turf/simulated/T) +/decl/reagent/toxin/phoron/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder) if(!istype(T)) return - T.assume_gas(GAS_PHORON, volume, T20C) - remove_self(volume) + T.assume_gas(GAS_PHORON, amount, T20C) + remove_self(amount, holder) -/datum/reagent/toxin/phoron_salt //Remember to exclude in RNG chems. - name = "Phoron Salts" - description = "A mysterious molten mixture with strange chemical properties. Incredibly deadly to all lifeforms, especially Vaurca." - reagent_state = SOLID - color = "#7C4876" - strength = 30 - default_temperature = 130 //Kelvin - -/datum/reagent/toxin/cardox +/decl/reagent/toxin/cardox name = "Cardox" description = "Cardox is a mildly toxic, expensive, NanoTrasen designed cleaner intended to eliminate liquid phoron stains from suits." reagent_state = LIQUID @@ -159,10 +151,10 @@ color = "#EEEEEE" metabolism = 0.3 // 100 seconds for 30 units to metabolise. taste_description = "cherry" - conflicting_reagent = /datum/reagent/toxin/phoron + conflicting_reagent = /decl/reagent/toxin/phoron strength = 1 -/datum/reagent/toxin/cardox/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) +/decl/reagent/toxin/cardox/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed, var/datum/reagents/holder) if(!istype(M)) return @@ -172,11 +164,11 @@ else M.add_chemical_effect(CE_TOXIN, removed * strength) -/datum/reagent/toxin/cardox/affect_conflicting(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagent/conflicting) - var/amount = min(removed, conflicting.volume) +/decl/reagent/toxin/cardox/affect_conflicting(var/mob/living/carbon/M, var/alien, var/removed, var/decl/reagent/conflicting, var/datum/reagents/holder) + var/amount = min(removed, REAGENT_VOLUME(holder, conflicting.type)) holder.remove_reagent(conflicting.type, amount) -/datum/reagent/toxin/cardox/touch_turf(var/turf/T, var/amount) +/decl/reagent/toxin/cardox/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) if(amount >= 1) for(var/mob/living/carbon/slime/M in T) M.adjustToxLoss(amount*10) @@ -195,7 +187,7 @@ var/datum/gas_mixture/environment = T.return_air() environment.adjust_gas(GAS_PHORON,-amount*10) -/datum/reagent/toxin/cyanide //Fast and Lethal +/decl/reagent/toxin/cyanide //Fast and Lethal name = "Cyanide" description = "A highly toxic chemical." reagent_state = LIQUID @@ -206,14 +198,14 @@ taste_mult = 1.5 target_organ = BP_HEART -/datum/reagent/toxin/cyanide/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/cyanide/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) return M.adjustOxyLoss(20 * removed) -/datum/reagent/toxin/potassium_chloride +/decl/reagent/toxin/potassium_chloride name = "Potassium Chloride" description = "A delicious salt that stops the heart when injected into cardiac muscle." reagent_state = SOLID @@ -223,7 +215,7 @@ od_minimum_dose = 20 taste_description = "salt" -/datum/reagent/toxin/potassium_chloride/overdose(var/mob/living/carbon/M, var/alien) +/decl/reagent/toxin/potassium_chloride/overdose(var/mob/living/carbon/M, var/alien, var/datum/reagents/holder) ..() var/mob/living/carbon/human/H = M if(!istype(H) || (H.species.flags & NO_BLOOD)) @@ -235,7 +227,7 @@ H.adjustOxyLoss(2) H.Weaken(10) -/datum/reagent/toxin/potassium_chlorophoride +/decl/reagent/toxin/potassium_chlorophoride name = "Potassium Chlorophoride" description = "Potassium Chlorophoride is an expensive, vastly improved variant of Potassium Chloride. Potassium Chlorophoride, unlike the original drug, acts immediately to block neuromuscular junctions, causing general paralysis." reagent_state = SOLID @@ -245,7 +237,7 @@ od_minimum_dose = 20 taste_description = "salt" -/datum/reagent/toxin/potassium_chlorophoride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/potassium_chlorophoride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() var/mob/living/carbon/human/H = M if(!istype(H) || (H.species.flags & NO_BLOOD)) @@ -257,7 +249,7 @@ H.adjustOxyLoss(2) H.Weaken(10) -/datum/reagent/toxin/zombiepowder +/decl/reagent/toxin/zombiepowder name = "Zombie Powder" description = "A strong neurotoxin that puts the subject into a death-like state." reagent_state = SOLID @@ -267,7 +259,7 @@ taste_description = "death" target_organ = BP_BRAIN -/datum/reagent/toxin/zombiepowder/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/zombiepowder/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_SCAN)) @@ -279,13 +271,12 @@ M.silent = max(M.silent, 10) M.tod = worldtime2text() -/datum/reagent/toxin/zombiepowder/Destroy() - if(holder && holder.my_atom && ismob(holder.my_atom)) - var/mob/M = holder.my_atom +/decl/reagent/toxin/zombiepowder/final_effect(mob/living/carbon/M, datum/reagents/holder) + if(istype(M)) M.status_flags &= ~FAKEDEATH return ..() -/datum/reagent/toxin/fertilizer //Reagents used for plant fertilizers. +/decl/reagent/toxin/fertilizer //Reagents used for plant fertilizers. name = "fertilizer" description = "A chemical mix good for growing plants with." reagent_state = LIQUID @@ -295,26 +286,26 @@ taste_mult = 0.5 unaffected_species = IS_MACHINE -/datum/reagent/toxin/fertilizer/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/fertilizer/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien == IS_DIONA) M.adjustNutritionLoss(-removed*3) //Fertilizer is good for plants else ..() -/datum/reagent/toxin/fertilizer/eznutrient +/decl/reagent/toxin/fertilizer/eznutrient name = "EZ Nutrient" color = "#168042" -/datum/reagent/toxin/fertilizer/left4zed +/decl/reagent/toxin/fertilizer/left4zed name = "Left-4-Zed" color = "#2A1680" -/datum/reagent/toxin/fertilizer/robustharvest +/decl/reagent/toxin/fertilizer/robustharvest name = "Robust Harvest" color = "#801616" -/datum/reagent/toxin/fertilizer/monoammoniumphosphate +/decl/reagent/toxin/fertilizer/monoammoniumphosphate name = "Monoammonium Phosphate" strength = 0.25 description = "Commonly found in fire extinguishers, also works as a fertilizer." @@ -324,7 +315,7 @@ touch_met = REM * 10 breathe_mul = 0 -/datum/reagent/toxin/fertilizer/monoammoniumphosphate/touch_turf(var/turf/simulated/T) +/decl/reagent/toxin/fertilizer/monoammoniumphosphate/touch_turf(var/turf/simulated/T, var/amount, var/datum/reagents/holder) if(!istype(T)) return @@ -335,30 +326,30 @@ lowertemp.react() qdel(hotspot) - var/amount_to_remove = max(1,round(volume * 0.5)) + var/amount_to_remove = max(1,round(amount * 0.5)) new /obj/effect/decal/cleanable/foam(T, amount_to_remove) - remove_self(amount_to_remove) + remove_self(amount_to_remove, holder) return -/datum/reagent/toxin/fertilizer/monoammoniumphosphate/touch_mob(var/mob/living/L, var/amount) +/decl/reagent/toxin/fertilizer/monoammoniumphosphate/touch_mob(var/mob/living/L, var/amount, var/datum/reagents/holder) . = ..() if(istype(L)) var/needed = min(L.fire_stacks, amount) L.ExtinguishMob(3* needed) // Foam is 3 times more efficient at extinguishing - remove_self(needed) + remove_self(needed, holder) -/datum/reagent/toxin/fertilizer/monoammoniumphosphate/affect_touch(var/mob/living/carbon/slime/S, var/alien, var/removed) +/decl/reagent/toxin/fertilizer/monoammoniumphosphate/affect_touch(var/mob/living/carbon/slime/S, var/alien, var/removed, var/datum/reagents/holder) if(istype(S)) - S.adjustToxLoss( volume * (removed/REM) * 0.23 ) + S.adjustToxLoss( REAGENT_VOLUME(holder, type) * (removed/REM) * 0.23 ) if(!S.client) if(S.target) // Like cats S.target = null ++S.discipline - if(dose == removed) + if(S.chem_doses[type] == removed) S.visible_message(SPAN_WARNING("[S]'s flesh sizzles where the foam touches it!"), SPAN_DANGER("Your flesh burns in the foam!")) -/datum/reagent/toxin/plantbgone +/decl/reagent/toxin/plantbgone name = "Plant-B-Gone" description = "A harmful toxic mixture to kill plantlife. Do not ingest!" reagent_state = LIQUID @@ -368,7 +359,7 @@ taste_mult = 1 unaffected_species = IS_MACHINE -/datum/reagent/toxin/plantbgone/touch_turf(var/turf/T) +/decl/reagent/toxin/plantbgone/touch_turf(var/turf/T, var/amount, var/datum/reagents/holder) if(istype(T, /turf/simulated/wall)) var/turf/simulated/wall/W = T if(locate(/obj/effect/overlay/wallrot) in W) @@ -381,21 +372,21 @@ F.make_plating() playsound(F, 'sound/species/diona/gestalt_grow.ogg', 30, TRUE) -/datum/reagent/toxin/plantbgone/touch_obj(var/obj/O, var/volume) +/decl/reagent/toxin/plantbgone/touch_obj(var/obj/O, var/volume, var/datum/reagents/holder) if(istype(O, /obj/effect/plant)) qdel(O) -/datum/reagent/toxin/plantbgone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/plantbgone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() if(alien == IS_DIONA) M.adjustToxLoss(30 * removed) //Affect touch automatically transfers to affect_blood, so we'll apply the damage there, after accounting for permeability -/datum/reagent/toxin/plantbgone/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/plantbgone/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) removed *= M.reagent_permeability() - affect_blood(M, alien, removed*0.5) + affect_blood(M, alien, removed*0.5, holder) -/datum/reagent/lexorin +/decl/reagent/lexorin name = "Lexorin" description = "Lexorin is a complex toxin that attempts to induce general hypoxia by weakening the diaphragm to prevent respiration and also by binding to haemoglobins to prevent oxygen molecules from doing the same." reagent_state = LIQUID @@ -403,7 +394,7 @@ overdose = REAGENTS_OVERDOSE taste_description = "acid" -/datum/reagent/lexorin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/lexorin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) return @@ -411,7 +402,7 @@ if(M.losebreath < 15) M.losebreath++ -/datum/reagent/mutagen +/decl/reagent/mutagen name = "Unstable Mutagen" description = "Might cause unpredictable mutations. Keep away from children." reagent_state = LIQUID @@ -419,15 +410,15 @@ taste_description = "slime" taste_mult = 0.9 -/datum/reagent/mutagen/affect_touch(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mutagen/affect_touch(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(prob(33)) - affect_blood(M, alien, removed) + affect_blood(M, alien, removed, holder) -/datum/reagent/mutagen/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mutagen/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(prob(67)) - affect_blood(M, alien, removed) + affect_blood(M, alien, removed, holder) -/datum/reagent/mutagen/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/mutagen/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_SCAN)) return @@ -443,7 +434,7 @@ M.UpdateAppearance() M.apply_effect(10 * removed, IRRADIATE, blocked = 0) -/datum/reagent/slimejelly +/decl/reagent/slimejelly name = "Slime Jelly" description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL." reagent_state = LIQUID @@ -451,7 +442,7 @@ taste_description = "slime" taste_mult = 1.3 -/datum/reagent/slimejelly/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/slimejelly/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) return @@ -461,7 +452,7 @@ else if(prob(40)) M.heal_organ_damage(25 * removed, 0) -/datum/reagent/soporific +/decl/reagent/soporific name = "Soporific" description = "Soporific is highly diluted polysomnine which results in slower and more gradual sedation. This makes the drug ideal at treating insomnia and anxiety disorders, however is generally not reliable for sedation in preparation for surgery except in high doses." reagent_state = LIQUID @@ -473,11 +464,12 @@ breathe_met = REM * 0.5 * 0.33 var/total_strength = 0 -/datum/reagent/soporific/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/soporific/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if((istype(H) && (H.species.flags & NO_BLOOD)) || alien == IS_DIONA) return M.add_chemical_effect(CE_PULSE, -2) + var/dose = M.chem_doses[type] if(dose < 1) if(dose == metabolism * 2 || prob(5)) M.emote("yawn") @@ -491,7 +483,7 @@ M.sleeping = max(M.sleeping, 20) M.drowsyness = max(M.drowsyness, 60) -/datum/reagent/polysomnine +/decl/reagent/polysomnine name = "Polysomnine" description = "Polysomnine is a complex drug which rapidly induces sedation in preparation for surgery. Polysomnine's sedative effect is fast acting, and sedated individuals wake up with zero amnesia regarding the events leading up to their sedation, however the only downside is how hard the drug is on the liver." reagent_state = SOLID @@ -502,10 +494,11 @@ taste_description = "bitterness" breathe_met = REM * 0.5 * 0.5 -/datum/reagent/polysomnine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/polysomnine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_BLOOD)) return + var/dose = M.chem_doses[type] if(dose == metabolism) M.confused += 2 M.drowsyness += 2 @@ -518,7 +511,7 @@ if(dose > 1) M.add_chemical_effect(CE_TOXIN, removed) -/datum/reagent/polysomnine/beer2 //disguised as normal beer for use by emagged brobots +/decl/reagent/polysomnine/beer2 //disguised as normal beer for use by emagged brobots name = "Beer" description = "An alcoholic beverage made from malted grains, hops, yeast, and water. The fermentation appears to be incomplete." //If the players manage to analyze this, they deserve to know something is wrong. reagent_state = LIQUID @@ -534,14 +527,14 @@ /* Transformations */ -/datum/reagent/aslimetoxin +/decl/reagent/aslimetoxin name = "Advanced Mutation Toxin" description = "A transformative toxin isolated from jelly extract from black slimes. The chemical is fundamentally the same as regular Mutation Toxin, however its effect is magnitudes faster, degenerating a body into a grey slime immediately." reagent_state = LIQUID color = "#13BC5E" taste_description = "sludge" -/datum/reagent/aslimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) // TODO: check if there's similar code anywhere else +/decl/reagent/aslimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) // TODO: check if there's similar code anywhere else if(M.transforming) return to_chat(M, SPAN_DANGER("Your flesh rapidly mutates!")) @@ -566,7 +559,7 @@ new_mob.key = M.key qdel(M) -/datum/reagent/toxin/nanites +/decl/reagent/toxin/nanites name = "Nanomachines" description = "Microscopic construction robots." reagent_state = LIQUID @@ -574,48 +567,69 @@ taste_description = "slimey metal" fallback_specific_heat = 3 -/datum/reagent/toxin/undead +/decl/reagent/toxin/undead name = "Undead Ichor" description = "A wicked liquid with unknown origins and uses." color = "#b2beb5" strength = 25 taste_description = "ashes" -/datum/reagent/toxin/undead/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/undead/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) if(alien && alien == IS_UNDEAD) M.heal_organ_damage(10 * removed, 15 * removed) return ..() -/datum/reagent/toxin/tobacco +/decl/reagent/toxin/tobacco name = "Space Tobacco" description = "Low-grade space tobacco." reagent_state = SOLID color = "#333300" - data = 0 taste_description = "cheap tobacco" strength = 0.004 taste_mult = 10 var/nicotine = 0.2 -/datum/reagent/toxin/tobacco/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - M.reagents.add_reagent(/datum/reagent/mental/nicotine, removed * nicotine) +/decl/reagent/toxin/tobacco/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + holder.add_reagent(/decl/reagent/mental/nicotine, removed * nicotine) -/datum/reagent/toxin/tobacco/rich +/decl/reagent/toxin/tobacco/rich name = "Earth Tobacco" description = "Nicknamed 'Earth Tobacco', this plant is much higher quality than its spacefaring counterpart." taste_description = "luxury tobacco" strength = 0.002 nicotine = 0.5 -/datum/reagent/toxin/tobacco/fake +/decl/reagent/toxin/tobacco/fake name = "Cheap Tobacco" description = "This actually appears to be mostly ground up leaves masquerading as tobacco. There's maybe some nicotine in there somewhere..." taste_description = "acrid smoke" strength = 0.008 nicotine = 0.1 -/datum/reagent/toxin/berserk +/mob/living/carbon/human/proc/berserk_start() + to_chat(src, SPAN_DANGER("An uncontrollable rage overtakes your thoughts!")) + add_client_color(/datum/client_color/berserk) + shock_stage = 0 + SetParalysis(0) + SetStunned(0) + SetWeakened(0) + setHalLoss(0) + lying = 0 + update_canmove() + +/mob/living/carbon/human/proc/berserk_process() + drowsyness = max(drowsyness - 5, 0) + AdjustParalysis(-1) + AdjustStunned(-1) + AdjustWeakened(-1) + adjustHalLoss(-1) + +/mob/living/carbon/human/proc/berserk_stop() + to_chat(src, SPAN_DANGER("Your rage fades away, your thoughts are clear once more!")) + remove_client_color(/datum/client_color/berserk) + +/decl/reagent/toxin/berserk name = "Red Nightshade" description = "An illegal combat performance enhancer originating from the criminal syndicates of Mars. The drug stimulates regions of the brain responsible for violence and rage, inducing a feral, berserk state in users." reagent_state = LIQUID @@ -624,12 +638,22 @@ taste_description = "bitterness" metabolism = REM * 2 unaffected_species = IS_DIONA | IS_MACHINE - var/datum/modifier/modifier -/datum/reagent/toxin/berserk/affect_blood(var/mob/living/carbon/M, var/removed) +/decl/reagent/toxin/berserk/initial_effect(var/mob/living/carbon/human/H, var/alien, var/holder) + . = ..() + if(istype(H)) + H.berserk_start() + +/decl/reagent/toxin/berserk/final_effect(var/mob/living/carbon/human/H, var/alien, var/holder) + . = ..() + if(istype(H)) + H.berserk_stop() + +/decl/reagent/toxin/berserk/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder) ..() - if(!modifier) - modifier = M.add_modifier(/datum/modifier/berserk, MODIFIER_REAGENT, src, _strength = 1, override = MODIFIER_OVERRIDE_STRENGTHEN) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.berserk_process() M.make_jittery(20) M.add_chemical_effect(CE_BERSERK, 1) if(M.a_intent != I_HURT) @@ -637,11 +661,7 @@ if(prob(10)) M.add_chemical_effect(CE_NEUROTOXIC, 5*removed) -/datum/reagent/toxin/berserk/Destroy() - QDEL_NULL(modifier) - return ..() - -/datum/reagent/toxin/spectrocybin +/decl/reagent/toxin/spectrocybin name = "Spectrocybin" description = "Spectrocybin is a hallucinogenic chemical found in a unique strain of fungi. Little research has been conducted into the hallucinogenic properties of spectrocybin, though many spiritual creeds utilise the drug in rituals and claim it allows people to act as mediums between the living and dead." reagent_state = LIQUID @@ -652,29 +672,32 @@ taste_description = "acid" metabolism = REM * 0.5 unaffected_species = IS_DIONA | IS_MACHINE - var/datum/modifier/modifier -/datum/reagent/toxin/spectrocybin/affect_blood(var/mob/living/carbon/M, var/removed) +/decl/reagent/toxin/spectrocybin/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder) ..() - if(!(volume > 5)) + if(!(REAGENT_VOLUME(holder, type) > 5)) M.hallucination = max(M.hallucination, 20) if(prob(20)) M.see_invisible = SEE_INVISIBLE_CULT - if(dose < 5) + if(M.chem_doses[type] < 5) if(prob(10)) M.emote("shiver") to_chat(M, SPAN_GOOD(pick("You hear the clinking of dinner plates and laughter.", "You hear a distant voice of someone you know talking to you.", "Fond memories of a departed loved one flocks to your mind.", "You feel the reassuring presence of a departed loved one.", "You feel a hand squeezing yours."))) -/datum/reagent/toxin/spectrocybin/overdose(var/mob/living/carbon/M) +/decl/reagent/toxin/spectrocybin/overdose(var/mob/living/carbon/M, var/datum/reagents/holder) M.see_invisible = SEE_INVISIBLE_CULT M.make_jittery(5) - if(dose < 5) + if(M.chem_doses[type] < 5) if(prob(5)) M.visible_message("[M] trembles uncontrollably.", "You tremble uncontrollably.") to_chat(M, SPAN_CULT(pick("You feel fingers tracing up your back.", "You hear the distant wailing and sobbing of a departed loved one.", "You feel like you are being closely watched.", "You hear the hysterical laughter of a departed loved one.", "You no longer feel the reassuring presence of a departed loved one.", "You feel a hand taking hold of yours, digging its nails into you as it clings on."))) else - if(!modifier) - modifier = M.add_modifier(/datum/modifier/berserk, MODIFIER_REAGENT, src, _strength = 1, override = MODIFIER_OVERRIDE_STRENGTHEN) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(M.chem_doses[type] <= (get_overdose(H, holder = holder) + metabolism)) + H.berserk_start() + else + H.berserk_process() M.hallucination = 0 //Brings down hallucination quickly to prevent message spam from being switched between harm and help by hallucinoatory pacification and berserk. M.add_chemical_effect(CE_BERSERK, 1) if(M.a_intent != I_HURT) @@ -683,11 +706,12 @@ M.emote(pick("shiver", "twitch")) to_chat(M, SPAN_CULT(pick("You feel a cold and threatening air wrapping around you.", "Whispering shadows, ceaseless in their demands, twist your thoughts...", "The whispering, anything to make them stop!", "Your head spins amid the cacophony of screaming, wailing and maniacal laughter of distant loved ones.", "You feel vestiges of decaying souls cling to you, trying to re-enter the world of the living."))) -/datum/reagent/toxin/spectrocybin/Destroy() - QDEL_NULL(modifier) - return ..() +/decl/reagent/toxin/spectrocybin/final_effect(mob/living/carbon/human/H, datum/reagents/holder) + . = ..() + if(istype(H) && H.chem_doses[type] >= get_overdose(H, holder = holder)) + H.berserk_stop() -/datum/reagent/toxin/trioxin +/decl/reagent/toxin/trioxin name = "Trioxin" description = "A synthetic compound of unknown origins, designated originally as a performance enhancing substance." reagent_state = LIQUID @@ -698,12 +722,12 @@ unaffected_species = IS_DIONA | IS_MACHINE | IS_UNDEAD affects_dead = TRUE -/datum/reagent/toxin/trioxin/affect_blood(var/mob/living/carbon/M, var/removed) +/decl/reagent/toxin/trioxin/affect_blood(var/mob/living/carbon/M, var/removed, var/datum/reagents/holder) ..() if(istype(M,/mob/living/carbon/human)) var/mob/living/carbon/human/H = M - if(H.reagents.has_reagent(/datum/reagent/thetamycin, 15)) + if(H.reagents.has_reagent(/decl/reagent/thetamycin, 15)) return if(!H.internal_organs_by_name[BP_ZOMBIE_PARASITE] && prob(15)) @@ -733,7 +757,7 @@ -/datum/reagent/toxin/dextrotoxin +/decl/reagent/toxin/dextrotoxin name = "Dextrotoxin" description = "A complicated to make and highly illegal drug that cause paralysis mostly focused on the limbs." reagent_state = LIQUID @@ -742,7 +766,7 @@ strength = 0 taste_description = "danger" -/datum/reagent/toxin/dextrotoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) +/decl/reagent/toxin/dextrotoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) ..() var/mob/living/carbon/human/H = M if(istype(H) && (H.species.flags & NO_SCAN)) @@ -751,11 +775,27 @@ to_chat(M, SPAN_WARNING("Your limbs start to feel numb and weak, and your legs wobble as it becomes hard to stand...")) M.confused = max(M.confused, 250) M.add_chemical_effect(CE_UNDEXTROUS, 1) - if(dose > 0.2) + if(M.chem_doses[type] > 0.2) M.Weaken(10) -/datum/reagent/toxin/dextrotoxin/Destroy() - if(holder && holder.my_atom && ismob(holder.my_atom)) - var/mob/M = holder.my_atom - to_chat(M, SPAN_WARNING("You can feel sensation creeping back into your limbs...")) +/decl/reagent/toxin/dextrotoxin/final_effect(mob/living/carbon/M, datum/reagents/holder) + to_chat(M, SPAN_WARNING("You can feel sensation creeping back into your limbs...")) return ..() + +/decl/reagent/toxin/coagulated_blood + name = "Hemoglobin" + description = "A protein that works to carry oxygen. If freely floating in the bloodstream, however, it is toxic to the kidneys." + reagent_state = SOLID + color = "#C80000" + metabolism = REM * 0.5 // 0.05/second by default, so it isn't outhealed. + taste_description = "iron" + taste_mult = 1.3 + fallback_specific_heat = 3.617 + target_organ = BP_KIDNEYS + +/decl/reagent/toxin/coagulated_blood/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/datum/reagents/holder) + return // denatured blood isn't absorbed when eaten + +/decl/reagent/toxin/coagulated_blood/affect_blood(mob/living/carbon/M, alien, removed, datum/reagents/holder) + M.add_chemical_effect(CE_NEPHROTOXIC, 0) // deal no damage, but prevent regeneration + ..() diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 8d8fecb7247..aa7cc4c354d 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -15,8 +15,8 @@ var/id = null var/result = null var/list/required_reagents = list() - var/list/required_temperatures_min = list() //Format: reagent name = required_kelvin. Temperatures must exceed this value to trigger. - var/list/required_temperatures_max = list() //Format: reagent name = required_kelvin. Temperatures must be less than this value to trigger. + var/required_temperature_min // Temperatures must exceed this value to trigger. + var/required_temperature_max // Temperatures must be less than this value to trigger. var/list/catalysts = list() var/list/inhibitors = list() var/result_amount = 0 @@ -50,7 +50,11 @@ if(holder.has_any_reagent(inhibitors)) return 0 - if(!holder.has_all_temperatures(required_temperatures_min, required_temperatures_max)) + var/temp = holder.get_temperature() + if(required_temperature_min && (temp < required_temperature_min)) + return 0 + + if(required_temperature_max && (temp > required_temperature_max)) return 0 return 1 @@ -65,18 +69,18 @@ (max_product/result_amount) / reaction_limit == yield/(1-yield) We make use of the fact that: - reaction_limit = (holder.get_reagent_amount(reactant) / required_reagents[reactant]) of the limiting reagent. + reaction_limit = (REAGENT_VOLUME(holder, reactant) / required_reagents[reactant]) of the limiting reagent. */ var/yield_ratio = yield/(1-yield) var/max_product = yield_ratio * reaction_limit * result_amount //rearrange to obtain max_product - var/yield_limit = max(0, max_product - holder.get_reagent_amount(result))/result_amount + var/yield_limit = max(0, max_product - REAGENT_VOLUME(holder, result))/result_amount progress = min(progress, yield_limit) //apply yield limit //apply min reaction progress - wasn't sure if this should go before or after applying yield //I guess people can just have their miniscule reactions go to completion regardless of yield. for(var/reactant in required_reagents) - var/remainder = holder.get_reagent_amount(reactant) - progress*required_reagents[reactant] + var/remainder = REAGENT_VOLUME(holder, reactant) - progress*required_reagents[reactant] if(remainder <= min_reaction*required_reagents[reactant]) progress = reaction_limit break @@ -87,7 +91,7 @@ //determine how far the reaction can proceed var/list/reaction_limits = list() for(var/reactant in required_reagents) - reaction_limits += holder.get_reagent_amount(reactant) / required_reagents[reactant] + reaction_limits += REAGENT_VOLUME(holder, reactant) / required_reagents[reactant] //determine how far the reaction proceeds var/reaction_limit = min(reaction_limits) @@ -102,15 +106,15 @@ var/total_thermal_energy = 0 for(var/reactant in required_reagents) var/amt_used = required_reagents[reactant] * reaction_progress - var/datum/reagent/removing_reagent = holder.get_reagent(reactant) - var/energy_transfered = removing_reagent.get_thermal_energy() * (amt_used / removing_reagent.volume) + var/decl/reagent/removing_reagent = decls_repository.get_decl(reactant) + var/energy_transfered = removing_reagent.get_thermal_energy(holder) * (amt_used / holder.reagent_volumes[reactant]) total_thermal_energy += energy_transfered holder.remove_reagent(reactant, amt_used, safety = 1) //add the product var/amt_produced = result_amount * reaction_progress if(result) - holder.add_reagent(result, amt_produced, data, safety = 1, thermal_energy = total_thermal_energy) + holder.add_reagent(result, amt_produced, data, safety = 1, new_thermal_energy = total_thermal_energy) on_reaction(holder, amt_produced, total_thermal_energy) @@ -142,516 +146,516 @@ /datum/chemical_reaction/inaprovaline name = "Inaprovaline" id = "inaprovaline" - result = /datum/reagent/inaprovaline - required_reagents = list(/datum/reagent/acetone = 1, /datum/reagent/carbon = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/inaprovaline + required_reagents = list(/decl/reagent/acetone = 1, /decl/reagent/carbon = 1, /decl/reagent/sugar = 1) result_amount = 3 /datum/chemical_reaction/dylovene name = "Dylovene" id = "dylovene" - result = /datum/reagent/dylovene - required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/potassium = 1, /datum/reagent/ammonia = 1) + result = /decl/reagent/dylovene + required_reagents = list(/decl/reagent/silicon = 1, /decl/reagent/potassium = 1, /decl/reagent/ammonia = 1) result_amount = 3 /datum/chemical_reaction/mortaphenyl name = "Mortaphenyl" id = "mortaphenyl" - result = /datum/reagent/mortaphenyl - required_reagents = list(/datum/reagent/inaprovaline = 1, /datum/reagent/alcohol/ethanol = 1, /datum/reagent/acetone = 1) + result = /decl/reagent/mortaphenyl + required_reagents = list(/decl/reagent/inaprovaline = 1, /decl/reagent/alcohol = 1, /decl/reagent/acetone = 1) result_amount = 3 /datum/chemical_reaction/perconol name = "Perconol" id = "perconol" - result = /datum/reagent/perconol - required_reagents = list(/datum/reagent/mortaphenyl = 1, /datum/reagent/sugar = 1, /datum/reagent/water = 1) + result = /decl/reagent/perconol + required_reagents = list(/decl/reagent/mortaphenyl = 1, /decl/reagent/sugar = 1, /decl/reagent/water = 1) result_amount = 3 /datum/chemical_reaction/oxycomorphine name = "Oxycomorphine" id = "oxycomorphine" - result = /datum/reagent/oxycomorphine - required_reagents = list(/datum/reagent/alcohol/ethanol = 1, /datum/reagent/mortaphenyl = 1) - catalysts = list(/datum/reagent/toxin/phoron = 5) + result = /decl/reagent/oxycomorphine + required_reagents = list(/decl/reagent/alcohol = 1, /decl/reagent/mortaphenyl = 1) + catalysts = list(/decl/reagent/toxin/phoron = 5) result_amount = 1 /datum/chemical_reaction/sterilizine name = "Sterilizine" id = "sterilizine" - result = /datum/reagent/sterilizine - required_reagents = list(/datum/reagent/alcohol/ethanol = 1, /datum/reagent/dylovene = 1, /datum/reagent/acid/hydrochloric = 1) + result = /decl/reagent/sterilizine + required_reagents = list(/decl/reagent/alcohol = 1, /decl/reagent/dylovene = 1, /decl/reagent/acid/hydrochloric = 1) result_amount = 3 /datum/chemical_reaction/silicate name = "Silicate" id = "silicate" - result = /datum/reagent/silicate - required_reagents = list(/datum/reagent/aluminum = 1, /datum/reagent/silicon = 1, /datum/reagent/acetone = 1) + result = /decl/reagent/silicate + required_reagents = list(/decl/reagent/aluminum = 1, /decl/reagent/silicon = 1, /decl/reagent/acetone = 1) result_amount = 3 /datum/chemical_reaction/mutagen name = "Unstable mutagen" id = "mutagen" - result = /datum/reagent/mutagen - required_reagents = list(/datum/reagent/radium = 1, /datum/reagent/phosphorus = 1, /datum/reagent/acid/hydrochloric = 1) + result = /decl/reagent/mutagen + required_reagents = list(/decl/reagent/radium = 1, /decl/reagent/phosphorus = 1, /decl/reagent/acid/hydrochloric = 1) result_amount = 3 /datum/chemical_reaction/thermite name = "Thermite" id = "thermite" - result = /datum/reagent/thermite - required_reagents = list(/datum/reagent/aluminum = 1, /datum/reagent/iron = 1, /datum/reagent/acetone = 1) + result = /decl/reagent/thermite + required_reagents = list(/decl/reagent/aluminum = 1, /decl/reagent/iron = 1, /decl/reagent/acetone = 1) result_amount = 3 /datum/chemical_reaction/space_drugs name = "Space Drugs" id = "space_drugs" - result = /datum/reagent/space_drugs - required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/sugar = 1, /datum/reagent/lithium = 1) + result = /decl/reagent/space_drugs + required_reagents = list(/decl/reagent/mercury = 1, /decl/reagent/sugar = 1, /decl/reagent/lithium = 1) result_amount = 3 /datum/chemical_reaction/lube name = "Space Lube" id = "lube" - result = /datum/reagent/lube - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/silicon = 1, /datum/reagent/acetone = 1) + result = /decl/reagent/lube + required_reagents = list(/decl/reagent/water = 1, /decl/reagent/silicon = 1, /decl/reagent/acetone = 1) result_amount = 4 /datum/chemical_reaction/pacid name = "Polytrinic acid" id = "pacid" - result = /datum/reagent/acid/polyacid - required_reagents = list(/datum/reagent/acid = 1, /datum/reagent/acid/hydrochloric = 1, /datum/reagent/potassium = 1) + result = /decl/reagent/acid/polyacid + required_reagents = list(/decl/reagent/acid = 1, /decl/reagent/acid/hydrochloric = 1, /decl/reagent/potassium = 1) result_amount = 3 /datum/chemical_reaction/synaptizine name = "Synaptizine" id = "synaptizine" - result = /datum/reagent/synaptizine - required_reagents = list(/datum/reagent/sugar = 1, /datum/reagent/lithium = 1, /datum/reagent/water = 1) + result = /decl/reagent/synaptizine + required_reagents = list(/decl/reagent/sugar = 1, /decl/reagent/lithium = 1, /decl/reagent/water = 1) result_amount = 3 /datum/chemical_reaction/hyronalin name = "Hyronalin" id = "hyronalin" - result = /datum/reagent/hyronalin - required_reagents = list(/datum/reagent/radium = 1, /datum/reagent/dylovene = 1) + result = /decl/reagent/hyronalin + required_reagents = list(/decl/reagent/radium = 1, /decl/reagent/dylovene = 1) result_amount = 2 /datum/chemical_reaction/arithrazine name = "Arithrazine" id = "arithrazine" - result = /datum/reagent/arithrazine - required_reagents = list(/datum/reagent/hyronalin = 1, /datum/reagent/hydrazine = 1) + result = /decl/reagent/arithrazine + required_reagents = list(/decl/reagent/hyronalin = 1, /decl/reagent/hydrazine = 1) result_amount = 2 /datum/chemical_reaction/impedrezene name = "Impedrezene" id = "impedrezene" - result = /datum/reagent/impedrezene - required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/acetone = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/impedrezene + required_reagents = list(/decl/reagent/mercury = 1, /decl/reagent/acetone = 1, /decl/reagent/sugar = 1) result_amount = 2 /datum/chemical_reaction/kelotane name = "Kelotane" id = "kelotane" - result = /datum/reagent/kelotane - required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/carbon = 1) + result = /decl/reagent/kelotane + required_reagents = list(/decl/reagent/silicon = 1, /decl/reagent/carbon = 1) result_amount = 2 log_is_important = 1 /datum/chemical_reaction/peridaxon name = "Peridaxon" id = "peridaxon" - result = /datum/reagent/peridaxon - required_reagents = list(/datum/reagent/bicaridine = 1, /datum/reagent/clonexadone = 1) - catalysts = list(/datum/reagent/toxin/phoron = 5) + result = /decl/reagent/peridaxon + required_reagents = list(/decl/reagent/bicaridine = 1, /decl/reagent/clonexadone = 1) + catalysts = list(/decl/reagent/toxin/phoron = 5) result_amount = 1 /datum/chemical_reaction/virus_food name = "Virus Food" id = "virusfood" - result = /datum/reagent/nutriment/virusfood - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/drink/milk = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/nutriment/virusfood + required_reagents = list(/decl/reagent/water = 1, /decl/reagent/drink/milk = 1, /decl/reagent/sugar = 1) result_amount = 6 /datum/chemical_reaction/leporazine name = "Leporazine" id = "leporazine" - result = /datum/reagent/leporazine - required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/copper = 1) - catalysts = list(/datum/reagent/toxin/phoron = 5) + result = /decl/reagent/leporazine + required_reagents = list(/decl/reagent/silicon = 1, /decl/reagent/copper = 1) + catalysts = list(/decl/reagent/toxin/phoron = 5) result_amount = 2 /datum/chemical_reaction/cryptobiolin name = "Cryptobiolin" id = "cryptobiolin" - result = /datum/reagent/cryptobiolin - required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/acetone = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/cryptobiolin + required_reagents = list(/decl/reagent/potassium = 1, /decl/reagent/acetone = 1, /decl/reagent/sugar = 1) result_amount = 3 /datum/chemical_reaction/tricordrazine name = "Tricordrazine" id = "tricordrazine" - result = /datum/reagent/tricordrazine - required_reagents = list(/datum/reagent/inaprovaline = 1, /datum/reagent/dylovene = 1) + result = /decl/reagent/tricordrazine + required_reagents = list(/decl/reagent/inaprovaline = 1, /decl/reagent/dylovene = 1) result_amount = 2 /datum/chemical_reaction/alkysine name = "Alkysine" id = "alkysine" - result = /datum/reagent/alkysine - required_reagents = list(/datum/reagent/acid/hydrochloric = 1, /datum/reagent/ammonia = 1, /datum/reagent/dylovene = 1) + result = /decl/reagent/alkysine + required_reagents = list(/decl/reagent/acid/hydrochloric = 1, /decl/reagent/ammonia = 1, /decl/reagent/dylovene = 1) result_amount = 2 /datum/chemical_reaction/dexalin name = "Dexalin" id = "dexalin" - result = /datum/reagent/dexalin - required_reagents = list(/datum/reagent/acetone = 2, /datum/reagent/toxin/phoron = 0.1) - catalysts = list(/datum/reagent/toxin/phoron = 1) - inhibitors = list(/datum/reagent/water = 1) // Messes with cryox + result = /decl/reagent/dexalin + required_reagents = list(/decl/reagent/acetone = 2, /decl/reagent/toxin/phoron = 0.1) + catalysts = list(/decl/reagent/toxin/phoron = 1) + inhibitors = list(/decl/reagent/water = 1) // Messes with cryox result_amount = 1 /datum/chemical_reaction/dermaline name = "Dermaline" id = "dermaline" - result = /datum/reagent/dermaline - required_reagents = list(/datum/reagent/acetone = 1, /datum/reagent/phosphorus = 1, /datum/reagent/kelotane = 1) + result = /decl/reagent/dermaline + required_reagents = list(/decl/reagent/acetone = 1, /decl/reagent/phosphorus = 1, /decl/reagent/kelotane = 1) result_amount = 3 /datum/chemical_reaction/dexalinp name = "Dexalin Plus" id = "dexalinp" - result = /datum/reagent/dexalin/plus - required_reagents = list(/datum/reagent/dexalin = 1, /datum/reagent/carbon = 1, /datum/reagent/iron = 1) + result = /decl/reagent/dexalin/plus + required_reagents = list(/decl/reagent/dexalin = 1, /decl/reagent/carbon = 1, /decl/reagent/iron = 1) result_amount = 3 /datum/chemical_reaction/butazoline name = "Butazoline" id = "butazoline" - result = /datum/reagent/butazoline - required_reagents = list(/datum/reagent/bicaridine = 1, /datum/reagent/aluminum = 1, /datum/reagent/acid/hydrochloric = 1) + result = /decl/reagent/butazoline + required_reagents = list(/decl/reagent/bicaridine = 1, /decl/reagent/aluminum = 1, /decl/reagent/acid/hydrochloric = 1) result_amount = 3 /datum/chemical_reaction/bicaridine name = "Bicaridine" id = "bicaridine" - result = /datum/reagent/bicaridine - required_reagents = list(/datum/reagent/inaprovaline = 1, /datum/reagent/carbon = 1) - inhibitors = list(/datum/reagent/sugar = 1) //Messes with inaprovaline + result = /decl/reagent/bicaridine + required_reagents = list(/decl/reagent/inaprovaline = 1, /decl/reagent/carbon = 1) + inhibitors = list(/decl/reagent/sugar = 1) //Messes with inaprovaline result_amount = 2 /datum/chemical_reaction/hyperzine name = "Hyperzine" id = "hyperzine" - result = /datum/reagent/hyperzine - required_reagents = list(/datum/reagent/sugar = 1, /datum/reagent/phosphorus = 1, /datum/reagent/sulfur = 1) + result = /decl/reagent/hyperzine + required_reagents = list(/decl/reagent/sugar = 1, /decl/reagent/phosphorus = 1, /decl/reagent/sulfur = 1) result_amount = 3 /datum/chemical_reaction/ryetalyn name = "Ryetalyn" id = "ryetalyn" - result = /datum/reagent/ryetalyn - required_reagents = list(/datum/reagent/arithrazine = 1, /datum/reagent/carbon = 1) + result = /decl/reagent/ryetalyn + required_reagents = list(/decl/reagent/arithrazine = 1, /decl/reagent/carbon = 1) result_amount = 2 /datum/chemical_reaction/cryoxadone name = "Cryoxadone" id = "cryoxadone" - result = /datum/reagent/cryoxadone - required_reagents = list(/datum/reagent/dexalin = 1, /datum/reagent/water = 1, /datum/reagent/acetone = 1) + result = /decl/reagent/cryoxadone + required_reagents = list(/decl/reagent/dexalin = 1, /decl/reagent/water = 1, /decl/reagent/acetone = 1) result_amount = 3 /datum/chemical_reaction/clonexadone name = "Clonexadone" id = "clonexadone" - result = /datum/reagent/clonexadone - required_reagents = list(/datum/reagent/cryoxadone = 1, /datum/reagent/sodium = 1, /datum/reagent/toxin/phoron = 0.1) - catalysts = list(/datum/reagent/toxin/phoron = 5) + result = /decl/reagent/clonexadone + required_reagents = list(/decl/reagent/cryoxadone = 1, /decl/reagent/sodium = 1, /decl/reagent/toxin/phoron = 0.1) + catalysts = list(/decl/reagent/toxin/phoron = 5) result_amount = 2 /datum/chemical_reaction/thetamycin name = "Thetamycin" id = "thetamycin" - result = /datum/reagent/thetamycin - required_reagents = list(/datum/reagent/cryptobiolin = 1, /datum/reagent/dylovene = 1) + result = /decl/reagent/thetamycin + required_reagents = list(/decl/reagent/cryptobiolin = 1, /decl/reagent/dylovene = 1) result_amount = 2 /datum/chemical_reaction/cetahydramine name = "Cetahydramine" id = "cetahydramine" - result = /datum/reagent/cetahydramine - required_reagents = list(/datum/reagent/cryptobiolin = 1, /datum/reagent/inaprovaline = 1) + result = /decl/reagent/cetahydramine + required_reagents = list(/decl/reagent/cryptobiolin = 1, /decl/reagent/inaprovaline = 1) result_amount = 2 /datum/chemical_reaction/asinodryl name = "Asinodryl" id = "asinodryl" - result = /datum/reagent/asinodryl - required_reagents = list(/datum/reagent/cetahydramine = 1, /datum/reagent/synaptizine = 1, /datum/reagent/water = 3) - catalysts = list(/datum/reagent/tungsten = 5) + result = /decl/reagent/asinodryl + required_reagents = list(/decl/reagent/cetahydramine = 1, /decl/reagent/synaptizine = 1, /decl/reagent/water = 3) + catalysts = list(/decl/reagent/tungsten = 5) result_amount = 3 /datum/chemical_reaction/oculine name = "oculine" id = "oculine" - result = /datum/reagent/oculine - required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/hydrazine = 1, /datum/reagent/dylovene = 1) + result = /decl/reagent/oculine + required_reagents = list(/decl/reagent/carbon = 1, /decl/reagent/hydrazine = 1, /decl/reagent/dylovene = 1) result_amount = 2 /datum/chemical_reaction/ethylredoxrazine name = "Ethylredoxrazine" id = "ethylredoxrazine" - result = /datum/reagent/ethylredoxrazine - required_reagents = list(/datum/reagent/acetone = 1, /datum/reagent/dylovene = 1, /datum/reagent/carbon = 1) + result = /decl/reagent/ethylredoxrazine + required_reagents = list(/decl/reagent/acetone = 1, /decl/reagent/dylovene = 1, /decl/reagent/carbon = 1) result_amount = 3 /datum/chemical_reaction/verunol name = "Verunol Syrup" id = "verunol" - result = /datum/reagent/verunol - required_reagents = list(/datum/reagent/hydrazine = 1, /datum/reagent/dylovene = 1, /datum/reagent/alcohol/ethanol = 1) + result = /decl/reagent/verunol + required_reagents = list(/decl/reagent/hydrazine = 1, /decl/reagent/dylovene = 1, /decl/reagent/alcohol = 1) result_amount = 3 /datum/chemical_reaction/adipemcina name = "Adipemcina" id = "adipemcina" - result = /datum/reagent/adipemcina - required_reagents = list(/datum/reagent/lithium = 1, /datum/reagent/dylovene = 1, /datum/reagent/potassium = 1) + result = /decl/reagent/adipemcina + required_reagents = list(/decl/reagent/lithium = 1, /decl/reagent/dylovene = 1, /decl/reagent/potassium = 1) result_amount = 3 /datum/chemical_reaction/soporific name = "Soporific" id = "stoxin" - result = /datum/reagent/soporific - required_reagents = list(/datum/reagent/polysomnine = 1, /datum/reagent/sugar = 4) - inhibitors = list(/datum/reagent/phosphorus) // Messes with the smoke + result = /decl/reagent/soporific + required_reagents = list(/decl/reagent/polysomnine = 1, /decl/reagent/sugar = 4) + inhibitors = list(/decl/reagent/phosphorus) // Messes with the smoke result_amount = 5 /datum/chemical_reaction/polysomnine name = "Polysomnine" id = "polysomnine" - result = /datum/reagent/polysomnine - required_reagents = list(/datum/reagent/alcohol/ethanol = 1, /datum/reagent/acid/hydrochloric = 3, /datum/reagent/water = 1) + result = /decl/reagent/polysomnine + required_reagents = list(/decl/reagent/alcohol = 1, /decl/reagent/acid/hydrochloric = 3, /decl/reagent/water = 1) result_amount = 1 /datum/chemical_reaction/potassium_chloride name = "Potassium Chloride" id = "potassium_chloride" - result = /datum/reagent/toxin/potassium_chloride - required_reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/potassium = 1) + result = /decl/reagent/toxin/potassium_chloride + required_reagents = list(/decl/reagent/sodiumchloride = 1, /decl/reagent/potassium = 1) result_amount = 2 /datum/chemical_reaction/potassium_chlorophoride name = "Potassium Chlorophoride" id = "potassium_chlorophoride" - result = /datum/reagent/toxin/potassium_chlorophoride - required_reagents = list(/datum/reagent/toxin/potassium_chloride = 1, /datum/reagent/toxin/phoron = 1, /datum/reagent/polysomnine = 1) + result = /decl/reagent/toxin/potassium_chlorophoride + required_reagents = list(/decl/reagent/toxin/potassium_chloride = 1, /decl/reagent/toxin/phoron = 1, /decl/reagent/polysomnine = 1) result_amount = 4 /datum/chemical_reaction/zombiepowder name = "Zombie Powder" id = "zombiepowder" - result = /datum/reagent/toxin/zombiepowder - required_reagents = list(/datum/reagent/toxin/carpotoxin = 5, /datum/reagent/soporific = 5, /datum/reagent/copper = 5) + result = /decl/reagent/toxin/zombiepowder + required_reagents = list(/decl/reagent/toxin/carpotoxin = 5, /decl/reagent/soporific = 5, /decl/reagent/copper = 5) result_amount = 2 /datum/chemical_reaction/dextrotoxin name = "Dextrotoxin" id = "dextrotoxin" - result = /datum/reagent/toxin/dextrotoxin - required_reagents = list(/datum/reagent/toxin/carpotoxin = 3, /datum/reagent/soporific = 10, /datum/reagent/toxin/phoron = 5) + result = /decl/reagent/toxin/dextrotoxin + required_reagents = list(/decl/reagent/toxin/carpotoxin = 3, /decl/reagent/soporific = 10, /decl/reagent/toxin/phoron = 5) result_amount = 5 /datum/chemical_reaction/mindbreaker name = "Mindbreaker Toxin" id = "mindbreaker" - result = /datum/reagent/mindbreaker - required_reagents = list(/datum/reagent/silicon = 1, /datum/reagent/hydrazine = 1, /datum/reagent/dylovene = 1) + result = /decl/reagent/mindbreaker + required_reagents = list(/decl/reagent/silicon = 1, /decl/reagent/hydrazine = 1, /decl/reagent/dylovene = 1) result_amount = 3 /datum/chemical_reaction/lipozine name = "Lipozine" id = "Lipozine" - result = /datum/reagent/lipozine - required_reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/alcohol/ethanol = 1, /datum/reagent/radium = 1) + result = /decl/reagent/lipozine + required_reagents = list(/decl/reagent/sodiumchloride = 1, /decl/reagent/alcohol = 1, /decl/reagent/radium = 1) result_amount = 3 /datum/chemical_reaction/coagzolug name = "Coagzolug" id = "coagzolug" - result = /datum/reagent/coagzolug - required_reagents = list(/datum/reagent/tricordrazine = 1, /datum/reagent/coughsyrup = 1) + result = /decl/reagent/coagzolug + required_reagents = list(/decl/reagent/tricordrazine = 1, /decl/reagent/coughsyrup = 1) result_amount = 1 // result is 1. i imagine it's because of some whacky reaction /datum/chemical_reaction/surfactant name = "Azosurfactant" id = "surfactant" - result = /datum/reagent/surfactant - required_reagents = list(/datum/reagent/hydrazine = 2, /datum/reagent/carbon = 2, /datum/reagent/acid = 1) + result = /decl/reagent/surfactant + required_reagents = list(/decl/reagent/hydrazine = 2, /decl/reagent/carbon = 2, /decl/reagent/acid = 1) result_amount = 5 /datum/chemical_reaction/diethylamine name = "Diethylamine" id = "diethylamine" - result = /datum/reagent/diethylamine - required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/alcohol/ethanol = 1) + result = /decl/reagent/diethylamine + required_reagents = list(/decl/reagent/ammonia = 1, /decl/reagent/alcohol = 1) result_amount = 2 /datum/chemical_reaction/space_cleaner name = "Space cleaner" id = "cleaner" - result = /datum/reagent/spacecleaner - required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/water = 1) + result = /decl/reagent/spacecleaner + required_reagents = list(/decl/reagent/ammonia = 1, /decl/reagent/water = 1) result_amount = 2 /datum/chemical_reaction/plantbgone name = "Plant-B-Gone" id = "plantbgone" - result = /datum/reagent/toxin/plantbgone - required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/water = 4) + result = /decl/reagent/toxin/plantbgone + required_reagents = list(/decl/reagent/toxin = 1, /decl/reagent/water = 4) result_amount = 5 /datum/chemical_reaction/foaming_agent name = "Foaming Agent" id = "foaming_agent" - result = /datum/reagent/foaming_agent - required_reagents = list(/datum/reagent/lithium = 1, /datum/reagent/hydrazine = 1) + result = /decl/reagent/foaming_agent + required_reagents = list(/decl/reagent/lithium = 1, /decl/reagent/hydrazine = 1) result_amount = 1 /datum/chemical_reaction/glycerol name = "Glycerol" id = "glycerol" - result = /datum/reagent/glycerol - required_reagents = list(/datum/reagent/nutriment/triglyceride = 1, /datum/reagent/alcohol/ethanol = 2) // transesterification of triglycerides into butanol and glycerol - catalysts = list(/datum/reagent/acid = 5) // using acid as a catalyst + result = /decl/reagent/glycerol + required_reagents = list(/decl/reagent/nutriment/triglyceride = 1, /decl/reagent/alcohol = 2) // transesterification of triglycerides into butanol and glycerol + catalysts = list(/decl/reagent/acid = 5) // using acid as a catalyst result_amount = 3 //each triglyceride has 3 glycerin chains. /datum/chemical_reaction/glycerol/butanol name = "Glycerol" id = "glycerol-butane" - result = /datum/reagent/glycerol - required_reagents = list(/datum/reagent/nutriment/triglyceride = 1, /datum/reagent/alcohol/butanol = 2) + result = /decl/reagent/glycerol + required_reagents = list(/decl/reagent/nutriment/triglyceride = 1, /decl/reagent/alcohol/butanol = 2) /datum/chemical_reaction/glycerol/on_reaction(var/datum/reagents/holder, var/created_volume) - holder.add_reagent(/datum/reagent/acetone, 2 * created_volume / 3) // closest we can get to biofuel, sorry + holder.add_reagent(/decl/reagent/acetone, 2 * created_volume / 3) // closest we can get to biofuel, sorry /datum/chemical_reaction/glucose name = "Glucose" id = "glucose" - result = /datum/reagent/nutriment/glucose - required_reagents = list(/datum/reagent/nutriment = 5) // thank you, Gottlieb Kirchhoff - catalysts = list(/datum/reagent/acid = 5 )//starch into sugar with sulfuric acid catalyst + result = /decl/reagent/nutriment/glucose + required_reagents = list(/decl/reagent/nutriment = 5) // thank you, Gottlieb Kirchhoff + catalysts = list(/decl/reagent/acid = 5 )//starch into sugar with sulfuric acid catalyst /datum/chemical_reaction/sodiumchloride name = "Sodium Chloride" id = "sodiumchloride" - result = /datum/reagent/sodiumchloride - required_reagents = list(/datum/reagent/sodium = 1, /datum/reagent/acid/hydrochloric = 1) + result = /decl/reagent/sodiumchloride + required_reagents = list(/decl/reagent/sodium = 1, /decl/reagent/acid/hydrochloric = 1) result_amount = 2 /datum/chemical_reaction/condensedcapsaicin name = "Condensed Capsaicin" id = "condensedcapsaicin" - result = /datum/reagent/capsaicin/condensed - required_reagents = list(/datum/reagent/capsaicin = 2) - catalysts = list(/datum/reagent/toxin/phoron = 5) + result = /decl/reagent/capsaicin/condensed + required_reagents = list(/decl/reagent/capsaicin = 2) + catalysts = list(/decl/reagent/toxin/phoron = 5) result_amount = 1 /datum/chemical_reaction/coolant name = "Coolant" id = "coolant" - result = /datum/reagent/coolant - required_reagents = list(/datum/reagent/tungsten = 1, /datum/reagent/acetone = 1, /datum/reagent/water = 1) + result = /decl/reagent/coolant + required_reagents = list(/decl/reagent/tungsten = 1, /decl/reagent/acetone = 1, /decl/reagent/water = 1) result_amount = 3 log_is_important = 1 /datum/chemical_reaction/rezadone name = "Rezadone" id = "rezadone" - result = /datum/reagent/rezadone - required_reagents = list(/datum/reagent/toxin/carpotoxin = 1, /datum/reagent/cryptobiolin = 1, /datum/reagent/copper = 1) + result = /decl/reagent/rezadone + required_reagents = list(/decl/reagent/toxin/carpotoxin = 1, /decl/reagent/cryptobiolin = 1, /decl/reagent/copper = 1) result_amount = 3 /datum/chemical_reaction/lexorin name = "Lexorin" id = "lexorin" - result = /datum/reagent/lexorin - required_reagents = list(/datum/reagent/tungsten = 1, /datum/reagent/hydrazine = 1, /datum/reagent/ammonia = 1) - catalysts = list(/datum/reagent/toxin/phoron = 5) + result = /decl/reagent/lexorin + required_reagents = list(/decl/reagent/tungsten = 1, /decl/reagent/hydrazine = 1, /decl/reagent/ammonia = 1) + catalysts = list(/decl/reagent/toxin/phoron = 5) result_amount = 3 /datum/chemical_reaction/fluvectionem name = "Fluvectionem" id = "fluvectionem" - result = /datum/reagent/fluvectionem - required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/sodiumchloride = 1, /datum/reagent/ammonia = 1) + result = /decl/reagent/fluvectionem + required_reagents = list(/decl/reagent/mercury = 1, /decl/reagent/sodiumchloride = 1, /decl/reagent/ammonia = 1) result_amount = 3 /datum/chemical_reaction/cardox name = "Cardox" id = "cardox" - result = /datum/reagent/toxin/cardox - required_reagents = list(/datum/reagent/platinum = 1, /datum/reagent/carbon = 1, /datum/reagent/sterilizine = 1) + result = /decl/reagent/toxin/cardox + required_reagents = list(/decl/reagent/platinum = 1, /decl/reagent/carbon = 1, /decl/reagent/sterilizine = 1) result_amount = 3 /datum/chemical_reaction/cardox_removal name = "Cardox Removal" id = "cardox_removal" - result = /datum/reagent/carbon - required_reagents = list(/datum/reagent/toxin/cardox = 0.1, /datum/reagent/toxin/phoron = 1) + result = /decl/reagent/carbon + required_reagents = list(/decl/reagent/toxin/cardox = 0.1, /decl/reagent/toxin/phoron = 1) result_amount = 0 /datum/chemical_reaction/monoammoniumphosphate name = "Monoammoniumphosphate" id = "monoammoniumphosphate" - result = /datum/reagent/toxin/fertilizer/monoammoniumphosphate - required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/acid = 1, /datum/reagent/sodium = 1, /datum/reagent/phosphorus = 1) + result = /decl/reagent/toxin/fertilizer/monoammoniumphosphate + required_reagents = list(/decl/reagent/ammonia = 1, /decl/reagent/acid = 1, /decl/reagent/sodium = 1, /decl/reagent/phosphorus = 1) result_amount = 4 /datum/chemical_reaction/koispasteclean name = "Filtered K'ois" id = "koispasteclean" - result = /datum/reagent/kois/clean - required_reagents = list(/datum/reagent/kois = 2,/datum/reagent/toxin/cardox = 0.1) - catalysts = list(/datum/reagent/toxin/cardox = 5) + result = /decl/reagent/kois/clean + required_reagents = list(/decl/reagent/kois = 2,/decl/reagent/toxin/cardox = 0.1) + catalysts = list(/decl/reagent/toxin/cardox = 5) result_amount = 1 /datum/chemical_reaction/pulmodeiectionem name = "Pulmodeiectionem" id = "pulmodeiectionem" - result = /datum/reagent/pulmodeiectionem - required_reagents = list(/datum/reagent/fluvectionem = 1, /datum/reagent/lexorin = 1) + result = /decl/reagent/pulmodeiectionem + required_reagents = list(/decl/reagent/fluvectionem = 1, /decl/reagent/lexorin = 1) result_amount = 2 /datum/chemical_reaction/pneumalin name = "Pneumalin" id = "pneumalin" - result = /datum/reagent/pneumalin - required_reagents = list(/datum/reagent/coughsyrup = 1, /datum/reagent/copper = 1, /datum/reagent/pulmodeiectionem = 1) + result = /decl/reagent/pneumalin + required_reagents = list(/decl/reagent/coughsyrup = 1, /decl/reagent/copper = 1, /decl/reagent/pulmodeiectionem = 1) result_amount = 2 /datum/chemical_reaction/saline name = "Saline Plus" id = "saline" - result = /datum/reagent/saline - required_reagents = list(/datum/reagent/water = 2, /datum/reagent/sugar = 0.5, /datum/reagent/sodiumchloride = 1) - catalysts = list(/datum/reagent/toxin/phoron = 5) + result = /decl/reagent/saline + required_reagents = list(/decl/reagent/water = 2, /decl/reagent/sugar = 0.5, /decl/reagent/sodiumchloride = 1) + catalysts = list(/decl/reagent/toxin/phoron = 5) result_amount = 2 /datum/chemical_reaction/cataleptinol name = "Cataleptinol" id = "cataleptinol" - result = /datum/reagent/cataleptinol - required_reagents = list(/datum/reagent/toxin/phoron = 0.1, /datum/reagent/alkysine = 1, /datum/reagent/cryoxadone = 0.1) + result = /decl/reagent/cataleptinol + required_reagents = list(/decl/reagent/toxin/phoron = 0.1, /decl/reagent/alkysine = 1, /decl/reagent/cryoxadone = 0.1) result_amount = 1 /datum/chemical_reaction/coughsyrup name = "Cough Syrup" id = "coughsyrup" - result = /datum/reagent/coughsyrup - required_reagents = list(/datum/reagent/carbon = 1, /datum/reagent/ammonia = 1, /datum/reagent/water = 1) + result = /decl/reagent/coughsyrup + required_reagents = list(/decl/reagent/carbon = 1, /decl/reagent/tungsten = 1, /decl/reagent/water = 1) result_amount = 3 //Mental Medication @@ -659,84 +663,84 @@ /datum/chemical_reaction/corophenidate name = "Corophenidate" id = "corophenidate" - result = /datum/reagent/mental/corophenidate - required_reagents = list(/datum/reagent/mindbreaker = 1, /datum/reagent/hydrazine = 1) + result = /decl/reagent/mental/corophenidate + required_reagents = list(/decl/reagent/mindbreaker = 1, /decl/reagent/hydrazine = 1) result_amount = 2 /datum/chemical_reaction/minaphobin name = "Minaphobin" id = "minaphobin" - result = /datum/reagent/mental/minaphobin - required_reagents = list(/datum/reagent/mindbreaker = 1, /datum/reagent/carbon = 1) + result = /decl/reagent/mental/minaphobin + required_reagents = list(/decl/reagent/mindbreaker = 1, /decl/reagent/carbon = 1) result_amount = 2 /datum/chemical_reaction/adrenaline name = "Adrenaline" - result = /datum/reagent/adrenaline - required_reagents = list(/datum/reagent/inaprovaline = 1, /datum/reagent/hyperzine = 1, /datum/reagent/dexalin/plus = 1) + result = /decl/reagent/adrenaline + required_reagents = list(/decl/reagent/inaprovaline = 1, /decl/reagent/hyperzine = 1, /decl/reagent/dexalin/plus = 1) result_amount = 3 /datum/chemical_reaction/neurostabin name = "Neurostabin" id = "neurostabin" - result = /datum/reagent/mental/neurostabin - required_reagents = list(/datum/reagent/mindbreaker = 1, /datum/reagent/iron = 1, /datum/reagent/potassium = 1) + result = /decl/reagent/mental/neurostabin + required_reagents = list(/decl/reagent/mindbreaker = 1, /decl/reagent/iron = 1, /decl/reagent/potassium = 1) result_amount = 3 /datum/chemical_reaction/parvosil name = "Parvosil" id = "parvosil" - result = /datum/reagent/mental/parvosil - required_reagents = list(/datum/reagent/mindbreaker = 1, /datum/reagent/aluminum = 1, /datum/reagent/potassium = 1) + result = /decl/reagent/mental/parvosil + required_reagents = list(/decl/reagent/mindbreaker = 1, /decl/reagent/aluminum = 1, /decl/reagent/potassium = 1) result_amount = 3 /datum/chemical_reaction/emoxanyl name = "Emoxanyl" id = "emoxanyl" - result = /datum/reagent/mental/emoxanyl - required_reagents = list(/datum/reagent/mindbreaker = 1, /datum/reagent/silicon = 1, /datum/reagent/alcohol/ethanol = 1) + result = /decl/reagent/mental/emoxanyl + required_reagents = list(/decl/reagent/mindbreaker = 1, /decl/reagent/silicon = 1, /decl/reagent/alcohol = 1) result_amount = 3 /datum/chemical_reaction/orastabin name = "Orastabin" id = "orastabin" - result = /datum/reagent/mental/orastabin - required_reagents = list(/datum/reagent/mindbreaker = 1, /datum/reagent/sodium = 1, /datum/reagent/tungsten = 1) + result = /decl/reagent/mental/orastabin + required_reagents = list(/decl/reagent/mindbreaker = 1, /decl/reagent/sodium = 1, /decl/reagent/tungsten = 1) result_amount = 3 /datum/chemical_reaction/neurapan name = "Neurapan" id = "neurapan" - result = /datum/reagent/mental/neurapan - required_reagents = list(/datum/reagent/mindbreaker = 1, /datum/reagent/space_drugs = 1, /datum/reagent/alcohol/ethanol = 1) + result = /decl/reagent/mental/neurapan + required_reagents = list(/decl/reagent/mindbreaker = 1, /decl/reagent/space_drugs = 1, /decl/reagent/alcohol = 1) result_amount = 3 /datum/chemical_reaction/nerospectan name = "Nerospectan" id = "nerospectan" - result = /datum/reagent/mental/nerospectan - required_reagents = list(/datum/reagent/mindbreaker = 1, /datum/reagent/space_drugs = 1, /datum/reagent/silicon = 1) + result = /decl/reagent/mental/nerospectan + required_reagents = list(/decl/reagent/mindbreaker = 1, /decl/reagent/space_drugs = 1, /decl/reagent/silicon = 1) result_amount = 3 /datum/chemical_reaction/truthserum name = "Truthserum" id = "truthserum" - result = /datum/reagent/mental/truthserum - required_reagents = list(/datum/reagent/mindbreaker = 1, /datum/reagent/synaptizine = 1, /datum/reagent/toxin/phoron = 0.1) + result = /decl/reagent/mental/truthserum + required_reagents = list(/decl/reagent/mindbreaker = 1, /decl/reagent/synaptizine = 1, /decl/reagent/toxin/phoron = 0.1) result_amount = 2 /datum/chemical_reaction/pacifier name = "Paxazide" id = "paxazide" - result = /datum/reagent/pacifier - required_reagents = list(/datum/reagent/mental/truthserum = 1, /datum/reagent/mental/parvosil = 1) + result = /decl/reagent/pacifier + required_reagents = list(/decl/reagent/mental/truthserum = 1, /decl/reagent/mental/parvosil = 1) result_amount = 1 /datum/chemical_reaction/berserk name = "Red Nightshade" id = "berserk" - result = /datum/reagent/toxin/berserk - required_reagents = list(/datum/reagent/psilocybin = 1, /datum/reagent/alcohol/ethanol/moonshine = 1) + result = /decl/reagent/toxin/berserk + required_reagents = list(/decl/reagent/psilocybin = 1, /decl/reagent/alcohol/moonshine = 1) result_amount = 1 /* Makeshift Chemicals and Drugs */ @@ -744,38 +748,38 @@ /datum/chemical_reaction/stimm name = "Stimm" id = "stimm" - result = /datum/reagent/toxin/stimm - required_reagents = list(/datum/reagent/fuel = 1, /datum/reagent/drink/rewriter = 5) + result = /decl/reagent/toxin/stimm + required_reagents = list(/decl/reagent/fuel = 1, /decl/reagent/drink/rewriter = 5) result_amount = 6 /datum/chemical_reaction/lean name = "Lean" id = "lean" - result = /datum/reagent/toxin/lean - required_reagents = list(/datum/reagent/drink/spaceup = 2, /datum/reagent/coughsyrup = 2, /datum/reagent/sugar = 1) + result = /decl/reagent/toxin/lean + required_reagents = list(/decl/reagent/drink/spaceup = 2, /decl/reagent/coughsyrup = 2, /decl/reagent/sugar = 1) result_amount = 5 /datum/chemical_reaction/krokjuice name = "Krok Juice" id = "krok" - result = /datum/reagent/toxin/krok - required_reagents = list(/datum/reagent/drink/orangejuice = 2, /datum/reagent/fuel = 1, /datum/reagent/iron = 1) + result = /decl/reagent/toxin/krok + required_reagents = list(/decl/reagent/drink/orangejuice = 2, /decl/reagent/fuel = 1, /decl/reagent/iron = 1) result_amount = 4 /datum/chemical_reaction/raskara_dust name = "Raskara Dust" id = "raskara_dust" - result = /datum/reagent/raskara_dust - required_reagents = list(/datum/reagent/toxin/fertilizer/monoammoniumphosphate = 1, /datum/reagent/spacecleaner = 1, /datum/reagent/sodiumchloride = 2) // extinguisher, cleaner, salt - required_temperatures_min = list(/datum/reagent/toxin/fertilizer/monoammoniumphosphate = 400, /datum/reagent/spacecleaner = 400, /datum/reagent/sodiumchloride = 400) // barely over boiling point of water + result = /decl/reagent/raskara_dust + required_reagents = list(/decl/reagent/toxin/fertilizer/monoammoniumphosphate = 1, /decl/reagent/spacecleaner = 1, /decl/reagent/sodiumchloride = 2) // extinguisher, cleaner, salt + required_temperature_min = T0C + 127 // barely over boiling point of water, 400C result_amount = 2 /datum/chemical_reaction/nightjuice name = "Nightlife" id = "night_juice" - result = /datum/reagent/night_juice - required_reagents = list(/datum/reagent/mental/corophenidate = 1, /datum/reagent/synaptizine = 1, /datum/reagent/nitroglycerin = 1) - required_temperatures_min = list(/datum/reagent/mental/corophenidate = T0C+200, /datum/reagent/synaptizine = T0C+200, /datum/reagent/nitroglycerin = T0C+200) + result = /decl/reagent/night_juice + required_reagents = list(/decl/reagent/mental/corophenidate = 1, /decl/reagent/synaptizine = 1, /decl/reagent/nitroglycerin = 1) + required_temperature_min = T0C + 200 result_amount = 3 /* Solidification */ @@ -784,7 +788,7 @@ name = "Solid Phoron" id = "solidphoron" result = null - required_reagents = list(/datum/reagent/iron = 5, /datum/reagent/frostoil = 5, /datum/reagent/toxin/phoron = 20) + required_reagents = list(/decl/reagent/iron = 5, /decl/reagent/frostoil = 5, /decl/reagent/toxin/phoron = 20) result_amount = 1 /datum/chemical_reaction/phoronsolidification/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -795,7 +799,7 @@ name = "Plastic" id = "solidplastic" result = null - required_reagents = list(/datum/reagent/acid/polyacid = 1, /datum/reagent/toxin/plasticide = 2) + required_reagents = list(/decl/reagent/acid/polyacid = 1, /decl/reagent/toxin/plasticide = 2) result_amount = 1 /datum/chemical_reaction/plastication/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -806,7 +810,7 @@ name = "Uranium" id = "soliduranium" result = null - required_reagents = list(/datum/reagent/potassium = 5, /datum/reagent/frostoil = 5, /datum/reagent/uranium = 20) + required_reagents = list(/decl/reagent/potassium = 5, /decl/reagent/frostoil = 5, /decl/reagent/uranium = 20) result_amount = 1 /datum/chemical_reaction/uraniumsolidification/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -819,7 +823,7 @@ name = "Explosion" id = "explosion_potassium" result = null - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/potassium = 1) + required_reagents = list(/decl/reagent/water = 1, /decl/reagent/potassium = 1) result_amount = 2 mix_message = null @@ -840,7 +844,7 @@ name = "Flash powder" id = "flash_powder" result = null - required_reagents = list(/datum/reagent/aluminum = 1, /datum/reagent/potassium = 1, /datum/reagent/sulfur = 1 ) + required_reagents = list(/decl/reagent/aluminum = 1, /decl/reagent/potassium = 1, /decl/reagent/sulfur = 1 ) result_amount = null /datum/chemical_reaction/flash_powder/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -868,7 +872,7 @@ name = "EMP Pulse" id = "emp_pulse" result = null - 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 + required_reagents = list(/decl/reagent/uranium = 1, /decl/reagent/iron = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense result_amount = 2 /datum/chemical_reaction/emp_pulse/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -882,15 +886,15 @@ /datum/chemical_reaction/nitroglycerin name = "Nitroglycerin" id = "nitroglycerin" - result = /datum/reagent/nitroglycerin - required_reagents = list(/datum/reagent/glycerol = 1, /datum/reagent/acid/polyacid = 1, /datum/reagent/acid = 1) + result = /decl/reagent/nitroglycerin + required_reagents = list(/decl/reagent/glycerol = 1, /decl/reagent/acid/polyacid = 1, /decl/reagent/acid = 1) result_amount = 2 /datum/chemical_reaction/napalm name = "Napalm" id = "napalm" result = null - required_reagents = list(/datum/reagent/aluminum = 1, /datum/reagent/toxin/phoron = 1, /datum/reagent/acid = 1 ) + required_reagents = list(/decl/reagent/aluminum = 1, /decl/reagent/toxin/phoron = 1, /decl/reagent/acid = 1 ) result_amount = 1 /datum/chemical_reaction/napalm/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -898,21 +902,21 @@ for(var/turf/simulated/floor/target_tile in range(0,location)) target_tile.assume_gas(GAS_PHORON, created_volume, 400+T0C) spawn (0) target_tile.hotspot_expose(700, 400) - holder.del_reagent(/datum/reagent/fuel/napalm) + holder.del_reagent(/decl/reagent/fuel/napalm) return /datum/chemical_reaction/zoragel name = "Inert Gel" id = "zoragel" - result = /datum/reagent/fuel/zoragel - required_reagents = list(/datum/reagent/acid = 1, /datum/reagent/aluminum = 1, /datum/reagent/sugar = 1, /datum/reagent/surfactant = 3) + result = /decl/reagent/fuel/zoragel + required_reagents = list(/decl/reagent/acid = 1, /decl/reagent/aluminum = 1, /decl/reagent/sugar = 1, /decl/reagent/surfactant = 3) result_amount = 1 /datum/chemical_reaction/zorafire name = "Zo'rane Fire" id = "greekfire" - result = /datum/reagent/fuel/napalm - required_reagents = list(/datum/reagent/nitroglycerin = 2, /datum/reagent/pyrosilicate = 2, /datum/reagent/toxin/phoron = 3, /datum/reagent/fuel/zoragel = 3) + result = /decl/reagent/fuel/napalm + required_reagents = list(/decl/reagent/nitroglycerin = 2, /decl/reagent/pyrosilicate = 2, /decl/reagent/toxin/phoron = 3, /decl/reagent/fuel/zoragel = 3) result_amount = 1 log_is_important = 1 @@ -920,7 +924,7 @@ name = "Chemsmoke" id = "chemsmoke" result = null - required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/sugar = 1, /datum/reagent/phosphorus = 1) + required_reagents = list(/decl/reagent/potassium = 1, /decl/reagent/sugar = 1, /decl/reagent/phosphorus = 1) result_amount = 0.4 /datum/chemical_reaction/chemsmoke/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -938,7 +942,7 @@ name = "Foam" id = "foam" result = null - required_reagents = list(/datum/reagent/surfactant = 1, /datum/reagent/water = 1) + required_reagents = list(/decl/reagent/surfactant = 1, /decl/reagent/water = 1) result_amount = 2 mix_message = "The solution violently bubbles!" @@ -958,7 +962,7 @@ name = "Metal Foam" id = "metalfoam" result = null - required_reagents = list(/datum/reagent/aluminum = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/acid/polyacid = 1) + required_reagents = list(/decl/reagent/aluminum = 3, /decl/reagent/foaming_agent = 1, /decl/reagent/acid/polyacid = 1) result_amount = 5 /datum/chemical_reaction/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -976,7 +980,7 @@ name = "Iron Foam" id = "ironlfoam" result = null - required_reagents = list(/datum/reagent/iron = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/acid/polyacid = 1) + required_reagents = list(/decl/reagent/iron = 3, /decl/reagent/foaming_agent = 1, /decl/reagent/acid/polyacid = 1) result_amount = 5 /datum/chemical_reaction/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -993,244 +997,18 @@ /datum/chemical_reaction/luminol name = "Luminol" id = "luminol" - result = /datum/reagent/luminol - required_reagents = list(/datum/reagent/hydrazine = 2, /datum/reagent/carbon = 2, /datum/reagent/ammonia = 2) + result = /decl/reagent/luminol + required_reagents = list(/decl/reagent/hydrazine = 2, /decl/reagent/carbon = 2, /decl/reagent/ammonia = 2) result_amount = 6 /* Paint */ -/datum/chemical_reaction/red_paint - name = "Red paint" - id = "red_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/crayon_dust/red = 1) - result_amount = 5 - -/datum/chemical_reaction/red_paint/send_data() - return "#FE191A" - -/datum/chemical_reaction/orange_paint - name = "Orange paint" - id = "orange_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/crayon_dust/orange = 1) - result_amount = 5 - -/datum/chemical_reaction/orange_paint/send_data() - return "#FFBE4F" - -/datum/chemical_reaction/yellow_paint - name = "Yellow paint" - id = "yellow_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/crayon_dust/yellow = 1) - result_amount = 5 - -/datum/chemical_reaction/yellow_paint/send_data() - return "#FDFE7D" - -/datum/chemical_reaction/green_paint - name = "Green paint" - id = "green_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/crayon_dust/green = 1) - result_amount = 5 - -/datum/chemical_reaction/green_paint/send_data() - return "#18A31A" - -/datum/chemical_reaction/blue_paint - name = "Blue paint" - id = "blue_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/crayon_dust/blue = 1) - result_amount = 5 - -/datum/chemical_reaction/blue_paint/send_data() - return "#247CFF" - -/datum/chemical_reaction/purple_paint - name = "Purple paint" - id = "purple_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/crayon_dust/purple = 1) - result_amount = 5 - -/datum/chemical_reaction/purple_paint/send_data() - return "#CC0099" - -/datum/chemical_reaction/grey_paint //mime - name = "Grey paint" - id = "grey_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/crayon_dust/grey = 1) - result_amount = 5 - -/datum/chemical_reaction/grey_paint/send_data() - return "#808080" - -/datum/chemical_reaction/brown_paint - name = "Brown paint" - id = "brown_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/crayon_dust/brown = 1) - result_amount = 5 - -/datum/chemical_reaction/brown_paint/send_data() - return "#846F35" - -/datum/chemical_reaction/blood_paint - name = "Blood paint" - id = "blood_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/blood = 2) - result_amount = 5 - -/datum/chemical_reaction/blood_paint/send_data(var/datum/reagents/T) - var/t = T.get_data(/datum/reagent/blood) - if(t && t["blood_colour"]) - return t["blood_colour"] - return "#FE191A" // Probably red - -/datum/chemical_reaction/milk_paint - name = "Milk paint" - id = "milk_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/milk = 5) - result_amount = 5 - -/datum/chemical_reaction/milk_paint/send_data() - return "#F0F8FF" - -/datum/chemical_reaction/orange_juice_paint - name = "Orange juice paint" - id = "orange_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/orangejuice = 5) - result_amount = 5 - -/datum/chemical_reaction/orange_juice_paint/send_data() - return "#E78108" - -/datum/chemical_reaction/tomato_juice_paint - name = "Tomato juice paint" - id = "tomato_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/tomatojuice = 5) - result_amount = 5 - -/datum/chemical_reaction/tomato_juice_paint/send_data() - return "#731008" - -/datum/chemical_reaction/lime_juice_paint - name = "Lime juice paint" - id = "lime_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/limejuice = 5) - result_amount = 5 - -/datum/chemical_reaction/lime_juice_paint/send_data() - return "#365E30" - -/datum/chemical_reaction/carrot_juice_paint - name = "Carrot juice paint" - id = "carrot_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/carrotjuice = 5) - result_amount = 5 - -/datum/chemical_reaction/carrot_juice_paint/send_data() - return "#973800" - -/datum/chemical_reaction/berry_juice_paint - name = "Berry juice paint" - id = "berry_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/berryjuice = 5) - result_amount = 5 - -/datum/chemical_reaction/berry_juice_paint/send_data() - return "#990066" - -/datum/chemical_reaction/grape_juice_paint - name = "Grape juice paint" - id = "grape_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/grapejuice = 5) - result_amount = 5 - -/datum/chemical_reaction/grape_juice_paint/send_data() - return "#863333" - -/datum/chemical_reaction/poisonberry_juice_paint - name = "Poison berry juice paint" - id = "poisonberry_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/toxin/poisonberryjuice = 5) - result_amount = 5 - -/datum/chemical_reaction/poisonberry_juice_paint/send_data() - return "#863353" - -/datum/chemical_reaction/watermelon_juice_paint - name = "Watermelon juice paint" - id = "watermelon_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/watermelonjuice = 5) - result_amount = 5 - -/datum/chemical_reaction/watermelon_juice_paint/send_data() - return "#B83333" - -/datum/chemical_reaction/lemon_juice_paint - name = "Lemon juice paint" - id = "lemon_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/lemonjuice = 5) - result_amount = 5 - -/datum/chemical_reaction/lemon_juice_paint/send_data() - return "#AFAF00" - -/datum/chemical_reaction/banana_juice_paint - name = "Banana juice paint" - id = "banana_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/banana = 5) - result_amount = 5 - -/datum/chemical_reaction/banana_juice_paint/send_data() - return "#C3AF00" - -/datum/chemical_reaction/potato_juice_paint - name = "Potato juice paint" - id = "potato_juice_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/drink/potatojuice = 5) - result_amount = 5 - -/datum/chemical_reaction/potato_juice_paint/send_data() - return "#302000" - -/datum/chemical_reaction/carbon_paint - name = "Carbon paint" - id = "carbon_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/carbon = 1) - result_amount = 5 - -/datum/chemical_reaction/carbon_paint/send_data() - return "#333333" - -/datum/chemical_reaction/aluminum_paint - name = "Aluminum paint" - id = "aluminum_paint" - result = /datum/reagent/paint - required_reagents = list(/datum/reagent/toxin/plasticide = 1, /datum/reagent/water = 3, /datum/reagent/aluminum = 1) - result_amount = 5 - -/datum/chemical_reaction/aluminum_paint/send_data() - return "#F0F8FF" +/datum/chemical_reaction/paint + name = "Paint" + id = "paint" + result = /decl/reagent/paint + required_reagents = list(/decl/reagent/toxin/plasticide = 1, /decl/reagent/water = 3) + result_amount = 4 /* Slime cores */ @@ -1257,7 +1035,7 @@ name = "Slime Spawn" id = "m_spawn" result = null - required_reagents = list(/datum/reagent/toxin/phoron = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/grey @@ -1270,7 +1048,7 @@ name = "Slime Monkey" id = "m_monkey" result = null - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list(/decl/reagent/blood = 1) result_amount = 1 required = /obj/item/slime_extract/grey @@ -1282,7 +1060,7 @@ /datum/chemical_reaction/slime/teleportation name = "Slime Teleportation" id = "slimeteleportation" - required_reagents = list(/datum/reagent/toxin/phoron = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/green @@ -1305,7 +1083,7 @@ name = "Slime Metal" id = "m_metal" result = null - required_reagents = list(/datum/reagent/toxin/phoron = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/metal @@ -1318,7 +1096,7 @@ name = "Slime Crit" id = "m_tele" result = null - required_reagents = list(/datum/reagent/toxin/phoron = 5) + required_reagents = list(/decl/reagent/toxin/phoron = 5) result_amount = 1 required = /obj/item/slime_extract/gold @@ -1385,7 +1163,7 @@ name = "Slime Bork" id = "m_tele2" result = null - required_reagents = list(/datum/reagent/toxin/phoron = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/silver @@ -1444,8 +1222,8 @@ /datum/chemical_reaction/slime/frost name = "Slime Frost Oil" id = "m_frostoil" - result = /datum/reagent/frostoil - required_reagents = list(/datum/reagent/water = 1) + result = /decl/reagent/frostoil + required_reagents = list(/decl/reagent/water = 1) result_amount = 10 required = /obj/item/slime_extract/blue @@ -1454,7 +1232,7 @@ name = "Slime Freeze" id = "m_freeze" result = null - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list(/decl/reagent/water = 1) result_amount = 1 required = /obj/item/slime_extract/darkblue mix_message = "The slime extract begins to vibrate violently!" @@ -1473,8 +1251,8 @@ /datum/chemical_reaction/slime/casp name = "Slime Capsaicin Oil" id = "m_capsaicinoil" - result = /datum/reagent/capsaicin - required_reagents = list(/datum/reagent/blood = 1) + result = /decl/reagent/capsaicin + required_reagents = list(/decl/reagent/blood = 1) result_amount = 10 required = /obj/item/slime_extract/orange @@ -1482,7 +1260,7 @@ name = "Slime fire" id = "m_fire" result = null - required_reagents = list(/datum/reagent/toxin/phoron = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/orange mix_message = "The slime extract begins to vibrate violently!" @@ -1502,7 +1280,7 @@ name = "Slime EMP" id = "m_emp" result = null - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list(/decl/reagent/blood = 1) result_amount = 1 required = /obj/item/slime_extract/yellow mix_message = "The slime extract begins to vibrate violently!" @@ -1515,7 +1293,7 @@ name = "Slime Powercell" id = "m_cell" result = null - required_reagents = list(/datum/reagent/toxin/phoron = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/yellow mix_message = "A small sparking part of the extract core falls onto the floor." @@ -1528,7 +1306,7 @@ name = "Slime Glow" id = "m_glow" result = null - required_reagents = list(/datum/reagent/water = 1) + required_reagents = list(/decl/reagent/water = 1) result_amount = 1 required = /obj/item/slime_extract/yellow mix_message = "The contents of the slime core harden and begin to emit a warm, bright light." @@ -1542,7 +1320,7 @@ name = "Slime Steroid" id = "m_steroid" result = null - required_reagents = list(/datum/reagent/toxin/phoron = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/purple @@ -1553,8 +1331,8 @@ /datum/chemical_reaction/slime/jam name = "Slime Jam" id = "m_jam" - result = /datum/reagent/slimejelly - required_reagents = list(/datum/reagent/sugar = 1) + result = /decl/reagent/slimejelly + required_reagents = list(/decl/reagent/sugar = 1) result_amount = 10 required = /obj/item/slime_extract/purple @@ -1564,7 +1342,7 @@ name = "Slime Rare Metal" id = "rm_metal" result = null - required_reagents = list(/datum/reagent/toxin/phoron = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/darkpurple @@ -1576,8 +1354,8 @@ /datum/chemical_reaction/slime/glycerol name = "Slime Glycerol" id = "m_glycerol" - result = /datum/reagent/glycerol - required_reagents = list(/datum/reagent/toxin/phoron = 1) + result = /decl/reagent/glycerol + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 8 required = /obj/item/slime_extract/red @@ -1585,7 +1363,7 @@ name = "Bloodlust" id = "m_bloodlust" result = null - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list(/decl/reagent/blood = 1) result_amount = 1 required = /obj/item/slime_extract/red @@ -1600,7 +1378,7 @@ name = "Slime Potion" id = "m_potion" result = null - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list(/decl/reagent/blood = 1) result_amount = 1 required = /obj/item/slime_extract/pink @@ -1612,8 +1390,8 @@ /datum/chemical_reaction/slime/mutate2 name = "Advanced Mutation Toxin" id = "mutationtoxin2" - result = /datum/reagent/aslimetoxin - required_reagents = list(/datum/reagent/toxin/phoron = 1) + result = /decl/reagent/aslimetoxin + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/black @@ -1622,7 +1400,7 @@ name = "Slime Explosion" id = "m_explosion" result = null - required_reagents = list(/datum/reagent/toxin/phoron = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/oil mix_message = "The slime extract begins to vibrate violently!" @@ -1638,7 +1416,7 @@ result = null result_amount = 1 required = /obj/item/slime_extract/lightpink - required_reagents = list(/datum/reagent/blood = 1) + required_reagents = list(/decl/reagent/blood = 1) /datum/chemical_reaction/slime/potion2/on_reaction(var/datum/reagents/holder) ..() @@ -1649,7 +1427,7 @@ name = "Slime Golem" id = "m_golem" result = null - required_reagents = list(/datum/reagent/toxin/phoron = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1) result_amount = 1 required = /obj/item/slime_extract/adamantine mix_message = "A soft fizzle is heard within the slime extract, and mystic runes suddenly appear on the floor beneath it!" @@ -1662,7 +1440,7 @@ name = "Soap Key" id = "skey" result = null - required_reagents = list(/datum/reagent/nutriment/triglyceride = 2, /datum/reagent/water = 2, /datum/reagent/spacecleaner = 3) + required_reagents = list(/decl/reagent/nutriment/triglyceride = 2, /decl/reagent/water = 2, /decl/reagent/spacecleaner = 3) var/strength = 3 /datum/chemical_reaction/soap_key/can_happen(var/datum/reagents/holder) @@ -1687,9 +1465,9 @@ name = "Tofu" id = "tofu" result = null - required_reagents = list(/datum/reagent/drink/milk/soymilk = 10) - catalysts = list(/datum/reagent/enzyme = 5) - inhibitors = list(/datum/reagent/sodiumchloride = 1) // To prevent conflict with Soy Sauce recipe. + required_reagents = list(/decl/reagent/drink/milk/soymilk = 10) + catalysts = list(/decl/reagent/enzyme = 5) + inhibitors = list(/decl/reagent/sodiumchloride = 1) // To prevent conflict with Soy Sauce recipe. result_amount = 1 /datum/chemical_reaction/tofu/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -1702,7 +1480,7 @@ name = "Chocolate Bar" id = "chocolate_bar" result = null - required_reagents = list(/datum/reagent/drink/milk/soymilk = 2, /datum/reagent/nutriment/coco = 2, /datum/reagent/sugar = 2) + required_reagents = list(/decl/reagent/drink/milk/soymilk = 2, /decl/reagent/nutriment/coco = 2, /decl/reagent/sugar = 2) result_amount = 1 /datum/chemical_reaction/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -1715,7 +1493,7 @@ name = "Chocolate Bar" id = "chocolate_bar" result = null - required_reagents = list(/datum/reagent/drink/milk = 2, /datum/reagent/nutriment/coco = 2, /datum/reagent/sugar = 2) + required_reagents = list(/decl/reagent/drink/milk = 2, /decl/reagent/nutriment/coco = 2, /decl/reagent/sugar = 2) result_amount = 1 /datum/chemical_reaction/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -1727,45 +1505,45 @@ /datum/chemical_reaction/hot_coco name = "Hot Coco" id = "hot_coco" - result = /datum/reagent/drink/hot_coco - required_reagents = list(/datum/reagent/water = 5, /datum/reagent/nutriment/coco = 1) + result = /decl/reagent/drink/hot_coco + required_reagents = list(/decl/reagent/water = 5, /decl/reagent/nutriment/coco = 1) result_amount = 5 /datum/chemical_reaction/soysauce name = "Soy Sauce" id = "soysauce" - result = /datum/reagent/nutriment/soysauce - required_reagents = list(/datum/reagent/drink/milk/soymilk = 4, /datum/reagent/sodiumchloride = 1) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/nutriment/soysauce + required_reagents = list(/decl/reagent/drink/milk/soymilk = 4, /decl/reagent/sodiumchloride = 1) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 5 /datum/chemical_reaction/ketchup name = "Ketchup" id = "ketchup" - result = /datum/reagent/nutriment/ketchup - required_reagents = list(/datum/reagent/drink/tomatojuice = 2, /datum/reagent/water = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/nutriment/ketchup + required_reagents = list(/decl/reagent/drink/tomatojuice = 2, /decl/reagent/water = 1, /decl/reagent/sugar = 1) result_amount = 4 /datum/chemical_reaction/barbecue name = "Barbecue Sauce" id = "barbecue" - result = /datum/reagent/nutriment/barbecue - required_reagents = list(/datum/reagent/nutriment/ketchup = 2, /datum/reagent/nutriment/garlicsauce = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/nutriment/barbecue + required_reagents = list(/decl/reagent/nutriment/ketchup = 2, /decl/reagent/nutriment/garlicsauce = 1, /decl/reagent/sugar = 1) result_amount = 4 /datum/chemical_reaction/garlicsauce name = "Garlic Sauce" id = "garlicsauce" - result = /datum/reagent/nutriment/garlicsauce - required_reagents = list(/datum/reagent/drink/garlicjuice = 1, /datum/reagent/nutriment/triglyceride/oil/corn = 1) + result = /decl/reagent/nutriment/garlicsauce + required_reagents = list(/decl/reagent/drink/garlicjuice = 1, /decl/reagent/nutriment/triglyceride/oil/corn = 1) result_amount = 2 /datum/chemical_reaction/cheesewheel name = "Cheesewheel" id = "cheesewheel" result = null - required_reagents = list(/datum/reagent/drink/milk = 40) - catalysts = list(/datum/reagent/enzyme = 5) + required_reagents = list(/decl/reagent/drink/milk = 40) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 1 /datum/chemical_reaction/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -1778,7 +1556,7 @@ name = "Meatball" id = "meatball" result = null - required_reagents = list(/datum/reagent/nutriment/protein = 3, /datum/reagent/nutriment/flour = 5) + required_reagents = list(/decl/reagent/nutriment/protein = 3, /decl/reagent/nutriment/flour = 5) result_amount = 3 /datum/chemical_reaction/meatball/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -1791,8 +1569,8 @@ name = "Dough" id = "dough" result = null - required_reagents = list(/datum/reagent/nutriment/protein/egg = 3, /datum/reagent/nutriment/flour = 10) - inhibitors = list(/datum/reagent/water = 1, /datum/reagent/alcohol/ethanol/beer = 1, /datum/reagent/sugar = 1) //To prevent it messing with batter and pie recipes + required_reagents = list(/decl/reagent/nutriment/protein/egg = 3, /decl/reagent/nutriment/flour = 10) + inhibitors = list(/decl/reagent/water = 1, /decl/reagent/alcohol/beer = 1, /decl/reagent/sugar = 1) //To prevent it messing with batter and pie recipes result_amount = 1 /datum/chemical_reaction/dough/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -1805,7 +1583,7 @@ name = "Syntiflesh" id = "syntiflesh" result = null - required_reagents = list(/datum/reagent/blood = 5, /datum/reagent/clonexadone = 1) + required_reagents = list(/decl/reagent/blood = 5, /decl/reagent/clonexadone = 1) result_amount = 1 /datum/chemical_reaction/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -1817,43 +1595,43 @@ /datum/chemical_reaction/hot_ramen name = "Hot Ramen" id = "hot_ramen" - result = /datum/reagent/drink/hot_ramen - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/drink/dry_ramen = 3) + result = /decl/reagent/drink/hot_ramen + required_reagents = list(/decl/reagent/water = 1, /decl/reagent/drink/dry_ramen = 3) result_amount = 3 /datum/chemical_reaction/hell_ramen name = "Hell Ramen" id = "hell_ramen" - result = /datum/reagent/drink/hell_ramen - required_reagents = list(/datum/reagent/capsaicin = 1, /datum/reagent/drink/hot_ramen = 6) + result = /decl/reagent/drink/hell_ramen + required_reagents = list(/decl/reagent/capsaicin = 1, /decl/reagent/drink/hot_ramen = 6) result_amount = 6 /datum/chemical_reaction/coating/batter name = "Batter" id = "batter" - result = /datum/reagent/nutriment/coating/batter - required_reagents = list(/datum/reagent/nutriment/protein/egg = 3, /datum/reagent/nutriment/flour = 10, /datum/reagent/water = 5, /datum/reagent/sodiumchloride = 2) + result = /decl/reagent/nutriment/coating/batter + required_reagents = list(/decl/reagent/nutriment/protein/egg = 3, /decl/reagent/nutriment/flour = 10, /decl/reagent/water = 5, /decl/reagent/sodiumchloride = 2) result_amount = 20 /datum/chemical_reaction/coating/beerbatter name = "Beer Batter" id = "beerbatter" - result = /datum/reagent/nutriment/coating/beerbatter - required_reagents = list(/datum/reagent/nutriment/protein/egg = 3, /datum/reagent/nutriment/flour = 10, /datum/reagent/alcohol/ethanol/beer = 5, /datum/reagent/sodiumchloride = 2) + result = /decl/reagent/nutriment/coating/beerbatter + required_reagents = list(/decl/reagent/nutriment/protein/egg = 3, /decl/reagent/nutriment/flour = 10, /decl/reagent/alcohol/beer = 5, /decl/reagent/sodiumchloride = 2) result_amount = 20 /datum/chemical_reaction/browniemix name = "Brownie Mix" id = "browniemix" - result = /datum/reagent/browniemix - required_reagents = list(/datum/reagent/nutriment/flour = 5, /datum/reagent/nutriment/coco = 5, /datum/reagent/sugar = 5) + result = /decl/reagent/browniemix + required_reagents = list(/decl/reagent/nutriment/flour = 5, /decl/reagent/nutriment/coco = 5, /decl/reagent/sugar = 5) result_amount = 15 /datum/chemical_reaction/butter name = "Butter" id = "butter" result = null - required_reagents = list(/datum/reagent/drink/milk/cream = 20, /datum/reagent/sodiumchloride = 1) + required_reagents = list(/decl/reagent/drink/milk/cream = 20, /decl/reagent/sodiumchloride = 1) result_amount = 1 /datum/chemical_reaction/butter/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -1890,8 +1668,8 @@ /datum/chemical_reaction/drink name = "Goldschlager" id = "goldschlager" - result = /datum/reagent/alcohol/ethanol/goldschlager - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 10, /datum/reagent/gold = 1) + result = /decl/reagent/alcohol/goldschlager + required_reagents = list(/decl/reagent/alcohol/vodka = 10, /decl/reagent/gold = 1) mix_message = null reaction_sound = 'sound/effects/pour.ogg' result_amount = 10 @@ -1899,735 +1677,735 @@ /datum/chemical_reaction/drink/patron name = "Patron" id = "patron" - result = /datum/reagent/alcohol/ethanol/patron - required_reagents = list(/datum/reagent/alcohol/ethanol/tequila = 10, /datum/reagent/silver = 1) + result = /decl/reagent/alcohol/patron + required_reagents = list(/decl/reagent/alcohol/tequila = 10, /decl/reagent/silver = 1) result_amount = 10 /datum/chemical_reaction/drink/bilk name = "Bilk" id = "bilk" - result = /datum/reagent/alcohol/ethanol/bilk - required_reagents = list(/datum/reagent/drink/milk = 1, /datum/reagent/alcohol/ethanol/beer = 1) + result = /decl/reagent/alcohol/bilk + required_reagents = list(/decl/reagent/drink/milk = 1, /decl/reagent/alcohol/beer = 1) result_amount = 2 /datum/chemical_reaction/drink/icetea name = "Iced Tea" id = "icetea" - result = /datum/reagent/drink/icetea - required_reagents = list(/datum/reagent/drink/ice = 1, /datum/reagent/drink/tea = 2) + result = /decl/reagent/drink/icetea + required_reagents = list(/decl/reagent/drink/ice = 1, /decl/reagent/drink/tea = 2) result_amount = 3 /datum/chemical_reaction/drink/icecoffee name = "Iced Coffee" id = "icecoffee" - result = /datum/reagent/drink/coffee/icecoffee - required_reagents = list(/datum/reagent/drink/ice = 1, /datum/reagent/drink/coffee = 2) + result = /decl/reagent/drink/coffee/icecoffee + required_reagents = list(/decl/reagent/drink/ice = 1, /decl/reagent/drink/coffee = 2) result_amount = 3 /datum/chemical_reaction/drink/nuka_cola name = "Nuka Cola" id = "nuka_cola" - result = /datum/reagent/drink/nuka_cola - required_reagents = list(/datum/reagent/uranium = 1, /datum/reagent/drink/space_cola = 5) + result = /decl/reagent/drink/nuka_cola + required_reagents = list(/decl/reagent/uranium = 1, /decl/reagent/drink/space_cola = 5) result_amount = 5 /datum/chemical_reaction/moonshine name = "Moonshine" id = "moonshine" - result = /datum/reagent/alcohol/ethanol/moonshine - required_reagents = list(/datum/reagent/nutriment = 10) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/moonshine + required_reagents = list(/decl/reagent/nutriment = 10) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 10 /datum/chemical_reaction/butanol name = "Butanol" id = "butanol" - result = /datum/reagent/alcohol/butanol - required_reagents = list(/datum/reagent/nutriment/triglyceride/oil/corn = 10, /datum/reagent/sugar = 10) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/butanol + required_reagents = list(/decl/reagent/nutriment/triglyceride/oil/corn = 10, /decl/reagent/sugar = 10) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 5 /datum/chemical_reaction/grenadine name = "Grenadine Syrup" id = "grenadine" - result = /datum/reagent/drink/grenadine - required_reagents = list(/datum/reagent/drink/berryjuice = 10) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/drink/grenadine + required_reagents = list(/decl/reagent/drink/berryjuice = 10) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 10 /datum/chemical_reaction/wine name = "Wine" id = "wine" - result = /datum/reagent/alcohol/ethanol/wine - required_reagents = list(/datum/reagent/drink/grapejuice = 10) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/wine + required_reagents = list(/decl/reagent/drink/grapejuice = 10) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 10 /datum/chemical_reaction/pwine name = "Poison Wine" id = "pwine" - result = /datum/reagent/alcohol/ethanol/pwine - required_reagents = list(/datum/reagent/toxin/poisonberryjuice = 10) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/pwine + required_reagents = list(/decl/reagent/toxin/poisonberryjuice = 10) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 10 /datum/chemical_reaction/melonliquor name = "Melon Liquor" id = "melonliquor" - result = /datum/reagent/alcohol/ethanol/melonliquor - required_reagents = list(/datum/reagent/drink/watermelonjuice = 10) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/melonliquor + required_reagents = list(/decl/reagent/drink/watermelonjuice = 10) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 10 /datum/chemical_reaction/bluecuracao name = "Blue Curacao" id = "bluecuracao" - result = /datum/reagent/alcohol/ethanol/bluecuracao - required_reagents = list(/datum/reagent/drink/orangejuice = 10) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/bluecuracao + required_reagents = list(/decl/reagent/drink/orangejuice = 10) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 10 /datum/chemical_reaction/spacebeer name = "Space Beer" id = "spacebeer" - result = /datum/reagent/alcohol/ethanol/beer - required_reagents = list(/datum/reagent/nutriment/triglyceride/oil/corn = 10) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/beer + required_reagents = list(/decl/reagent/nutriment/triglyceride/oil/corn = 10) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 10 /datum/chemical_reaction/vodka name = "Vodka" id = "vodka" - result = /datum/reagent/alcohol/ethanol/vodka - required_reagents = list(/datum/reagent/drink/potatojuice = 10) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/vodka + required_reagents = list(/decl/reagent/drink/potatojuice = 10) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 10 /datum/chemical_reaction/sake name = "Sake" id = "sake" - result = /datum/reagent/alcohol/ethanol/sake - required_reagents = list(/datum/reagent/nutriment/rice = 10) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/sake + required_reagents = list(/decl/reagent/nutriment/rice = 10) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 10 /datum/chemical_reaction/kahlua name = "Kahlua" id = "kahlua" - result = /datum/reagent/alcohol/ethanol/coffee/kahlua - required_reagents = list(/datum/reagent/drink/coffee = 5, /datum/reagent/sugar = 5) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/coffee/kahlua + required_reagents = list(/decl/reagent/drink/coffee = 5, /decl/reagent/sugar = 5) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 5 /datum/chemical_reaction/drink/gin_tonic name = "Gin and Tonic" id = "gintonic" - result = /datum/reagent/alcohol/ethanol/gintonic - required_reagents = list(/datum/reagent/alcohol/ethanol/gin = 2, /datum/reagent/drink/tonic = 1) + result = /decl/reagent/alcohol/gintonic + required_reagents = list(/decl/reagent/alcohol/gin = 2, /decl/reagent/drink/tonic = 1) result_amount = 3 /datum/chemical_reaction/drink/rumandcola name = "Rum and Cola" id = "rumandcola" - result = /datum/reagent/alcohol/ethanol/rumandcola - required_reagents = list(/datum/reagent/alcohol/ethanol/rum = 2, /datum/reagent/drink/space_cola = 1) + result = /decl/reagent/alcohol/rumandcola + required_reagents = list(/decl/reagent/alcohol/rum = 2, /decl/reagent/drink/space_cola = 1) result_amount = 3 /datum/chemical_reaction/drink/martini name = "Classic Martini" id = "martini" - result = /datum/reagent/alcohol/ethanol/martini - required_reagents = list(/datum/reagent/alcohol/ethanol/gin = 2, /datum/reagent/alcohol/ethanol/vermouth = 1) + result = /decl/reagent/alcohol/martini + required_reagents = list(/decl/reagent/alcohol/gin = 2, /decl/reagent/alcohol/vermouth = 1) result_amount = 3 /datum/chemical_reaction/drink/vodkamartini name = "Vodka Martini" id = "vodkamartini" - result = /datum/reagent/alcohol/ethanol/vodkamartini - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 2, /datum/reagent/alcohol/ethanol/vermouth = 1) + result = /decl/reagent/alcohol/vodkamartini + required_reagents = list(/decl/reagent/alcohol/vodka = 2, /decl/reagent/alcohol/vermouth = 1) result_amount = 3 /datum/chemical_reaction/drink/white_russian name = "White Russian" id = "whiterussian" - result = /datum/reagent/alcohol/ethanol/white_russian - required_reagents = list(/datum/reagent/alcohol/ethanol/blackrussian = 2, /datum/reagent/drink/milk/cream = 1) + result = /decl/reagent/alcohol/white_russian + required_reagents = list(/decl/reagent/alcohol/blackrussian = 2, /decl/reagent/drink/milk/cream = 1) result_amount = 3 /datum/chemical_reaction/drink/whiskey_cola name = "Whiskey Cola" id = "whiskeycola" - result = /datum/reagent/alcohol/ethanol/whiskeycola - required_reagents = list(/datum/reagent/alcohol/ethanol/whiskey = 2, /datum/reagent/drink/space_cola = 1) + result = /decl/reagent/alcohol/whiskeycola + required_reagents = list(/decl/reagent/alcohol/whiskey = 2, /decl/reagent/drink/space_cola = 1) result_amount = 3 /datum/chemical_reaction/drink/screwdriver name = "Screwdriver" id = "screwdrivercocktail" - result = /datum/reagent/alcohol/ethanol/screwdrivercocktail - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 2, /datum/reagent/drink/orangejuice = 1) + result = /decl/reagent/alcohol/screwdrivercocktail + required_reagents = list(/decl/reagent/alcohol/vodka = 2, /decl/reagent/drink/orangejuice = 1) result_amount = 3 /datum/chemical_reaction/drink/bloody_mary name = "Bloody Mary" id = "bloodymary" - result = /datum/reagent/alcohol/ethanol/bloodymary - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 2, /datum/reagent/drink/tomatojuice = 3, /datum/reagent/drink/limejuice = 1) + result = /decl/reagent/alcohol/bloodymary + required_reagents = list(/decl/reagent/alcohol/vodka = 2, /decl/reagent/drink/tomatojuice = 3, /decl/reagent/drink/limejuice = 1) result_amount = 6 /datum/chemical_reaction/drink/gargle_blaster name = "Pan-Galactic Gargle Blaster" id = "gargleblaster" - result = /datum/reagent/alcohol/ethanol/gargleblaster - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 2, /datum/reagent/alcohol/ethanol/gin = 1, /datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/alcohol/ethanol/cognac = 1, /datum/reagent/drink/limejuice = 1) + result = /decl/reagent/alcohol/gargleblaster + required_reagents = list(/decl/reagent/alcohol/vodka = 2, /decl/reagent/alcohol/gin = 1, /decl/reagent/alcohol/whiskey = 1, /decl/reagent/alcohol/cognac = 1, /decl/reagent/drink/limejuice = 1) result_amount = 6 /datum/chemical_reaction/drink/brave_bull name = "Brave Bull" id = "bravebull" - result = /datum/reagent/alcohol/ethanol/coffee/brave_bull - required_reagents = list(/datum/reagent/alcohol/ethanol/tequila = 2, /datum/reagent/alcohol/ethanol/coffee/kahlua = 1) + result = /decl/reagent/alcohol/coffee/brave_bull + required_reagents = list(/decl/reagent/alcohol/tequila = 2, /decl/reagent/alcohol/coffee/kahlua = 1) result_amount = 3 /datum/chemical_reaction/drink/tequila_sunrise name = "Tequila Sunrise" id = "tequilasunrise" - result = /datum/reagent/alcohol/ethanol/tequila_sunrise - required_reagents = list(/datum/reagent/alcohol/ethanol/tequila = 2, /datum/reagent/drink/orangejuice = 1) + result = /decl/reagent/alcohol/tequila_sunrise + required_reagents = list(/decl/reagent/alcohol/tequila = 2, /decl/reagent/drink/orangejuice = 1) result_amount = 3 /datum/chemical_reaction/drink/phoron_special name = "Toxins Special" id = "phoronspecial" - result = /datum/reagent/alcohol/ethanol/toxins_special - required_reagents = list(/datum/reagent/alcohol/ethanol/rum = 2, /datum/reagent/alcohol/ethanol/vermouth = 2, /datum/reagent/toxin/phoron = 2) + result = /decl/reagent/alcohol/toxins_special + required_reagents = list(/decl/reagent/alcohol/rum = 2, /decl/reagent/alcohol/vermouth = 2, /decl/reagent/toxin/phoron = 2) result_amount = 6 /datum/chemical_reaction/drink/beepsky_smash name = "Beepsky Smash" id = "beepksysmash" - result = /datum/reagent/alcohol/ethanol/beepsky_smash - required_reagents = list(/datum/reagent/drink/limejuice = 1, /datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/iron = 1) + result = /decl/reagent/alcohol/beepsky_smash + required_reagents = list(/decl/reagent/drink/limejuice = 1, /decl/reagent/alcohol/whiskey = 1, /decl/reagent/iron = 1) result_amount = 2 /datum/chemical_reaction/drink/doctor_delight name = "The Doctor's Delight" id = "doctordelight" - result = /datum/reagent/drink/doctorsdelight - required_reagents = list(/datum/reagent/drink/limejuice = 1, /datum/reagent/drink/tomatojuice = 1, /datum/reagent/drink/orangejuice = 1, /datum/reagent/drink/milk/cream = 2, /datum/reagent/tricordrazine = 1) + result = /decl/reagent/drink/doctorsdelight + required_reagents = list(/decl/reagent/drink/limejuice = 1, /decl/reagent/drink/tomatojuice = 1, /decl/reagent/drink/orangejuice = 1, /decl/reagent/drink/milk/cream = 2, /decl/reagent/tricordrazine = 1) result_amount = 6 /datum/chemical_reaction/drink/irish_cream name = "Irish Cream" id = "irishcream" - result = /datum/reagent/alcohol/ethanol/irishcream - required_reagents = list(/datum/reagent/alcohol/ethanol/whiskey = 2, /datum/reagent/drink/milk/cream = 1) + result = /decl/reagent/alcohol/irishcream + required_reagents = list(/decl/reagent/alcohol/whiskey = 2, /decl/reagent/drink/milk/cream = 1) result_amount = 3 /datum/chemical_reaction/drink/manly_dorf name = "The Manly Dorf" id = "manlydorf" - result = /datum/reagent/alcohol/ethanol/manly_dorf - required_reagents = list(/datum/reagent/alcohol/ethanol/beer = 1, /datum/reagent/alcohol/ethanol/ale = 2) + result = /decl/reagent/alcohol/manly_dorf + required_reagents = list(/decl/reagent/alcohol/beer = 1, /decl/reagent/alcohol/ale = 2) result_amount = 3 /datum/chemical_reaction/drink/hooch name = "Hooch" id = "hooch" - result = /datum/reagent/alcohol/ethanol/hooch - required_reagents = list(/datum/reagent/sugar = 1, /datum/reagent/alcohol/ethanol/moonshine = 1, /datum/reagent/fuel = 1) + result = /decl/reagent/alcohol/hooch + required_reagents = list(/decl/reagent/sugar = 1, /decl/reagent/alcohol/moonshine = 1, /decl/reagent/fuel = 1) result_amount = 3 /datum/chemical_reaction/drink/irish_coffee name = "Irish Coffee" id = "irishcoffee" - result = /datum/reagent/alcohol/ethanol/coffee/irishcoffee - required_reagents = list(/datum/reagent/alcohol/ethanol/irishcream = 1, /datum/reagent/drink/coffee = 1) + result = /decl/reagent/alcohol/coffee/irishcoffee + required_reagents = list(/decl/reagent/alcohol/irishcream = 1, /decl/reagent/drink/coffee = 1) result_amount = 2 /datum/chemical_reaction/drink/b52 name = "B-52" id = "b52" - result = /datum/reagent/alcohol/ethanol/coffee/b52 - required_reagents = list(/datum/reagent/alcohol/ethanol/irishcream = 1, /datum/reagent/alcohol/ethanol/coffee/kahlua = 1, /datum/reagent/alcohol/ethanol/cognac = 1) + result = /decl/reagent/alcohol/coffee/b52 + required_reagents = list(/decl/reagent/alcohol/irishcream = 1, /decl/reagent/alcohol/coffee/kahlua = 1, /decl/reagent/alcohol/cognac = 1) result_amount = 3 /datum/chemical_reaction/drink/atomicbomb name = "Atomic Bomb" id = "atomicbomb" - result = /datum/reagent/alcohol/ethanol/atomicbomb - required_reagents = list(/datum/reagent/alcohol/ethanol/coffee/b52 = 10, /datum/reagent/uranium = 1) + result = /decl/reagent/alcohol/atomicbomb + required_reagents = list(/decl/reagent/alcohol/coffee/b52 = 10, /decl/reagent/uranium = 1) result_amount = 10 /datum/chemical_reaction/drink/margarita name = "Margarita" id = "margarita" - result = /datum/reagent/alcohol/ethanol/margarita - required_reagents = list(/datum/reagent/alcohol/ethanol/tequila = 2, /datum/reagent/drink/limejuice = 1) + result = /decl/reagent/alcohol/margarita + required_reagents = list(/decl/reagent/alcohol/tequila = 2, /decl/reagent/drink/limejuice = 1) result_amount = 3 /datum/chemical_reaction/drink/longislandicedtea name = "Long Island Iced Tea" id = "longislandicedtea" - result = /datum/reagent/alcohol/ethanol/longislandicedtea - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 1, /datum/reagent/alcohol/ethanol/gin = 1, /datum/reagent/alcohol/ethanol/tequila = 1, /datum/reagent/alcohol/ethanol/cubalibre = 3) + result = /decl/reagent/alcohol/longislandicedtea + required_reagents = list(/decl/reagent/alcohol/vodka = 1, /decl/reagent/alcohol/gin = 1, /decl/reagent/alcohol/tequila = 1, /decl/reagent/alcohol/cubalibre = 3) result_amount = 6 /datum/chemical_reaction/drink/icedtea name = "Long Island Iced Tea" id = "longislandicedtea" - result = /datum/reagent/alcohol/ethanol/longislandicedtea - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 1, /datum/reagent/alcohol/ethanol/gin = 1, /datum/reagent/alcohol/ethanol/tequila = 1, /datum/reagent/alcohol/ethanol/cubalibre = 3) + result = /decl/reagent/alcohol/longislandicedtea + required_reagents = list(/decl/reagent/alcohol/vodka = 1, /decl/reagent/alcohol/gin = 1, /decl/reagent/alcohol/tequila = 1, /decl/reagent/alcohol/cubalibre = 3) result_amount = 6 /datum/chemical_reaction/drink/threemileisland name = "Three Mile Island Iced Tea" id = "threemileisland" - result = /datum/reagent/alcohol/ethanol/threemileisland - required_reagents = list(/datum/reagent/alcohol/ethanol/longislandicedtea = 10, /datum/reagent/uranium = 1) + result = /decl/reagent/alcohol/threemileisland + required_reagents = list(/decl/reagent/alcohol/longislandicedtea = 10, /decl/reagent/uranium = 1) result_amount = 10 /datum/chemical_reaction/drink/whiskeysoda name = "Whiskey Soda" id = "whiskeysoda" - result = /datum/reagent/alcohol/ethanol/whiskeysoda - required_reagents = list(/datum/reagent/alcohol/ethanol/whiskey = 2, /datum/reagent/drink/sodawater = 1) + result = /decl/reagent/alcohol/whiskeysoda + required_reagents = list(/decl/reagent/alcohol/whiskey = 2, /decl/reagent/drink/sodawater = 1) result_amount = 3 /datum/chemical_reaction/drink/black_russian name = "Black Russian" id = "blackrussian" - result = /datum/reagent/alcohol/ethanol/blackrussian - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 2, /datum/reagent/alcohol/ethanol/coffee/kahlua = 1) + result = /decl/reagent/alcohol/blackrussian + required_reagents = list(/decl/reagent/alcohol/vodka = 2, /decl/reagent/alcohol/coffee/kahlua = 1) result_amount = 3 /datum/chemical_reaction/drink/manhattan name = "Manhattan" id = "manhattan" - result = /datum/reagent/alcohol/ethanol/manhattan - required_reagents = list(/datum/reagent/alcohol/ethanol/whiskey = 2, /datum/reagent/alcohol/ethanol/vermouth = 1) + result = /decl/reagent/alcohol/manhattan + required_reagents = list(/decl/reagent/alcohol/whiskey = 2, /decl/reagent/alcohol/vermouth = 1) result_amount = 3 /datum/chemical_reaction/drink/manhattan_proj name = "Manhattan Project" id = "manhattan_proj" - result = /datum/reagent/alcohol/ethanol/manhattan_proj - required_reagents = list(/datum/reagent/alcohol/ethanol/manhattan = 10, /datum/reagent/uranium = 1) + result = /decl/reagent/alcohol/manhattan_proj + required_reagents = list(/decl/reagent/alcohol/manhattan = 10, /decl/reagent/uranium = 1) result_amount = 10 /datum/chemical_reaction/drink/vodka_tonic name = "Vodka and Tonic" id = "vodkatonic" - result = /datum/reagent/alcohol/ethanol/vodkatonic - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 2, /datum/reagent/drink/tonic = 1) + result = /decl/reagent/alcohol/vodkatonic + required_reagents = list(/decl/reagent/alcohol/vodka = 2, /decl/reagent/drink/tonic = 1) result_amount = 3 /datum/chemical_reaction/drink/gin_fizz name = "Gin Fizz" id = "ginfizz" - result = /datum/reagent/alcohol/ethanol/ginfizz - required_reagents = list(/datum/reagent/alcohol/ethanol/gin = 1, /datum/reagent/drink/sodawater = 1, /datum/reagent/drink/limejuice = 1) + result = /decl/reagent/alcohol/ginfizz + required_reagents = list(/decl/reagent/alcohol/gin = 1, /decl/reagent/drink/sodawater = 1, /decl/reagent/drink/limejuice = 1) result_amount = 3 /datum/chemical_reaction/drink/bahama_mama name = "Bahama mama" id = "bahama_mama" - result = /datum/reagent/alcohol/ethanol/bahama_mama - required_reagents = list(/datum/reagent/alcohol/ethanol/rum = 2, /datum/reagent/drink/orangejuice = 2, /datum/reagent/drink/limejuice = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/bahama_mama + required_reagents = list(/decl/reagent/alcohol/rum = 2, /decl/reagent/drink/orangejuice = 2, /decl/reagent/drink/limejuice = 1, /decl/reagent/drink/ice = 1) result_amount = 6 /datum/chemical_reaction/drink/singulo name = "Singulo" id = "singulo" - result = /datum/reagent/alcohol/ethanol/singulo - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 5, /datum/reagent/radium = 1, /datum/reagent/alcohol/ethanol/wine = 5) + result = /decl/reagent/alcohol/singulo + required_reagents = list(/decl/reagent/alcohol/vodka = 5, /decl/reagent/radium = 1, /decl/reagent/alcohol/wine = 5) result_amount = 10 /datum/chemical_reaction/drink/alliescocktail name = "Allies Cocktail" id = "alliescocktail" - result = /datum/reagent/alcohol/ethanol/alliescocktail - required_reagents = list(/datum/reagent/alcohol/ethanol/martini = 1, /datum/reagent/alcohol/ethanol/vodka = 1) + result = /decl/reagent/alcohol/alliescocktail + required_reagents = list(/decl/reagent/alcohol/martini = 1, /decl/reagent/alcohol/vodka = 1) result_amount = 2 /datum/chemical_reaction/drink/demonsblood name = "Demons Blood" id = "demonsblood" - result = /datum/reagent/alcohol/ethanol/demonsblood - required_reagents = list(/datum/reagent/alcohol/ethanol/rum = 3, /datum/reagent/drink/spacemountainwind = 1, /datum/reagent/blood = 1, /datum/reagent/drink/dr_gibb = 1) + result = /decl/reagent/alcohol/demonsblood + required_reagents = list(/decl/reagent/alcohol/rum = 3, /decl/reagent/drink/spacemountainwind = 1, /decl/reagent/blood = 1, /decl/reagent/drink/dr_gibb = 1) result_amount = 6 /datum/chemical_reaction/drink/booger name = "Booger" id = "booger" - result = /datum/reagent/alcohol/ethanol/booger - required_reagents = list(/datum/reagent/drink/milk/cream = 2, /datum/reagent/drink/banana = 1, /datum/reagent/alcohol/ethanol/rum = 1, /datum/reagent/drink/watermelonjuice = 1) + result = /decl/reagent/alcohol/booger + required_reagents = list(/decl/reagent/drink/milk/cream = 2, /decl/reagent/drink/banana = 1, /decl/reagent/alcohol/rum = 1, /decl/reagent/drink/watermelonjuice = 1) result_amount = 5 /datum/chemical_reaction/drink/antifreeze name = "Anti-freeze" id = "antifreeze" - result = /datum/reagent/alcohol/ethanol/antifreeze - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 1, /datum/reagent/drink/milk/cream = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/antifreeze + required_reagents = list(/decl/reagent/alcohol/vodka = 1, /decl/reagent/drink/milk/cream = 1, /decl/reagent/drink/ice = 1) result_amount = 3 /datum/chemical_reaction/drink/barefoot name = "Barefoot" id = "barefoot" - result = /datum/reagent/alcohol/ethanol/barefoot - required_reagents = list(/datum/reagent/drink/berryjuice = 1, /datum/reagent/drink/milk/cream = 1, /datum/reagent/alcohol/ethanol/vermouth = 1) + result = /decl/reagent/alcohol/barefoot + required_reagents = list(/decl/reagent/drink/berryjuice = 1, /decl/reagent/drink/milk/cream = 1, /decl/reagent/alcohol/vermouth = 1) result_amount = 3 /datum/chemical_reaction/drink/grapesoda name = "Grape Soda" id = "grapesoda" - result = /datum/reagent/drink/grapesoda - required_reagents = list(/datum/reagent/drink/grapejuice = 2, /datum/reagent/drink/space_cola = 1) + result = /decl/reagent/drink/grapesoda + required_reagents = list(/decl/reagent/drink/grapejuice = 2, /decl/reagent/drink/space_cola = 1) result_amount = 3 /datum/chemical_reaction/drink/sbiten name = "Sbiten" id = "sbiten" - result = /datum/reagent/alcohol/ethanol/sbiten - required_reagents = list(/datum/reagent/alcohol/ethanol/mead = 10, /datum/reagent/capsaicin = 1) + result = /decl/reagent/alcohol/sbiten + required_reagents = list(/decl/reagent/alcohol/mead = 10, /decl/reagent/capsaicin = 1) result_amount = 10 /datum/chemical_reaction/drink/red_mead name = "Red Mead" id = "red_mead" - result = /datum/reagent/alcohol/ethanol/red_mead - required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/alcohol/ethanol/mead = 1) + result = /decl/reagent/alcohol/red_mead + required_reagents = list(/decl/reagent/blood = 1, /decl/reagent/alcohol/mead = 1) result_amount = 2 /datum/chemical_reaction/drink/mead name = "Mead" id = "mead" - result = /datum/reagent/alcohol/ethanol/mead - required_reagents = list(/datum/reagent/sugar = 1, /datum/reagent/water = 1) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/alcohol/mead + required_reagents = list(/decl/reagent/sugar = 1, /decl/reagent/water = 1) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 2 /datum/chemical_reaction/drink/iced_beer name = "Iced Beer" id = "frosted_beer" - result = /datum/reagent/alcohol/ethanol/iced_beer - required_reagents = list(/datum/reagent/alcohol/ethanol/beer = 10, /datum/reagent/frostoil = 1) + result = /decl/reagent/alcohol/iced_beer + required_reagents = list(/decl/reagent/alcohol/beer = 10, /decl/reagent/frostoil = 1) result_amount = 10 /datum/chemical_reaction/drink/iced_beer2 name = "Iced Beer" id = "iced_beer" - result = /datum/reagent/alcohol/ethanol/iced_beer - required_reagents = list(/datum/reagent/alcohol/ethanol/beer = 5, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/iced_beer + required_reagents = list(/decl/reagent/alcohol/beer = 5, /decl/reagent/drink/ice = 1) result_amount = 6 /datum/chemical_reaction/drink/grog name = "Grog" id = "grog" - result = /datum/reagent/alcohol/ethanol/grog - required_reagents = list(/datum/reagent/alcohol/ethanol/rum = 1, /datum/reagent/water = 1) + result = /decl/reagent/alcohol/grog + required_reagents = list(/decl/reagent/alcohol/rum = 1, /decl/reagent/water = 1) result_amount = 2 /datum/chemical_reaction/drink/soy_latte name = "Soy Latte" id = "soy_latte" - result = /datum/reagent/drink/coffee/soy_latte - required_reagents = list(/datum/reagent/drink/coffee = 1, /datum/reagent/drink/milk/soymilk = 1) + result = /decl/reagent/drink/coffee/soy_latte + required_reagents = list(/decl/reagent/drink/coffee = 1, /decl/reagent/drink/milk/soymilk = 1) result_amount = 2 /datum/chemical_reaction/drink/cafe_latte name = "Cafe Latte" id = "cafe_latte" - result = /datum/reagent/drink/coffee/cafe_latte - required_reagents = list(/datum/reagent/drink/coffee = 1, /datum/reagent/drink/milk = 1) + result = /decl/reagent/drink/coffee/cafe_latte + required_reagents = list(/decl/reagent/drink/coffee = 1, /decl/reagent/drink/milk = 1) result_amount = 2 /datum/chemical_reaction/drink/freddo_espresso name = "Freddo Espresso" id = "freddo_espresso" - result = /datum/reagent/drink/coffee/freddo_espresso - required_reagents = list(/datum/reagent/drink/coffee/espresso = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/drink/coffee/freddo_espresso + required_reagents = list(/decl/reagent/drink/coffee/espresso = 1, /decl/reagent/drink/ice = 1) result_amount = 2 /datum/chemical_reaction/drink/caffe_americano name = "Caffe Americano" id = "caffe_americano" - result = /datum/reagent/drink/coffee/caffe_americano - required_reagents = list(/datum/reagent/drink/coffee/espresso = 1, /datum/reagent/water = 1) + result = /decl/reagent/drink/coffee/caffe_americano + required_reagents = list(/decl/reagent/drink/coffee/espresso = 1, /decl/reagent/water = 1) result_amount = 2 /datum/chemical_reaction/drink/flat_white name = "Flat White" id = "flat_white" - result = /datum/reagent/drink/coffee/flat_white - required_reagents = list(/datum/reagent/drink/coffee/espresso = 1, /datum/reagent/drink/milk = 1) + result = /decl/reagent/drink/coffee/flat_white + required_reagents = list(/decl/reagent/drink/coffee/espresso = 1, /decl/reagent/drink/milk = 1) result_amount = 2 /datum/chemical_reaction/drink/latte name = "Latte" id = "latte" - result = /datum/reagent/drink/coffee/latte - required_reagents = list(/datum/reagent/drink/coffee/flat_white = 1, /datum/reagent/drink/milk = 1) + result = /decl/reagent/drink/coffee/latte + required_reagents = list(/decl/reagent/drink/coffee/flat_white = 1, /decl/reagent/drink/milk = 1) result_amount = 2 /datum/chemical_reaction/drink/cappuccino name = "Cappuccino" id = "cappuccino" - result = /datum/reagent/drink/coffee/cappuccino - required_reagents = list(/datum/reagent/drink/coffee/espresso = 1, /datum/reagent/drink/milk/cream = 1) + result = /decl/reagent/drink/coffee/cappuccino + required_reagents = list(/decl/reagent/drink/coffee/espresso = 1, /decl/reagent/drink/milk/cream = 1) result_amount = 2 /datum/chemical_reaction/drink/freddo_cappuccino name = "Freddo cappuccino" id = "freddo_cappuccino" - result = /datum/reagent/drink/coffee/freddo_cappuccino - required_reagents = list(/datum/reagent/drink/coffee/cappuccino = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/drink/coffee/freddo_cappuccino + required_reagents = list(/decl/reagent/drink/coffee/cappuccino = 1, /decl/reagent/drink/ice = 1) result_amount = 2 /datum/chemical_reaction/drink/macchiato name = "Macchiato" id = "macchiato" - result = /datum/reagent/drink/coffee/macchiato - required_reagents = list(/datum/reagent/drink/coffee/cappuccino = 1, /datum/reagent/drink/coffee/espresso = 1) + result = /decl/reagent/drink/coffee/macchiato + required_reagents = list(/decl/reagent/drink/coffee/cappuccino = 1, /decl/reagent/drink/coffee/espresso = 1) result_amount = 2 /datum/chemical_reaction/drink/mocacchino name = "Mocacchino" id = "mocacchino" - result = /datum/reagent/drink/coffee/mocacchino - required_reagents = list(/datum/reagent/drink/coffee/flat_white = 1, /datum/reagent/drink/syrup_chocolate = 1) + result = /decl/reagent/drink/coffee/mocacchino + required_reagents = list(/decl/reagent/drink/coffee/flat_white = 1, /decl/reagent/drink/syrup_chocolate = 1) result_amount = 2 /datum/chemical_reaction/drink/acidspit name = "Acid Spit" id = "acidspit" - result = /datum/reagent/alcohol/ethanol/acid_spit - required_reagents = list(/datum/reagent/acid = 1, /datum/reagent/alcohol/ethanol/wine = 5) + result = /decl/reagent/alcohol/acid_spit + required_reagents = list(/decl/reagent/acid = 1, /decl/reagent/alcohol/wine = 5) result_amount = 6 /datum/chemical_reaction/drink/amasec name = "Amasec" id = "amasec" - result = /datum/reagent/alcohol/ethanol/amasec - required_reagents = list(/datum/reagent/iron = 1, /datum/reagent/alcohol/ethanol/wine = 5, /datum/reagent/alcohol/ethanol/vodka = 5) + result = /decl/reagent/alcohol/amasec + required_reagents = list(/decl/reagent/iron = 1, /decl/reagent/alcohol/wine = 5, /decl/reagent/alcohol/vodka = 5) result_amount = 10 /datum/chemical_reaction/drink/gibsonpunch name = "Gibson Punch" id = "gibsonpunch" - result = /datum/reagent/alcohol/ethanol/gibsonpunch - required_reagents = list(/datum/reagent/alcohol/ethanol/screwdrivercocktail = 1, /datum/reagent/drink/limejuice = 1, /datum/reagent/drink/lemonjuice = 1) + result = /decl/reagent/alcohol/gibsonpunch + required_reagents = list(/decl/reagent/alcohol/screwdrivercocktail = 1, /decl/reagent/drink/limejuice = 1, /decl/reagent/drink/lemonjuice = 1) result_amount = 3 /datum/chemical_reaction/drink/aloe name = "Aloe" id = "aloe" - result = /datum/reagent/alcohol/ethanol/aloe - required_reagents = list(/datum/reagent/drink/milk/cream = 1, /datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/drink/watermelonjuice = 1) + result = /decl/reagent/alcohol/aloe + required_reagents = list(/decl/reagent/drink/milk/cream = 1, /decl/reagent/alcohol/whiskey = 1, /decl/reagent/drink/watermelonjuice = 1) result_amount = 3 /datum/chemical_reaction/drink/andalusia name = "Andalusia" id = "andalusia" - result = /datum/reagent/alcohol/ethanol/andalusia - required_reagents = list(/datum/reagent/alcohol/ethanol/rum = 1, /datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/drink/lemonjuice = 1) + result = /decl/reagent/alcohol/andalusia + required_reagents = list(/decl/reagent/alcohol/rum = 1, /decl/reagent/alcohol/whiskey = 1, /decl/reagent/drink/lemonjuice = 1) result_amount = 3 /datum/chemical_reaction/drink/neurotoxin name = "Neurotoxin" id = "neurotoxin" - result = /datum/reagent/alcohol/ethanol/neurotoxin - required_reagents = list(/datum/reagent/alcohol/ethanol/gargleblaster = 1, /datum/reagent/soporific = 1) + result = /decl/reagent/alcohol/neurotoxin + required_reagents = list(/decl/reagent/alcohol/gargleblaster = 1, /decl/reagent/soporific = 1) result_amount = 2 /datum/chemical_reaction/drink/snowwhite name = "Snow White" id = "snowwhite" - result = /datum/reagent/alcohol/ethanol/snowwhite - required_reagents = list(/datum/reagent/alcohol/ethanol/beer = 1, /datum/reagent/drink/lemon_lime = 1) + result = /decl/reagent/alcohol/snowwhite + required_reagents = list(/decl/reagent/alcohol/beer = 1, /decl/reagent/drink/lemon_lime = 1) result_amount = 2 /datum/chemical_reaction/drink/irishcarbomb name = "Irish Car Bomb" id = "irishcarbomb" - result = /datum/reagent/alcohol/ethanol/irishcarbomb - required_reagents = list(/datum/reagent/alcohol/ethanol/ale = 1, /datum/reagent/alcohol/ethanol/irishcream = 1) + result = /decl/reagent/alcohol/irishcarbomb + required_reagents = list(/decl/reagent/alcohol/ale = 1, /decl/reagent/alcohol/irishcream = 1) result_amount = 2 /datum/chemical_reaction/drink/gibsonhooch name = "Gibson Hooch" id = "gibsonhooch" - result = /datum/reagent/alcohol/ethanol/gibsonhooch - required_reagents = list(/datum/reagent/alcohol/ethanol/beer = 1, /datum/reagent/alcohol/ethanol/whiskeycola = 1) + result = /decl/reagent/alcohol/gibsonhooch + required_reagents = list(/decl/reagent/alcohol/beer = 1, /decl/reagent/alcohol/whiskeycola = 1) result_amount = 2 /datum/chemical_reaction/drink/erikasurprise name = "Erika Surprise" id = "erikasurprise" - result = /datum/reagent/alcohol/ethanol/erikasurprise - required_reagents = list(/datum/reagent/alcohol/ethanol/ale = 2, /datum/reagent/drink/limejuice = 1, /datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/drink/banana = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/erikasurprise + required_reagents = list(/decl/reagent/alcohol/ale = 2, /decl/reagent/drink/limejuice = 1, /decl/reagent/alcohol/whiskey = 1, /decl/reagent/drink/banana = 1, /decl/reagent/drink/ice = 1) result_amount = 6 /datum/chemical_reaction/drink/devilskiss name = "Devils Kiss" id = "devilskiss" - result = /datum/reagent/alcohol/ethanol/devilskiss - required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/alcohol/ethanol/coffee/kahlua = 1, /datum/reagent/alcohol/ethanol/rum = 1) + result = /decl/reagent/alcohol/devilskiss + required_reagents = list(/decl/reagent/blood = 1, /decl/reagent/alcohol/coffee/kahlua = 1, /decl/reagent/alcohol/rum = 1) result_amount = 3 /datum/chemical_reaction/drink/hippiesdelight name = "Hippies Delight" id = "hippiesdelight" - result = /datum/reagent/alcohol/ethanol/hippiesdelight - required_reagents = list(/datum/reagent/psilocybin = 1, /datum/reagent/alcohol/ethanol/gargleblaster = 1) + result = /decl/reagent/alcohol/hippiesdelight + required_reagents = list(/decl/reagent/psilocybin = 1, /decl/reagent/alcohol/gargleblaster = 1) result_amount = 2 /datum/chemical_reaction/drink/bananahonk name = "Banana Honk" id = "bananahonk" - result = /datum/reagent/alcohol/ethanol/bananahonk - required_reagents = list(/datum/reagent/drink/banana = 1, /datum/reagent/drink/milk/cream = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/alcohol/bananahonk + required_reagents = list(/decl/reagent/drink/banana = 1, /decl/reagent/drink/milk/cream = 1, /decl/reagent/sugar = 1) result_amount = 3 /datum/chemical_reaction/drink/silencer name = "Silencer" id = "silencer" - result = /datum/reagent/alcohol/ethanol/silencer - required_reagents = list(/datum/reagent/drink/nothing = 1, /datum/reagent/drink/milk/cream = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/alcohol/silencer + required_reagents = list(/decl/reagent/drink/nothing = 1, /decl/reagent/drink/milk/cream = 1, /decl/reagent/sugar = 1) result_amount = 3 /datum/chemical_reaction/drink/driestmartini name = "Driest Martini" id = "driestmartini" - result = /datum/reagent/alcohol/ethanol/driestmartini - required_reagents = list(/datum/reagent/drink/nothing = 1, /datum/reagent/alcohol/ethanol/gin = 1) + result = /decl/reagent/alcohol/driestmartini + required_reagents = list(/decl/reagent/drink/nothing = 1, /decl/reagent/alcohol/gin = 1) result_amount = 2 /datum/chemical_reaction/drink/lemonade name = "Lemonade" id = "lemonade" - result = /datum/reagent/drink/lemonade - required_reagents = list(/datum/reagent/drink/lemonjuice = 1, /datum/reagent/sugar = 1, /datum/reagent/water = 1) + result = /decl/reagent/drink/lemonade + required_reagents = list(/decl/reagent/drink/lemonjuice = 1, /decl/reagent/sugar = 1, /decl/reagent/water = 1) result_amount = 3 /datum/chemical_reaction/drink/lemonade/pink name = "Pink Lemonade" id = "pinklemonade" - result = /datum/reagent/drink/lemonade/pink - required_reagents = list(/datum/reagent/drink/lemonade = 8, /datum/reagent/drink/grenadine = 2) + result = /decl/reagent/drink/lemonade/pink + required_reagents = list(/decl/reagent/drink/lemonade = 8, /decl/reagent/drink/grenadine = 2) result_amount = 10 /datum/chemical_reaction/drink/kiraspecial name = "Kira Special" id = "kiraspecial" - result = /datum/reagent/drink/kiraspecial - required_reagents = list(/datum/reagent/drink/orangejuice = 1, /datum/reagent/drink/limejuice = 1, /datum/reagent/drink/sodawater = 1) + result = /decl/reagent/drink/kiraspecial + required_reagents = list(/decl/reagent/drink/orangejuice = 1, /decl/reagent/drink/limejuice = 1, /decl/reagent/drink/sodawater = 1) result_amount = 3 /datum/chemical_reaction/drink/brownstar name = "Brown Star" id = "brownstar" - result = /datum/reagent/drink/brownstar - required_reagents = list(/datum/reagent/drink/orangejuice = 2, /datum/reagent/drink/space_cola = 1) + result = /decl/reagent/drink/brownstar + required_reagents = list(/decl/reagent/drink/orangejuice = 2, /decl/reagent/drink/space_cola = 1) result_amount = 3 /datum/chemical_reaction/drink/milkshake name = "Milkshake" id = "milkshake" - result = /datum/reagent/drink/milkshake - required_reagents = list(/datum/reagent/drink/milk/cream = 1, /datum/reagent/drink/ice = 2, /datum/reagent/drink/milk = 2) + result = /decl/reagent/drink/milkshake + required_reagents = list(/decl/reagent/drink/milk/cream = 1, /decl/reagent/drink/ice = 2, /decl/reagent/drink/milk = 2) result_amount = 5 /datum/chemical_reaction/drink/cmojito name = "Champagne Mojito" id = "cmojito" - result = /datum/reagent/alcohol/ethanol/cmojito - required_reagents = list(/datum/reagent/drink/mintsyrup = 1, /datum/reagent/alcohol/ethanol/champagne = 1, /datum/reagent/alcohol/ethanol/rum = 1) + result = /decl/reagent/alcohol/cmojito + required_reagents = list(/decl/reagent/drink/mintsyrup = 1, /decl/reagent/alcohol/champagne = 1, /decl/reagent/alcohol/rum = 1) result_amount = 3 /datum/chemical_reaction/drink/classic name = "The Classic" id = "classic" - result = /datum/reagent/alcohol/ethanol/classic - required_reagents = list(/datum/reagent/alcohol/ethanol/champagne = 2, /datum/reagent/alcohol/ethanol/bitters = 1, /datum/reagent/drink/lemonjuice = 1) + result = /decl/reagent/alcohol/classic + required_reagents = list(/decl/reagent/alcohol/champagne = 2, /decl/reagent/alcohol/bitters = 1, /decl/reagent/drink/lemonjuice = 1) result_amount = 4 /datum/chemical_reaction/drink/corkpopper name = "Cork Popper" id = "corkpopper" - result = /datum/reagent/alcohol/ethanol/corkpopper - required_reagents = list(/datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/alcohol/ethanol/champagne = 1, /datum/reagent/drink/lemonjuice = 1) + result = /decl/reagent/alcohol/corkpopper + required_reagents = list(/decl/reagent/alcohol/whiskey = 1, /decl/reagent/alcohol/champagne = 1, /decl/reagent/drink/lemonjuice = 1) result_amount = 3 /datum/chemical_reaction/drink/french75 name = "French 75" id = "french75" - result = /datum/reagent/alcohol/ethanol/french75 - required_reagents = list(/datum/reagent/alcohol/ethanol/champagne = 2, /datum/reagent/alcohol/ethanol/gin = 1, /datum/reagent/drink/lemonjuice = 1) + result = /decl/reagent/alcohol/french75 + required_reagents = list(/decl/reagent/alcohol/champagne = 2, /decl/reagent/alcohol/gin = 1, /decl/reagent/drink/lemonjuice = 1) result_amount = 4 /datum/chemical_reaction/drink/muscmule name = "Muscovite Mule" id = "muscmule" - result = /datum/reagent/alcohol/ethanol/muscmule - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 1, /datum/reagent/drink/limejuice = 1, /datum/reagent/drink/mintsyrup = 1) + result = /decl/reagent/alcohol/muscmule + required_reagents = list(/decl/reagent/alcohol/vodka = 1, /decl/reagent/drink/limejuice = 1, /decl/reagent/drink/mintsyrup = 1) result_amount = 3 /datum/chemical_reaction/drink/omimosa name = "Orange Mimosa" id = "omimosa" - result = /datum/reagent/alcohol/ethanol/omimosa - required_reagents = list(/datum/reagent/drink/orangejuice = 1, /datum/reagent/alcohol/ethanol/champagne = 1) + result = /decl/reagent/alcohol/omimosa + required_reagents = list(/decl/reagent/drink/orangejuice = 1, /decl/reagent/alcohol/champagne = 1) result_amount = 2 /datum/chemical_reaction/drink/pinkgin name = "Pink Gin" id = "pinkgin" - result = /datum/reagent/alcohol/ethanol/pinkgin - required_reagents = list(/datum/reagent/alcohol/ethanol/gin = 2, /datum/reagent/alcohol/ethanol/bitters = 1) + result = /decl/reagent/alcohol/pinkgin + required_reagents = list(/decl/reagent/alcohol/gin = 2, /decl/reagent/alcohol/bitters = 1) result_amount = 3 /datum/chemical_reaction/drink/pinkgintonic name = "Pink Gin and Tonic" id = "pinkgintonic" - result = /datum/reagent/alcohol/ethanol/pinkgintonic - required_reagents = list(/datum/reagent/alcohol/ethanol/pinkgin = 2, /datum/reagent/drink/tonic = 1) + result = /decl/reagent/alcohol/pinkgintonic + required_reagents = list(/decl/reagent/alcohol/pinkgin = 2, /decl/reagent/drink/tonic = 1) result_amount = 3 /datum/chemical_reaction/drink/piratepunch name = "Pirate's Punch" id = "piratepunch" - result = /datum/reagent/alcohol/ethanol/piratepunch - required_reagents = list(/datum/reagent/alcohol/ethanol/rum = 1, /datum/reagent/drink/lemonjuice = 1, /datum/reagent/drink/mintsyrup = 1, /datum/reagent/drink/grenadine = 1, /datum/reagent/alcohol/ethanol/bitters = 1) + result = /decl/reagent/alcohol/piratepunch + required_reagents = list(/decl/reagent/alcohol/rum = 1, /decl/reagent/drink/lemonjuice = 1, /decl/reagent/drink/mintsyrup = 1, /decl/reagent/drink/grenadine = 1, /decl/reagent/alcohol/bitters = 1) result_amount = 5 /datum/chemical_reaction/drink/planterpunch name = "Planter's Punch" id = "planterpunch" - result = /datum/reagent/alcohol/ethanol/planterpunch - required_reagents = list(/datum/reagent/alcohol/ethanol/rum = 2, /datum/reagent/drink/orangejuice = 1, /datum/reagent/drink/grenadine = 1) + result = /decl/reagent/alcohol/planterpunch + required_reagents = list(/decl/reagent/alcohol/rum = 2, /decl/reagent/drink/orangejuice = 1, /decl/reagent/drink/grenadine = 1) result_amount = 4 /datum/chemical_reaction/drink/ssroyale name = "Southside Royale" id = "ssroyale" - result = /datum/reagent/alcohol/ethanol/ssroyale - required_reagents = list(/datum/reagent/drink/mintsyrup = 1, /datum/reagent/alcohol/ethanol/gin = 1, /datum/reagent/drink/limejuice = 1, /datum/reagent/alcohol/ethanol/champagne = 1) + result = /decl/reagent/alcohol/ssroyale + required_reagents = list(/decl/reagent/drink/mintsyrup = 1, /decl/reagent/alcohol/gin = 1, /decl/reagent/drink/limejuice = 1, /decl/reagent/alcohol/champagne = 1) result_amount = 4 /datum/chemical_reaction/drink/rewriter name = "Rewriter" id = "rewriter" - result = /datum/reagent/drink/rewriter - required_reagents = list(/datum/reagent/drink/spacemountainwind = 1, /datum/reagent/drink/coffee = 1) + result = /decl/reagent/drink/rewriter + required_reagents = list(/decl/reagent/drink/spacemountainwind = 1, /decl/reagent/drink/coffee = 1) result_amount = 2 /datum/chemical_reaction/drink/suidream name = "Sui Dream" id = "suidream" - result = /datum/reagent/alcohol/ethanol/suidream - required_reagents = list(/datum/reagent/drink/spaceup = 1, /datum/reagent/alcohol/ethanol/bluecuracao = 1, /datum/reagent/alcohol/ethanol/melonliquor = 1) + result = /decl/reagent/alcohol/suidream + required_reagents = list(/decl/reagent/drink/spaceup = 1, /decl/reagent/alcohol/bluecuracao = 1, /decl/reagent/alcohol/melonliquor = 1) result_amount = 3 //aurora's drinks @@ -2635,149 +2413,149 @@ /datum/chemical_reaction/drink/daiquiri name = "Daiquiri" id = "daiquiri" - result = /datum/reagent/alcohol/ethanol/daiquiri - required_reagents = list(/datum/reagent/drink/limejuice = 1, /datum/reagent/alcohol/ethanol/rum = 1) + result = /decl/reagent/alcohol/daiquiri + required_reagents = list(/decl/reagent/drink/limejuice = 1, /decl/reagent/alcohol/rum = 1) result_amount = 2 /datum/chemical_reaction/drink/icepick name = "Ice Pick" id = "icepick" - result = /datum/reagent/alcohol/ethanol/icepick - required_reagents = list(/datum/reagent/drink/icetea = 1, /datum/reagent/alcohol/ethanol/vodka = 1) + result = /decl/reagent/alcohol/icepick + required_reagents = list(/decl/reagent/drink/icetea = 1, /decl/reagent/alcohol/vodka = 1) result_amount = 2 /datum/chemical_reaction/drink/poussecafe name = "Pousse-Cafe" id = "poussecafe" - result = /datum/reagent/alcohol/ethanol/poussecafe - required_reagents = list(/datum/reagent/alcohol/ethanol/brandy = 1, /datum/reagent/alcohol/ethanol/chartreusegreen = 1, /datum/reagent/alcohol/ethanol/chartreuseyellow = 1, /datum/reagent/alcohol/ethanol/cremewhite = 1, /datum/reagent/drink/grenadine = 1) + result = /decl/reagent/alcohol/poussecafe + required_reagents = list(/decl/reagent/alcohol/brandy = 1, /decl/reagent/alcohol/chartreusegreen = 1, /decl/reagent/alcohol/chartreuseyellow = 1, /decl/reagent/alcohol/cremewhite = 1, /decl/reagent/drink/grenadine = 1) result_amount = 5 /datum/chemical_reaction/drink/mintjulep name = "Mint Julep" id = "mintjulep" - result = /datum/reagent/alcohol/ethanol/mintjulep - required_reagents = list(/datum/reagent/water = 1, /datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/mintjulep + required_reagents = list(/decl/reagent/water = 1, /decl/reagent/alcohol/whiskey = 1, /decl/reagent/drink/ice = 1) result_amount = 2 /datum/chemical_reaction/drink/johncollins name = "John Collins" id = "johncollins" - result = /datum/reagent/alcohol/ethanol/johncollins - required_reagents = list(/datum/reagent/alcohol/ethanol/whiskeysoda = 2, /datum/reagent/drink/lemonjuice = 1, /datum/reagent/drink/grenadine = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/johncollins + required_reagents = list(/decl/reagent/alcohol/whiskeysoda = 2, /decl/reagent/drink/lemonjuice = 1, /decl/reagent/drink/grenadine = 1, /decl/reagent/drink/ice = 1) result_amount = 5 /datum/chemical_reaction/drink/gimlet name = "Gimlet" id = "gimlet" - result = /datum/reagent/alcohol/ethanol/gimlet - required_reagents = list(/datum/reagent/drink/limejuice = 1, /datum/reagent/alcohol/ethanol/gin = 1, /datum/reagent/drink/grenadine = 1) + result = /decl/reagent/alcohol/gimlet + required_reagents = list(/decl/reagent/drink/limejuice = 1, /decl/reagent/alcohol/gin = 1, /decl/reagent/drink/grenadine = 1) result_amount = 3 /datum/chemical_reaction/drink/starsandstripes name = "Stars and Stripes" id = "starsandstripes" - result = /datum/reagent/alcohol/ethanol/starsandstripes - required_reagents = list(/datum/reagent/drink/milk/cream = 1, /datum/reagent/alcohol/ethanol/cremeyvette = 1, /datum/reagent/drink/grenadine = 1) + result = /decl/reagent/alcohol/starsandstripes + required_reagents = list(/decl/reagent/drink/milk/cream = 1, /decl/reagent/alcohol/cremeyvette = 1, /decl/reagent/drink/grenadine = 1) result_amount = 3 /datum/chemical_reaction/drink/metropolitan name = "Metropolitan" id = "metropolitan" - result = /datum/reagent/alcohol/ethanol/metropolitan - required_reagents = list(/datum/reagent/alcohol/ethanol/brandy = 1, /datum/reagent/alcohol/ethanol/vermouth = 1, /datum/reagent/drink/grenadine = 1) + result = /decl/reagent/alcohol/metropolitan + required_reagents = list(/decl/reagent/alcohol/brandy = 1, /decl/reagent/alcohol/vermouth = 1, /decl/reagent/drink/grenadine = 1) result_amount = 3 /datum/chemical_reaction/drink/caruso name = "Caruso" id = "caruso" - result = /datum/reagent/alcohol/ethanol/caruso - required_reagents = list(/datum/reagent/alcohol/ethanol/martini = 2, /datum/reagent/alcohol/ethanol/cremewhite = 1) + result = /decl/reagent/alcohol/caruso + required_reagents = list(/decl/reagent/alcohol/martini = 2, /decl/reagent/alcohol/cremewhite = 1) result_amount = 3 /datum/chemical_reaction/drink/aprilshower name = "April Shower" id = "aprilshower" - result = /datum/reagent/alcohol/ethanol/aprilshower - required_reagents = list(/datum/reagent/alcohol/ethanol/brandy = 1, /datum/reagent/alcohol/ethanol/chartreuseyellow = 1, /datum/reagent/drink/orangejuice = 1) + result = /decl/reagent/alcohol/aprilshower + required_reagents = list(/decl/reagent/alcohol/brandy = 1, /decl/reagent/alcohol/chartreuseyellow = 1, /decl/reagent/drink/orangejuice = 1) result_amount = 3 /datum/chemical_reaction/drink/carthusiansazerac name = "Carthusian Sazerac" id = "carthusiansazerac" - result = /datum/reagent/alcohol/ethanol/carthusiansazerac - required_reagents = list(/datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/alcohol/ethanol/chartreusegreen = 1, /datum/reagent/drink/grenadine = 1, /datum/reagent/alcohol/ethanol/absinthe = 1) + result = /decl/reagent/alcohol/carthusiansazerac + required_reagents = list(/decl/reagent/alcohol/whiskey = 1, /decl/reagent/alcohol/chartreusegreen = 1, /decl/reagent/drink/grenadine = 1, /decl/reagent/alcohol/absinthe = 1) result_amount = 4 /datum/chemical_reaction/drink/deweycocktail name = "Dewey Cocktail" id = "deweycocktail" - result = /datum/reagent/alcohol/ethanol/deweycocktail - required_reagents = list(/datum/reagent/alcohol/ethanol/cremeyvette = 1, /datum/reagent/alcohol/ethanol/gin = 1, /datum/reagent/drink/grenadine = 1) + result = /decl/reagent/alcohol/deweycocktail + required_reagents = list(/decl/reagent/alcohol/cremeyvette = 1, /decl/reagent/alcohol/gin = 1, /decl/reagent/drink/grenadine = 1) result_amount = 3 /datum/chemical_reaction/drink/rustynail name = "Rusty Nail" id = "rustynail" - result = /datum/reagent/alcohol/ethanol/rustynail - required_reagents = list(/datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/alcohol/ethanol/drambuie = 1) + result = /decl/reagent/alcohol/rustynail + required_reagents = list(/decl/reagent/alcohol/whiskey = 1, /decl/reagent/alcohol/drambuie = 1) result_amount = 2 /datum/chemical_reaction/drink/oldfashioned name = "Old Fashioned" id = "oldfashioned" - result = /datum/reagent/alcohol/ethanol/oldfashioned - required_reagents = list(/datum/reagent/alcohol/ethanol/whiskeysoda = 3, /datum/reagent/alcohol/ethanol/bitters = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/alcohol/oldfashioned + required_reagents = list(/decl/reagent/alcohol/whiskeysoda = 3, /decl/reagent/alcohol/bitters = 1, /decl/reagent/sugar = 1) result_amount = 5 /datum/chemical_reaction/drink/blindrussian name = "Blind Russian" id = "blindrussian" - result = /datum/reagent/alcohol/ethanol/blindrussian - required_reagents = list(/datum/reagent/alcohol/ethanol/coffee/kahlua = 1, /datum/reagent/alcohol/ethanol/irishcream = 1, /datum/reagent/drink/milk/cream = 1) + result = /decl/reagent/alcohol/blindrussian + required_reagents = list(/decl/reagent/alcohol/coffee/kahlua = 1, /decl/reagent/alcohol/irishcream = 1, /decl/reagent/drink/milk/cream = 1) result_amount = 3 /datum/chemical_reaction/drink/tallrussian name = "Tall Black Russian" id = "tallrussian" - result = /datum/reagent/alcohol/ethanol/tallrussian - required_reagents = list(/datum/reagent/alcohol/ethanol/blackrussian = 1, /datum/reagent/drink/space_cola = 1) + result = /decl/reagent/alcohol/tallrussian + required_reagents = list(/decl/reagent/alcohol/blackrussian = 1, /decl/reagent/drink/space_cola = 1) result_amount = 2 /datum/chemical_reaction/drink/cold_gate name = "Cold Gate" id = "cold_gate" - result = /datum/reagent/drink/toothpaste/cold_gate + result = /decl/reagent/drink/toothpaste/cold_gate result_amount = 3 - required_reagents = list(/datum/reagent/drink/mintsyrup = 1, /datum/reagent/drink/ice = 1, /datum/reagent/drink/toothpaste = 1) + required_reagents = list(/decl/reagent/drink/mintsyrup = 1, /decl/reagent/drink/ice = 1, /decl/reagent/drink/toothpaste = 1) /datum/chemical_reaction/drink/waterfresh name = "Waterfresh" id = "waterfresh" - result = /datum/reagent/drink/toothpaste/waterfresh + result = /decl/reagent/drink/toothpaste/waterfresh result_amount = 3 - required_reagents = list(/datum/reagent/drink/tonic = 1, /datum/reagent/drink/sodawater = 1, /datum/reagent/drink/toothpaste = 1) + required_reagents = list(/decl/reagent/drink/tonic = 1, /decl/reagent/drink/sodawater = 1, /decl/reagent/drink/toothpaste = 1) /datum/chemical_reaction/drink/sedantian_firestorm name = "Sedantian Firestorm" id = "sedantian_firestorm" - result = /datum/reagent/drink/toothpaste/sedantian_firestorm + result = /decl/reagent/drink/toothpaste/sedantian_firestorm result_amount = 2 - required_reagents = list(/datum/reagent/toxin/phoron = 1, /datum/reagent/drink/toothpaste = 1) + required_reagents = list(/decl/reagent/toxin/phoron = 1, /decl/reagent/drink/toothpaste = 1) /datum/chemical_reaction/drink/kois_odyne name = "Kois Odyne" id = "kois_odyne" - result = /datum/reagent/drink/toothpaste/kois_odyne + result = /decl/reagent/drink/toothpaste/kois_odyne result_amount = 3 - required_reagents = list(/datum/reagent/drink/tonic = 1, /datum/reagent/kois = 1, /datum/reagent/drink/toothpaste = 1) + required_reagents = list(/decl/reagent/drink/tonic = 1, /decl/reagent/kois = 1, /decl/reagent/drink/toothpaste = 1) /datum/chemical_reaction/adhomai_milk name = "Fermented Fatshouters Milk" id = "adhomai_milk" - result = /datum/reagent/drink/milk/adhomai/fermented - required_reagents = list(/datum/reagent/drink/milk/adhomai = 1) - catalysts = list(/datum/reagent/enzyme = 5) + result = /decl/reagent/drink/milk/adhomai/fermented + required_reagents = list(/decl/reagent/drink/milk/adhomai = 1) + catalysts = list(/decl/reagent/enzyme = 5) result_amount = 1 // Synnono Meme Drinks @@ -2787,184 +2565,184 @@ /datum/chemical_reaction/drink/badtouch name = "Bad Touch" id = "badtouch" - result = /datum/reagent/alcohol/ethanol/badtouch - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 2, /datum/reagent/alcohol/ethanol/rum = 2, /datum/reagent/alcohol/ethanol/absinthe = 1, /datum/reagent/drink/lemon_lime = 1) + result = /decl/reagent/alcohol/badtouch + required_reagents = list(/decl/reagent/alcohol/vodka = 2, /decl/reagent/alcohol/rum = 2, /decl/reagent/alcohol/absinthe = 1, /decl/reagent/drink/lemon_lime = 1) result_amount = 6 /datum/chemical_reaction/drink/bluelagoon name = "Blue Lagoon" id = "bluelagooon" - result = /datum/reagent/alcohol/ethanol/bluelagoon - required_reagents = list(/datum/reagent/drink/lemonade = 3, /datum/reagent/alcohol/ethanol/vodka = 1, /datum/reagent/alcohol/ethanol/bluecuracao = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/bluelagoon + required_reagents = list(/decl/reagent/drink/lemonade = 3, /decl/reagent/alcohol/vodka = 1, /decl/reagent/alcohol/bluecuracao = 1, /decl/reagent/drink/ice = 1) result_amount = 6 /datum/chemical_reaction/cherrytreefireball name = "Cherry Tree Fireball" id = "cherrytreefireball" - result = /datum/reagent/alcohol/ethanol/cherrytreefireball - required_reagents = list(/datum/reagent/drink/lemonade = 3, /datum/reagent/alcohol/ethanol/fireball = 1, /datum/reagent/nutriment/cherryjelly = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/cherrytreefireball + required_reagents = list(/decl/reagent/drink/lemonade = 3, /decl/reagent/alcohol/fireball = 1, /decl/reagent/nutriment/cherryjelly = 1, /decl/reagent/drink/ice = 1) result_amount = 6 /datum/chemical_reaction/drink/cobaltvelvet name = "Cobalt Velvet" id = "cobaltvelvet" - result = /datum/reagent/alcohol/ethanol/cobaltvelvet - required_reagents = list(/datum/reagent/alcohol/ethanol/champagne = 3, /datum/reagent/alcohol/ethanol/bluecuracao = 2, /datum/reagent/drink/space_cola = 1) + result = /decl/reagent/alcohol/cobaltvelvet + required_reagents = list(/decl/reagent/alcohol/champagne = 3, /decl/reagent/alcohol/bluecuracao = 2, /decl/reagent/drink/space_cola = 1) result_amount = 6 /datum/chemical_reaction/drink/fringeweaver name = "Fringe Weaver" id = "fringeweaver" - result = /datum/reagent/alcohol/ethanol/fringeweaver - required_reagents = list(/datum/reagent/alcohol/ethanol = 2, /datum/reagent/sugar = 1) + result = /decl/reagent/alcohol/fringeweaver + required_reagents = list(/decl/reagent/alcohol = 2, /decl/reagent/sugar = 1) result_amount = 3 /datum/chemical_reaction/drink/junglejuice name = "Jungle Juice" id = "junglejuice" - result = /datum/reagent/alcohol/ethanol/junglejuice - required_reagents = list(/datum/reagent/drink/lemonjuice = 1, /datum/reagent/drink/orangejuice = 1, /datum/reagent/drink/lemon_lime = 1, /datum/reagent/alcohol/ethanol/vodka = 1, /datum/reagent/alcohol/ethanol/rum = 1) + result = /decl/reagent/alcohol/junglejuice + required_reagents = list(/decl/reagent/drink/lemonjuice = 1, /decl/reagent/drink/orangejuice = 1, /decl/reagent/drink/lemon_lime = 1, /decl/reagent/alcohol/vodka = 1, /decl/reagent/alcohol/rum = 1) result_amount = 5 /datum/chemical_reaction/drink/marsarita name = "Marsarita" id = "marsarita" - result = /datum/reagent/alcohol/ethanol/marsarita - required_reagents = list(/datum/reagent/alcohol/ethanol/margarita = 4, /datum/reagent/alcohol/ethanol/bluecuracao = 1, /datum/reagent/capsaicin = 1) + result = /decl/reagent/alcohol/marsarita + required_reagents = list(/decl/reagent/alcohol/margarita = 4, /decl/reagent/alcohol/bluecuracao = 1, /decl/reagent/capsaicin = 1) result_amount = 6 /datum/chemical_reaction/drink/meloncooler name = "Melon Cooler" id = "meloncooler" - result = /datum/reagent/drink/meloncooler - required_reagents = list(/datum/reagent/drink/watermelonjuice = 2, /datum/reagent/drink/sodawater = 2, /datum/reagent/drink/mintsyrup = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/drink/meloncooler + required_reagents = list(/decl/reagent/drink/watermelonjuice = 2, /decl/reagent/drink/sodawater = 2, /decl/reagent/drink/mintsyrup = 1, /decl/reagent/drink/ice = 1) result_amount = 6 /datum/chemical_reaction/drink/midnightkiss name = "Midnight Kiss" id = "midnightkiss" - result = /datum/reagent/alcohol/ethanol/midnightkiss - required_reagents = list(/datum/reagent/alcohol/ethanol/champagne = 3, /datum/reagent/alcohol/ethanol/vodka = 1, /datum/reagent/alcohol/ethanol/bluecuracao = 1) + result = /decl/reagent/alcohol/midnightkiss + required_reagents = list(/decl/reagent/alcohol/champagne = 3, /decl/reagent/alcohol/vodka = 1, /decl/reagent/alcohol/bluecuracao = 1) result_amount = 5 /datum/chemical_reaction/drink/millionairesour name = "Millionaire Sour" id = "millionairesour" - result = /datum/reagent/drink/millionairesour - required_reagents = list(/datum/reagent/drink/spacemountainwind = 3, /datum/reagent/drink/grenadine = 1, /datum/reagent/drink/limejuice = 1) + result = /decl/reagent/drink/millionairesour + required_reagents = list(/decl/reagent/drink/spacemountainwind = 3, /decl/reagent/drink/grenadine = 1, /decl/reagent/drink/limejuice = 1) result_amount = 5 /datum/chemical_reaction/drink/olympusmons name = "Olympus Mons" id = "olympusmons" - result = /datum/reagent/alcohol/ethanol/olympusmons - required_reagents = list(/datum/reagent/alcohol/ethanol/blackrussian = 1, /datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/alcohol/ethanol/rum = 1) + result = /decl/reagent/alcohol/olympusmons + required_reagents = list(/decl/reagent/alcohol/blackrussian = 1, /decl/reagent/alcohol/whiskey = 1, /decl/reagent/alcohol/rum = 1) result_amount = 3 /datum/chemical_reaction/drink/europanail name = "Europa Nail" id = "europanail" - result = /datum/reagent/alcohol/ethanol/europanail - required_reagents = list(/datum/reagent/alcohol/ethanol/rustynail = 2, /datum/reagent/alcohol/ethanol/coffee/kahlua = 2, /datum/reagent/drink/milk/cream = 2) + result = /decl/reagent/alcohol/europanail + required_reagents = list(/decl/reagent/alcohol/rustynail = 2, /decl/reagent/alcohol/coffee/kahlua = 2, /decl/reagent/drink/milk/cream = 2) result_amount = 6 /datum/chemical_reaction/drink/portsvilleminttea name = "Portsville Mint Tea" id = "portsvilleminttea" - result = /datum/reagent/drink/tea/portsvilleminttea - required_reagents = list(/datum/reagent/drink/icetea = 3, /datum/reagent/drink/berryjuice = 1, /datum/reagent/drink/mintsyrup = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/drink/tea/portsvilleminttea + required_reagents = list(/decl/reagent/drink/icetea = 3, /decl/reagent/drink/berryjuice = 1, /decl/reagent/drink/mintsyrup = 1, /decl/reagent/sugar = 1) result_amount = 6 /datum/chemical_reaction/drink/shirleytemple name = "Shirley Temple" id = "shirleytemple" - result = /datum/reagent/drink/shirleytemple - required_reagents = list(/datum/reagent/drink/spaceup = 4, /datum/reagent/drink/grenadine = 2) + result = /decl/reagent/drink/shirleytemple + required_reagents = list(/decl/reagent/drink/spaceup = 4, /decl/reagent/drink/grenadine = 2) result_amount = 6 /datum/chemical_reaction/drink/sugarrush name = "Sugar Rush" id = "sugarrush" - result = /datum/reagent/alcohol/ethanol/sugarrush - required_reagents = list(/datum/reagent/drink/brownstar = 4, /datum/reagent/drink/grenadine = 1, /datum/reagent/alcohol/ethanol/vodka = 1) + result = /decl/reagent/alcohol/sugarrush + required_reagents = list(/decl/reagent/drink/brownstar = 4, /decl/reagent/drink/grenadine = 1, /decl/reagent/alcohol/vodka = 1) result_amount = 6 /datum/chemical_reaction/drink/sangria name = "Sangria" id = "sangria" - result = /datum/reagent/alcohol/ethanol/sangria - required_reagents = list(/datum/reagent/alcohol/ethanol/wine = 3, /datum/reagent/drink/orangejuice = 1, /datum/reagent/drink/lemonjuice = 1, /datum/reagent/alcohol/ethanol/brandy = 1) + result = /decl/reagent/alcohol/sangria + required_reagents = list(/decl/reagent/alcohol/wine = 3, /decl/reagent/drink/orangejuice = 1, /decl/reagent/drink/lemonjuice = 1, /decl/reagent/alcohol/brandy = 1) result_amount = 6 /datum/chemical_reaction/drink/bassline name = "Bassline" id = "bassline" - result = /datum/reagent/alcohol/ethanol/bassline - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 2, /datum/reagent/alcohol/ethanol/bluecuracao = 1, /datum/reagent/drink/limejuice = 1, /datum/reagent/drink/grapejuice = 2) + result = /decl/reagent/alcohol/bassline + required_reagents = list(/decl/reagent/alcohol/vodka = 2, /decl/reagent/alcohol/bluecuracao = 1, /decl/reagent/drink/limejuice = 1, /decl/reagent/drink/grapejuice = 2) result_amount = 6 /datum/chemical_reaction/drink/bluebird name = "Bluebird" id = "bluebird" - result = /datum/reagent/alcohol/ethanol/bluebird - required_reagents = list(/datum/reagent/alcohol/ethanol/gintonic = 3, /datum/reagent/alcohol/ethanol/bluecuracao = 1) + result = /decl/reagent/alcohol/bluebird + required_reagents = list(/decl/reagent/alcohol/gintonic = 3, /decl/reagent/alcohol/bluecuracao = 1) result_amount = 4 //Snowflake drinks /datum/chemical_reaction/drink/dr_gibb_diet name = "Diet Dr. Gibb" id = "dr_gibb_diet" - result = /datum/reagent/drink/dr_gibb_diet - required_reagents = list(/datum/reagent/drink/dr_gibb = 1, /datum/reagent/water = 1) + result = /decl/reagent/drink/dr_gibb_diet + required_reagents = list(/decl/reagent/drink/dr_gibb = 1, /decl/reagent/water = 1) result_amount = 2 /datum/chemical_reaction/drink/dr_daniels name = "Dr. Daniels" id = "dr_daniels" - result = /datum/reagent/alcohol/ethanol/drdaniels - required_reagents = list(/datum/reagent/drink/dr_gibb_diet = 3, /datum/reagent/alcohol/ethanol/whiskey = 1, /datum/reagent/nutriment/honey = 1) + result = /decl/reagent/alcohol/drdaniels + required_reagents = list(/decl/reagent/drink/dr_gibb_diet = 3, /decl/reagent/alcohol/whiskey = 1, /decl/reagent/nutriment/honey = 1) result_amount = 5 /datum/chemical_reaction/drink/meatshake name = "Meatshake" id = "meatshake" - result = /datum/reagent/drink/meatshake - required_reagents = list(/datum/reagent/drink/milk/cream = 1, /datum/reagent/nutriment/protein = 1,/datum/reagent/water = 1) + result = /decl/reagent/drink/meatshake + required_reagents = list(/decl/reagent/drink/milk/cream = 1, /decl/reagent/nutriment/protein = 1,/decl/reagent/water = 1) result_amount = 3 /datum/chemical_reaction/drink/crocodile_booze name = "Crocodile Guwan" id = "crocodile_booze" - result = /datum/reagent/alcohol/butanol/crocodile_booze - required_reagents = list(/datum/reagent/alcohol/butanol/sarezhiwine = 5, /datum/reagent/toxin = 1) + result = /decl/reagent/alcohol/butanol/crocodile_booze + required_reagents = list(/decl/reagent/alcohol/butanol/sarezhiwine = 5, /decl/reagent/toxin = 1) result_amount = 6 /datum/chemical_reaction/drink/messa_mead name = "Messa's Mead" id = "messa_mead" - result = /datum/reagent/alcohol/ethanol/messa_mead - required_reagents = list(/datum/reagent/nutriment/honey = 1, /datum/reagent/drink/earthenrootjuice = 1) + result = /decl/reagent/alcohol/messa_mead + required_reagents = list(/decl/reagent/nutriment/honey = 1, /decl/reagent/drink/earthenrootjuice = 1) result_amount = 2 /datum/chemical_reaction/drink/winter_offensive name = "Winter Offensive" id = "winter_offensive" - result = /datum/reagent/alcohol/ethanol/winter_offensive - required_reagents = list(/datum/reagent/drink/ice = 1, /datum/reagent/alcohol/ethanol/victorygin = 1) + result = /decl/reagent/alcohol/winter_offensive + required_reagents = list(/decl/reagent/drink/ice = 1, /decl/reagent/alcohol/victorygin = 1) result_amount = 2 /datum/chemical_reaction/drink/mars_coffee name = "Martian Special" id = "mars_coffee" - result = /datum/reagent/drink/coffee/mars - required_reagents = list(/datum/reagent/drink/coffee = 4, /datum/reagent/blackpepper = 1) + result = /decl/reagent/drink/coffee/mars + required_reagents = list(/decl/reagent/drink/coffee = 4, /decl/reagent/blackpepper = 1) result_amount = 5 /datum/chemical_reaction/drink/mountain_marauder name = "Mountain Marauder" id = "mountain_marauder" - result = /datum/reagent/alcohol/ethanol/mountain_marauder - required_reagents = list(/datum/reagent/drink/milk/adhomai/fermented = 1, /datum/reagent/alcohol/ethanol/victorygin = 1) + result = /decl/reagent/alcohol/mountain_marauder + required_reagents = list(/decl/reagent/drink/milk/adhomai/fermented = 1, /decl/reagent/alcohol/victorygin = 1) result_amount = 2 //Kaed's Unathi cocktails @@ -2973,135 +2751,135 @@ /datum/chemical_reaction/drink/moghesmargarita name = "Moghes Margarita" id = "moghesmargarita" - result = /datum/reagent/alcohol/butanol/moghesmargarita - required_reagents = list(/datum/reagent/alcohol/butanol/xuizijuice = 2, /datum/reagent/drink/limejuice = 3) + result = /decl/reagent/alcohol/butanol/moghesmargarita + required_reagents = list(/decl/reagent/alcohol/butanol/xuizijuice = 2, /decl/reagent/drink/limejuice = 3) result_amount = 5 /datum/chemical_reaction/drink/bahamalizard name = "Bahama Lizard" id = "bahamalizard" - result = /datum/reagent/alcohol/butanol/bahamalizard - required_reagents = list(/datum/reagent/alcohol/butanol/xuizijuice = 2, /datum/reagent/drink/lemonjuice = 2, /datum/reagent/drink/milk/cream = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/butanol/bahamalizard + required_reagents = list(/decl/reagent/alcohol/butanol/xuizijuice = 2, /decl/reagent/drink/lemonjuice = 2, /decl/reagent/drink/milk/cream = 1, /decl/reagent/drink/ice = 1) result_amount = 6 /datum/chemical_reaction/drink/cactuscreme name = "Cactus Creme" id = "cactuscreme" - result = /datum/reagent/alcohol/butanol/cactuscreme - required_reagents = list(/datum/reagent/drink/berryjuice = 2, /datum/reagent/drink/milk/cream = 1, /datum/reagent/alcohol/butanol/xuizijuice = 2) + result = /decl/reagent/alcohol/butanol/cactuscreme + required_reagents = list(/decl/reagent/drink/berryjuice = 2, /decl/reagent/drink/milk/cream = 1, /decl/reagent/alcohol/butanol/xuizijuice = 2) result_amount = 5 /datum/chemical_reaction/drink/lizardplegm name = "Lizard Phlegm" id = "lizardphlegm" - result = /datum/reagent/alcohol/butanol/lizardphlegm - required_reagents = list(/datum/reagent/drink/milk/cream = 2, /datum/reagent/drink/banana = 1, /datum/reagent/alcohol/butanol/xuizijuice = 1, /datum/reagent/drink/watermelonjuice = 1) + result = /decl/reagent/alcohol/butanol/lizardphlegm + required_reagents = list(/decl/reagent/drink/milk/cream = 2, /decl/reagent/drink/banana = 1, /decl/reagent/alcohol/butanol/xuizijuice = 1, /decl/reagent/drink/watermelonjuice = 1) result_amount = 5 /datum/chemical_reaction/drink/cactustea name = "Cactus Tea" id = "cactustea" - result = /datum/reagent/alcohol/butanol/cactustea - required_reagents = list(/datum/reagent/drink/icetea = 1, /datum/reagent/alcohol/butanol/xuizijuice = 1) + result = /decl/reagent/alcohol/butanol/cactustea + required_reagents = list(/decl/reagent/drink/icetea = 1, /decl/reagent/alcohol/butanol/xuizijuice = 1) result_amount = 2 /datum/chemical_reaction/drink/moghespolitan name = "Moghespolitan" id = "moghespolitan" - result = /datum/reagent/alcohol/butanol/moghespolitan - required_reagents = list(/datum/reagent/alcohol/butanol/sarezhiwine = 2, /datum/reagent/alcohol/butanol/xuizijuice = 1, /datum/reagent/drink/grenadine = 5) + result = /decl/reagent/alcohol/butanol/moghespolitan + required_reagents = list(/decl/reagent/alcohol/butanol/sarezhiwine = 2, /decl/reagent/alcohol/butanol/xuizijuice = 1, /decl/reagent/drink/grenadine = 5) result_amount = 5 /datum/chemical_reaction/drink/wastelandheat name = "Wasteland Heat" id = "wastelandheat" - result = /datum/reagent/alcohol/butanol/wastelandheat - required_reagents = list(/datum/reagent/alcohol/butanol/xuizijuice = 10, /datum/reagent/capsaicin = 3) + result = /decl/reagent/alcohol/butanol/wastelandheat + required_reagents = list(/decl/reagent/alcohol/butanol/xuizijuice = 10, /decl/reagent/capsaicin = 3) result_amount = 10 /datum/chemical_reaction/drink/sandgria name = "Sandgria" id = "sandgria" - result = /datum/reagent/alcohol/butanol/sandgria - required_reagents = list(/datum/reagent/alcohol/butanol/sarezhiwine = 3, /datum/reagent/drink/orangejuice = 1, /datum/reagent/drink/lemonjuice = 1, /datum/reagent/alcohol/butanol/xuizijuice = 1) + result = /decl/reagent/alcohol/butanol/sandgria + required_reagents = list(/decl/reagent/alcohol/butanol/sarezhiwine = 3, /decl/reagent/drink/orangejuice = 1, /decl/reagent/drink/lemonjuice = 1, /decl/reagent/alcohol/butanol/xuizijuice = 1) result_amount = 6 /datum/chemical_reaction/drink/contactwine name = "Contact Wine" id = "contactwine" - result = /datum/reagent/alcohol/butanol/contactwine - required_reagents = list(/datum/reagent/alcohol/butanol/xuizijuice = 5, /datum/reagent/radium = 1, /datum/reagent/alcohol/butanol/sarezhiwine = 5) + result = /decl/reagent/alcohol/butanol/contactwine + required_reagents = list(/decl/reagent/alcohol/butanol/xuizijuice = 5, /decl/reagent/radium = 1, /decl/reagent/alcohol/butanol/sarezhiwine = 5) result_amount = 10 /datum/chemical_reaction/drink/hereticblood name = "Heretics' Blood" id = "hereticblood" - result = /datum/reagent/alcohol/butanol/hereticblood - required_reagents = list(/datum/reagent/alcohol/butanol/xuizijuice = 3, /datum/reagent/drink/spacemountainwind = 1, /datum/reagent/blood = 1, /datum/reagent/drink/dr_gibb = 1) + result = /decl/reagent/alcohol/butanol/hereticblood + required_reagents = list(/decl/reagent/alcohol/butanol/xuizijuice = 3, /decl/reagent/drink/spacemountainwind = 1, /decl/reagent/blood = 1, /decl/reagent/drink/dr_gibb = 1) result_amount = 6 /datum/chemical_reaction/drink/sandpit name = "Sandpit" id = "sandpit" - result = /datum/reagent/alcohol/butanol/sandpit - required_reagents = list(/datum/reagent/alcohol/butanol/xuizijuice = 2, /datum/reagent/drink/orangejuice = 2) + result = /decl/reagent/alcohol/butanol/sandpit + required_reagents = list(/decl/reagent/alcohol/butanol/xuizijuice = 2, /decl/reagent/drink/orangejuice = 2) result_amount = 4 /datum/chemical_reaction/drink/cactuscola name = "Cactus Cola" id = "cactuscola" - result = /datum/reagent/alcohol/butanol/cactuscola - required_reagents = list(/datum/reagent/alcohol/butanol/xuizijuice = 2, /datum/reagent/drink/space_cola = 2, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/butanol/cactuscola + required_reagents = list(/decl/reagent/alcohol/butanol/xuizijuice = 2, /decl/reagent/drink/space_cola = 2, /decl/reagent/drink/ice = 1) result_amount = 5 /datum/chemical_reaction/drink/bloodwine name = "Bloodwine" id = "bloodwine" - result = /datum/reagent/alcohol/butanol/bloodwine - required_reagents = list(/datum/reagent/blood = 2, /datum/reagent/alcohol/butanol/sarezhiwine = 3) + result = /decl/reagent/alcohol/butanol/bloodwine + required_reagents = list(/decl/reagent/blood = 2, /decl/reagent/alcohol/butanol/sarezhiwine = 3) result_amount = 5 /datum/chemical_reaction/pumpkinspice name = "Pumpkin Spice" id = "pumpkinspce" - result = /datum/reagent/spacespice/pumpkinspice + result = /decl/reagent/spacespice/pumpkinspice mix_message = "The spice brightens up." - required_reagents = list(/datum/reagent/spacespice = 8, /datum/reagent/nutriment/pumpkinpulp = 2) + required_reagents = list(/decl/reagent/spacespice = 8, /decl/reagent/nutriment/pumpkinpulp = 2) result_amount = 10 /datum/chemical_reaction/drink/psfrappe name = "Pumpkin Spice Frappe" id = "psfrappe" - result = /datum/reagent/drink/coffee/icecoffee/psfrappe - required_reagents = list(/datum/reagent/drink/coffee/icecoffee = 6, /datum/reagent/drink/syrup_pumpkin = 2, /datum/reagent/drink/milk/cream = 2) + result = /decl/reagent/drink/coffee/icecoffee/psfrappe + required_reagents = list(/decl/reagent/drink/coffee/icecoffee = 6, /decl/reagent/drink/syrup_pumpkin = 2, /decl/reagent/drink/milk/cream = 2) result_amount = 10 /datum/chemical_reaction/drink/pslatte name = "Pumpkin Spice Latte" id = "pslatte" - result = /datum/reagent/drink/coffee/latte/pumpkinspice - required_reagents = list(/datum/reagent/drink/coffee = 6, /datum/reagent/drink/syrup_pumpkin = 2, /datum/reagent/drink/milk/cream = 2) + result = /decl/reagent/drink/coffee/latte/pumpkinspice + required_reagents = list(/decl/reagent/drink/coffee = 6, /decl/reagent/drink/syrup_pumpkin = 2, /decl/reagent/drink/milk/cream = 2) result_amount = 10 /datum/chemical_reaction/drink/caramel_latte name = "Caramel latte" id = "caramellatte" - result = /datum/reagent/drink/coffee/latte/caramel - required_reagents = list(/datum/reagent/drink/coffee/latte = 4, /datum/reagent/drink/syrup_caramel = 1) + result = /decl/reagent/drink/coffee/latte/caramel + required_reagents = list(/decl/reagent/drink/coffee/latte = 4, /decl/reagent/drink/syrup_caramel = 1) result_amount = 5 /datum/chemical_reaction/drink/mocha_latte name = "Mocha latte" id = "mochalatte" - result = /datum/reagent/drink/coffee/latte/mocha - required_reagents = list(/datum/reagent/drink/coffee/latte = 4, /datum/reagent/drink/syrup_chocolate = 1) + result = /decl/reagent/drink/coffee/latte/mocha + required_reagents = list(/decl/reagent/drink/coffee/latte = 4, /decl/reagent/drink/syrup_chocolate = 1) result_amount = 5 /datum/chemical_reaction/drink/vanilla_latte name = "Vanilla latte" id = "vanillalatte" - result = /datum/reagent/drink/coffee/latte/vanilla - required_reagents = list(/datum/reagent/drink/coffee/latte = 4, /datum/reagent/drink/syrup_vanilla = 1) + result = /decl/reagent/drink/coffee/latte/vanilla + required_reagents = list(/decl/reagent/drink/coffee/latte = 4, /decl/reagent/drink/syrup_vanilla = 1) result_amount = 5 //Skrell drinks. Bring forth the culture. @@ -3110,71 +2888,71 @@ /datum/chemical_reaction/drink/thirdincident name = "The Third Incident" id = "thirdincident" - result = /datum/reagent/alcohol/ethanol/thirdincident - required_reagents = list(/datum/reagent/nutriment/protein/egg = 3, /datum/reagent/alcohol/ethanol/bluecuracao = 10, /datum/reagent/drink/grapejuice = 10) + result = /decl/reagent/alcohol/thirdincident + required_reagents = list(/decl/reagent/nutriment/protein/egg = 3, /decl/reagent/alcohol/bluecuracao = 10, /decl/reagent/drink/grapejuice = 10) result_amount = 20 /datum/chemical_reaction/drink/upsidedowncup name = "Upside-Down Cup" id = "upsidedowncup" - result = /datum/reagent/drink/upsidedowncup - required_reagents = list(/datum/reagent/drink/dr_gibb = 3, /datum/reagent/drink/ice = 1, /datum/reagent/drink/lemonjuice = 1) + result = /decl/reagent/drink/upsidedowncup + required_reagents = list(/decl/reagent/drink/dr_gibb = 3, /decl/reagent/drink/ice = 1, /decl/reagent/drink/lemonjuice = 1) result_amount = 5 /datum/chemical_reaction/drink/cigarettelizard name = "Cigarette Lizard" id = "cigarettelizard" - result = /datum/reagent/drink/smokinglizard - required_reagents = list(/datum/reagent/drink/limejuice = 2, /datum/reagent/drink/sodawater = 2, /datum/reagent/drink/mintsyrup = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/drink/smokinglizard + required_reagents = list(/decl/reagent/drink/limejuice = 2, /decl/reagent/drink/sodawater = 2, /decl/reagent/drink/mintsyrup = 1, /decl/reagent/drink/ice = 1) result_amount = 6 /datum/chemical_reaction/drink/sromshine name = "Sromshine" id = "sromshine" - result = /datum/reagent/drink/coffee/sromshine - required_reagents = list(/datum/reagent/drink/coffee = 2, /datum/reagent/drink/orangejuice = 1) + result = /decl/reagent/drink/coffee/sromshine + required_reagents = list(/decl/reagent/drink/coffee = 2, /decl/reagent/drink/orangejuice = 1) result_amount = 3 /datum/chemical_reaction/drink/cbsc name = "Complex Bluespace Calculation" id = "cbsc" - result = /datum/reagent/alcohol/ethanol/cbsc - required_reagents = list(/datum/reagent/alcohol/ethanol/wine = 4, /datum/reagent/alcohol/ethanol/vodka = 2, /datum/reagent/drink/sodawater = 3, /datum/reagent/radium = 1 ) + result = /decl/reagent/alcohol/cbsc + required_reagents = list(/decl/reagent/alcohol/wine = 4, /decl/reagent/alcohol/vodka = 2, /decl/reagent/drink/sodawater = 3, /decl/reagent/radium = 1 ) result_amount = 10 /datum/chemical_reaction/drink/dynhot name = "Dyn Tea" id = "dynhot" - result = /datum/reagent/drink/dynjuice/hot - required_reagents = list(/datum/reagent/drink/dynjuice = 1, /datum/reagent/water = 4) + result = /decl/reagent/drink/dynjuice/hot + required_reagents = list(/decl/reagent/drink/dynjuice = 1, /decl/reagent/water = 4) result_amount = 5 /datum/chemical_reaction/drink/dyncold name = "Dyn Ice Tea" id = "dyncold" - result = /datum/reagent/drink/dynjuice/cold - required_reagents = list(/datum/reagent/drink/dynjuice = 1, /datum/reagent/drink/ice = 2, /datum/reagent/drink/sodawater = 2) + result = /decl/reagent/drink/dynjuice/cold + required_reagents = list(/decl/reagent/drink/dynjuice = 1, /decl/reagent/drink/ice = 2, /decl/reagent/drink/sodawater = 2) result_amount = 5 /datum/chemical_reaction/drink/algaesuprise name = "Pl'iuop Algae Surprise" id = "algaesuprise" - result = /datum/reagent/drink/algaesuprise - required_reagents = list(/datum/reagent/nutriment/virusfood = 2, /datum/reagent/drink/banana = 1) + result = /decl/reagent/drink/algaesuprise + required_reagents = list(/decl/reagent/nutriment/virusfood = 2, /decl/reagent/drink/banana = 1) result_amount = 3 /datum/chemical_reaction/drink/xrim name = "Xrim Garden" id = "xrim" - result = /datum/reagent/drink/xrim - required_reagents = list(/datum/reagent/nutriment/virusfood = 2, /datum/reagent/drink/watermelonjuice = 1, /datum/reagent/drink/orangejuice = 1, /datum/reagent/drink/limejuice = 1, /datum/reagent/drink/zorasoda/cthur = 1) + result = /decl/reagent/drink/xrim + required_reagents = list(/decl/reagent/nutriment/virusfood = 2, /decl/reagent/drink/watermelonjuice = 1, /decl/reagent/drink/orangejuice = 1, /decl/reagent/drink/limejuice = 1, /decl/reagent/drink/zorasoda/cthur = 1) result_amount = 6 /datum/chemical_reaction/drink/rixulin_sundae name = "Rixulin Sundae" id = "rixulin_sundae" - result = /datum/reagent/alcohol/ethanol/rixulin_sundae - required_reagents = list(/datum/reagent/nutriment/virusfood = 3, /datum/reagent/wulumunusha = 1, /datum/reagent/alcohol/ethanol/whitewine = 2) + result = /decl/reagent/alcohol/rixulin_sundae + required_reagents = list(/decl/reagent/nutriment/virusfood = 3, /decl/reagent/wulumunusha = 1, /decl/reagent/alcohol/whitewine = 2) result_amount = 6 //Tea and cider @@ -3183,226 +2961,226 @@ /datum/chemical_reaction/drink/cidercheap name = "Apple Cider Juice" id = "cidercheap" - result = /datum/reagent/drink/cidercheap - required_reagents = list(/datum/reagent/drink/applejuice = 2, /datum/reagent/sugar = 1, /datum/reagent/spacespice = 1) + result = /decl/reagent/drink/cidercheap + required_reagents = list(/decl/reagent/drink/applejuice = 2, /decl/reagent/sugar = 1, /decl/reagent/spacespice = 1) result_amount = 4 /datum/chemical_reaction/cinnamonapplewhiskey name = "Cinnamon Apple Whiskey" id = "cinnamonapplewhiskey" - result = /datum/reagent/alcohol/ethanol/cinnamonapplewhiskey - required_reagents = list(/datum/reagent/drink/ciderhot = 3, /datum/reagent/alcohol/ethanol/fireball = 1) + result = /decl/reagent/alcohol/cinnamonapplewhiskey + required_reagents = list(/decl/reagent/drink/ciderhot = 3, /decl/reagent/alcohol/fireball = 1) result_amount = 4 /datum/chemical_reaction/drink/chailatte name = "Chai Latte" id = "chailatte" - result = /datum/reagent/drink/tea/chaitealatte - required_reagents = list(/datum/reagent/drink/tea/chaitea = 1, /datum/reagent/drink/milk = 1) + result = /decl/reagent/drink/tea/chaitealatte + required_reagents = list(/decl/reagent/drink/tea/chaitea = 1, /decl/reagent/drink/milk = 1) result_amount = 2 /datum/chemical_reaction/drink/chailatte/soy id = "chailattesoy" - required_reagents = list(/datum/reagent/drink/tea/chaitea = 1, /datum/reagent/drink/milk/soymilk = 1) + required_reagents = list(/decl/reagent/drink/tea/chaitea = 1, /decl/reagent/drink/milk/soymilk = 1) /datum/chemical_reaction/drink/coco_chaitea name = "Chocolate Chai" id = "coco_chaitea" - result = /datum/reagent/drink/tea/coco_chaitea - required_reagents = list(/datum/reagent/drink/tea/chaitea = 2, /datum/reagent/nutriment/coco = 1) + result = /decl/reagent/drink/tea/coco_chaitea + required_reagents = list(/decl/reagent/drink/tea/chaitea = 2, /decl/reagent/nutriment/coco = 1) result_amount = 3 /datum/chemical_reaction/drink/coco_chailatte name = "Chocolate Chai Latte" id = "coco_chailatte" - result = /datum/reagent/drink/tea/coco_chailatte - required_reagents = list(/datum/reagent/drink/tea/coco_chaitea = 1, /datum/reagent/drink/milk = 1) + result = /decl/reagent/drink/tea/coco_chailatte + required_reagents = list(/decl/reagent/drink/tea/coco_chaitea = 1, /decl/reagent/drink/milk = 1) result_amount = 2 /datum/chemical_reaction/drink/coco_chailatte/soy id = "coco_chailatte_soy" - required_reagents = list(/datum/reagent/drink/tea/coco_chaitea = 1, /datum/reagent/drink/milk/soymilk = 1) + required_reagents = list(/decl/reagent/drink/tea/coco_chaitea = 1, /decl/reagent/drink/milk/soymilk = 1) /datum/chemical_reaction/drink/cofftea name = "Cofftea" id = "cofftea" - result = /datum/reagent/drink/tea/cofftea - required_reagents = list(/datum/reagent/drink/tea = 1, /datum/reagent/drink/coffee = 1) + result = /decl/reagent/drink/tea/cofftea + required_reagents = list(/decl/reagent/drink/tea = 1, /decl/reagent/drink/coffee = 1) result_amount = 2 /datum/chemical_reaction/drink/bureacratea name = "Bureacratea" id = "bureacratea" - result = /datum/reagent/drink/tea/bureacratea - required_reagents = list(/datum/reagent/drink/tea = 1, /datum/reagent/drink/coffee/espresso = 1) + result = /decl/reagent/drink/tea/bureacratea + required_reagents = list(/decl/reagent/drink/tea = 1, /decl/reagent/drink/coffee/espresso = 1) result_amount = 2 /datum/chemical_reaction/drink/desert_tea name = "Desert Blossom Tea" id = "desert_tea" - result = /datum/reagent/drink/tea/desert_tea - required_reagents = list(/datum/reagent/drink/tea/greentea = 2, /datum/reagent/alcohol/butanol/xuizijuice = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/drink/tea/desert_tea + required_reagents = list(/decl/reagent/drink/tea/greentea = 2, /decl/reagent/alcohol/butanol/xuizijuice = 1, /decl/reagent/sugar = 1) result_amount = 4 /datum/chemical_reaction/drink/halfandhalf name = "Half and Half" id = "halfandhalf" - result = /datum/reagent/drink/tea/halfandhalf - required_reagents = list(/datum/reagent/drink/icetea = 1, /datum/reagent/drink/lemonade = 1) + result = /decl/reagent/drink/tea/halfandhalf + required_reagents = list(/decl/reagent/drink/icetea = 1, /decl/reagent/drink/lemonade = 1) result_amount = 2 /datum/chemical_reaction/drink/heretic_tea name = "Heretics Tea" id = "heretic_tea" - result = /datum/reagent/drink/tea/heretic_tea - required_reagents = list(/datum/reagent/drink/icetea = 3, /datum/reagent/blood = 1, /datum/reagent/drink/spacemountainwind = 1, /datum/reagent/drink/dr_gibb = 1) + result = /decl/reagent/drink/tea/heretic_tea + required_reagents = list(/decl/reagent/drink/icetea = 3, /decl/reagent/blood = 1, /decl/reagent/drink/spacemountainwind = 1, /decl/reagent/drink/dr_gibb = 1) result_amount = 6 /datum/chemical_reaction/drink/kira_tea name = "Kira tea" id = "kira_tea" - result = /datum/reagent/drink/tea/kira_tea - required_reagents = list(/datum/reagent/drink/icetea = 1, /datum/reagent/drink/kiraspecial = 1) + result = /decl/reagent/drink/tea/kira_tea + required_reagents = list(/decl/reagent/drink/icetea = 1, /decl/reagent/drink/kiraspecial = 1) result_amount = 2 /datum/chemical_reaction/drink/librarian_special name = "Librarian Special" id = "librarian_special" - result = /datum/reagent/drink/tea/librarian_special - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/drink/nothing = 1) + result = /decl/reagent/drink/tea/librarian_special + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/drink/nothing = 1) result_amount = 3 /datum/chemical_reaction/drink/mars_tea name = "Martian Tea" id = "mars_tea" - result = /datum/reagent/drink/tea/mars_tea - required_reagents = list(/datum/reagent/drink/tea = 4, /datum/reagent/blackpepper = 1) + result = /decl/reagent/drink/tea/mars_tea + required_reagents = list(/decl/reagent/drink/tea = 4, /decl/reagent/blackpepper = 1) result_amount = 5 /datum/chemical_reaction/drink/mars_tea/green - required_reagents = list(/datum/reagent/drink/tea/greentea = 4, /datum/reagent/blackpepper = 1) + required_reagents = list(/decl/reagent/drink/tea/greentea = 4, /decl/reagent/blackpepper = 1) /datum/chemical_reaction/drink/mendell_tea name = "Mendell Afternoon Tea" id = "mendell_tea" - result = /datum/reagent/drink/tea/mendell_tea - required_reagents = list(/datum/reagent/drink/tea/greentea = 4, /datum/reagent/drink/mintsyrup = 1, /datum/reagent/drink/lemonjuice = 1) + result = /decl/reagent/drink/tea/mendell_tea + required_reagents = list(/decl/reagent/drink/tea/greentea = 4, /decl/reagent/drink/mintsyrup = 1, /decl/reagent/drink/lemonjuice = 1) result_amount = 6 /datum/chemical_reaction/drink/berry_tea name = "Mixed Berry Tea" id = "berry_tea" - result = /datum/reagent/drink/tea/berry_tea - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/drink/berryjuice = 1) + result = /decl/reagent/drink/tea/berry_tea + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/drink/berryjuice = 1) result_amount = 3 /datum/chemical_reaction/drink/berry_tea/green - required_reagents = list(/datum/reagent/drink/tea/greentea = 2, /datum/reagent/drink/berryjuice = 1) + required_reagents = list(/decl/reagent/drink/tea/greentea = 2, /decl/reagent/drink/berryjuice = 1) /datum/chemical_reaction/drink/pomegranate_icetea name = "Pomegranate Iced Tea" id = "pomegranate_icetea" - result = /datum/reagent/drink/tea/pomegranate_icetea - required_reagents = list(/datum/reagent/drink/icetea = 1, /datum/reagent/drink/grenadine = 1) + result = /decl/reagent/drink/tea/pomegranate_icetea + required_reagents = list(/decl/reagent/drink/icetea = 1, /decl/reagent/drink/grenadine = 1) result_amount = 2 /datum/chemical_reaction/drink/potatea name = "Potatea" id = "potatea" - result = /datum/reagent/drink/tea/potatea - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/drink/potatojuice = 1) + result = /decl/reagent/drink/tea/potatea + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/drink/potatojuice = 1) result_amount = 3 /datum/chemical_reaction/drink/securitea name = "Securitea" id = "securitea" - result = /datum/reagent/drink/tea/securitea - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/crayon_dust = 1) + result = /decl/reagent/drink/tea/securitea + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/crayon_dust = 1) result_amount = 3 /datum/chemical_reaction/drink/securitea/red id = "securitea_red" - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/crayon_dust/red = 1) + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/crayon_dust/red = 1) /datum/chemical_reaction/drink/securitea/orange id = "securitea_orange" - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/crayon_dust/orange = 1) + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/crayon_dust/orange = 1) /datum/chemical_reaction/drink/securitea/yellow id = "securitea_yellow" - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/crayon_dust/yellow = 1) + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/crayon_dust/yellow = 1) /datum/chemical_reaction/drink/securitea/green id = "securitea_green" - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/crayon_dust/green = 1) + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/crayon_dust/green = 1) /datum/chemical_reaction/drink/securitea/blue id = "securitea_blue" - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/crayon_dust/blue = 1) + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/crayon_dust/blue = 1) /datum/chemical_reaction/drink/securitea/purple id = "securitea_purple" - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/crayon_dust/purple = 1) + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/crayon_dust/purple = 1) /datum/chemical_reaction/drink/securitea/grey id = "securitea_grey" - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/crayon_dust/grey = 1) + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/crayon_dust/grey = 1) /datum/chemical_reaction/drink/securitea/brown id = "securitea_brown" - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/crayon_dust/brown = 1) + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/crayon_dust/brown = 1) /datum/chemical_reaction/drink/sleepytime_tea name = "Sleepytime Tea" id = "sleepytime_tea" - result = /datum/reagent/drink/tea/sleepytime_tea - required_reagents = list(/datum/reagent/drink/tea = 5, /datum/reagent/soporific = 1) + result = /decl/reagent/drink/tea/sleepytime_tea + required_reagents = list(/decl/reagent/drink/tea = 5, /decl/reagent/soporific = 1) result_amount = 6 /datum/chemical_reaction/drink/sleepytime_tea/green id = "sleepytime_greentea" - required_reagents = list(/datum/reagent/drink/tea/greentea = 5, /datum/reagent/soporific = 1) + required_reagents = list(/decl/reagent/drink/tea/greentea = 5, /decl/reagent/soporific = 1) /datum/chemical_reaction/drink/hakhma_tea name = "Spiced Hakhma Tea" id = "hakhma_tea" - result = /datum/reagent/drink/tea/hakhma_tea - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/drink/milk/beetle = 2, /datum/reagent/spacespice = 1) + result = /decl/reagent/drink/tea/hakhma_tea + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/drink/milk/beetle = 2, /decl/reagent/spacespice = 1) result_amount = 5 /datum/chemical_reaction/drink/sweet_tea name = "Sweet Tea" id = "sweet_tea" - result = /datum/reagent/drink/tea/sweet_tea - required_reagents = list(/datum/reagent/drink/icetea = 1, /datum/reagent/sugar = 1) + result = /decl/reagent/drink/tea/sweet_tea + required_reagents = list(/decl/reagent/drink/icetea = 1, /decl/reagent/sugar = 1) result_amount = 2 /datum/chemical_reaction/drink/teathpaste name = "Teathpaste" id = "teathpaste" - result = /datum/reagent/drink/toothpaste/teathpaste - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/drink/toothpaste = 1) + result = /decl/reagent/drink/toothpaste/teathpaste + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/drink/toothpaste = 1) result_amount = 3 /datum/chemical_reaction/drink/thewake name = "The Wake" id = "thewake" - result = /datum/reagent/drink/dynjuice/thewake - required_reagents = list(/datum/reagent/drink/dynjuice = 1, /datum/reagent/drink/orangejuice = 1, /datum/reagent/drink/tea = 1) + result = /decl/reagent/drink/dynjuice/thewake + required_reagents = list(/decl/reagent/drink/dynjuice = 1, /decl/reagent/drink/orangejuice = 1, /decl/reagent/drink/tea = 1) result_amount = 3 /datum/chemical_reaction/drink/tomatea name = "Tomatea" id = "tomatea" - result = /datum/reagent/drink/tea/tomatea - required_reagents = list(/datum/reagent/drink/tea = 2, /datum/reagent/drink/tomatojuice = 1) + result = /decl/reagent/drink/tea/tomatea + required_reagents = list(/decl/reagent/drink/tea = 2, /decl/reagent/drink/tomatojuice = 1) result_amount = 3 /datum/chemical_reaction/drink/trizkizki_tea name = "Trizkizki Tea" id = "trizkizki_tea" - result = /datum/reagent/alcohol/butanol/trizkizki_tea - required_reagents = list(/datum/reagent/drink/tea/greentea = 1, /datum/reagent/alcohol/butanol/sarezhiwine = 1, /datum/reagent/drink/grenadine = 1) + result = /decl/reagent/alcohol/butanol/trizkizki_tea + required_reagents = list(/decl/reagent/drink/tea/greentea = 1, /decl/reagent/alcohol/butanol/sarezhiwine = 1, /decl/reagent/drink/grenadine = 1) result_amount = 3 /datum/chemical_reaction/drink/tropical_icetea name = "Tropical Iced Tea" id = "tropical_icetea" - result = /datum/reagent/drink/tea/tropical_icetea - required_reagents = list(/datum/reagent/drink/icetea = 3, /datum/reagent/drink/limejuice = 1, /datum/reagent/drink/orangejuice = 1, /datum/reagent/drink/watermelonjuice = 1) + result = /decl/reagent/drink/tea/tropical_icetea + required_reagents = list(/decl/reagent/drink/icetea = 3, /decl/reagent/drink/limejuice = 1, /decl/reagent/drink/orangejuice = 1, /decl/reagent/drink/watermelonjuice = 1) result_amount = 6 //transmutation @@ -3411,8 +3189,8 @@ name = "Transmutation: Silver" id = "transmutation_silver" result = null - required_reagents = list(/datum/reagent/iron = 5, /datum/reagent/copper = 5) - catalysts = list(/datum/reagent/philosopher_stone = 1) + required_reagents = list(/decl/reagent/iron = 5, /decl/reagent/copper = 5) + catalysts = list(/decl/reagent/philosopher_stone = 1) result_amount = 1 /datum/chemical_reaction/transmutation_silver/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -3425,8 +3203,8 @@ name = "Transmutation: Gold" id = "transmutation_gold" result = null - required_reagents = list(/datum/reagent/aluminum = 5, MATERIAL_SILVER = 5) - catalysts = list(/datum/reagent/philosopher_stone = 1) + required_reagents = list(/decl/reagent/aluminum = 5, MATERIAL_SILVER = 5) + catalysts = list(/decl/reagent/philosopher_stone = 1) result_amount = 1 /datum/chemical_reaction/transmutation_gold/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -3439,8 +3217,8 @@ name = "Transmutation: Diamond" id = "transmutation_diamond" result = null - required_reagents = list(/datum/reagent/carbon = 5, MATERIAL_GOLD = 5) - catalysts = list(/datum/reagent/philosopher_stone = 1) + required_reagents = list(/decl/reagent/carbon = 5, MATERIAL_GOLD = 5) + catalysts = list(/decl/reagent/philosopher_stone = 1) result_amount = 1 /datum/chemical_reaction/transmutation_diamond/on_reaction(var/datum/reagents/holder, var/created_volume) @@ -3453,9 +3231,9 @@ /datum/chemical_reaction/water_to_ice name = "Water to Ice" id = "water_to_ice" - result = /datum/reagent/drink/ice - required_reagents = list(/datum/reagent/water = 1) - required_temperatures_max = list(/datum/reagent/water = T0C) + result = /decl/reagent/drink/ice + required_reagents = list(/decl/reagent/water = 1) + required_temperature_max = T0C result_amount = 1 mix_message = "The water freezes." reaction_sound = "" @@ -3463,36 +3241,26 @@ /datum/chemical_reaction/ice_to_water name = "Ice to Water" id = "ice_to_water" - result = /datum/reagent/water - required_reagents = list(/datum/reagent/drink/ice = 1) - required_temperatures_min = list(/datum/reagent/drink/ice = T0C + 25) // stop-gap fix to allow recipes requiring ice to be made without breaking the server with HALF_LIFE + result = /decl/reagent/water + required_reagents = list(/decl/reagent/drink/ice = 1) + required_temperature_min = T0C + 25 // stop-gap fix to allow recipes requiring ice to be made without breaking the server with HALF_LIFE result_amount = 1 mix_message = "The ice melts." reaction_sound = "" -/datum/chemical_reaction/phoron_salt - name = "Phoron Salt" - id = "phoron_salt" - result = /datum/reagent/toxin/phoron_salt - required_reagents = list(/datum/reagent/sodiumchloride = 1, /datum/reagent/toxin/phoron = 2) - required_temperatures_min = list(/datum/reagent/sodiumchloride = 678, /datum/reagent/toxin/phoron = 73) - required_temperatures_max = list(/datum/reagent/toxin/phoron = 261) - - result_amount = 1 - /datum/chemical_reaction/pyrosilicate name = "Pyrosilicate" id = "pyrosilicate" - result = /datum/reagent/pyrosilicate + result = /decl/reagent/pyrosilicate result_amount = 4 - required_reagents = list(/datum/reagent/silicate = 1, /datum/reagent/acid = 1, /datum/reagent/hydrazine = 1, /datum/reagent/iron = 1) + required_reagents = list(/decl/reagent/silicate = 1, /decl/reagent/acid = 1, /decl/reagent/hydrazine = 1, /decl/reagent/iron = 1) /datum/chemical_reaction/cryosurfactant name = "Cryosurfactant" id = "cryosurfactant" - result = /datum/reagent/cryosurfactant + result = /decl/reagent/cryosurfactant result_amount = 3 - required_reagents = list(/datum/reagent/surfactant = 1, /datum/reagent/drink/ice = 1, /datum/reagent/sodium = 1) + required_reagents = list(/decl/reagent/surfactant = 1, /decl/reagent/drink/ice = 1, /decl/reagent/sodium = 1) //WATER /datum/chemical_reaction/cryosurfactant_cooling_water @@ -3500,13 +3268,13 @@ id = "cryosurfactant_cooling_water" result = null result_amount = 1 - required_reagents = list(/datum/reagent/cryosurfactant = 1) - inhibitors = list(/datum/reagent/pyrosilicate = 1) - catalysts = list(/datum/reagent/water = 1) + required_reagents = list(/decl/reagent/cryosurfactant = 1) + inhibitors = list(/decl/reagent/pyrosilicate = 1) + catalysts = list(/decl/reagent/water = 1) mix_message = "The solution begins to freeze." /datum/chemical_reaction/cryosurfactant_cooling_water/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy) - holder.del_reagent(/datum/reagent/cryosurfactant) + holder.del_reagent(/decl/reagent/cryosurfactant) holder.add_thermal_energy(-created_volume*500) //ICE @@ -3515,13 +3283,13 @@ id = "cryosurfactant_cooling_ice" result = null result_amount = 1 - required_reagents = list(/datum/reagent/cryosurfactant = 1) - inhibitors = list(/datum/reagent/pyrosilicate = 1) - catalysts = list(/datum/reagent/drink/ice = 1) + required_reagents = list(/decl/reagent/cryosurfactant = 1) + inhibitors = list(/decl/reagent/pyrosilicate = 1) + catalysts = list(/decl/reagent/drink/ice = 1) mix_message = "The solution begins to freeze." /datum/chemical_reaction/cryosurfactant_cooling_ice/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy) - holder.del_reagent(/datum/reagent/cryosurfactant) + holder.del_reagent(/decl/reagent/cryosurfactant) holder.add_thermal_energy(-created_volume*500) /datum/chemical_reaction/pyrosilicate_heating @@ -3529,20 +3297,20 @@ id = "pyrosilicate_heating" result = null result_amount = 1 - required_reagents = list(/datum/reagent/pyrosilicate = 1) - inhibitors = list(/datum/reagent/cryosurfactant = 1) - catalysts = list(/datum/reagent/sodiumchloride = 1) + required_reagents = list(/decl/reagent/pyrosilicate = 1) + inhibitors = list(/decl/reagent/cryosurfactant = 1) + catalysts = list(/decl/reagent/sodiumchloride = 1) /datum/chemical_reaction/pyrosilicate_heating/on_reaction(var/datum/reagents/holder, var/created_volume) - holder.del_reagent(/datum/reagent/pyrosilicate) + holder.del_reagent(/decl/reagent/pyrosilicate) holder.add_thermal_energy(created_volume*1000) /datum/chemical_reaction/pyrosilicate_cryosurfactant name = "Pyrosilicate Cryosurfactant Reaction" id = "pyrosilicate_cryosurfactant" result = null - required_reagents = list(/datum/reagent/pyrosilicate = 1, /datum/reagent/cryosurfactant = 1) - required_temperatures_min = list(/datum/reagent/pyrosilicate = T0C, /datum/reagent/cryosurfactant = T0C) //Does not react when below these temperatures. + required_reagents = list(/decl/reagent/pyrosilicate = 1, /decl/reagent/cryosurfactant = 1) + required_temperature_min = T0C //Does not react when below these temperatures. result_amount = 1 /datum/chemical_reaction/pyrosilicate_cryosurfactant/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy) @@ -3551,225 +3319,167 @@ if(istype(T)) T.assume_gas(GAS_OXYGEN, created_volume*10, (created_thermal_energy/created_volume) ) -/datum/chemical_reaction/phoron_salt_fire - name = "Phoron Salt Fire" - id = "phoron_salt_fire" - result = null - result_amount = 1 - required_reagents = list(/datum/reagent/toxin/phoron_salt = 1) - required_temperatures_min = list(/datum/reagent/toxin/phoron_salt = 134) //If it's above this temperature, then cause hellfire. - mix_message = "The solution begins to vibrate!" - -/datum/chemical_reaction/phoron_salt_fire/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy) - var/turf/location = get_turf(holder.my_atom) - for(var/turf/simulated/floor/target_tile in range(0,location)) - target_tile.assume_gas(GAS_PHORON, created_volume*2, created_thermal_energy / 25) //2 because there is 2 phoron in 1u of phoron salts - addtimer(CALLBACK(target_tile, /turf/simulated/floor/.proc/hotspot_expose, 700, 400), 1) - holder.del_reagent(/datum/reagent/toxin/phoron_salt) - return - -/datum/chemical_reaction/phoron_salt_coldfire - name = "Phoron Salt Coldfire" - id = "phoron_salt_coldfire" - result = null - result_amount = 1 - required_reagents = list(/datum/reagent/toxin/phoron_salt = 1) - required_temperatures_max = list(/datum/reagent/toxin/phoron_salt = 113) //if it's below this temperature, then make a boom - mix_message = "The solution begins to shrink!" - -/datum/chemical_reaction/phoron_salt_coldfire/on_reaction(var/datum/reagents/holder, var/created_volume, var/created_thermal_energy) - var/turf/location = get_turf(holder.my_atom) - var/thermal_energy_mod = max(0,1 - (max(0,created_thermal_energy)/28000)) - var/volume_mod = min(1,created_volume/120) - var/explosion_mod = 3 + (thermal_energy_mod*volume_mod*320) - var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(explosion_mod, location, 0, 0) - e.start() - holder.del_reagent(/datum/reagent/toxin/phoron_salt) - return - -/datum/chemical_reaction/mutone - name = "Mutone" - id = "mutone" - result = /datum/reagent/mutone - result_amount = 1 - required_reagents = list(/datum/reagent/toxin/phoron_salt = 1, /datum/reagent/mutagen = 1) - -/datum/chemical_reaction/plexium - name = "Plexium" - id = "plexium" - result = /datum/reagent/plexium - result_amount = 1 - required_reagents = list(/datum/reagent/toxin/phoron_salt = 1, /datum/reagent/alkysine = 1) - -/datum/chemical_reaction/venenum - name = "Venenum" - id = "venenum" - result = /datum/reagent/venenum - result_amount = 1 - required_reagents = list(/datum/reagent/toxin/phoron_salt = 1, /datum/reagent/ryetalyn = 1) - /datum/chemical_reaction/rmt name = "RMT" id = "rmt" - result = /datum/reagent/rmt + result = /decl/reagent/rmt result_amount = 2 - required_reagents = list(/datum/reagent/potassium = 1, /datum/reagent/inaprovaline = 1) + required_reagents = list(/decl/reagent/potassium = 1, /decl/reagent/inaprovaline = 1) /datum/chemical_reaction/gunpowder name = "Gunpowder" id = "gunpowder" - result = /datum/reagent/gunpowder + result = /decl/reagent/gunpowder result_amount = 1 - required_reagents = list(/datum/reagent/sulfur = 1, /datum/reagent/carbon = 1, /datum/reagent/potassium = 1) + required_reagents = list(/decl/reagent/sulfur = 1, /decl/reagent/carbon = 1, /decl/reagent/potassium = 1) //Coffee expansion //======================= /datum/chemical_reaction/caramelisation name = "Caramelised Sugar" - result = /datum/reagent/nutriment/caramel - required_reagents = list(/datum/reagent/sugar = 1) + result = /decl/reagent/nutriment/caramel + required_reagents = list(/decl/reagent/sugar = 1) result_amount = 1 - required_temperatures_min = list(/datum/reagent/sugar = T0C + 82) // no maximum! i mean technically it should burn at some point but ehh + required_temperature_min = T0C + 82 // no maximum! i mean technically it should burn at some point but ehh mix_message = "The sugar melts into a sticky, brown liquid." /datum/chemical_reaction/caramelsauce name = "Caramel Sauce" id = "caramelsauce" - result = /datum/reagent/drink/caramel - required_reagents = list(/datum/reagent/nutriment/caramel = 2, /datum/reagent/drink/milk/cream = 1, /datum/reagent/drink/syrup_simple = 2) + result = /decl/reagent/drink/caramel + required_reagents = list(/decl/reagent/nutriment/caramel = 2, /decl/reagent/drink/milk/cream = 1, /decl/reagent/drink/syrup_simple = 2) result_amount = 5 mix_message = "The solution thickens into a glossy, brown sauce." - required_temperatures_max = list(/datum/reagent/nutriment/caramel = T0C + 82) // You don't want the syrup to crystallise/caramelise; that'd just make more caramel... + required_temperature_max = T0C + 82 // You don't want the syrup to crystallise/caramelise; that'd just make more caramel... /datum/chemical_reaction/simplesyrup name = "Simple Syrup" id = "simplesyrup" - result = /datum/reagent/drink/syrup_simple - required_reagents = list(/datum/reagent/sugar = 2, /datum/reagent/water = 2) // simple syrup, the sugar dissolves and doesn't change the volume too much + result = /decl/reagent/drink/syrup_simple + required_reagents = list(/decl/reagent/sugar = 2, /decl/reagent/water = 2) // simple syrup, the sugar dissolves and doesn't change the volume too much result_amount = 2 - required_temperatures_min = list(/datum/reagent/sugar = T0C + 30, /datum/reagent/water = T0C + 30) - required_temperatures_max = list(/datum/reagent/sugar = T0C + 82, /datum/reagent/water = T0C + 100) // Sugar caramelises after 82C, water boils at 100C. + required_temperature_min = T0C + 30 + required_temperature_max = T0C + 100 // Sugar caramelises after 82C, water boils at 100C. mix_message = "The sugar dissolves into the solution." /datum/chemical_reaction/caramelsyrup name = "Caramel Syrup" id = "caramelsyrup" - result = /datum/reagent/drink/syrup_caramel - required_reagents = list(/datum/reagent/nutriment/caramel = 2, /datum/reagent/drink/syrup_simple = 3) + result = /decl/reagent/drink/syrup_caramel + required_reagents = list(/decl/reagent/nutriment/caramel = 2, /decl/reagent/drink/syrup_simple = 3) result_amount = 5 mix_message = "The solution takes on a light brown hue and the aroma of caramel." /datum/chemical_reaction/chocosyrup name = "Chocolate Syrup" id = "chocolatesyrup" - result = /datum/reagent/drink/syrup_chocolate - required_reagents = list(/datum/reagent/nutriment/coco = 2, /datum/reagent/drink/syrup_simple = 3) + result = /decl/reagent/drink/syrup_chocolate + required_reagents = list(/decl/reagent/nutriment/coco = 2, /decl/reagent/drink/syrup_simple = 3) result_amount = 5 mix_message = "The solution takes on a brown hue and the aroma of chocolate." /datum/chemical_reaction/pumpkinsyrup name = "Pumpkin Spice Syrup" id = "pumpkinsyrup" - result = /datum/reagent/drink/syrup_pumpkin - required_reagents = list(/datum/reagent/spacespice/pumpkinspice = 2, /datum/reagent/drink/syrup_simple = 3) + result = /decl/reagent/drink/syrup_pumpkin + required_reagents = list(/decl/reagent/spacespice/pumpkinspice = 2, /decl/reagent/drink/syrup_simple = 3) result_amount = 5 mix_message = "The solution takes on an orange hue and the aroma of pumpkin spice." /datum/chemical_reaction/drink/cuba_libre name = "Cuba Libre" id = "cubalibre" - result = /datum/reagent/alcohol/ethanol/cubalibre - required_reagents = list(/datum/reagent/alcohol/ethanol/rumandcola = 2, /datum/reagent/drink/limejuice = 1) + result = /decl/reagent/alcohol/cubalibre + required_reagents = list(/decl/reagent/alcohol/rumandcola = 2, /decl/reagent/drink/limejuice = 1) result_amount = 3 /datum/chemical_reaction/drink/solarian_white name = "Solarian White" id = "solarian_white" - result = /datum/reagent/alcohol/ethanol/solarian_white - required_reagents = list(/datum/reagent/alcohol/ethanol/vodka = 1, /datum/reagent/drink/milk/cream = 1, /datum/reagent/drink/limejuice =1) + result = /decl/reagent/alcohol/solarian_white + required_reagents = list(/decl/reagent/alcohol/vodka = 1, /decl/reagent/drink/milk/cream = 1, /decl/reagent/drink/limejuice =1) result_amount = 3 /datum/chemical_reaction/drink/solarian_marine name = "Solarian Marine" id = "solarian_marine" - result = /datum/reagent/alcohol/ethanol/solarian_marine - required_reagents = list(/datum/reagent/drink/tea/securitea = 1, /datum/reagent/alcohol/ethanol/whiskey = 1) + result = /decl/reagent/alcohol/solarian_marine + required_reagents = list(/decl/reagent/drink/tea/securitea = 1, /decl/reagent/alcohol/whiskey = 1) result_amount = 2 /datum/chemical_reaction/drink/cloudyoran name = "Cloudy Oran" id = "cloudyoran" - result = /datum/reagent/alcohol/ethanol/cloudyoran - required_reagents = list(/datum/reagent/alcohol/ethanol/sake = 1, /datum/reagent/drink/tea/greentea = 1, /datum/reagent/drink/milk/soymilk = 1) + result = /decl/reagent/alcohol/cloudyoran + required_reagents = list(/decl/reagent/alcohol/sake = 1, /decl/reagent/drink/tea/greentea = 1, /decl/reagent/drink/milk/soymilk = 1) result_amount = 3 /datum/chemical_reaction/drink/djinntea name = "Djinn Tea" id = "djinntea" - result = /datum/reagent/alcohol/ethanol/djinntea - required_reagents = list(/datum/reagent/drink/dynjuice/cold = 1, /datum/reagent/alcohol/ethanol/gin = 1) + result = /decl/reagent/alcohol/djinntea + required_reagents = list(/decl/reagent/drink/dynjuice/cold = 1, /decl/reagent/alcohol/gin = 1) result_amount = 2 /datum/chemical_reaction/drink/permanent_revolution name = "Permanent Revolution" id = "permanent_revolution" - result = /datum/reagent/alcohol/ethanol/permanent_revolution - required_reagents = list(/datum/reagent/alcohol/ethanol/absinthe = 1, /datum/reagent/alcohol/ethanol/vodka/mushroom = 1) + result = /decl/reagent/alcohol/permanent_revolution + required_reagents = list(/decl/reagent/alcohol/absinthe = 1, /decl/reagent/alcohol/vodka/mushroom = 1) result_amount = 2 /datum/chemical_reaction/drink/internationale name = "Internationale" id = "internationale" - result = /datum/reagent/alcohol/ethanol/internationale - required_reagents = list(/datum/reagent/alcohol/ethanol/victorygin = 1, /datum/reagent/alcohol/ethanol/vodka/mushroom = 1) + result = /decl/reagent/alcohol/internationale + required_reagents = list(/decl/reagent/alcohol/victorygin = 1, /decl/reagent/alcohol/vodka/mushroom = 1) result_amount = 2 /datum/chemical_reaction/drink/diona_mama name = "Diona Mama" id = "diona_mama" - result = /datum/reagent/alcohol/ethanol/diona_mama - required_reagents = list(/datum/reagent/alcohol/ethanol/absinthe = 2, /datum/reagent/drink/limejuice = 2, /datum/reagent/radium = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/diona_mama + required_reagents = list(/decl/reagent/alcohol/absinthe = 2, /decl/reagent/drink/limejuice = 2, /decl/reagent/radium = 1, /decl/reagent/drink/ice = 1) result_amount = 6 /datum/chemical_reaction/drink/jovian_storm name = "Jovian Storm" id = "jovian_storm" - result = /datum/reagent/alcohol/ethanol/jovian_storm - required_reagents = list(/datum/reagent/alcohol/ethanol/rum = 2, /datum/reagent/drink/grenadine = 2, /datum/reagent/drink/lemonjuice = 1, /datum/reagent/drink/ice = 1) + result = /decl/reagent/alcohol/jovian_storm + required_reagents = list(/decl/reagent/alcohol/rum = 2, /decl/reagent/drink/grenadine = 2, /decl/reagent/drink/lemonjuice = 1, /decl/reagent/drink/ice = 1) result_amount = 6 /datum/chemical_reaction/drink/primeminister name = "Prime Minister" id = "primeminister" - result = /datum/reagent/alcohol/ethanol/primeminister - required_reagents = list(/datum/reagent/alcohol/ethanol/rum = 4, /datum/reagent/alcohol/ethanol/vermouth = 1, /datum/reagent/drink/grenadine = 1) + result = /decl/reagent/alcohol/primeminister + required_reagents = list(/decl/reagent/alcohol/rum = 4, /decl/reagent/alcohol/vermouth = 1, /decl/reagent/drink/grenadine = 1) result_amount = 6 /datum/chemical_reaction/drink/peacetreaty name = "Peace Treaty" id = "peacetreaty" - result = /datum/reagent/alcohol/ethanol/peacetreaty - required_reagents = list(/datum/reagent/alcohol/ethanol/victorygin = 1, /datum/reagent/alcohol/ethanol/messa_mead = 1, /datum/reagent/drink/lemonjuice = 1) + result = /decl/reagent/alcohol/peacetreaty + required_reagents = list(/decl/reagent/alcohol/victorygin = 1, /decl/reagent/alcohol/messa_mead = 1, /decl/reagent/drink/lemonjuice = 1) result_amount = 3 /datum/chemical_reaction/drink/fiscream name = "Fisanduhian Cream" id = "fiscream" - result = /datum/reagent/alcohol/ethanol/fiscream - required_reagents = list(/datum/reagent/alcohol/ethanol/fireball = 2, /datum/reagent/drink/milk/cream = 1) + result = /decl/reagent/alcohol/fiscream + required_reagents = list(/decl/reagent/alcohol/fireball = 2, /decl/reagent/drink/milk/cream = 1) result_amount = 3 /datum/chemical_reaction/drink/fiscoffee name = "Fisanduhian Coffee" id = "fiscoffee" - result = /datum/reagent/alcohol/ethanol/coffee/fiscoffee - required_reagents = list(/datum/reagent/alcohol/ethanol/fiscream = 1, /datum/reagent/drink/coffee = 1) + result = /decl/reagent/alcohol/coffee/fiscoffee + required_reagents = list(/decl/reagent/alcohol/fiscream = 1, /decl/reagent/drink/coffee = 1) result_amount = 2 /datum/chemical_reaction/drink/fisfirebomb name = "Fisanduhian Firebomb" id = "fiscarbomb" - result = /datum/reagent/alcohol/ethanol/fisfirebomb - required_reagents = list(/datum/reagent/alcohol/ethanol/ale = 1, /datum/reagent/alcohol/ethanol/fiscream = 1) + result = /decl/reagent/alcohol/fisfirebomb + required_reagents = list(/decl/reagent/alcohol/ale = 1, /decl/reagent/alcohol/fiscream = 1) result_amount = 2 diff --git a/code/modules/reagents/Chemistry-Temperature.dm b/code/modules/reagents/Chemistry-Temperature.dm index a4e530c471d..61bbfb316e8 100644 --- a/code/modules/reagents/Chemistry-Temperature.dm +++ b/code/modules/reagents/Chemistry-Temperature.dm @@ -5,129 +5,60 @@ // http://www2.ucdsb.on.ca/tiss/stretton/database/specific_heat_capacity_table.html // https://www.nuclear-power.net/radium-specific-heat-latent-heat-vaporization-fusion/ -/datum/reagents/proc/get_thermal_energy() - var/returning = 0 - for(var/datum/reagent/R in reagent_list) - returning += R.get_thermal_energy() - return returning +/decl/reagent/proc/get_thermal_fraction(var/datum/reagents/holder) + return get_heat_capacity(holder)/holder.get_heat_capacity() -/datum/reagent/proc/get_thermal_energy() - return thermal_energy +/decl/reagent/proc/get_thermal_energy(var/datum/reagents/holder) + return (holder.thermal_energy * get_thermal_fraction(holder)) + +/decl/reagent/proc/set_thermal_energy(amount, var/datum/reagents/holder, safety = FALSE) + var/delta = amount / get_thermal_fraction(holder) - holder.thermal_energy + if(!round(delta, 1)) + return + holder.add_thermal_energy(delta, safety) // this handles on_heat_change for us + +/decl/reagent/proc/add_thermal_energy(amount, var/datum/reagents/holder, safety = FALSE) + holder.add_thermal_energy(amount, safety) + +/decl/reagent/proc/set_temperature(temperature, var/datum/reagents/holder, safety = FALSE) + set_thermal_energy(temperature * get_heat_capacity(holder), holder, safety = safety) /datum/reagents/proc/get_heat_capacity() - var/returning = 0 - for(var/datum/reagent/R in reagent_list) - if(total_volume) - returning += R.get_heat_capacity() - return returning + . = 0 + for(var/_R in reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + . += R.get_heat_capacity(src) -/datum/reagent/proc/get_heat_capacity() - return specific_heat * volume +/decl/reagent/proc/get_heat_capacity(var/datum/reagents/holder) + return specific_heat * REAGENT_VOLUME(holder, type) /datum/reagents/proc/get_temperature() var/HC = get_heat_capacity() - var/TE = get_thermal_energy() + var/TE = thermal_energy if(HC && TE) return TE / HC else - return T0C + 20 + return T20C -/datum/reagent/proc/get_temperature() - var/HC = get_heat_capacity() - var/TE = get_thermal_energy() - if(HC && TE) - return TE / HC - else - return T0C + 20 - -/datum/reagents/proc/get_thermal_energy_change(var/old_temperature, var/new_temperature) +/datum/reagents/proc/get_thermal_energy_change(old_temperature, new_temperature) return get_heat_capacity()*(max(new_temperature, TCMB) - old_temperature) -/datum/reagent/proc/get_thermal_energy_change(var/old_temperature, var/new_temperature) - return get_heat_capacity()*(max(new_temperature, TCMB) - old_temperature) +/datum/reagents/proc/set_thermal_energy(set_energy, safety = FALSE) + return add_thermal_energy(-thermal_energy + set_energy, safety) -/datum/reagent/proc/add_thermal_energy(var/added_energy) - thermal_energy = max(0,thermal_energy + added_energy) - return added_energy +/datum/reagents/proc/set_temperature(new_temperature, safety = FALSE) + return set_thermal_energy(get_thermal_energy_change(0,new_temperature), safety) -/datum/reagent/proc/set_thermal_energy(var/set_energy) - return add_thermal_energy(-get_thermal_energy() + set_energy) +/datum/reagents/proc/add_thermal_energy(thermal_energy_to_add, safety = FALSE) + thermal_energy_to_add = max(-thermal_energy, thermal_energy_to_add) + var/total_heat_capacity = get_heat_capacity() -/datum/reagents/proc/set_thermal_energy(var/set_energy) - return add_thermal_energy(-get_thermal_energy() + set_energy) + for(var/_R in reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + var/energy_per_reagent = thermal_energy_to_add * (R.get_heat_capacity(src)/total_heat_capacity) + if(!safety) + R.on_heat_change(energy_per_reagent, src) + thermal_energy += thermal_energy_to_add -/datum/reagent/proc/set_temperature(var/new_temperature) - return add_thermal_energy(-get_thermal_energy() + get_thermal_energy_change(0,new_temperature) ) - -/datum/reagents/proc/set_temperature(var/new_temperature) - return add_thermal_energy(-get_thermal_energy() + get_thermal_energy_change(0,new_temperature) ) - -/datum/reagents/proc/equalize_temperature() - - var/total_thermal_energy = 0 - var/total_heat_capacity = 0 - var/was_changed = FALSE - - for(var/datum/reagent/R in reagent_list) - total_thermal_energy += R.get_thermal_energy() - total_heat_capacity += R.get_heat_capacity() - - for(var/datum/reagent/R in reagent_list) - var/old_thermal_energy = R.get_thermal_energy() - var/new_thermal_energy = total_thermal_energy * (R.get_heat_capacity()/total_heat_capacity) - if(round(old_thermal_energy,1) != round(new_thermal_energy,1)) - R.set_thermal_energy( new_thermal_energy ) - was_changed = TRUE - - return was_changed - -/datum/reagents/proc/add_thermal_energy(var/thermal_energy_to_add) - - var/total_energy_added = 0 - var/total_heat_capacity = 0 - - for(var/datum/reagent/R in reagent_list) - total_heat_capacity += R.get_heat_capacity() - - for(var/datum/reagent/R in reagent_list) - total_energy_added += R.add_thermal_energy(thermal_energy_to_add * (R.get_heat_capacity()/total_heat_capacity) ) - - return total_energy_added - -/* -/datum/reagents/proc/add_thermal_energy(var/thermal_energy_to_add) - - if (total_volume == 0) - return 0 - - var/returning_energy_used = 0 - - for(var/datum/reagent/R in reagent_list) - var/local_thermal_energy = thermal_energy_to_add / reagent_list.len - if (local_thermal_energy < 0) - if (R.get_temperature() < TCMB) - return 0 - var/thermal_energy_limit = -(R.get_temperature() - TCMB) * R.get_heat_capacity() //ensure temperature does not go below TCMB - local_thermal_energy = max( local_thermal_energy, thermal_energy_limit ) //thermal_energy and thermal_energy_limit are negative here. - returning_energy_used += R.add_thermal_energy(local_thermal_energy) - - return returning_energy_used -*/ - -/datum/reagents/proc/has_all_temperatures(var/list/required_temperatures_min, var/list/required_temperatures_max) - - for(var/datum/reagent/current in reagent_list) - - var/current_temperature = current.get_temperature() - - if(current.type in required_temperatures_min) //The current temperature must be greater than this temperature - var/required_temperature = required_temperatures_min[current.type] - if(current_temperature < required_temperature) //Current temperature is less than the required temperature, - return FALSE - - if(current.type in required_temperatures_max) //The current temperature must be less than this temperature. - var/required_temperature = required_temperatures_max[current.type] - if(current_temperature > required_temperature) //Current temperature is greater than the required temperature. - return FALSE - - return TRUE \ No newline at end of file +/decl/reagent/proc/on_heat_change(energy_change, var/datum/reagents/holder) + return // stub for heat effects diff --git a/code/modules/reagents/dispenser/cartridge.dm b/code/modules/reagents/dispenser/cartridge.dm index aa6c77913f0..8210ee5a412 100644 --- a/code/modules/reagents/dispenser/cartridge.dm +++ b/code/modules/reagents/dispenser/cartridge.dm @@ -23,7 +23,7 @@ src.temperature_override = temperature_override if(spawn_reagent) reagents.add_reagent(spawn_reagent, volume, temperature = src.temperature_override) - var/datum/reagent/R = SSchemistry.chemical_reagents[spawn_reagent] + var/decl/reagent/R = decls_repository.get_decl(spawn_reagent) if(label) setLabel(label) else diff --git a/code/modules/reagents/dispenser/cartridge_presets.dm b/code/modules/reagents/dispenser/cartridge_presets.dm index 855944e1dad..36884de64ae 100644 --- a/code/modules/reagents/dispenser/cartridge_presets.dm +++ b/code/modules/reagents/dispenser/cartridge_presets.dm @@ -6,110 +6,110 @@ volume = CARTRIDGE_VOLUME_MEDIUM // Multiple - sugar spawn_reagent = /datum/reagent/sugar - water spawn_reagent = /datum/reagent/water + sugar spawn_reagent = /decl/reagent/sugar + water spawn_reagent = /decl/reagent/water // Chemistry - acetone spawn_reagent = /datum/reagent/acetone - aluminum spawn_reagent = /datum/reagent/aluminum - ammonia spawn_reagent = /datum/reagent/ammonia - butanol spawn_reagent = /datum/reagent/alcohol/butanol - carbon spawn_reagent = /datum/reagent/carbon - copper spawn_reagent = /datum/reagent/copper - ethanol spawn_reagent = /datum/reagent/alcohol/ethanol - hclacid spawn_reagent = /datum/reagent/acid/hydrochloric - hydrazine spawn_reagent = /datum/reagent/hydrazine - iron spawn_reagent = /datum/reagent/iron - lithium spawn_reagent = /datum/reagent/lithium - mercury spawn_reagent = /datum/reagent/mercury - phosphorus spawn_reagent = /datum/reagent/phosphorus - potassium spawn_reagent = /datum/reagent/potassium - radium spawn_reagent = /datum/reagent/radium - sacid spawn_reagent = /datum/reagent/acid - silicon spawn_reagent = /datum/reagent/silicon - sodium spawn_reagent = /datum/reagent/sodium - sulfur spawn_reagent = /datum/reagent/sulfur - tungsten spawn_reagent = /datum/reagent/tungsten + acetone spawn_reagent = /decl/reagent/acetone + aluminum spawn_reagent = /decl/reagent/aluminum + ammonia spawn_reagent = /decl/reagent/ammonia + butanol spawn_reagent = /decl/reagent/alcohol/butanol + carbon spawn_reagent = /decl/reagent/carbon + copper spawn_reagent = /decl/reagent/copper + ethanol spawn_reagent = /decl/reagent/alcohol + hclacid spawn_reagent = /decl/reagent/acid/hydrochloric + hydrazine spawn_reagent = /decl/reagent/hydrazine + iron spawn_reagent = /decl/reagent/iron + lithium spawn_reagent = /decl/reagent/lithium + mercury spawn_reagent = /decl/reagent/mercury + phosphorus spawn_reagent = /decl/reagent/phosphorus + potassium spawn_reagent = /decl/reagent/potassium + radium spawn_reagent = /decl/reagent/radium + sacid spawn_reagent = /decl/reagent/acid + silicon spawn_reagent = /decl/reagent/silicon + sodium spawn_reagent = /decl/reagent/sodium + sulfur spawn_reagent = /decl/reagent/sulfur + tungsten spawn_reagent = /decl/reagent/tungsten // Bar, alcoholic - ale spawn_reagent = /datum/reagent/alcohol/ethanol/ale - beer spawn_reagent = /datum/reagent/alcohol/ethanol/beer - champagne spawn_reagent = /datum/reagent/alcohol/ethanol/champagne - cognac spawn_reagent = /datum/reagent/alcohol/ethanol/cognac - gin spawn_reagent = /datum/reagent/alcohol/ethanol/gin - kahlua spawn_reagent = /datum/reagent/alcohol/ethanol/coffee/kahlua - mead spawn_reagent = /datum/reagent/alcohol/ethanol/mead - rum spawn_reagent = /datum/reagent/alcohol/ethanol/rum - tequila spawn_reagent = /datum/reagent/alcohol/ethanol/tequila - vermouth spawn_reagent = /datum/reagent/alcohol/ethanol/vermouth - vodka spawn_reagent = /datum/reagent/alcohol/ethanol/vodka - whiskey spawn_reagent = /datum/reagent/alcohol/ethanol/whiskey - wine spawn_reagent = /datum/reagent/alcohol/ethanol/wine + ale spawn_reagent = /decl/reagent/alcohol/ale + beer spawn_reagent = /decl/reagent/alcohol/beer + champagne spawn_reagent = /decl/reagent/alcohol/champagne + cognac spawn_reagent = /decl/reagent/alcohol/cognac + gin spawn_reagent = /decl/reagent/alcohol/gin + kahlua spawn_reagent = /decl/reagent/alcohol/coffee/kahlua + mead spawn_reagent = /decl/reagent/alcohol/mead + rum spawn_reagent = /decl/reagent/alcohol/rum + tequila spawn_reagent = /decl/reagent/alcohol/tequila + vermouth spawn_reagent = /decl/reagent/alcohol/vermouth + vodka spawn_reagent = /decl/reagent/alcohol/vodka + whiskey spawn_reagent = /decl/reagent/alcohol/whiskey + wine spawn_reagent = /decl/reagent/alcohol/wine // Bar, soft - apple spawn_reagent = /datum/reagent/drink/applejuice - banana spawn_reagent = /datum/reagent/drink/banana - brownstar spawn_reagent = /datum/reagent/drink/brownstar - clean_kois spawn_reagent = /datum/reagent/kois/clean - cola spawn_reagent = /datum/reagent/drink/space_cola - dr_gibb spawn_reagent = /datum/reagent/drink/dr_gibb - ice spawn_reagent = /datum/reagent/drink/ice - icetea spawn_reagent = /datum/reagent/drink/icetea - lemon_lime spawn_reagent = /datum/reagent/drink/lemon_lime - lime spawn_reagent = /datum/reagent/drink/limejuice - orange spawn_reagent = /datum/reagent/drink/orangejuice - root_beer spawn_reagent = /datum/reagent/drink/root_beer - smw spawn_reagent = /datum/reagent/drink/spacemountainwind - sodawater spawn_reagent = /datum/reagent/drink/sodawater - spaceup spawn_reagent = /datum/reagent/drink/spaceup - tea spawn_reagent = /datum/reagent/drink/tea - tonic spawn_reagent = /datum/reagent/drink/tonic - watermelon spawn_reagent = /datum/reagent/drink/watermelonjuice + apple spawn_reagent = /decl/reagent/drink/applejuice + banana spawn_reagent = /decl/reagent/drink/banana + brownstar spawn_reagent = /decl/reagent/drink/brownstar + clean_kois spawn_reagent = /decl/reagent/kois/clean + cola spawn_reagent = /decl/reagent/drink/space_cola + dr_gibb spawn_reagent = /decl/reagent/drink/dr_gibb + ice spawn_reagent = /decl/reagent/drink/ice + icetea spawn_reagent = /decl/reagent/drink/icetea + lemon_lime spawn_reagent = /decl/reagent/drink/lemon_lime + lime spawn_reagent = /decl/reagent/drink/limejuice + orange spawn_reagent = /decl/reagent/drink/orangejuice + root_beer spawn_reagent = /decl/reagent/drink/root_beer + smw spawn_reagent = /decl/reagent/drink/spacemountainwind + sodawater spawn_reagent = /decl/reagent/drink/sodawater + spaceup spawn_reagent = /decl/reagent/drink/spaceup + tea spawn_reagent = /decl/reagent/drink/tea + tonic spawn_reagent = /decl/reagent/drink/tonic + watermelon spawn_reagent = /decl/reagent/drink/watermelonjuice // Bar, coffee and tea - chaitea spawn_reagent = /datum/reagent/drink/tea/chaitea - ciderhot spawn_reagent = /datum/reagent/drink/ciderhot - coffee spawn_reagent = /datum/reagent/drink/coffee - cream spawn_reagent = /datum/reagent/drink/milk/cream - espresso spawn_reagent = /datum/reagent/drink/coffee/espresso - fatshouter_milk spawn_reagent = /datum/reagent/drink/milk/adhomai - greentea spawn_reagent = /datum/reagent/drink/tea/greentea - hot_coco spawn_reagent = /datum/reagent/drink/hot_coco - milk spawn_reagent = /datum/reagent/drink/milk - soymilk spawn_reagent = /datum/reagent/drink/milk/soymilk + chaitea spawn_reagent = /decl/reagent/drink/tea/chaitea + ciderhot spawn_reagent = /decl/reagent/drink/ciderhot + coffee spawn_reagent = /decl/reagent/drink/coffee + cream spawn_reagent = /decl/reagent/drink/milk/cream + espresso spawn_reagent = /decl/reagent/drink/coffee/espresso + fatshouter_milk spawn_reagent = /decl/reagent/drink/milk/adhomai + greentea spawn_reagent = /decl/reagent/drink/tea/greentea + hot_coco spawn_reagent = /decl/reagent/drink/hot_coco + milk spawn_reagent = /decl/reagent/drink/milk + soymilk spawn_reagent = /decl/reagent/drink/milk/soymilk // ERT - alkysine spawn_reagent = /datum/reagent/alkysine - arithrazine spawn_reagent = /datum/reagent/arithrazine - cetahydramine spawn_reagent = /datum/reagent/cetahydramine - bicaridine spawn_reagent = /datum/reagent/bicaridine - chloral spawn_reagent = /datum/reagent/polysomnine - clonexadone spawn_reagent = /datum/reagent/clonexadone - coughsyrup spawn_reagent = /datum/reagent/coughsyrup - cryoxadone spawn_reagent = /datum/reagent/cryoxadone - dermaline spawn_reagent = /datum/reagent/dermaline - dexalin spawn_reagent = /datum/reagent/dexalin + alkysine spawn_reagent = /decl/reagent/alkysine + arithrazine spawn_reagent = /decl/reagent/arithrazine + cetahydramine spawn_reagent = /decl/reagent/cetahydramine + bicaridine spawn_reagent = /decl/reagent/bicaridine + chloral spawn_reagent = /decl/reagent/polysomnine + clonexadone spawn_reagent = /decl/reagent/clonexadone + coughsyrup spawn_reagent = /decl/reagent/coughsyrup + cryoxadone spawn_reagent = /decl/reagent/cryoxadone + dermaline spawn_reagent = /decl/reagent/dermaline + dexalin spawn_reagent = /decl/reagent/dexalin dexalin/small volume = CARTRIDGE_VOLUME_SMALL // For the medicine cartridge crate, so it's not too easy to get large amounts of dexalin - dexalin_p spawn_reagent = /datum/reagent/dexalin/plus - dylovene spawn_reagent = /datum/reagent/dylovene - ethylredox spawn_reagent = /datum/reagent/ethylredoxrazine - hyperzine spawn_reagent = /datum/reagent/hyperzine - hyronalin spawn_reagent = /datum/reagent/hyronalin - oculine spawn_reagent = /datum/reagent/oculine - kelotane spawn_reagent = /datum/reagent/kelotane - butazoline spawn_reagent = /datum/reagent/butazoline - saline spawn_reagent = /datum/reagent/saline - leporazine spawn_reagent = /datum/reagent/leporazine - inaprov spawn_reagent = /datum/reagent/inaprovaline - oxycomorphine spawn_reagent = /datum/reagent/oxycomorphine - perconol spawn_reagent = /datum/reagent/perconol - peridaxon spawn_reagent = /datum/reagent/peridaxon - pneumalin spawn_reagent = /datum/reagent/pneumalin - rezadone spawn_reagent = /datum/reagent/rezadone - ryetalyn spawn_reagent = /datum/reagent/ryetalyn - sleeptox spawn_reagent = /datum/reagent/soporific - sterilizine spawn_reagent = /datum/reagent/sterilizine - synaptizine spawn_reagent = /datum/reagent/synaptizine - thetamycin spawn_reagent = /datum/reagent/thetamycin - mortaphenyl spawn_reagent = /datum/reagent/mortaphenyl - tricord spawn_reagent = /datum/reagent/tricordrazine + dexalin_p spawn_reagent = /decl/reagent/dexalin/plus + dylovene spawn_reagent = /decl/reagent/dylovene + ethylredox spawn_reagent = /decl/reagent/ethylredoxrazine + hyperzine spawn_reagent = /decl/reagent/hyperzine + hyronalin spawn_reagent = /decl/reagent/hyronalin + oculine spawn_reagent = /decl/reagent/oculine + kelotane spawn_reagent = /decl/reagent/kelotane + butazoline spawn_reagent = /decl/reagent/butazoline + saline spawn_reagent = /decl/reagent/saline + leporazine spawn_reagent = /decl/reagent/leporazine + inaprov spawn_reagent = /decl/reagent/inaprovaline + oxycomorphine spawn_reagent = /decl/reagent/oxycomorphine + perconol spawn_reagent = /decl/reagent/perconol + peridaxon spawn_reagent = /decl/reagent/peridaxon + pneumalin spawn_reagent = /decl/reagent/pneumalin + rezadone spawn_reagent = /decl/reagent/rezadone + ryetalyn spawn_reagent = /decl/reagent/ryetalyn + sleeptox spawn_reagent = /decl/reagent/soporific + sterilizine spawn_reagent = /decl/reagent/sterilizine + synaptizine spawn_reagent = /decl/reagent/synaptizine + thetamycin spawn_reagent = /decl/reagent/thetamycin + mortaphenyl spawn_reagent = /decl/reagent/mortaphenyl + tricord spawn_reagent = /decl/reagent/tricordrazine diff --git a/code/modules/reagents/dispenser/cartridge_spawn.dm b/code/modules/reagents/dispenser/cartridge_spawn.dm index b958ffc5aca..34788d0d837 100644 --- a/code/modules/reagents/dispenser/cartridge_spawn.dm +++ b/code/modules/reagents/dispenser/cartridge_spawn.dm @@ -1,4 +1,4 @@ -/client/proc/spawn_chemdisp_cartridge(size in list("small", "medium", "large"), reagent in SSchemistry.chemical_reagents) +/client/proc/spawn_chemdisp_cartridge(size in list("small", "medium", "large"), reagent in decls_repository.get_decls_of_subtype(/decl/reagent/)) set name = "Spawn Chemical Dispenser Cartridge" set category = "Admin" @@ -8,6 +8,6 @@ if("medium") C = new /obj/item/reagent_containers/chem_disp_cartridge/medium(usr.loc) if("large") C = new /obj/item/reagent_containers/chem_disp_cartridge(usr.loc) C.reagents.add_reagent(reagent, C.volume) - var/datum/reagent/R = SSchemistry.chemical_reagents[reagent] + var/decl/reagent/R = decls_repository.get_decl(reagent) C.setLabel(R.name) log_admin("[key_name(usr)] spawned a [size] reagent container containing [reagent] at ([usr.x],[usr.y],[usr.z])",admin_key=key_name(usr)) diff --git a/code/modules/reagents/dispenser/coffeebeans.dm b/code/modules/reagents/dispenser/coffeebeans.dm index e4b91cc0b51..23047ab256a 100644 --- a/code/modules/reagents/dispenser/coffeebeans.dm +++ b/code/modules/reagents/dispenser/coffeebeans.dm @@ -12,5 +12,5 @@ possible_transfer_amounts = list(20, 40) unacidable = 1 - spawn_reagent = /datum/reagent/drink/coffee/espresso + spawn_reagent = /decl/reagent/drink/coffee/espresso diff --git a/code/modules/reagents/dispenser/dispenser2.dm b/code/modules/reagents/dispenser/dispenser2.dm index 7b90dc438db..11103ab0588 100644 --- a/code/modules/reagents/dispenser/dispenser2.dm +++ b/code/modules/reagents/dispenser/dispenser2.dm @@ -124,9 +124,9 @@ data["beakerMaxVolume"] = container?.reagents?.maximum_volume data["beakerCurrentVolume"] = container?.reagents?.total_volume var beakerD[0] - if(container && container.reagents && container.reagents.reagent_list.len) - for(var/datum/reagent/R in container.reagents.reagent_list) - beakerD[++beakerD.len] = list("name" = R.name, "volume" = R.volume) + for(var/_R in container?.reagents?.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + beakerD[++beakerD.len] = list("name" = R.name, "volume" = REAGENT_VOLUME(container.reagents, _R)) data["beakerContents"] = beakerD var chemicals[0] for(var/label in cartridges) @@ -166,6 +166,7 @@ icon_state = initial(icon_state) SSvueui.check_uis_for_change(src) + SSnanoui.update_uis(src) add_fingerprint(usr) return TOPIC_REFRESH // update UIs attached to this object diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index f5d5a70b81e..247131ae47c 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -9,8 +9,7 @@ var/possible_transfer_amounts = list(5,10,15,25,30) var/volume = 30 var/accuracy = 1 - var/fragile = 2 // most glassware is super fragile. Not a boolean. - var/shatter = FALSE //does this container shatter? + var/fragile = 0 // If nonzero, above what force do we shatter? var/shatter_sound = /decl/sound_category/glass_break_sound var/material/shatter_material = MATERIAL_GLASS //slight typecasting abuse here, gets converted to a material in initializee var/can_be_placed_into = list( @@ -61,11 +60,18 @@ /obj/item/reagent_containers/throw_impact(atom/hit_atom, var/speed) . = ..() - if((speed >= fragile) && shatter && !ismob(loc)) + if(ismob(loc)) + return + if(fragile && (speed >= fragile)) shatter() + if(flags && NOREACT) + return + if(!reagents) + return + reagents.apply_force(speed) /obj/item/reagent_containers/proc/shatter(var/obj/item/W, var/mob/user) - if(reagents?.total_volume) + if(reagents.total_volume) reagents.splash(src.loc, reagents.total_volume) // splashes the mob holding it or the turf it's on audible_message(SPAN_WARNING("\The [src] shatters with a resounding crash!"), SPAN_WARNING("\The [src] breaks.")) playsound(src, shatter_sound, 70, 1) @@ -73,7 +79,7 @@ qdel(src) /obj/item/reagent_containers/attackby(var/obj/item/W, var/mob/user) - if(!(W.flags & NOBLUDGEON) && (user.a_intent == I_HURT) && (W.force > fragile) && shatter) + if(!(W.flags & NOBLUDGEON) && (user.a_intent == I_HURT) && fragile && (W.force > fragile)) if(do_after(user, 10)) if(!QDELETED(src)) visible_message(SPAN_WARNING("[user] smashes [src] with \a [W]!")) @@ -84,7 +90,7 @@ /obj/item/reagent_containers/attack(mob/M, mob/user, def_zone) if(can_operate(M) && do_surgery(M, user, src)) return - if(reagents && !reagents.total_volume && user.a_intent == I_HURT) + if(!reagents.total_volume && user.a_intent == I_HURT) return ..() /obj/item/reagent_containers/afterattack(var/atom/target, var/mob/user, var/proximity, var/params) @@ -109,14 +115,10 @@ return ..() /obj/item/reagent_containers/proc/get_temperature() - if(reagents) - return reagents.get_temperature() - return T0C + 20 + return reagents.get_temperature() /obj/item/reagent_containers/proc/reagentlist() // For attack logs - if(reagents) - return reagents.get_reagents() - return "No reagent holder" + return reagents.get_reagents() /obj/item/reagent_containers/proc/standard_dispenser_refill(var/mob/user, var/obj/structure/reagent_dispensers/target) if(!istype(target)) @@ -126,7 +128,7 @@ to_chat(user, "[target] is empty.") return 1 - if(reagents && !reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(reagents)) to_chat(user, "[src] is full.") return 1 @@ -139,7 +141,7 @@ if(user.a_intent != I_HURT) return - if(!reagents || !reagents.total_volume) + if(!reagents.total_volume) return user.visible_message("\The [target] has been splashed with something by \the [user]!", "You splash the solution onto \the [target].") @@ -154,11 +156,11 @@ if(user.a_intent != I_HURT) return 0 - if(!reagents || !reagents.total_volume) + if(!reagents.total_volume) to_chat(user, "[src] is empty.") return 1 - if(target.reagents && !target.reagents.get_free_space()) + if(target.reagents && !REAGENTS_FREE_SPACE(target.reagents)) to_chat(user, "[target] is full.") return 1 @@ -198,7 +200,7 @@ if(user.a_intent == I_HURT) return 0 - if(!reagents || !reagents.total_volume) + if(!reagents.total_volume) to_chat(user, "\The [src] is empty.") return 1 @@ -272,13 +274,13 @@ else if(!target.is_open_container()) return 0 - if(!reagents || !reagents.total_volume) + if(!reagents.total_volume) if(force) // bash people! return 0 to_chat(user, "[src] is empty.") return 1 - if(!target.reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(target.reagents)) to_chat(user, "[target] is full.") return 1 diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 96dce3cca3e..06b8d8e1398 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -30,7 +30,7 @@ . = ..() if(blood_type != null) name = "blood pack [blood_type]" - reagents.add_reagent(/datum/reagent/blood, 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null)) + reagents.add_reagent(/decl/reagent/blood, volume, list("donor"=null,"blood_DNA"=null,"blood_type"=blood_type,"trace_chem"=null,"dose_chem"=null)) update_icon() /obj/item/reagent_containers/blood/on_reagent_change() @@ -44,34 +44,33 @@ if(51 to INFINITY) icon_state = "full" /obj/item/reagent_containers/blood/attack(mob/living/carbon/human/M as mob, mob/living/carbon/human/user as mob, var/target_zone) - if(user == M && user.mind) + if(user == M && (MODE_VAMPIRE in user.mind?.antag_datums)) var/datum/vampire/vampire = user.mind.antag_datums[MODE_VAMPIRE] - if(vampire) - if (being_feed) - to_chat(user, "You are already feeding on \the [src].") - return - if (reagents.get_reagent_amount(/datum/reagent/blood)) - user.visible_message("[user] raises \the [src] up to their mouth and bites into it.", "You raise \the [src] up to your mouth and bite into it, starting to drain its contents.
You need to stand still.
") - being_feed = TRUE - vampire_marks = TRUE - if (!LAZYLEN(src.other_DNA)) - LAZYADD(src.other_DNA, M.dna.unique_enzymes) - src.other_DNA_type = "saliva" + if (being_feed) + to_chat(user, "You are already feeding on \the [src].") + return + if (REAGENT_VOLUME(reagents, /decl/reagent/blood)) + user.visible_message("[user] raises \the [src] up to their mouth and bites into it.", "You raise \the [src] up to your mouth and bite into it, starting to drain its contents.
You need to stand still.
") + being_feed = TRUE + vampire_marks = TRUE + if (!LAZYLEN(src.other_DNA)) + LAZYADD(src.other_DNA, M.dna.unique_enzymes) + src.other_DNA_type = "saliva" - while (do_after(user, 25, 5, 1)) - var/blood_taken = 0 - blood_taken = min(5, reagents.get_reagent_amount(/datum/reagent/blood)/4) + while (do_after(user, 25, 5, 1)) + var/blood_taken = 0 + blood_taken = min(5, REAGENT_VOLUME(reagents, /decl/reagent/blood)/4) - reagents.remove_reagent(/datum/reagent/blood, blood_taken*4) - vampire.blood_usable += blood_taken + reagents.remove_reagent(/decl/reagent/blood, blood_taken*4) + vampire.blood_usable += blood_taken - if (blood_taken) - to_chat(user, "You have accumulated [vampire.blood_usable] [vampire.blood_usable > 1 ? "units" : "unit"] of usable blood. It tastes quite stale.") + if (blood_taken) + to_chat(user, "You have accumulated [vampire.blood_usable] [vampire.blood_usable > 1 ? "units" : "unit"] of usable blood. It tastes quite stale.") - if (reagents.get_reagent_amount(/datum/reagent/blood) < 1) - break - user.visible_message("[user] licks [user.get_pronoun("his")] fangs dry, lowering \the [src].", "You lick your fangs clean of the tasteless blood.") - being_feed = FALSE + if (REAGENT_VOLUME(reagents, /decl/reagent/blood) < 1) + break + user.visible_message("[user] licks [user.get_pronoun("his")] fangs dry, lowering \the [src].", "You lick your fangs clean of the tasteless blood.") + being_feed = FALSE else ..() @@ -83,7 +82,7 @@ /obj/item/reagent_containers/blood/attackby(obj/item/P as obj, mob/user as mob) ..() if (P.ispen()) - if (reagents.get_reagent_amount(/datum/reagent/blood) && name != "empty blood pack") //Stops people mucking with bloodpacks that are filled + if (REAGENT_VOLUME(reagents, /decl/reagent/blood) && name != "empty blood pack") //Stops people mucking with bloodpacks that are filled to_chat(usr, "You can't relabel [name] until it is empty!") return var/blood_name = input(usr, "What blood type would you like to label it as?", "Blood Types") in list("A+", "A-", "B+", "B-", "O+", "O-", "AB+", "AB-", "Cancel") @@ -100,11 +99,11 @@ if(LAZYLEN(P.attack_verb)) user.visible_message("[src] has been [pick(P.attack_verb)] with \the [P] by [user]!") var/atkmsg_filled = null - if (reagents.get_reagent_amount(/datum/reagent/blood)) + if (REAGENT_VOLUME(reagents, /decl/reagent/blood)) atkmsg_filled = " and the contents spray everywhere" if (src.loc != usr) var/strength - var/percent = round((reagents.get_reagent_amount(/datum/reagent/blood) / volume) * 100) //the amount of blood changes the strength of spray + var/percent = round((REAGENT_VOLUME(reagents, /decl/reagent/blood) / volume) * 100) //the amount of blood changes the strength of spray switch(percent) if(1 to 9) strength = 2 if(10 to 50) strength = 3 @@ -151,7 +150,7 @@ H.bloody_body() // Line below will do a check where the target bloodbag is located and create a new one accordingly var/obj/item/reagent_containers/I = src.loc != usr ? new/obj/item/reagent_containers/blood/ripped(src.loc) : new/obj/item/reagent_containers/blood/ripped(usr.loc) - if (reagents.get_reagent_amount(/datum/reagent/blood)) + if (REAGENT_VOLUME(reagents, /decl/reagent/blood)) I.add_blood() var/atkmsg = "\The [src] rips apart[atkmsg_filled]!" user.visible_message(atkmsg) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index 4ee9ec6b4f8..128c77c30a1 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -13,24 +13,24 @@ var/charge_tick = 0 var/recharge_time = 5 //Time it takes for shots to recharge (in seconds) - var/list/reagent_ids = list(/datum/reagent/tricordrazine, /datum/reagent/inaprovaline) + var/list/reagent_ids = list(/decl/reagent/tricordrazine, /decl/reagent/inaprovaline) var/list/reagent_volumes = list() var/list/reagent_names = list() center_of_mass = null /obj/item/reagent_containers/hypospray/borghypo/medical - reagent_ids = list(/datum/reagent/bicaridine, /datum/reagent/kelotane, /datum/reagent/dylovene, /datum/reagent/dexalin, /datum/reagent/inaprovaline, /datum/reagent/perconol, /datum/reagent/mortaphenyl, /datum/reagent/thetamycin) + reagent_ids = list(/decl/reagent/bicaridine, /decl/reagent/kelotane, /decl/reagent/dylovene, /decl/reagent/dexalin, /decl/reagent/inaprovaline, /decl/reagent/perconol, /decl/reagent/mortaphenyl, /decl/reagent/thetamycin) /obj/item/reagent_containers/hypospray/borghypo/rescue - reagent_ids = list(/datum/reagent/tricordrazine, /datum/reagent/inaprovaline, /datum/reagent/dylovene, /datum/reagent/perconol, /datum/reagent/mortaphenyl, /datum/reagent/dexalin, /datum/reagent/adrenaline) + reagent_ids = list(/decl/reagent/tricordrazine, /decl/reagent/inaprovaline, /decl/reagent/dylovene, /decl/reagent/perconol, /decl/reagent/mortaphenyl, /decl/reagent/dexalin, /decl/reagent/adrenaline) /obj/item/reagent_containers/hypospray/borghypo/Initialize() . = ..() for(var/T in reagent_ids) reagent_volumes[T] = volume - var/datum/reagent/R = SSchemistry.chemical_reagents[T] + var/decl/reagent/R = decls_repository.get_decl(T) reagent_names += R.name START_PROCESSING(SSprocessing, src) @@ -110,14 +110,14 @@ if(t) playsound(loc, 'sound/effects/pop.ogg', 50, 0) mode = t - var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]] + var/decl/reagent/R = decls_repository.get_decl(reagent_ids[mode]) to_chat(usr, "Synthesizer is now producing '[R.name]'.") /obj/item/reagent_containers/hypospray/borghypo/examine(mob/user) if(!..(user, 2)) return - var/datum/reagent/R = SSchemistry.chemical_reagents[reagent_ids[mode]] + var/decl/reagent/R = decls_repository.get_decl(reagent_ids[mode]) to_chat(user, "It is currently producing [R.name] and has [reagent_volumes[reagent_ids[mode]]] out of [volume] units left.") @@ -130,7 +130,7 @@ recharge_time = 3 volume = 60 possible_transfer_amounts = list(5, 10, 20, 30) - reagent_ids = list(/datum/reagent/alcohol/ethanol/beer, /datum/reagent/alcohol/ethanol/coffee/kahlua, /datum/reagent/alcohol/ethanol/whiskey, /datum/reagent/alcohol/ethanol/wine, /datum/reagent/alcohol/ethanol/vodka, /datum/reagent/alcohol/ethanol/gin, /datum/reagent/alcohol/ethanol/rum, /datum/reagent/alcohol/ethanol/tequila, /datum/reagent/alcohol/ethanol/vermouth, /datum/reagent/alcohol/ethanol/cognac, /datum/reagent/alcohol/ethanol/ale, /datum/reagent/alcohol/ethanol/mead, /datum/reagent/water, /datum/reagent/sugar, /datum/reagent/drink/ice, /datum/reagent/drink/tea, /datum/reagent/drink/icetea, /datum/reagent/drink/space_cola, /datum/reagent/drink/spacemountainwind, /datum/reagent/drink/dr_gibb, /datum/reagent/drink/spaceup, /datum/reagent/drink/tonic, /datum/reagent/drink/sodawater, /datum/reagent/drink/lemon_lime, /datum/reagent/drink/orangejuice, /datum/reagent/drink/limejuice, /datum/reagent/drink/watermelonjuice, /datum/reagent/drink/coffee, /datum/reagent/drink/coffee/espresso) + reagent_ids = list(/decl/reagent/alcohol/beer, /decl/reagent/alcohol/coffee/kahlua, /decl/reagent/alcohol/whiskey, /decl/reagent/alcohol/wine, /decl/reagent/alcohol/vodka, /decl/reagent/alcohol/gin, /decl/reagent/alcohol/rum, /decl/reagent/alcohol/tequila, /decl/reagent/alcohol/vermouth, /decl/reagent/alcohol/cognac, /decl/reagent/alcohol/ale, /decl/reagent/alcohol/mead, /decl/reagent/water, /decl/reagent/sugar, /decl/reagent/drink/ice, /decl/reagent/drink/tea, /decl/reagent/drink/icetea, /decl/reagent/drink/space_cola, /decl/reagent/drink/spacemountainwind, /decl/reagent/drink/dr_gibb, /decl/reagent/drink/spaceup, /decl/reagent/drink/tonic, /decl/reagent/drink/sodawater, /decl/reagent/drink/lemon_lime, /decl/reagent/drink/orangejuice, /decl/reagent/drink/limejuice, /decl/reagent/drink/watermelonjuice, /decl/reagent/drink/coffee, /decl/reagent/drink/coffee/espresso) /obj/item/reagent_containers/hypospray/borghypo/service/attack(var/mob/M, var/mob/user) return @@ -146,12 +146,12 @@ to_chat(user, "[src] is out of this reagent, give it some time to refill.") return - if(!target.reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(target.reagents)) to_chat(user, "[target] is full.") return var/rid = reagent_ids[mode] - var/datum/reagent/R = SSchemistry.chemical_reagents[rid] + var/decl/reagent/R = decls_repository.get_decl(rid) var/temp = R.default_temperature var/amt = min(amount_per_transfer_from_this, reagent_volumes[rid]) target.reagents.add_reagent(rid, amt, temperature = temp) diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 41b15dcc686..18b8c104700 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -21,7 +21,7 @@ return if(reagents.total_volume) - if(!target.reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(target.reagents)) to_chat(user, "[target] is full.") return diff --git a/code/modules/reagents/reagent_containers/food/cans.dm b/code/modules/reagents/reagent_containers/food/cans.dm index 771a78490ce..b120b33bba4 100644 --- a/code/modules/reagents/reagent_containers/food/cans.dm +++ b/code/modules/reagents/reagent_containers/food/cans.dm @@ -131,7 +131,7 @@ if("Cancel") return return - + else if(W.isFlameSource() && fuselength) light_fuse(W, user) . = ..() @@ -141,7 +141,7 @@ fuselit = TRUE update_icon() set_light(2, 2, LIGHT_COLOR_LAVA) - if(reagents.get_reagent_amount(/datum/reagent/fuel) >= LETHAL_FUEL_CAPACITY && user) + if(REAGENT_VOLUME(reagents, /decl/reagent/fuel) >= LETHAL_FUEL_CAPACITY && user) msg_admin_attack("[user] ([user.ckey]) lit the fuse on an improvised [name] grenade. (JMP)",ckey=key_name(user)) if(fuselength >= FUSELENGTH_MIN && fuselength <= FUSELENGTH_SHORT) user.visible_message(SPAN_DANGER("[user] accidentally takes \the [W] too close to \the [name]'s opening!")) @@ -158,13 +158,13 @@ detonate(FALSE) /obj/item/reagent_containers/food/drinks/cans/proc/detonate(var/instant) - var/fuel = reagents.get_reagent_amount(/datum/reagent/fuel) + var/fuel = REAGENT_VOLUME(reagents, /decl/reagent/fuel) if(instant) fuselength = 0 else if(prob(fuselength * 6)) // the longer the fuse, the higher chance it will fizzle out (18% chance minimum) var/fizzle = rand(1, fuselength - 1) sleep(fizzle * 1 SECOND) - + fuselength -= fizzle visible_message(SPAN_WARNING("The fuse on \the [name] fizzles out early.")) playsound(get_turf(src), 'sound/items/cigs_lighters/cig_snuff.ogg', 50) @@ -215,7 +215,7 @@ desc = initial(desc) /obj/item/reagent_containers/food/drinks/cans/bullet_act(obj/item/projectile/P) - if(P.firer && reagents.get_reagent_amount(/datum/reagent/fuel) >= LETHAL_FUEL_CAPACITY) + if(P.firer && REAGENT_VOLUME(reagents, /decl/reagent/fuel) >= LETHAL_FUEL_CAPACITY) visible_message(SPAN_DANGER("\The [name] is hit by the [P]!")) log_and_message_admins("shot an improvised [name] explosive", P.firer) log_game("[key_name(P.firer)] shot improvised grenade at [loc.loc.name] ([loc.x],[loc.y],[loc.z]).",ckey=key_name(P.firer)) @@ -249,7 +249,7 @@ desc = "Cola. in space." icon_state = "cola" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/space_cola = 30) + reagents_to_add = list(/decl/reagent/drink/space_cola = 30) /obj/item/reagent_containers/food/drinks/cans/space_mountain_wind name = "\improper Space Mountain Wind" @@ -257,7 +257,7 @@ icon_state = "space_mountain_wind" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/spacemountainwind = 30) + reagents_to_add = list(/decl/reagent/drink/spacemountainwind = 30) /obj/item/reagent_containers/food/drinks/cans/thirteenloko name = "thirteen loko" @@ -265,7 +265,7 @@ icon_state = "thirteen_loko" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/thirteenloko = 30) + reagents_to_add = list(/decl/reagent/alcohol/thirteenloko = 30) /obj/item/reagent_containers/food/drinks/cans/dr_gibb name = "\improper Dr. Gibb" @@ -273,7 +273,7 @@ icon_state = "dr_gibb" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/dr_gibb = 30) + reagents_to_add = list(/decl/reagent/drink/dr_gibb = 30) /obj/item/reagent_containers/food/drinks/cans/starkist name = "\improper Star-kist" @@ -281,7 +281,7 @@ icon_state = "starkist" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/brownstar = 30) + reagents_to_add = list(/decl/reagent/drink/brownstar = 30) /obj/item/reagent_containers/food/drinks/cans/space_up name = "\improper Space-Up" @@ -289,7 +289,7 @@ icon_state = "space-up" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/spaceup = 30) + reagents_to_add = list(/decl/reagent/drink/spaceup = 30) /obj/item/reagent_containers/food/drinks/cans/lemon_lime name = "\improper Lemon-Lime" @@ -297,7 +297,7 @@ icon_state = "lemon-lime" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/lemon_lime = 30) + reagents_to_add = list(/decl/reagent/drink/lemon_lime = 30) /obj/item/reagent_containers/food/drinks/cans/iced_tea name = "\improper Vrisk Serket iced tea" @@ -305,7 +305,7 @@ icon_state = "ice_tea_can" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/icetea = 30) + reagents_to_add = list(/decl/reagent/drink/icetea = 30) /obj/item/reagent_containers/food/drinks/cans/grape_juice name = "\improper Grapel juice" @@ -313,7 +313,7 @@ icon_state = "grapesoda" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/grapejuice = 30) + reagents_to_add = list(/decl/reagent/drink/grapejuice = 30) /obj/item/reagent_containers/food/drinks/cans/tonic name = "\improper T-Borg's tonic water" @@ -321,7 +321,7 @@ icon_state = "tonic" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/tonic = 50) + reagents_to_add = list(/decl/reagent/drink/tonic = 50) /obj/item/reagent_containers/food/drinks/cans/sodawater name = "soda water" @@ -329,7 +329,7 @@ icon_state = "sodawater" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/sodawater = 50) + reagents_to_add = list(/decl/reagent/drink/sodawater = 50) /obj/item/reagent_containers/food/drinks/cans/koispunch name = "\improper Phoron Punch!" @@ -337,7 +337,7 @@ icon_state = "phoron_punch" center_of_mass = list("x"=16, "y"=8) can_size_overrides = list("x" = 1) - reagents_to_add = list(/datum/reagent/kois/clean = 10, /datum/reagent/toxin/phoron = 5) + reagents_to_add = list(/decl/reagent/kois/clean = 10, /decl/reagent/toxin/phoron = 5) /obj/item/reagent_containers/food/drinks/cans/root_beer name = "\improper RnD Root Beer" @@ -345,7 +345,7 @@ icon_state = "root_beer" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/root_beer = 30) + reagents_to_add = list(/decl/reagent/drink/root_beer = 30) //zoda @@ -355,7 +355,7 @@ icon_state = "zoracherry" center_of_mass = list("x"=16, "y"=8) can_size_overrides = list("x" = 1) - reagents_to_add = list(/datum/reagent/drink/zorasoda = 20, /datum/reagent/mental/vaam = 15) + reagents_to_add = list(/decl/reagent/drink/zorasoda = 20, /decl/reagent/mental/vaam = 15) /obj/item/reagent_containers/food/drinks/cans/zorakois name = "\improper Zo'ra Soda Kois Twist" @@ -363,7 +363,7 @@ icon_state = "koistwist" center_of_mass = list("x"=16, "y"=8) can_size_overrides = list("x" = 1) - reagents_to_add = list(/datum/reagent/drink/zorasoda/kois = 20, /datum/reagent/mental/vaam = 15) + reagents_to_add = list(/decl/reagent/drink/zorasoda/kois = 20, /decl/reagent/mental/vaam = 15) /obj/item/reagent_containers/food/drinks/cans/zoraphoron name = "\improper Zo'ra Soda Phoron Passion" @@ -371,7 +371,7 @@ icon_state = "phoronpassion" center_of_mass = list("x"=16, "y"=8) can_size_overrides = list("x" = 1) - reagents_to_add = list(/datum/reagent/drink/zorasoda/phoron = 20, /datum/reagent/mental/vaam = 15) + reagents_to_add = list(/decl/reagent/drink/zorasoda/phoron = 20, /decl/reagent/mental/vaam = 15) /obj/item/reagent_containers/food/drinks/cans/zorahozm name = "\improper High Octane Zorane Might" @@ -379,7 +379,7 @@ icon_state = "hozm" center_of_mass = list("x"=16, "y"=8) can_size_overrides = list("x" = 1) - reagents_to_add = list(/datum/reagent/drink/zorasoda/hozm = 20, /datum/reagent/mental/vaam = 15) + reagents_to_add = list(/decl/reagent/drink/zorasoda/hozm = 20, /decl/reagent/mental/vaam = 15) /obj/item/reagent_containers/food/drinks/cans/zoravenom name = "\improper Zo'ra Soda Sour Venom Grass (Diet!)" @@ -387,7 +387,7 @@ icon_state = "sourvenomgrass" center_of_mass = list("x"=16, "y"=8) can_size_overrides = list("x" = 1) - reagents_to_add = list(/datum/reagent/drink/zorasoda/venomgrass = 20, /datum/reagent/mental/vaam = 15) + reagents_to_add = list(/decl/reagent/drink/zorasoda/venomgrass = 20, /decl/reagent/mental/vaam = 15) /obj/item/reagent_containers/food/drinks/cans/zoraklax name = "\improper Klaxan Energy Crush" @@ -395,7 +395,7 @@ icon_state = "klaxancrush" center_of_mass = list("x"=16, "y"=8) can_size_overrides = list("x" = 1) - reagents_to_add = list(/datum/reagent/drink/zorasoda/klax = 20, /datum/reagent/mental/vaam = 15) + reagents_to_add = list(/decl/reagent/drink/zorasoda/klax = 20, /decl/reagent/mental/vaam = 15) /obj/item/reagent_containers/food/drinks/cans/zoracthur name = "\improper C'thur Rockin' Raspberry" @@ -403,7 +403,7 @@ icon_state = "cthurberry" center_of_mass = list("x"=16, "y"=8) can_size_overrides = list("x" = 1) - reagents_to_add = list(/datum/reagent/drink/zorasoda/cthur = 20, /datum/reagent/mental/vaam = 15) + reagents_to_add = list(/decl/reagent/drink/zorasoda/cthur = 20, /decl/reagent/mental/vaam = 15) /obj/item/reagent_containers/food/drinks/cans/zoradrone name = "\improper Drone Fuel" @@ -411,7 +411,7 @@ icon_state = "dronefuel" center_of_mass = list("x"=16, "y"=8) can_size_overrides = list("x" = 1) - reagents_to_add = list(/datum/reagent/drink/zorasoda/drone = 30, /datum/reagent/mental/vaam = 10) + reagents_to_add = list(/decl/reagent/drink/zorasoda/drone = 30, /decl/reagent/mental/vaam = 10) /obj/item/reagent_containers/food/drinks/cans/zorajelly name = "\improper Royal Jelly" @@ -419,7 +419,7 @@ icon_state = "royaljelly" center_of_mass = list("x"=16, "y"=8) can_size_overrides = list("x" = 1) - reagents_to_add = list(/datum/reagent/drink/zorasoda/jelly = 30) + reagents_to_add = list(/decl/reagent/drink/zorasoda/jelly = 30) /obj/item/reagent_containers/food/drinks/cans/adhomai_milk name = "fermented fatshouters milk" @@ -428,14 +428,14 @@ center_of_mass = list("x"=16, "y"=10) desc_fluff = "Fermend fatshouters milk is a drink that originated among the nomadic populations of Rhazar'Hrujmagh, and it has spread to the rest of Adhomai." - reagents_to_add = list(/datum/reagent/drink/milk/adhomai/fermented = 30) + reagents_to_add = list(/decl/reagent/drink/milk/adhomai/fermented = 30) /obj/item/reagent_containers/food/drinks/cans/beetle_milk name = "\improper Hakhma Milk" desc = "A can of Hakhma beetle milk, sourced from Scarab and Drifter communities." icon_state = "beetlemilk" center_of_mass = list("x"=17, "y"=10) - reagents_to_add = list(/datum/reagent/drink/milk/beetle = 30) + reagents_to_add = list(/decl/reagent/drink/milk/beetle = 30) can_size_overrides = list("x" = 1, "y" = -2) /obj/item/reagent_containers/food/drinks/cans/dyn @@ -443,11 +443,11 @@ desc = "The most refreshing thing you can find on the market, based on a Skrell medicinal plant. No salt or sugar." icon_state = "dyncan" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/drink/dynjuice/cold = 30) + reagents_to_add = list(/decl/reagent/drink/dynjuice/cold = 30) /obj/item/reagent_containers/food/drinks/cans/threetowns name = "\improper Three Towns Cider" desc = "A cider made on the west coast of the Moghresian Sea, this is simply one of many brands made in a region known for its craft local butanol, shipped throughout the Wasteland." icon_state = "three_towns_cider" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/alcohol/butanol/threetownscider = 30) + reagents_to_add = list(/decl/reagent/alcohol/butanol/threetownscider = 30) diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index b8870b72fa4..2127caa5dd2 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -39,28 +39,28 @@ /obj/item/reagent_containers/food/condiment/on_reagent_change(var/force = FALSE) if(fixed_state && !force) return - if(!LAZYLEN(reagents.reagent_list)) + if(isemptylist(reagents.reagent_volumes)) icon_state = "emptycondiment" name = "condiment bottle" desc = "An empty condiment bottle." center_of_mass = list("x"=16, "y"=6) return - var/datum/reagent/master = reagents.get_master_reagent() - name = master.condiment_name || (reagents.reagent_list.len == 1 ? "[lowertext(master.name)] bottle" : "condiment bottle") - desc = master.condiment_desc || (reagents.reagent_list.len == 1 ? master.description : "A mixture of various condiments. [master.name] is one of them.") + var/decl/reagent/master = reagents.get_primary_reagent_decl() + name = master.condiment_name || (reagents.reagent_volumes.len == 1 ? "[lowertext(master.name)] bottle" : "condiment bottle") + desc = master.condiment_desc || (reagents.reagent_volumes.len == 1 ? master.description : "A mixture of various condiments. [master.name] is one of them.") icon_state = master.condiment_icon_state || "mixedcondiments" center_of_mass = master.condiment_center_of_mass || list("x"=16, "y"=6) /obj/item/reagent_containers/food/condiment/enzyme icon_state = "enzyme" // for map preview fixed_state = TRUE - reagents_to_add = list(/datum/reagent/enzyme = 50) + reagents_to_add = list(/decl/reagent/enzyme = 50) /obj/item/reagent_containers/food/condiment/sugar icon_state = "sugar" fixed_state = TRUE - reagents_to_add = list(/datum/reagent/sugar = 50) + reagents_to_add = list(/decl/reagent/sugar = 50) /obj/item/reagent_containers/food/condiment/shaker name = "shaker" @@ -80,20 +80,20 @@ /obj/item/reagent_containers/food/condiment/shaker/salt icon_state = "saltshakersmall" - reagents_to_add = list(/datum/reagent/sodiumchloride = 20) + reagents_to_add = list(/decl/reagent/sodiumchloride = 20) /obj/item/reagent_containers/food/condiment/shaker/peppermill icon_state = "peppermillsmall" - reagents_to_add = list(/datum/reagent/blackpepper = 20) + reagents_to_add = list(/decl/reagent/blackpepper = 20) /obj/item/reagent_containers/food/condiment/shaker/diona icon_state = "dionaepowder" - reagents_to_add = list(/datum/reagent/diona_powder = 20) + reagents_to_add = list(/decl/reagent/diona_powder = 20) /obj/item/reagent_containers/food/condiment/shaker/spacespice icon_state = "spacespicebottle" volume = 40 - reagents_to_add = list(/datum/reagent/spacespice = 40) + reagents_to_add = list(/decl/reagent/spacespice = 40) /obj/item/reagent_containers/food/condiment/flour name = "flour sack" @@ -102,16 +102,16 @@ center_of_mass = list("x"=16, "y"=8) volume = 220 fixed_state = TRUE - reagents_to_add = list(/datum/reagent/nutriment/flour = 200) + reagents_to_add = list(/decl/reagent/nutriment/flour = 200) /obj/item/reagent_containers/food/condiment/barbecue fixed_state = TRUE - reagents_to_add = list(/datum/reagent/nutriment/barbecue = 20) + reagents_to_add = list(/decl/reagent/nutriment/barbecue = 20) /obj/item/reagent_containers/food/condiment/garlicsauce fixed_state = TRUE - reagents_to_add = list(/datum/reagent/nutriment/garlicsauce = 50) + reagents_to_add = list(/decl/reagent/nutriment/garlicsauce = 50) /obj/item/reagent_containers/food/condiment/pacid name = "culinary acid" - reagents_to_add = list(/datum/reagent/acid/polyacid = 50) + reagents_to_add = list(/decl/reagent/acid/polyacid = 50) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 5c3c124a5e1..13d0868bba1 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -56,7 +56,8 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I playsound(loc,'sound/items/soda_shaking.ogg', rand(10,50), 1) return if(shaken) - for(var/datum/reagent/R in reagents.reagent_list) + for(var/_R in reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) if(R.carbonated) boom(user) return @@ -142,7 +143,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/cardboardbox.ogg' pickup_sound = 'sound/items/pickup/cardboardbox.ogg' center_of_mass = list("x"=16, "y"=9) - reagents_to_add = list(/datum/reagent/drink/milk = 50) + reagents_to_add = list(/decl/reagent/drink/milk = 50) /obj/item/reagent_containers/food/drinks/soymilk name = "soymilk" @@ -152,7 +153,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/cardboardbox.ogg' pickup_sound = 'sound/items/pickup/cardboardbox.ogg' center_of_mass = list("x"=16, "y"=9) - reagents_to_add = list(/datum/reagent/drink/milk/soymilk = 50) + reagents_to_add = list(/decl/reagent/drink/milk/soymilk = 50) /obj/item/reagent_containers/food/drinks/coffee name = "robust coffee" @@ -164,7 +165,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/papercup.ogg' pickup_sound = 'sound/items/pickup/papercup.ogg' center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/drink/coffee = 30) + reagents_to_add = list(/decl/reagent/drink/coffee = 30) /obj/item/reagent_containers/food/drinks/pslatte name = "seasonal pumpkin spice latte" @@ -177,7 +178,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/papercup.ogg' pickup_sound = 'sound/items/pickup/papercup.ogg' center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/drink/coffee/sadpslatte = 30) + reagents_to_add = list(/decl/reagent/drink/coffee/sadpslatte = 30) /obj/item/reagent_containers/food/drinks/tea name = "duke purple tea" @@ -189,7 +190,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/papercup.ogg' pickup_sound = 'sound/items/pickup/papercup.ogg' center_of_mass = list("x"=16, "y"=14) - reagents_to_add = list(/datum/reagent/drink/tea = 30) + reagents_to_add = list(/decl/reagent/drink/tea = 30) /obj/item/reagent_containers/food/drinks/greentea name = "green tea" @@ -202,7 +203,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/papercup.ogg' pickup_sound = 'sound/items/pickup/papercup.ogg' center_of_mass = list("x"=16, "y"=14) - reagents_to_add = list(/datum/reagent/drink/tea/greentea = 30) + reagents_to_add = list(/decl/reagent/drink/tea/greentea = 30) /obj/item/reagent_containers/food/drinks/hotcider name = "hot cider" @@ -215,7 +216,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/papercup.ogg' pickup_sound = 'sound/items/pickup/papercup.ogg' center_of_mass = list("x"=16, "y"=14) - reagents_to_add = list(/datum/reagent/drink/ciderhot = 30) + reagents_to_add = list(/decl/reagent/drink/ciderhot = 30) /obj/item/reagent_containers/food/drinks/chaitea name = "chai tea" @@ -228,7 +229,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/papercup.ogg' pickup_sound = 'sound/items/pickup/papercup.ogg' center_of_mass = list("x"=16, "y"=14) - reagents_to_add = list(/datum/reagent/drink/tea/chaitea = 30) + reagents_to_add = list(/decl/reagent/drink/tea/chaitea = 30) /obj/item/reagent_containers/food/drinks/ice name = "ice cup" @@ -240,7 +241,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/papercup.ogg' pickup_sound = 'sound/items/pickup/papercup.ogg' center_of_mass = list("x"=15, "y"=10) - reagents_to_add = list(/datum/reagent/drink/ice = 30) + reagents_to_add = list(/decl/reagent/drink/ice = 30) /obj/item/reagent_containers/food/drinks/h_chocolate name = "dutch hot coco" @@ -252,7 +253,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/papercup.ogg' pickup_sound = 'sound/items/pickup/papercup.ogg' center_of_mass = list("x"=15, "y"=13) - reagents_to_add = list(/datum/reagent/drink/hot_coco = 30) + reagents_to_add = list(/decl/reagent/drink/hot_coco = 30) /obj/item/reagent_containers/food/drinks/dry_ramen name = "cup ramen" @@ -264,7 +265,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/papercup.ogg' pickup_sound = 'sound/items/pickup/papercup.ogg' center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/drink/dry_ramen = 30) + reagents_to_add = list(/decl/reagent/drink/dry_ramen = 30) is_liquid = FALSE /obj/item/reagent_containers/food/drinks/dry_ramen/on_reagent_change() @@ -285,7 +286,7 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I drop_sound = 'sound/items/drop/disk.ogg' pickup_sound = 'sound/items/pickup/disk.ogg' - reagents_to_add = list(/datum/reagent/water = 30) + reagents_to_add = list(/decl/reagent/water = 30) //heehoo bottle flipping /obj/item/reagent_containers/food/drinks/waterbottle/throw_impact() @@ -377,49 +378,49 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I desc = "Full of vitamins and deliciousness!" icon_state = "orangejuice" - reagents_to_add = list(/datum/reagent/drink/orangejuice = 100) + reagents_to_add = list(/decl/reagent/drink/orangejuice = 100) /obj/item/reagent_containers/food/drinks/carton/cream name = "milk cream" desc = "It's cream. Made from milk. What else did you think you'd find in there?" icon_state = "cream" - reagents_to_add = list(/datum/reagent/drink/milk/cream = 100) + reagents_to_add = list(/decl/reagent/drink/milk/cream = 100) /obj/item/reagent_containers/food/drinks/carton/tomatojuice name = "tomato juice" desc = "Well, at least it LOOKS like tomato juice. You can't tell with all that redness." icon_state = "tomatojuice" - reagents_to_add = list(/datum/reagent/drink/tomatojuice = 100) + reagents_to_add = list(/decl/reagent/drink/tomatojuice = 100) /obj/item/reagent_containers/food/drinks/carton/limejuice name = "lime juice" desc = "Sweet-sour goodness." icon_state = "limejuice" - reagents_to_add = list(/datum/reagent/drink/limejuice = 100) + reagents_to_add = list(/decl/reagent/drink/limejuice = 100) /obj/item/reagent_containers/food/drinks/carton/lemonjuice name = "lemon juice" desc = "This juice is VERY sour." icon_state = "lemoncarton" - reagents_to_add = list(/datum/reagent/drink/lemonjuice = 100) + reagents_to_add = list(/decl/reagent/drink/lemonjuice = 100) /obj/item/reagent_containers/food/drinks/carton/dynjuice name = "dyn juice" desc = "Juice from a Skrell medicinal herb. It's supposed to be diluted." icon_state = "dyncarton" - reagents_to_add = list(/datum/reagent/drink/dynjuice = 100) + reagents_to_add = list(/decl/reagent/drink/dynjuice = 100) /obj/item/reagent_containers/food/drinks/carton/applejuice name = "apple juice" desc = "Juice from an apple. Yes." icon_state = "applejuice" - reagents_to_add = list(/datum/reagent/drink/applejuice = 100) + reagents_to_add = list(/decl/reagent/drink/applejuice = 100) //////////////////////////drinkingglass and shaker// //Note by Darem: This code handles the mixing of drinks. New drinks go in three places: In Chemistry-Reagents.dm (for the drink diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index 9445fefa615..f7f24209920 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -12,7 +12,6 @@ item_state = "broken_beer" //Generic held-item sprite until unique ones are made. force = 5 hitsound = /decl/sound_category/bottle_hit_intact_sound - shatter = TRUE var/smash_duration = 5 //Directly relates to the 'weaken' duration. Lowered by armor (i.e. helmets) matter = list(MATERIAL_GLASS = 800) @@ -201,7 +200,7 @@ desc_fluff = DRINK_FLUFF_GETMORE icon_state = "ginbottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/gin = 100) + reagents_to_add = list(/decl/reagent/alcohol/gin = 100) /obj/item/reagent_containers/food/drinks/bottle/victorygin name = "Victory gin" @@ -211,7 +210,7 @@ desc_fluff = "Adhomian beverages are commonly made with fermented grains or vegetables, if alcoholic, or juices mixed with sugar or honey. Victory gin is the most \ widespread alcoholic drink in Adhomai, the result of the fermentation of honey extracted from Messa's tears, but its production and consumption is slowly declining due to the \ People's Republic situation in the current conflict." - reagents_to_add = list(/datum/reagent/alcohol/ethanol/victorygin = 100) + reagents_to_add = list(/decl/reagent/alcohol/victorygin = 100) /obj/item/reagent_containers/food/drinks/bottle/whiskey name = "Mu Cephei Special Reserve" @@ -219,10 +218,7 @@ desc_fluff = DRINK_FLUFF_GETMORE icon_state = "whiskeybottle" center_of_mass = list("x"=16, "y"=4) - -/obj/item/reagent_containers/food/drinks/bottle/whiskey/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/alcohol/ethanol/whiskey, 100) + reagents_to_add = list(/decl/reagent/alcohol/whiskey = 100) /obj/item/reagent_containers/food/drinks/bottle/fireball name = "Delta Cephei Cinnamon Fireball" @@ -231,7 +227,7 @@ desc_fluff = DRINK_FLUFF_GETMORE icon_state = "whiskeybottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/fireball = 100) + reagents_to_add = list(/decl/reagent/alcohol/fireball = 100) /obj/item/reagent_containers/food/drinks/bottle/vodka name = "Martian 50% Premium" @@ -239,7 +235,7 @@ desc_fluff = DRINK_FLUFF_SILVERPORT icon_state = "vodkabottle" center_of_mass = list("x"=17, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/vodka = 100) + reagents_to_add = list(/decl/reagent/alcohol/vodka = 100) /obj/item/reagent_containers/food/drinks/bottle/vodka/mushroom name = "Magnitogorsk Import mushroom vodka" @@ -248,7 +244,7 @@ from the Vodnik Breweries Syndicate in Magnitogorsk, arguably the most famous brewery on Himeo (though fans of the Coal Canary Syndicated Brewery in Highland City \ would disagree). Drinkers of the world, unite!" icon_state = "mushroomvodkabottle" - reagents_to_add = list(/datum/reagent/alcohol/ethanol/vodka/mushroom = 100) + reagents_to_add = list(/decl/reagent/alcohol/vodka/mushroom = 100) /obj/item/reagent_containers/food/drinks/bottle/tequila name = "Chip's Guaranteed Quality tequila" @@ -256,14 +252,14 @@ desc_fluff = DRINK_FLUFF_GETMORE icon_state = "tequilabottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/tequila = 100) + reagents_to_add = list(/decl/reagent/alcohol/tequila = 100) /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing name = "bottle of nothing" desc = "A bottle filled with nothing" icon_state = "bottleofnothing" center_of_mass = list("x"=16, "y"=5) - reagents_to_add = list(/datum/reagent/drink/nothing = 100) + reagents_to_add = list(/decl/reagent/drink/nothing = 100) /obj/item/reagent_containers/food/drinks/bottle/bitters name = "Nojosuru Aromatic Bitters" @@ -272,10 +268,7 @@ They are known for their surprisingly affordable and incredible quality foods, as well as growing many crops used in pharmaceuticals and luxury items." icon_state = "bitters" center_of_mass = list("x"=16, "y"=9) - -/obj/item/reagent_containers/food/drinks/bottle/bitters/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/alcohol/ethanol/bitters,40) + reagents_to_add = list(/decl/reagent/alcohol/bitters = 40) /obj/item/reagent_containers/food/drinks/bottle/champagne name = "Silverport's Bubbliest champagne" @@ -283,10 +276,7 @@ desc_fluff = DRINK_FLUFF_SILVERPORT icon_state = "champagnebottle" center_of_mass = list("x"=16, "y"=4) - -/obj/item/reagent_containers/food/drinks/bottle/champagne/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/alcohol/ethanol/champagne,100) + reagents_to_add = list(/decl/reagent/alcohol/champagne = 100) /obj/item/reagent_containers/food/drinks/bottle/mintsyrup name = "Getmore's Bold Peppermint" @@ -294,7 +284,7 @@ desc_fluff = DRINK_FLUFF_GETMORE icon_state = "mint_syrup" center_of_mass = list("x"=16, "y"=6) - reagents_to_add = list(/datum/reagent/drink/mintsyrup = 100) + reagents_to_add = list(/decl/reagent/drink/mintsyrup = 100) /obj/item/reagent_containers/food/drinks/bottle/patron name = "Cytherea Artiste patron" @@ -303,7 +293,7 @@ desc_fluff = DRINK_FLUFF_SILVERPORT icon_state = "patronbottle" center_of_mass = list("x"=16, "y"=7) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/patron = 100) + reagents_to_add = list(/decl/reagent/alcohol/patron = 100) /obj/item/reagent_containers/food/drinks/bottle/rum name = "Captain Melinda's Cuban Spiced rum" @@ -311,7 +301,7 @@ desc_fluff = DRINK_FLUFF_GETMORE icon_state = "rumbottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/rum = 100) + reagents_to_add = list(/decl/reagent/alcohol/rum = 100) /obj/item/reagent_containers/food/drinks/bottle/holywater name = "flask of holy water" @@ -319,7 +309,7 @@ icon_state = "holyflask" center_of_mass = list("x"=17, "y"=10) drink_flags = NO_EMPTY_ICON - reagents_to_add = list(/datum/reagent/water/holywater = 100) + reagents_to_add = list(/decl/reagent/water/holywater = 100) /obj/item/reagent_containers/food/drinks/bottle/vermouth name = "Xinghua vermouth" @@ -328,7 +318,7 @@ desc_fluff = DRINK_FLUFF_ZENGHU icon_state = "vermouthbottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/vermouth = 100) + reagents_to_add = list(/decl/reagent/alcohol/vermouth = 100) /obj/item/reagent_containers/food/drinks/bottle/kahlua name = "Nixiqi's Happy Accident coffee liqueur" @@ -336,7 +326,7 @@ desc_fluff = DRINK_FLUFF_ZENGHU icon_state = "kahluabottle" center_of_mass = list("x"=16, "y"=5) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/coffee/kahlua = 100) + reagents_to_add = list(/decl/reagent/alcohol/coffee/kahlua = 100) /obj/item/reagent_containers/food/drinks/bottle/goldschlager name = "Uptown Cytherean goldschlager" @@ -344,7 +334,7 @@ desc_fluff = DRINK_FLUFF_SILVERPORT icon_state = "goldschlagerbottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/goldschlager = 100) + reagents_to_add = list(/decl/reagent/alcohol/goldschlager = 100) /obj/item/reagent_containers/food/drinks/bottle/cognac name = "Cytherea Golden Sweetness cognac" @@ -352,7 +342,7 @@ desc_fluff = DRINK_FLUFF_SILVERPORT icon_state = "cognacbottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/cognac = 100) + reagents_to_add = list(/decl/reagent/alcohol/cognac = 100) /obj/item/reagent_containers/food/drinks/bottle/wine name = "Silverport Quality Brand red wine" @@ -360,7 +350,7 @@ desc_fluff = DRINK_FLUFF_SILVERPORT icon_state = "winebottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/wine = 100) + reagents_to_add = list(/decl/reagent/alcohol/wine = 100) /obj/item/reagent_containers/food/drinks/bottle/absinthe name = "Jailbreaker Verte" @@ -368,7 +358,7 @@ desc_fluff = DRINK_FLUFF_SILVERPORT icon_state = "absinthebottle" center_of_mass = list("x"=16, "y"=7) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/absinthe = 100) + reagents_to_add = list(/decl/reagent/alcohol/absinthe = 100) /obj/item/reagent_containers/food/drinks/bottle/melonliquor name = "Emeraldine melon liquor" @@ -378,7 +368,7 @@ center_of_mass = list("x"=16, "y"=6) drink_flags = IS_GLASS | UNIQUE_EMPTY_ICON empty_icon_state = "alco-blue_empty" - reagents_to_add = list(/datum/reagent/alcohol/ethanol/melonliquor = 100) + reagents_to_add = list(/decl/reagent/alcohol/melonliquor = 100) /obj/item/reagent_containers/food/drinks/bottle/bluecuracao name = "Xuaousha curacao" @@ -387,7 +377,7 @@ icon_state = "alco-blue" empty_icon_state = "alco-clear" center_of_mass = list("x"=16, "y"=6) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/bluecuracao = 100) + reagents_to_add = list(/decl/reagent/alcohol/bluecuracao = 100) /obj/item/reagent_containers/food/drinks/bottle/grenadine name = "Getmore's Tangy grenadine syrup" @@ -396,7 +386,7 @@ icon_state = "grenadinebottle" drink_flags = IS_GLASS | NO_EMPTY_ICON center_of_mass = list("x"=16, "y"=6) - reagents_to_add = list(/datum/reagent/drink/grenadine = 100) + reagents_to_add = list(/decl/reagent/drink/grenadine = 100) /obj/item/reagent_containers/food/drinks/bottle/cola name = "space cola" @@ -406,9 +396,9 @@ drink_flags = NO_EMPTY_ICON drop_sound = 'sound/items/drop/shoes.ogg' pickup_sound = 'sound/items/pickup/shoes.ogg' - reagents_to_add = list(/datum/reagent/drink/space_cola = 100) + reagents_to_add = list(/decl/reagent/drink/space_cola = 100) shatter_material = MATERIAL_PLASTIC - shatter = FALSE + fragile = 0 /obj/item/reagent_containers/food/drinks/bottle/space_up name = "\improper Space-Up" @@ -418,9 +408,9 @@ drink_flags = NO_EMPTY_ICON drop_sound = 'sound/items/drop/shoes.ogg' pickup_sound = 'sound/items/pickup/shoes.ogg' - reagents_to_add = list(/datum/reagent/drink/spaceup = 100) + reagents_to_add = list(/decl/reagent/drink/spaceup = 100) shatter_material = MATERIAL_PLASTIC - shatter = FALSE + fragile = 0 /obj/item/reagent_containers/food/drinks/bottle/space_mountain_wind name = "\improper Space Mountain Wind" @@ -430,9 +420,9 @@ drink_flags = NO_EMPTY_ICON drop_sound = 'sound/items/drop/shoes.ogg' pickup_sound = 'sound/items/pickup/shoes.ogg' - reagents_to_add = list(/datum/reagent/drink/spacemountainwind = 100) + reagents_to_add = list(/decl/reagent/drink/spacemountainwind = 100) shatter_material = MATERIAL_PLASTIC - shatter = FALSE + fragile = 0 /obj/item/reagent_containers/food/drinks/bottle/pwine name = "Chip Getmore's Velvet" @@ -440,7 +430,7 @@ desc_fluff = DRINK_FLUFF_GETMORE icon_state = "pwinebottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/pwine = 100) + reagents_to_add = list(/decl/reagent/alcohol/pwine = 100) //Small bottles /obj/item/reagent_containers/food/drinks/bottle/small @@ -459,7 +449,7 @@ icon_state = "beer" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/beer = 30) + reagents_to_add = list(/decl/reagent/alcohol/beer = 30) /obj/item/reagent_containers/food/drinks/bottle/small/ale name = "\improper Magm-ale" @@ -468,7 +458,7 @@ item_state = "beer" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/ale = 30) + reagents_to_add = list(/decl/reagent/alcohol/ale = 30) //aurora's drinks @@ -479,7 +469,7 @@ desc_fluff = DRINK_FLUFF_ZENGHU icon_state = "chartreusegreenbottle" center_of_mass = list("x" = 15,"y" = 5) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/chartreusegreen = 100) + reagents_to_add = list(/decl/reagent/alcohol/chartreusegreen = 100) /obj/item/reagent_containers/food/drinks/bottle/chartreuseyellow name = "Nralakk Touch yellow chartreuse" @@ -488,7 +478,7 @@ desc_fluff = DRINK_FLUFF_ZENGHU icon_state = "chartreuseyellowbottle" center_of_mass = list("x" = 15,"y" = 5) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/chartreuseyellow = 100) + reagents_to_add = list(/decl/reagent/alcohol/chartreuseyellow = 100) /obj/item/reagent_containers/food/drinks/bottle/cremewhite name = "Xinghua White Mint" @@ -496,7 +486,7 @@ desc_fluff = DRINK_FLUFF_ZENGHU icon_state = "whitecremebottle" center_of_mass = list("x" = 16,"y" = 5) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/cremewhite = 100) + reagents_to_add = list(/decl/reagent/alcohol/cremewhite = 100) /obj/item/reagent_containers/food/drinks/bottle/cremeyvette name = "Xinghua Delicate Violet" @@ -504,7 +494,7 @@ desc_fluff = DRINK_FLUFF_ZENGHU icon_state = "cremedeyvettebottle" center_of_mass = list("x" = 16,"y" = 6) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/cremeyvette = 100) + reagents_to_add = list(/decl/reagent/alcohol/cremeyvette = 100) /obj/item/reagent_containers/food/drinks/bottle/brandy name = "Admiral Cindy's brandy" @@ -512,14 +502,14 @@ desc_fluff = DRINK_FLUFF_GETMORE icon_state = "brandybottle" center_of_mass = list("x" = 15,"y" = 8) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/brandy = 100) + reagents_to_add = list(/decl/reagent/alcohol/brandy = 100) /obj/item/reagent_containers/food/drinks/bottle/guinness name = "Guinness" desc = "A bottle of good old Guinness." icon_state = "guinness_bottle" center_of_mass = list("x" = 15,"y" = 4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/guinness = 100) + reagents_to_add = list(/decl/reagent/alcohol/guinness = 100) /obj/item/reagent_containers/food/drinks/bottle/drambuie name = "Xinghua Honeyed Satisfaction" @@ -527,7 +517,7 @@ desc_fluff = DRINK_FLUFF_ZENGHU icon_state = "drambuie_bottle" center_of_mass = list("x" = 16,"y" = 6) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/drambuie = 100) + reagents_to_add = list(/decl/reagent/alcohol/drambuie = 100) /obj/item/reagent_containers/food/drinks/bottle/sbiten name = "Getmore's Traditional Sbiten" @@ -535,7 +525,7 @@ desc_fluff = DRINK_FLUFF_GETMORE icon_state = "sbitenbottle" center_of_mass = list("x" = 16,"y" = 7) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/sbiten = 100) + reagents_to_add = list(/decl/reagent/alcohol/sbiten = 100) /obj/item/reagent_containers/food/drinks/bottle/messa_mead name = "messa's mead" @@ -545,7 +535,7 @@ desc_fluff = "Adhomian beverages are commonly made with fermented grains or vegetables, if alcoholic, or juices mixed with sugar or honey. Victory gin is the most \ widespread alcoholic drink in Adhomai, the result of the fermentation of honey extracted from Messa's tears, but its production and consumption is slowly declining due to the \ People's Republic situation in the current conflict. Messa's mead is also another more traditional alternative, made with honey and fermented Earthen-Root juice." - reagents_to_add = list(/datum/reagent/alcohol/ethanol/messa_mead = 100) + reagents_to_add = list(/decl/reagent/alcohol/messa_mead = 100) /obj/item/reagent_containers/food/drinks/bottle/sake name = "Shokyodo Sake" @@ -555,7 +545,7 @@ competitors." icon_state = "sakebottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/sake = 100) + reagents_to_add = list(/decl/reagent/alcohol/sake = 100) /obj/item/reagent_containers/food/drinks/bottle/soju name = "Boryeong '45 soju" @@ -565,7 +555,7 @@ name refers to its alcohol by volume content, and not a calendar year." icon_state = "sojubottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/soju = 100) + reagents_to_add = list(/decl/reagent/alcohol/soju = 100) /obj/item/reagent_containers/food/drinks/bottle/makgeolli name = "Doctor Kyung's makgeolli" @@ -577,7 +567,7 @@ really is just that good." icon_state = "makgeollibottle" center_of_mass = list("x"=16, "y"=5) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/makgeolli = 100) + reagents_to_add = list(/decl/reagent/alcohol/makgeolli = 100) // Butanol-based alcoholic drinks //===================================== @@ -588,14 +578,14 @@ desc = "Blended flower buds from the Xuizi cactus. It smells faintly of vanilla. Bottled by the Arizi Guild for over 200 years." icon_state = "xuizibottle" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/datum/reagent/alcohol/butanol/xuizijuice = 30) + reagents_to_add = list(/decl/reagent/alcohol/butanol/xuizijuice = 30) /obj/item/reagent_containers/food/drinks/bottle/sarezhiwine name = "Sarezhi Wine" desc = "A premium Moghean wine made from Sareszhi berries. Bottled by the Arizi Guild for over 200 years." icon_state = "sarezhibottle" center_of_mass = list("x" = 16,"y" = 6) - reagents_to_add = list(/datum/reagent/alcohol/butanol/sarezhiwine = 100) + reagents_to_add = list(/decl/reagent/alcohol/butanol/sarezhiwine = 100) // Synnono Meme (Bottled) Drinks //====================================== @@ -606,11 +596,11 @@ desc = "A distillation of figs, imported from the Serene Republic of Elyra. Makes an excellent apertif or digestif." icon_state = "boukhabottle" center_of_mass = list("x"=16, "y"=6) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/boukha = 100) + reagents_to_add = list(/decl/reagent/alcohol/boukha = 100) /obj/item/reagent_containers/food/drinks/bottle/whitewine name = "Doublebeard Bearded White Wine" desc = "A faint aura of unease and asspainery surrounds the bottle." icon_state = "whitewinebottle" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/alcohol/ethanol/whitewine = 100) + reagents_to_add = list(/decl/reagent/alcohol/whitewine = 100) diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index 25953fcdfbb..ef9697a298a 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -12,44 +12,24 @@ pickup_sound = 'sound/items/pickup/drinkglass.ogg' matter = list(MATERIAL_GLASS = 300) drink_flags = NO_EMPTY_ICON //This should not be removed unless a total overhaul of drink reagent sprites is done. - shatter = TRUE + fragile = 2 /obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change() - if (reagents.reagent_list.len > 0) - var/datum/reagent/R = reagents.get_master_reagent() - - if(R.glass_icon_state) - icon_state = R.glass_icon_state - else - icon_state = "nothing" - - if(R.glass_name) - name = R.glass_name - else - name = "glass of something" - - if(R.glass_desc) - desc = R.glass_desc - else - desc = "You can't really tell what this is." - - if(R.glass_center_of_mass) - center_of_mass = R.glass_center_of_mass - else - center_of_mass = list("x"=16, "y"=10) + var/decl/reagent/R = reagents.get_primary_reagent_decl() + if (LAZYLEN(reagents.reagent_volumes) && R) + icon_state = R.glass_icon_state || "nothing" + name = R.glass_name || "glass of something" + desc = R.glass_desc || "You can't really tell what this is." + center_of_mass = R.glass_center_of_mass || list("x"=16, "y"=10) else icon_state = "glass_empty" name = "glass" desc = "Your standard drinking glass." center_of_mass = list("x"=16, "y"=10) -// for /obj/machinery/vending/sovietsoda -/obj/item/reagent_containers/food/drinks/drinkingglass/soda/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/drink/sodawater, 50) - on_reagent_change() +// for /obj/machinery/vending/sovietsoda +/obj/item/reagent_containers/food/drinks/drinkingglass/soda + reagents_to_add = list(/decl/reagent/drink/sodawater = 50) -/obj/item/reagent_containers/food/drinks/drinkingglass/cola/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/drink/space_cola, 50) - on_reagent_change() +/obj/item/reagent_containers/food/drinks/drinkingglass/cola + reagents_to_add = list(/decl/reagent/drink/space_cola = 50) diff --git a/code/modules/reagents/reagent_containers/food/lunch.dm b/code/modules/reagents/reagent_containers/food/lunch.dm index fa85e8f975f..3bc5d79c334 100644 --- a/code/modules/reagents/reagent_containers/food/lunch.dm +++ b/code/modules/reagents/reagent_containers/food/lunch.dm @@ -70,30 +70,30 @@ var/list/lunchables_drinks_ = list( // This default list is a bit different, it contains items we don't want var/list/lunchables_drink_reagents_ = list( - /datum/reagent/drink/nothing, - /datum/reagent/drink/doctorsdelight, - /datum/reagent/drink/dry_ramen, - /datum/reagent/drink/hell_ramen, - /datum/reagent/drink/hot_ramen, - /datum/reagent/drink/nuka_cola + /decl/reagent/drink/nothing, + /decl/reagent/drink/doctorsdelight, + /decl/reagent/drink/dry_ramen, + /decl/reagent/drink/hell_ramen, + /decl/reagent/drink/hot_ramen, + /decl/reagent/drink/nuka_cola ) // This default list is a bit different, it contains items we don't want var/list/lunchables_alcohol_reagents_ = list( - /datum/reagent/alcohol/ethanol, - /datum/reagent/alcohol/butanol, - /datum/reagent/alcohol/ethanol/acid_spit, - /datum/reagent/alcohol/ethanol/atomicbomb, - /datum/reagent/alcohol/ethanol/beepsky_smash, - /datum/reagent/alcohol/ethanol/coffee, - /datum/reagent/alcohol/ethanol/hippiesdelight, - /datum/reagent/alcohol/ethanol/hooch, - /datum/reagent/alcohol/ethanol/thirteenloko, - /datum/reagent/alcohol/ethanol/manhattan_proj, - /datum/reagent/alcohol/ethanol/neurotoxin, - /datum/reagent/alcohol/ethanol/pwine, - /datum/reagent/alcohol/ethanol/threemileisland, - /datum/reagent/alcohol/ethanol/toxins_special + /decl/reagent/alcohol, + /decl/reagent/alcohol/butanol, + /decl/reagent/alcohol/acid_spit, + /decl/reagent/alcohol/atomicbomb, + /decl/reagent/alcohol/beepsky_smash, + /decl/reagent/alcohol/coffee, + /decl/reagent/alcohol/hippiesdelight, + /decl/reagent/alcohol/hooch, + /decl/reagent/alcohol/thirteenloko, + /decl/reagent/alcohol/manhattan_proj, + /decl/reagent/alcohol/neurotoxin, + /decl/reagent/alcohol/pwine, + /decl/reagent/alcohol/threemileisland, + /decl/reagent/alcohol/toxins_special ) /proc/lunchables_lunches() @@ -113,12 +113,12 @@ var/list/lunchables_alcohol_reagents_ = list( /proc/lunchables_drink_reagents() if(!(lunchables_drink_reagents_[lunchables_drink_reagents_[1]])) - lunchables_drink_reagents_ = init_lunchable_reagent_list(lunchables_drink_reagents_, /datum/reagent/drink) + lunchables_drink_reagents_ = init_lunchable_reagent_list(lunchables_drink_reagents_, /decl/reagent/drink) return lunchables_drink_reagents_ /proc/lunchables_alcohol_reagents() if(!(lunchables_alcohol_reagents_[lunchables_alcohol_reagents_[1]])) - lunchables_alcohol_reagents_ = init_lunchable_reagent_list(lunchables_alcohol_reagents_, /datum/reagent/alcohol) + lunchables_alcohol_reagents_ = init_lunchable_reagent_list(lunchables_alcohol_reagents_, /decl/reagent/alcohol) return lunchables_alcohol_reagents_ /proc/init_lunchable_list(var/list/lunches) @@ -134,7 +134,7 @@ var/list/lunchables_alcohol_reagents_ = list( for(var/reagent_type in subtypesof(reagent_types)) if(reagent_type in banned_reagents) continue - var/datum/reagent/reagent = reagent_type + var/decl/reagent/reagent = reagent_type .[initial(reagent.name)] = reagent_type sortTim(., /proc/cmp_text_asc) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 1009c628b6c..3ea253e5230 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -11,7 +11,7 @@ var/slices_num var/dried_type = null var/dry = 0 - var/datum/reagent/nutriment/coating/coating = null + var/decl/reagent/nutriment/coating/coating = null var/icon/flat_icon = null //Used to cache a flat icon generated from dipping in batter. This is used again to make the cooked-batter-overlay var/do_coating_prefix = TRUE //If 0, we wont do "battered thing" or similar prefixes. Mainly for recipes that include batter but have a special name @@ -78,7 +78,7 @@ else var/fullness = 0 if(!istype(user, /mob/living/carbon)) - fullness = user.max_nutrition > 0 ? (user.nutrition + (user.reagents.get_reagent_amount(/datum/reagent/nutriment) * 25)) / user.max_nutrition : CREW_NUTRITION_OVEREATEN + 0.01 + fullness = user.max_nutrition > 0 ? (user.nutrition + (REAGENT_VOLUME(user.reagents, /decl/reagent/nutriment) * 25)) / user.max_nutrition : CREW_NUTRITION_OVEREATEN + 0.01 else var/mob/living/carbon/eater = user fullness = eater.get_fullness() @@ -257,54 +257,50 @@ //Code for dipping food in batter /obj/item/reagent_containers/food/snacks/afterattack(obj/O as obj, mob/user as mob, proximity) - if(O.is_open_container() && O.reagents && !(istype(O, /obj/item/reagent_containers/food)) && proximity) - for (var/r in O.reagents.reagent_list) + if(O.is_open_container() && !(istype(O, /obj/item/reagent_containers/food)) && proximity) + for (var/r in O.reagents.reagent_volumes) - var/datum/reagent/R = r - if (istype(R, /datum/reagent/nutriment/coating)) - if (apply_coating(R, user)) - return 1 + var/decl/reagent/R = r + if (istype(R, /decl/reagent/nutriment/coating)) + if (apply_coating(O.reagents, R, user)) + return TRUE return ..() //This proc handles drawing coatings out of a container when this food is dipped into it -/obj/item/reagent_containers/food/snacks/proc/apply_coating(var/datum/reagent/nutriment/coating/C, var/mob/user) +/obj/item/reagent_containers/food/snacks/proc/apply_coating(var/datum/reagents/holder, var/decl/reagent/nutriment/coating/C, var/mob/user) if (coating) to_chat(user, "The [src] is already coated in [coating.name]!") - return 0 + return FALSE //Calculate the reagents of the coating needed var/req = 0 - for (var/r in reagents.reagent_list) - var/datum/reagent/R = r - if (istype(R, /datum/reagent/nutriment)) - req += R.volume * 0.2 + for (var/r in reagents.reagent_volumes) + var/decl/reagent/R = r + if (istype(R, /decl/reagent/nutriment)) + req += reagents.reagent_volumes[r] * 0.2 else - req += R.volume * 0.1 + req += reagents.reagent_volumes[r] * 0.1 req += w_class*0.5 if (!req) - //the food has no reagents left, its probably getting deleted soon - return 0 + //the food has no reagents left, it's probably getting deleted soon + return FALSE - if (C.volume < req) + if (holder.reagent_volumes[C.type] < req) to_chat(user, SPAN_WARNING("There's not enough [C.name] to coat the [src]!")) - return 0 - - var/id = C.type + return FALSE //First make sure there's space for our batter - if (reagents.get_free_space() < req+5) - var/extra = req+5 - reagents.get_free_space() + if (REAGENTS_FREE_SPACE(reagents) < req+5) + var/extra = req+5 - REAGENTS_FREE_SPACE(reagents) reagents.maximum_volume += extra //Suck the coating out of the holder - C.holder.trans_to_holder(reagents, req) + holder.trans_to_holder(reagents, req) - //We're done with C now, repurpose the var to hold a reference to our local instance of it - C = reagents.get_reagent(id) - if (!C) + if (!REAGENT_VOLUME(reagents, C.type)) return coating = C @@ -324,9 +320,9 @@ add_overlay(J) if (user) - user.visible_message(SPAN_NOTICE("[user] dips \the [src] into \the [coating.name]"), SPAN_NOTICE("You dip \the [src] into \the [coating.name]")) + user.visible_message(SPAN_NOTICE("[user] dips [src] into \the [coating.name]"), SPAN_NOTICE("You dip [src] into \the [coating.name]")) - return 1 + return TRUE //Called by cooking machines. This is mainly intended to set properties on the food that differ between raw/cooked /obj/item/reagent_containers/food/snacks/proc/cook() @@ -356,11 +352,13 @@ if (do_coating_prefix == 1) name = "[coating.coated_adj] [name]" - for (var/r in reagents.reagent_list) - var/datum/reagent/R = r - if (istype(R, /datum/reagent/nutriment/coating)) - var/datum/reagent/nutriment/coating/C = R - C.data["cooked"] = 1 + for (var/r in reagents.reagent_volumes) + var/decl/reagent/R = r + if (istype(R, /decl/reagent/nutriment/coating)) + var/decl/reagent/nutriment/coating/C = R + LAZYINITLIST(reagents.reagent_data) + LAZYINITLIST(reagents.reagent_data[r]) + reagents.reagent_data[r]["cooked"] = TRUE C.name = C.cooked_name // A proc for setting various flavors of the same type of food instead of creating new foods with the only difference being a flavor @@ -422,7 +420,7 @@ // 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 -// reagents_to_add = list(/datum/reagent/xenomicrobes = 10, /datum/reagent/nutriment = 2) //This is what is in the food item. +// reagents_to_add = list(/decl/reagent/xenomicrobes = 10, /decl/reagent/nutriment = 2) //This is what is in the food item. // bitesize = 3 //This is the amount each bite consumes. /obj/item/reagent_containers/food/snacks/koisbar_clean @@ -432,7 +430,7 @@ trash = /obj/item/trash/koisbar filling_color = "#dcd9cd" bitesize = 5 - reagents_to_add = list(/datum/reagent/kois/clean = 10, /datum/reagent/toxin/phoron = 15) + reagents_to_add = list(/decl/reagent/kois/clean = 10, /decl/reagent/toxin/phoron = 15) /obj/item/reagent_containers/food/snacks/koisbar name = "organic k'ois bar" @@ -441,7 +439,7 @@ trash = /obj/item/trash/koisbar filling_color = "#dcd9cd" bitesize = 5 - reagents_to_add = list(/datum/reagent/kois = 10, /datum/reagent/toxin/phoron = 15) + reagents_to_add = list(/decl/reagent/kois = 10, /decl/reagent/toxin/phoron = 15) /obj/item/reagent_containers/food/snacks/salad/aesirsalad name = "aesir salad" @@ -450,8 +448,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#468C00" - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/drink/doctorsdelight = 8, /datum/reagent/tricordrazine = 8) - reagent_data = list(/datum/reagent/nutriment = list("apples" = 3,"salad" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/drink/doctorsdelight = 8, /decl/reagent/tricordrazine = 8) + reagent_data = list(/decl/reagent/nutriment = list("apples" = 3,"salad" = 5)) bitesize = 3 /obj/item/reagent_containers/food/snacks/candy @@ -461,8 +459,8 @@ trash = /obj/item/trash/candy filling_color = "#7D5F46" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/sugar = 3) - reagent_data = list(/datum/reagent/nutriment = list("chocolate" = 2, "nougat" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/sugar = 3) + reagent_data = list(/decl/reagent/nutriment = list("chocolate" = 2, "nougat" = 1)) bitesize = 2 /obj/item/reagent_containers/food/snacks/candy/koko @@ -472,8 +470,8 @@ trash = /obj/item/trash/kokobar filling_color = "#7D5F46" - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/sugar = 3, /datum/reagent/mental/kokoreed = 7) - reagent_data = list(/datum/reagent/nutriment = list("koko reed" = 2, "fibers" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/sugar = 3, /decl/reagent/mental/kokoreed = 7) + reagent_data = list(/decl/reagent/nutriment = list("koko reed" = 2, "fibers" = 1)) bitesize = 2 /obj/item/reagent_containers/food/snacks/candy/donor @@ -481,10 +479,10 @@ icon_state = "candy" desc = "A little treat for blood donors. Made with real sugar!" trash = /obj/item/trash/candy - reagent_data = list(/datum/reagent/nutriment = list("candy" = 10)) + reagent_data = list(/decl/reagent/nutriment = list("candy" = 10)) bitesize = 5 - reagents_to_add = list(/datum/reagent/nutriment = 10, /datum/reagent/sugar = 3) + reagents_to_add = list(/decl/reagent/nutriment = 10, /decl/reagent/sugar = 3) /obj/item/reagent_containers/food/snacks/candy_corn name = "candy corn" @@ -492,8 +490,8 @@ icon_state = "candy_corn" filling_color = "#FFFCB0" - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/sugar = 2) - reagent_data = list(/datum/reagent/nutriment = list("candy corn" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/sugar = 2) + reagent_data = list(/decl/reagent/nutriment = list("candy corn" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/chips @@ -502,8 +500,8 @@ icon_state = "chips" trash = /obj/item/trash/chips filling_color = "#E8C31E" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 3) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("chips" = 3)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 3) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("chips" = 3)) bitesize = 1 /obj/item/reagent_containers/food/snacks/cookie @@ -511,8 +509,8 @@ desc = "COOKIE!!!" icon_state = "COOKIE!!!" filling_color = "#DBC94F" - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/sugar = 3) - reagent_data = list(/datum/reagent/nutriment = list("cookie" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/sugar = 3) + reagent_data = list(/decl/reagent/nutriment = list("cookie" = 2)) bitesize = 1 /obj/item/storage/box/fancy/cookiesnack @@ -541,8 +539,8 @@ slot_flags = SLOT_EARS filling_color = "#DBC94F" - reagents_to_add = list(/datum/reagent/nutriment = 0.5) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 1, "stale cookie" = 2, "childhood disappointment" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 0.5) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 1, "stale cookie" = 2, "childhood disappointment" = 1)) bitesize = 1 /obj/item/reagent_containers/food/snacks/chocolatebar @@ -551,8 +549,8 @@ icon_state = "chocolatebar" filling_color = "#7D5F46" - reagents_to_add = list(/datum/reagent/nutriment = 2) - reagent_data = list(/datum/reagent/nutriment = list("chocolate" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 2) + reagent_data = list(/decl/reagent/nutriment = list("chocolate" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/chocolateegg @@ -561,8 +559,8 @@ icon_state = "chocolateegg" filling_color = "#7D5F46" - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("chocolate" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("chocolate" = 5)) bitesize = 2 //a random egg that can spawn only on easter. It has really good food values because it's rare @@ -572,8 +570,8 @@ icon_state = "egg-yellow" filling_color = "#7D5F46" - reagents_to_add = list(/datum/reagent/nutriment = 12) - reagent_data = list(/datum/reagent/nutriment = list("chocolate" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 12) + reagent_data = list(/decl/reagent/nutriment = list("chocolate" = 5)) bitesize = 6 /obj/item/reagent_containers/food/snacks/donut @@ -582,38 +580,38 @@ icon_state = "donut1" filling_color = "#D9C386" overlay_state = "box-donut1" - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) /obj/item/reagent_containers/food/snacks/donut/normal name = "donut" desc = "Goes great with Robust Coffee." icon_state = "donut1" - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/donut/normal/psdonut name = "pumpkin spice donut" desc = "A limited edition seasonal pastry." icon_state = "donut_ps" - reagent_data = list(/datum/reagent/nutriment = list("pumpkin spice" = 1, "donut" = 2)) + reagent_data = list(/decl/reagent/nutriment = list("pumpkin spice" = 1, "donut" = 2)) - reagents_to_add = list(/datum/reagent/nutriment/sprinkles = 1) + reagents_to_add = list(/decl/reagent/nutriment/sprinkles = 1) /obj/item/reagent_containers/food/snacks/donut/normal/Initialize() . = ..() if(prob(30)) src.icon_state = "donut2" src.overlay_state = "box-donut2" src.name = "frosted donut" - reagents.add_reagent(/datum/reagent/nutriment/sprinkles, 2) + reagents.add_reagent(/decl/reagent/nutriment/sprinkles, 2) /obj/item/reagent_containers/food/snacks/donut/chaos name = "chaos donut" desc = "Like life, it never quite tastes the same." icon_state = "donut1" filling_color = "#ED11E6" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment = 5, /datum/reagent/nutriment/sprinkles = 1) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment = 5, /decl/reagent/nutriment/sprinkles = 1) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) bitesize = 10 /obj/item/reagent_containers/food/snacks/donut/chaos/Initialize() @@ -621,81 +619,81 @@ var/chaosselect = pick(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) switch(chaosselect) if(1) - reagents.add_reagent(/datum/reagent/nutriment, 3) + reagents.add_reagent(/decl/reagent/nutriment, 3) if(2) - reagents.add_reagent(/datum/reagent/capsaicin, 3) + reagents.add_reagent(/decl/reagent/capsaicin, 3) if(3) - reagents.add_reagent(/datum/reagent/frostoil, 3) + reagents.add_reagent(/decl/reagent/frostoil, 3) if(4) - reagents.add_reagent(/datum/reagent/nutriment/sprinkles, 3) + reagents.add_reagent(/decl/reagent/nutriment/sprinkles, 3) if(5) - reagents.add_reagent(/datum/reagent/toxin/phoron, 3) + reagents.add_reagent(/decl/reagent/toxin/phoron, 3) if(6) - reagents.add_reagent(/datum/reagent/nutriment/coco, 3) + reagents.add_reagent(/decl/reagent/nutriment/coco, 3) if(7) - reagents.add_reagent(/datum/reagent/slimejelly, 3) + reagents.add_reagent(/decl/reagent/slimejelly, 3) if(8) - reagents.add_reagent(/datum/reagent/drink/banana, 3) + reagents.add_reagent(/decl/reagent/drink/banana, 3) if(9) - reagents.add_reagent(/datum/reagent/drink/berryjuice, 3) + reagents.add_reagent(/decl/reagent/drink/berryjuice, 3) if(10) - reagents.add_reagent(/datum/reagent/tricordrazine, 3) + reagents.add_reagent(/decl/reagent/tricordrazine, 3) if(prob(30)) src.icon_state = "donut2" src.overlay_state = "box-donut2" src.name = "Frosted Chaos Donut" - reagents.add_reagent(/datum/reagent/nutriment/sprinkles, 2) + reagents.add_reagent(/decl/reagent/nutriment/sprinkles, 2) /obj/item/reagent_containers/food/snacks/donut/jelly name = "jelly donut" desc = "You jelly?" icon_state = "jdonut1" filling_color = "#ED1169" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/sprinkles = 1, /datum/reagent/drink/berryjuice = 5) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/sprinkles = 1, /decl/reagent/drink/berryjuice = 5) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) bitesize = 5 /obj/item/reagent_containers/food/snacks/donut/jelly/Initialize() + . = ..() if(prob(30)) src.icon_state = "jdonut2" src.overlay_state = "box-donut2" src.name = "Frosted Jelly Donut" - reagents_to_add += list(/datum/reagent/nutriment/sprinkles = 2) - . = ..() + reagents.add_reagent(/decl/reagent/nutriment/sprinkles, 2) /obj/item/reagent_containers/food/snacks/donut/slimejelly name = "jelly donut" desc = "You jelly?" icon_state = "jdonut1" filling_color = "#ED1169" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/sprinkles = 1, /datum/reagent/slimejelly = 5) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/sprinkles = 1, /decl/reagent/slimejelly = 5) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) bitesize = 5 /obj/item/reagent_containers/food/snacks/donut/slimejelly/Initialize() + . = ..() if(prob(30)) src.icon_state = "jdonut2" src.overlay_state = "box-donut2" src.name = "Frosted Jelly Donut" - reagents_to_add += list(/datum/reagent/nutriment/sprinkles = 2) - . = ..() + reagents.add_reagent(/decl/reagent/nutriment/sprinkles, 2) /obj/item/reagent_containers/food/snacks/donut/cherryjelly name = "jelly donut" desc = "You jelly?" icon_state = "jdonut1" filling_color = "#ED1169" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment = 3, /datum/reagent/nutriment/sprinkles = 1, /datum/reagent/nutriment/cherryjelly = 5) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/sprinkles = 1, /decl/reagent/nutriment/cherryjelly = 5) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 1, "donut" = 2)) bitesize = 5 /obj/item/reagent_containers/food/snacks/donut/cherryjelly/Initialize() + . = ..() if(prob(30)) src.icon_state = "jdonut2" src.overlay_state = "box-donut2" src.name = "Frosted Jelly Donut" - reagents_to_add += list(/datum/reagent/nutriment/sprinkles = 2) - . = ..() + reagents.add_reagent(/decl/reagent/nutriment/sprinkles, 2) /obj/item/reagent_containers/food/snacks/funnelcake name = "funnel cake" @@ -704,7 +702,7 @@ filling_color = "#Ef1479" do_coating_prefix = 0 bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/coating/batter = 10, /datum/reagent/sugar = 5) + reagents_to_add = list(/decl/reagent/nutriment/coating/batter = 10, /decl/reagent/sugar = 5) /obj/item/reagent_containers/food/snacks/egg name = "egg" @@ -712,7 +710,7 @@ icon_state = "egg" filling_color = "#FDFFD1" volume = 10 - reagents_to_add = list(/datum/reagent/nutriment/protein/egg = 3) + reagents_to_add = list(/decl/reagent/nutriment/protein/egg = 3) /obj/item/reagent_containers/food/snacks/egg/afterattack(obj/O as obj, mob/user as mob, proximity) if(!(proximity && O.is_open_container())) @@ -774,14 +772,14 @@ icon_state = "friedegg" filling_color = "#FFDF78" bitesize = 1 - reagents_to_add = list(/datum/reagent/nutriment/protein/egg = 3, /datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1) + reagents_to_add = list(/decl/reagent/nutriment/protein/egg = 3, /decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1) /obj/item/reagent_containers/food/snacks/friedegg/overeasy name = "over-easy fried egg" desc = "A fried egg, with a touch of salt and pepper. The yolk looks a bit runny." /obj/item/reagent_containers/food/snacks/friedegg/overeasy/Initialize() - reagent_data = list(/datum/reagent/nutriment/protein = list(pick("disgustingly runny egg yolk", "slimy egg yolk", "gooey eggs", "near-raw runny eggs") = 3)) + reagent_data = list(/decl/reagent/nutriment/protein = list(pick("disgustingly runny egg yolk", "slimy egg yolk", "gooey eggs", "near-raw runny eggs") = 3)) . = ..() /obj/item/reagent_containers/food/snacks/boiledegg @@ -790,7 +788,7 @@ icon_state = "egg" filling_color = "#FFFFFF" - reagents_to_add = list(/datum/reagent/nutriment/protein/egg = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein/egg = 2) /obj/item/reagent_containers/food/snacks/organ name = "organ" @@ -802,8 +800,8 @@ /obj/item/reagent_containers/food/snacks/organ/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/nutriment/protein, rand(3,5)) - reagents.add_reagent(/datum/reagent/toxin, rand(1,3)) + reagents.add_reagent(/decl/reagent/nutriment/protein, rand(3,5)) + reagents.add_reagent(/decl/reagent/toxin, rand(1,3)) /obj/item/reagent_containers/food/snacks/tofu name = "tofu" @@ -813,7 +811,7 @@ center_of_mass = list("x"=17, "y"=10) bitesize = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein/tofu = 3) + reagents_to_add = list(/decl/reagent/nutriment/protein/tofu = 3) /obj/item/reagent_containers/food/snacks/tofurkey name = "tofurkey" @@ -821,8 +819,8 @@ icon_state = "tofurkey" filling_color = "#FFFEE0" - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein/tofu = 6, /datum/reagent/soporific = 3) - reagent_data = list(/datum/reagent/nutriment = list("turkey" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein/tofu = 6, /decl/reagent/soporific = 3) + reagent_data = list(/decl/reagent/nutriment = list("turkey" = 3)) bitesize = 3 /obj/item/reagent_containers/food/snacks/stuffing @@ -831,8 +829,8 @@ icon_state = "stuffing" filling_color = "#C9AC83" - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("dryness" = 2, "bread" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("dryness" = 2, "bread" = 2)) bitesize = 1 /obj/item/reagent_containers/food/snacks/dwellermeat @@ -841,7 +839,7 @@ icon_state = "fishfillet" filling_color = "#FFDEFE" bitesize = 6 - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 6, /datum/reagent/hyperzine = 15, /datum/reagent/acid/polyacid = 6) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 6, /decl/reagent/hyperzine = 15, /decl/reagent/acid/polyacid = 6) /obj/item/reagent_containers/food/snacks/fishfingers name = "fish fingers" @@ -849,7 +847,7 @@ icon_state = "fishfingers" filling_color = "#FFDEFE" bitesize = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 7) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 7) /obj/item/reagent_containers/food/snacks/hugemushroomslice name = "huge mushroom slice" @@ -857,8 +855,8 @@ icon_state = "hugemushroomslice" filling_color = "#E0D7C5" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/psilocybin = 3) - reagent_data = list(/datum/reagent/nutriment = list("raw" = 2, "mushroom" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/psilocybin = 3) + reagent_data = list(/decl/reagent/nutriment = list("raw" = 2, "mushroom" = 2)) bitesize = 6 /obj/item/reagent_containers/food/snacks/tomatomeat @@ -867,8 +865,8 @@ icon_state = "tomatomeat" filling_color = "#DB0000" - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("raw" = 2, "tomato" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("raw" = 2, "tomato" = 3)) bitesize = 6 /obj/item/reagent_containers/food/snacks/bearmeat @@ -877,7 +875,7 @@ icon_state = "bearmeat" filling_color = "#DB0000" bitesize = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein = 12, /datum/reagent/hyperzine = 5) + reagents_to_add = list(/decl/reagent/nutriment/protein = 12, /decl/reagent/hyperzine = 5) /obj/item/reagent_containers/food/snacks/xenomeat name = "meat" @@ -886,7 +884,7 @@ filling_color = "#43DE18" bitesize = 6 - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/acid/polyacid = 6) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/acid/polyacid = 6) /obj/item/reagent_containers/food/snacks/meatball name = "meatball" @@ -895,7 +893,7 @@ filling_color = "#DB0000" bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein = 3) + reagents_to_add = list(/decl/reagent/nutriment/protein = 3) /obj/item/reagent_containers/food/snacks/sausage name = "sausage" @@ -904,7 +902,7 @@ filling_color = "#DB0000" bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein = 6) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6) /obj/item/reagent_containers/food/snacks/sausage/battered name = "battered sausage" @@ -913,11 +911,11 @@ filling_color = "#DB0000" do_coating_prefix = 0 bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/nutriment/coating/batter = 1.7, /datum/reagent/nutriment/triglyceride/oil = 1.5) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/coating/batter = 1.7, /decl/reagent/nutriment/triglyceride/oil = 1.5) /obj/item/reagent_containers/food/snacks/sausage/battered/Initialize() . = ..() - coating = reagents.get_reagent(/datum/reagent/nutriment/coating/batter) + coating = decls_repository.get_decl(/decl/reagent/nutriment/coating/batter) /obj/item/reagent_containers/food/snacks/jalapeno_poppers name = "jalapeno popper" @@ -926,13 +924,13 @@ filling_color = "#00AA00" do_coating_prefix = 0 - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/nutriment/coating/batter = 2, /datum/reagent/nutriment/triglyceride/oil = 2) - reagent_data = list(/datum/reagent/nutriment = list("chilli pepper" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/nutriment/coating/batter = 2, /decl/reagent/nutriment/triglyceride/oil = 2) + reagent_data = list(/decl/reagent/nutriment = list("chilli pepper" = 2)) bitesize = 1 /obj/item/reagent_containers/food/snacks/jalapeno_poppers/Initialize() . = ..() - coating = reagents.get_reagent(/datum/reagent/nutriment/coating/batter) + coating = decls_repository.get_decl(/decl/reagent/nutriment/coating/batter) /obj/item/reagent_containers/food/snacks/donkpocket name = "Donk-pocket" @@ -940,22 +938,22 @@ icon_state = "donkpocket" filling_color = "#DEDEAB" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/nutriment/protein = 2) - reagent_data = list(/datum/reagent/nutriment = list("heartiness" = 1, "dough" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/nutriment/protein = 2) + reagent_data = list(/decl/reagent/nutriment = list("heartiness" = 1, "dough" = 2)) /obj/item/reagent_containers/food/snacks/donkpocket/warm name = "cooked Donk-pocket" desc = "The cooked, reheatable food of choice for the seasoned spaceman." - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 1, /datum/reagent/tricordrazine = 5) - reagent_data = list(/datum/reagent/nutriment = list("warm heartiness" = 1, "dough" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 1, /decl/reagent/tricordrazine = 5) + reagent_data = list(/decl/reagent/nutriment = list("warm heartiness" = 1, "dough" = 2)) /obj/item/reagent_containers/food/snacks/donkpocket/sinpocket - reagent_data = list(/datum/reagent/nutriment = list("delicious cruelty" = 1, "dough" = 2)) + reagent_data = list(/decl/reagent/nutriment = list("delicious cruelty" = 1, "dough" = 2)) filling_color = "#6D6D00" desc_antag = "Use it in hand to heat and release chemicals." var/has_been_heated = FALSE - reagents_to_add = list(/datum/reagent/nutriment/protein = 1, /datum/reagent/nutriment = 3) + reagents_to_add = list(/decl/reagent/nutriment/protein = 1, /decl/reagent/nutriment = 3) /obj/item/reagent_containers/food/snacks/donkpocket/sinpocket/attack_self(mob/user) if(has_been_heated) @@ -965,9 +963,9 @@ user.visible_message(SPAN_NOTICE("[user] crushes \the [src] package."), "You crush \the [src] package and feel it rapidly heat up.") name = "cooked Donk-pocket" desc = "The cooked, reheatable food of choice for the seasoned spaceman." - reagents.add_reagent(/datum/reagent/drink/doctorsdelight, 5) - reagents.add_reagent(/datum/reagent/hyperzine, 1.5) - reagents.add_reagent(/datum/reagent/synaptizine, 1.25) + reagents.add_reagent(/decl/reagent/drink/doctorsdelight, 5) + reagents.add_reagent(/decl/reagent/hyperzine, 1.5) + reagents.add_reagent(/decl/reagent/synaptizine, 1.25) /obj/item/reagent_containers/food/snacks/burger/brain name = "brainburger" @@ -977,7 +975,7 @@ center_of_mass = list("x"=15, "y"=11) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 6, /datum/reagent/alkysine = 6) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 6, /decl/reagent/alkysine = 6) /obj/item/reagent_containers/food/snacks/burger/ghost name = "ghost burger" @@ -986,8 +984,8 @@ filling_color = "#FFF2FF" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("buns" = 3, "spookiness" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("buns" = 3, "spookiness" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/human @@ -1002,15 +1000,15 @@ center_of_mass = list("x"=16, "y"=11) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 6) - reagent_data = list(/datum/reagent/nutriment = list("buns" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 6) + reagent_data = list(/decl/reagent/nutriment = list("buns" = 3)) /obj/item/reagent_containers/food/snacks/burger/cheese name = "cheeseburger" desc = "The cheese adds a good flavor." icon_state = "cheeseburger" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein/cheese = 2, /datum/reagent/nutriment/protein = 3) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein/cheese = 2, /decl/reagent/nutriment/protein = 3) /obj/item/reagent_containers/food/snacks/burger name = "burger" @@ -1018,8 +1016,8 @@ icon_state = "hburger" filling_color = "#D63C3C" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 3) - reagent_data = list(/datum/reagent/nutriment = list("bun" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 3) + reagent_data = list(/decl/reagent/nutriment = list("bun" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/burger/fish @@ -1029,7 +1027,7 @@ filling_color = "#FFDEFE" center_of_mass = list("x"=16, "y"=10) bitesize = 3 - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein/seafood = 6) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein/seafood = 6) /obj/item/reagent_containers/food/snacks/burger/tofu name = "tofu burger" @@ -1038,8 +1036,8 @@ filling_color = "#FFFEE0" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein/tofu = 3) - reagent_data = list(/datum/reagent/nutriment = list("bun" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein/tofu = 3) + reagent_data = list(/decl/reagent/nutriment = list("bun" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/burger/robo @@ -1048,14 +1046,14 @@ icon_state = "roburger" filling_color = "#CCCCCC" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("bun" = 3, "metal" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("bun" = 3, "metal" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/burger/robo/Initialize() . = ..() if(prob(5)) - reagents.add_reagent(/datum/reagent/toxin/nanites, 2) + reagents.add_reagent(/decl/reagent/toxin/nanites, 2) /obj/item/reagent_containers/food/snacks/burger/robobig name = "roburger" @@ -1065,7 +1063,7 @@ volume = 100 center_of_mass = list("x"=16, "y"=11) bitesize = 0.1 - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/toxin/nanites = 100) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/toxin/nanites = 100) /obj/item/reagent_containers/food/snacks/burger/xeno name = "xenoburger" @@ -1075,7 +1073,7 @@ center_of_mass = list("x"=16, "y"=11) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 8) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 8) /obj/item/reagent_containers/food/snacks/burger/clown name = "clown burger" @@ -1083,8 +1081,8 @@ icon_state = "clownburger" filling_color = "#FF00FF" center_of_mass = list("x"=17, "y"=12) - reagents_to_add = list(/datum/reagent/nutriment = 6) - reagent_data = list(/datum/reagent/nutriment = list("bun" = 3, "crayons" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 6) + reagent_data = list(/decl/reagent/nutriment = list("bun" = 3, "crayons" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/burger/mime @@ -1093,8 +1091,8 @@ icon_state = "mimeburger" filling_color = "#FFFFFF" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 6) - reagent_data = list(/datum/reagent/nutriment = list("bun" = 3, "paint" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 6) + reagent_data = list(/decl/reagent/nutriment = list("bun" = 3, "paint" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/burger/mouse @@ -1104,7 +1102,7 @@ center_of_mass = list("x"=16, "y"=11) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 5) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 5) /obj/item/reagent_containers/food/snacks/omelette name = "omelette du fromage" @@ -1115,7 +1113,7 @@ center_of_mass = list("x"=16, "y"=13) bitesize = 1 - reagents_to_add = list(/datum/reagent/nutriment/protein/egg = 8) + reagents_to_add = list(/decl/reagent/nutriment/protein/egg = 8) /obj/item/reagent_containers/food/snacks/muffin name = "muffin" @@ -1123,8 +1121,8 @@ icon_state = "muffin" filling_color = "#E0CF9B" center_of_mass = list("x"=17, "y"=4) - reagents_to_add = list(/datum/reagent/nutriment = 6) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 3, "muffin" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 6) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 3, "muffin" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/pie @@ -1134,8 +1132,8 @@ trash = /obj/item/trash/plate filling_color = "#FBFFB8" center_of_mass = list("x"=16, "y"=13) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/drink/banana = 5) - reagent_data = list(/datum/reagent/nutriment = list("pie" = 3, "cream" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/drink/banana = 5) + reagent_data = list(/decl/reagent/nutriment = list("pie" = 3, "cream" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/pie/throw_impact(atom/hit_atom) @@ -1150,8 +1148,8 @@ icon_state = "berryclafoutis" trash = /obj/item/trash/plate center_of_mass = list("x"=16, "y"=13) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/drink/berryjuice = 5) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 2, "pie" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/drink/berryjuice = 5) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 2, "pie" = 3)) bitesize = 3 /obj/item/reagent_containers/food/snacks/waffles @@ -1162,8 +1160,8 @@ drop_sound = /decl/sound_category/tray_hit_sound filling_color = "#E6DEB5" center_of_mass = list("x"=15, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 8) - reagent_data = list(/datum/reagent/nutriment = list("waffle" = 8)) + reagents_to_add = list(/decl/reagent/nutriment = 8) + reagent_data = list(/decl/reagent/nutriment = list("waffle" = 8)) bitesize = 2 /obj/item/reagent_containers/food/snacks/eggplantparm @@ -1173,8 +1171,8 @@ trash = /obj/item/trash/plate filling_color = "#4D2F5E" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein/cheese = 5) - reagent_data = list(/datum/reagent/nutriment = list("eggplant" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein/cheese = 5) + reagent_data = list(/decl/reagent/nutriment = list("eggplant" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/soywafers @@ -1185,8 +1183,8 @@ drop_sound = /decl/sound_category/tray_hit_sound filling_color = "#E6FA61" center_of_mass = list("x"=15, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 10) - reagent_data = list(/datum/reagent/nutriment = list("bland dry soy" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 10) + reagent_data = list(/decl/reagent/nutriment = list("bland dry soy" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/meatpie @@ -1198,7 +1196,7 @@ center_of_mass = list("x"=16, "y"=13) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein = 10) + reagents_to_add = list(/decl/reagent/nutriment/protein = 10) /obj/item/reagent_containers/food/snacks/tofupie name = "tofu-pie" @@ -1207,8 +1205,8 @@ trash = /obj/item/trash/plate filling_color = "#FFFEE0" center_of_mass = list("x"=16, "y"=13) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/nutriment/protein/tofu = 3) - reagent_data = list(/datum/reagent/nutriment = list("pie" = 8)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/nutriment/protein/tofu = 3) + reagent_data = list(/decl/reagent/nutriment = list("pie" = 8)) bitesize = 2 /obj/item/reagent_containers/food/snacks/amanita_pie @@ -1217,8 +1215,8 @@ icon_state = "amanita_pie" filling_color = "#FFCCCC" center_of_mass = list("x"=17, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/toxin/amatoxin = 3, /datum/reagent/psilocybin = 1) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 3, "mushroom" = 3, "pie" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/toxin/amatoxin = 3, /decl/reagent/psilocybin = 1) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 3, "mushroom" = 3, "pie" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/plump_pie @@ -1227,8 +1225,8 @@ icon_state = "plump_pie" filling_color = "#B8279B" center_of_mass = list("x"=17, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 8) - reagent_data = list(/datum/reagent/nutriment = list("heartiness" = 2, "mushroom" = 3, "pie" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 8) + reagent_data = list(/decl/reagent/nutriment = list("heartiness" = 2, "mushroom" = 3, "pie" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/plump_pie/Initialize() @@ -1236,7 +1234,7 @@ if(prob(10)) name = "exceptional plump pie" desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!" - reagents.add_reagent(/datum/reagent/tricordrazine, 5) + reagents.add_reagent(/decl/reagent/tricordrazine, 5) /obj/item/reagent_containers/food/snacks/xemeatpie name = "xeno-pie" @@ -1247,7 +1245,7 @@ center_of_mass = list("x"=16, "y"=13) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein = 10) + reagents_to_add = list(/decl/reagent/nutriment/protein = 10) /obj/item/reagent_containers/food/snacks/wingfangchu name = "wing fang chu" @@ -1258,7 +1256,7 @@ center_of_mass = list("x"=17, "y"=9) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein = 6) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6) /obj/item/reagent_containers/food/snacks/human/kabob name = "-kabob" @@ -1269,7 +1267,7 @@ center_of_mass = list("x"=17, "y"=15) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein = 8) + reagents_to_add = list(/decl/reagent/nutriment/protein = 8) /obj/item/reagent_containers/food/snacks/monkeykabob name = "meat-kabob" @@ -1280,7 +1278,7 @@ center_of_mass = list("x"=17, "y"=15) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein = 8) + reagents_to_add = list(/decl/reagent/nutriment/protein = 8) /obj/item/reagent_containers/food/snacks/tofukabob name = "tofu-kabob" @@ -1291,7 +1289,7 @@ center_of_mass = list("x"=17, "y"=15) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein/tofu = 8) + reagents_to_add = list(/decl/reagent/nutriment/protein/tofu = 8) /obj/item/reagent_containers/food/snacks/cubancarp name = "cuban fish sandwich" @@ -1301,7 +1299,7 @@ filling_color = "#E9ADFF" center_of_mass = list("x"=12, "y"=5) bitesize = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 3, /datum/reagent/nutriment = 3, /datum/reagent/capsaicin = 3) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 3, /decl/reagent/nutriment = 3, /decl/reagent/capsaicin = 3) /obj/item/reagent_containers/food/snacks/chickenkatsu name = "chicken katsu" @@ -1312,7 +1310,7 @@ center_of_mass = list("x"=16, "y"=16) do_coating_prefix = 0 bitesize = 1.5 - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/nutriment/coating/beerbatter = 2, /datum/reagent/nutriment/triglyceride/oil = 1) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/coating/beerbatter = 2, /decl/reagent/nutriment/triglyceride/oil = 1) /obj/item/reagent_containers/food/snacks/popcorn name = "popcorn" @@ -1322,8 +1320,8 @@ var/unpopped = 0 filling_color = "#FFFAD4" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/datum/reagent/nutriment = 2) - reagent_data = list(/datum/reagent/nutriment = list("popcorn" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 2) + reagent_data = list(/decl/reagent/nutriment = list("popcorn" = 3)) bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0 /obj/item/reagent_containers/food/snacks/popcorn/Initialize() @@ -1345,7 +1343,7 @@ center_of_mass = list("x"=15, "y"=9) bitesize = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein = 4, /datum/reagent/sodiumchloride = 3) + reagents_to_add = list(/decl/reagent/nutriment/protein = 4, /decl/reagent/sodiumchloride = 3) /obj/item/reagent_containers/food/snacks/no_raisin name = "4no Raisins" @@ -1354,8 +1352,8 @@ trash = /obj/item/trash/raisins filling_color = "#343834" center_of_mass = list("x"=15, "y"=4) - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 6) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("dried raisins" = 6)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 6) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("dried raisins" = 6)) bitesize = 3 /obj/item/reagent_containers/food/snacks/spacetwinkie @@ -1365,8 +1363,8 @@ trash = /obj/item/trash/space_twinkie filling_color = "#FFE591" center_of_mass = list("x"=15, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 4, /datum/reagent/sugar = 4) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("cake" = 3, "cream filling" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 4, /decl/reagent/sugar = 4) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("cake" = 3, "cream filling" = 1)) bitesize = 2 /obj/item/reagent_containers/food/snacks/cheesiehonkers @@ -1376,8 +1374,8 @@ trash = /obj/item/trash/cheesie filling_color = "#FFA305" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 4, /datum/reagent/nutriment/protein/cheese = 3, /datum/reagent/sodiumchloride = 6) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("chips" = 2)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 4, /decl/reagent/nutriment/protein/cheese = 3, /decl/reagent/sodiumchloride = 6) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("chips" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/syndicake @@ -1387,8 +1385,8 @@ filling_color = "#FF5D05" center_of_mass = list("x"=16, "y"=10) trash = /obj/item/trash/syndi_cakes - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/drink/doctorsdelight = 5) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 1,"cream filling" = 3, )) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/drink/doctorsdelight = 5) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 1,"cream filling" = 3, )) bitesize = 3 /obj/item/reagent_containers/food/snacks/loadedbakedpotato @@ -1397,8 +1395,8 @@ icon_state = "loadedbakedpotato" filling_color = "#9C7A68" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 3) - reagent_data = list(/datum/reagent/nutriment = list("baked potato" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 3) + reagent_data = list(/decl/reagent/nutriment = list("baked potato" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/fries @@ -1408,8 +1406,8 @@ trash = /obj/item/trash/plate filling_color = "#EDDD00" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/triglyceride/oil = 1.2) - reagent_data = list(/datum/reagent/nutriment = list("fresh fries" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/triglyceride/oil = 1.2) + reagent_data = list(/decl/reagent/nutriment = list("fresh fries" = 4)) bitesize = 2//This is mainly for the benefit of adminspawning /obj/item/reagent_containers/food/snacks/microchips @@ -1419,8 +1417,8 @@ trash = /obj/item/trash/plate filling_color = "#EDDD00" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("fresh fries" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("fresh fries" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/ovenchips @@ -1430,8 +1428,8 @@ trash = /obj/item/trash/plate filling_color = "#EDDD00" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("fresh fries" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("fresh fries" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/soydope @@ -1441,8 +1439,8 @@ trash = /obj/item/trash/plate filling_color = "#C4BF76" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 2) - reagent_data = list(/datum/reagent/nutriment = list("soy" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2) + reagent_data = list(/decl/reagent/nutriment = list("soy" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/spagetti @@ -1451,8 +1449,8 @@ icon_state = "spagetti" filling_color = "#EDDD00" center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 1) - reagent_data = list(/datum/reagent/nutriment = list("noodles" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 1) + reagent_data = list(/decl/reagent/nutriment = list("noodles" = 2)) bitesize = 1 /obj/item/reagent_containers/food/snacks/cheesyfries @@ -1462,8 +1460,8 @@ trash = /obj/item/trash/plate filling_color = "#EDDD00" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein/cheese = 3) - reagent_data = list(/datum/reagent/nutriment = list("fresh fries" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein/cheese = 3) + reagent_data = list(/decl/reagent/nutriment = list("fresh fries" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/fortunecookie @@ -1472,8 +1470,8 @@ icon_state = "fortune_cookie" filling_color = "#E8E79E" center_of_mass = list("x"=15, "y"=14) - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("fortune cookie" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("fortune cookie" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/badrecipe @@ -1483,7 +1481,7 @@ filling_color = "#211F02" center_of_mass = list("x"=16, "y"=12) bitesize = 2 - reagents_to_add = list(/datum/reagent/toxin = 1, /datum/reagent/carbon = 3) + reagents_to_add = list(/decl/reagent/toxin = 1, /decl/reagent/carbon = 3) /obj/item/reagent_containers/food/snacks/meatsteak name = "meat steak" @@ -1493,7 +1491,7 @@ filling_color = "#7A3D11" center_of_mass = list("x"=16, "y"=13) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/nutriment/triglyceride = 2, /datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/triglyceride = 2, /decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1) /obj/item/reagent_containers/food/snacks/meatsteak/update_icon() var/percent = round((reagents.total_volume / 10) * 100) @@ -1514,7 +1512,7 @@ /obj/item/reagent_containers/food/snacks/meatsteak/grilled name = "grilled steak" desc = "A piece of meat grilled to absolute perfection. Sssssssip. This is the life." - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/nutriment/triglyceride = 2, /datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1, /datum/reagent/spacespice = 1) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/triglyceride = 2, /decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1, /decl/reagent/spacespice = 1) /obj/item/reagent_containers/food/snacks/spacylibertyduff name = "spacy liberty duff" @@ -1523,8 +1521,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#42B873" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/psilocybin = 6) - reagent_data = list(/datum/reagent/nutriment = list("mushroom" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/psilocybin = 6) + reagent_data = list(/decl/reagent/nutriment = list("mushroom" = 6)) bitesize = 3 /obj/item/reagent_containers/food/snacks/amanitajelly @@ -1534,8 +1532,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#ED0758" center_of_mass = list("x"=16, "y"=5) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/toxin/amatoxin = 6, /datum/reagent/psilocybin = 3) - reagent_data = list(/datum/reagent/nutriment = list("jelly" = 3, "mushroom" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/toxin/amatoxin = 6, /decl/reagent/psilocybin = 3) + reagent_data = list(/decl/reagent/nutriment = list("jelly" = 3, "mushroom" = 3)) bitesize = 3 /obj/item/reagent_containers/food/snacks/poppypretzel @@ -1545,15 +1543,15 @@ bitesize = 2 filling_color = "#916E36" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 5) - reagent_data = list(/datum/reagent/nutriment = list("poppy seeds" = 2, "pretzel" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 5) + reagent_data = list(/decl/reagent/nutriment = list("poppy seeds" = 2, "pretzel" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/soup name = "water soup" desc = "Water. And it tastes...fuck all." icon_state = "wishsoup" - reagent_data = list(/datum/reagent/nutriment = list("soup" = 5)) + reagent_data = list(/decl/reagent/nutriment = list("soup" = 5)) trash = /obj/item/trash/snack_bowl center_of_mass = list("x"=16, "y"=8) bitesize = 5 @@ -1565,14 +1563,14 @@ icon_state = "meatballsoup" filling_color = "#785210" - reagents_to_add = list(/datum/reagent/nutriment/protein = 8, /datum/reagent/water = 5) + reagents_to_add = list(/decl/reagent/nutriment/protein = 8, /decl/reagent/water = 5) /obj/item/reagent_containers/food/snacks/soup/slime name = "slime soup" desc = "If no water is available, you may substitute tears." filling_color = "#C4DBA0" - reagents_to_add = list(/datum/reagent/slimejelly = 5, /datum/reagent/water = 10) + reagents_to_add = list(/decl/reagent/slimejelly = 5, /decl/reagent/water = 10) /obj/item/reagent_containers/food/snacks/soup/blood name = "tomato soup" @@ -1580,97 +1578,97 @@ icon_state = "tomatosoup" filling_color = "#FF0000" - reagents_to_add = list(/datum/reagent/nutriment/protein = 2, /datum/reagent/blood = 10, /datum/reagent/water = 5) + reagents_to_add = list(/decl/reagent/nutriment/protein = 2, /decl/reagent/blood = 10, /decl/reagent/water = 5) /obj/item/reagent_containers/food/snacks/clownstears name = "clown's tears" desc = "Not very funny." icon_state = "clownstears" filling_color = "#C4FBFF" - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/drink/banana = 5, /datum/reagent/water = 10) - reagent_data = list(/datum/reagent/nutriment = list("salt" = 1, "the worst joke" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/drink/banana = 5, /decl/reagent/water = 10) + reagent_data = list(/decl/reagent/nutriment = list("salt" = 1, "the worst joke" = 3)) /obj/item/reagent_containers/food/snacks/soup/vegetable name = "vegetable soup" desc = "A true vegan meal" //TODO icon_state = "vegetablesoup" filling_color = "#AFC4B5" - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/water = 5) - reagent_data = list(/datum/reagent/nutriment = list("carrot" = 2, "corn" = 2, "eggplant" = 2, "potato" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/water = 5) + reagent_data = list(/decl/reagent/nutriment = list("carrot" = 2, "corn" = 2, "eggplant" = 2, "potato" = 2)) /obj/item/reagent_containers/food/snacks/soup/nettle name = "nettle soup" desc = "To think, the botanist would've beat you to death with one of these." icon_state = "nettlesoup" filling_color = "#AFC4B5" - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/water = 5, /datum/reagent/tricordrazine = 5) - reagent_data = list(/datum/reagent/nutriment = list("salad" = 4, "egg" = 2, "potato" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/water = 5, /decl/reagent/tricordrazine = 5) + reagent_data = list(/decl/reagent/nutriment = list("salad" = 4, "egg" = 2, "potato" = 2)) /obj/item/reagent_containers/food/snacks/soup/mystery name = "mystery soup" desc = "The mystery is, why aren't you eating it?" icon_state = "mysterysoup" filling_color = "#F082FF" - reagents_to_add = list(/datum/reagent/nutriment = 1) - reagent_data = list(/datum/reagent/nutriment = list("backwash" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 1) + reagent_data = list(/decl/reagent/nutriment = list("backwash" = 1)) /obj/item/reagent_containers/food/snacks/soup/mystery/Initialize() . = ..() switch(rand(1,10)) if(1) - reagents.add_reagent(/datum/reagent/nutriment, 6) - reagents.add_reagent(/datum/reagent/capsaicin, 3) - reagents.add_reagent(/datum/reagent/drink/tomatojuice, 2) + reagents.add_reagent(/decl/reagent/nutriment, 6) + reagents.add_reagent(/decl/reagent/capsaicin, 3) + reagents.add_reagent(/decl/reagent/drink/tomatojuice, 2) if(2) - reagents.add_reagent(/datum/reagent/nutriment, 6) - reagents.add_reagent(/datum/reagent/frostoil, 3) - reagents.add_reagent(/datum/reagent/drink/tomatojuice, 2) + reagents.add_reagent(/decl/reagent/nutriment, 6) + reagents.add_reagent(/decl/reagent/frostoil, 3) + reagents.add_reagent(/decl/reagent/drink/tomatojuice, 2) if(3) - reagents.add_reagent(/datum/reagent/nutriment, 5) - reagents.add_reagent(/datum/reagent/water, 5) - reagents.add_reagent(/datum/reagent/tricordrazine, 5) + reagents.add_reagent(/decl/reagent/nutriment, 5) + reagents.add_reagent(/decl/reagent/water, 5) + reagents.add_reagent(/decl/reagent/tricordrazine, 5) if(4) - reagents.add_reagent(/datum/reagent/nutriment, 5) - reagents.add_reagent(/datum/reagent/water, 10) + reagents.add_reagent(/decl/reagent/nutriment, 5) + reagents.add_reagent(/decl/reagent/water, 10) if(5) - reagents.add_reagent(/datum/reagent/nutriment, 2) - reagents.add_reagent(/datum/reagent/drink/banana, 10) + reagents.add_reagent(/decl/reagent/nutriment, 2) + reagents.add_reagent(/decl/reagent/drink/banana, 10) if(6) - reagents.add_reagent(/datum/reagent/nutriment, 6) - reagents.add_reagent(/datum/reagent/blood, 10) + reagents.add_reagent(/decl/reagent/nutriment, 6) + reagents.add_reagent(/decl/reagent/blood, 10) if(7) - reagents.add_reagent(/datum/reagent/slimejelly, 10) - reagents.add_reagent(/datum/reagent/water, 10) + reagents.add_reagent(/decl/reagent/slimejelly, 10) + reagents.add_reagent(/decl/reagent/water, 10) if(8) - reagents.add_reagent(/datum/reagent/carbon, 10) - reagents.add_reagent(/datum/reagent/toxin, 10) + reagents.add_reagent(/decl/reagent/carbon, 10) + reagents.add_reagent(/decl/reagent/toxin, 10) if(9) - reagents.add_reagent(/datum/reagent/nutriment, 5) - reagents.add_reagent(/datum/reagent/drink/tomatojuice, 10) + reagents.add_reagent(/decl/reagent/nutriment, 5) + reagents.add_reagent(/decl/reagent/drink/tomatojuice, 10) if(10) - reagents.add_reagent(/datum/reagent/nutriment, 6) - reagents.add_reagent(/datum/reagent/drink/tomatojuice, 5) - reagents.add_reagent(/datum/reagent/oculine, 5) + reagents.add_reagent(/decl/reagent/nutriment, 6) + reagents.add_reagent(/decl/reagent/drink/tomatojuice, 5) + reagents.add_reagent(/decl/reagent/oculine, 5) /obj/item/reagent_containers/food/snacks/soup/wish name = "wish soup" desc = "I wish this was soup." icon_state = "wishsoup" filling_color = "#D1F4FF" - reagents_to_add = list(/datum/reagent/water = 10) + reagents_to_add = list(/decl/reagent/water = 10) /obj/item/reagent_containers/food/snacks/soup/wish/Initialize() . = ..() if(prob(25)) src.desc = "A wish come true!" - reagents.add_reagent(/datum/reagent/nutriment, 8, list("something good" = 8)) + reagents.add_reagent(/decl/reagent/nutriment, 8, list("something good" = 8)) /obj/item/reagent_containers/food/snacks/soup/diona name = "dionae soup" desc = "An aromatic, healthy dish made from boiled dionae nymph." icon_state = "dionaesoup" - reagent_data = list(/datum/reagent/nutriment = list("diona delicacy" = 5)) - reagents_to_add = list(/datum/reagent/nutriment = 11, /datum/reagent/water = 5, /datum/reagent/radium = 2) + reagent_data = list(/decl/reagent/nutriment = list("diona delicacy" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 11, /decl/reagent/water = 5, /decl/reagent/radium = 2) /obj/item/reagent_containers/food/snacks/hotchili name = "hot chili" @@ -1679,7 +1677,7 @@ trash = /obj/item/trash/snack_bowl filling_color = "#FF3C00" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment = 3, /datum/reagent/capsaicin = 3, /datum/reagent/drink/tomatojuice = 2) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment = 3, /decl/reagent/capsaicin = 3, /decl/reagent/drink/tomatojuice = 2) bitesize = 5 /obj/item/reagent_containers/food/snacks/coldchili @@ -1689,7 +1687,7 @@ filling_color = "#2B00FF" center_of_mass = list("x"=15, "y"=9) trash = /obj/item/trash/snack_bowl - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment = 3, /datum/reagent/frostoil = 3, /datum/reagent/drink/tomatojuice = 2) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment = 3, /decl/reagent/frostoil = 3, /decl/reagent/drink/tomatojuice = 2) bitesize = 5 /obj/item/reagent_containers/food/snacks/monkeycube @@ -1704,7 +1702,7 @@ var/wrapped = 0 var/monkey_type = SPECIES_MONKEY - reagents_to_add = list(/datum/reagent/nutriment/protein = 10) + reagents_to_add = list(/decl/reagent/nutriment/protein = 10) /obj/item/reagent_containers/food/snacks/monkeycube/afterattack(obj/O as obj, var/mob/living/carbon/human/user as mob, proximity) if(!proximity) return @@ -1782,8 +1780,8 @@ desc = "This is absolutely Ei Nath." icon_state = "spellburger" filling_color = "#D505FF" - reagents_to_add = list(/datum/reagent/nutriment = 6) - reagent_data = list(/datum/reagent/nutriment = list("magic" = 3, "buns" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 6) + reagent_data = list(/decl/reagent/nutriment = list("magic" = 3, "buns" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/burger/bigbite @@ -1792,8 +1790,8 @@ icon_state = "bigbiteburger" filling_color = "#E3D681" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein = 10) - reagent_data = list(/datum/reagent/nutriment = list("buns" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein = 10) + reagent_data = list(/decl/reagent/nutriment = list("buns" = 4)) bitesize = 3 /obj/item/reagent_containers/food/snacks/enchiladas @@ -1803,8 +1801,8 @@ trash = /obj/item/trash/tray filling_color = "#A36A1F" center_of_mass = list("x"=16, "y"=13) - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/nutriment/protein = 6, /datum/reagent/capsaicin = 6) - reagent_data = list(/datum/reagent/nutriment = list("tortilla" = 3, "corn" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/nutriment/protein = 6, /decl/reagent/capsaicin = 6) + reagent_data = list(/decl/reagent/nutriment = list("tortilla" = 3, "corn" = 3)) bitesize = 4 /obj/item/reagent_containers/food/snacks/monkeysdelight @@ -1815,7 +1813,7 @@ filling_color = "#5C3C11" center_of_mass = list("x"=16, "y"=13) bitesize = 6 - reagents_to_add = list(/datum/reagent/nutriment/protein = 10, /datum/reagent/drink/banana = 5, /datum/reagent/blackpepper = 1, /datum/reagent/sodiumchloride = 1) + reagents_to_add = list(/decl/reagent/nutriment/protein = 10, /decl/reagent/drink/banana = 5, /decl/reagent/blackpepper = 1, /decl/reagent/sodiumchloride = 1) /obj/item/reagent_containers/food/snacks/baguette name = "baguette" @@ -1823,8 +1821,8 @@ icon_state = "baguette" filling_color = "#E3D796" center_of_mass = list("x"=18, "y"=12) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/blackpepper = 1, /datum/reagent/sodiumchloride = 1) - reagent_data = list(/datum/reagent/nutriment = list("french bread" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/blackpepper = 1, /decl/reagent/sodiumchloride = 1) + reagent_data = list(/decl/reagent/nutriment = list("french bread" = 6)) bitesize = 3 /obj/item/reagent_containers/food/snacks/fishandchips @@ -1833,8 +1831,8 @@ icon_state = "fishandchips" filling_color = "#E3D796" center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein/seafood = 7) - reagent_data = list(/datum/reagent/nutriment = list("salt" = 1, "chips" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein/seafood = 7) + reagent_data = list(/decl/reagent/nutriment = list("salt" = 1, "chips" = 3)) bitesize = 3 /obj/item/reagent_containers/food/snacks/sandwich @@ -1844,8 +1842,8 @@ trash = /obj/item/trash/plate filling_color = "#D9BE29" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 3) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 3, "cheese" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 3) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 3, "cheese" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/toastedsandwich @@ -1855,8 +1853,8 @@ trash = /obj/item/trash/plate filling_color = "#D9BE29" center_of_mass = list("x"=16, "y"=4) - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 3, /datum/reagent/carbon = 2) - reagent_data = list(/datum/reagent/nutriment = list("toasted bread" = 3, "cheese" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 3, /decl/reagent/carbon = 2) + reagent_data = list(/decl/reagent/nutriment = list("toasted bread" = 3, "cheese" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/grilledcheese @@ -1865,8 +1863,8 @@ icon_state = "toastedsandwich" trash = /obj/item/trash/plate filling_color = "#D9BE29" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 4) - reagent_data = list(/datum/reagent/nutriment = list("toasted bread" = 3, "cheese" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 4) + reagent_data = list(/decl/reagent/nutriment = list("toasted bread" = 3, "cheese" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/soup/tomato @@ -1875,7 +1873,7 @@ icon_state = "tomatosoup" filling_color = "#D92929" bitesize = 3 - reagents_to_add = list(/datum/reagent/drink/tomatojuice = 10, /datum/reagent/nutriment = 5) + reagents_to_add = list(/decl/reagent/drink/tomatojuice = 10, /decl/reagent/nutriment = 5) /obj/item/reagent_containers/food/snacks/soup/bluespace name = "bluespace tomato soup" @@ -1884,7 +1882,7 @@ filling_color = "#0066FF" bitesize = 3 - reagents_to_add = list(/datum/reagent/bluespace_dust = 5, /datum/reagent/nutriment = 5) + reagents_to_add = list(/decl/reagent/bluespace_dust = 5, /decl/reagent/nutriment = 5) /obj/item/reagent_containers/food/snacks/rofflewaffles name = "roffle waffles" @@ -1894,8 +1892,8 @@ drop_sound = /decl/sound_category/tray_hit_sound filling_color = "#FF00F7" center_of_mass = list("x"=15, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/psilocybin = 8) - reagent_data = list(/datum/reagent/nutriment = list("waffle" = 7, "sweetness" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/psilocybin = 8) + reagent_data = list(/decl/reagent/nutriment = list("waffle" = 7, "sweetness" = 1)) bitesize = 4 /obj/item/reagent_containers/food/snacks/stew @@ -1907,8 +1905,8 @@ pickup_sound = 'sound/items/pickup/shovel.ogg' filling_color = "#9E673A" center_of_mass = list("x"=16, "y"=5) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein = 4, /datum/reagent/drink/tomatojuice = 5, /datum/reagent/oculine = 5, /datum/reagent/water = 5) - reagent_data = list(/datum/reagent/nutriment = list("potato" = 2, "carrot" = 2, "eggplant" = 2, "mushroom" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein = 4, /decl/reagent/drink/tomatojuice = 5, /decl/reagent/oculine = 5, /decl/reagent/water = 5) + reagent_data = list(/decl/reagent/nutriment = list("potato" = 2, "carrot" = 2, "eggplant" = 2, "mushroom" = 2)) bitesize = 10 is_liquid = TRUE @@ -1919,13 +1917,13 @@ trash = /obj/item/trash/plate filling_color = "#B572AB" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/datum/reagent/nutriment = 1) - reagent_data = list(/datum/reagent/nutriment = list("toasted bread" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 1) + reagent_data = list(/decl/reagent/nutriment = list("toasted bread" = 2)) bitesize = 3 -/obj/item/reagent_containers/food/snacks/jelliedtoast/cherry/reagents_to_add = list(/datum/reagent/nutriment/cherryjelly = 5) +/obj/item/reagent_containers/food/snacks/jelliedtoast/cherry/reagents_to_add = list(/decl/reagent/nutriment/cherryjelly = 5) -/obj/item/reagent_containers/food/snacks/jelliedtoast/slime/reagents_to_add = list(/datum/reagent/slimejelly = 5) +/obj/item/reagent_containers/food/snacks/jelliedtoast/slime/reagents_to_add = list(/decl/reagent/slimejelly = 5) /obj/item/reagent_containers/food/snacks/burger/jelly name = "jelly burger" @@ -1933,19 +1931,19 @@ icon_state = "jellyburger" filling_color = "#B572AB" center_of_mass = list("x"=16, "y"=11) - reagent_data = list(/datum/reagent/nutriment = list("buns" = 3)) + reagent_data = list(/decl/reagent/nutriment = list("buns" = 3)) bitesize = 2 -/obj/item/reagent_containers/food/snacks/burger/jelly/slime/reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/slimejelly = 5) +/obj/item/reagent_containers/food/snacks/burger/jelly/slime/reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/slimejelly = 5) -/obj/item/reagent_containers/food/snacks/burger/jelly/cherry/reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/cherryjelly = 5) +/obj/item/reagent_containers/food/snacks/burger/jelly/cherry/reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/cherryjelly = 5) /obj/item/reagent_containers/food/snacks/soup/milo name = "milosoup" desc = "The universes best soup! Yum!!!" icon_state = "milosoup" - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/water = 5) - reagent_data = list(/datum/reagent/nutriment = list("soy" = 8)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/water = 5) + reagent_data = list(/decl/reagent/nutriment = list("soy" = 8)) bitesize = 4 /obj/item/reagent_containers/food/snacks/stewedsoymeat @@ -1954,8 +1952,8 @@ icon_state = "stewedsoymeat" trash = /obj/item/trash/plate center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 8) - reagent_data = list(/datum/reagent/nutriment = list("soy" = 4, "tomato" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 8) + reagent_data = list(/decl/reagent/nutriment = list("soy" = 4, "tomato" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/boiledspagetti @@ -1965,8 +1963,8 @@ trash = /obj/item/trash/plate filling_color = "#FCEE81" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 2) - reagent_data = list(/datum/reagent/nutriment = list("noodles" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2) + reagent_data = list(/decl/reagent/nutriment = list("noodles" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/boiledrice @@ -1976,8 +1974,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#FFFBDB" center_of_mass = list("x"=17, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 2) - reagent_data = list(/datum/reagent/nutriment = list("rice" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2) + reagent_data = list(/decl/reagent/nutriment = list("rice" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/ricepudding @@ -1987,8 +1985,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#FFFBDB" center_of_mass = list("x"=17, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("rice" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("rice" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/pudding @@ -1997,8 +1995,8 @@ desc = "Bring it to me." trash = /obj/item/trash/plate filling_color = "#FFFEE0" - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("fruit cake" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("fruit cake" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/pastatomato @@ -2008,8 +2006,8 @@ trash = /obj/item/trash/plate filling_color = "#DE4545" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/drink/tomatojuice = 10) - reagent_data = list(/datum/reagent/nutriment = list("tomato" = 3, "noodles" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/drink/tomatojuice = 10) + reagent_data = list(/decl/reagent/nutriment = list("tomato" = 3, "noodles" = 3)) bitesize = 4 /obj/item/reagent_containers/food/snacks/meatballspagetti @@ -2019,8 +2017,8 @@ trash = /obj/item/trash/plate filling_color = "#DE4545" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein = 4) - reagent_data = list(/datum/reagent/nutriment = list("noodles" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein = 4) + reagent_data = list(/decl/reagent/nutriment = list("noodles" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/spesslaw @@ -2029,8 +2027,8 @@ icon_state = "spesslaw" filling_color = "#DE4545" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein = 4) - reagent_data = list(/datum/reagent/nutriment = list("noodles" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein = 4) + reagent_data = list(/decl/reagent/nutriment = list("noodles" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/carrotfries @@ -2040,8 +2038,8 @@ trash = /obj/item/trash/plate filling_color = "#FAA005" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/oculine = 3) - reagent_data = list(/datum/reagent/nutriment = list("carrot" = 3, "salt" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/oculine = 3) + reagent_data = list(/decl/reagent/nutriment = list("carrot" = 3, "salt" = 1)) bitesize = 2 /obj/item/reagent_containers/food/snacks/burger/superbite @@ -2050,8 +2048,8 @@ icon_state = "superbiteburger" filling_color = "#CCA26A" center_of_mass = list("x"=16, "y"=3) - reagents_to_add = list(/datum/reagent/nutriment = 25, /datum/reagent/nutriment/protein = 25) - reagent_data = list(/datum/reagent/nutriment = list("buns" = 25)) + reagents_to_add = list(/decl/reagent/nutriment = 25, /decl/reagent/nutriment/protein = 25) + reagent_data = list(/decl/reagent/nutriment = list("buns" = 25)) bitesize = 10 /obj/item/reagent_containers/food/snacks/candiedapple @@ -2060,8 +2058,8 @@ icon_state = "candiedapple" filling_color = "#F21873" center_of_mass = list("x"=15, "y"=13) - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("apple" = 3, "caramel" = 3, "sweetness" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("apple" = 3, "caramel" = 3, "sweetness" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/applepie @@ -2070,8 +2068,8 @@ icon_state = "applepie" filling_color = "#E0EDC5" center_of_mass = list("x"=16, "y"=13) - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 2, "apple" = 2, "pie" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 2, "apple" = 2, "pie" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/cherrypie @@ -2080,8 +2078,8 @@ icon_state = "cherrypie" filling_color = "#FF525A" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 2, "cherry" = 2, "pie" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 2, "cherry" = 2, "pie" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/twobread @@ -2090,8 +2088,8 @@ icon_state = "twobread" filling_color = "#DBCC9A" center_of_mass = list("x"=15, "y"=12) - reagents_to_add = list(/datum/reagent/nutriment = 2) - reagent_data = list(/datum/reagent/nutriment = list("sourness" = 2, "bread" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2) + reagent_data = list(/decl/reagent/nutriment = list("sourness" = 2, "bread" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/jellysandwich @@ -2101,13 +2099,13 @@ trash = /obj/item/trash/plate filling_color = "#9E3A78" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/datum/reagent/nutriment = 2) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 2)) bitesize = 3 -/obj/item/reagent_containers/food/snacks/jellysandwich/slime/reagents_to_add = list(/datum/reagent/slimejelly = 5) +/obj/item/reagent_containers/food/snacks/jellysandwich/slime/reagents_to_add = list(/decl/reagent/slimejelly = 5) -/obj/item/reagent_containers/food/snacks/jellysandwich/cherry/reagents_to_add = list(/datum/reagent/nutriment/cherryjelly = 5) +/obj/item/reagent_containers/food/snacks/jellysandwich/cherry/reagents_to_add = list(/decl/reagent/nutriment/cherryjelly = 5) /obj/item/reagent_containers/food/snacks/mint name = "mint" @@ -2117,8 +2115,8 @@ center_of_mass = list("x"=16, "y"=14) bitesize = 1 - reagents_to_add = list(/datum/reagent/nutriment/mint = 1) - reagent_data = list(/datum/reagent/nutriment/mint = list("sweetness" = 1, "menthol" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/mint = 1) + reagent_data = list(/decl/reagent/nutriment/mint = list("sweetness" = 1, "menthol" = 1)) /obj/item/reagent_containers/food/snacks/mint/admints desc = "Spearmint, peppermint's non-festive cousin." @@ -2151,8 +2149,8 @@ desc = "A delicious and hearty mushroom soup." icon_state = "mushroomsoup" filling_color = "#E386BF" - reagents_to_add = list(/datum/reagent/nutriment = 8) - reagent_data = list(/datum/reagent/nutriment = list("mushroom" = 8, "milk" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 8) + reagent_data = list(/decl/reagent/nutriment = list("mushroom" = 8, "milk" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/plumphelmetbiscuit @@ -2161,8 +2159,8 @@ icon_state = "phelmbiscuit" filling_color = "#CFB4C4" center_of_mass = list("x"=16, "y"=13) - reagents_to_add = list(/datum/reagent/nutriment = 5) - reagent_data = list(/datum/reagent/nutriment = list("mushroom" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 5) + reagent_data = list(/decl/reagent/nutriment = list("mushroom" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/plumphelmetbiscuit/Initialize() @@ -2170,8 +2168,8 @@ if(prob(10)) name = "exceptional plump helmet biscuit" desc = "The chef is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!" - reagents.add_reagent(/datum/reagent/nutriment, 8) - reagents.add_reagent(/datum/reagent/tricordrazine, 5) + reagents.add_reagent(/decl/reagent/nutriment, 8) + reagents.add_reagent(/decl/reagent/tricordrazine, 5) /obj/item/reagent_containers/food/snacks/chawanmushi name = "chawanmushi" @@ -2182,15 +2180,15 @@ center_of_mass = list("x"=17, "y"=10) bitesize = 1 - reagents_to_add = list(/datum/reagent/nutriment/protein = 5) + reagents_to_add = list(/decl/reagent/nutriment/protein = 5) /obj/item/reagent_containers/food/snacks/soup/beet name = "beet soup" desc = "Wait, how do you spell it again..?" icon_state = "beetsoup" filling_color = "#FAC9FF" - reagents_to_add = list(/datum/reagent/nutriment = 8) - reagent_data = list(/datum/reagent/nutriment = list("tomato" = 4, "beet" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 8) + reagent_data = list(/decl/reagent/nutriment = list("tomato" = 4, "beet" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/soup/beet/Initialize() @@ -2204,8 +2202,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#76B87F" center_of_mass = list("x"=17, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 8) - reagent_data = list(/datum/reagent/nutriment = list("salad" = 2, "tomato" = 2, "carrot" = 2, "apple" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 8) + reagent_data = list(/decl/reagent/nutriment = list("salad" = 2, "tomato" = 2, "carrot" = 2, "apple" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/salad/validsalad @@ -2215,8 +2213,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#76B87F" center_of_mass = list("x"=17, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein = 2) - reagent_data = list(/datum/reagent/nutriment = list("potato" = 4, "herbs" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein = 2) + reagent_data = list(/decl/reagent/nutriment = list("potato" = 4, "herbs" = 4)) bitesize = 3 /obj/item/reagent_containers/food/snacks/appletart @@ -2226,8 +2224,8 @@ trash = /obj/item/trash/plate filling_color = "#FFFF00" center_of_mass = list("x"=16, "y"=18) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/gold = 5) - reagent_data = list(/datum/reagent/nutriment = list("apple" = 8)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/gold = 5) + reagent_data = list(/decl/reagent/nutriment = list("apple" = 8)) bitesize = 3 /obj/item/reagent_containers/food/snacks/redcurry @@ -2238,8 +2236,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#f73333" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/nutriment/protein = 7, /datum/reagent/spacespice = 2) - reagent_data = list(/datum/reagent/nutriment = list("rice" = 4, "curry" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/nutriment/protein = 7, /decl/reagent/spacespice = 2) + reagent_data = list(/decl/reagent/nutriment = list("rice" = 4, "curry" = 4)) bitesize = 3 /obj/item/reagent_containers/food/snacks/greencurry @@ -2250,8 +2248,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#58b76c" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/nutriment/protein/tofu = 5, /datum/reagent/spacespice = 2, /datum/reagent/capsaicin = 2) - reagent_data = list(/datum/reagent/nutriment = list("rice" = 2, "curry" = 4, "tofu" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/nutriment/protein/tofu = 5, /decl/reagent/spacespice = 2, /decl/reagent/capsaicin = 2) + reagent_data = list(/decl/reagent/nutriment = list("rice" = 2, "curry" = 4, "tofu" = 4)) bitesize = 3 /obj/item/reagent_containers/food/snacks/yellowcurry @@ -2262,8 +2260,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#bc9509" center_of_mass = list("x"=16, "y"=8) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/spacespice = 2) - reagent_data = list(/datum/reagent/nutriment = list("rice" = 2, "curry" = 2, "potato" = 2, "peanut" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/spacespice = 2) + reagent_data = list(/decl/reagent/nutriment = list("rice" = 2, "curry" = 2, "potato" = 2, "peanut" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/burger/bear @@ -2274,7 +2272,7 @@ center_of_mass = list("x"=15, "y"=11) bitesize = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein = 10, /datum/reagent/hyperzine = 5) + reagents_to_add = list(/decl/reagent/nutriment/protein = 10, /decl/reagent/hyperzine = 5) /obj/item/reagent_containers/food/snacks/bearchili name = "bear chili" @@ -2284,8 +2282,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#702708" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 3, /datum/reagent/capsaicin = 3, /datum/reagent/drink/tomatojuice = 2, /datum/reagent/hyperzine = 5) - reagent_data = list(/datum/reagent/nutriment = list("chilli peppers" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 3, /decl/reagent/capsaicin = 3, /decl/reagent/drink/tomatojuice = 2, /decl/reagent/hyperzine = 5) + reagent_data = list(/decl/reagent/nutriment = list("chilli peppers" = 3)) bitesize = 5 /obj/item/reagent_containers/food/snacks/stew/bear @@ -2293,10 +2291,10 @@ gender = PLURAL desc = "A thick, dark stew of bear meat and vegetables." icon_state = "bearstew" - reagent_data = list(/datum/reagent/nutriment = list("mushroom" = 2, "potato" = 2, "carrot" = 2)) + reagent_data = list(/decl/reagent/nutriment = list("mushroom" = 2, "potato" = 2, "carrot" = 2)) bitesize = 6 - reagents_to_add = list(/datum/reagent/nutriment/protein = 4, /datum/reagent/hyperzine = 5, /datum/reagent/drink/tomatojuice = 5, /datum/reagent/oculine = 5, /datum/reagent/water = 5) + reagents_to_add = list(/decl/reagent/nutriment/protein = 4, /decl/reagent/hyperzine = 5, /decl/reagent/drink/tomatojuice = 5, /decl/reagent/oculine = 5, /decl/reagent/water = 5) /obj/item/reagent_containers/food/snacks/bibimbap name = "bibimbap bowl" @@ -2305,8 +2303,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#4f2100" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein = 6, /datum/reagent/oculine = 3, /datum/reagent/spacespice = 2, /datum/reagent/nutriment/protein/egg = 3) - reagent_data = list(/datum/reagent/nutriment = list("rice" = 2, "mushroom" = 2, "carrot" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein = 6, /decl/reagent/oculine = 3, /decl/reagent/spacespice = 2, /decl/reagent/nutriment/protein/egg = 3) + reagent_data = list(/decl/reagent/nutriment = list("rice" = 2, "mushroom" = 2, "carrot" = 2)) bitesize = 4 /obj/item/reagent_containers/food/snacks/lomein @@ -2317,8 +2315,8 @@ trash = /obj/item/trash/plate filling_color = "#FCEE81" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/nutriment/protein = 2, /datum/reagent/drink/carrotjuice = 3, /datum/reagent/oculine = 1) - reagent_data = list(/datum/reagent/nutriment = list("rice" = 2, "mushroom" = 2, "cabbage" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/nutriment/protein = 2, /decl/reagent/drink/carrotjuice = 3, /decl/reagent/oculine = 1) + reagent_data = list(/decl/reagent/nutriment = list("rice" = 2, "mushroom" = 2, "cabbage" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/friedrice @@ -2329,8 +2327,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#FFFBDB" center_of_mass = list("x"=17, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/nutriment/rice = 5, /datum/reagent/drink/carrotjuice = 3, /datum/reagent/oculine = 1) - reagent_data = list(/datum/reagent/nutriment = list("soy" = 2,)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/nutriment/rice = 5, /decl/reagent/drink/carrotjuice = 3, /decl/reagent/oculine = 1) + reagent_data = list(/decl/reagent/nutriment = list("soy" = 2,)) bitesize = 2 /obj/item/reagent_containers/food/snacks/chickenfillet @@ -2339,8 +2337,8 @@ icon_state = "chickenfillet" filling_color = "#E9ADFF" center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein = 8) - reagent_data = list(/datum/reagent/nutriment = list("buns" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein = 8) + reagent_data = list(/decl/reagent/nutriment = list("buns" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/chilicheesefries @@ -2351,8 +2349,8 @@ trash = /obj/item/trash/plate filling_color = "#EDDD00" center_of_mass = list("x"=18, "y"=14) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/nutriment/protein = 2, /datum/reagent/capsaicin = 2) - reagent_data = list(/datum/reagent/nutriment = list("fresh fries" = 4, "cheese" = 2, "chilli peppers" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/nutriment/protein = 2, /decl/reagent/capsaicin = 2) + reagent_data = list(/decl/reagent/nutriment = list("fresh fries" = 4, "cheese" = 2, "chilli peppers" = 2)) bitesize = 4 /obj/item/reagent_containers/food/snacks/friedmushroom @@ -2361,8 +2359,8 @@ icon_state = "friedmushroom" filling_color = "#EDDD00" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein = 2) - reagent_data = list(/datum/reagent/nutriment = list("fried mushroom" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein = 2) + reagent_data = list(/decl/reagent/nutriment = list("fried mushroom" = 4)) bitesize = 5 /obj/item/reagent_containers/food/snacks/pisanggoreng @@ -2373,8 +2371,8 @@ trash = /obj/item/trash/plate filling_color = "#301301" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 8) - reagent_data = list(/datum/reagent/nutriment = list("fried bananas" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 8) + reagent_data = list(/decl/reagent/nutriment = list("fried bananas" = 4)) bitesize = 3 /obj/item/reagent_containers/food/snacks/meatbun @@ -2383,8 +2381,8 @@ icon_state = "meatbun" filling_color = "#edd7d7" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/nutriment/protein = 3) - reagent_data = list(/datum/reagent/nutriment = list("buns" = 2, "spices" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/nutriment/protein = 3) + reagent_data = list(/decl/reagent/nutriment = list("buns" = 2, "spices" = 2)) bitesize = 5 /obj/item/reagent_containers/food/snacks/custardbun @@ -2393,8 +2391,8 @@ icon_state = "meatbun" filling_color = "#ebedc2" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein/egg = 2, /datum/reagent/nutriment/protein = 2) - reagent_data = list(/datum/reagent/nutriment = list("buns" = 2, "spices" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein/egg = 2, /decl/reagent/nutriment/protein = 2) + reagent_data = list(/decl/reagent/nutriment = list("buns" = 2, "spices" = 2)) bitesize = 6 /obj/item/reagent_containers/food/snacks/chickenmomo @@ -2405,8 +2403,8 @@ trash = /obj/item/trash/snacktray filling_color = "#edd7d7" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 9, /datum/reagent/nutriment/protein = 6, /datum/reagent/spacespice = 2) - reagent_data = list(/datum/reagent/nutriment = list("buns" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 9, /decl/reagent/nutriment/protein = 6, /decl/reagent/spacespice = 2) + reagent_data = list(/decl/reagent/nutriment = list("buns" = 4)) bitesize = 3 /obj/item/reagent_containers/food/snacks/veggiemomo @@ -2417,8 +2415,8 @@ trash = /obj/item/trash/snacktray filling_color = "#edd7d7" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 13, /datum/reagent/spacespice = 4, /datum/reagent/drink/carrotjuice = 3, /datum/reagent/oculine = 1) - reagent_data = list(/datum/reagent/nutriment = list("buns" = 2, "cabbage" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 13, /decl/reagent/spacespice = 4, /decl/reagent/drink/carrotjuice = 3, /decl/reagent/oculine = 1) + reagent_data = list(/decl/reagent/nutriment = list("buns" = 2, "cabbage" = 4)) bitesize = 3 /obj/item/reagent_containers/food/snacks/risotto @@ -2429,8 +2427,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#edd7d7" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 9, /datum/reagent/nutriment/protein = 1) - reagent_data = list(/datum/reagent/nutriment = list("rich" = 2, "spices" = 2, "mushroom" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 9, /decl/reagent/nutriment/protein = 1) + reagent_data = list(/decl/reagent/nutriment = list("rich" = 2, "spices" = 2, "mushroom" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/risottoballs @@ -2441,8 +2439,8 @@ trash = /obj/item/trash/snack_bowl filling_color = "#edd7d7" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/sodiumchloride = 1, /datum/reagent/blackpepper = 1, /datum/reagent/nutriment/rice = 4) - reagent_data = list(/datum/reagent/nutriment = list("spices" = 2, "mushroom" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/sodiumchloride = 1, /decl/reagent/blackpepper = 1, /decl/reagent/nutriment/rice = 4) + reagent_data = list(/decl/reagent/nutriment = list("spices" = 2, "mushroom" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/honeytoast @@ -2452,8 +2450,8 @@ trash = /obj/item/trash/plate filling_color = "#EDE5AD" center_of_mass = list("x"=16, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 1, /datum/reagent/nutriment/honey = 2) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 1, /decl/reagent/nutriment/honey = 2) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 3)) bitesize = 4 /obj/item/reagent_containers/food/snacks/poachedegg @@ -2463,8 +2461,8 @@ trash = /obj/item/trash/plate filling_color = "#FFDF78" center_of_mass = list("x"=16, "y"=14) - reagents_to_add = list(/datum/reagent/nutriment = 1, /datum/reagent/blackpepper = 1) - reagent_data = list(/datum/reagent/nutriment = list("egg" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 1, /decl/reagent/blackpepper = 1) + reagent_data = list(/decl/reagent/nutriment = list("egg" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/ribplate @@ -2475,7 +2473,7 @@ filling_color = "#7A3D11" center_of_mass = list("x"=16, "y"=13) bitesize = 4 - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/nutriment/triglyceride = 2, /datum/reagent/blackpepper = 1, /datum/reagent/nutriment/honey = 5) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/triglyceride = 2, /decl/reagent/blackpepper = 1, /decl/reagent/nutriment/honey = 5) /////////////////////////////////////////////////Sliceable//////////////////////////////////////// // All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels @@ -2493,8 +2491,8 @@ slices_num = 5 filling_color = "#FF7575" center_of_mass = list("x"=16, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 10, /datum/reagent/nutriment/protein = 20) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 10)) + reagents_to_add = list(/decl/reagent/nutriment = 10, /decl/reagent/nutriment/protein = 20) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 10)) bitesize = 2 /obj/item/reagent_containers/food/snacks/meatbreadslice @@ -2507,8 +2505,8 @@ center_of_mass = list("x"=16, "y"=13) /obj/item/reagent_containers/food/snacks/meatbreadslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/nutriment/protein = 4, /datum/reagent/nutriment = 2) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/nutriment/protein = 4, /decl/reagent/nutriment = 2) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/sliceable/xenomeatbread @@ -2519,8 +2517,8 @@ slices_num = 5 filling_color = "#8AFF75" center_of_mass = list("x"=16, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 10, /datum/reagent/nutriment/protein = 20) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 10)) + reagents_to_add = list(/decl/reagent/nutriment = 10, /decl/reagent/nutriment/protein = 20) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 10)) bitesize = 2 /obj/item/reagent_containers/food/snacks/xenomeatbreadslice @@ -2533,8 +2531,8 @@ center_of_mass = list("x"=16, "y"=13) /obj/item/reagent_containers/food/snacks/xenomeatbreadslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/nutriment/protein = 4) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/nutriment/protein = 4) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/sliceable/bananabread @@ -2545,8 +2543,8 @@ slices_num = 5 filling_color = "#EDE5AD" center_of_mass = list("x"=16, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 20, /datum/reagent/drink/banana = 20) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 10)) + reagents_to_add = list(/decl/reagent/nutriment = 20, /decl/reagent/drink/banana = 20) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 10)) bitesize = 2 /obj/item/reagent_containers/food/snacks/bananabreadslice @@ -2559,8 +2557,8 @@ center_of_mass = list("x"=16, "y"=8) /obj/item/reagent_containers/food/snacks/bananabreadslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/drink/banana = 4) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/drink/banana = 4) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/sliceable/tofubread @@ -2571,8 +2569,8 @@ slices_num = 5 filling_color = "#F7FFE0" center_of_mass = list("x"=16, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 30) - reagent_data = list(/datum/reagent/nutriment = list("tofu" = 10)) + reagents_to_add = list(/decl/reagent/nutriment = 30) + reagent_data = list(/decl/reagent/nutriment = list("tofu" = 10)) bitesize = 2 /obj/item/reagent_containers/food/snacks/tofubreadslice @@ -2585,8 +2583,8 @@ center_of_mass = list("x"=16, "y"=13) /obj/item/reagent_containers/food/snacks/tofubreadslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 6) - reagent_data = list(/datum/reagent/nutriment = list("tofu" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 6) + reagent_data = list(/decl/reagent/nutriment = list("tofu" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/sliceable/cake/carrot @@ -2597,8 +2595,8 @@ slices_num = 5 filling_color = "#FFD675" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 25, /datum/reagent/oculine = 10) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "carrot" = 15)) + reagents_to_add = list(/decl/reagent/nutriment = 25, /decl/reagent/oculine = 10) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "carrot" = 15)) bitesize = 2 /obj/item/reagent_containers/food/snacks/cakeslice/carrot @@ -2611,8 +2609,8 @@ center_of_mass = list("x"=16, "y"=14) /obj/item/reagent_containers/food/snacks/cakeslice/carrot/filled - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/oculine = 1) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "carrot" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/oculine = 1) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "carrot" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/sliceable/cake/brain @@ -2623,8 +2621,8 @@ slices_num = 5 filling_color = "#E6AEDB" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/nutriment/protein = 25, /datum/reagent/alkysine = 10) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "slime" = 15)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/nutriment/protein = 25, /decl/reagent/alkysine = 10) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "slime" = 15)) bitesize = 2 /obj/item/reagent_containers/food/snacks/cakeslice/brain @@ -2637,8 +2635,8 @@ center_of_mass = list("x"=16, "y"=12) /obj/item/reagent_containers/food/snacks/cakeslice/brain/filled - reagents_to_add = list(/datum/reagent/nutriment = 1, /datum/reagent/nutriment/protein = 5, /datum/reagent/alkysine = 2) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 2, "sweetness" = 2, "slime" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 1, /decl/reagent/nutriment/protein = 5, /decl/reagent/alkysine = 2) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 2, "sweetness" = 2, "slime" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/sliceable/cake/cheese @@ -2649,8 +2647,8 @@ slices_num = 5 filling_color = "#FAF7AF" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 10, /datum/reagent/nutriment/protein/cheese = 15) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 10, "cream" = 10)) + reagents_to_add = list(/decl/reagent/nutriment = 10, /decl/reagent/nutriment/protein/cheese = 15) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 10, "cream" = 10)) bitesize = 2 /obj/item/reagent_containers/food/snacks/cakeslice/cheese @@ -2663,8 +2661,8 @@ center_of_mass = list("x"=16, "y"=14) /obj/item/reagent_containers/food/snacks/cakeslice/cheese/filled - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/nutriment/protein/cheese = 3) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 5, "cream" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/nutriment/protein/cheese = 3) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 5, "cream" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/sliceable/cake/plain @@ -2675,8 +2673,8 @@ slices_num = 5 filling_color = "#F7EDD5" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 20) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "vanilla" = 15)) + reagents_to_add = list(/decl/reagent/nutriment = 20) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "vanilla" = 15)) /obj/item/reagent_containers/food/snacks/cakeslice/plain name = "vanilla cake slice" @@ -2688,8 +2686,8 @@ center_of_mass = list("x"=16, "y"=14) /obj/item/reagent_containers/food/snacks/cakeslice/plain/filled - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "vanilla" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "vanilla" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/cake/orange name = "orange cake" @@ -2699,8 +2697,8 @@ slices_num = 5 filling_color = "#FADA8E" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 20) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "orange" = 15)) + reagents_to_add = list(/decl/reagent/nutriment = 20) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "orange" = 15)) /obj/item/reagent_containers/food/snacks/cakeslice/orange name = "orange cake slice" @@ -2712,8 +2710,8 @@ center_of_mass = list("x"=16, "y"=14) /obj/item/reagent_containers/food/snacks/cakeslice/orange/filled - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "orange" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "orange" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/cake/lime name = "lime cake" @@ -2723,8 +2721,8 @@ slices_num = 5 filling_color = "#CBFA8E" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 20) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "lime" = 15)) + reagents_to_add = list(/decl/reagent/nutriment = 20) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "lime" = 15)) /obj/item/reagent_containers/food/snacks/cakeslice/lime name = "lime cake slice" @@ -2736,8 +2734,8 @@ center_of_mass = list("x"=16, "y"=14) /obj/item/reagent_containers/food/snacks/cakeslice/lime/filled - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "lime" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "lime" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/cake/lemon name = "lemon cake" @@ -2747,8 +2745,8 @@ slices_num = 5 filling_color = "#FAFA8E" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 20) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "lemon" = 15)) + reagents_to_add = list(/decl/reagent/nutriment = 20) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "lemon" = 15)) /obj/item/reagent_containers/food/snacks/cakeslice/lemon name = "lemon cake slice" @@ -2760,8 +2758,8 @@ center_of_mass = list("x"=16, "y"=14) /obj/item/reagent_containers/food/snacks/cakeslice/lemon/filled - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "lemon" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "lemon" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/cake/chocolate name = "chocolate cake" @@ -2771,8 +2769,8 @@ slices_num = 5 filling_color = "#805930" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 20) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "chocolate" = 15)) + reagents_to_add = list(/decl/reagent/nutriment = 20) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "chocolate" = 15)) /obj/item/reagent_containers/food/snacks/cakeslice/chocolate name = "chocolate cake slice" @@ -2784,8 +2782,8 @@ center_of_mass = list("x"=16, "y"=14) /obj/item/reagent_containers/food/snacks/cakeslice/chocolate/filled - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "chocolate" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "chocolate" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/cheesewheel name = "cheese wheel" @@ -2797,7 +2795,7 @@ center_of_mass = list("x"=16, "y"=10) bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein/cheese = 20) + reagents_to_add = list(/decl/reagent/nutriment/protein/cheese = 20) /obj/item/reagent_containers/food/snacks/cheesewedge name = "cheese wedge" @@ -2808,7 +2806,7 @@ bitesize = 2 center_of_mass = list("x"=16, "y"=10) -/obj/item/reagent_containers/food/snacks/cheesewedge/filled/reagents_to_add = list(/datum/reagent/nutriment/protein/cheese = 4) +/obj/item/reagent_containers/food/snacks/cheesewedge/filled/reagents_to_add = list(/decl/reagent/nutriment/protein/cheese = 4) /obj/item/reagent_containers/food/snacks/sliceable/cake/birthday name = "birthday cake" @@ -2818,8 +2816,8 @@ slices_num = 5 filling_color = "#FFD6D6" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 20, /datum/reagent/nutriment/sprinkles = 10) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 10, "sweetness" = 10)) + reagents_to_add = list(/decl/reagent/nutriment = 20, /decl/reagent/nutriment/sprinkles = 10) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 10, "sweetness" = 10)) bitesize = 3 /obj/item/reagent_containers/food/snacks/cakeslice/birthday @@ -2832,11 +2830,11 @@ center_of_mass = list("x"=16, "y"=14) /obj/item/reagent_containers/food/snacks/cakeslice/birthdaye/filled - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 5, "sweetness" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 5, "sweetness" = 5)) bitesize = 3 -/obj/item/reagent_containers/food/snacks/cakeslice/birthday/filled/reagents_to_add = list(/datum/reagent/nutriment/sprinkles = 2) +/obj/item/reagent_containers/food/snacks/cakeslice/birthday/filled/reagents_to_add = list(/decl/reagent/nutriment/sprinkles = 2) /obj/item/reagent_containers/food/snacks/sliceable/bread name = "bread" @@ -2846,8 +2844,8 @@ slices_num = 8 filling_color = "#FFE396" center_of_mass = list("x"=16, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 15, /datum/reagent/nutriment/protein = 5) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 15, /decl/reagent/nutriment/protein = 5) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 6)) bitesize = 2 /obj/item/reagent_containers/food/snacks/breadslice @@ -2860,8 +2858,8 @@ center_of_mass = list("x"=16, "y"=4) /obj/item/reagent_containers/food/snacks/breadslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 1) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 1) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 2)) /obj/item/reagent_containers/food/snacks/sliceable/creamcheesebread name = "cream cheese bread" @@ -2871,8 +2869,8 @@ slices_num = 5 filling_color = "#FFF896" center_of_mass = list("x"=16, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/nutriment/protein/cheese = 15) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 6, "cream" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/nutriment/protein/cheese = 15) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 6, "cream" = 3)) bitesize = 2 /obj/item/reagent_containers/food/snacks/creamcheesebreadslice @@ -2885,8 +2883,8 @@ center_of_mass = list("x"=16, "y"=13) /obj/item/reagent_containers/food/snacks/creamcheesebreadslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 1, /datum/reagent/nutriment/protein/cheese = 3) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 3, "cream" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 1, /decl/reagent/nutriment/protein/cheese = 3) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 3, "cream" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/watermelonslice @@ -2898,8 +2896,8 @@ center_of_mass = list("x"=16, "y"=10) /obj/item/reagent_containers/food/snacks/watermelonslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("watermelon" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("watermelon" = 2)) /obj/item/reagent_containers/food/snacks/sliceable/cake/apple name = "apple cake" @@ -2909,8 +2907,8 @@ slices_num = 5 filling_color = "#EBF5B8" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 15) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "apple" = 15)) + reagents_to_add = list(/decl/reagent/nutriment = 15) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 10, "sweetness" = 10, "apple" = 15)) /obj/item/reagent_containers/food/snacks/cakeslice/apple name = "apple cake slice" @@ -2922,8 +2920,8 @@ center_of_mass = list("x"=16, "y"=14) /obj/item/reagent_containers/food/snacks/cakeslice/apple/filled - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "apple" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("cake" = 5, "sweetness" = 5, "apple" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/pumpkinpie name = "pumpkin pie" @@ -2933,8 +2931,8 @@ slices_num = 5 filling_color = "#F5B951" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 15) - reagent_data = list(/datum/reagent/nutriment = list("pie" = 5, "cream" = 5, "pumpkin" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 15) + reagent_data = list(/decl/reagent/nutriment = list("pie" = 5, "cream" = 5, "pumpkin" = 5)) /obj/item/reagent_containers/food/snacks/pumpkinpieslice name = "pumpkin pie slice" @@ -2946,8 +2944,8 @@ center_of_mass = list("x"=16, "y"=12) /obj/item/reagent_containers/food/snacks/pumpkinpieslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("pie" = 2, "cream" = 2, "pumpkin" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("pie" = 2, "cream" = 2, "pumpkin" = 2)) /obj/item/reagent_containers/food/snacks/cracker name = "cracker" @@ -2955,8 +2953,8 @@ icon_state = "cracker" filling_color = "#F5DEB8" center_of_mass = list("x"=17, "y"=6) - reagents_to_add = list(/datum/reagent/nutriment = 1) - reagent_data = list(/datum/reagent/nutriment = list("salt" = 1, "cracker" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 1) + reagent_data = list(/decl/reagent/nutriment = list("salt" = 1, "cracker" = 2)) /obj/item/reagent_containers/food/snacks/sliceable/keylimepie name = "key lime pie" @@ -2966,8 +2964,8 @@ slices_num = 5 filling_color = "#F5B951" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 16) - reagent_data = list(/datum/reagent/nutriment = list("pie" = 10, "cream" = 10, "lime" = 15)) + reagents_to_add = list(/decl/reagent/nutriment = 16) + reagent_data = list(/decl/reagent/nutriment = list("pie" = 10, "cream" = 10, "lime" = 15)) /obj/item/reagent_containers/food/snacks/keylimepieslice name = "slice of key lime pie" @@ -2979,8 +2977,8 @@ center_of_mass = list("x"=16, "y"=12) /obj/item/reagent_containers/food/snacks/keylimepieslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("pie" = 5, "cream" = 5, "lime" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("pie" = 5, "cream" = 5, "lime" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/quiche name = "quiche" @@ -2990,8 +2988,8 @@ slices_num = 5 filling_color = "#F5B951" center_of_mass = list("x"=16, "y"=10) - reagents_to_add = list(/datum/reagent/nutriment = 10, /datum/reagent/nutriment/protein/cheese = 10) - reagent_data = list(/datum/reagent/nutriment = list("pie" = 5, "cheese" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 10, /decl/reagent/nutriment/protein/cheese = 10) + reagent_data = list(/decl/reagent/nutriment = list("pie" = 5, "cheese" = 5)) /obj/item/reagent_containers/food/snacks/quicheslice name = "slice of quiche" @@ -3003,8 +3001,8 @@ center_of_mass = list("x"=16, "y"=12) /obj/item/reagent_containers/food/snacks/quicheslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein/cheese = 3) - reagent_data = list(/datum/reagent/nutriment = list("pie" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein/cheese = 3) + reagent_data = list(/decl/reagent/nutriment = list("pie" = 2)) /obj/item/reagent_containers/food/snacks/sliceable/brownies name = "brownies" @@ -3016,8 +3014,8 @@ trash = /obj/item/trash/brownies filling_color = "#301301" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/browniemix = 2) - reagent_data = list(/datum/reagent/nutriment = list("brownies" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/browniemix = 2) + reagent_data = list(/decl/reagent/nutriment = list("brownies" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/browniesslice @@ -3030,8 +3028,8 @@ center_of_mass = list("x"=16, "y"=12) /obj/item/reagent_containers/food/snacks/browniesslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 1, /datum/reagent/browniemix = 1) - reagent_data = list(/datum/reagent/nutriment = list("brownies" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 1, /decl/reagent/browniemix = 1) + reagent_data = list(/decl/reagent/nutriment = list("brownies" = 2)) /obj/item/reagent_containers/food/snacks/sliceable/cosmicbrownies name = "cosmic brownies" @@ -3043,8 +3041,8 @@ trash = /obj/item/trash/brownies filling_color = "#301301" center_of_mass = list("x"=15, "y"=9) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/browniemix = 4, /datum/reagent/space_drugs = 4, /datum/reagent/bicaridine = 2, /datum/reagent/kelotane = 2, /datum/reagent/toxin = 2) - reagent_data = list(/datum/reagent/nutriment = list("brownies" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/browniemix = 4, /decl/reagent/space_drugs = 4, /decl/reagent/bicaridine = 2, /decl/reagent/kelotane = 2, /decl/reagent/toxin = 2) + reagent_data = list(/decl/reagent/nutriment = list("brownies" = 5)) bitesize = 3 /obj/item/reagent_containers/food/snacks/cosmicbrowniesslice @@ -3057,8 +3055,8 @@ center_of_mass = list("x"=16, "y"=12) /obj/item/reagent_containers/food/snacks/cosmicbrowniesslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 1, /datum/reagent/browniemix = 1, /datum/reagent/space_drugs = 1, /datum/reagent/bicaridine = 1, /datum/reagent/kelotane = 1, /datum/reagent/toxin = 1) - reagent_data = list(/datum/reagent/nutriment = list("brownies" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 1, /decl/reagent/browniemix = 1, /decl/reagent/space_drugs = 1, /decl/reagent/bicaridine = 1, /decl/reagent/kelotane = 1, /decl/reagent/toxin = 1) + reagent_data = list(/decl/reagent/nutriment = list("brownies" = 2)) /////////////////////////////////////////////////PIZZA//////////////////////////////////////// @@ -3073,8 +3071,8 @@ slice_path = /obj/item/reagent_containers/food/snacks/margheritaslice slices_num = 6 center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 35, /datum/reagent/nutriment/protein/cheese = 5, /datum/reagent/drink/tomatojuice = 6) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 10, "tomato" = 10)) + reagents_to_add = list(/decl/reagent/nutriment = 35, /decl/reagent/nutriment/protein/cheese = 5, /decl/reagent/drink/tomatojuice = 6) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 10, "tomato" = 10)) bitesize = 2 /obj/item/reagent_containers/food/snacks/margheritaslice @@ -3086,8 +3084,8 @@ center_of_mass = list("x"=18, "y"=13) /obj/item/reagent_containers/food/snacks/margheritaslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/nutriment/protein/cheese = 1, /datum/reagent/drink/tomatojuice = 2) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 5, "tomato" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/nutriment/protein/cheese = 1, /decl/reagent/drink/tomatojuice = 2) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 5, "tomato" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/pizza/meatpizza name = "meatpizza" @@ -3096,8 +3094,8 @@ slice_path = /obj/item/reagent_containers/food/snacks/meatpizzaslice slices_num = 6 center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 10, /datum/reagent/nutriment/protein = 44, /datum/reagent/nutriment/protein/cheese = 10, /datum/reagent/drink/tomatojuice = 6) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 10, "tomato" = 10)) + reagents_to_add = list(/decl/reagent/nutriment = 10, /decl/reagent/nutriment/protein = 44, /decl/reagent/nutriment/protein/cheese = 10, /decl/reagent/drink/tomatojuice = 6) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 10, "tomato" = 10)) bitesize = 2 /obj/item/reagent_containers/food/snacks/meatpizzaslice @@ -3109,8 +3107,8 @@ center_of_mass = list("x"=18, "y"=13) /obj/item/reagent_containers/food/snacks/meatpizzaslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/nutriment/protein = 7, /datum/reagent/nutriment/protein/cheese = 2, /datum/reagent/drink/tomatojuice = 2) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 5, "tomato" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/nutriment/protein = 7, /decl/reagent/nutriment/protein/cheese = 2, /decl/reagent/drink/tomatojuice = 2) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 5, "tomato" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/pizza/mushroompizza name = "mushroompizza" @@ -3119,8 +3117,8 @@ slice_path = /obj/item/reagent_containers/food/snacks/mushroompizzaslice slices_num = 6 center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 35, /datum/reagent/nutriment/protein/cheese = 5) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 10, "tomato" = 10, "mushroom" = 10)) + reagents_to_add = list(/decl/reagent/nutriment = 35, /decl/reagent/nutriment/protein/cheese = 5) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 10, "tomato" = 10, "mushroom" = 10)) bitesize = 2 /obj/item/reagent_containers/food/snacks/mushroompizzaslice @@ -3132,8 +3130,8 @@ center_of_mass = list("x"=18, "y"=13) /obj/item/reagent_containers/food/snacks/mushroompizzaslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/nutriment/protein/cheese = 1) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 5, "tomato" = 5, "mushroom" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/nutriment/protein/cheese = 1) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 5, "tomato" = 5, "mushroom" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/sliceable/pizza/vegetablepizza @@ -3143,8 +3141,8 @@ slice_path = /obj/item/reagent_containers/food/snacks/vegetablepizzaslice slices_num = 6 center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 25, /datum/reagent/drink/tomatojuice = 6, /datum/reagent/oculine = 12) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 10, "eggplant" = 5, "carrot" = 5, "corn" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 25, /decl/reagent/drink/tomatojuice = 6, /decl/reagent/oculine = 12) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 10, "eggplant" = 5, "carrot" = 5, "corn" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/vegetablepizzaslice @@ -3156,8 +3154,8 @@ center_of_mass = list("x"=18, "y"=13) /obj/item/reagent_containers/food/snacks/vegetablepizzaslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/drink/tomatojuice = 2, /datum/reagent/oculine = 2) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 5, "eggplant" = 5, "carrot" = 5, "corn" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/drink/tomatojuice = 2, /decl/reagent/oculine = 2) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 5, "eggplant" = 5, "carrot" = 5, "corn" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/pizza/crunch name = "pizza crunch" @@ -3166,13 +3164,13 @@ slice_path = /obj/item/reagent_containers/food/snacks/pizzacrunchslice slices_num = 6 center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 25, /datum/reagent/nutriment/coating/batter = 6, /datum/reagent/nutriment/triglyceride/oil = 4) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 15)) + reagents_to_add = list(/decl/reagent/nutriment = 25, /decl/reagent/nutriment/coating/batter = 6, /decl/reagent/nutriment/triglyceride/oil = 4) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 15)) bitesize = 2 /obj/item/reagent_containers/food/snacks/sliceable/pizza/crunch/Initialize() . = ..() - coating = reagents.get_reagent(/datum/reagent/nutriment/coating/batter) + coating = decls_repository.get_decl(/decl/reagent/nutriment/coating/batter) /obj/item/reagent_containers/food/snacks/pizzacrunchslice name = "pizza crunch" @@ -3181,12 +3179,12 @@ filling_color = "#BAA14C" bitesize = 2 center_of_mass = list("x"=18, "y"=13) - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/nutriment/coating/batter = 2, /datum/reagent/nutriment/triglyceride/oil = 1) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/nutriment/coating/batter = 2, /decl/reagent/nutriment/triglyceride/oil = 1) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 5)) /obj/item/reagent_containers/food/snacks/sliceable/pizza/crunch/Initialize() . = ..() - coating = reagents.get_reagent(/datum/reagent/nutriment/coating/batter) + coating = decls_repository.get_decl(/decl/reagent/nutriment/coating/batter) /obj/item/pizzabox name = "pizza box" @@ -3385,8 +3383,8 @@ trash = /obj/item/trash/plate filling_color = "#75754B" center_of_mass = list("x"=16, "y"=7) - reagents_to_add = list(/datum/reagent/nutriment = 6) - reagent_data = list(/datum/reagent/nutriment = list("dionae delicacy" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 6) + reagent_data = list(/decl/reagent/nutriment = list("dionae delicacy" = 3)) bitesize = 2 slice_path = /obj/item/reagent_containers/food/snacks/diona_cuts slices_num = 3 @@ -3399,8 +3397,8 @@ bitesize = 2 /obj/item/reagent_containers/food/snacks/diona_cuts/filled - reagent_data = list(/datum/reagent/nutriment = list("diona delicacy" = 5)) - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/radium = 2) + reagent_data = list(/decl/reagent/nutriment = list("diona delicacy" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/radium = 2) /////////////////////////////////////////// // new old food stuff from bs12 @@ -3412,8 +3410,8 @@ icon_state = "dough" bitesize = 2 center_of_mass = list("x"=16, "y"=13) - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("uncooked dough" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("uncooked dough" = 3)) // Dough + rolling pin = flat dough /obj/item/reagent_containers/food/snacks/dough/attackby(obj/item/W as obj, mob/user as mob) @@ -3431,8 +3429,8 @@ slice_path = /obj/item/reagent_containers/food/snacks/doughslice slices_num = 3 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("uncooked dough" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("uncooked dough" = 3)) /obj/item/reagent_containers/food/snacks/doughslice name = "dough slice" @@ -3443,8 +3441,8 @@ slices_num = 1 bitesize = 2 center_of_mass = list("x"=17, "y"=19) - reagents_to_add = list(/datum/reagent/nutriment = 1) - reagent_data = list(/datum/reagent/nutriment = list("uncooked dough" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 1) + reagent_data = list(/decl/reagent/nutriment = list("uncooked dough" = 1)) /obj/item/reagent_containers/food/snacks/bun name = "bun" @@ -3453,8 +3451,8 @@ icon_state = "bun" bitesize = 2 center_of_mass = list("x"=16, "y"=12) - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("bun" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("bun" = 3)) /obj/item/reagent_containers/food/snacks/bun/attackby(obj/item/W as obj, mob/user as mob) var/obj/item/reagent_containers/food/snacks/result = null @@ -3530,8 +3528,8 @@ icon_state = "taco" bitesize = 3 center_of_mass = list("x"=21, "y"=12) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein = 3) - reagent_data = list(/datum/reagent/nutriment = list("taco shell with cheese")) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein = 3) + reagent_data = list(/decl/reagent/nutriment = list("taco shell with cheese")) /obj/item/reagent_containers/food/snacks/rawcutlet name = "raw cutlet" @@ -3551,7 +3549,7 @@ bitesize = 2 center_of_mass = list("x"=17, "y"=20) - reagents_to_add = list(/datum/reagent/nutriment/protein = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein = 2) /obj/item/reagent_containers/food/snacks/rawmeatball name = "raw meatball" @@ -3561,7 +3559,7 @@ bitesize = 2 center_of_mass = list("x"=16, "y"=15) - reagents_to_add = list(/datum/reagent/nutriment/protein = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein = 2) /obj/item/reagent_containers/food/snacks/hotdog name = "hotdog" @@ -3570,7 +3568,7 @@ bitesize = 2 center_of_mass = list("x"=16, "y"=17) - reagents_to_add = list(/datum/reagent/nutriment/protein = 6) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6) /obj/item/reagent_containers/food/snacks/flatbread name = "flatbread" @@ -3579,8 +3577,8 @@ icon_state = "flatbread" bitesize = 2 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 3)) // potato + knife = raw sticks /obj/item/reagent_containers/food/snacks/grown/potato/attackby(obj/item/W as obj, mob/user as mob) @@ -3598,8 +3596,8 @@ icon_state = "rawsticks" bitesize = 2 center_of_mass = list("x"=16, "y"=12) - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("uncooked potatos" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("uncooked potatos" = 3)) /obj/item/reagent_containers/food/snacks/liquidfood name = "LiquidFood ration" @@ -3610,12 +3608,12 @@ center_of_mass = list("x"=16, "y"=15) bitesize = 4 is_liquid = TRUE - reagents_to_add = list(/datum/reagent/nutriment = 10, /datum/reagent/iron = 3) - reagent_data = list(/datum/reagent/nutriment = list("chalk" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 10, /decl/reagent/iron = 3) + reagent_data = list(/decl/reagent/nutriment = list("chalk" = 1)) /obj/item/reagent_containers/food/snacks/liquidfood/Initialize() set_flavor() - reagent_data[/datum/reagent/nutriment][flavor] = 9 + reagent_data[/decl/reagent/nutriment][flavor] = 9 return ..() /obj/item/reagent_containers/food/snacks/liquidfood/set_flavor() @@ -3629,8 +3627,8 @@ trash = /obj/item/trash/tastybread filling_color = "#A66829" center_of_mass = list("x"=17, "y"=16) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("stale bread" = 4)) - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 6, /datum/reagent/sodiumchloride = 3) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("stale bread" = 4)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 6, /decl/reagent/sodiumchloride = 3) /obj/item/reagent_containers/food/snacks/ricetub name = "packed rice bowl" @@ -3639,8 +3637,8 @@ trash = /obj/item/trash/ricetub_s filling_color = "#A66829" center_of_mass = list("x"=17, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 5) - reagent_data = list(/datum/reagent/nutriment = list("rice" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 5) + reagent_data = list(/decl/reagent/nutriment = list("rice" = 1)) var/sticks = 1 /obj/item/reagent_containers/food/snacks/ricetub/verb/remove_sticks() @@ -3691,8 +3689,8 @@ trash = /obj/item/trash/seaweed filling_color = "#A66829" center_of_mass = list("x"=17, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("seaweed" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("seaweed" = 1)) /obj/item/reagent_containers/food/snacks/seaweed/update_icon() var/percent = round((reagents.total_volume / 4) * 100) @@ -3708,8 +3706,8 @@ icon_state = "riceball" filling_color = "#A66829" center_of_mass = list("x"=17, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 3) - reagent_data = list(/datum/reagent/nutriment = list("seaweed" = 0.5, "rice" = 0.5, "soysauce" = 0.5)) + reagents_to_add = list(/decl/reagent/nutriment = 3) + reagent_data = list(/decl/reagent/nutriment = list("seaweed" = 0.5, "rice" = 0.5, "soysauce" = 0.5)) /obj/item/reagent_containers/food/snacks/riceball/update_icon() var/percent = round((reagents.total_volume / 3) * 100) @@ -3727,15 +3725,15 @@ trash = /obj/item/trash/skrellsnacks filling_color = "#A66829" center_of_mass = list("x"=15, "y"=12) - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 10) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("alien fungus" = 10)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 10) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("alien fungus" = 10)) bitesize = 3 /obj/item/reagent_containers/food/snacks/squidmeat name = "squid meat" desc = "Soylent squid is (not) people!" icon_state = "squidmeat" - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 3) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 3) /obj/item/reagent_containers/food/snacks/squidmeat/attackby(var/obj/item/W, var/mob/user) if(is_sharp(W) && (locate(/obj/structure/table) in loc)) @@ -3751,8 +3749,8 @@ icon = 'icons/obj/hydroponics_misc.dmi' filling_color = "#B7D6BF" bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/sodiumchloride = 2) - reagent_data = list(/datum/reagent/nutriment = list("dried fruit" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/sodiumchloride = 2) + reagent_data = list(/decl/reagent/nutriment = list("dried fruit" = 2)) /obj/item/reagent_containers/food/snacks/lortl/Initialize() . = ..() @@ -3773,8 +3771,8 @@ icon_state = "qilvo" filling_color = "#CFBA76" bitesize = 4 - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/nutriment/protein/seafood = 3, /datum/reagent/water = 5, /datum/reagent/drink/milk/cream = 3) - reagent_data = list(/datum/reagent/nutriment = list("cream" = 3, "seaweed" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/nutriment/protein/seafood = 3, /decl/reagent/water = 5, /decl/reagent/drink/milk/cream = 3) + reagent_data = list(/decl/reagent/nutriment = list("cream" = 3, "seaweed" = 2)) /obj/item/reagent_containers/food/snacks/soup/zantiri name = "zantiri" @@ -3782,8 +3780,8 @@ icon_state = "zantiri" filling_color = "#141452" bitesize = 5 - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/water = 6) - reagent_data = list(/datum/reagent/nutriment = list("inky mush" = 5, "crunchy lichen" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/water = 6) + reagent_data = list(/decl/reagent/nutriment = list("inky mush" = 5, "crunchy lichen" = 3)) /obj/item/reagent_containers/food/snacks/xuqqil name = "xuq'qil" @@ -3791,8 +3789,8 @@ icon_state = "xuqqil" filling_color = "#833D67" center_of_mass = list("x"=16, "y"=13) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein/cheese = 3, /datum/reagent/nutriment/protein/seafood = 3) - reagent_data = list(/datum/reagent/nutriment = list("mushroom" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein/cheese = 3, /decl/reagent/nutriment/protein/seafood = 3) + reagent_data = list(/decl/reagent/nutriment = list("mushroom" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/friedkois @@ -3801,7 +3799,7 @@ icon_state = "friedkois" filling_color = "#E6E600" bitesize = 3 - reagents_to_add = list(/datum/reagent/kois = 6, /datum/reagent/toxin/phoron = 9) + reagents_to_add = list(/decl/reagent/kois = 6, /decl/reagent/toxin/phoron = 9) /obj/item/reagent_containers/food/snacks/friedkois/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/stack/rods)) @@ -3821,7 +3819,7 @@ trash = /obj/item/stack/rods filling_color = "#E6E600" bitesize = 3 - reagents_to_add = list(/datum/reagent/kois = 8, /datum/reagent/toxin/phoron = 12) + reagents_to_add = list(/decl/reagent/kois = 8, /decl/reagent/toxin/phoron = 12) /obj/item/reagent_containers/food/snacks/koiskebab1/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/reagent_containers/food/snacks/friedkois)) @@ -3837,7 +3835,7 @@ trash = /obj/item/stack/rods filling_color = "#E6E600" bitesize = 6 - reagents_to_add = list(/datum/reagent/kois = 12, /datum/reagent/toxin/phoron = 16) + reagents_to_add = list(/decl/reagent/kois = 12, /decl/reagent/toxin/phoron = 16) /obj/item/reagent_containers/food/snacks/koiskebab2/attackby(obj/item/W as obj, mob/user as mob) if(istype(W,/obj/item/reagent_containers/food/snacks/friedkois)) @@ -3853,7 +3851,7 @@ trash = /obj/item/stack/rods filling_color = "#E6E600" bitesize = 9 - reagents_to_add = list(/datum/reagent/kois = 16, /datum/reagent/toxin/phoron = 20) + reagents_to_add = list(/decl/reagent/kois = 16, /decl/reagent/toxin/phoron = 20) /obj/item/reagent_containers/food/snacks/soup/kois name = "k'ois paste" @@ -3862,7 +3860,7 @@ filling_color = "#4E6E600" bitesize = 2 - reagents_to_add = list(/datum/reagent/kois = 15, /datum/reagent/toxin/phoron = 15) + reagents_to_add = list(/decl/reagent/kois = 15, /decl/reagent/toxin/phoron = 15) /obj/item/reagent_containers/food/snacks/koiswaffles name = "k'ois waffles" @@ -3872,7 +3870,7 @@ drop_sound = /decl/sound_category/tray_hit_sound filling_color = "#E6E600" bitesize = 5 - reagents_to_add = list(/datum/reagent/kois = 25, /datum/reagent/toxin/phoron = 15) + reagents_to_add = list(/decl/reagent/kois = 25, /decl/reagent/toxin/phoron = 15) /obj/item/reagent_containers/food/snacks/koisjelly name = "k'ois jelly" @@ -3880,7 +3878,7 @@ icon_state = "koisjelly" filling_color = "#E6E600" bitesize = 5 - reagents_to_add = list(/datum/reagent/kois = 25, /datum/reagent/oculine = 20, /datum/reagent/toxin/phoron = 25) + reagents_to_add = list(/decl/reagent/kois = 25, /decl/reagent/oculine = 20, /decl/reagent/toxin/phoron = 25) //unathi snacks - sprites by Araskael @@ -3891,8 +3889,8 @@ trash = /obj/item/trash/meatsnack filling_color = "#631212" bitesize = 5 - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 2, /datum/reagent/nutriment/protein = 12, /datum/reagent/sodiumchloride = 4) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("pie crust" = 2)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 2, /decl/reagent/nutriment/protein = 12, /decl/reagent/sodiumchloride = 4) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("pie crust" = 2)) /obj/item/reagent_containers/food/snacks/maps name = "maps salty ham" @@ -3901,7 +3899,7 @@ trash = /obj/item/trash/maps filling_color = "#631212" bitesize = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/sodiumchloride = 6) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/sodiumchloride = 6) /obj/item/reagent_containers/food/snacks/nathisnack name = "razi-snack corned beef" @@ -3910,7 +3908,7 @@ trash = /obj/item/trash/nathisnack filling_color = "#631212" bitesize = 4 - reagents_to_add = list(/datum/reagent/nutriment/protein = 10, /datum/reagent/iron = 3, /datum/reagent/sodiumchloride = 6) + reagents_to_add = list(/decl/reagent/nutriment/protein = 10, /decl/reagent/iron = 3, /decl/reagent/sodiumchloride = 6) /obj/item/reagent_containers/food/snacks/pancakes name = "pancakes" @@ -3918,8 +3916,8 @@ icon_state = "pancakes" trash = /obj/item/trash/plate center_of_mass = "x=15;y=11" - reagents_to_add = list(/datum/reagent/nutriment = 8) - reagent_data = list(/datum/reagent/nutriment = list("pancake" = 8)) + reagents_to_add = list(/decl/reagent/nutriment = 8) + reagent_data = list(/decl/reagent/nutriment = list("pancake" = 8)) bitesize = 2 /obj/item/reagent_containers/food/snacks/classichotdog @@ -3929,7 +3927,7 @@ center_of_mass = "x=16;y=17" bitesize = 6 - reagents_to_add = list(/datum/reagent/nutriment/protein = 16) + reagents_to_add = list(/decl/reagent/nutriment/protein = 16) /obj/item/reagent_containers/food/snacks/lasagna name = "lasagna" @@ -3939,8 +3937,8 @@ drop_sound = /decl/sound_category/tray_hit_sound center_of_mass = list("x"=16, "y"=17) - reagents_to_add = list(/datum/reagent/nutriment = 12, /datum/reagent/nutriment/protein = 12) - reagent_data = list(/datum/reagent/nutriment = list("pasta" = 4, "tomato" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 12, /decl/reagent/nutriment/protein = 12) + reagent_data = list(/decl/reagent/nutriment = list("pasta" = 4, "tomato" = 2)) bitesize = 6 /obj/item/reagent_containers/food/snacks/donerkebab @@ -3948,15 +3946,15 @@ desc = "A delicious sandwich-like food from ancient Earth. The meat is typically cooked on a vertical rotisserie." icon_state = "doner_kebab" - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/nutriment/protein = 4) - reagent_data = list(/datum/reagent/nutriment = list("dough" = 4, "cabbage" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/nutriment/protein = 4) + reagent_data = list(/decl/reagent/nutriment = list("dough" = 4, "cabbage" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/nugget name = "chicken nugget" icon_state = "nugget_lump" bitesize = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein = 4) + reagents_to_add = list(/decl/reagent/nutriment/protein = 4) /obj/item/reagent_containers/food/snacks/nugget/Initialize() . = ..() @@ -3970,15 +3968,15 @@ icon_state = "icecreamsandwich" filling_color = "#343834" center_of_mass = list("x"=15, "y"=4) - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("ice cream" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("ice cream" = 4)) /obj/item/reagent_containers/food/snacks/honeybun name = "honey bun" desc = "A sticky pastry bun glazed with honey." icon_state = "honeybun" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/honey = 3) - reagent_data = list(/datum/reagent/nutriment = list("pastry" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/honey = 3) + reagent_data = list(/decl/reagent/nutriment = list("pastry" = 1)) bitesize = 3 // Chip update. @@ -3987,9 +3985,9 @@ desc = "A thin, flour-based tortilla that can be used in a variety of dishes, or can be served as is." icon_state = "tortilla" bitesize = 3 - reagent_data = list(/datum/reagent/nutriment = list("tortilla" = 1)) + reagent_data = list(/decl/reagent/nutriment = list("tortilla" = 1)) center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 6) + reagents_to_add = list(/decl/reagent/nutriment = 6) //chips /obj/item/reagent_containers/food/snacks/chip @@ -3999,8 +3997,8 @@ var/bitten_state = "chip_half" bitesize = 1 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 2) - reagent_data = list(/datum/reagent/nutriment = list("nacho chips" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 2) + reagent_data = list(/decl/reagent/nutriment = list("nacho chips" = 1)) /obj/item/reagent_containers/food/snacks/chip/on_consume(mob/M as mob) if(reagents && reagents.total_volume) @@ -4063,9 +4061,9 @@ icon_state = "chip_basket" trash = /obj/item/trash/chipbasket var/vendingobject = /obj/item/reagent_containers/food/snacks/chip - reagent_data = list(/datum/reagent/nutriment = list("tortilla chips" = 10)) + reagent_data = list(/decl/reagent/nutriment = list("tortilla chips" = 10)) bitesize = 1 - reagents_to_add = list(/datum/reagent/nutriment = 10) + reagents_to_add = list(/decl/reagent/nutriment = 10) var/unitname = "chip" /obj/item/reagent_containers/food/snacks/chipplate/attack_hand(mob/user as mob) @@ -4096,9 +4094,9 @@ icon_state = "nachos" trash = /obj/item/trash/plate vendingobject = /obj/item/reagent_containers/food/snacks/chip/nacho - reagent_data = list(/datum/reagent/nutriment = list("tortilla chips" = 10)) + reagent_data = list(/decl/reagent/nutriment = list("tortilla chips" = 10)) bitesize = 1 - reagents_to_add = list(/datum/reagent/nutriment = 10) + reagents_to_add = list(/decl/reagent/nutriment = 10) //dips /obj/item/reagent_containers/food/snacks/dip @@ -4109,9 +4107,9 @@ icon_state = "dip_cheese" trash = /obj/item/trash/dipbowl bitesize = 1 - reagent_data = list(/datum/reagent/nutriment = list("queso" = 20)) + reagent_data = list(/decl/reagent/nutriment = list("queso" = 20)) center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 20) + reagents_to_add = list(/decl/reagent/nutriment = 20) /obj/item/reagent_containers/food/snacks/dip/attackby(obj/item/reagent_containers/food/snacks/item as obj, mob/user as mob) . = ..() @@ -4155,8 +4153,8 @@ nachotrans = /obj/item/reagent_containers/food/snacks/chip/nacho/salsa chiptrans = /obj/item/reagent_containers/food/snacks/chip/salsa icon_state = "dip_salsa" - reagents_to_add = list(/datum/reagent/nutriment = 20) - reagent_data = list(/datum/reagent/nutriment = list("salsa" = 20)) + reagents_to_add = list(/decl/reagent/nutriment = 20) + reagent_data = list(/decl/reagent/nutriment = list("salsa" = 20)) /obj/item/reagent_containers/food/snacks/dip/guac name = "guac dip" @@ -4164,8 +4162,8 @@ nachotrans = /obj/item/reagent_containers/food/snacks/chip/nacho/guac chiptrans = /obj/item/reagent_containers/food/snacks/chip/guac icon_state = "dip_guac" - reagents_to_add = list(/datum/reagent/nutriment = 20) - reagent_data = list(/datum/reagent/nutriment = list("guacmole" = 20)) + reagents_to_add = list(/decl/reagent/nutriment = 20) + reagent_data = list(/decl/reagent/nutriment = list("guacmole" = 20)) //burritos /obj/item/reagent_containers/food/snacks/burrito @@ -4174,8 +4172,8 @@ icon_state = "burrito" bitesize = 4 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein = 4) - reagent_data = list(/datum/reagent/nutriment = list("tortilla" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein = 4) + reagent_data = list(/decl/reagent/nutriment = list("tortilla" = 6)) /obj/item/reagent_containers/food/snacks/burrito_vegan name = "vegan burrito" @@ -4183,8 +4181,8 @@ icon_state = "burrito_vegan" bitesize = 4 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein/tofu = 6) - reagent_data = list(/datum/reagent/nutriment = list("tortilla" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein/tofu = 6) + reagent_data = list(/decl/reagent/nutriment = list("tortilla" = 6)) /obj/item/reagent_containers/food/snacks/burrito_spicy name = "spicy meat burrito" @@ -4192,8 +4190,8 @@ icon_state = "burrito_spicy" bitesize = 4 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein = 6) - reagent_data = list(/datum/reagent/nutriment = list("tortilla" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein = 6) + reagent_data = list(/decl/reagent/nutriment = list("tortilla" = 6)) /obj/item/reagent_containers/food/snacks/burrito_cheese name = "meat cheese burrito" @@ -4201,8 +4199,8 @@ icon_state = "burrito_cheese" bitesize = 4 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein = 6) - reagent_data = list(/datum/reagent/nutriment = list("tortilla" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein = 6) + reagent_data = list(/decl/reagent/nutriment = list("tortilla" = 6)) /obj/item/reagent_containers/food/snacks/burrito_cheese_spicy name = "spicy cheese meat burrito" @@ -4210,8 +4208,8 @@ icon_state = "burrito_cheese_spicy" bitesize = 4 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein = 6) - reagent_data = list(/datum/reagent/nutriment = list("tortilla" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein = 6) + reagent_data = list(/decl/reagent/nutriment = list("tortilla" = 6)) /obj/item/reagent_containers/food/snacks/burrito_hell name = "el diablo" @@ -4219,8 +4217,8 @@ icon_state = "burrito_hell" bitesize = 4 center_of_mass = list("x"=16, "y"=16) - reagent_data = list(/datum/reagent/nutriment = list("hellfire" = 6)) - reagents_to_add = list(/datum/reagent/nutriment = 24)// 10 Chilis is a lot. + reagent_data = list(/decl/reagent/nutriment = list("hellfire" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 24)// 10 Chilis is a lot. /obj/item/reagent_containers/food/snacks/breakfast_wrap name = "breakfast wrap" @@ -4228,8 +4226,8 @@ icon_state = "breakfast_wrap" bitesize = 4 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein = 9, /datum/reagent/capsaicin/condensed = 20) //what could possibly go wrong - reagent_data = list(/datum/reagent/nutriment = list("tortilla" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein = 9, /decl/reagent/capsaicin/condensed = 20) //what could possibly go wrong + reagent_data = list(/decl/reagent/nutriment = list("tortilla" = 6)) /obj/item/reagent_containers/food/snacks/burrito_mystery name = "mystery meat burrito" @@ -4237,8 +4235,8 @@ icon_state = "burrito_mystery" bitesize = 5 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 6) - reagent_data = list(/datum/reagent/nutriment = list("regret" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 6) + reagent_data = list(/decl/reagent/nutriment = list("regret" = 6)) // Ligger food and also bacon /obj/item/reagent_containers/food/snacks/rawbacon @@ -4264,7 +4262,7 @@ icon_state = "bacon" bitesize = 2 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment/protein = 0.33, /datum/reagent/nutriment/triglyceride = 1) + reagents_to_add = list(/decl/reagent/nutriment/protein = 0.33, /decl/reagent/nutriment/triglyceride = 1) /obj/item/reagent_containers/food/snacks/bacon/pan name = "pan-cooked bacon" @@ -4278,14 +4276,14 @@ desc = "Three deviled eggs floating in a bowl of meat chili. A popular lunchtime meal for Unathi in Ouerea." icon_state = "chilied_eggs" trash = /obj/item/trash/snack_bowl - reagents_to_add = list(/datum/reagent/nutriment/protein/egg = 6, /datum/reagent/nutriment/protein = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein/egg = 6, /decl/reagent/nutriment/protein = 2) /obj/item/reagent_containers/food/snacks/hatchling_suprise name = "hatchling suprise" desc = "A poached egg on top of three slices of bacon. A typical breakfast for hungry Unathi children." icon_state = "hatchling_suprise" trash = /obj/item/trash/snack_bowl - reagents_to_add = list(/datum/reagent/nutriment/protein/egg = 2, /datum/reagent/nutriment/protein = 4) + reagents_to_add = list(/decl/reagent/nutriment/protein/egg = 2, /decl/reagent/nutriment/protein = 4) /obj/item/reagent_containers/food/snacks/red_sun_special name = "red sun special" @@ -4293,7 +4291,7 @@ icon_state = "red_sun_special" trash = /obj/item/trash/plate - reagents_to_add = list(/datum/reagent/nutriment/protein = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein = 2) /obj/item/reagent_containers/food/snacks/riztizkzi_sea name = "moghresian sea delight" @@ -4301,27 +4299,27 @@ icon_state = "riztizkzi_sea" trash = /obj/item/trash/snack_bowl - reagents_to_add = list(/datum/reagent/nutriment/protein/egg = 4) + reagents_to_add = list(/decl/reagent/nutriment/protein/egg = 4) /obj/item/reagent_containers/food/snacks/father_breakfast name = "breakfast of champions" desc = "A sausage and an omelette on top of a grilled steak." icon_state = "father_breakfast" trash = /obj/item/trash/plate - reagents_to_add = list(/datum/reagent/nutriment/protein/egg = 4, /datum/reagent/nutriment/protein = 6) + reagents_to_add = list(/decl/reagent/nutriment/protein/egg = 4, /decl/reagent/nutriment/protein = 6) /obj/item/reagent_containers/food/snacks/stuffed_meatball name = "stuffed meatball" //YES desc = "A meatball loaded with cheese." icon_state = "stuffed_meatball" - reagents_to_add = list(/datum/reagent/nutriment/protein = 4) + reagents_to_add = list(/decl/reagent/nutriment/protein = 4) /obj/item/reagent_containers/food/snacks/egg_pancake name = "meat pancake" desc = "An omelette baked on top of a giant meat patty. This monstrousity is typically shared between four people during a dinnertime meal." icon_state = "egg_pancake" trash = /obj/item/trash/tray - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/nutriment/protein/egg = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/protein/egg = 2) /obj/item/reagent_containers/food/snacks/sliceable/grilled_carp name = "korlaaskak" @@ -4331,7 +4329,7 @@ slices_num = 6 trash = /obj/item/trash/snacktray - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 12) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 12) /obj/item/reagent_containers/food/snacks/grilled_carp_slice name = "korlaaskak slice" @@ -4346,7 +4344,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/sushi_serve slices_num = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 6) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 6) /obj/item/reagent_containers/food/snacks/sushi_serve name = "ouerean fish cake" @@ -4359,8 +4357,8 @@ icon_state = "marge" bitesize = 2 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 20) - reagent_data = list(/datum/reagent/nutriment = list("margarine" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 20) + reagent_data = list(/decl/reagent/nutriment = list("margarine" = 1)) /obj/item/reagent_containers/food/snacks/spreads/butter name = "butter" @@ -4368,49 +4366,49 @@ icon_state = "marge" bitesize = 2 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment/triglyceride = 20, /datum/reagent/sodiumchloride = 1) - reagent_data = list(/datum/reagent/nutriment = list("butter" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/triglyceride = 20, /decl/reagent/sodiumchloride = 1) + reagent_data = list(/decl/reagent/nutriment = list("butter" = 1)) /obj/item/reagent_containers/food/snacks/bacon_stick name = "eggpop" desc = "A bacon wrapped boiled egg, conviently skewered on a wooden stick." icon_state = "bacon_stick" - reagents_to_add = list(/datum/reagent/nutriment/protein = 3, /datum/reagent/nutriment/protein/egg = 1) + reagents_to_add = list(/decl/reagent/nutriment/protein = 3, /decl/reagent/nutriment/protein/egg = 1) /obj/item/reagent_containers/food/snacks/cheese_cracker name = "supreme cheese toast" desc = "A piece of toast lathered with butter, cheese, spices, and herbs." icon_state = "cheese_cracker" - reagents_to_add = list(/datum/reagent/nutriment = 8) - reagent_data = list(/datum/reagent/nutriment = list("cheese toast" = 8)) + reagents_to_add = list(/decl/reagent/nutriment = 8) + reagent_data = list(/decl/reagent/nutriment = list("cheese toast" = 8)) /obj/item/reagent_containers/food/snacks/bacon_and_eggs name = "bacon and eggs" desc = "A piece of bacon and two fried eggs." icon_state = "bacon_and_eggs" trash = /obj/item/trash/plate - reagents_to_add = list(/datum/reagent/nutriment/protein = 3, /datum/reagent/nutriment/protein/egg = 1) + reagents_to_add = list(/decl/reagent/nutriment/protein = 3, /decl/reagent/nutriment/protein/egg = 1) /obj/item/reagent_containers/food/snacks/sweet_and_sour name = "sweet and sour pork" desc = "A traditional ancient sol recipie with a few liberties taken with meat selection." icon_state = "sweet_and_sour" - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/protein = 3) - reagent_data = list(/datum/reagent/nutriment = list("sweet and sour" = 6)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/protein = 3) + reagent_data = list(/decl/reagent/nutriment = list("sweet and sour" = 6)) trash = /obj/item/trash/plate /obj/item/reagent_containers/food/snacks/corn_dog name = "corn dog" desc = "A cornbread covered sausage deepfried in oil." icon_state = "corndog" - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein = 3) - reagent_data = list(/datum/reagent/nutriment = list("corn batter" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein = 3) + reagent_data = list(/decl/reagent/nutriment = list("corn batter" = 4)) /obj/item/reagent_containers/food/snacks/truffle name = "chocolate truffle" desc = "Rich bite-sized chocolate." icon_state = "truffle" - reagents_to_add = list(/datum/reagent/nutriment/coco = 6) + reagents_to_add = list(/decl/reagent/nutriment/coco = 6) bitesize = 4 /obj/item/reagent_containers/food/snacks/truffle/random @@ -4419,43 +4417,43 @@ /obj/item/reagent_containers/food/snacks/truffle/random/Initialize() . = ..() - var/reagent_type = pick(list(/datum/reagent/drink/milk/cream,/datum/reagent/nutriment/cherryjelly,/datum/reagent/nutriment/mint,/datum/reagent/frostoil,/datum/reagent/capsaicin,/datum/reagent/drink/milk/cream,/datum/reagent/drink/coffee,/datum/reagent/drink/milkshake)) + var/reagent_type = pick(list(/decl/reagent/drink/milk/cream,/decl/reagent/nutriment/cherryjelly,/decl/reagent/nutriment/mint,/decl/reagent/frostoil,/decl/reagent/capsaicin,/decl/reagent/drink/milk/cream,/decl/reagent/drink/coffee,/decl/reagent/drink/milkshake)) reagents.add_reagent(reagent_type, 4) /obj/item/reagent_containers/food/snacks/bacon_flatbread name = "bacon cheese flatbread" desc = "Not a pizza." icon_state = "bacon_pizza" - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/nutriment/protein = 5) - reagent_data = list(/datum/reagent/nutriment = list("flatbread" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/nutriment/protein = 5) + reagent_data = list(/decl/reagent/nutriment = list("flatbread" = 5)) /obj/item/reagent_containers/food/snacks/meat_pocket name = "meat pocket" desc = "Meat and cheese stuffed in a flatbread pocket, grilled to perfection." icon_state = "meat_pocket" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 3) - reagent_data = list(/datum/reagent/nutriment = list("flatbread" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 3) + reagent_data = list(/decl/reagent/nutriment = list("flatbread" = 3)) /obj/item/reagent_containers/food/snacks/fish_taco name = "fish taco" desc = "A questionably cooked fish taco decorated with herbs, spices, and special sauce." icon_state = "fish_taco" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein/seafood = 3) - reagent_data = list(/datum/reagent/nutriment = list("flatbread" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein/seafood = 3) + reagent_data = list(/decl/reagent/nutriment = list("flatbread" = 3)) /obj/item/reagent_containers/food/snacks/nt_muffin name = "\improper NtMuffin" desc = "A NanoTrasen sponsered biscuit with egg, cheese, and sausage." icon_state = "nt_muffin" - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 5) - reagent_data = list(/datum/reagent/nutriment = list("biscuit" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 5) + reagent_data = list(/decl/reagent/nutriment = list("biscuit" = 3)) /obj/item/reagent_containers/food/snacks/pineapple_ring name = "pineapple ring" desc = "What the hell is this?" icon_state = "pineapple_ring" - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/drink/pineapplejuice = 3) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/drink/pineapplejuice = 3) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 2)) /obj/item/reagent_containers/food/snacks/sliceable/pizza/pineapple name = "ham & pineapple pizza" @@ -4464,8 +4462,8 @@ slice_path = /obj/item/reagent_containers/food/snacks/pineappleslice slices_num = 6 center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 30, /datum/reagent/nutriment/protein = 4, /datum/reagent/nutriment/protein/cheese = 5, /datum/reagent/drink/tomatojuice = 6) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 10, "tomato" = 10, "ham" = 10)) + reagents_to_add = list(/decl/reagent/nutriment = 30, /decl/reagent/nutriment/protein = 4, /decl/reagent/nutriment/protein/cheese = 5, /decl/reagent/drink/tomatojuice = 6) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 10, "tomato" = 10, "ham" = 10)) bitesize = 2 /obj/item/reagent_containers/food/snacks/pineappleslice @@ -4477,8 +4475,8 @@ center_of_mass = list("x"=18, "y"=13) /obj/item/reagent_containers/food/snacks/pineappleslice/filled - reagents_to_add = list(/datum/reagent/nutriment = 5) - reagent_data = list(/datum/reagent/nutriment = list("pizza crust" = 5, "tomato" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 5) + reagent_data = list(/decl/reagent/nutriment = list("pizza crust" = 5, "tomato" = 5)) /obj/item/reagent_containers/food/snacks/burger/bacon name = "bacon burger" @@ -4486,8 +4484,8 @@ icon_state = "hburger" filling_color = "#D63C3C" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 3, /datum/reagent/nutriment/protein = 4) - reagent_data = list(/datum/reagent/nutriment = list("bun" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 3, /decl/reagent/nutriment/protein = 4) + reagent_data = list(/decl/reagent/nutriment = list("bun" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/blt @@ -4496,8 +4494,8 @@ icon_state = "blt" filling_color = "#D63C3C" center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein = 4) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein = 4) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/clam @@ -4507,7 +4505,7 @@ bitesize = 2 desc_fluff = "Fishing and shellfish has a part in the diet of the population at the coastal areas, even if the ice can be an obstacle to most experienced fisherman. \ Spicy Ras'val clams, named after the sea, are a famous treat, being appreciated in other systems besides S'rand'marr." - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 2) /obj/item/reagent_containers/food/snacks/spicy_clams name = "spicy Ras'val clams" @@ -4517,15 +4515,15 @@ trash = /obj/item/trash/snack_bowl desc_fluff = "Fishing and shellfish has a part in the diet of the population at the coastal areas, even if the ice can be an obstacle to most experienced fisherman. \ Spicy Ras'val clams, named after the sea, are a famous treat, being appreciated in other system besides S'rand'marr." - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 4, /datum/reagent/capsaicin = 1) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 4, /decl/reagent/capsaicin = 1) /obj/item/reagent_containers/food/snacks/tajaran_bread name = "adhomian bread" desc = "A traditional tajaran bread, usually baked with blizzard ears' flour." icon_state = "tajaran_bread" bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment = 5) - reagent_data = list(/datum/reagent/nutriment = list("bread" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 5) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 2)) desc_fluff = "While the People's republic territory includes several different regional cultures, it is possible to find common culinary traditions among its population. \ Bread, baked with flour produced from a variation of the Blizzard Ears, is considered an essential part of a worker's breakfast." @@ -4534,7 +4532,7 @@ desc = "A soup made with earthen-root, a traditional dish from Northern Harr'masir." icon_state = "tajaran_soup" bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment = 4) + reagents_to_add = list(/decl/reagent/nutriment = 4) desc_fluff = "The Earth-Root soup is a common sight on the tables, of all social sectors, in the Northern Harr'masir. Prepared traditionally with water, Earth-Root and \ other plants, such as the Nif-Berries." @@ -4543,8 +4541,8 @@ desc = "An adhomian stew, made with nav'twir meat and native plants." icon_state = "tajaran_stew" bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein = 4, /datum/reagent/water = 4) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein = 4, /decl/reagent/water = 4) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 2)) desc_fluff = "Traditional adhomian stews are made with diced vegetables, such as Nif-Berries, and meat, Snow Strider is commonly used by the rural population, while \ industrialized Fatshouters's beef is prefered by the city's inhabitants." @@ -4556,7 +4554,7 @@ trash = /obj/item/trash/can/adhomian_can desc_fluff = "While the People's republic territory includes several different regional cultures, it is possible to find common culinary traditions among its population. \ Salt-cured Fatshouters's meat also has been introduced widely, facilitated by the recent advances in the livestock husbandry techniques." - reagents_to_add = list(/datum/reagent/nutriment/protein = 5, /datum/reagent/sodiumchloride = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein = 5, /decl/reagent/sodiumchloride = 2) /obj/item/reagent_containers/food/snacks/nomadskewer name = "nomad skewer" @@ -4566,8 +4564,8 @@ filling_color = "#FFFEE0" center_of_mass = list("x"=17, "y"=15) bitesize = 2 - reagent_data = list(/datum/reagent/nutriment = list("oily berries" = 8)) - reagents_to_add = list(/datum/reagent/nutriment/protein = 4, /datum/reagent/nutriment = 8, /datum/reagent/nutriment/triglyceride/oil = 3, /datum/reagent/sugar = 3, /datum/reagent/drink/earthenrootjuice = 6) + reagent_data = list(/decl/reagent/nutriment = list("oily berries" = 8)) + reagents_to_add = list(/decl/reagent/nutriment/protein = 4, /decl/reagent/nutriment = 8, /decl/reagent/nutriment/triglyceride/oil = 3, /decl/reagent/sugar = 3, /decl/reagent/drink/earthenrootjuice = 6) /obj/item/reagent_containers/food/snacks/adhomian_sausage name = "fatshouters bloodpudding" @@ -4575,7 +4573,7 @@ icon_state = "adhomian_sausage" filling_color = "#DB0000" bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/protein = 12) + reagents_to_add = list(/decl/reagent/nutriment/protein = 12) /obj/item/reagent_containers/food/snacks/hmatrrameat name = "Hma'trra fillet" @@ -4583,7 +4581,7 @@ icon_state = "fishfillet" filling_color = "#FFDEFE" bitesize = 6 - reagents_to_add = list(/datum/reagent/nutriment/protein = 6) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6) /obj/item/reagent_containers/food/snacks/fermented_worm name = "fermented hma'trra" @@ -4591,7 +4589,7 @@ icon_state = "fermented_worm" filling_color = "#DB0000" bitesize = 4 - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 20, /datum/reagent/ammonia = 10) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 20, /decl/reagent/ammonia = 10) /obj/item/reagent_containers/food/snacks/onionrings name = "onion rings" @@ -4600,8 +4598,8 @@ trash = /obj/item/trash/plate filling_color = "#eddd00" center_of_mass = "x=16;y=11" - reagents_to_add = list(/datum/reagent/nutriment = 5) - reagent_data = list(/datum/reagent/nutriment = list("fried onions" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 5) + reagent_data = list(/decl/reagent/nutriment = list("fried onions" = 5)) bitesize = 2 /obj/item/reagent_containers/food/snacks/berrymuffin @@ -4611,8 +4609,8 @@ filling_color = "#E0CF9B" center_of_mass = list("x"=17, "y"=4) - reagents_to_add = list(/datum/reagent/nutriment = 5) - reagent_data = list(/datum/reagent/nutriment = list("sweetness" = 1, "muffin" = 2, "berries" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 5) + reagent_data = list(/decl/reagent/nutriment = list("sweetness" = 1, "muffin" = 2, "berries" = 2)) bitesize = 2 /obj/item/reagent_containers/food/snacks/soup/onion @@ -4621,8 +4619,8 @@ icon_state = "onionsoup" filling_color = "#E0C367" - reagents_to_add = list(/datum/reagent/nutriment = 5) - reagent_data = list(/datum/reagent/nutriment = list("onion" = 2, "soup" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 5) + reagent_data = list(/decl/reagent/nutriment = list("onion" = 2, "soup" = 2)) bitesize = 3 /obj/item/reagent_containers/food/snacks/porkbowl @@ -4633,7 +4631,7 @@ filling_color = "#FFFBDB" bitesize = 2 - reagents_to_add = list(/datum/reagent/nutriment/rice = 6, /datum/reagent/nutriment/protein = 4) + reagents_to_add = list(/decl/reagent/nutriment/rice = 6, /decl/reagent/nutriment/protein = 4) /obj/item/reagent_containers/food/snacks/mashedpotato name = "mashed potato" @@ -4643,8 +4641,8 @@ filling_color = "#EDDD00" center_of_mass = list("x"=16, "y"=11) - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("mashed potatoes" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("mashed potatoes" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/croissant @@ -4653,8 +4651,8 @@ filling_color = "#E3D796" icon_state = "croissant" - reagents_to_add = list(/datum/reagent/nutriment = 4) - reagent_data = list(/datum/reagent/nutriment = list("french bread" = 4)) + reagents_to_add = list(/decl/reagent/nutriment = 4) + reagent_data = list(/decl/reagent/nutriment = list("french bread" = 4)) bitesize = 2 /obj/item/reagent_containers/food/snacks/crabmeat @@ -4663,15 +4661,15 @@ icon_state = "crabmeat" bitesize = 1 - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 2) /obj/item/reagent_containers/food/snacks/crab_legs name = "steamed crab legs" desc = "Crab legs steamed and buttered to perfection. One day when the boss gets hungry..." icon_state = "crablegs" - reagents_to_add = list(/datum/reagent/nutriment = 2, /datum/reagent/nutriment/protein/seafood = 6, /datum/reagent/sodiumchloride = 1) - reagent_data = list(/datum/reagent/nutriment = list("savory butter" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 2, /decl/reagent/nutriment/protein/seafood = 6, /decl/reagent/sodiumchloride = 1) + reagent_data = list(/decl/reagent/nutriment = list("savory butter" = 2)) bitesize = 2 trash = /obj/item/trash/plate @@ -4680,8 +4678,8 @@ desc = "A dessert made with icecream and a banana." icon_state = "banana_split" - reagents_to_add = list(/datum/reagent/nutriment = 5, /datum/reagent/drink/banana = 3) - reagent_data = list(/datum/reagent/nutriment = list("icecream" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 5, /decl/reagent/drink/banana = 3) + reagent_data = list(/decl/reagent/nutriment = list("icecream" = 2)) bitesize = 2 trash = /obj/item/trash/snack_bowl @@ -4694,7 +4692,7 @@ bitesize = 2 trash = /obj/item/trash/tuna - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 4) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 4) /obj/item/reagent_containers/food/snacks/cb01 name = "tau ceti bar" @@ -4702,8 +4700,8 @@ filling_color = "#552200" icon_state = "cb01" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 4, /datum/reagent/sugar = 1) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("chocolate" = 2, "nougat" = 1, "caramel" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 4, /decl/reagent/sugar = 1) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("chocolate" = 2, "nougat" = 1, "caramel" = 1)) bitesize = 2 w_class = ITEMSIZE_TINY @@ -4713,8 +4711,8 @@ filling_color = "#552200" icon_state = "cb02" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 4, /datum/reagent/sugar = 1) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("chocolate" = 2, "caramel" = 1, "puffed rice" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 4, /decl/reagent/sugar = 1) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("chocolate" = 2, "caramel" = 1, "puffed rice" = 1)) bitesize = 2 w_class = ITEMSIZE_TINY @@ -4723,8 +4721,8 @@ desc = "Bubbly milk chocolate." filling_color = "#552200" icon_state = "cb03" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 4, /datum/reagent/sugar = 1) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("chocolate" = 4)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 4, /decl/reagent/sugar = 1) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("chocolate" = 4)) bitesize = 2 w_class = ITEMSIZE_TINY @@ -4733,8 +4731,8 @@ desc = "An almond flake bar covered in milk chocolate." filling_color = "#552200" icon_state = "cb04" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 4, /datum/reagent/sugar = 1) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("chocolate" = 3, "almonds" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 4, /decl/reagent/sugar = 1) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("chocolate" = 3, "almonds" = 1)) bitesize = 2 w_class = ITEMSIZE_TINY @@ -4744,8 +4742,8 @@ filling_color = "#552200" icon_state = "cb05" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 3, /datum/reagent/sugar = 3) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("chocolate" = 2, "vomit" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 3, /decl/reagent/sugar = 3) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("chocolate" = 2, "vomit" = 1)) bitesize = 3 w_class = ITEMSIZE_TINY @@ -4754,8 +4752,8 @@ desc = "A large latte flavored wafer chocolate bar." filling_color = "#552200" icon_state = "cb06" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 4, /datum/reagent/sugar = 1) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("chocolate" = 2, "coffee" = 1, "vanilla wafer" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 4, /decl/reagent/sugar = 1) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("chocolate" = 2, "coffee" = 1, "vanilla wafer" = 1)) bitesize = 3 w_class = ITEMSIZE_TINY @@ -4764,8 +4762,8 @@ desc = "Dark chocolate with a nougat and caramel center. Known as the first chocolate bar grown and produced on Mars." filling_color = "#552200" icon_state = "cb07" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 4, /datum/reagent/sugar = 1) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("chocolate" = 2, "caramel" = 1, "nougat" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 4, /decl/reagent/sugar = 1) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("chocolate" = 2, "caramel" = 1, "nougat" = 1)) bitesize = 3 w_class = ITEMSIZE_TINY @@ -4774,8 +4772,8 @@ desc = "A large puffed rice milk chocolate bar." filling_color = "#552200" icon_state = "cb08" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 4, /datum/reagent/sugar = 1) - reagent_data = list(/datum/reagent/nutriment/synthetic = list("chocolate" = 2, "puffed rice" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 4, /decl/reagent/sugar = 1) + reagent_data = list(/decl/reagent/nutriment/synthetic = list("chocolate" = 2, "puffed rice" = 1)) bitesize = 3 w_class = ITEMSIZE_TINY @@ -4785,8 +4783,8 @@ filling_color = "#552200" icon_state = "cb09" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 6, /datum/reagent/sugar = 1) - reagent_data = list(/datum/reagent/nutriment = list("chocolate" = 3, "caramel" = 1, "peanuts" = 2)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 6, /decl/reagent/sugar = 1) + reagent_data = list(/decl/reagent/nutriment = list("chocolate" = 3, "caramel" = 1, "peanuts" = 2)) bitesize = 3 w_class = ITEMSIZE_TINY @@ -4796,8 +4794,8 @@ filling_color = "#552200" icon_state = "cb10" - reagents_to_add = list(/datum/reagent/nutriment/synthetic = 5, /datum/reagent/sugar = 1) - reagent_data = list(/datum/reagent/nutriment = list("chocolate" = 2, "caramel" = 1, "peanuts" = 1, "nougat" = 1)) + reagents_to_add = list(/decl/reagent/nutriment/synthetic = 5, /decl/reagent/sugar = 1) + reagent_data = list(/decl/reagent/nutriment = list("chocolate" = 2, "caramel" = 1, "peanuts" = 1, "nougat" = 1)) bitesize = 3 w_class = ITEMSIZE_TINY @@ -4806,8 +4804,8 @@ desc = "A long-lasting tajaran bread. It is usually prepared for long journeys, hard winters or military campaigns." icon_state = "loaf" bitesize = 1 - reagents_to_add = list(/datum/reagent/nutriment = 15) - reagent_data = list(/datum/reagent/nutriment = list("crusty bread" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 15) + reagent_data = list(/decl/reagent/nutriment = list("crusty bread" = 2)) throw_range = 5 throwforce = 10 w_class = ITEMSIZE_NORMAL @@ -4821,7 +4819,7 @@ icon_state = "lard" bitesize = 2 center_of_mass = list("x"=16, "y"=16) - reagents_to_add = list(/datum/reagent/nutriment/triglyceride = 5) + reagents_to_add = list(/decl/reagent/nutriment/triglyceride = 5) /obj/item/reagent_containers/food/snacks/chipplate/tajcandy name = "plate of sugar tree candy" @@ -4829,9 +4827,9 @@ icon_state = "cubes26" trash = /obj/item/trash/candybowl vendingobject = /obj/item/reagent_containers/food/snacks/tajcandy - reagent_data = list(/datum/reagent/nutriment = list("candy" = 1)) + reagent_data = list(/decl/reagent/nutriment = list("candy" = 1)) bitesize = 1 - reagents_to_add = list(/datum/reagent/nutriment = 26) + reagents_to_add = list(/decl/reagent/nutriment = 26) unitname = "candy" /obj/item/reagent_containers/food/snacks/chipplate/tajcandy/update_icon() @@ -4855,24 +4853,24 @@ name = "sugar tree candy" desc = "An adhomian candy made from the sugar tree fruit." icon_state = "tajcandy" - reagents_to_add = list(/datum/reagent/nutriment = 1, /datum/reagent/sugar = 3) - reagent_data = list(/datum/reagent/nutriment = list("candy" = 3)) + reagents_to_add = list(/decl/reagent/nutriment = 1, /decl/reagent/sugar = 3) + reagent_data = list(/decl/reagent/nutriment = list("candy" = 3)) bitesize = 1 /obj/item/reagent_containers/food/snacks/lardwich name = "hro'zamal lard sandwhich" desc = "A lard sandwhich prepared in the style of Hro'zamal, usually made from Schlorrgo lard." icon_state = "lardwich" - reagent_data = list(/datum/reagent/nutriment = list("bread" = 2)) - reagents_to_add = list(/datum/reagent/nutriment = 6, /datum/reagent/nutriment/triglyceride = 5) + reagent_data = list(/decl/reagent/nutriment = list("bread" = 2)) + reagents_to_add = list(/decl/reagent/nutriment = 6, /decl/reagent/nutriment/triglyceride = 5) bitesize = 2 /obj/item/reagent_containers/food/snacks/explorer_ration name = "m'sai scout ration" desc = "A mixture of meat, fat and adhomian berries commonly prepared by m'sai explorers and soldiers." icon_state = "scoutration_wrap" - reagent_data = list(/datum/reagent/nutriment = list("berries" = 1)) - reagents_to_add = list(/datum/reagent/nutriment = 4, /datum/reagent/nutriment/protein = 6 , /datum/reagent/nutriment/triglyceride = 5) + reagent_data = list(/decl/reagent/nutriment = list("berries" = 1)) + reagents_to_add = list(/decl/reagent/nutriment = 4, /decl/reagent/nutriment/protein = 6 , /decl/reagent/nutriment/triglyceride = 5) bitesize = 1 var/wrap = TRUE @@ -4898,14 +4896,14 @@ name = "dionae stew" desc = "A steaming bowl of juicy dionae nymph. Extra cosy." icon_state = "dionaestew" - reagent_data = list(/datum/reagent/nutriment = list("diona delicacy" = 5)) - reagents_to_add = list(/datum/reagent/nutriment = 8, /datum/reagent/drink/carrotjuice = 2, /datum/reagent/drink/potatojuice = 2, /datum/reagent/radium = 2) + reagent_data = list(/decl/reagent/nutriment = list("diona delicacy" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 8, /decl/reagent/drink/carrotjuice = 2, /decl/reagent/drink/potatojuice = 2, /decl/reagent/radium = 2) /obj/item/reagent_containers/food/snacks/diona_bites name = "dionae bites" desc = "Freeze dried Dionae bites artfully crafted by Getmore chefs for that home cooked taste on the go!" icon_state = "dionaebites" - reagent_data = list(/datum/reagent/nutriment = list("diona delicacy" = 5)) - reagents_to_add = list(/datum/reagent/nutriment = 6) + reagent_data = list(/decl/reagent/nutriment = list("diona delicacy" = 5)) + reagents_to_add = list(/decl/reagent/nutriment = 6) trash = /obj/item/trash/diona_bites bitesize = 3 diff --git a/code/modules/reagents/reagent_containers/food/snacks/fish.dm b/code/modules/reagents/reagent_containers/food/snacks/fish.dm index c5e28f42e1d..b7a95ea3d8b 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/fish.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/fish.dm @@ -1,7 +1,7 @@ /obj/item/reagent_containers/food/snacks/fish icon_state = "fishfillet" filling_color = "#FFDEFE" - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 3) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 3) bitesize = 6 var/fish_type = "fish" @@ -16,7 +16,7 @@ /obj/item/reagent_containers/food/snacks/fish/carpmeat name = "carp fillet" desc = "A fillet of space carp meat." - reagents_to_add = list(/datum/reagent/toxin/carpotoxin = 3, /datum/reagent/nutriment/protein/seafood = 3) + reagents_to_add = list(/decl/reagent/toxin/carpotoxin = 3, /decl/reagent/nutriment/protein/seafood = 3) fish_type = "space carp" /obj/item/reagent_containers/food/snacks/fish/fishfillet @@ -27,7 +27,7 @@ name = "slimy meat" desc = "Some slimy meat from clams or molluscs." fish_type = "mollusc" - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood/mollusc = 3) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood/mollusc = 3) /obj/item/reagent_containers/food/snacks/fish/mollusc/clam fish_type = "clam" diff --git a/code/modules/reagents/reagent_containers/food/snacks/meat.dm b/code/modules/reagents/reagent_containers/food/snacks/meat.dm index 6b143ca0e7b..256f66b47ca 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/meat.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/meat.dm @@ -8,7 +8,7 @@ cooked_icon = "meatstake" slice_path = /obj/item/reagent_containers/food/snacks/rawcutlet slices_num = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/nutriment/triglyceride = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/triglyceride = 2) bitesize = 1.5 /obj/item/reagent_containers/food/snacks/meat/cook() @@ -30,7 +30,7 @@ /obj/item/reagent_containers/food/snacks/meat/bug filling_color = "#E6E600" - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/nutriment/triglyceride = 2, /datum/reagent/toxin/phoron = 27) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/triglyceride = 2, /decl/reagent/toxin/phoron = 27) bitesize = 1.5 /obj/item/reagent_containers/food/snacks/meat/monkey @@ -45,20 +45,24 @@ icon_state = "chickenbreast" cooked_icon = "chickenbreast_cooked" filling_color = "#BBBBAA" - reagents_to_add = list(/datum/reagent/nutriment/protein = 6) //Chicken is low fat. Less total calories than other meats + reagents_to_add = list(/decl/reagent/nutriment/protein = 6) //Chicken is low fat. Less total calories than other meats + +/obj/item/reagent_containers/food/snacks/meat/pig + name = "pig meat" + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/nutriment/triglyceride = 4) /obj/item/reagent_containers/food/snacks/meat/biogenerated name = "bio meat" desc = "Did this come from the Biogenerator, or is it a biohazard? Perhaps it is both." icon_state = "plantmeat" filling_color = "#A8AA00" - reagents_to_add = list(/datum/reagent/nutriment = 6) + reagents_to_add = list(/decl/reagent/nutriment = 6) /obj/item/reagent_containers/food/snacks/meat/undead name = "rotten meat" desc = "A slab of rotten meat." icon_state = "shadowmeat" - reagents_to_add = list(/datum/reagent/nutriment/protein = 6, /datum/reagent/toxin/undead = 5) + reagents_to_add = list(/decl/reagent/nutriment/protein = 6, /decl/reagent/toxin/undead = 5) /obj/item/reagent_containers/food/snacks/meat/adhomai name = "adhomian meat" @@ -74,11 +78,11 @@ name = "rat meat" icon_state = "chickenbreast" desc = "You have reached the epitome of poorness: eating the station's vermin." - reagents_to_add = list(/datum/reagent/nutriment/protein = 5, /datum/reagent/nutriment/triglyceride = 2) + reagents_to_add = list(/decl/reagent/nutriment/protein = 5, /decl/reagent/nutriment/triglyceride = 2) bitesize = 1.5 /obj/item/reagent_containers/food/snacks/meat/dionanymph name = "diona nymph meat" desc = "A slab of weird green meat." icon_state = "plantmeat" - reagents_to_add = list(/datum/reagent/diona_powder = 10) + reagents_to_add = list(/decl/reagent/diona_powder = 10) diff --git a/code/modules/reagents/reagent_containers/food/snacks/sushi.dm b/code/modules/reagents/reagent_containers/food/snacks/sushi.dm index 97a8cf5eba5..ecf175a6ab6 100644 --- a/code/modules/reagents/reagent_containers/food/snacks/sushi.dm +++ b/code/modules/reagents/reagent_containers/food/snacks/sushi.dm @@ -5,13 +5,13 @@ icon_state = "sushi_rice" bitesize = 1 var/fish_type = "fish" - reagent_data = list(/datum/reagent/nutriment = list()) + reagent_data = list(/decl/reagent/nutriment = list()) /obj/item/reagent_containers/food/snacks/sushi/Initialize(var/ml, var/obj/item/reagent_containers/food/snacks/rice, var/obj/item/reagent_containers/food/snacks/topping) . = ..(ml) if(istype(topping)) - var/list/flavor = LAZYLEN(topping.reagent_data) ? topping.reagent_data[/datum/reagent/nutriment] : null - var/list/ourflavor = LAZYLEN(reagent_data) ? reagent_data[/datum/reagent/nutriment] : null + var/list/flavor = LAZYLEN(topping.reagent_data) ? topping.reagent_data[/decl/reagent/nutriment] : null + var/list/ourflavor = LAZYLEN(reagent_data) ? reagent_data[/decl/reagent/nutriment] : null for(var/taste_thing in flavor) if(!ourflavor[taste_thing]) ourflavor[taste_thing] = 0 ourflavor[taste_thing] += flavor[taste_thing] @@ -58,7 +58,7 @@ filling_color = "#FFDEFE" gender = PLURAL bitesize = 3 - reagents_to_add = list(/datum/reagent/nutriment/protein/seafood = 3) + reagents_to_add = list(/decl/reagent/nutriment/protein/seafood = 3) var/fish_type = "fish" var/slices = 1 diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index fb39d55261b..881a3909de9 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -15,10 +15,10 @@ accuracy = 0.1 w_class = ITEMSIZE_SMALL flags = OPENCONTAINER + fragile = 2 unacidable = 1 //glass doesn't dissolve in acid drop_sound = 'sound/items/drop/bottle.ogg' pickup_sound = 'sound/items/pickup/bottle.ogg' - shatter = TRUE var/label_text = "" /obj/item/reagent_containers/glass/Initialize() @@ -28,9 +28,10 @@ /obj/item/reagent_containers/glass/examine(var/mob/user) if(!..(user, 2)) return - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents.reagent_volumes)) to_chat(user, "It contains [round(reagents.total_volume, accuracy)] units of liquid.") - for(var/datum/reagent/T in reagents.reagent_list) + for(var/_T in reagents.reagent_volumes) + var/decl/reagent/T = decls_repository.get_decl(_T) if(T.reagent_state == SOLID) to_chat(user, "You see something solid in the beaker.") break // to stop multiple messages of this @@ -41,12 +42,12 @@ /obj/item/reagent_containers/glass/get_additional_forensics_swab_info() var/list/additional_evidence = ..() - var/datum/reagent/blood/B = locate() in reagents.reagent_list - if(B) + var/list/Bdata = REAGENT_DATA(reagents, /decl/reagent/blood/) + if(Bdata) additional_evidence["type"] = EVIDENCE_TYPE_BLOOD additional_evidence["sample_type"] = "blood" - additional_evidence["dna"] += B.data["blood_DNA"] - additional_evidence["sample_message"] = "You dip the swab inside \the [src.name] to sample its contents." + additional_evidence["dna"] += Bdata["blood_DNA"] + additional_evidence["sample_message"] = "You dip the swab inside [src] to sample its contents." return additional_evidence @@ -189,11 +190,11 @@ amount_per_transfer_from_this = 10 possible_transfer_amounts = list(5,10,15,25) flags = OPENCONTAINER - fragile = 1 + fragile = 1 // very fragile -/obj/item/reagent_containers/glass/beaker/cryoxadone/reagents_to_add = list(/datum/reagent/cryoxadone = 30) +/obj/item/reagent_containers/glass/beaker/cryoxadone/reagents_to_add = list(/decl/reagent/cryoxadone = 30) -/obj/item/reagent_containers/glass/beaker/sulphuric/reagents_to_add = list(/datum/reagent/acid = 60) +/obj/item/reagent_containers/glass/beaker/sulphuric/reagents_to_add = list(/decl/reagent/acid = 60) /obj/item/reagent_containers/glass/bucket desc = "A blue plastic bucket." @@ -217,7 +218,6 @@ drop_sound = 'sound/items/drop/helm.ogg' pickup_sound = 'sound/items/pickup/helm.ogg' var/helmet_type = /obj/item/clothing/head/helmet/bucket - shatter = FALSE fragile = 0 /obj/item/reagent_containers/glass/bucket/attackby(var/obj/D, mob/user as mob) diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index 4016b7591d4..9b97265237b 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -15,7 +15,6 @@ possible_transfer_amounts = list(5,10,15,25,30,60) flags = 0 volume = 60 - fragile = 2 /obj/item/reagent_containers/glass/bottle/on_reagent_change() update_icon() @@ -65,155 +64,149 @@ name = "inaprovaline bottle" desc = "A small bottle. Contains inaprovaline - used to stabilize patients." icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/inaprovaline = 60) + reagents_to_add = list(/decl/reagent/inaprovaline = 60) /obj/item/reagent_containers/glass/bottle/toxin name = "toxin bottle" desc = "A small bottle of toxins. Do not drink, it is poisonous." icon_state = "bottle-3" - reagents_to_add = list(/datum/reagent/toxin = 60) + reagents_to_add = list(/decl/reagent/toxin = 60) /obj/item/reagent_containers/glass/bottle/cyanide name = "cyanide bottle" desc = "A small bottle of cyanide. Bitter almonds?" icon_state = "bottle-3" - reagents_to_add = list(/datum/reagent/toxin/cyanide = 30) + reagents_to_add = list(/decl/reagent/toxin/cyanide = 30) /obj/item/reagent_containers/glass/bottle/stoxin name = "soporific bottle" desc = "A small bottle of soporific. Just the fumes make you sleepy." icon_state = "bottle-3" - reagents_to_add = list(/datum/reagent/soporific = 60) + reagents_to_add = list(/decl/reagent/soporific = 60) /obj/item/reagent_containers/glass/bottle/polysomnine name = "chloral hydrate bottle" desc = "A small bottle of Choral Hydrate. Mickey's Favorite!" icon_state = "bottle-3" - reagents_to_add = list(/datum/reagent/polysomnine = 30) + reagents_to_add = list(/decl/reagent/polysomnine = 30) /obj/item/reagent_containers/glass/bottle/antitoxin name = "dylovene bottle" desc = "A small bottle of dylovene. Counters poisons, and repairs damage. A wonder drug." icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/dylovene = 60) + reagents_to_add = list(/decl/reagent/dylovene = 60) /obj/item/reagent_containers/glass/bottle/saline name = "saline bottle" desc = "A small bottle of saline for attaching to drips. Re-hydrates a patient and helps with increasing blood volume." icon_state = "bottle-3" - reagents_to_add = list(/datum/reagent/saline = 60) + reagents_to_add = list(/decl/reagent/saline = 60) /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." icon_state = "bottle-1" - reagents_to_add = list(/datum/reagent/mutagen = 60) + reagents_to_add = list(/decl/reagent/mutagen = 60) /obj/item/reagent_containers/glass/bottle/ammonia name = "ammonia bottle" desc = "A small bottle." icon_state = "bottle-1" - reagents_to_add = list(/datum/reagent/ammonia = 60) + reagents_to_add = list(/decl/reagent/ammonia = 60) /obj/item/reagent_containers/glass/bottle/diethylamine name = "diethylamine bottle" desc = "A small bottle." icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/diethylamine = 60) + reagents_to_add = list(/decl/reagent/diethylamine = 60) /obj/item/reagent_containers/glass/bottle/pacid name = "polytrinic acid bottle" desc = "A small bottle. Contains a small amount of Polytrinic Acid" icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/acid/polyacid = 60) + reagents_to_add = list(/decl/reagent/acid/polyacid = 60) /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" - reagents_to_add = list(/datum/reagent/adminordrazine = 60) + reagents_to_add = list(/decl/reagent/adminordrazine = 60) /obj/item/reagent_containers/glass/bottle/capsaicin name = "capsaicin bottle" desc = "A small bottle. Contains hot sauce." icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/capsaicin = 60) + reagents_to_add = list(/decl/reagent/capsaicin = 60) /obj/item/reagent_containers/glass/bottle/frostoil name = "frost oil bottle" desc = "A small bottle. Contains cold sauce." icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/frostoil = 60) + reagents_to_add = list(/decl/reagent/frostoil = 60) /obj/item/reagent_containers/glass/bottle/pyrosilicate name = "pyrosilicate bottle" desc = "A small bottle. Contains pyrosilicate - used to heat up reagents." icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/pyrosilicate = 60) + reagents_to_add = list(/decl/reagent/pyrosilicate = 60) /obj/item/reagent_containers/glass/bottle/cryosurfactant name = "cryosurfactant bottle" desc = "A small bottle. Contains cryosurfactant - used to cool down reagents." icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/cryosurfactant = 60) - -/obj/item/reagent_containers/glass/bottle/phoron_salt - name = "phoron salt bottle" - desc = "A small bottle. Contains phoron salt - a mysterious and unstable chemical." - icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/toxin/phoron_salt = 60) + reagents_to_add = list(/decl/reagent/cryosurfactant = 60) /obj/item/reagent_containers/glass/bottle/epinephrine name = "epinephrine bottle" desc = "A small bottle. Contains epinephrine. Epinephrine, also known as adrenaline, is a super strength stimulant and painkiller intended to keep a patient alive while in critical condition. Overdose causes heart damage and an energy boost equivelent to hyperzine." icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/adrenaline = 60) + reagents_to_add = list(/decl/reagent/adrenaline = 60) /obj/item/reagent_containers/glass/bottle/dexalin_plus name = "dexalin plus bottle" desc = "A small bottle. Contains Dexalin Plus that is used in the treatment of oxygen deprivation. It is highly effective, and is twice as powerful and lasts twice as long when inhaled." icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/dexalin/plus = 60) + reagents_to_add = list(/decl/reagent/dexalin/plus = 60) /obj/item/reagent_containers/glass/bottle/coughsyrup name = "cough syrup bottle" desc = "A small bottle of cough syrup. Don't take too much!" icon_state = "bottle-3" - reagents_to_add = list(/datum/reagent/coughsyrup = 60) + reagents_to_add = list(/decl/reagent/coughsyrup = 60) /obj/item/reagent_containers/glass/bottle/thetamycin name = "thetamycin bottle" desc = "A small bottle of thetamycin. Used for disinfecting whatever wounds security caused." icon_state = "bottle-4" - reagents_to_add = list(/datum/reagent/thetamycin = 60) + reagents_to_add = list(/decl/reagent/thetamycin = 60) /obj/item/reagent_containers/glass/bottle/bicaridine name = "bicaridine bottle" desc = "A small bottle. Contains bicaridine - treats damaged tissues." icon_state = "bottle-1" - reagents_to_add = list(/datum/reagent/bicaridine = 60) + reagents_to_add = list(/decl/reagent/bicaridine = 60) /obj/item/reagent_containers/glass/bottle/dermaline name = "dermaline bottle" desc = "A small bottle. Contains dermaline - treats burnt tissues." icon_state = "bottle-2" - reagents_to_add = list(/datum/reagent/dermaline = 60) + reagents_to_add = list(/decl/reagent/dermaline = 60) /obj/item/reagent_containers/glass/bottle/peridaxon name = "peridaxon bottle" desc = "A small bottle. Contains peridaxon - treats damaged organs." icon_state = "bottle-2" - reagents_to_add = list(/datum/reagent/peridaxon = 60) + reagents_to_add = list(/decl/reagent/peridaxon = 60) /obj/item/reagent_containers/glass/bottle/mortaphenyl name = "mortaphenyl bottle" desc = "A small bottle. Contains mortaphenyl - treats mild-severe pain as a result of severe, physical injury." icon_state = "bottle-3" - reagents_to_add = list(/datum/reagent/mortaphenyl = 60) + reagents_to_add = list(/decl/reagent/mortaphenyl = 60) /obj/item/reagent_containers/glass/bottle/perconol name = "perconol bottle" desc = "A small bottle. Contains perconol - treats minor-moderate pain as a result of physical injury." icon_state = "bottle-3" - reagents_to_add = list(/datum/reagent/perconol = 60) + reagents_to_add = list(/decl/reagent/perconol = 60) diff --git a/code/modules/reagents/reagent_containers/glass/bottle/robot.dm b/code/modules/reagents/reagent_containers/glass/bottle/robot.dm index 5a1814b7efa..bbae1145c08 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle/robot.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle/robot.dm @@ -5,7 +5,7 @@ flags = OPENCONTAINER volume = 60 fragile = 0 // do NOT shatter - var/reagent = /datum/reagent/ + var/reagent = /decl/reagent/ /obj/item/reagent_containers/glass/bottle/robot/inaprovaline @@ -13,13 +13,13 @@ desc = "A small bottle. Contains inaprovaline - used to stabilize patients." icon = 'icons/obj/chemical.dmi' icon_state = "bottle-4" - reagent = /datum/reagent/inaprovaline - reagents_to_add = list(/datum/reagent/inaprovaline = 60) + reagent = /decl/reagent/inaprovaline + reagents_to_add = list(/decl/reagent/inaprovaline = 60) /obj/item/reagent_containers/glass/bottle/robot/antitoxin name = "internal anti-toxin bottle" desc = "A small bottle of Anti-toxins. Counters poisons, and repairs damage, a wonder drug." icon = 'icons/obj/chemical.dmi' icon_state = "bottle-4" - reagent = /datum/reagent/dylovene - reagents_to_add = list(/datum/reagent/dylovene = 60) \ No newline at end of file + reagent = /decl/reagent/dylovene + reagents_to_add = list(/decl/reagent/dylovene = 60) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 51ea1a7d0e1..cf320c832a6 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -127,7 +127,7 @@ /obj/item/reagent_containers/hypospray/autoinjector/attack_self(mob/user as mob) if(is_open_container()) - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents.reagent_volumes)) to_chat(user, SPAN_NOTICE("With a quick twist of \the [src]'s lid, you secure the reagents inside.")) flags &= ~OPENCONTAINER update_icon() @@ -155,7 +155,7 @@ /obj/item/reagent_containers/hypospray/autoinjector/examine(mob/user) ..(user) - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents.reagent_volumes)) to_chat(user, SPAN_NOTICE("It is currently loaded.")) else to_chat(user, SPAN_NOTICE("It is empty.")) @@ -163,15 +163,11 @@ /obj/item/reagent_containers/hypospray/autoinjector/inaprovaline name = "autoinjector (inaprovaline)" - -/obj/item/reagent_containers/hypospray/autoinjector/inaprovaline/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/inaprovaline, 5) - update_icon() + reagents_to_add = list(/decl/reagent/inaprovaline = 5) /obj/item/reagent_containers/hypospray/autoinjector/emergency name = "autoinjector (emergency)" - reagents_to_add = list(/datum/reagent/inaprovaline = 2.5, /datum/reagent/dexalin = 2.5) + reagents_to_add = list(/decl/reagent/inaprovaline = 2.5, /decl/reagent/dexalin = 2.5) /obj/item/reagent_containers/hypospray/autoinjector/emergency/Initialize() . = ..() @@ -182,11 +178,7 @@ desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel. This one contains coagzolug, a quick-acting blood coagulant that will slow bleeding for as long as it's within the bloodstream." volume = 5 flags = 0 - -/obj/item/reagent_containers/hypospray/autoinjector/coagzolug/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/coagzolug, 5) - update_icon() + reagents_to_add = list(/decl/reagent/coagzolug = 5) /obj/item/reagent_containers/hypospray/autoinjector/sideeffectbgone name = "sideeffects-be-gone! autoinjector" @@ -194,7 +186,7 @@ volume = 30 amount_per_transfer_from_this = 15 - reagents_to_add = list(/datum/reagent/synaptizine = 5, /datum/reagent/cetahydramine = 10, /datum/reagent/oculine = 5, /datum/reagent/ethylredoxrazine = 10) + reagents_to_add = list(/decl/reagent/synaptizine = 5, /decl/reagent/cetahydramine = 10, /decl/reagent/oculine = 5, /decl/reagent/ethylredoxrazine = 10) /obj/item/reagent_containers/hypospray/autoinjector/stimpack name = "stimpack" @@ -202,7 +194,7 @@ volume = 20 amount_per_transfer_from_this = 20 - reagents_to_add = list(/datum/reagent/hyperzine = 12, /datum/reagent/mortaphenyl = 6, /datum/reagent/synaptizine = 2) + reagents_to_add = list(/decl/reagent/hyperzine = 12, /decl/reagent/mortaphenyl = 6, /decl/reagent/synaptizine = 2) /obj/item/reagent_containers/hypospray/autoinjector/survival name = "survival autoinjector" @@ -210,7 +202,7 @@ volume = 35 amount_per_transfer_from_this = 35 - reagents_to_add = list(/datum/reagent/tricordrazine = 15, /datum/reagent/inaprovaline = 5, /datum/reagent/dexalin/plus = 5, /datum/reagent/oxycomorphine = 3, /datum/reagent/synaptizine = 2, /datum/reagent/mental/corophenidate = 5) + reagents_to_add = list(/decl/reagent/tricordrazine = 15, /decl/reagent/inaprovaline = 5, /decl/reagent/dexalin/plus = 5, /decl/reagent/oxycomorphine = 3, /decl/reagent/synaptizine = 2, /decl/reagent/mental/corophenidate = 5) /obj/item/reagent_containers/hypospray/combat name = "combat hypospray" @@ -221,4 +213,4 @@ armorcheck = 0 time = 0 - reagents_to_add = list(/datum/reagent/oxycomorphine = 5, /datum/reagent/synaptizine = 5, /datum/reagent/hyperzine = 5, /datum/reagent/arithrazine = 5) \ No newline at end of file + reagents_to_add = list(/decl/reagent/oxycomorphine = 5, /decl/reagent/synaptizine = 5, /decl/reagent/hyperzine = 5, /decl/reagent/arithrazine = 5) diff --git a/code/modules/reagents/reagent_containers/inhaler.dm b/code/modules/reagents/reagent_containers/inhaler.dm index 7fc1728b313..950a59b68e7 100644 --- a/code/modules/reagents/reagent_containers/inhaler.dm +++ b/code/modules/reagents/reagent_containers/inhaler.dm @@ -95,7 +95,7 @@ /obj/item/reagent_containers/inhaler/attack_self(mob/user as mob) if(is_open_container()) - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents.reagent_volumes)) to_chat(user,"With a quick twist of \the [src]'s lid, you secure the reagents inside.") flags &= ~OPENCONTAINER update_icon() @@ -121,7 +121,7 @@ /obj/item/reagent_containers/inhaler/examine(mob/user) ..(user) - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents.reagent_volumes)) to_chat(user, "It is currently loaded.") else to_chat(user, "It is spent.") @@ -132,7 +132,7 @@ Initialize() . =..() - reagents.add_reagent(/datum/reagent/dexalin, volume) + reagents.add_reagent(/decl/reagent/dexalin, volume) update_icon() return @@ -142,7 +142,7 @@ Initialize() . =..() - reagents.add_reagent(/datum/reagent/peridaxon, volume) + reagents.add_reagent(/decl/reagent/peridaxon, volume) update_icon() return @@ -152,7 +152,7 @@ Initialize() . =..() - reagents.add_reagent(/datum/reagent/hyperzine, volume) + reagents.add_reagent(/decl/reagent/hyperzine, volume) update_icon() return @@ -162,7 +162,7 @@ Initialize() . =..() - reagents.add_reagent(/datum/reagent/toxin/phoron, volume) + reagents.add_reagent(/decl/reagent/toxin/phoron, volume) update_icon() return @@ -174,7 +174,7 @@ volume = 10 Initialize() . =..() - reagents.add_reagent(/datum/reagent/toxin/phoron, volume) + reagents.add_reagent(/decl/reagent/toxin/phoron, volume) update_icon() return @@ -187,7 +187,7 @@ Initialize() . =..() - reagents.add_reagent(/datum/reagent/soporific, volume) + reagents.add_reagent(/decl/reagent/soporific, volume) update_icon() return @@ -197,7 +197,7 @@ Initialize() . =..() - reagents.add_reagent(/datum/reagent/space_drugs, volume) + reagents.add_reagent(/decl/reagent/space_drugs, volume) update_icon() return @@ -207,7 +207,7 @@ Initialize() . =..() - reagents.add_reagent(/datum/reagent/ammonia, volume) + reagents.add_reagent(/decl/reagent/ammonia, volume) update_icon() return @@ -217,7 +217,7 @@ Initialize() . =..() - reagents.add_reagent(/datum/reagent/pulmodeiectionem, volume) + reagents.add_reagent(/decl/reagent/pulmodeiectionem, volume) update_icon() return @@ -230,6 +230,6 @@ Initialize() . =..() - reagents.add_reagent(/datum/reagent/pneumalin, volume) + reagents.add_reagent(/decl/reagent/pneumalin, volume) update_icon() return diff --git a/code/modules/reagents/reagent_containers/inhaler_advanced.dm b/code/modules/reagents/reagent_containers/inhaler_advanced.dm index 224c095cfdc..fe99f697ab6 100644 --- a/code/modules/reagents/reagent_containers/inhaler_advanced.dm +++ b/code/modules/reagents/reagent_containers/inhaler_advanced.dm @@ -23,19 +23,19 @@ return if(is_open_container()) - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents.reagent_volumes)) to_chat(user,"It contains [round(reagents.total_volume, accuracy)] units of non-aerosol mix.") else to_chat(user,"It is empty.") else - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents.reagent_volumes)) to_chat(user,"The reagents are secured in the aerosol mix.") else to_chat(user,"The cartridge seems spent.") /obj/item/reagent_containers/personal_inhaler_cartridge/attack_self(mob/user as mob) if(is_open_container()) - if(reagents && reagents.reagent_list.len) + if(LAZYLEN(reagents.reagent_volumes)) to_chat(user,"With a quick twist of \the [src]'s lid, you secure the reagents inside.") flags &= ~OPENCONTAINER else @@ -191,7 +191,7 @@ name = "large inhaler cartridge (hyperzine)" Initialize() . =..() - reagents.add_reagent(/datum/reagent/hyperzine, 30) + reagents.add_reagent(/decl/reagent/hyperzine, 30) flags ^= OPENCONTAINER update_icon() return @@ -200,7 +200,7 @@ name = "large inhaler cartridge (inaprovaline)" Initialize() . =..() - reagents.add_reagent(/datum/reagent/inaprovaline, 30) + reagents.add_reagent(/decl/reagent/inaprovaline, 30) flags ^= OPENCONTAINER update_icon() return diff --git a/code/modules/reagents/reagent_containers/ladle.dm b/code/modules/reagents/reagent_containers/ladle.dm index 03583fb3e96..479346e5cc5 100644 --- a/code/modules/reagents/reagent_containers/ladle.dm +++ b/code/modules/reagents/reagent_containers/ladle.dm @@ -17,7 +17,7 @@ if(!target.is_open_container() || !flag) return ..(target, user, flag) if(reagents.total_volume) - if(!target.reagents?.get_free_space()) + if(!target.reagents || !REAGENTS_FREE_SPACE(target.reagents)) to_chat(user, SPAN_NOTICE("[target] is full.")) return TRUE var/trans = reagents.trans_to(target, amount_per_transfer_from_this) //sprinkling reagents on generic non-mobs diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index c26bae19425..bb0e5be0695 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -90,145 +90,146 @@ name = "10u Dylovene Pill" desc = "Neutralizes many common toxins." icon_state = "pill17" - reagents_to_add = list(/datum/reagent/dylovene = 10) + reagents_to_add = list(/decl/reagent/dylovene = 10) /obj/item/reagent_containers/pill/tox name = "Toxins Pill" desc = "Highly toxic." icon_state = "pill5" - reagents_to_add = list(/datum/reagent/toxin = 50) + reagents_to_add = list(/decl/reagent/toxin = 50) /obj/item/reagent_containers/pill/cyanide icon_state = "pill5" - reagents_to_add = list(/datum/reagent/toxin/cyanide = 50) + reagents_to_add = list(/decl/reagent/toxin/cyanide = 50) desc_antag = "A cyanide pill. Deadly if swallowed." /obj/item/reagent_containers/pill/adminordrazine name = "Adminordrazine Pill" desc = "It's magic. We don't have to explain it." icon_state = "pill16" - reagents_to_add = list(/datum/reagent/adminordrazine = 50) + reagents_to_add = list(/decl/reagent/adminordrazine = 50) /obj/item/reagent_containers/pill/stox name = "15u Soporific Pill" desc = "Commonly used to treat insomnia." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/soporific = 15) + reagents_to_add = list(/decl/reagent/soporific = 15) /obj/item/reagent_containers/pill/kelotane name = "10u Kelotane Pill" desc = "Used to treat minor burns." icon_state = "pill11" - reagents_to_add = list(/datum/reagent/kelotane = 10) + reagents_to_add = list(/decl/reagent/kelotane = 10) /obj/item/reagent_containers/pill/perconol name = "10u Perconol Pill" desc = "A light painkiller available over-the-counter." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/perconol = 10) + reagents_to_add = list(/decl/reagent/perconol = 10) /obj/item/reagent_containers/pill/mortaphenyl name = "10u Mortaphenyl Pill" desc = "A mortaphenyl pill, it's a potent painkiller." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/mortaphenyl = 10) + reagents_to_add = list(/decl/reagent/mortaphenyl = 10) /obj/item/reagent_containers/pill/corophenidate name = "5u Corophenidate Pill" desc = "Improves the ability to concentrate." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/mental/corophenidate = 5) + reagents_to_add = list(/decl/reagent/mental/corophenidate = 5) /obj/item/reagent_containers/pill/minaphobin name = "5u Minaphobin Pill" desc = "Used to treat anxiety disorders and depression." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/mental/minaphobin = 5) + reagents_to_add = list(/decl/reagent/mental/minaphobin = 5) /obj/item/reagent_containers/pill/inaprovaline name = "10u Inaprovaline Pill" desc = "Used to stabilize heart activity." icon_state = "pill20" - reagents_to_add = list(/datum/reagent/inaprovaline = 10) + reagents_to_add = list(/decl/reagent/inaprovaline = 10) /obj/item/reagent_containers/pill/dexalin name = "15u Dexalin Pill" desc = "Used to treat oxygen deprivation." icon_state = "pill16" - reagents_to_add = list(/datum/reagent/dexalin = 15) + reagents_to_add = list(/decl/reagent/dexalin = 15) /obj/item/reagent_containers/pill/dexalin_plus name = "15u Dexalin Plus Pill" desc = "Used to treat extreme oxygen deprivation." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/dexalin/plus = 15) + reagents_to_add = list(/decl/reagent/dexalin/plus = 15) /obj/item/reagent_containers/pill/dermaline name = "10u Dermaline Pill" desc = "Used to treat severe burn wounds." icon_state = "pill12" - reagents_to_add = list(/datum/reagent/dermaline = 10) + reagents_to_add = list(/decl/reagent/dermaline = 10) /obj/item/reagent_containers/pill/dylovene name = "15u Dylovene Pill" desc = "A broad-spectrum anti-toxin." icon_state = "pill13" - reagents_to_add = list(/datum/reagent/dylovene = 15) + reagents_to_add = list(/decl/reagent/dylovene = 15) /obj/item/reagent_containers/pill/butazoline name = "10u Butazoline Pill" desc = "Used to treat major injuries and bleeding." icon_state = "pill18" - reagents_to_add = list(/datum/reagent/butazoline = 10) + reagents_to_add = list(/decl/reagent/butazoline = 10) /obj/item/reagent_containers/pill/bicaridine name = "10u Bicaridine Pill" desc = "Used to treat minor injuries and bleeding." icon_state = "pill18" - reagents_to_add = list(/datum/reagent/bicaridine = 10) + reagents_to_add = list(/decl/reagent/bicaridine = 10) /obj/item/reagent_containers/pill/happy name = "Happy Pill" desc = "Happy happy joy joy!" icon_state = "pill18" - reagents_to_add = list(/datum/reagent/space_drugs = 15, /datum/reagent/sugar = 15) + reagents_to_add = list(/decl/reagent/space_drugs = 15, /decl/reagent/sugar = 15) /obj/item/reagent_containers/pill/zoom name = "Zoom Pill" desc = "Zoooom!" icon_state = "pill18" - reagents_to_add = list(/datum/reagent/impedrezene = 10, /datum/reagent/synaptizine = 5, /datum/reagent/hyperzine = 5) + reagents_to_add = list(/decl/reagent/impedrezene = 10, /decl/reagent/synaptizine = 5, /decl/reagent/hyperzine = 5) obj/item/reagent_containers/pill/tranquility name = "Tranquility Pill" desc = "Peace, at last." icon_state = "pill8" - reagents_to_add = list(/datum/reagent/mental/neurapan = 15, /datum/reagent/impedrezene = 10) + reagents_to_add = list(/decl/reagent/mental/neurapan = 15, /decl/reagent/impedrezene = 10) /obj/item/reagent_containers/pill/thetamycin name = "15u Thetamycin Pill" desc = "Used to treat infections and septicaemia." icon_state = "pill19" - reagents_to_add = list(/datum/reagent/thetamycin = 15) + reagents_to_add = list(/decl/reagent/thetamycin = 15) /obj/item/reagent_containers/pill/bio_vitamin name = "Vitamin Pill" desc = "Contains a meal's worth of nutrients." icon_state = "pill11" - reagents_to_add = list(/datum/reagent/nutriment = 20) + reagents_to_add = list(/decl/reagent/nutriment = 20) /obj/item/reagent_containers/pill/bio_vitamin/Initialize() - reagents_to_add += list(pick(/datum/reagent/drink/banana, /datum/reagent/drink/berryjuice, /datum/reagent/drink/grapejuice, /datum/reagent/drink/lemonjuice, /datum/reagent/drink/limejuice, /datum/reagent/drink/orangejuice, /datum/reagent/drink/watermelonjuice) = 1) . = ..() + var/juice = pick(/decl/reagent/drink/banana, /decl/reagent/drink/berryjuice, /decl/reagent/drink/grapejuice, /decl/reagent/drink/lemonjuice, /decl/reagent/drink/limejuice, /decl/reagent/drink/orangejuice, /decl/reagent/drink/watermelonjuice) + reagents.add_reagent(juice, 1) /obj/item/reagent_containers/pill/rmt name = "15u Regenerative-Muscular Tissue Supplement Pill" desc = "Commonly abbreviated to RMT, it contains chemicals rampantly used by those seeking to remedy the effects of prolonged zero-gravity adaptations." icon_state = "pill19" - reagents_to_add = list(/datum/reagent/rmt = 15) + reagents_to_add = list(/decl/reagent/rmt = 15) /obj/item/reagent_containers/pill/cetahydramine name = "5u Cetahydramine Pill" desc = "Used to treat coughing, sneezing and itching." icon_state = "pill19" - reagents_to_add = list(/datum/reagent/cetahydramine = 5) + reagents_to_add = list(/decl/reagent/cetahydramine = 5) diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index d956d6cf961..e4081f38b01 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -69,13 +69,13 @@ playsound(src.loc, spray_sound, 50, 1, -6) - if(reagents.has_reagent(/datum/reagent/acid)) + if(reagents.has_reagent(/decl/reagent/acid)) message_admins("[key_name_admin(user)] fired sulphuric acid from \a [src].") log_game("[key_name(user)] fired sulphuric acid from \a [src].",ckey=key_name(user)) - if(reagents.has_reagent(/datum/reagent/acid/polyacid)) + if(reagents.has_reagent(/decl/reagent/acid/polyacid)) message_admins("[key_name_admin(user)] fired Polyacid from \a [src].") log_game("[key_name(user)] fired Polyacid from \a [src].",ckey=key_name(user)) - if(reagents.has_reagent(/datum/reagent/lube)) + if(reagents.has_reagent(/decl/reagent/lube)) message_admins("[key_name_admin(user)] fired Space lube from \a [src].") log_game("[key_name(user)] fired Space lube from \a [src].",ckey=key_name(user)) return @@ -139,7 +139,7 @@ /obj/item/reagent_containers/spray/cleaner/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/spacecleaner, volume) + reagents.add_reagent(/decl/reagent/spacecleaner, volume) /obj/item/reagent_containers/spray/sterilizine name = "sterilizine" @@ -147,7 +147,7 @@ /obj/item/reagent_containers/spray/sterilizine/Initialize() . = ..() - reagents.add_reagent(/datum/reagent/sterilizine, volume) + reagents.add_reagent(/decl/reagent/sterilizine, volume) /obj/item/reagent_containers/spray/pepper name = "pepperspray" @@ -159,7 +159,7 @@ possible_transfer_amounts = null volume = 40 safety = 1 - reagents_to_add = list(/datum/reagent/capsaicin/condensed = 40) + reagents_to_add = list(/decl/reagent/capsaicin/condensed = 40) /obj/item/reagent_containers/spray/pepper/examine(mob/user) if(..(user, 1)) @@ -189,7 +189,7 @@ possible_transfer_amounts = null volume = 10 - reagents_to_add = list(/datum/reagent/water = 10) + reagents_to_add = list(/decl/reagent/water = 10) /obj/item/reagent_containers/spray/chemsprayer name = "chem sprayer" @@ -251,7 +251,7 @@ item_state = "plantbgone" volume = 100 - reagents_to_add = list(/datum/reagent/toxin/plantbgone = 100) + reagents_to_add = list(/decl/reagent/toxin/plantbgone = 100) /obj/item/reagent_containers/spray/plantbgone/afterattack(atom/A as mob|obj, mob/user as mob, proximity) if(!proximity) return diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 2866ca2e854..124e1ed1bac 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -147,20 +147,20 @@ switch(mode) if(SYRINGE_DRAW) - if(!reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(reagents)) to_chat(user, SPAN_WARNING("The syringe is full.")) mode = SYRINGE_INJECT return if(ismob(target))//Blood! - if(reagents.has_reagent(/datum/reagent/blood)) + if(reagents.has_reagent(/decl/reagent/blood)) to_chat(user, SPAN_NOTICE("There is already a blood sample in this syringe.")) return if(istype(target, /mob/living/carbon)) if(istype(target, /mob/living/carbon/slime)) to_chat(user, SPAN_WARNING("You are unable to locate any blood.")) return - var/amount = reagents.get_free_space() + var/amount = REAGENTS_FREE_SPACE(reagents) var/mob/living/carbon/T = target if(!T.dna) to_chat(user, SPAN_WARNING("You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum).")) @@ -169,21 +169,8 @@ to_chat(user, SPAN_WARNING("You are unable to locate any blood.")) return - var/datum/reagent/B - if(istype(T, /mob/living/carbon/human)) - var/mob/living/carbon/human/H = T - if(H.species && H.species.flags & NO_BLOOD) - H.reagents.trans_to_obj(src, amount) - else - B = T.take_blood(src, amount) - else - B = T.take_blood(src,amount) + T.take_blood(src,amount) - if (B) - reagents.reagent_list += B - reagents.update_total() - on_reagent_change() - reagents.handle_reactions() to_chat(user, SPAN_NOTICE("You take a blood sample from [target].")) for(var/mob/O in viewers(4, user)) O.show_message(SPAN_NOTICE("[user] takes a blood sample from [target]."), 1) @@ -201,7 +188,7 @@ to_chat(user, SPAN_NOTICE("You fill the syringe with [trans] units of the solution.")) update_icon() - if(!reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(reagents)) mode = SYRINGE_INJECT update_icon() @@ -216,7 +203,7 @@ if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/smokable/cigarette) && !istype(target, /obj/item/storage/box/fancy/cigarettes)) to_chat(user, SPAN_NOTICE("You cannot directly fill this object.")) return - if(!target.reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(target.reagents)) to_chat(user, SPAN_NOTICE("[target] is full.")) return @@ -379,7 +366,7 @@ /obj/item/reagent_containers/syringe/inaprovaline name = "Syringe (inaprovaline)" desc = "Contains inaprovaline - used to stabilize patients." - reagents_to_add = list(/datum/reagent/inaprovaline = 15) + reagents_to_add = list(/decl/reagent/inaprovaline = 15) /obj/item/reagent_containers/syringe/inaprovaline/Initialize() . = ..() @@ -389,7 +376,7 @@ /obj/item/reagent_containers/syringe/dylovene name = "Syringe (dylovene)" desc = "Contains anti-toxins." - reagents_to_add = list(/datum/reagent/dylovene = 15) + reagents_to_add = list(/decl/reagent/dylovene = 15) /obj/item/reagent_containers/syringe/dylovene/Initialize() . = ..() @@ -399,7 +386,7 @@ /obj/item/reagent_containers/syringe/antibiotic name = "Syringe (thetamycin)" desc = "Contains antibiotics." - reagents_to_add = list(/datum/reagent/thetamycin = 15) + reagents_to_add = list(/decl/reagent/thetamycin = 15) /obj/item/reagent_containers/syringe/antibiotic/Initialize() . = ..() @@ -409,7 +396,7 @@ /obj/item/reagent_containers/syringe/drugs name = "Syringe (drugs)" desc = "Contains aggressive drugs meant for torture." - reagents_to_add = list(/datum/reagent/toxin/panotoxin = 5, /datum/reagent/mindbreaker = 10) + reagents_to_add = list(/decl/reagent/toxin/panotoxin = 5, /decl/reagent/mindbreaker = 10) /obj/item/reagent_containers/syringe/drugs/Initialize() . = ..() @@ -419,7 +406,7 @@ /obj/item/reagent_containers/syringe/fluvectionem name = "Syringe (fluvectionem)" desc = "Contains purging medicine." - reagents_to_add = list(/datum/reagent/fluvectionem = 15) + reagents_to_add = list(/decl/reagent/fluvectionem = 15) /obj/item/reagent_containers/syringe/fluvectionem/Initialize() . = ..() @@ -428,7 +415,7 @@ /obj/item/reagent_containers/syringe/ld50_syringe/chloral - reagents_to_add = list(/datum/reagent/polysomnine = 60) + reagents_to_add = list(/decl/reagent/polysomnine = 60) /obj/item/reagent_containers/syringe/ld50_syringe/chloral/Initialize() . = ..() diff --git a/code/modules/reagents/reagent_containers/tooth_paste.dm b/code/modules/reagents/reagent_containers/tooth_paste.dm index 9a711463472..d710ea9859a 100644 --- a/code/modules/reagents/reagent_containers/tooth_paste.dm +++ b/code/modules/reagents/reagent_containers/tooth_paste.dm @@ -7,7 +7,7 @@ possible_transfer_amounts = null amount_per_transfer_from_this = 5 volume = 20 - reagents_to_add = list(/datum/reagent/drink/toothpaste = 20) + reagents_to_add = list(/decl/reagent/drink/toothpaste = 20) /obj/item/reagent_containers/toothpaste/on_reagent_change() update_icon() @@ -38,7 +38,7 @@ /obj/item/reagent_containers/toothbrush/update_icon() cut_overlays() - if(reagents.has_reagent(/datum/reagent/drink/toothpaste)) + if(reagents.has_reagent(/decl/reagent/drink/toothpaste)) add_overlay("toothpaste_overlay") /obj/item/reagent_containers/toothbrush/attack_self(mob/user as mob) @@ -88,7 +88,7 @@ return if(istype(A, /obj/structure/reagent_dispensers) || istype(A, /obj/structure/mopbucket) || istype(A, /obj/item/reagent_containers/glass)) - if(!reagents.get_free_space()) + if(!REAGENTS_FREE_SPACE(reagents)) return if(A.reagents && A.reagents.trans_to_obj(src, reagents.maximum_volume)) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 35b4ab2a942..12af5ebfc46 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -97,7 +97,7 @@ desc = "A tank filled with extinguisher fluid." icon_state = "extinguisher_tank" amount_per_transfer_from_this = 30 - reagents_to_add = list(/datum/reagent/toxin/fertilizer/monoammoniumphosphate = 1000) + reagents_to_add = list(/decl/reagent/toxin/fertilizer/monoammoniumphosphate = 1000) // Tanks /obj/structure/reagent_dispensers/watertank @@ -105,14 +105,14 @@ desc = "A tank filled with water." icon_state = "watertank" amount_per_transfer_from_this = 300 - reagents_to_add = list(/datum/reagent/water = 1000) + reagents_to_add = list(/decl/reagent/water = 1000) /obj/structure/reagent_dispensers/lube name = "lube tank" desc = "A tank filled with a silly amount of lube." icon_state = "lubetank" amount_per_transfer_from_this = 30 - reagents_to_add = list(/datum/reagent/lube = 1000) + reagents_to_add = list(/decl/reagent/lube = 1000) /obj/structure/reagent_dispensers/fueltank name = "fuel tank" @@ -123,7 +123,7 @@ var/defuse = 0 var/armed = 0 var/obj/item/device/assembly_holder/rig = null - reagents_to_add = list(/datum/reagent/fuel = 1000) + reagents_to_add = list(/decl/reagent/fuel = 1000) /obj/structure/reagent_dispensers/fueltank/examine(mob/user) if(!..(user, 2)) @@ -230,7 +230,7 @@ density = 0 amount_per_transfer_from_this = 45 can_tamper = FALSE - reagents_to_add = list(/datum/reagent/capsaicin/condensed = 1000) + reagents_to_add = list(/decl/reagent/capsaicin/condensed = 1000) /obj/structure/reagent_dispensers/virusfood name = "virus food dispenser" @@ -240,7 +240,7 @@ anchored = 1 density = 0 can_tamper = FALSE - reagents_to_add = list(/datum/reagent/nutriment/virusfood = 1000) + reagents_to_add = list(/decl/reagent/nutriment/virusfood = 1000) /obj/structure/reagent_dispensers/acid name = "sulphuric acid dispenser" @@ -250,7 +250,7 @@ anchored = 1 density = 0 can_tamper = FALSE - reagents_to_add = list(/datum/reagent/acid = 1000) + reagents_to_add = list(/decl/reagent/acid = 1000) //Water Cooler @@ -264,7 +264,7 @@ anchored = 1 capacity = 500 can_tamper = FALSE - reagents_to_add = list(/datum/reagent/water = 500) + reagents_to_add = list(/decl/reagent/water = 500) /obj/structure/reagent_dispensers/water_cooler/attackby(obj/item/W as obj, mob/user as mob) if (W.isscrewdriver()) @@ -314,19 +314,19 @@ /obj/structure/reagent_dispensers/keg/beerkeg name = "beer keg" desc = "A beer keg" - reagents_to_add = list(/datum/reagent/alcohol/ethanol/beer = 1000) + reagents_to_add = list(/decl/reagent/alcohol/beer = 1000) /obj/structure/reagent_dispensers/keg/xuizikeg name = "xuizi juice keg" desc = "A keg full of Xuizi juice, blended flower buds from the Moghean Xuizi cactus. The export stamp of the Arizi Guild is imprinted on the side." icon_state = "keg_xuizi" - reagents_to_add = list(/datum/reagent/alcohol/butanol/xuizijuice = 1000) + reagents_to_add = list(/decl/reagent/alcohol/butanol/xuizijuice = 1000) /obj/structure/reagent_dispensers/keg/mead name = "mead barrel" desc = "A wooden mead barrel." icon_state = "woodkeg" - reagents_to_add = list(/datum/reagent/alcohol/ethanol/messa_mead = 1000) + reagents_to_add = list(/decl/reagent/alcohol/messa_mead = 1000) //Cooking oil tank /obj/structure/reagent_dispensers/cookingoil @@ -335,7 +335,7 @@ icon_state = "oiltank" amount_per_transfer_from_this = 120 capacity = 5000 - reagents_to_add = list(/datum/reagent/nutriment/triglyceride/oil/corn = 5000) + reagents_to_add = list(/decl/reagent/nutriment/triglyceride/oil/corn = 5000) /obj/structure/reagent_dispensers/cookingoil/bullet_act(var/obj/item/projectile/Proj) if(Proj.get_structure_damage()) @@ -348,7 +348,7 @@ desc = "A tank of industrial coolant" icon_state = "coolanttank" amount_per_transfer_from_this = 10 - reagents_to_add = list(/datum/reagent/coolant = 1000) + reagents_to_add = list(/decl/reagent/coolant = 1000) /obj/structure/reagent_dispensers/coolanttank/bullet_act(var/obj/item/projectile/Proj) if(Proj.get_structure_damage()) diff --git a/code/modules/research/designs/circuit/circuits.dm b/code/modules/research/designs/circuit/circuits.dm index 2856cc4943d..ae90e86eb19 100644 --- a/code/modules/research/designs/circuit/circuits.dm +++ b/code/modules/research/designs/circuit/circuits.dm @@ -2,7 +2,7 @@ build_type = IMPRINTER req_tech = list(TECH_DATA = 2) materials = list(MATERIAL_GLASS = 2000) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) /datum/design/circuit/AssembleDesignDesc() if(!desc) @@ -12,4 +12,4 @@ desc = "Used in the construction of a: [capitalize_first_letters(initial(machine.name))], [initial(machine.desc)]" else var/atom/A = build_path - desc = initial(A.desc) \ No newline at end of file + desc = initial(A.desc) diff --git a/code/modules/research/designs/protolathe/modular_computer_designs.dm b/code/modules/research/designs/protolathe/modular_computer_designs.dm index 221ae3088f0..20d4e0ff0b8 100644 --- a/code/modules/research/designs/protolathe/modular_computer_designs.dm +++ b/code/modules/research/designs/protolathe/modular_computer_designs.dm @@ -37,28 +37,28 @@ req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 1) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 250, MATERIAL_GLASS = 100) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) build_path = /obj/item/computer_hardware/network_card /datum/design/item/modularcomponent/netcard/signaler req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 1) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 300, MATERIAL_GLASS = 150) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) build_path = /obj/item/computer_hardware/network_card/signaler /datum/design/item/modularcomponent/netcard/advanced req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 2) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 500, MATERIAL_GLASS = 200) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) build_path = /obj/item/computer_hardware/network_card/advanced /datum/design/item/modularcomponent/netcard/wired req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 3) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 2500, MATERIAL_GLASS = 400) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) build_path = /obj/item/computer_hardware/network_card/wired // Data crystals (USB flash drives) @@ -66,21 +66,21 @@ req_tech = list(TECH_DATA = 1) build_type = IMPRINTER materials = list(MATERIAL_GLASS = 800) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) build_path = /obj/item/computer_hardware/hard_drive/portable /datum/design/item/modularcomponent/portabledrive/advanced req_tech = list(TECH_DATA = 2) build_type = IMPRINTER materials = list(MATERIAL_GLASS = 1600) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) build_path = /obj/item/computer_hardware/hard_drive/portable/advanced /datum/design/item/modularcomponent/portabledrive/super req_tech = list(TECH_DATA = 4) build_type = IMPRINTER materials = list(MATERIAL_GLASS = 3200) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) build_path = /obj/item/computer_hardware/hard_drive/portable/super // Card slot @@ -149,28 +149,28 @@ req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 1600) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) build_path = /obj/item/computer_hardware/processor_unit /datum/design/item/modularcomponent/cpu/small req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 800) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) build_path = /obj/item/computer_hardware/processor_unit/small /datum/design/item/modularcomponent/cpu/photonic req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 4) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 6400, MATERIAL_GLASS = 2000) - chemicals = list(/datum/reagent/acid = 40) + chemicals = list(/decl/reagent/acid = 40) build_path = /obj/item/computer_hardware/processor_unit/photonic /datum/design/item/modularcomponent/cpu/photonic/small req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 3200, MATERIAL_GLASS = 1000) - chemicals = list(/datum/reagent/acid = 20) + chemicals = list(/decl/reagent/acid = 20) build_path = /obj/item/computer_hardware/processor_unit/photonic/small // AI Slot @@ -186,4 +186,4 @@ req_tech = list(TECH_POWER = 1, TECH_ENGINEERING = 1) build_type = IMPRINTER materials = list(DEFAULT_WALL_MATERIAL = 1000, MATERIAL_GLASS = 500) - build_path = /obj/item/computer_hardware/flashlight \ No newline at end of file + build_path = /obj/item/computer_hardware/flashlight diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index e529619925f..840d33430f0 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -74,7 +74,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, return return_name /obj/machinery/computer/rdconsole/proc/CallReagentName(ID) - var/datum/reagent/R = SSchemistry.chemical_reagents[ID] + var/decl/reagent/R = decls_repository.get_decl(ID) return R ? R.name : "(none)" /obj/machinery/computer/rdconsole/proc/SyncRDevices() //Makes sure it is properly sync'ed up with the devices attached to it (if any). @@ -738,9 +738,10 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu || " dat += "Protolathe Menu
" dat += "Chemical Storage

" - for(var/datum/reagent/R in linked_lathe.reagents.reagent_list) - dat += "Name: [R.name] | Units: [R.volume] " - dat += "(Purge)
" + for(var/_R in linked_lathe.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + dat += "Name: [R.name] | Units: [linked_lathe.reagents.reagent_volumes[_R]] " + dat += "(Purge)
" dat += "Disposal All Chemicals in Storage
" if(3.4) // Protolathe queue @@ -806,9 +807,10 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu || " dat += "Imprinter Menu
" dat += "Chemical Storage

" - for(var/datum/reagent/R in linked_imprinter.reagents.reagent_list) - dat += "Name: [R.name] | Units: [R.volume] " - dat += "(Purge)
" + for(var/_R in linked_imprinter.reagents.reagent_volumes) + var/decl/reagent/R = decls_repository.get_decl(_R) + dat += "Name: [R.name] | Units: [linked_imprinter.reagents.reagent_volumes[_R]] " + dat += "(Purge)
" dat += "Disposal All Chemicals in Storage
" if(4.3) diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm b/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm index 592a9cf37a4..be4b5e93915 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact_autocloner.dm @@ -35,6 +35,7 @@ /mob/living/simple_animal/corgi/puppy,\ /mob/living/simple_animal/chicken,\ /mob/living/simple_animal/cow,\ + /mob/living/simple_animal/pig,\ /mob/living/simple_animal/parrot,\ /mob/living/simple_animal/slime,\ /mob/living/simple_animal/crab,\ diff --git a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm index 1c55b1ec3be..7d6b9ed01fb 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact_unknown.dm @@ -212,22 +212,22 @@ /obj/machinery/artifact/attackby(obj/item/W as obj, mob/living/user as mob) if (istype(W, /obj/item/reagent_containers/)) - if(W.reagents.has_reagent(/datum/reagent/hydrazine, 1) || W.reagents.has_reagent(/datum/reagent/water, 1)) + if(W.reagents.has_reagent(/decl/reagent/hydrazine, 1) || W.reagents.has_reagent(/decl/reagent/water, 1)) if(my_effect.trigger == TRIGGER_WATER) my_effect.ToggleActivate() if(secondary_effect?.trigger == TRIGGER_WATER) secondary_effect.ToggleActivate() - else if(W.reagents.has_reagent(/datum/reagent/acid, 1) || W.reagents.has_reagent(/datum/reagent/acid/polyacid, 1) || W.reagents.has_reagent(/datum/reagent/diethylamine, 1)) + else if(W.reagents.has_reagent(/decl/reagent/acid, 1) || W.reagents.has_reagent(/decl/reagent/acid/polyacid, 1) || W.reagents.has_reagent(/decl/reagent/diethylamine, 1)) if(my_effect.trigger == TRIGGER_ACID) my_effect.ToggleActivate() if(secondary_effect?.trigger == TRIGGER_ACID) secondary_effect.ToggleActivate() - else if(W.reagents.has_reagent(/datum/reagent/toxin/phoron, 1) || W.reagents.has_reagent(/datum/reagent/thermite, 1)) + else if(W.reagents.has_reagent(/decl/reagent/toxin/phoron, 1) || W.reagents.has_reagent(/decl/reagent/thermite, 1)) if(my_effect.trigger == TRIGGER_VOLATILE) my_effect.ToggleActivate() if(secondary_effect?.trigger == TRIGGER_VOLATILE) secondary_effect.ToggleActivate() - else if(W.reagents.has_reagent(/datum/reagent/toxin, 1) || W.reagents.has_reagent(/datum/reagent/toxin/cyanide, 1) || W.reagents.has_reagent(/datum/reagent/toxin/amatoxin, 1) || W.reagents.has_reagent(/datum/reagent/alcohol/ethanol/neurotoxin, 1)) + else if(W.reagents.has_reagent(/decl/reagent/toxin, 1) || W.reagents.has_reagent(/decl/reagent/toxin/cyanide, 1) || W.reagents.has_reagent(/decl/reagent/toxin/amatoxin, 1) || W.reagents.has_reagent(/decl/reagent/alcohol/neurotoxin, 1)) if(my_effect.trigger == TRIGGER_TOXIN) my_effect.ToggleActivate() if(secondary_effect?.trigger == TRIGGER_TOXIN) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm index 5082f9d8f87..4f763280727 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_heal.dm @@ -17,7 +17,7 @@ if(affecting && istype(affecting)) affecting.heal_damage(25 * weakness, 25 * weakness) //H:heal_organ_damage(25, 25) - H.vessel.add_reagent(/datum/reagent/blood,5) + H.vessel.add_reagent(/decl/reagent/blood,5, temperature = H.species?.body_temperature) H.adjustNutritionLoss(-50 * weakness) H.adjustHydrationLoss(-50 * weakness) H.adjustBrainLoss(-25 * weakness) diff --git a/code/modules/research/xenoarchaeology/chemistry.dm b/code/modules/research/xenoarchaeology/chemistry.dm index ae4f16b4e26..28488e5017b 100644 --- a/code/modules/research/xenoarchaeology/chemistry.dm +++ b/code/modules/research/xenoarchaeology/chemistry.dm @@ -40,21 +40,21 @@ obj/item/reagent_containers/glass/solution_tray/attackby(obj/item/W as obj, mob/ name = "beaker 'tungsten'" Initialize() . = ..() - reagents.add_reagent(/datum/reagent/tungsten,50) + reagents.add_reagent(/decl/reagent/tungsten,50) update_icon() /obj/item/reagent_containers/glass/beaker/oxygen name = "beaker 'oxygen'" Initialize() . = ..() - reagents.add_reagent(/datum/reagent/acetone,50) + reagents.add_reagent(/decl/reagent/acetone,50) update_icon() /obj/item/reagent_containers/glass/beaker/sodium name = "beaker 'sodium'" Initialize() . = ..() - reagents.add_reagent(/datum/reagent/sodium,50) + reagents.add_reagent(/decl/reagent/sodium,50) update_icon() /obj/item/reagent_containers/glass/beaker/lithium @@ -62,7 +62,7 @@ obj/item/reagent_containers/glass/solution_tray/attackby(obj/item/W as obj, mob/ Initialize() . = ..() - reagents.add_reagent(/datum/reagent/lithium,50) + reagents.add_reagent(/decl/reagent/lithium,50) update_icon() /obj/item/reagent_containers/glass/beaker/water @@ -70,7 +70,7 @@ obj/item/reagent_containers/glass/solution_tray/attackby(obj/item/W as obj, mob/ Initialize() . = ..() - reagents.add_reagent(/datum/reagent/water,50) + reagents.add_reagent(/decl/reagent/water,50) update_icon() /obj/item/reagent_containers/glass/beaker/fuel @@ -78,5 +78,5 @@ obj/item/reagent_containers/glass/solution_tray/attackby(obj/item/W as obj, mob/ Initialize() . = ..() - reagents.add_reagent(/datum/reagent/fuel,50) + reagents.add_reagent(/decl/reagent/fuel,50) update_icon() diff --git a/code/modules/research/xenoarchaeology/finds/finds_special.dm b/code/modules/research/xenoarchaeology/finds/finds_special.dm index f6b357fabad..a9d9894a82f 100644 --- a/code/modules/research/xenoarchaeology/finds/finds_special.dm +++ b/code/modules/research/xenoarchaeology/finds/finds_special.dm @@ -8,7 +8,7 @@ /obj/item/reagent_containers/glass/replenishing/Initialize() . = ..() START_PROCESSING(SSprocessing, src) - spawning_id = pick(/datum/reagent/blood,/datum/reagent/water/holywater,/datum/reagent/lube,/datum/reagent/soporific,/datum/reagent/alcohol/ethanol,/datum/reagent/drink/ice,/datum/reagent/glycerol,/datum/reagent/fuel,/datum/reagent/spacecleaner) + spawning_id = pick(/decl/reagent/blood,/decl/reagent/water/holywater,/decl/reagent/lube,/decl/reagent/soporific,/decl/reagent/alcohol,/decl/reagent/drink/ice,/decl/reagent/glycerol,/decl/reagent/fuel,/decl/reagent/spacecleaner) /obj/item/reagent_containers/glass/replenishing/process() @@ -150,7 +150,7 @@ B.target_turf = pick(seen_turfs_in_range(src, 1)) B.blood_DNA = list() B.blood_DNA[M.dna.unique_enzymes] = M.dna.b_type - M.vessel.remove_reagent(/datum/reagent/blood,rand(25,50)) + M.vessel.remove_reagent(/decl/reagent/blood,rand(25,50)) //animated blood 2 SPOOKY /obj/effect/decal/cleanable/blood/splatter/animated diff --git a/code/modules/research/xenoarchaeology/geosample.dm b/code/modules/research/xenoarchaeology/geosample.dm index d48d386c0ba..ccaf2104c3d 100644 --- a/code/modules/research/xenoarchaeology/geosample.dm +++ b/code/modules/research/xenoarchaeology/geosample.dm @@ -30,7 +30,7 @@ icon_state = "sliver[rand(1,3)]" randpixel_xy() create_reagents(50) - reagents.add_reagent(/datum/reagent/stone_dust,50) + reagents.add_reagent(/decl/reagent/stone_dust,50) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Geosample datum diff --git a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm index 926312784e7..2fb142b6464 100644 --- a/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm +++ b/code/modules/research/xenoarchaeology/machinery/geosample_scanner.dm @@ -48,18 +48,18 @@ /obj/machinery/radiocarbon_spectrometer/Initialize() . = ..() create_reagents(500) - coolant_reagents_purity[/datum/reagent/water] = 0.5 - coolant_reagents_purity[/datum/reagent/drink/coffee/icecoffee] = 0.6 - coolant_reagents_purity[/datum/reagent/drink/icetea] = 0.6 - coolant_reagents_purity[/datum/reagent/drink/milkshake] = 0.6 - coolant_reagents_purity[/datum/reagent/leporazine] = 0.7 - coolant_reagents_purity[/datum/reagent/kelotane] = 0.7 - coolant_reagents_purity[/datum/reagent/sterilizine] = 0.7 - coolant_reagents_purity[/datum/reagent/dermaline] = 0.7 - coolant_reagents_purity[/datum/reagent/hyperzine] = 0.8 - coolant_reagents_purity[/datum/reagent/cryoxadone] = 0.9 - coolant_reagents_purity[/datum/reagent/coolant] = 1 - coolant_reagents_purity[/datum/reagent/adminordrazine] = 2 + coolant_reagents_purity[/decl/reagent/water] = 0.5 + coolant_reagents_purity[/decl/reagent/drink/coffee/icecoffee] = 0.6 + coolant_reagents_purity[/decl/reagent/drink/icetea] = 0.6 + coolant_reagents_purity[/decl/reagent/drink/milkshake] = 0.6 + coolant_reagents_purity[/decl/reagent/leporazine] = 0.7 + coolant_reagents_purity[/decl/reagent/kelotane] = 0.7 + coolant_reagents_purity[/decl/reagent/sterilizine] = 0.7 + coolant_reagents_purity[/decl/reagent/dermaline] = 0.7 + coolant_reagents_purity[/decl/reagent/hyperzine] = 0.8 + coolant_reagents_purity[/decl/reagent/cryoxadone] = 0.9 + coolant_reagents_purity[/decl/reagent/coolant] = 1 + coolant_reagents_purity[/decl/reagent/adminordrazine] = 2 /obj/machinery/radiocarbon_spectrometer/attack_hand(var/mob/user as mob) ui_interact(user) @@ -104,16 +104,17 @@ fresh_coolant = 0 coolant_purity = 0 var/num_reagent_types = 0 - for (var/datum/reagent/current_reagent in src.reagents.reagent_list) + for (var/_current_reagent in reagents.reagent_volumes) + var/decl/reagent/current_reagent = decls_repository.get_decl(_current_reagent) if (!current_reagent) continue - var/cur_purity = coolant_reagents_purity[current_reagent.type] + var/cur_purity = coolant_reagents_purity[_current_reagent] if(!cur_purity) cur_purity = 0.1 else if(cur_purity > 1) cur_purity = 1 - total_purity += cur_purity * current_reagent.volume - fresh_coolant += current_reagent.volume + total_purity += cur_purity * REAGENT_VOLUME(reagents, _current_reagent) + fresh_coolant += REAGENT_VOLUME(reagents, _current_reagent) num_reagent_types += 1 if(total_purity && fresh_coolant) coolant_purity = total_purity / fresh_coolant diff --git a/code/modules/spell_system/artifacts/items/lich_phylactery.dm b/code/modules/spell_system/artifacts/items/lich_phylactery.dm index 7f36b864b33..cee338f09e0 100644 --- a/code/modules/spell_system/artifacts/items/lich_phylactery.dm +++ b/code/modules/spell_system/artifacts/items/lich_phylactery.dm @@ -8,14 +8,13 @@ light_color = "#6633CC" light_power = 3 light_range = 4 + reagents_to_add = list(/decl/reagent/toxin/undead = 120) var/lich = null /obj/item/phylactery/Initialize() . = ..() world_phylactery += src - create_reagents(120) - reagents.add_reagent(/datum/reagent/toxin/undead, 120) /obj/item/phylactery/Destroy() to_chat(lich, "Your phylactery was destroyed, your soul is cast into the abyss as your immortality vanishes away!") diff --git a/code/modules/spell_system/spells/spell_list/others/generic/entangle.dm b/code/modules/spell_system/spells/spell_list/others/generic/entangle.dm index 6d84a3cae5b..6deced7cb65 100644 --- a/code/modules/spell_system/spells/spell_list/others/generic/entangle.dm +++ b/code/modules/spell_system/spells/spell_list/others/generic/entangle.dm @@ -28,7 +28,7 @@ seed.name = "heirlooms" seed.seed_name = "heirloom" seed.display_name = "vines" - seed.chems = list(/datum/reagent/nutriment = list(1, 20)) + seed.chems = list(/decl/reagent/nutriment = list(1, 20)) /spell/targeted/entangle/cast(var/list/targets) for(var/mob/M in targets) @@ -52,4 +52,4 @@ max_targets++ - return "This spell will now entangle [max_targets] people at the same time." \ No newline at end of file + return "This spell will now entangle [max_targets] people at the same time." diff --git a/code/modules/spell_system/spells/spell_list/self/conjure/plant_sanctuary.dm b/code/modules/spell_system/spells/spell_list/self/conjure/plant_sanctuary.dm index 65da8ee1a2c..816c8997a82 100644 --- a/code/modules/spell_system/spells/spell_list/self/conjure/plant_sanctuary.dm +++ b/code/modules/spell_system/spells/spell_list/self/conjure/plant_sanctuary.dm @@ -27,7 +27,7 @@ name = "merlin tears" seed_name = "merlin tears" display_name = "merlin tears" - chems = list(/datum/reagent/bicaridine = list(3,7), /datum/reagent/dermaline = list(3,7), /datum/reagent/dylovene = list(3,7), /datum/reagent/tricordrazine = list(3,7), /datum/reagent/alkysine = list(1,2), /datum/reagent/oculine = list(1,2), /datum/reagent/peridaxon = list(4,5)) + chems = list(/decl/reagent/bicaridine = list(3,7), /decl/reagent/dermaline = list(3,7), /decl/reagent/dylovene = list(3,7), /decl/reagent/tricordrazine = list(3,7), /decl/reagent/alkysine = list(1,2), /decl/reagent/oculine = list(1,2), /decl/reagent/peridaxon = list(4,5)) kitchen_tag = "berries" /datum/seed/merlin_tear/setup_traits() @@ -41,4 +41,4 @@ set_trait(TRAIT_PRODUCTION,6) set_trait(TRAIT_POTENCY,10) set_trait(TRAIT_HARVEST_REPEAT,1) - set_trait(TRAIT_IMMUTABLE,1) \ No newline at end of file + set_trait(TRAIT_IMMUTABLE,1) diff --git a/code/modules/surgery/other.dm b/code/modules/surgery/other.dm index 8bfbd3c6f28..a9766c68a8c 100644 --- a/code/modules/surgery/other.dm +++ b/code/modules/surgery/other.dm @@ -137,7 +137,7 @@ return FALSE var/obj/item/reagent_containers/container = tool - if(!container.reagents.has_reagent(/datum/reagent/peridaxon)) + if(!container.reagents.has_reagent(/decl/reagent/peridaxon)) return FALSE if (target_zone == BP_MOUTH) @@ -162,7 +162,7 @@ var/trans = container.reagents.trans_to_mob(target, container.amount_per_transfer_from_this, CHEM_BLOOD) //technically it's contact, but the reagents are being applied to internal tissue if (trans > 0) - if(container.reagents.has_reagent(/datum/reagent/peridaxon)) + if(container.reagents.has_reagent(/decl/reagent/peridaxon)) affected.status &= ~ORGAN_DEAD affected.owner.update_body(1) @@ -329,4 +329,4 @@ user.visible_message(SPAN_WARNING("[user]'s hand slips, sawing through the bone in [target]'s [affected.name] with \the [tool]!"), \ SPAN_WARNING("Your hand slips, sawwing through the bone in [target]'s [affected.name] with \the [tool]!")) target.apply_damage(30, BRUTE, target_zone, 0, tool, damage_flags = tool.damage_flags()) - affected.fracture() \ No newline at end of file + affected.fracture() diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index 3eee3836e64..feec543aca7 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -15,7 +15,7 @@ pixel_x = rand(-5, 5) pixel_y = rand(-5, 5) create_reagents(10) - reagents.add_reagent(/datum/reagent/bluespace_dust, blink_range) + reagents.add_reagent(/decl/reagent/bluespace_dust, blink_range) /obj/item/bluespace_crystal/attack_self(mob/user) user.visible_message("[user] crushes [src]!", "You crush [src]!") diff --git a/code/modules/ventcrawl/ventcrawl_atmospherics.dm b/code/modules/ventcrawl/ventcrawl_atmospherics.dm index 41e1b6f4931..20f21a16935 100644 --- a/code/modules/ventcrawl/ventcrawl_atmospherics.dm +++ b/code/modules/ventcrawl/ventcrawl_atmospherics.dm @@ -74,7 +74,7 @@ if(istype(V, /obj/machinery/atmospherics/unary/vent_pump) && vent.loc && !vent.is_welded()) var/datum/reagents/R = new/datum/reagents(reagent_amount) R.my_atom = vent - R.add_reagent(/datum/reagent/blood, reagent_amount, list("blood_colour" = blood_color)) + R.add_reagent(/decl/reagent/blood, reagent_amount, list("blood_colour" = blood_color)) var/datum/effect/effect/system/smoke_spread/chem/smoke = new smoke.show_log = 0 // This displays a log on creation @@ -87,7 +87,7 @@ else var/datum/reagents/R = new/datum/reagents(reagent_amount) R.my_atom = src - R.add_reagent(/datum/reagent/blood, reagent_amount, list("blood_colour" = blood_color)) + R.add_reagent(/decl/reagent/blood, reagent_amount, list("blood_colour" = blood_color)) var/datum/effect/effect/system/smoke_spread/chem/smoke = new smoke.show_log = 0 // This displays a log on creation diff --git a/code/unit_tests/chemistry_tests.dm b/code/unit_tests/chemistry_tests.dm index fe9fb973e9f..35fc755a910 100644 --- a/code/unit_tests/chemistry_tests.dm +++ b/code/unit_tests/chemistry_tests.dm @@ -12,13 +12,11 @@ datum/unit_test/specific_heat/start_test() var/error_count = 0 - for(var/type_found in subtypesof(/datum/reagent/)) - var/datum/reagent/R = new type_found - if(istype(R) && R.name) - if(!SSchemistry.has_valid_specific_heat(R)) - log_unit_test("[ascii_red][R.type] lacks a proper specific heat value![ascii_reset]") - error_count++ - qdel(R) + for(var/reagent in decls_repository.get_decls_of_subtype(/decl/reagent/)) + var/decl/reagent/R = reagent + if(!SSchemistry.has_valid_specific_heat(R)) + log_unit_test("[ascii_red][R.type] lacks a proper specific heat value![ascii_reset]") + error_count++ if(error_count) fail("[error_count] reagents(s) found without a proper specific heat value. Assign a specific heat value or make a recipe with these reagents as the final product.") @@ -26,4 +24,3 @@ datum/unit_test/specific_heat/start_test() pass("All reagents have a specific heat value.") return 1 - diff --git a/config/example/config.txt b/config/example/config.txt index 983fbb02585..6421f5824bf 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -137,6 +137,7 @@ PROBABILITY S MAGISTAKE 1 PROBABILITY S NINJA 1 PROBABILITY S HEIST 1 PROBABILITY S VAMPIRE 1 +PROBABILITY S REVENANTS 1 PROBABILITY S EXTEND-A-TRAITORMONGOUS 6 PROBABILITY S CONFLUX 1 PROBABILITY S CROSSFIRE 1 diff --git a/html/changelog.html b/html/changelog.html index 6c05635cba6..a0b18d1fc6f 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -35,6 +35,97 @@ -->
+

17 January 2021

+

Doxxmedearly updated:

+
    +
  • Candle boxes now take up less inventory space. They still hold five candles.
  • +
  • Reduced the number of total item spawns in cargo by about 10%.
  • +
  • Further adjusted cargo warehouse spawn probabilities.
  • +
  • Removed some items from the warehouse spawn list.
  • +
  • Added some items to the warehouse spawn list.
  • +
+

Geeves updated:

+
    +
  • Replaced the last of the ghosttrap system with the ghostspawner system. Rebooted drones, imaginary friends, split personalities, and grown mobs like diona now use it.
  • +
  • Grown mobs like diona nymphs now last three minutes after being born, instead of one minute.
  • +
  • Antag datums are now properly cleared if your antag status is removed.
  • +
  • Internal organs protected by bones (like a ribcage) now have a x0.2 modifier to being hit, adjusted from x0.6.
  • +
  • You can now pull both Unathi and Tajara gloves out of the nitrile glove box.
  • +
  • Added a minified biogenerator to the surface garden. It is quite inefficient, but you can move into its tile.
  • +
  • You can now colour simple webbings in the loadout.
  • +
  • Added pigs.
  • +
  • pAI can now click on deployed modular computers to turn them on or look a them, they can't interact with them without being in them, though.
  • +
  • You can now repair pAI with nanopaste.
  • +
  • pAI can now examine even while folded up or carried or inside something.
  • +
  • pAI now start with the Access Local Computer verb instead of having to relog to gain it when they get put into a computer.
  • +
  • Airlocks no longer crush mobs that can pass through hatches, instead, the hatch will open to accomodate them. Access does not get taken into account.
  • +
  • Attacking a pAI card will now attack the pAI inside.
  • +
+

Karolis2011 updated:

+
    +
  • Added a new flashy UI for integrated circuit printer.
  • +
+

MoondancerPony updated:

+
    +
  • Reagents now use /decl/s instead of /datum/s.
  • +
  • Paint no longer has a color of its own and can instead be combined with other reagents to make colours stick to things. Colorific!
  • +
  • Blood is now body temperature.
  • +
  • Injecting incompatible blood now creates a special toxin rather than the actual toxin chemical.
  • +
  • Ports Bay's per-mob dose system. This will probably affect how much alcohol you have to drink to get/stay drunk.
  • +
  • Replaces the chem modifier system with CE_EFFECT. Funny, given that it was originally intended to be the other way around.
  • +
  • Hot chemicals now do more damage; before, it would be rounded down to zero or outhealed in one tick.
  • +
  • Temperature is no longer per-reagent; it is now per-reagents-datum.
  • +
  • Removes phoron salts pending a rework/replacement.
  • +
  • Having a chemical that is toxic to an organ in your system will now prevent that organ from regenerating.
  • +
  • Thetamycin now properly takes time to work on internal organs, as described on the wiki; a bit over five and a half minutes, to be exact. Treat infections early!
  • +
+

Wowzewow (Wezzy) updated:

+
    +
  • Changes dark blue warden uniform to match the rest of the department, for consistency reasons and the fact it did not match with any other security accessories
  • +
  • Added unused blue and navy blue security jackets to the loadout, with some tweaking.
  • +
  • Red forensic tech jacket has been removed for being out of place. In lieu of this, similar blue and navy blue variants have been added. The badge has been removed in order to further distance resemblance from the FIB jacket.
  • +
  • FIB jacket has also been updated.
  • +
  • FIB and forensic technician jackets are now able to open and close like labcoats.
  • +
  • Removed the armor values from cosmetic coats in security lockers.
  • +
  • Resprited warden and hos caps. added a corporate version as well, and moved them to an appropriate file, along with the commissar's cap.
  • +
  • Finally, added corporate bandanas
  • +
  • Adds lava lamps and desk toys.
  • +
+ +

15 January 2021

+

Arrow768 updated:

+
    +
  • Adds a pause icon for the ccia recorder.
  • +
+

Doxxmedearly updated:

+
    +
  • Vampire's Presence ability should once more only affect IPCs if the vampire is at full power.
  • +
  • Cough syrup is now made with carbon, water, and tungsten instead of carbon, water, and ammonia, to prevent recipe conflicts.
  • +
  • Plastic flaps no longer get stuck while trying to deconstruct them.
  • +
  • Animals no longer can make noises when dead or unconscious.
  • +
+

Geeves updated:

+
    +
  • Fixed giant spiders not having a blood overlay.
  • +
  • The Guinness glass has a sprite again.
  • +
  • Added a new gamemode, Loner. It features a single psionic operative.
  • +
  • Bluespace inhibitors now inhibit warp extraction packs.
  • +
  • Fixed humanoids bleeding after being rejuvenated.
  • +
  • Zavodskoi Liaisons now spawn with a 9mm pistol instead of an energy pistol.
  • +
  • Added a new wave defense gamemode, Revenants, wherein the station crew have to defend themselves from an endless wave of humanoid bluespace creatures.
  • +
  • Ling-sucking something without a client no longer gets you stuck in suck mode.
  • +
  • Fixed clusterbangs not working if they weren't on a turf.
  • +
+

WickedCybs updated:

+
    +
  • Four missing glove types added to the Unathi & Tajara loadout selection, bringing it in parity with the normal glove selection humans have. Added options are light brown, grey, rainbow and black leather.
  • +
  • Fixes an oversight with the bangs Tajara hairstyle.
  • +
+

Wowzewow (Wezzy) updated:

+
    +
  • Fixes a grammar problem with detective badge description.
  • +
+

11 January 2021

Arrow768 updated: