Jfc that's a lot of work!
This commit is contained in:
@@ -797,7 +797,7 @@
|
||||
icon_state = "bed"
|
||||
can_buckle = 1
|
||||
|
||||
var/static/list/injected_reagents = list("corazone")
|
||||
var/static/list/injected_reagents = list(/datum/reagent/medicine/corazone)
|
||||
|
||||
/obj/structure/table/optable/abductor/Crossed(atom/movable/AM)
|
||||
. = ..()
|
||||
|
||||
@@ -143,9 +143,9 @@
|
||||
create_reagents(10)
|
||||
|
||||
if(overmind && overmind.blob_reagent_datum)
|
||||
reagents.add_reagent(overmind.blob_reagent_datum.id, 10)
|
||||
reagents.add_reagent(overmind.blob_reagent_datum.type, 10)
|
||||
else
|
||||
reagents.add_reagent("spore", 10)
|
||||
reagents.add_reagent(/datum/reagent/toxin/spore, 10)
|
||||
|
||||
// Attach the smoke spreader and setup/start it.
|
||||
S.attach(location)
|
||||
|
||||
@@ -13,5 +13,5 @@
|
||||
|
||||
//Recover from stuns.
|
||||
/obj/effect/proc_holder/changeling/adrenaline/sting_action(mob/living/user)
|
||||
user.do_adrenaline(0, FALSE, 70, 0, TRUE, list("epinephrine" = 3, "changelingmeth" = 10, "mannitol" = 10, "regen_jelly" = 10, "changelingadrenaline" = 5), "<span class='notice'>Energy rushes through us.</span>", 0, 0.75, 0)
|
||||
user.do_adrenaline(0, FALSE, 70, 0, TRUE, list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/drug/methamphetamine/changeling = 10, /datum/reagent/medicine/mannitol = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/changelingadrenaline = 5), "<span class='notice'>Energy rushes through us.</span>", 0, 0.75, 0)
|
||||
return TRUE
|
||||
@@ -58,7 +58,7 @@
|
||||
target.mind.linglink = 1
|
||||
target.say("[MODE_TOKEN_CHANGELING] AAAAARRRRGGGGGHHHHH!!")
|
||||
to_chat(target, "<font color=#800040><span class='boldannounce'>You can now communicate in the changeling hivemind, say \"[MODE_TOKEN_CHANGELING] message\" to communicate!</span>")
|
||||
target.reagents.add_reagent("salbutamol", 40) // So they don't choke to death while you interrogate them
|
||||
target.reagents.add_reagent(/datum/reagent/medicine/salbutamol, 40) // So they don't choke to death while you interrogate them
|
||||
sleep(1800)
|
||||
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]", "[i]"))
|
||||
if(!do_mob(user, target, 20))
|
||||
|
||||
@@ -500,7 +500,7 @@
|
||||
/obj/item/clothing/suit/space/changeling/process()
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
H.reagents.add_reagent("salbutamol", REAGENTS_METABOLISM)
|
||||
H.reagents.add_reagent(/datum/reagent/medicine/salbutamol, REAGENTS_METABOLISM)
|
||||
|
||||
/obj/item/clothing/head/helmet/space/changeling
|
||||
name = "flesh mass"
|
||||
|
||||
@@ -28,10 +28,10 @@
|
||||
C.vomit(0, toxic = TRUE)
|
||||
O.forceMove(get_turf(user))
|
||||
|
||||
user.reagents.add_reagent("mutadone", 10)
|
||||
user.reagents.add_reagent("pen_jelly", 20)
|
||||
user.reagents.add_reagent("antihol", 10)
|
||||
user.reagents.add_reagent("mannitol", 25)
|
||||
user.reagents.add_reagent(/datum/reagent/medicine/mutadone, 10)
|
||||
user.reagents.add_reagent(/datum/reagent/medicine/pen_acid/pen_jelly, 20)
|
||||
user.reagents.add_reagent(/datum/reagent/medicine/antihol, 10)
|
||||
user.reagents.add_reagent(/datum/reagent/medicine/mannitol, 25)
|
||||
|
||||
if(isliving(user))
|
||||
var/mob/living/L = user
|
||||
|
||||
@@ -104,11 +104,11 @@
|
||||
var/mob/living/carbon/C = target
|
||||
. = TRUE
|
||||
if(istype(C))
|
||||
if(C.reagents.has_reagent("changeling_sting_real"))
|
||||
C.reagents.add_reagent("changeling_sting_real",120)
|
||||
if(C.reagents.has_reagent(/datum/reagent/changeling_string))
|
||||
C.reagents.add_reagent(/datum/reagent/changeling_string,120)
|
||||
log_combat(user, target, "stung", "transformation sting", ", extending the duration.")
|
||||
else
|
||||
C.reagents.add_reagent("changeling_sting_real",120,list("desired_dna" = selected_dna.dna))
|
||||
C.reagents.add_reagent(/datum/reagent/changeling_string,120,list("desired_dna" = selected_dna.dna))
|
||||
log_combat(user, target, "stung", "transformation sting", " new identity is '[selected_dna.dna.real_name]'")
|
||||
|
||||
|
||||
@@ -243,8 +243,8 @@
|
||||
/obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/target)
|
||||
log_combat(user, target, "stung", "LSD sting")
|
||||
if(target.reagents)
|
||||
target.reagents.add_reagent("regenerative_materia", 5)
|
||||
target.reagents.add_reagent("mindbreaker", 5)
|
||||
target.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 5)
|
||||
target.reagents.add_reagent(/datum/reagent/toxin/mindbreaker, 5)
|
||||
return TRUE
|
||||
|
||||
/obj/effect/proc_holder/changeling/sting/cryo
|
||||
@@ -262,5 +262,5 @@
|
||||
/obj/effect/proc_holder/changeling/sting/cryo/sting_action(mob/user, mob/target)
|
||||
log_combat(user, target, "stung", "cryo sting")
|
||||
if(target.reagents)
|
||||
target.reagents.add_reagent("frostoil", 30)
|
||||
target.reagents.add_reagent(/datum/reagent/consumable/frostoil, 30)
|
||||
return TRUE
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
var/burndamage = L.getFireLoss()
|
||||
var/oxydamage = L.getOxyLoss()
|
||||
var/totaldamage = brutedamage + burndamage + oxydamage
|
||||
if(!totaldamage && (!L.reagents || !L.reagents.has_reagent("holywater")))
|
||||
if(!totaldamage && (!L.reagents || !L.reagents.has_reagent(/datum/reagent/water/holywater)))
|
||||
to_chat(ranged_ability_user, "<span class='inathneq'>\"[L] is unhurt and untainted.\"</span>")
|
||||
return TRUE
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
|
||||
to_chat(ranged_ability_user, "<span class='brass'>You bathe [L == ranged_ability_user ? "yourself":"[L]"] in Inath-neq's power!</span>")
|
||||
var/targetturf = get_turf(L)
|
||||
var/has_holy_water = (L.reagents && L.reagents.has_reagent("holywater"))
|
||||
var/has_holy_water = (L.reagents && L.reagents.has_reagent(/datum/reagent/water/holywater))
|
||||
var/healseverity = max(round(totaldamage*0.05, 1), 1) //shows the general severity of the damage you just healed, 1 glow per 20
|
||||
for(var/i in 1 to healseverity)
|
||||
new /obj/effect/temp_visual/heal(targetturf, "#1E8CE1")
|
||||
@@ -129,7 +129,7 @@
|
||||
playsound(targetturf, 'sound/magic/staff_healing.ogg', 50, 1)
|
||||
|
||||
if(has_holy_water)
|
||||
L.reagents.remove_reagent("holywater", 1000)
|
||||
L.reagents.del_reagent(/datum/reagent/water/holywater)
|
||||
|
||||
remove_ranged_ability()
|
||||
|
||||
|
||||
@@ -797,7 +797,7 @@
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.stat != DEAD)
|
||||
H.reagents.add_reagent("unholywater", 4)
|
||||
H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 4)
|
||||
if(isshade(target) || isconstruct(target))
|
||||
var/mob/living/simple_animal/M = target
|
||||
if(M.health+5 < M.maxHealth)
|
||||
@@ -898,7 +898,7 @@
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.stat != DEAD)
|
||||
H.reagents.add_reagent("unholywater", 7)
|
||||
H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 7)
|
||||
if(isshade(target) || isconstruct(target))
|
||||
var/mob/living/simple_animal/M = target
|
||||
if(M.health+15 < M.maxHealth)
|
||||
|
||||
@@ -24,11 +24,11 @@ This file contains the cult dagger and rune list code
|
||||
|
||||
/obj/item/melee/cultblade/dagger/attack(mob/living/M, mob/living/user)
|
||||
if(iscultist(M))
|
||||
if(M.reagents && M.reagents.has_reagent("holywater")) //allows cultists to be rescued from the clutches of ordained religion
|
||||
if(M.reagents && M.reagents.has_reagent(/datum/reagent/water/holywater)) //allows cultists to be rescued from the clutches of ordained religion
|
||||
to_chat(user, "<span class='cult'>You remove the taint from [M].</span>" )
|
||||
var/holy2unholy = M.reagents.get_reagent_amount("holywater")
|
||||
M.reagents.del_reagent("holywater")
|
||||
M.reagents.add_reagent("unholywater",holy2unholy)
|
||||
var/holy2unholy = M.reagents.get_reagent_amount(/datum/reagent/water/holywater)
|
||||
M.reagents.del_reagent(/datum/reagent/water/holywater)
|
||||
M.reagents.add_reagent(/datum/reagent/fuel/unholywater,holy2unholy)
|
||||
log_combat(user, M, "smacked", src, " removing the holy water from them")
|
||||
return FALSE
|
||||
. = ..()
|
||||
|
||||
@@ -384,14 +384,14 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
|
||||
if(BANISH_WATER)
|
||||
if(iscarbon(body))
|
||||
var/mob/living/carbon/H = body
|
||||
return H.reagents.has_reagent("holy water")
|
||||
return H.reagents.has_reagent(/datum/reagent/water/holywater)
|
||||
return 0
|
||||
if(BANISH_COFFIN)
|
||||
return (body && istype(body.loc, /obj/structure/closet/crate/coffin))
|
||||
if(BANISH_FORMALDYHIDE)
|
||||
if(iscarbon(body))
|
||||
var/mob/living/carbon/H = body
|
||||
return H.reagents.has_reagent("formaldehyde")
|
||||
return H.reagents.has_reagent(/datum/reagent/toxin/formaldehyde)
|
||||
return 0
|
||||
if(BANISH_RUNES)
|
||||
if(body)
|
||||
|
||||
@@ -513,7 +513,7 @@
|
||||
/obj/machinery/nuclearbomb/beer/proc/fizzbuzz()
|
||||
var/datum/reagents/R = new/datum/reagents(1000)
|
||||
R.my_atom = src
|
||||
R.add_reagent("beer", 100)
|
||||
R.add_reagent(/datum/reagent/consumable/ethanol/beer, 100)
|
||||
|
||||
var/datum/effect_system/foam_spread/foam = new
|
||||
foam.set_up(200, get_turf(src), R)
|
||||
|
||||
@@ -353,7 +353,7 @@
|
||||
to_chat(H, "<span class='revenminor'>You feel [pick("suddenly sick", "a surge of nausea", "like your skin is <i>wrong</i>")].</span>")
|
||||
else
|
||||
if(mob.reagents)
|
||||
mob.reagents.add_reagent("plasma", 5)
|
||||
mob.reagents.add_reagent(/datum/reagent/toxin/plasma, 5)
|
||||
else
|
||||
mob.adjustToxLoss(5)
|
||||
for(var/obj/structure/spacevine/vine in T) //Fucking with botanists, the ability.
|
||||
|
||||
@@ -175,7 +175,7 @@
|
||||
if(C.reagents.total_volume >= C.volume)
|
||||
to_chat(user, "<span class='danger'>[C] is full.</span>")
|
||||
return
|
||||
C.reagents.add_reagent("plasma", rand(5, 10))
|
||||
C.reagents.add_reagent(/datum/reagent/toxin/plasma, rand(5, 10))
|
||||
user.visible_message("[user] scoops some plasma from the [src] with \the [C].", "<span class='notice'>You scoop out some plasma from the [src] using \the [C].</span>")
|
||||
|
||||
/turf/open/lava/plasma/burn_stuff(AM)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
/datum/bounty/reagent/applies_to(obj/O)
|
||||
if(!istype(O, /obj/item/reagent_containers))
|
||||
return FALSE
|
||||
if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.id))
|
||||
if(!O.reagents || !O.reagents.has_reagent(wanted_reagent.type))
|
||||
return FALSE
|
||||
if(O.flags_1 & HOLOGRAM_1)
|
||||
return FALSE
|
||||
@@ -21,7 +21,7 @@
|
||||
/datum/bounty/reagent/ship(obj/O)
|
||||
if(!applies_to(O))
|
||||
return
|
||||
shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.id)
|
||||
shipped_volume += O.reagents.get_reagent_amount(wanted_reagent.type)
|
||||
if(shipped_volume > required_volume)
|
||||
shipped_volume = required_volume
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
if(!istype(other_bounty, /datum/bounty/reagent))
|
||||
return TRUE
|
||||
var/datum/bounty/reagent/R = other_bounty
|
||||
return wanted_reagent.id != R.wanted_reagent.id
|
||||
return wanted_reagent.type != R.wanted_reagent.type
|
||||
|
||||
/datum/bounty/reagent/simple_drink
|
||||
name = "Simple Drink"
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/proc/injectadrenaline(mob/user, combatmodestate)
|
||||
if(istype(user) && combatmodestate && world.time >= nextadrenalinepop)
|
||||
nextadrenalinepop = world.time + 5 MINUTES
|
||||
user.reagents.add_reagent("syndicateadrenals", 5)
|
||||
user.reagents.add_reagent(/datum/reagent/syndicateadrenals, 5)
|
||||
user.playsound_local(user, 'sound/misc/adrenalinject.ogg', 100, 0, pressure_affected = FALSE)
|
||||
|
||||
/obj/item/clothing/glasses/phantomthief/syndicate/equipped(mob/user, slot)
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
return
|
||||
|
||||
var/obj/item/reagent_containers/glass/bucket/bucket = H.get_item_for_held_index(1)
|
||||
bucket.reagents.add_reagent("water",70)
|
||||
bucket.reagents.add_reagent(/datum/reagent/water,70)
|
||||
|
||||
/datum/outfit/laser_tag
|
||||
name = "Laser Tag Red"
|
||||
|
||||
@@ -15,48 +15,46 @@
|
||||
var/randomProbability = 1
|
||||
var/reagentsAmount = 100
|
||||
var/list/saferChems = list(
|
||||
"water",
|
||||
"carbon",
|
||||
"flour",
|
||||
"cleaner",
|
||||
"nutriment",
|
||||
"condensedcapsaicin",
|
||||
"mushroomhallucinogen",
|
||||
"lube",
|
||||
"pink_glitter",
|
||||
"cryptobiolin",
|
||||
"plantbgone",
|
||||
"blood",
|
||||
"charcoal",
|
||||
"space_drugs",
|
||||
"morphine",
|
||||
"holywater",
|
||||
"ethanol",
|
||||
"hot_coco",
|
||||
"sacid",
|
||||
"mindbreaker",
|
||||
"rotatium",
|
||||
"bluespace",
|
||||
"pax",
|
||||
"laughter",
|
||||
"concentrated_barbers_aid",
|
||||
"colorful_reagent",
|
||||
"dizzysolution",
|
||||
"tiresolution",
|
||||
"sodiumchloride",
|
||||
"beer",
|
||||
"hair_dye",
|
||||
"sugar",
|
||||
"white_glitter",
|
||||
"growthserum",
|
||||
"cornoil",
|
||||
"uranium",
|
||||
"carpet",
|
||||
"firefighting_foam",
|
||||
"semen",
|
||||
"femcum",
|
||||
"tearjuice",
|
||||
"strange_reagent"
|
||||
/datum/reagent/water,
|
||||
/datum/reagent/carbon,
|
||||
/datum/reagent/consumable/flour,
|
||||
/datum/reagent/space_cleaner,
|
||||
/datum/reagent/consumable/nutriment,
|
||||
/datum/reagent/consumable/condensedcapsaicin,
|
||||
/datum/reagent/drug/mushroomhallucinogen,
|
||||
/datum/reagent/lube,
|
||||
/datum/reagent/glitter/pink,
|
||||
/datum/reagent/cryptobiolin,
|
||||
/datum/reagent/toxin/plantbgone,
|
||||
/datum/reagent/blood,
|
||||
/datum/reagent/medicine/charcoal,
|
||||
/datum/reagent/drug/space_drugs,
|
||||
/datum/reagent/medicine/morphine,
|
||||
/datum/reagent/water/holywater,
|
||||
/datum/reagent/consumable/ethanol,
|
||||
/datum/reagent/consumable/hot_coco,
|
||||
/datum/reagent/toxin/acid,
|
||||
/datum/reagent/toxin/mindbreaker,
|
||||
/datum/reagent/toxin/rotatium,
|
||||
/datum/reagent/bluespace,
|
||||
/datum/reagent/pax,
|
||||
/datum/reagent/consumable/laughter,
|
||||
/datum/reagent/concentrated_barbers_aid,
|
||||
/datum/reagent/colorful_reagent,
|
||||
/datum/reagent/peaceborg_confuse,
|
||||
/datum/reagent/peaceborg_tire,
|
||||
/datum/reagent/consumable/sodiumchloride,
|
||||
/datum/reagent/consumable/ethanol/beer,
|
||||
/datum/reagent/hair_dye,
|
||||
/datum/reagent/consumable/sugar,
|
||||
/datum/reagent/glitter/white,
|
||||
/datum/reagent/growthserum,
|
||||
/datum/reagent/consumable/cornoil,
|
||||
/datum/reagent/uranium,
|
||||
/datum/reagent/carpet,
|
||||
/datum/reagent/firefighting_foam,
|
||||
/datum/reagent/consumable/tearjuice,
|
||||
/datum/reagent/medicine/strange_reagent
|
||||
|
||||
)
|
||||
//needs to be chemid unit checked at some point
|
||||
@@ -165,7 +163,7 @@
|
||||
if(vent && vent.loc && !vent.welded)
|
||||
var/datum/reagents/R = new/datum/reagents(1000)
|
||||
R.my_atom = vent
|
||||
R.add_reagent("beer", reagentsAmount)
|
||||
R.add_reagent(/datum/reagent/consumable/ethanol/beer, reagentsAmount)
|
||||
|
||||
var/datum/effect_system/foam_spread/foam = new
|
||||
foam.set_up(200, get_turf(vent), R)
|
||||
@@ -180,7 +178,7 @@
|
||||
if(vent && vent.loc && !vent.welded)
|
||||
var/datum/reagents/R = new/datum/reagents(1000)
|
||||
R.my_atom = vent
|
||||
R.add_reagent("semen", reagentsAmount)
|
||||
R.add_reagent(/datum/reagent/consumable/semen, reagentsAmount)
|
||||
|
||||
var/datum/effect_system/foam_spread/foam = new
|
||||
foam.set_up(200, get_turf(vent), R)
|
||||
@@ -195,7 +193,7 @@
|
||||
if(vent && vent.loc && !vent.welded)
|
||||
var/datum/reagents/R = new/datum/reagents(1000)
|
||||
R.my_atom = vent
|
||||
R.add_reagent("femcum", reagentsAmount)
|
||||
R.add_reagent(/datum/reagent/consumable/femcum, reagentsAmount)
|
||||
|
||||
var/datum/effect_system/foam_spread/foam = new
|
||||
foam.set_up(200, get_turf(vent), R)
|
||||
|
||||
@@ -8,5 +8,5 @@
|
||||
/datum/round_event/wizard/invincible/start()
|
||||
|
||||
for(var/mob/living/carbon/human/H in GLOB.alive_mob_list)
|
||||
H.reagents.add_reagent("adminordrazine", 40) //100 ticks of absolute invinciblity (barring gibs)
|
||||
H.reagents.add_reagent(/datum/reagent/medicine/adminordrazine, 40) //100 ticks of absolute invinciblity (barring gibs)
|
||||
to_chat(H, "<span class='notice'>You feel invincible, nothing can hurt you!</span>")
|
||||
@@ -103,7 +103,7 @@
|
||||
to_chat(user, "<span class='notice'>[src] is full.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You break [E] in [src].</span>")
|
||||
reagents.add_reagent("eggyolk", 5)
|
||||
reagents.add_reagent(/datum/reagent/consumable/eggyolk, 5)
|
||||
qdel(E)
|
||||
return
|
||||
else
|
||||
|
||||
@@ -153,11 +153,11 @@
|
||||
if(!proximity)
|
||||
return
|
||||
if(isturf(target))
|
||||
if(!reagents.has_reagent("sodiumchloride", 2))
|
||||
if(!reagents.has_reagent(/datum/reagent/consumable/sodiumchloride, 2))
|
||||
to_chat(user, "<span class='warning'>You don't have enough salt to make a pile!</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] shakes some salt onto [target].</span>", "<span class='notice'>You shake some salt onto [target].</span>")
|
||||
reagents.remove_reagent("sodiumchloride", 2)
|
||||
reagents.remove_reagent(/datum/reagent/consumable/sodiumchloride, 2)
|
||||
new/obj/effect/decal/cleanable/salt(target)
|
||||
return
|
||||
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
else if(contents.len >= 20)
|
||||
to_chat(user, "<span class='warning'>You can't add more ingredients to [src]!</span>")
|
||||
else
|
||||
if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad?
|
||||
if(reagents.has_reagent(/datum/reagent/water, 10)) //are we starting a soup or a salad?
|
||||
var/obj/item/reagent_containers/food/snacks/customizable/A = new/obj/item/reagent_containers/food/snacks/customizable/soup(get_turf(src))
|
||||
A.initialize_custom_food(src, S, user)
|
||||
else
|
||||
|
||||
@@ -19,11 +19,9 @@ Here is an example of the new formatting for anyone who wants to add more food i
|
||||
name = "Xenoburger" //Name that displays in the UI.
|
||||
desc = "Smells caustic. Tastes like heresy." //Duh
|
||||
icon_state = "xburger" //Refers to an icon in food.dmi
|
||||
/obj/item/reagent_containers/food/snacks/xenoburger/Initialize() //Don't mess with this. | nO I WILL MESS WITH THIS
|
||||
. = ..() //Same here.
|
||||
reagents.add_reagent("xenomicrobes", 10) //This is what is in the food item. you may copy/paste
|
||||
reagents.add_reagent("nutriment", 2) //this line of code for all the contents.
|
||||
bitesize = 3 //This is the amount each bite consumes.
|
||||
list_reagents = list(/datum/reagent/xenomicrobes = 10,
|
||||
/datum/reagent/consumable/nutriment = 2) //What's inside the snack.
|
||||
bitesize = 3 //This is the amount each bite consumes.
|
||||
```
|
||||
|
||||
All foods are distributed among various categories. Use common sense.
|
||||
@@ -60,7 +58,7 @@ All foods are distributed among various categories. Use common sense.
|
||||
if(list_reagents)
|
||||
for(var/rid in list_reagents)
|
||||
var/amount = list_reagents[rid]
|
||||
if(rid == "nutriment" || rid == "vitamin")
|
||||
if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin)
|
||||
reagents.add_reagent(rid, amount, tastes.Copy())
|
||||
else
|
||||
reagents.add_reagent(rid, amount)
|
||||
@@ -206,7 +204,7 @@ All foods are distributed among various categories. Use common sense.
|
||||
if(bonus_reagents && bonus_reagents.len)
|
||||
for(var/r_id in bonus_reagents)
|
||||
var/amount = bonus_reagents[r_id]
|
||||
if(r_id == "nutriment" || r_id == "vitamin")
|
||||
if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin)
|
||||
reagents.add_reagent(r_id, amount, tastes)
|
||||
else
|
||||
reagents.add_reagent(r_id, amount)
|
||||
@@ -285,7 +283,7 @@ All foods are distributed among various categories. Use common sense.
|
||||
if(S.bonus_reagents && S.bonus_reagents.len)
|
||||
for(var/r_id in S.bonus_reagents)
|
||||
var/amount = S.bonus_reagents[r_id] * cooking_efficiency
|
||||
if(r_id == "nutriment" || r_id == "vitamin")
|
||||
if(r_id == /datum/reagent/consumable/nutriment || r_id == /datum/reagent/consumable/nutriment/vitamin)
|
||||
S.reagents.add_reagent(r_id, amount, tastes)
|
||||
else
|
||||
S.reagents.add_reagent(r_id, amount)
|
||||
|
||||
@@ -188,12 +188,12 @@
|
||||
GLOBAL_VAR_INIT(frying_hardmode, TRUE)
|
||||
GLOBAL_VAR_INIT(frying_bad_chem_add_volume, TRUE)
|
||||
GLOBAL_LIST_INIT(frying_bad_chems, list(
|
||||
"bad_food" = 10,
|
||||
"clf3" = 2,
|
||||
"aranesp" = 2,
|
||||
"blackpowder" = 10,
|
||||
"phlogiston" = 3,
|
||||
"cyanide" = 3,
|
||||
/datum/reagent/toxin/bad_food = 10,
|
||||
/datum/reagent/clf3 = 2,
|
||||
/datum/reagent/drug/aranesp = 2,
|
||||
/datum/reagent/blackpowder = 10,
|
||||
/datum/reagent/phlogiston = 3,
|
||||
/datum/reagent/toxin/cyanide = 3,
|
||||
))
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/deepfryholder/Initialize(mapload, obj/item/fried)
|
||||
|
||||
@@ -129,7 +129,7 @@
|
||||
"<span class='notice'>You take a piece of omelette with your fork.</span>")
|
||||
|
||||
var/datum/reagent/R = pick(reagents.reagent_list)
|
||||
reagents.remove_reagent(R.id, 1)
|
||||
reagents.remove_reagent(R.type, 1)
|
||||
F.forkload = R
|
||||
if(reagents.total_volume <= 0)
|
||||
qdel(src)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
is_frosted = TRUE
|
||||
name = "frosted [name]"
|
||||
icon_state = frosted_icon //delish~!
|
||||
reagents.add_reagent("sprinkles", 1)
|
||||
reagents.add_reagent(/datum/reagent/consumable/sprinkles, 1)
|
||||
filling_color = "#FF69B4"
|
||||
return TRUE
|
||||
|
||||
@@ -51,8 +51,11 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/donut/chaos/Initialize()
|
||||
. = ..()
|
||||
extra_reagent = pick("nutriment", "capsaicin", "frostoil", "krokodil", "plasma", "cocoa", "slimejelly", "banana", "berryjuice", "omnizine")
|
||||
reagents.add_reagent("[extra_reagent]", 3)
|
||||
extra_reagent = pick(/datum/reagent/consumable/nutriment, /datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil,
|
||||
/datum/reagent/drug/krokodil, /datum/reagent/toxin/plasma, /datum/reagent/consumable/coco,
|
||||
/datum/reagent/toxin/slimejelly, /datum/reagent/consumable/banana, /datum/reagent/consumable/berryjuice,
|
||||
/datum/reagent/medicine/omnizine)
|
||||
reagents.add_reagent(extra_reagent, 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/donut/jelly
|
||||
name = "jelly donut"
|
||||
@@ -67,7 +70,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/donut/jelly/Initialize()
|
||||
. = ..()
|
||||
if(extra_reagent)
|
||||
reagents.add_reagent("[extra_reagent]", 3)
|
||||
reagents.add_reagent(extra_reagent, 3)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/donut/jelly/slimejelly
|
||||
name = "jelly donut"
|
||||
@@ -260,10 +263,10 @@
|
||||
if(fey)
|
||||
name = "exceptional plump helmet biscuit"
|
||||
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!"
|
||||
bonus_reagents = list("omnizine" = 5, "nutriment" = 1, "vitamin" = 1)
|
||||
bonus_reagents = list(/datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
. = ..()
|
||||
if(fey)
|
||||
reagents.add_reagent("omnizine", 5)
|
||||
reagents.add_reagent(/datum/reagent/medicine/omnizine, 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cracker
|
||||
name = "cracker"
|
||||
|
||||
@@ -148,9 +148,9 @@
|
||||
if(fey)
|
||||
name = "exceptional plump pie"
|
||||
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!"
|
||||
bonus_reagents = list("nutriment" = 1, "omnizine" = 5, "vitamin" = 4)
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/medicine/omnizine = 5, /datum/reagent/consumable/nutriment/vitamin = 4)
|
||||
if(fey)
|
||||
reagents.add_reagent("omnizine", 5)
|
||||
reagents.add_reagent(/datum/reagent/medicine/omnizine, 5)
|
||||
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/pie/xemeatpie
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
desc = "A wish come true!"
|
||||
bonus_reagents = list("nutriment" = 9, "vitamin" = 1)
|
||||
if(wish_true)
|
||||
reagents.add_reagent("nutriment", 9)
|
||||
reagents.add_reagent("vitamin", 1)
|
||||
reagents.add_reagent(/datum/reagent/consumable/nutriment, 9)
|
||||
reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 1)
|
||||
foodtype = VEGETABLES
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soup/meatball
|
||||
@@ -101,9 +101,11 @@
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soup/mystery/Initialize()
|
||||
. = ..()
|
||||
extra_reagent = pick("capsaicin", "frostoil", "omnizine", "banana", "blood", "slimejelly", "toxin", "banana", "carbon", "oculine")
|
||||
bonus_reagents = list("[extra_reagent]" = 5, "nutriment" = 6)
|
||||
reagents.add_reagent("[extra_reagent]", 5)
|
||||
extra_reagent = pick(/datum/reagent/consumable/capsaicin, /datum/reagent/consumable/frostoil,
|
||||
/datum/reagent/medicine/omnizine, /datum/reagent/consumable/banana, /datum/reagent/blood,
|
||||
/datum/reagent/toxin/slimejelly, /datum/reagent/toxin, /datum/reagent/carbon, /datum/reagent/medicine/oculine)
|
||||
bonus_reagents = list(extra_reagent = 5, /datum/reagent/consumable/nutriment = 6)
|
||||
reagents.add_reagent(extra_reagent, 5)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/soup/hotchili
|
||||
name = "hot chili"
|
||||
|
||||
@@ -52,7 +52,7 @@ God bless America.
|
||||
/obj/machinery/deepfryer/Initialize()
|
||||
. = ..()
|
||||
create_reagents(50, OPENCONTAINER)
|
||||
reagents.add_reagent("cooking_oil", 25)
|
||||
reagents.add_reagent(/datum/reagent/consumable/cooking_oil, 25)
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/circuitboard/machine/deep_fryer(null)
|
||||
component_parts += new /obj/item/stock_parts/micro_laser(null)
|
||||
@@ -81,9 +81,9 @@ God bless America.
|
||||
qdel(I)
|
||||
return
|
||||
if(istype(I,/obj/item/clothing/head/mob_holder))
|
||||
to_chat(user, "<span class='warning'>This does not fit in the fryer.</span>") // TODO: Deepfrying instakills mobs, spawns a whole deep-fried mob.
|
||||
to_chat(user, "<span class='warning'>This does not fit in the fryer.</span>") // TODO: Deepfrying instakills mobs, spawns a whole deep-fried mob.
|
||||
return
|
||||
if(!reagents.has_reagent("cooking_oil"))
|
||||
if(!reagents.has_reagent(/datum/reagent/consumable/cooking_oil))
|
||||
to_chat(user, "<span class='warning'>[src] has no cooking oil to fry with!</span>")
|
||||
return
|
||||
if(I.resistance_flags & INDESTRUCTIBLE)
|
||||
@@ -107,7 +107,7 @@ God bless America.
|
||||
|
||||
/obj/machinery/deepfryer/process()
|
||||
..()
|
||||
var/datum/reagent/consumable/cooking_oil/C = reagents.has_reagent("cooking_oil")
|
||||
var/datum/reagent/consumable/cooking_oil/C = reagents.has_reagent(/datum/reagent/consumable/cooking_oil)
|
||||
if(!C)
|
||||
return
|
||||
reagents.chem_temp = C.fry_temperature
|
||||
|
||||
@@ -35,16 +35,16 @@
|
||||
dat += "Portion: <a href='?src=[REF(src)];portion=1'>[portion]</a><br>"
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
dat += "[R.name]: [R.volume] "
|
||||
dat += "<a href='?src=[REF(src)];disposeI=[R.id]'>Purge</a>"
|
||||
dat += "<a href='?src=[REF(src)];disposeI=[R.type]'>Purge</a>"
|
||||
if (glasses > 0)
|
||||
dat += "<a href='?src=[REF(src)];pour=[R.id]'>Pour in a glass</a>"
|
||||
dat += "<a href='?src=[REF(src)];mix=[R.id]'>Add to the mixer</a><br>"
|
||||
dat += "<a href='?src=[REF(src)];pour=[R.type]'>Pour in a glass</a>"
|
||||
dat += "<a href='?src=[REF(src)];mix=[R.type]'>Add to the mixer</a><br>"
|
||||
dat += "</div><br><b>MIXER CONTENTS</b><br><div class='statusDisplay'>"
|
||||
for(var/datum/reagent/R in mixer.reagents.reagent_list)
|
||||
dat += "[R.name]: [R.volume] "
|
||||
dat += "<a href='?src=[REF(src)];transfer=[R.id]'>Transfer back</a>"
|
||||
dat += "<a href='?src=[REF(src)];transfer=[R.type]'>Transfer back</a>"
|
||||
if (glasses > 0)
|
||||
dat += "<a href='?src=[REF(src)];m_pour=[R.id]'>Pour in a glass</a>"
|
||||
dat += "<a href='?src=[REF(src)];m_pour=[R.type]'>Pour in a glass</a>"
|
||||
dat += "<br>"
|
||||
dat += "</div><br><b>STORED FOOD</b><br><div class='statusDisplay'>"
|
||||
for(var/V in stored_food)
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
newmeat.name = "[sourcename] [newmeat.name]"
|
||||
if(istype(newmeat))
|
||||
newmeat.subjectname = sourcename
|
||||
newmeat.reagents.add_reagent ("nutriment", sourcenutriment / meat_produced) // Thehehe. Fat guys go first
|
||||
newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, sourcenutriment / meat_produced) // Thehehe. Fat guys go first
|
||||
if(sourcejob)
|
||||
newmeat.subjectjob = sourcejob
|
||||
allmeat[i] = newmeat
|
||||
|
||||
@@ -39,23 +39,23 @@
|
||||
/obj/machinery/icecream_vat/proc/get_ingredient_list(type)
|
||||
switch(type)
|
||||
if(ICECREAM_CHOCOLATE)
|
||||
return list("milk", "ice", "cocoa")
|
||||
return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/coco)
|
||||
if(ICECREAM_STRAWBERRY)
|
||||
return list("milk", "ice", "berryjuice")
|
||||
return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/berryjuice)
|
||||
if(ICECREAM_CUSTOM)
|
||||
return list("milk", "ice")
|
||||
return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice)
|
||||
if(ICECREAM_PEACH)
|
||||
return list("milk", "ice", "peachjuice")
|
||||
return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/peachjuice)
|
||||
if(ICECREAM_GRAPE)
|
||||
return list("milk", "ice", "grapejuice")
|
||||
return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/grapejuice)
|
||||
if(ICECREAM_BLUE)
|
||||
return list("milk", "ice", "singulo")
|
||||
return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/ethanol/singulo)
|
||||
if(CONE_WAFFLE)
|
||||
return list("flour", "sugar")
|
||||
return list(/datum/reagent/consumable/flour, /datum/reagent/consumable/sugar)
|
||||
if(CONE_CHOC)
|
||||
return list("flour", "sugar", "cocoa")
|
||||
return list(/datum/reagent/consumable/flour, /datum/reagent/consumable/sugar, /datum/reagent/consumable/coco)
|
||||
else //ICECREAM_VANILLA
|
||||
return list("milk", "ice", "vanilla")
|
||||
return list(/datum/reagent/consumable/milk, /datum/reagent/consumable/ice, /datum/reagent/consumable/vanilla)
|
||||
|
||||
|
||||
/obj/machinery/icecream_vat/proc/get_flavour_name(flavour_type)
|
||||
@@ -113,7 +113,7 @@
|
||||
dat += "<b>VAT CONTENT</b><br>"
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
dat += "[R.name]: [R.volume]"
|
||||
dat += "<A href='?src=[REF(src)];disposeI=[R.id]'>Purge</A><BR>"
|
||||
dat += "<A href='?src=[REF(src)];disposeI=[R.type]'>Purge</A><BR>"
|
||||
dat += "<a href='?src=[REF(src)];refresh=1'>Refresh</a> <a href='?src=[REF(src)];close=1'>Close</a>"
|
||||
|
||||
var/datum/browser/popup = new(user, "icecreamvat","Icecream Vat", 700, 500, src)
|
||||
@@ -132,7 +132,7 @@
|
||||
else
|
||||
I.add_ice_cream(flavour_name)
|
||||
if(I.reagents.total_volume < 10)
|
||||
I.reagents.add_reagent("sugar", 10 - I.reagents.total_volume)
|
||||
I.reagents.add_reagent(/datum/reagent/consumable/sugar, 10 - I.reagents.total_volume)
|
||||
updateDialog()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There is not enough ice cream left!</span>")
|
||||
@@ -244,9 +244,9 @@
|
||||
icon_state = "icecream_cone_[cone_name]"
|
||||
switch (cone_type)
|
||||
if ("waffle")
|
||||
reagents.add_reagent("nutriment", 1)
|
||||
reagents.add_reagent(/datum/reagent/consumable/nutriment, 1)
|
||||
if ("chocolate")
|
||||
reagents.add_reagent("cocoa", 1) // chocolate ain't as nutritious kids
|
||||
reagents.add_reagent(/datum/reagent/consumable/coco, 1) // chocolate ain't as nutritious kids
|
||||
|
||||
desc = "Delicious [cone_name] cone, but no ice cream."
|
||||
|
||||
@@ -256,31 +256,31 @@
|
||||
switch (flavour_name) // adding the actual reagents advertised in the ingredient list
|
||||
if ("vanilla")
|
||||
desc = "A delicious [cone_type] cone filled with vanilla ice cream. All the other ice creams take content from it."
|
||||
reagents.add_reagent("vanilla", 3)
|
||||
reagents.add_reagent(/datum/reagent/consumable/vanilla, 3)
|
||||
filling_color = "#ECE1C1"
|
||||
if ("chocolate")
|
||||
desc = "A delicious [cone_type] cone filled with chocolate ice cream. Surprisingly, made with real cocoa."
|
||||
reagents.add_reagent("cocoa", 3)
|
||||
reagents.add_reagent(/datum/reagent/consumable/coco, 3)
|
||||
filling_color = "#93673B"
|
||||
if ("strawberry")
|
||||
desc = "A delicious [cone_type] cone filled with strawberry ice cream. Definitely not made with real strawberries."
|
||||
reagents.add_reagent("berryjuice", 3)
|
||||
reagents.add_reagent(/datum/reagent/consumable/berryjuice, 3)
|
||||
filling_color = "#EFB4B4"
|
||||
if ("peach")
|
||||
desc = "A delicious [cone_type] cone filled with peach ice cream. Definitely made with real peaches!"
|
||||
reagents.add_reagent("peachjuice", 3)
|
||||
reagents.add_reagent(/datum/reagent/consumable/peachjuice, 3)
|
||||
filling_color = "#E78108"
|
||||
if ("grape")
|
||||
desc = "A delicious [cone_type] cone filled with grape ice cream. Surprisingly, made with real pink grape, likely not real sugarcanes used."
|
||||
reagents.add_reagent("grapejuice", 3)
|
||||
reagents.add_reagent(/datum/reagent/consumable/grapejuice, 3)
|
||||
filling_color = "#FF1493"
|
||||
if ("blue")
|
||||
desc = "A delicious [cone_type] cone filled with blue ice cream. Made with real... blue?"
|
||||
reagents.add_reagent("singulo", 3)
|
||||
reagents.add_reagent(/datum/reagent/consumable/ethanol/singulo, 3)
|
||||
filling_color = "#ACBCED"
|
||||
if ("mob")
|
||||
desc = "A suspicious [cone_type] cone filled with bright red ice cream. That's probably not strawberry..."
|
||||
reagents.add_reagent("liquidgibs", 3)
|
||||
reagents.add_reagent(/datum/reagent/liquidgibs, 3)
|
||||
filling_color = "#EFB4B4"
|
||||
if ("custom")
|
||||
if(R && R.total_volume >= 4) //consumable reagents have stronger taste so higher volume will allow non-food flavourings to break through better.
|
||||
|
||||
@@ -134,8 +134,8 @@
|
||||
|
||||
if(istype(O, /obj/item/reagent_containers/spray))
|
||||
var/obj/item/reagent_containers/spray/clean_spray = O
|
||||
if(clean_spray.reagents.has_reagent("cleaner", clean_spray.amount_per_transfer_from_this))
|
||||
clean_spray.reagents.remove_reagent("cleaner", clean_spray.amount_per_transfer_from_this,1)
|
||||
if(clean_spray.reagents.has_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this))
|
||||
clean_spray.reagents.remove_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this,1)
|
||||
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
|
||||
user.visible_message("[user] has cleaned \the [src].", "<span class='notice'>You clean \the [src].</span>")
|
||||
dirty = 0
|
||||
|
||||
@@ -404,8 +404,8 @@
|
||||
var/datum/reagent/consumable/ethanol/neurotoxin/Nt = locate(/datum/reagent/consumable/ethanol/neurotoxin) in my_atom.reagents.reagent_list
|
||||
var/cached_volume = Nt.volume
|
||||
if(Nt.purity < 0.5)
|
||||
holder.remove_reagent(src.id, cached_volume)
|
||||
holder.add_reagent("neuroweak", cached_volume)
|
||||
holder.remove_reagent(type, cached_volume)
|
||||
holder.add_reagent(/datum/reagent/consumable/ethanol/neuroweak, cached_volume)
|
||||
*/
|
||||
|
||||
/datum/chemical_reaction/neurotoxin/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//reduced size
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
last_poof = world.realtime
|
||||
var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case.
|
||||
var/datum/effect_system/smoke_spread/chem/s = new()
|
||||
R.add_reagent("secretcatchem", 10)
|
||||
R.add_reagent(/datum/reagent/fermi/secretcatchem, 10)
|
||||
s.set_up(R, 0, loc)
|
||||
s.start()
|
||||
visible_message("<b>[src]</b> disappears in a puff of smoke!")
|
||||
@@ -181,7 +181,7 @@
|
||||
visible_message("<b>[src]</b> raises an eyebrown, <span class='spooky'>\"It's 4 candies for that [gender]! Thems the rules!\"</span>")
|
||||
return
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"Off comes your head, a pumpkin taking it's stead!\"</span>")
|
||||
C.reagents.add_reagent("pumpkinmutationtoxin", 5)
|
||||
C.reagents.add_reagent(/datum/reagent/mutationtoxin/pumpkinhead, 5)
|
||||
sleep(20)
|
||||
poof()
|
||||
return
|
||||
@@ -340,7 +340,7 @@
|
||||
C.equip_to_slot(jaqc_latern, SLOT_HEAD, 1, 1)
|
||||
if(4)
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"In your body there's something amiss, you'll find it's a chem made by my sis!\"</span>")
|
||||
C.reagents.add_reagent("eigenstate", 30)
|
||||
C.reagents.add_reagent(/datum/reagent/fermi/eigenstate, 30)
|
||||
if(5)
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"A new familiar for me, and you'll see it's thee!\"</span>")
|
||||
C.reagents.add_reagent("secretcatchem", 30)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
disease_amount = 0
|
||||
volume = 10
|
||||
amount_per_transfer_from_this = 0
|
||||
list_reagents = list("honey" = 5)
|
||||
list_reagents = list(/datum/reagent/consumable/honey = 5)
|
||||
grind_results = list()
|
||||
var/honey_color = ""
|
||||
|
||||
@@ -31,10 +31,10 @@
|
||||
|
||||
/obj/item/reagent_containers/honeycomb/proc/set_reagent(reagent)
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[reagent]
|
||||
if(istype(R))
|
||||
if(R)
|
||||
name = "honeycomb ([R.name])"
|
||||
honey_color = R.color
|
||||
reagents.add_reagent(R.id,5)
|
||||
reagents.add_reagent(reagent,5)
|
||||
else
|
||||
honey_color = ""
|
||||
update_icon()
|
||||
@@ -33,7 +33,7 @@
|
||||
data["tastes"] = list(fruit.wine_flavor = 1)
|
||||
else
|
||||
data["tastes"] = list(fruit.tastes[1] = 1)
|
||||
reagents.add_reagent("fruit_wine", amount, data)
|
||||
reagents.add_reagent(/datum/reagent/consumable/ethanol/fruit_wine, amount, data)
|
||||
qdel(fruit)
|
||||
playsound(src, 'sound/effects/bubbles.ogg', 50, TRUE)
|
||||
|
||||
|
||||
@@ -148,16 +148,16 @@
|
||||
if(grind_results&&grind_results.len)
|
||||
for(var/i in 1 to grind_results.len)
|
||||
grind_results[grind_results[i]] = nutriment
|
||||
reagents.del_reagent("nutriment")
|
||||
reagents.del_reagent("vitamin")
|
||||
reagents.del_reagent(/datum/reagent/consumable/nutriment)
|
||||
reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/on_juice()
|
||||
var/nutriment = reagents.get_reagent_amount("nutriment")
|
||||
var/nutriment = reagents.get_reagent_amount(/datum/reagent/consumable/nutriment)
|
||||
if(juice_results&&juice_results.len)
|
||||
for(var/i in 1 to juice_results.len)
|
||||
juice_results[juice_results[i]] = nutriment
|
||||
reagents.del_reagent("nutriment")
|
||||
reagents.del_reagent("vitamin")
|
||||
reagents.del_reagent(/datum/reagent/consumable/nutriment)
|
||||
reagents.del_reagent(/datum/reagent/consumable/nutriment/vitamin)
|
||||
|
||||
// For item-containing growns such as eggy or gatfruit
|
||||
/obj/item/reagent_containers/food/snacks/grown/shell/attack_self(mob/user)
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
/obj/item/reagent_containers/food/snacks/grown/bungopit/Initialize()
|
||||
. =..()
|
||||
reagents.clear_reagents()
|
||||
reagents.add_reagent("bungotoxin", seed.potency * 0.10) //More than this will kill at too low potency
|
||||
reagents.add_reagent("nutriment", seed.potency * 0.04)
|
||||
reagents.add_reagent(/datum/reagent/toxin/bungotoxin, seed.potency * 0.10) //More than this will kill at too low potency
|
||||
reagents.add_reagent(/datum/reagent/consumable/nutriment, seed.potency * 0.04)
|
||||
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
/obj/item/seeds/kudzu/on_chem_reaction(datum/reagents/S)
|
||||
var/list/temp_mut_list = list()
|
||||
|
||||
if(S.has_reagent("sterilizine", 5))
|
||||
if(S.has_reagent(/datum/reagent/space_cleaner/sterilizine, 5))
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
if(SM.quality == NEGATIVE)
|
||||
temp_mut_list += SM
|
||||
@@ -66,7 +66,7 @@
|
||||
mutations.Remove(pick(temp_mut_list))
|
||||
temp_mut_list.Cut()
|
||||
|
||||
if(S.has_reagent("welding_fuel", 5))
|
||||
if(S.has_reagent(/datum/reagent/fuel, 5))
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
if(SM.quality == POSITIVE)
|
||||
temp_mut_list += SM
|
||||
@@ -74,7 +74,7 @@
|
||||
mutations.Remove(pick(temp_mut_list))
|
||||
temp_mut_list.Cut()
|
||||
|
||||
if(S.has_reagent("phenol", 5))
|
||||
if(S.has_reagent(/datum/reagent/phenol, 5))
|
||||
for(var/datum/spacevine_mutation/SM in mutations)
|
||||
if(SM.quality == MINOR_NEGATIVE)
|
||||
temp_mut_list += SM
|
||||
@@ -82,16 +82,16 @@
|
||||
mutations.Remove(pick(temp_mut_list))
|
||||
temp_mut_list.Cut()
|
||||
|
||||
if(S.has_reagent("blood", 15))
|
||||
if(S.has_reagent(/datum/reagent/blood, 15))
|
||||
adjust_production(rand(15, -5))
|
||||
|
||||
if(S.has_reagent("amatoxin", 5))
|
||||
if(S.has_reagent(/datum/reagent/toxin/amatoxin, 5))
|
||||
adjust_production(rand(5, -15))
|
||||
|
||||
if(S.has_reagent("plasma", 5))
|
||||
if(S.has_reagent(/datum/reagent/toxin/plasma, 5))
|
||||
adjust_potency(rand(5, -15))
|
||||
|
||||
if(S.has_reagent("holywater", 10))
|
||||
if(S.has_reagent(/datum/reagent/water/holywater, 10))
|
||||
adjust_potency(rand(15, -5))
|
||||
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
/obj/item/seeds/replicapod/on_reagent_change(changetype)
|
||||
if(changetype == ADD_REAGENT)
|
||||
var/datum/reagent/blood/B = reagents.has_reagent("blood")
|
||||
var/datum/reagent/blood/B = reagents.has_reagent(/datum/reagent/blood)
|
||||
if(B)
|
||||
if(B.data["mind"] && B.data["cloneable"])
|
||||
mind = B.data["mind"]
|
||||
@@ -47,7 +47,7 @@
|
||||
else
|
||||
visible_message("<span class='warning'>The [src] rejects the sample!</span>")
|
||||
|
||||
if(!reagents.has_reagent("blood"))
|
||||
if(!reagents.has_reagent(/datum/reagent/blood))
|
||||
mind = null
|
||||
ckey = null
|
||||
realName = null
|
||||
|
||||
@@ -470,7 +470,7 @@
|
||||
myseed.on_chem_reaction(S) //In case seeds have some special interactions with special chems, currently only used by vines
|
||||
|
||||
// Requires 5 mutagen to possibly change species.// Poor man's mutagen.
|
||||
if(S.has_reagent("mutagen", 5) || S.has_reagent("radium", 10) || S.has_reagent("uranium", 10))
|
||||
if(S.has_reagent(/datum/reagent/toxin/mutagen, 5) || S.has_reagent(/datum/reagent/radium, 10) || S.has_reagent(/datum/reagent/uranium, 10))
|
||||
switch(rand(100))
|
||||
if(91 to 100)
|
||||
adjustHealth(-10)
|
||||
@@ -491,214 +491,214 @@
|
||||
to_chat(user, "<span class='notice'>Nothing happens...</span>")
|
||||
|
||||
// 2 or 1 units is enough to change the yield and other stats.// Can change the yield and other stats, but requires more than mutagen
|
||||
else if(S.has_reagent("mutagen", 2) || S.has_reagent("radium", 5) || S.has_reagent("uranium", 5))
|
||||
else if(S.has_reagent(/datum/reagent/toxin/mutagen, 2) || S.has_reagent(/datum/reagent/radium, 5) || S.has_reagent(/datum/reagent/uranium, 5))
|
||||
hardmutate()
|
||||
else if(S.has_reagent("mutagen", 1) || S.has_reagent("radium", 2) || S.has_reagent("uranium", 2))
|
||||
else if(S.has_reagent(/datum/reagent/toxin/mutagen, 1) || S.has_reagent(/datum/reagent/radium, 2) || S.has_reagent(/datum/reagent/uranium, 2))
|
||||
mutate()
|
||||
|
||||
// After handling the mutating, we now handle the damage from adding crude radioactives...
|
||||
if(S.has_reagent("uranium", 1))
|
||||
adjustHealth(-round(S.get_reagent_amount("uranium") * 1))
|
||||
adjustToxic(round(S.get_reagent_amount("uranium") * 2))
|
||||
if(S.has_reagent("radium", 1))
|
||||
adjustHealth(-round(S.get_reagent_amount("radium") * 1))
|
||||
adjustToxic(round(S.get_reagent_amount("radium") * 3)) // Radium is harsher (OOC: also easier to produce)
|
||||
if(S.has_reagent(/datum/reagent/uranium, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/uranium) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/uranium) * 2))
|
||||
if(S.has_reagent(/datum/reagent/radium, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/radium) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/radium) * 3)) // Radium is harsher (OOC: also easier to produce)
|
||||
|
||||
// Nutriments
|
||||
if(S.has_reagent("eznutriment", 1))
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/eznutriment, 1))
|
||||
yieldmod = 1
|
||||
mutmod = 1
|
||||
adjustNutri(round(S.get_reagent_amount("eznutriment") * 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/eznutriment) * 1))
|
||||
|
||||
if(S.has_reagent("left4zednutriment", 1))
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/left4zednutriment, 1))
|
||||
yieldmod = 0
|
||||
mutmod = 2
|
||||
adjustNutri(round(S.get_reagent_amount("left4zednutriment") * 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/left4zednutriment) * 1))
|
||||
|
||||
if(S.has_reagent("robustharvestnutriment", 1))
|
||||
if(S.has_reagent(/datum/reagent/plantnutriment/robustharvestnutriment, 1))
|
||||
yieldmod = 1.3
|
||||
mutmod = 0
|
||||
adjustNutri(round(S.get_reagent_amount("robustharvestnutriment") *1 ))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/plantnutriment/robustharvestnutriment) *1 ))
|
||||
|
||||
// Ambrosia Gaia produces earthsblood.
|
||||
if(S.has_reagent("earthsblood"))
|
||||
self_sufficiency_progress += S.get_reagent_amount("earthsblood")
|
||||
if(S.has_reagent(/datum/reagent/medicine/earthsblood))
|
||||
self_sufficiency_progress += S.get_reagent_amount(/datum/reagent/medicine/earthsblood)
|
||||
if(self_sufficiency_progress >= self_sufficiency_req)
|
||||
become_self_sufficient()
|
||||
else if(!self_sustaining)
|
||||
to_chat(user, "<span class='notice'>[src] warms as it might on a spring day under a genuine Sun.</span>")
|
||||
|
||||
// Antitoxin binds shit pretty well. So the tox goes significantly down
|
||||
if(S.has_reagent("charcoal", 1))
|
||||
adjustToxic(-round(S.get_reagent_amount("charcoal") * 2))
|
||||
if(S.has_reagent(/datum/reagent/medicine/charcoal, 1))
|
||||
adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/charcoal) * 2))
|
||||
|
||||
// Toxins, not good for anything
|
||||
if(S.has_reagent("toxin", 1))
|
||||
adjustToxic(round(S.get_reagent_amount("toxin") * 2))
|
||||
if(S.has_reagent(/datum/reagent/toxin, 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin) * 2))
|
||||
|
||||
// Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now...
|
||||
if(S.has_reagent("milk", 1))
|
||||
adjustNutri(round(S.get_reagent_amount("milk") * 0.1))
|
||||
adjustWater(round(S.get_reagent_amount("milk") * 0.9))
|
||||
if(S.has_reagent(/datum/reagent/consumable/milk, 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/milk) * 0.9))
|
||||
|
||||
// Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay?
|
||||
if(S.has_reagent("beer", 1))
|
||||
adjustHealth(-round(S.get_reagent_amount("beer") * 0.05))
|
||||
adjustNutri(round(S.get_reagent_amount("beer") * 0.25))
|
||||
adjustWater(round(S.get_reagent_amount("beer") * 0.7))
|
||||
if(S.has_reagent(/datum/reagent/consumable/ethanol/beer, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.05))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.25))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/ethanol/beer) * 0.7))
|
||||
|
||||
// Fluorine one of the most corrosive and deadly gasses
|
||||
if(S.has_reagent("fluorine", 1))
|
||||
adjustHealth(-round(S.get_reagent_amount("fluorine") * 2))
|
||||
adjustToxic(round(S.get_reagent_amount("fluorine") * 2.5))
|
||||
adjustWater(-round(S.get_reagent_amount("fluorine") * 0.5))
|
||||
if(S.has_reagent(/datum/reagent/fluorine, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 2))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/fluorine) * 2.5))
|
||||
adjustWater(-round(S.get_reagent_amount(/datum/reagent/fluorine) * 0.5))
|
||||
adjustWeeds(-rand(1,4))
|
||||
|
||||
// Chlorine one of the most corrosive and deadly gasses
|
||||
if(S.has_reagent("chlorine", 1))
|
||||
adjustHealth(-round(S.get_reagent_amount("chlorine") * 1))
|
||||
adjustToxic(round(S.get_reagent_amount("chlorine") * 1.5))
|
||||
adjustWater(-round(S.get_reagent_amount("chlorine") * 0.5))
|
||||
if(S.has_reagent(/datum/reagent/chlorine, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/chlorine) * 1.5))
|
||||
adjustWater(-round(S.get_reagent_amount(/datum/reagent/chlorine) * 0.5))
|
||||
adjustWeeds(-rand(1,3))
|
||||
|
||||
// White Phosphorous + water -> phosphoric acid. That's not a good thing really.
|
||||
// Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much.
|
||||
if(S.has_reagent("phosphorus", 1))
|
||||
adjustHealth(-round(S.get_reagent_amount("phosphorus") * 0.75))
|
||||
adjustNutri(round(S.get_reagent_amount("phosphorus") * 0.1))
|
||||
adjustWater(-round(S.get_reagent_amount("phosphorus") * 0.5))
|
||||
if(S.has_reagent(/datum/reagent/phosphorus, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.75))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.1))
|
||||
adjustWater(-round(S.get_reagent_amount(/datum/reagent/phosphorus) * 0.5))
|
||||
adjustWeeds(-rand(1,2))
|
||||
|
||||
// Plants should not have sugar, they can't use it and it prevents them getting water/nutients, it is good for mold though...
|
||||
if(S.has_reagent("sugar", 1))
|
||||
if(S.has_reagent(/datum/reagent/consumable/sugar, 1))
|
||||
adjustWeeds(rand(1,2))
|
||||
adjustPests(rand(1,2))
|
||||
adjustNutri(round(S.get_reagent_amount("sugar") * 0.1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sugar) * 0.1))
|
||||
|
||||
// It is water!
|
||||
if(S.has_reagent("water", 1))
|
||||
adjustWater(round(S.get_reagent_amount("water") * 1))
|
||||
if(S.has_reagent(/datum/reagent/water, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/water) * 1))
|
||||
|
||||
// Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~
|
||||
if(S.has_reagent("holywater", 1))
|
||||
adjustWater(round(S.get_reagent_amount("holywater") * 1))
|
||||
adjustHealth(round(S.get_reagent_amount("holywater") * 0.1))
|
||||
if(S.has_reagent(/datum/reagent/water/holywater, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/water/holywater) * 0.1))
|
||||
|
||||
// A variety of nutrients are dissolved in club soda, without sugar.
|
||||
// These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
|
||||
if(S.has_reagent("sodawater", 1))
|
||||
adjustWater(round(S.get_reagent_amount("sodawater") * 1))
|
||||
adjustHealth(round(S.get_reagent_amount("sodawater") * 0.1))
|
||||
adjustNutri(round(S.get_reagent_amount("sodawater") * 0.1))
|
||||
if(S.has_reagent(/datum/reagent/consumable/sodawater, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/sodawater) * 0.1))
|
||||
|
||||
// Sulphuric Acid
|
||||
if(S.has_reagent("sacid", 1))
|
||||
adjustHealth(-round(S.get_reagent_amount("sacid") * 1))
|
||||
adjustToxic(round(S.get_reagent_amount("sacid") * 1.5))
|
||||
if(S.has_reagent(/datum/reagent/toxin/acid, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid) * 1.5))
|
||||
adjustWeeds(-rand(1,2))
|
||||
|
||||
// Acid
|
||||
if(S.has_reagent("facid", 1))
|
||||
adjustHealth(-round(S.get_reagent_amount("facid") * 2))
|
||||
adjustToxic(round(S.get_reagent_amount("facid") * 3))
|
||||
if(S.has_reagent(/datum/reagent/toxin/acid/fluacid, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 2))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/acid/fluacid) * 3))
|
||||
adjustWeeds(-rand(1,4))
|
||||
|
||||
// Plant-B-Gone is just as bad
|
||||
if(S.has_reagent("plantbgone", 1))
|
||||
adjustHealth(-round(S.get_reagent_amount("plantbgone") * 5))
|
||||
adjustToxic(round(S.get_reagent_amount("plantbgone") * 6))
|
||||
if(S.has_reagent(/datum/reagent/toxin/plantbgone, 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 5))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone) * 6))
|
||||
adjustWeeds(-rand(4,8))
|
||||
|
||||
// Napalm, not known for being good for anything organic
|
||||
if(S.has_reagent("napalm", 1))
|
||||
if(S.has_reagent(/datum/reagent/napalm, 1))
|
||||
if(!(myseed.resistance_flags & FIRE_PROOF))
|
||||
adjustHealth(-round(S.get_reagent_amount("napalm") * 6))
|
||||
adjustToxic(round(S.get_reagent_amount("napalm") * 7))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/napalm) * 6))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/napalm) * 7))
|
||||
adjustWeeds(-rand(5,9))
|
||||
|
||||
//Weed Spray
|
||||
if(S.has_reagent("weedkiller", 1))
|
||||
adjustToxic(round(S.get_reagent_amount("weedkiller") * 0.5))
|
||||
if(S.has_reagent(/datum/reagent/toxin/plantbgone/weedkiller, 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/plantbgone/weedkiller) * 0.5))
|
||||
//old toxicity was 4, each spray is default 10 (minimal of 5) so 5 and 2.5 are the new ammounts
|
||||
adjustWeeds(-rand(1,2))
|
||||
|
||||
//Pest Spray
|
||||
if(S.has_reagent("pestkiller", 1))
|
||||
adjustToxic(round(S.get_reagent_amount("pestkiller") * 0.5))
|
||||
if(S.has_reagent(/datum/reagent/toxin/pestkiller, 1))
|
||||
adjustToxic(round(S.get_reagent_amount(/datum/reagent/toxin/pestkiller) * 0.5))
|
||||
adjustPests(-rand(1,2))
|
||||
|
||||
// Healing
|
||||
if(S.has_reagent("cryoxadone", 1))
|
||||
adjustHealth(round(S.get_reagent_amount("cryoxadone") * 3))
|
||||
adjustToxic(-round(S.get_reagent_amount("cryoxadone") * 3))
|
||||
if(S.has_reagent(/datum/reagent/medicine/cryoxadone, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3))
|
||||
adjustToxic(-round(S.get_reagent_amount(/datum/reagent/medicine/cryoxadone) * 3))
|
||||
|
||||
// Ammonia is bad ass.
|
||||
if(S.has_reagent("ammonia", 1))
|
||||
adjustHealth(round(S.get_reagent_amount("ammonia") * 0.5))
|
||||
adjustNutri(round(S.get_reagent_amount("ammonia") * 1))
|
||||
if(S.has_reagent(/datum/reagent/ammonia, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.5))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/ammonia) * 1))
|
||||
if(myseed)
|
||||
myseed.adjust_yield(round(S.get_reagent_amount("ammonia") * 0.01))
|
||||
myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/ammonia) * 0.01))
|
||||
|
||||
// Saltpetre is used for gardening IRL, to simplify highly, it speeds up growth and strengthens plants
|
||||
if(S.has_reagent("saltpetre", 1))
|
||||
var/salt = S.get_reagent_amount("saltpetre")
|
||||
if(S.has_reagent(/datum/reagent/saltpetre, 1))
|
||||
var/salt = S.get_reagent_amount(/datum/reagent/saltpetre)
|
||||
adjustHealth(round(salt * 0.25))
|
||||
if (myseed)
|
||||
myseed.adjust_production(-round(salt/100)-prob(salt%100))
|
||||
myseed.adjust_potency(round(salt*0.5))
|
||||
|
||||
// Ash is also used IRL in gardening, as a fertilizer enhancer and weed killer
|
||||
if(S.has_reagent("ash", 1))
|
||||
adjustHealth(round(S.get_reagent_amount("ash") * 0.25))
|
||||
adjustNutri(round(S.get_reagent_amount("ash") * 0.5))
|
||||
if(S.has_reagent(/datum/reagent/ash, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/ash) * 0.25))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/ash) * 0.5))
|
||||
adjustWeeds(-1)
|
||||
|
||||
// Diethylamine is more bad ass, and pests get hurt by the corrosive nature of it, not the plant.
|
||||
if(S.has_reagent("diethylamine", 1))
|
||||
adjustHealth(round(S.get_reagent_amount("diethylamine") * 1))
|
||||
adjustNutri(round(S.get_reagent_amount("diethylamine") * 2))
|
||||
if(S.has_reagent(/datum/reagent/diethylamine, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 2))
|
||||
if(myseed)
|
||||
myseed.adjust_yield(round(S.get_reagent_amount("diethylamine") * 0.02))
|
||||
myseed.adjust_yield(round(S.get_reagent_amount(/datum/reagent/diethylamine) * 0.02))
|
||||
adjustPests(-rand(1,2))
|
||||
|
||||
// Nutriment Compost, effectively
|
||||
if(S.has_reagent("nutriment", 1))
|
||||
adjustHealth(round(S.get_reagent_amount("nutriment") * 0.5))
|
||||
adjustNutri(round(S.get_reagent_amount("nutriment") * 1))
|
||||
if(S.has_reagent(/datum/reagent/consumable/nutriment, 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 0.5))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/nutriment) * 1))
|
||||
|
||||
// Virusfood Compost for EVERYTHING
|
||||
if(S.has_reagent("virusfood", 1))
|
||||
adjustNutri(round(S.get_reagent_amount("virusfood") * 0.5))
|
||||
adjustHealth(-round(S.get_reagent_amount("virusfood") * 0.5))
|
||||
if(S.has_reagent(/datum/reagent/toxin/mutagen/mutagenvirusfood, 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/toxin/mutagen/mutagenvirusfood) * 0.5))
|
||||
|
||||
// Blood
|
||||
if(S.has_reagent("blood", 1))
|
||||
adjustNutri(round(S.get_reagent_amount("blood") * 1))
|
||||
if(S.has_reagent(/datum/reagent/blood, 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/blood) * 1))
|
||||
adjustPests(rand(2,4))
|
||||
|
||||
// Strange reagent
|
||||
if(S.has_reagent("strangereagent", 1))
|
||||
if(S.has_reagent(/datum/reagent/medicine/strange_reagent, 1))
|
||||
spawnplant()
|
||||
|
||||
// Honey, Pests are dieing of sugar, so is the plant
|
||||
if(S.has_reagent("honey", 1))
|
||||
if(S.has_reagent(/datum/reagent/consumable/honey, 1))
|
||||
adjustPests(-rand(2,5))
|
||||
adjustHealth(-round(S.get_reagent_amount("honey") * 1))
|
||||
adjustHealth(-round(S.get_reagent_amount(/datum/reagent/consumable/honey) * 1))
|
||||
|
||||
// Buzz Fuzz, a drink seemingly made for plants...
|
||||
if(S.has_reagent("buzz_fuzz", 1))
|
||||
if(S.has_reagent(/datum/reagent/consumable/buzz_fuzz, 1))
|
||||
adjustPests(-rand(2,5))
|
||||
adjustHealth(round(S.get_reagent_amount("buzz_fuzz") * 0.1))
|
||||
adjustNutri(round(S.get_reagent_amount("buzz_fuzz") * 0.5))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/consumable/buzz_fuzz) * 0.1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/consumable/buzz_fuzz) * 0.5))
|
||||
|
||||
// Adminordrazine the best stuff there is. For testing/debugging.
|
||||
if(S.has_reagent("adminordrazine", 1))
|
||||
adjustWater(round(S.get_reagent_amount("adminordrazine") * 1))
|
||||
adjustHealth(round(S.get_reagent_amount("adminordrazine") * 1))
|
||||
adjustNutri(round(S.get_reagent_amount("adminordrazine") * 1))
|
||||
if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 1))
|
||||
adjustWater(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
|
||||
adjustHealth(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
|
||||
adjustNutri(round(S.get_reagent_amount(/datum/reagent/medicine/adminordrazine) * 1))
|
||||
adjustPests(-rand(1,5))
|
||||
adjustWeeds(-rand(1,5))
|
||||
if(S.has_reagent("adminordrazine", 5))
|
||||
if(S.has_reagent(/datum/reagent/medicine/adminordrazine, 5))
|
||||
switch(rand(100))
|
||||
if(66 to 100)
|
||||
mutatespecie()
|
||||
|
||||
@@ -228,7 +228,7 @@
|
||||
var/obj/item/seeds/seed = G.seed
|
||||
var/stun_len = seed.potency * rate
|
||||
|
||||
if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent("lube")))
|
||||
if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent(/datum/reagent/lube)))
|
||||
stun_len /= 3
|
||||
|
||||
G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, .proc/handle_slip, G))
|
||||
@@ -412,7 +412,7 @@
|
||||
pocell.name = "[G.name] battery"
|
||||
pocell.desc = "A rechargeable plant-based power cell. This one has a rating of [DisplayEnergy(pocell.maxcharge)], and you should not swallow it."
|
||||
|
||||
if(G.reagents.has_reagent("plasma", 2))
|
||||
if(G.reagents.has_reagent(/datum/reagent/toxin/plasma, 2))
|
||||
pocell.rigged = TRUE
|
||||
|
||||
qdel(G)
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
var/list/data = null
|
||||
if(rid == "blood") // Hack to make blood in plants always O-
|
||||
data = list("blood_type" = "O-")
|
||||
if(rid == "nutriment" || rid == "vitamin")
|
||||
if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin)
|
||||
// apple tastes of apple.
|
||||
data = T.tastes
|
||||
|
||||
|
||||
@@ -96,7 +96,8 @@
|
||||
activators = list("push ref" = IC_PINTYPE_PULSE_IN)
|
||||
spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH
|
||||
var/volume = 60
|
||||
var/list/fuel = list("plasma" = 50000, "welding_fuel" = 15000, "carbon" = 10000, "ethanol" = 10000, "nutriment" = 8000)
|
||||
var/list/fuel = list(/datum/reagent/toxin/plasma = 50000, /datum/reagent/fuel = 15000, /datum/reagent/carbon = 10000,
|
||||
/datum/reagent/consumable/ethanol = 10000, /datum/reagent/consumable/nutriment = 8000)
|
||||
var/multi = 1
|
||||
var/lfwb =TRUE
|
||||
|
||||
@@ -119,7 +120,7 @@
|
||||
if(assembly)
|
||||
if(assembly.battery)
|
||||
var/bp = 5000
|
||||
if(reagents.get_reagent_amount("blood")) //only blood is powerful enough to power the station(c)
|
||||
if(reagents.get_reagent_amount(/datum/reagent/blood)) //only blood is powerful enough to power the station(c)
|
||||
var/datum/reagent/blood/B = locate() in reagents.reagent_list
|
||||
if(lfwb)
|
||||
if(B && B.data["cloneable"])
|
||||
@@ -127,7 +128,7 @@
|
||||
if(M && (M.stat != DEAD) && (M.client))
|
||||
bp = 500000
|
||||
if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > bp)
|
||||
if(reagents.remove_reagent("blood", 1))
|
||||
if(reagents.remove_reagent(/datum/reagent/blood, 1))
|
||||
assembly.give_power(bp)
|
||||
for(var/I in fuel)
|
||||
if((assembly.battery.maxcharge-assembly.battery.charge) / GLOB.CELLRATE > fuel[I])
|
||||
|
||||
@@ -218,7 +218,7 @@
|
||||
else if(contents.len >= 20)
|
||||
to_chat(user, "<span class='warning'>You can't add more ingredients to [src]!</span>")
|
||||
else
|
||||
if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad?
|
||||
if(reagents.has_reagent(/datum/reagent/water, 10)) //are we starting a soup or a salad?
|
||||
var/obj/item/reagent_containers/food/snacks/customizable/A = new/obj/item/reagent_containers/food/snacks/customizable/soup/ashsoup(get_turf(src))
|
||||
A.initialize_custom_food(src, S, user)
|
||||
else
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
if(iscarbon(AM))
|
||||
var/mob/living/carbon/C = AM
|
||||
if(blood_id == C.get_blood_id())//both mobs have the same blood substance
|
||||
if(blood_id == "blood" || blood_id == "jellyblood") //normal blood
|
||||
if(blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) //normal blood
|
||||
if(blood_data["viruses"])
|
||||
for(var/thing in blood_data["viruses"])
|
||||
var/datum/disease/D = thing
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
if(victim.stat == CONSCIOUS)
|
||||
src.visible_message("<span class='warning'>[victim] kicks free of the blood pool just before entering it!</span>", null, "<span class='notice'>You hear splashing and struggling.</span>")
|
||||
else if(victim.reagents && victim.reagents.has_reagent("demonsblood"))
|
||||
else if(victim.reagents && victim.reagents.has_reagent(/datum/reagent/consumable/ethanol/demonsblood))
|
||||
visible_message("<span class='warning'>Something prevents [victim] from entering the pool!</span>", "<span class='warning'>A strange force is blocking [victim] from entering!</span>", "<span class='notice'>You hear a splash and a thud.</span>")
|
||||
else
|
||||
victim.forceMove(src)
|
||||
@@ -104,7 +104,7 @@
|
||||
if(!victim)
|
||||
return FALSE
|
||||
|
||||
if(victim.reagents && victim.reagents.has_reagent("devilskiss"))
|
||||
if(victim.reagents && victim.reagents.has_reagent(/datum/reagent/consumable/ethanol/devilskiss))
|
||||
to_chat(src, "<span class='warning'><b>AAH! THEIR FLESH! IT BURNS!</b></span>")
|
||||
adjustBruteLoss(25) //I can't use adjustHealth() here because bloodcrawl affects /mob/living and adjustHealth() only affects simple mobs
|
||||
var/found_bloodpool = FALSE
|
||||
|
||||
@@ -102,16 +102,16 @@
|
||||
if(istype(O, /obj/item/organ_storage)) //BUG_PROBABLE_CAUSE
|
||||
return //Borg organ bags shouldn't be killing brains
|
||||
|
||||
if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent("neurine")) //Neurine fixes dead brains
|
||||
if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/neurine)) //Neurine fixes dead brains
|
||||
. = TRUE //don't do attack animation.
|
||||
var/cached_Bdamage = brainmob?.health
|
||||
var/datum/reagent/medicine/neurine/N = reagents.has_reagent("neurine")
|
||||
var/datum/reagent/medicine/mannitol/M1 = reagents.has_reagent("mannitol")
|
||||
var/datum/reagent/medicine/neurine/N = reagents.has_reagent(/datum/reagent/medicine/neurine)
|
||||
var/datum/reagent/medicine/mannitol/M1 = reagents.has_reagent(/datum/reagent/medicine/mannitol)
|
||||
|
||||
if(O.reagents.has_reagent("mannitol"))//Just a quick way to bolster the effects if someone mixes up a batch.
|
||||
if(O.reagents.has_reagent(/datum/reagent/medicine/mannitol))//Just a quick way to bolster the effects if someone mixes up a batch.
|
||||
N.volume *= (M1.volume*0.5)
|
||||
|
||||
if(!O.reagents.has_reagent("neurine", 10))
|
||||
if(!O.reagents.has_reagent(/datum/reagent/medicine/neurine, 10))
|
||||
to_chat(user, "<span class='warning'>There's not enough neurine in [O] to restore [src]!</span>")
|
||||
return
|
||||
|
||||
@@ -134,14 +134,14 @@
|
||||
gain_trauma_type(BRAIN_TRAUMA_SPECIAL)
|
||||
return
|
||||
|
||||
if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent("mannitol")) //attempt to heal the brain
|
||||
if((organ_flags & ORGAN_FAILING) && O.is_drainable() && O.reagents.has_reagent(/datum/reagent/medicine/mannitol)) //attempt to heal the brain
|
||||
. = TRUE //don't do attack animation.
|
||||
var/datum/reagent/medicine/mannitol/M = reagents.has_reagent("mannitol")
|
||||
var/datum/reagent/medicine/mannitol/M = reagents.has_reagent(/datum/reagent/medicine/mannitol)
|
||||
if(brain_death || brainmob?.health <= HEALTH_THRESHOLD_DEAD) //if the brain is fucked anyway, do nothing
|
||||
to_chat(user, "<span class='warning'>[src] is far too damaged, you'll have to use neurine on it!</span>")
|
||||
return
|
||||
|
||||
if(!O.reagents.has_reagent("mannitol", 10))
|
||||
if(!O.reagents.has_reagent(/datum/reagent/medicine/mannitol, 10))
|
||||
to_chat(user, "<span class='warning'>There's not enough mannitol in [O] to restore [src]!</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
/obj/item/organ/alien/prepare_eat()
|
||||
var/obj/S = ..()
|
||||
S.reagents.add_reagent("sacid", 10)
|
||||
S.reagents.add_reagent(/datum/reagent/toxin/acid, 10)
|
||||
return S
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
/obj/item/organ/alien/plasmavessel/prepare_eat()
|
||||
var/obj/S = ..()
|
||||
S.reagents.add_reagent("plasma", storedPlasma/10)
|
||||
S.reagents.add_reagent(/datum/reagent/toxin/plasma, storedPlasma/10)
|
||||
return S
|
||||
|
||||
/obj/item/organ/alien/plasmavessel/large
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
/obj/item/organ/body_egg/alien_embryo/prepare_eat()
|
||||
var/obj/S = ..()
|
||||
S.reagents.add_reagent("sacid", 10)
|
||||
S.reagents.add_reagent(/datum/reagent/toxin/acid, 10)
|
||||
return S
|
||||
|
||||
/obj/item/organ/body_egg/alien_embryo/on_life()
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
if(HAS_TRAIT(src, TRAIT_PACIFISM))
|
||||
to_chat(src, "<span class='notice'>You gently let go of [throwable_mob].</span>")
|
||||
return
|
||||
|
||||
|
||||
adjustStaminaLossBuffered(25)//CIT CHANGE - throwing an entire person shall be very tiring
|
||||
var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors
|
||||
var/turf/end_T = get_turf(target)
|
||||
@@ -517,7 +517,7 @@
|
||||
add_splatter_floor(T)
|
||||
if(stun)
|
||||
adjustBruteLoss(3)
|
||||
else if(src.reagents.has_reagent("blazaam"))
|
||||
else if(src.reagents.has_reagent(/datum/reagent/consumable/ethanol/blazaam))
|
||||
if(T)
|
||||
T.add_vomit_floor(src, VOMIT_PURPLE)
|
||||
else
|
||||
|
||||
@@ -240,7 +240,7 @@
|
||||
shock_damage *= dna.species.siemens_coeff
|
||||
if(shock_damage<1 && !override)
|
||||
return 0
|
||||
if(reagents.has_reagent("teslium"))
|
||||
if(reagents.has_reagent(/datum/reagent/teslium))
|
||||
shock_damage *= 1.5 //If the mob has teslium in their body, shocks are 50% more damaging!
|
||||
if(illusion)
|
||||
adjustStaminaLoss(shock_damage)
|
||||
@@ -316,18 +316,18 @@
|
||||
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
else if(check_zone(M.zone_selected) == "r_arm" || check_zone(M.zone_selected) == "l_arm")
|
||||
M.visible_message( \
|
||||
"<span class='notice'>[M] shakes [src]'s hand.</span>", \
|
||||
"<span class='notice'>You shake [src]'s hand.</span>", )
|
||||
|
||||
|
||||
else if(check_zone(M.zone_selected) == "mouth") // I ADDED BOOP-EH-DEH-NOSEH - Jon
|
||||
M.visible_message( \
|
||||
"<span class='notice'>[M] boops [src]'s nose.</span>", \
|
||||
"<span class='notice'>You boop [src] on the nose.</span>", )
|
||||
playsound(src, 'sound/items/Nose_boop.ogg', 50, 0)
|
||||
|
||||
|
||||
else
|
||||
M.visible_message("<span class='notice'>[M] hugs [src] to make [p_them()] feel better!</span>", \
|
||||
"<span class='notice'>You hug [src] to make [p_them()] feel better!</span>")
|
||||
|
||||
@@ -255,7 +255,7 @@
|
||||
else
|
||||
msg += "<B>[t_He] [t_is] bleeding!</B>\n"
|
||||
|
||||
if(reagents.has_reagent("teslium"))
|
||||
if(reagents.has_reagent(/datum/reagent/teslium))
|
||||
msg += "[t_He] [t_is] emitting a gentle blue glow!\n"
|
||||
|
||||
if(islist(stun_absorption))
|
||||
@@ -278,7 +278,7 @@
|
||||
if(91.01 to INFINITY)
|
||||
msg += "[t_He] [t_is] a shitfaced, slobbering wreck.\n"
|
||||
|
||||
if(reagents.has_reagent("astral"))
|
||||
if(reagents.has_reagent(/datum/reagent/fermi/astral))
|
||||
if(mind)
|
||||
msg += "[t_He] has wild, spacey eyes and they have a strange, abnormal look to them.\n"
|
||||
else
|
||||
|
||||
@@ -1267,7 +1267,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
/datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
if(chem.id == exotic_blood)
|
||||
H.blood_volume = min(H.blood_volume + round(chem.volume, 0.1), BLOOD_VOLUME_MAXIMUM)
|
||||
H.reagents.del_reagent(chem.id)
|
||||
H.reagents.del_reagent(chem.type)
|
||||
return 1
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -7,18 +7,18 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
|
||||
id = "dwarf" //Also called Homo sapiens pumilionis
|
||||
default_color = "FFFFFF"
|
||||
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,NO_UNDERWEAR)
|
||||
inherent_traits = list()
|
||||
inherent_traits = list()
|
||||
default_features = list("mcolor" = "FFF", "wings" = "None")
|
||||
limbs_id = "human"
|
||||
use_skintones = 1
|
||||
say_mod = "bellows" //high energy, EXTRA BIOLOGICAL FUEL
|
||||
damage_overlay_type = "human"
|
||||
damage_overlay_type = "human"
|
||||
skinned_type = /obj/item/stack/sheet/animalhide/human
|
||||
liked_food = ALCOHOL | MEAT | DAIRY //Dwarves like alcohol, meat, and dairy products.
|
||||
disliked_food = JUNKFOOD | FRIED //Dwarves hate foods that have no nutrition other than alcohol.
|
||||
mutant_organs = list(/obj/item/organ/dwarfgland) //Dwarven alcohol gland, literal gland warrior
|
||||
mutantliver = /obj/item/organ/liver/dwarf //Dwarven super liver (Otherwise they r doomed)
|
||||
|
||||
|
||||
/mob/living/carbon/human/species/dwarf //species admin spawn path
|
||||
race = /datum/species/dwarf //and the race the path is set to.
|
||||
|
||||
@@ -30,7 +30,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
|
||||
/datum/species/dwarf/on_species_gain(mob/living/carbon/C, datum/species/old_species)
|
||||
. = ..()
|
||||
var/dwarf_hair = pick("Beard (Dwarf)", "Beard (Very Long)", "Beard (Long)") //beard roullette
|
||||
var/mob/living/carbon/human/H = C
|
||||
var/mob/living/carbon/human/H = C
|
||||
H.facial_hair_style = dwarf_hair
|
||||
H.update_hair()
|
||||
H.transform = H.transform.Scale(1, 0.8) //We use scale, and yeah. Dwarves can become gnomes with DWARFISM.
|
||||
@@ -95,7 +95,7 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
|
||||
|
||||
/obj/item/organ/dwarfgland/prepare_eat()
|
||||
var/obj/S = ..()
|
||||
S.reagents.add_reagent("ethanol", stored_alcohol/10)
|
||||
S.reagents.add_reagent(/datum/reagent/consumable/ethanol, stored_alcohol/10)
|
||||
return S
|
||||
|
||||
/obj/item/organ/dwarfgland/on_life() //Primary loop to hook into to start delayed loops for other loops..
|
||||
@@ -108,8 +108,8 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
|
||||
return //We make sure they are not dead, so they don't increment any tickers.
|
||||
dwarf_eth_ticker++
|
||||
dwarf_filth_ticker++
|
||||
|
||||
if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds.
|
||||
|
||||
if(dwarf_filth_ticker >= 4) //Should be around 4-8 seconds since a tick is around 2 seconds.
|
||||
dwarf_filth_cycle() //On_life will adjust regarding other factors, so we are along for the ride.
|
||||
dwarf_filth_ticker = 0 //We set the ticker back to 0 to go again.
|
||||
if(dwarf_eth_ticker >= 1) //Alcohol reagent check should be around 2 seconds, since a tick is around 2 seconds.
|
||||
|
||||
@@ -13,9 +13,9 @@
|
||||
exotic_bloodtype = "BUG"
|
||||
|
||||
/datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
if(chem.id == "pestkiller")
|
||||
if(chem.type == /datum/reagent/toxin/pestkiller)
|
||||
H.adjustToxLoss(3)
|
||||
H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
|
||||
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -305,9 +305,9 @@
|
||||
H.take_overall_damage(2,0)
|
||||
|
||||
/datum/species/golem/wood/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
if(chem.id == "plantbgone")
|
||||
if(chem.type == /datum/reagent/toxin/plantbgone)
|
||||
H.adjustToxLoss(3)
|
||||
H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
|
||||
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
|
||||
return 1
|
||||
|
||||
//Radioactive
|
||||
@@ -619,14 +619,14 @@
|
||||
C.RemoveSpell(dominate)
|
||||
|
||||
/datum/species/golem/runic/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
if(chem.id == "holywater")
|
||||
if(chem.type == /datum/reagent/water/holywater)
|
||||
H.adjustFireLoss(4)
|
||||
H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
|
||||
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
|
||||
|
||||
if(chem.id == "unholywater")
|
||||
if(chem.id == /datum/reagent/fuel/unholywater)
|
||||
H.adjustBruteLoss(-4)
|
||||
H.adjustFireLoss(-4)
|
||||
H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
|
||||
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
|
||||
|
||||
|
||||
/datum/species/golem/clockwork
|
||||
|
||||
@@ -47,9 +47,9 @@
|
||||
QDEL_NULL(mush)
|
||||
|
||||
/datum/species/mush/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
if(chem.id == "weedkiller")
|
||||
if(chem.type == /datum/reagent/toxin/plantbgone/weedkiller)
|
||||
H.adjustToxLoss(3)
|
||||
H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
|
||||
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
|
||||
return TRUE
|
||||
|
||||
/datum/species/mush/handle_mutant_bodyparts(mob/living/carbon/human/H, forced_colour)
|
||||
|
||||
@@ -47,9 +47,9 @@
|
||||
H.take_overall_damage(2,0)
|
||||
|
||||
/datum/species/pod/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
if(chem.id == "plantbgone")
|
||||
if(chem.type == /datum/reagent/toxin/plantbgone)
|
||||
H.adjustToxLoss(3)
|
||||
H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
|
||||
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
|
||||
return 1
|
||||
|
||||
/datum/species/pod/on_hit(obj/item/projectile/P, mob/living/carbon/human/H)
|
||||
|
||||
@@ -36,9 +36,9 @@
|
||||
UnregisterSignal(H, COMSIG_MOB_SAY)
|
||||
|
||||
/datum/species/synth/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
if(chem.id == "synthflesh")
|
||||
if(chem.type == /datum/reagent/medicine/synthflesh)
|
||||
chem.reaction_mob(H, TOUCH, 2 ,0) //heal a little
|
||||
H.reagents.remove_reagent(chem.id, REAGENTS_METABOLISM)
|
||||
H.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM)
|
||||
return 1
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
//Second link in a breath chain, calls check_breath()
|
||||
/mob/living/carbon/proc/breathe()
|
||||
var/obj/item/organ/lungs = getorganslot(ORGAN_SLOT_LUNGS)
|
||||
if(reagents.has_reagent("lexorin"))
|
||||
if(reagents.has_reagent(/datum/reagent/toxin/lexorin))
|
||||
return
|
||||
if(istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell))
|
||||
return
|
||||
@@ -156,7 +156,7 @@
|
||||
|
||||
//CRIT
|
||||
if(!breath || (breath.total_moles() == 0) || !lungs)
|
||||
if(reagents.has_reagent("epinephrine") && lungs)
|
||||
if(reagents.has_reagent(/datum/reagent/medicine/epinephrine) && lungs)
|
||||
return
|
||||
adjustOxyLoss(1)
|
||||
|
||||
@@ -357,7 +357,7 @@
|
||||
return
|
||||
|
||||
// No decay if formaldehyde in corpse or when the corpse is charred
|
||||
if(reagents.has_reagent("formaldehyde", 15) || HAS_TRAIT(src, TRAIT_HUSK))
|
||||
if(reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 15) || HAS_TRAIT(src, TRAIT_HUSK))
|
||||
return
|
||||
|
||||
// Also no decay if corpse chilled or not organic/undead
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
. = ..()
|
||||
remove_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE)
|
||||
var/amount
|
||||
if(reagents.has_reagent("morphine"))
|
||||
if(reagents.has_reagent(/datum/reagent/medicine/morphine))
|
||||
amount = -1
|
||||
if(amount)
|
||||
add_movespeed_modifier(MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount)
|
||||
|
||||
@@ -1225,7 +1225,7 @@
|
||||
clamp_unconscious_to = 0,
|
||||
clamp_immobility_to = 0,
|
||||
reset_misc = TRUE,
|
||||
healing_chems = list("inaprovaline" = 3, "synaptizine" = 10, "regen_jelly" = 10, "stimulants" = 10),
|
||||
healing_chems = list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/stimulants = 10),
|
||||
message = "<span class='boldnotice'>You feel a surge of energy!</span>",
|
||||
stamina_buffer_boost = 0, //restores stamina buffer rather than just health
|
||||
scale_stamina_loss_recovery, //defaults to null. if this is set, restores loss * this stamina. make sure it's a fraction.
|
||||
@@ -1252,5 +1252,5 @@
|
||||
updatehealth()
|
||||
update_stamina()
|
||||
update_canmove()
|
||||
for(var/chem in healing_chems)
|
||||
reagents.add_reagent(chem, healing_chems[chem])
|
||||
if(healing_chems)
|
||||
reagents.add_reagent_list(healing_chems)
|
||||
|
||||
@@ -369,7 +369,7 @@
|
||||
to_chat(src, "<span class='userdanger'>You resist Nar'Sie's influence... but not all of it. <i>Run!</i></span>")
|
||||
adjustBruteLoss(35)
|
||||
if(src && reagents)
|
||||
reagents.add_reagent("heparin", 5)
|
||||
reagents.add_reagent(/datum/reagent/toxin/heparin, 5)
|
||||
return FALSE
|
||||
if(GLOB.cult_narsie && GLOB.cult_narsie.souls_needed[src])
|
||||
GLOB.cult_narsie.souls_needed -= src
|
||||
|
||||
@@ -751,17 +751,17 @@
|
||||
var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules
|
||||
var/obj/item/lightreplacer/LR = locate(/obj/item/lightreplacer) in basic_modules
|
||||
if(O)
|
||||
O.reagents.add_reagent("enzyme", 2 * coeff)
|
||||
O.reagents.add_reagent(/datum/reagent/consumable/enzyme, 2 * coeff)
|
||||
if(LR)
|
||||
for(var/i in 1 to coeff)
|
||||
LR.Charge(R)
|
||||
var/obj/item/reagent_containers/spray/cyborg_drying/CD = locate(/obj/item/reagent_containers/spray/cyborg_drying) in basic_modules
|
||||
if(CD)
|
||||
CD.reagents.add_reagent("drying_agent", 5 * coeff)
|
||||
CD.reagents.add_reagent(/datum/reagent/drying_agent, 5 * coeff)
|
||||
|
||||
var/obj/item/reagent_containers/spray/cyborg_lube/CL = locate(/obj/item/reagent_containers/spray/cyborg_lube) in emag_modules
|
||||
if(CL)
|
||||
CL.reagents.add_reagent("lube", 2 * coeff)
|
||||
CL.reagents.add_reagent(/datum/reagent/lube, 2 * coeff)
|
||||
|
||||
/obj/item/robot_module/butler/be_transformed_to(obj/item/robot_module/old_module)
|
||||
var/mob/living/silicon/robot/R = loc
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
if(isliving(A))
|
||||
if(ishuman(A))
|
||||
var/mob/living/carbon/human/H = A
|
||||
if(H.reagents.has_reagent("astral") && !H.mind)
|
||||
if(H.reagents.has_reagent(/datum/reagent/fermi/astral) && !H.mind)
|
||||
var/datum/reagent/fermi/astral/As = locate(/datum/reagent/fermi/astral) in H.reagents.reagent_list
|
||||
if(As.originalmind == src.mind && As.current_cycle < 10 && H.stat != DEAD) //So you can return to your body.
|
||||
to_chat(src, "<span class='warning'><b><i>The intensity of the astrogen in your body is too much allow you to return to yourself yet!</b></i></span>")
|
||||
|
||||
@@ -43,17 +43,17 @@
|
||||
var/declare_cooldown = 0 //Prevents spam of critical patient alerts.
|
||||
var/stationary_mode = 0 //If enabled, the Medibot will not move automatically.
|
||||
//Setting which reagents to use to treat what by default. By id.
|
||||
var/treatment_brute_avoid = "tricordrazine"
|
||||
var/treatment_brute = "bicaridine"
|
||||
var/treatment_brute_avoid = /datum/reagent/medicine/tricordrazine
|
||||
var/treatment_brute = /datum/reagent/medicine/bicaridine
|
||||
var/treatment_oxy_avoid = null
|
||||
var/treatment_oxy = "dexalin"
|
||||
var/treatment_fire_avoid = "tricordrazine"
|
||||
var/treatment_fire = "kelotane"
|
||||
var/treatment_tox_avoid = "tricordrazine"
|
||||
var/treatment_tox = "charcoal"
|
||||
var/treatment_tox_toxlover = "toxin"
|
||||
var/treatment_oxy = /datum/reagent/medicine/dexalin
|
||||
var/treatment_fire_avoid = /datum/reagent/medicine/tricordrazine
|
||||
var/treatment_fire = /datum/reagent/medicine/kelotane
|
||||
var/treatment_tox_avoid = /datum/reagent/medicine/tricordrazine
|
||||
var/treatment_tox = /datum/reagent/medicine/charcoal
|
||||
var/treatment_tox_toxlover = /datum/reagent/toxin
|
||||
var/treatment_virus_avoid = null
|
||||
var/treatment_virus = "spaceacillin"
|
||||
var/treatment_virus = /datum/reagent/medicine/spaceacillin
|
||||
var/treat_virus = 1 //If on, the bot will attempt to treat viral infections, curing them if possible.
|
||||
var/shut_up = 0 //self explanatory :)
|
||||
|
||||
@@ -61,9 +61,9 @@
|
||||
name = "\improper Mysterious Medibot"
|
||||
desc = "International Medibot of mystery."
|
||||
skin = "bezerk"
|
||||
treatment_brute = "tricordrazine"
|
||||
treatment_fire = "tricordrazine"
|
||||
treatment_tox = "tricordrazine"
|
||||
treatment_brute = /datum/reagent/medicine/tricordrazine
|
||||
treatment_fire = /datum/reagent/medicine/tricordrazine
|
||||
treatment_tox = /datum/reagent/medicine/tricordrazine
|
||||
|
||||
/mob/living/simple_animal/bot/medbot/derelict
|
||||
name = "\improper Old Medibot"
|
||||
@@ -71,13 +71,13 @@
|
||||
skin = "bezerk"
|
||||
heal_threshold = 0
|
||||
declare_crit = 0
|
||||
treatment_oxy = "pancuronium"
|
||||
treatment_oxy = /datum/reagent/toxin/pancuronium
|
||||
treatment_brute_avoid = null
|
||||
treatment_brute = "pancuronium"
|
||||
treatment_brute = /datum/reagent/toxin/pancuronium
|
||||
treatment_fire_avoid = null
|
||||
treatment_fire = "sodium_thiopental"
|
||||
treatment_fire = /datum/reagent/toxin/sodium_thiopental
|
||||
treatment_tox_avoid = null
|
||||
treatment_tox = "sodium_thiopental"
|
||||
treatment_tox = /datum/reagent/toxin/sodium_thiopental
|
||||
|
||||
/mob/living/simple_animal/bot/medbot/update_icon()
|
||||
cut_overlays()
|
||||
@@ -369,8 +369,9 @@
|
||||
|
||||
//If they're injured, we're using a beaker, and don't have one of our WONDERCHEMS.
|
||||
if((reagent_glass) && (use_beaker) && ((C.getBruteLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getToxLoss() >= heal_threshold) || (C.getOxyLoss() >= (heal_threshold + 15))))
|
||||
for(var/datum/reagent/R in reagent_glass.reagents.reagent_list)
|
||||
if(!C.reagents.has_reagent(R.id))
|
||||
for(var/A in reagent_glass.reagents.reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if(!C.reagents.has_reagent(R.type))
|
||||
return TRUE
|
||||
|
||||
//They're injured enough for it!
|
||||
@@ -477,8 +478,9 @@
|
||||
|
||||
//If the patient is injured but doesn't have our special reagent in them then we should give it to them first
|
||||
if(reagent_id && use_beaker && reagent_glass && reagent_glass.reagents.total_volume)
|
||||
for(var/datum/reagent/R in reagent_glass.reagents.reagent_list)
|
||||
if(!C.reagents.has_reagent(R.id))
|
||||
for(var/A in reagent_glass.reagents.reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if(!C.reagents.has_reagent(R.type))
|
||||
reagent_id = "internal_beaker"
|
||||
break
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
var/atom/Tsec = drop_location()
|
||||
new /obj/item/stock_parts/cell/potato(Tsec)
|
||||
var/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/S = new(Tsec)
|
||||
S.reagents.add_reagent("whiskey", 15)
|
||||
S.reagents.add_reagent(/datum/reagent/consumable/ethanol/whiskey, 15)
|
||||
S.on_reagent_change(ADD_REAGENT)
|
||||
..()
|
||||
|
||||
|
||||
@@ -292,8 +292,8 @@
|
||||
/mob/living/simple_animal/pet/cat/cak/attack_hand(mob/living/L)
|
||||
..()
|
||||
if(L.a_intent == INTENT_HARM && L.reagents && !stat)
|
||||
L.reagents.add_reagent("nutriment", 0.4)
|
||||
L.reagents.add_reagent("vitamin", 0.4)
|
||||
L.reagents.add_reagent(/datum/reagent/consumable/nutriment, 0.4)
|
||||
L.reagents.add_reagent(/datum/reagent/consumable/nutriment/vitamin, 0.4)
|
||||
|
||||
//Cat made
|
||||
/mob/living/simple_animal/pet/cat/custom_cat
|
||||
|
||||
@@ -455,12 +455,12 @@
|
||||
|
||||
/obj/item/udder/Initialize()
|
||||
create_reagents(50)
|
||||
reagents.add_reagent("milk", 20)
|
||||
reagents.add_reagent(/datum/reagent/consumable/milk, 20)
|
||||
. = ..()
|
||||
|
||||
/obj/item/udder/proc/generateMilk()
|
||||
if(prob(5))
|
||||
reagents.add_reagent("milk", rand(5, 10))
|
||||
reagents.add_reagent(/datum/reagent/consumable/milk, rand(5, 10))
|
||||
|
||||
/obj/item/udder/proc/milkAnimal(obj/O, mob/user)
|
||||
var/obj/item/reagent_containers/glass/G = O
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/mob/living/simple_animal/hostile/retaliate/poison
|
||||
var/poison_per_bite = 0
|
||||
var/poison_type = "toxin"
|
||||
var/poison_type = /datum/reagent/toxin
|
||||
|
||||
/mob/living/simple_animal/hostile/retaliate/poison/AttackingTarget()
|
||||
. = ..()
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
var/mob/living/L = target
|
||||
if(L.reagents)
|
||||
beegent.reaction_mob(L, INJECT)
|
||||
L.reagents.add_reagent(beegent.id, rand(1,5))
|
||||
L.reagents.add_reagent(beegent.type, rand(1,5))
|
||||
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/bees/proc/assign_reagent(datum/reagent/R)
|
||||
@@ -225,7 +225,7 @@
|
||||
if(. && beegent && isliving(target))
|
||||
var/mob/living/L = target
|
||||
beegent.reaction_mob(L, TOUCH)
|
||||
L.reagents.add_reagent(beegent.id, rand(1,5))
|
||||
L.reagents.add_reagent(beegent.type, rand(1,5))
|
||||
|
||||
|
||||
//PEASENT BEES
|
||||
@@ -236,7 +236,7 @@
|
||||
/mob/living/simple_animal/hostile/poison/bees/proc/reagent_incompatible(mob/living/simple_animal/hostile/poison/bees/B)
|
||||
if(!B)
|
||||
return FALSE
|
||||
if(B.beegent && beegent && B.beegent.id != beegent.id || B.beegent && !beegent || !B.beegent && beegent)
|
||||
if(B.beegent && beegent && B.beegent.type != beegent.type || B.beegent && !beegent || !B.beegent && beegent)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -253,9 +253,10 @@
|
||||
/obj/item/queen_bee/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/reagent_containers/syringe))
|
||||
var/obj/item/reagent_containers/syringe/S = I
|
||||
if(S.reagents.has_reagent("royal_bee_jelly")) //checked twice, because I really don't want royal bee jelly to be duped
|
||||
if(S.reagents.has_reagent("royal_bee_jelly",5))
|
||||
S.reagents.remove_reagent("royal_bee_jelly", 5)
|
||||
var/jelly_amount = S.reagents.get_reagent_amount(/datum/reagent/royal_bee_jelly)
|
||||
if(jelly_amount)
|
||||
if(jelly_amount >= 5)
|
||||
S.reagents.remove_reagent(/datum/reagent/royal_bee_jelly, 5)
|
||||
var/obj/item/queen_bee/qb = new(user.drop_location())
|
||||
qb.queen = new(qb)
|
||||
if(queen && queen.beegent)
|
||||
@@ -266,8 +267,8 @@
|
||||
to_chat(user, "<span class='warning'>You don't have enough royal bee jelly to split a bee in two!</span>")
|
||||
else
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[S.reagents.get_master_reagent_id()]
|
||||
if(R && S.reagents.has_reagent(R.id, 5))
|
||||
S.reagents.remove_reagent(R.id,5)
|
||||
if(R && S.reagents.has_reagent(R.type, 5))
|
||||
S.reagents.remove_reagent(R.type,5)
|
||||
queen.assign_reagent(R)
|
||||
user.visible_message("<span class='warning'>[user] injects [src]'s genome with [R.name], mutating it's DNA!</span>","<span class='warning'>You inject [src]'s genome with [R.name], mutating it's DNA!</span>")
|
||||
name = queen.name
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/poison
|
||||
var/poison_per_bite = 5
|
||||
var/poison_type = "toxin"
|
||||
var/poison_type = /datum/reagent/toxin
|
||||
|
||||
/mob/living/simple_animal/hostile/poison/AttackingTarget()
|
||||
. = ..()
|
||||
@@ -158,7 +158,7 @@
|
||||
melee_damage_upper = 1
|
||||
poison_per_bite = 12
|
||||
move_to_delay = 4
|
||||
poison_type = "venom" //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe?
|
||||
poison_type = /datum/reagent/toxin/venom //all in venom, glass cannon. you bite 5 times and they are DEFINITELY dead, but 40 health and you are extremely obvious. Ambush, maybe?
|
||||
speed = 1
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
|
||||
@@ -217,7 +217,7 @@
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1500
|
||||
poison_type = "frostoil"
|
||||
poison_type = /datum/reagent/consumable/frostoil
|
||||
color = rgb(114,228,250)
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1500
|
||||
poison_type = "frostoil"
|
||||
poison_type = /datum/reagent/consumable/frostoil
|
||||
color = rgb(114,228,250)
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1500
|
||||
poison_type = "frostoil"
|
||||
poison_type = /datum/reagent/consumable/frostoil
|
||||
color = rgb(114,228,250)
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
..()
|
||||
if(iscarbon(target))
|
||||
var/mob/living/carbon/C = target
|
||||
C.reagents.add_reagent("leaper_venom", 5)
|
||||
C.reagents.add_reagent(/datum/reagent/toxin/leaper_venom, 5)
|
||||
return
|
||||
if(isanimal(target))
|
||||
var/mob/living/simple_animal/L = target
|
||||
@@ -96,7 +96,7 @@
|
||||
L.Knockdown(50)
|
||||
if(iscarbon(L))
|
||||
var/mob/living/carbon/C = L
|
||||
C.reagents.add_reagent("leaper_venom", 5)
|
||||
C.reagents.add_reagent(/datum/reagent/toxin/leaper_venom, 5)
|
||||
if(isanimal(L))
|
||||
var/mob/living/simple_animal/A = L
|
||||
A.adjustHealth(25)
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
|
||||
/obj/item/udder/gutlunch/generateMilk()
|
||||
if(prob(60))
|
||||
reagents.add_reagent("cream", rand(2, 5))
|
||||
reagents.add_reagent(/datum/reagent/consumable/cream, rand(2, 5))
|
||||
if(prob(45))
|
||||
reagents.add_reagent("salglu_solution", rand(2,5))
|
||||
reagents.add_reagent(/datum/reagent/medicine/salglu_solution, rand(2,5))
|
||||
|
||||
|
||||
@@ -185,6 +185,6 @@
|
||||
var/counter
|
||||
for(counter=0, counter<=powerlevel, counter++)
|
||||
var/obj/item/reagent_containers/food/snacks/hugemushroomslice/S = new /obj/item/reagent_containers/food/snacks/hugemushroomslice(src.loc)
|
||||
S.reagents.add_reagent("mushroomhallucinogen", powerlevel)
|
||||
S.reagents.add_reagent("omnizine", powerlevel)
|
||||
S.reagents.add_reagent("synaptizine", powerlevel)
|
||||
S.reagents.add_reagent(/datum/reagent/drug/mushroomhallucinogen, powerlevel)
|
||||
S.reagents.add_reagent(/datum/reagent/medicine/omnizine, powerlevel)
|
||||
S.reagents.add_reagent(/datum/reagent/medicine/synaptizine, powerlevel)
|
||||
|
||||
@@ -141,9 +141,9 @@
|
||||
. = ..()
|
||||
remove_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE)
|
||||
var/amount = 0
|
||||
if(reagents.has_reagent("morphine")) // morphine slows slimes down
|
||||
if(reagents.has_reagent(/datum/reagent/medicine/morphine)) // morphine slows slimes down
|
||||
amount = 2
|
||||
if(reagents.has_reagent("frostoil")) // Frostoil also makes them move VEEERRYYYYY slow
|
||||
if(reagents.has_reagent(/datum/reagent/consumable/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow
|
||||
amount = 5
|
||||
if(amount)
|
||||
add_movespeed_modifier(MOVESPEED_ID_SLIME_REAGENTMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = amount)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
if(!ninjacost(0,N_ADRENALINE))
|
||||
var/mob/living/carbon/human/H = affecting
|
||||
H.do_adrenaline(150, TRUE, 0, 0, TRUE, list("inaprovaline" = 3, "synaptizine" = 10, "omnizine" = 10), "<span class='boldnotice'>You feel a sudden surge of energy!</span>")
|
||||
H.do_adrenaline(150, TRUE, 0, 0, TRUE, list(/datum/reagent/medicine/inaprovaline = 3, /datum/reagent/medicine/synaptizine = 10, /datum/reagent/medicine/omnizine = 10), "<span class='boldnotice'>You feel a sudden surge of energy!</span>")
|
||||
|
||||
H.say(pick("A CORNERED FOX IS MORE DANGEROUS THAN A JACKAL!","HURT ME MOOORRREEE!","IMPRESSIVE!"), forced = "ninjaboost")
|
||||
|
||||
@@ -15,5 +15,5 @@
|
||||
|
||||
/obj/item/clothing/suit/space/space_ninja/proc/ninjaboost_after()
|
||||
var/mob/living/carbon/human/H = affecting
|
||||
H.reagents.add_reagent("radium", a_transfer)
|
||||
H.reagents.add_reagent(/datum/reagent/radium, a_transfer)
|
||||
to_chat(H, "<span class='danger'>You are beginning to feel the after-effect of the injection.</span>")
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
return ..()
|
||||
|
||||
if(istype(I, /obj/item/reagent_containers/glass))//If it's a glass beaker.
|
||||
if(I.reagents.has_reagent("radium", a_transfer) && a_boost < a_maxamount)
|
||||
I.reagents.remove_reagent("radium", a_transfer)
|
||||
if(I.reagents.has_reagent(/datum/reagent/radium, a_transfer) && a_boost < a_maxamount)
|
||||
I.reagents.remove_reagent(/datum/reagent/radium, a_transfer)
|
||||
a_boost++;
|
||||
to_chat(U, "<span class='notice'>There are now [a_boost] adrenaline boosts remaining.</span>")
|
||||
return
|
||||
if(I.reagents.has_reagent("smoke_powder", a_transfer) && s_bombs < s_maxamount)
|
||||
I.reagents.remove_reagent("smoke_powder", a_transfer)
|
||||
if(I.reagents.has_reagent(/datum/reagent/smoke_powder, a_transfer) && s_bombs < s_maxamount)
|
||||
I.reagents.remove_reagent(/datum/reagent/smoke_powder, a_transfer)
|
||||
s_bombs++;
|
||||
to_chat(U, "<span class='notice'>There are now [s_bombs] smoke bombs remaining.</span>")
|
||||
return
|
||||
|
||||
@@ -165,9 +165,9 @@
|
||||
/obj/item/pen/sleepy/Initialize()
|
||||
. = ..()
|
||||
create_reagents(45, OPENCONTAINER)
|
||||
reagents.add_reagent("chloralhydrate", 20)
|
||||
reagents.add_reagent("mutetoxin", 15)
|
||||
reagents.add_reagent("tirizene", 10)
|
||||
reagents.add_reagent(/datum/reagent/toxin/chloralhydrate, 20)
|
||||
reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 15)
|
||||
reagents.add_reagent(/datum/reagent/toxin/staminatoxin, 10)
|
||||
|
||||
/*
|
||||
* (Alan) Edaggers
|
||||
|
||||
@@ -106,7 +106,7 @@
|
||||
|
||||
/obj/item/stock_parts/cell/on_reagent_change(changetype)
|
||||
..()
|
||||
rigged = reagents?.has_reagent("plasma", 5) ? TRUE : FALSE //has_reagent returns the reagent datum
|
||||
rigged = reagents?.has_reagent(/datum/reagent/toxin/plasma, 5) ? TRUE : FALSE //has_reagent returns the reagent datum
|
||||
|
||||
/obj/item/stock_parts/cell/proc/explode()
|
||||
var/turf/T = get_turf(src.loc)
|
||||
|
||||
@@ -789,7 +789,7 @@
|
||||
|
||||
to_chat(user, "<span class='notice'>You inject the solution into \the [src].</span>")
|
||||
|
||||
if(S.reagents.has_reagent("plasma", 5))
|
||||
if(S.reagents.has_reagent(/datum/reagent/toxin/plasma, 5))
|
||||
|
||||
rigged = 1
|
||||
|
||||
|
||||
@@ -134,8 +134,8 @@
|
||||
|
||||
/obj/item/ammo_casing/shotgun/dart/bioterror/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("neurotoxin", 6)
|
||||
reagents.add_reagent("spore", 6)
|
||||
reagents.add_reagent("mutetoxin", 6) //;HELP OPS IN MAINT
|
||||
reagents.add_reagent("coniine", 6)
|
||||
reagents.add_reagent("sodium_thiopental", 6)
|
||||
reagents.add_reagent(/datum/reagent/toxin/fentanyl, 6)
|
||||
reagents.add_reagent(/datum/reagent/toxin/spore, 6)
|
||||
reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 6) //;HELP OPS IN MAINT
|
||||
reagents.add_reagent(/datum/reagent/toxin/coniine, 6)
|
||||
reagents.add_reagent(/datum/reagent/toxin/sodium_thiopental, 6)
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
|
||||
/obj/item/projectile/bullet/dart/metalfoam/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("aluminium", 15)
|
||||
reagents.add_reagent("foaming_agent", 5)
|
||||
reagents.add_reagent("facid", 5)
|
||||
reagents.add_reagent(/datum/reagent/aluminium, 15)
|
||||
reagents.add_reagent(/datum/reagent/foaming_agent, 5)
|
||||
reagents.add_reagent(/datum/reagent/toxin/acid, 5)
|
||||
|
||||
/obj/item/projectile/bullet/dart/syringe
|
||||
name = "syringe"
|
||||
@@ -52,20 +52,19 @@
|
||||
if(blocked != 100)
|
||||
if(M.can_inject(null, FALSE, def_zone, piercing)) // Pass the hit zone to see if it can inject by whether it hit the head or the body.
|
||||
..(target, blocked, TRUE)
|
||||
for(var/datum/reagent/R in reagents.reagent_list) //OD prevention time!
|
||||
if(istype(R, /datum/reagent/medicine)) //Is this a medicine?
|
||||
if(M.reagents.has_reagent(R.id))
|
||||
if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD?
|
||||
M.reagents.add_reagent(R.id, R.volume)
|
||||
else
|
||||
var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.id)) -1)
|
||||
M.reagents.add_reagent(R.id, transVol)
|
||||
for(var/datum/reagent/medicine/R in reagents.reagent_list) //OD prevention time!
|
||||
if(M.reagents.has_reagent(R.type))
|
||||
if(R.overdose_threshold == 0 || emptrig == TRUE) //Is there a possible OD?
|
||||
M.reagents.add_reagent(R.type, R.volume)
|
||||
else
|
||||
if(!R.overdose_threshold == 0)
|
||||
var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1)
|
||||
M.reagents.add_reagent(R.id, transVol)
|
||||
else
|
||||
M.reagents.add_reagent(R.id, R.volume)
|
||||
var/transVol = CLAMP(R.volume, 0, (R.overdose_threshold - M.reagents.get_reagent_amount(R.id)) -1)
|
||||
M.reagents.add_reagent(R.type, transVol)
|
||||
else
|
||||
if(!R.overdose_threshold == 0)
|
||||
var/transVol = CLAMP(R.volume, 0, R.overdose_threshold-1)
|
||||
M.reagents.add_reagent(R.type, transVol)
|
||||
else
|
||||
M.reagents.add_reagent(R.type, R.volume)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -332,11 +332,11 @@
|
||||
//Description, OD, Addict, Meta
|
||||
outstring += "[R.description] | <ul><li>Metabolism rate: [R.metabolization_rate/2]u/s</li> [(R.overdose_threshold?"<li>Overdose: [R.overdose_threshold]u</li>":"")] [(R.addiction_threshold?"<li>Addiction: [R.addiction_threshold]u</li>":"")] "
|
||||
|
||||
if(R.impure_chem && R.impure_chem != "fermiTox")
|
||||
if(R.impure_chem && R.impure_chem != /datum/reagent/impure/fermiTox)
|
||||
R3 = GLOB.chemical_reagents_list[R.impure_chem]
|
||||
outstring += "<li>Impure chem:<a href=\"#[R3.name]\">[R3.name]</a></li>"
|
||||
|
||||
if(R.inverse_chem && R.impure_chem != "fermiTox")
|
||||
if(R.inverse_chem && R.impure_chem != /datum/reagent/impure/fermiTox)
|
||||
R3 = GLOB.chemical_reagents_list[R.inverse_chem]
|
||||
outstring += "<li>Inverse chem:<a href=\"#[R3.name]\">[R3.name]</a></li> [(R3.inverse_chem_val?"<li>Inverse purity: [R3.inverse_chem_val]</li>":"")] "
|
||||
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
|
||||
for(var/path in paths)
|
||||
var/datum/reagent/D = new path()
|
||||
GLOB.chemical_reagents_list[D.id] = D
|
||||
GLOB.chemical_reagents_list[path] = D
|
||||
|
||||
/proc/build_chemical_reactions_list()
|
||||
//Chemical Reactions - Initialises all /datum/chemical_reaction into a list
|
||||
// It is filtered into multiple lists within a list.
|
||||
// For example:
|
||||
// chemical_reaction_list["plasma"] is a list of all reactions relating to plasma
|
||||
// chemical_reaction_list[/datum/reagent/toxin/plasma] is a list of all reactions relating to plasma
|
||||
|
||||
if(GLOB.chemical_reactions_list)
|
||||
return
|
||||
@@ -32,14 +32,11 @@
|
||||
var/datum/chemical_reaction/D = new path()
|
||||
var/list/reaction_ids = list()
|
||||
|
||||
if(!D.id)
|
||||
continue
|
||||
|
||||
if(D.required_reagents && D.required_reagents.len)
|
||||
for(var/reaction in D.required_reagents)
|
||||
reaction_ids += reaction
|
||||
|
||||
// Create filters based on each reagent id in the required reagents list
|
||||
// Create filters based on each reagent type in the required reagents list
|
||||
for(var/id in reaction_ids)
|
||||
if(!GLOB.chemical_reactions_list[id])
|
||||
GLOB.chemical_reactions_list[id] = list()
|
||||
@@ -63,7 +60,7 @@
|
||||
var/targetVol = 0 //the target volume, i.e. the total amount that can be created during a fermichem reaction.
|
||||
var/reactedVol = 0 //how much of the reagent is reacted during a fermireaction
|
||||
var/fermiIsReacting = FALSE //that prevents multiple reactions from occurring (i.e. add_reagent calls to process_reactions(), this stops any extra reactions.)
|
||||
var/fermiReactID //ID of the chem being made during a fermireaction, kept here so it's cache isn't lost between loops/procs.
|
||||
var/fermiReactID //instance of the chem reaction used during a fermireaction, kept here so it's cache isn't lost between loops/procs.
|
||||
|
||||
/datum/reagents/New(maximum=100, new_flags)
|
||||
maximum_volume = maximum
|
||||
@@ -96,7 +93,7 @@
|
||||
var/list/data = list()
|
||||
for(var/r in reagent_list) //no reagents will be left behind
|
||||
var/datum/reagent/R = r
|
||||
data += "[R.id] ([round(R.volume, CHEMICAL_QUANTISATION_LEVEL)]u)"
|
||||
data += "[R.type] ([round(R.volume, CHEMICAL_QUANTISATION_LEVEL)]u)"
|
||||
//Using IDs because SOME chemicals (I'm looking at you, chlorhydrate-beer) have the same names as other chemicals.
|
||||
return english_list(data)
|
||||
|
||||
@@ -117,7 +114,7 @@
|
||||
current_list_element = 1
|
||||
|
||||
var/datum/reagent/R = cached_reagents[current_list_element]
|
||||
remove_reagent(R.id, 1)
|
||||
remove_reagent(R.type, 1)
|
||||
|
||||
current_list_element++
|
||||
total_transfered++
|
||||
@@ -132,7 +129,7 @@
|
||||
var/part = amount / total_volume
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
remove_reagent(R.id, R.volume * part, ignore_pH = TRUE)
|
||||
remove_reagent(R.type, R.volume * part, ignore_pH = TRUE)
|
||||
pH = REAGENT_NORMAL_PH
|
||||
update_total()
|
||||
handle_reactions()
|
||||
@@ -152,15 +149,15 @@
|
||||
|
||||
/datum/reagents/proc/get_master_reagent_id()
|
||||
var/list/cached_reagents = reagent_list
|
||||
var/id
|
||||
var/max_type
|
||||
var/max_volume = 0
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
if(R.volume > max_volume)
|
||||
max_volume = R.volume
|
||||
id = R.id
|
||||
max_type = R.type
|
||||
|
||||
return id
|
||||
return max_type
|
||||
|
||||
/datum/reagents/proc/get_master_reagent()
|
||||
var/list/cached_reagents = reagent_list
|
||||
@@ -198,9 +195,9 @@
|
||||
trans_data = copy_data(T)
|
||||
|
||||
|
||||
R.add_reagent(T.id, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered.
|
||||
R.add_reagent(T.type, transfer_amount * multiplier, trans_data, chem_temp, T.purity, pH, no_react = TRUE, ignore_pH = TRUE) //we only handle reaction after every reagent has been transfered.
|
||||
|
||||
remove_reagent(T.id, transfer_amount, ignore_pH = TRUE)
|
||||
remove_reagent(T.type, transfer_amount, ignore_pH = TRUE)
|
||||
|
||||
update_total()
|
||||
R.update_total()
|
||||
@@ -232,7 +229,7 @@
|
||||
var/copy_amount = T.volume * part
|
||||
if(preserve_data)
|
||||
trans_data = T.data
|
||||
R.add_reagent(T.id, copy_amount * multiplier, trans_data)
|
||||
R.add_reagent(T.type, copy_amount * multiplier, trans_data)
|
||||
|
||||
src.update_total()
|
||||
R.update_total()
|
||||
@@ -256,12 +253,12 @@
|
||||
var/trans_data = null
|
||||
for (var/CR in cached_reagents)
|
||||
var/datum/reagent/current_reagent = CR
|
||||
if(current_reagent.id == reagent)
|
||||
if(current_reagent.type == reagent)
|
||||
if(preserve_data)
|
||||
trans_data = current_reagent.data
|
||||
R.add_reagent(current_reagent.id, amount, trans_data, chem_temp, current_reagent.purity, pH, no_react = TRUE)
|
||||
R.add_reagent(current_reagent.type, amount, trans_data, chem_temp, current_reagent.purity, pH, no_react = TRUE)
|
||||
|
||||
remove_reagent(current_reagent.id, amount, 1)
|
||||
remove_reagent(current_reagent.type, amount, 1)
|
||||
break
|
||||
|
||||
src.update_total()
|
||||
@@ -313,18 +310,21 @@
|
||||
var/datum/reagent/R = addiction
|
||||
if(C && R)
|
||||
R.addiction_stage++
|
||||
if(1 <= R.addiction_stage && R.addiction_stage <= R.addiction_stage1_end)
|
||||
need_mob_update += R.addiction_act_stage1(C)
|
||||
else if(R.addiction_stage1_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage2_end)
|
||||
need_mob_update += R.addiction_act_stage2(C)
|
||||
else if(R.addiction_stage2_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage3_end)
|
||||
need_mob_update += R.addiction_act_stage3(C)
|
||||
else if(R.addiction_stage3_end <= R.addiction_stage && R.addiction_stage <= R.addiction_stage4_end)
|
||||
need_mob_update += R.addiction_act_stage4(C)
|
||||
else if(R.addiction_stage4_end <= R.addiction_stage)
|
||||
to_chat(C, "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>")
|
||||
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.id]_addiction")
|
||||
cached_addictions.Remove(R)
|
||||
switch(R.addiction_stage)
|
||||
if(1 to R.addiction_stage1_end)
|
||||
need_mob_update += R.addiction_act_stage1(C)
|
||||
if(R.addiction_stage1_end to R.addiction_stage2_end)
|
||||
need_mob_update += R.addiction_act_stage2(C)
|
||||
if(R.addiction_stage2_end to R.addiction_stage3_end)
|
||||
need_mob_update += R.addiction_act_stage3(C)
|
||||
if(R.addiction_stage3_end to R.addiction_stage4_end)
|
||||
need_mob_update += R.addiction_act_stage4(C)
|
||||
if(R.addiction_stage4_end to INFINITY)
|
||||
to_chat(C, "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>")
|
||||
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_addiction")
|
||||
cached_addictions.Remove(R)
|
||||
else
|
||||
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose")
|
||||
addiction_tick++
|
||||
if(C && need_mob_update) //some of the metabolized reagents had effects on the mob that requires some updates.
|
||||
C.updatehealth()
|
||||
@@ -381,7 +381,7 @@
|
||||
reaction_occurred = 0
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
for(var/reaction in cached_reactions[R.id]) // Was a big list but now it should be smaller since we filtered it with our reagent id
|
||||
for(var/reaction in cached_reactions[R.type]) // Was a big list but now it should be smaller since we filtered it with our reagent type
|
||||
if(!reaction)
|
||||
continue
|
||||
|
||||
@@ -630,7 +630,7 @@
|
||||
deltapH = 1
|
||||
//This should never proc:
|
||||
else
|
||||
WARNING("[my_atom] attempted to determine FermiChem pH for '[C.id]' which broke for some reason! ([usr])")
|
||||
WARNING("[my_atom] attempted to determine FermiChem pH for '[C.type]' which broke for some reason! ([usr])")
|
||||
|
||||
//Calculate DeltaT (Deviation of T from optimal)
|
||||
if (cached_temp < C.OptimalTempMax && cached_temp >= C.OptimalTempMin)
|
||||
@@ -679,7 +679,7 @@
|
||||
//Above should reduce yeild based on holder purity.
|
||||
//Purity Check
|
||||
for(var/datum/reagent/R in my_atom.reagents.reagent_list)
|
||||
if(P == R.id)
|
||||
if(P == R.type)
|
||||
if (R.purity < C.PurityMin)//If purity is below the min, blow it up.
|
||||
fermiIsReacting = FALSE
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, ("[P] explosion"))
|
||||
@@ -724,7 +724,7 @@
|
||||
return cachedPurity/i
|
||||
|
||||
/datum/reagents/proc/uncache_purity(id)
|
||||
var/datum/reagent/R = has_reagent("[id]")
|
||||
var/datum/reagent/R = has_reagent(id)
|
||||
if(!R)
|
||||
return
|
||||
if(R.cached_purity == 1)
|
||||
@@ -735,15 +735,15 @@
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/_reagent in cached_reagents)
|
||||
var/datum/reagent/R = _reagent
|
||||
if(R.id != reagent)
|
||||
del_reagent(R.id)
|
||||
if(R.type != reagent)
|
||||
del_reagent(R.type)
|
||||
update_total()
|
||||
|
||||
/datum/reagents/proc/del_reagent(reagent)
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/_reagent in cached_reagents)
|
||||
var/datum/reagent/R = _reagent
|
||||
if(R.id == reagent)
|
||||
if(R.type == reagent)
|
||||
if(my_atom && isliving(my_atom))
|
||||
var/mob/living/M = my_atom
|
||||
if(R.metabolizing)
|
||||
@@ -763,9 +763,9 @@
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
if(R.volume <= 0)//For clarity
|
||||
del_reagent(R.id)
|
||||
del_reagent(R.type)
|
||||
if((R.volume < 0.01) && !fermiIsReacting)
|
||||
del_reagent(R.id)
|
||||
del_reagent(R.type)
|
||||
else
|
||||
total_volume += R.volume
|
||||
if(!reagent_list || !total_volume)
|
||||
@@ -776,7 +776,7 @@
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
del_reagent(R.id)
|
||||
del_reagent(R.type)
|
||||
pH = REAGENT_NORMAL_PH
|
||||
return 0
|
||||
|
||||
@@ -842,13 +842,13 @@
|
||||
WARNING("[my_atom] attempted to add a reagent called '[reagent]' which doesn't exist. ([usr])")
|
||||
return FALSE
|
||||
|
||||
if (D.id == "water" && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany.
|
||||
if (D.type == /datum/reagent/water && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany.
|
||||
if (pH < 2)
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, "water-acid explosions")
|
||||
var/datum/effect_system/smoke_spread/chem/s = new
|
||||
var/turf/T = get_turf(my_atom)
|
||||
var/datum/reagents/R = new/datum/reagents(3000)
|
||||
R.add_reagent("fermiAcid", amount)
|
||||
R.add_reagent(/datum/reagent/fermi/fermiAcid, amount)
|
||||
for (var/datum/reagent/reagentgas in reagent_list)
|
||||
R.add_reagent(reagentgas, amount/5)
|
||||
remove_reagent(reagentgas, amount/5)
|
||||
@@ -895,7 +895,7 @@
|
||||
//add the reagent to the existing if it exists
|
||||
for(var/A in cached_reagents)
|
||||
var/datum/reagent/R = A
|
||||
if (R.id == reagent) //IF MERGING
|
||||
if (R.type == reagent) //IF MERGING
|
||||
//Add amount and equalize purity
|
||||
R.volume += round(amount, CHEMICAL_QUANTISATION_LEVEL)
|
||||
R.purity = ((R.purity * R.volume) + (other_purity * amount)) /((R.volume + amount)) //This should add the purity to the product
|
||||
@@ -937,7 +937,7 @@
|
||||
return TRUE
|
||||
|
||||
|
||||
/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list("toxin" = 10, "beer" = 15)
|
||||
/datum/reagents/proc/add_reagent_list(list/list_reagents, list/data=null) // Like add_reagent but you can enter a list. Format it like this: list(/datum/reagent/toxin = 10, /datum/reagent/consumable/ethanol/beer = 15)
|
||||
for(var/r_id in list_reagents)
|
||||
var/amt = list_reagents[r_id]
|
||||
add_reagent(r_id, amt, data)
|
||||
@@ -959,7 +959,7 @@
|
||||
|
||||
for(var/A in cached_reagents)
|
||||
var/datum/reagent/R = A
|
||||
if (R.id == reagent)
|
||||
if (R.type == reagent)
|
||||
if((total_volume - amount) <= 0)//Because this can result in 0, I don't want it to crash.
|
||||
pH = REAGENT_NORMAL_PH
|
||||
//In practice this is really confusing and players feel like it randomly melts their beakers, but I'm not sure how else to handle it. We'll see how it goes and I can remove this if it confuses people.
|
||||
@@ -986,7 +986,7 @@
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/_reagent in cached_reagents)
|
||||
var/datum/reagent/R = _reagent
|
||||
if (R.id == reagent)
|
||||
if (R.type == reagent)
|
||||
if(!amount)
|
||||
return R
|
||||
else
|
||||
@@ -1001,7 +1001,7 @@
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/_reagent in cached_reagents)
|
||||
var/datum/reagent/R = _reagent
|
||||
if (R.id == reagent)
|
||||
if (R.type == reagent)
|
||||
return round(R.volume, CHEMICAL_QUANTISATION_LEVEL)
|
||||
|
||||
return 0
|
||||
@@ -1034,7 +1034,7 @@
|
||||
// We found a match, proceed to remove the reagent. Keep looping, we might find other reagents of the same type.
|
||||
if(matches)
|
||||
// Have our other proc handle removement
|
||||
has_removed_reagent = remove_reagent(R.id, amount, safety)
|
||||
has_removed_reagent = remove_reagent(R.type, amount, safety)
|
||||
|
||||
return has_removed_reagent
|
||||
|
||||
@@ -1043,14 +1043,14 @@
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
if(R.id == reagent_id)
|
||||
if(R.type == reagent_id)
|
||||
return R.data
|
||||
|
||||
/datum/reagents/proc/set_data(reagent_id, new_data)
|
||||
var/list/cached_reagents = reagent_list
|
||||
for(var/reagent in cached_reagents)
|
||||
var/datum/reagent/R = reagent
|
||||
if(R.id == reagent_id)
|
||||
if(R.type == reagent_id)
|
||||
R.data = new_data
|
||||
|
||||
/datum/reagents/proc/copy_data(datum/reagent/current_reagent)
|
||||
@@ -1143,12 +1143,12 @@
|
||||
reagents = new/datum/reagents(max_vol, flags)
|
||||
reagents.my_atom = src
|
||||
|
||||
/proc/get_random_reagent_id() // Returns a random reagent ID minus blacklisted reagents
|
||||
/proc/get_random_reagent_id() // Returns a random reagent type minus blacklisted reagents
|
||||
var/static/list/random_reagents = list()
|
||||
if(!random_reagents.len)
|
||||
for(var/thing in subtypesof(/datum/reagent))
|
||||
var/datum/reagent/R = thing
|
||||
if(initial(R.can_synth))
|
||||
random_reagents += initial(R.id)
|
||||
random_reagents += R
|
||||
var/picked_reagent = pick(random_reagents)
|
||||
return picked_reagent
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
/proc/translate_legacy_chem_id(id)
|
||||
switch (id)
|
||||
if ("sacid")
|
||||
return "sulphuricacid"
|
||||
if ("facid")
|
||||
return "fluorosulfuricacid"
|
||||
if ("co2")
|
||||
return "carbondioxide"
|
||||
if ("mine_salve")
|
||||
return "minerssalve"
|
||||
else
|
||||
return ckey(id)
|
||||
|
||||
/obj/machinery/chem_dispenser
|
||||
name = "chem dispenser"
|
||||
desc = "Creates and dispenses chemicals."
|
||||
@@ -21,65 +34,66 @@
|
||||
var/macrotier = 1
|
||||
var/obj/item/reagent_containers/beaker = null
|
||||
var/list/dispensable_reagents = list(
|
||||
"hydrogen",
|
||||
"lithium",
|
||||
"carbon",
|
||||
"nitrogen",
|
||||
"oxygen",
|
||||
"fluorine",
|
||||
"sodium",
|
||||
"aluminium",
|
||||
"silicon",
|
||||
"phosphorus",
|
||||
"sulfur",
|
||||
"chlorine",
|
||||
"potassium",
|
||||
"iron",
|
||||
"copper",
|
||||
"mercury",
|
||||
"radium",
|
||||
"water",
|
||||
"ethanol",
|
||||
"sugar",
|
||||
"sacid",
|
||||
"welding_fuel",
|
||||
"silver",
|
||||
"iodine",
|
||||
"bromine",
|
||||
"stable_plasma"
|
||||
/datum/reagent/hydrogen,
|
||||
/datum/reagent/lithium,
|
||||
/datum/reagent/carbon,
|
||||
/datum/reagent/nitrogen,
|
||||
/datum/reagent/oxygen,
|
||||
/datum/reagent/fluorine,
|
||||
/datum/reagent/sodium,
|
||||
/datum/reagent/aluminium,
|
||||
/datum/reagent/silicon,
|
||||
/datum/reagent/phosphorus,
|
||||
/datum/reagent/sulfur,
|
||||
/datum/reagent/chlorine,
|
||||
/datum/reagent/potassium,
|
||||
/datum/reagent/iron,
|
||||
/datum/reagent/copper,
|
||||
/datum/reagent/mercury,
|
||||
/datum/reagent/radium,
|
||||
/datum/reagent/water,
|
||||
/datum/reagent/consumable/ethanol,
|
||||
/datum/reagent/consumable/sugar,
|
||||
/datum/reagent/toxin/acid,
|
||||
/datum/reagent/fuel,
|
||||
/datum/reagent/silver,
|
||||
/datum/reagent/iodine,
|
||||
/datum/reagent/bromine,
|
||||
/datum/reagent/stable_plasma
|
||||
)
|
||||
//these become available once upgraded.
|
||||
var/list/upgrade_reagents = list(
|
||||
"oil",
|
||||
"ammonia",
|
||||
"ash"
|
||||
/datum/reagent/oil,
|
||||
/datum/reagent/ammonia,
|
||||
/datum/reagent/ash
|
||||
)
|
||||
|
||||
var/list/upgrade_reagents2 = list(
|
||||
"acetone",
|
||||
"phenol",
|
||||
"diethylamine"
|
||||
/datum/reagent/acetone,
|
||||
/datum/reagent/phenol,
|
||||
/datum/reagent/diethylamine
|
||||
)
|
||||
|
||||
var/list/upgrade_reagents3 = list(
|
||||
"mine_salve",
|
||||
"toxin"
|
||||
/datum/reagent/medicine/mine_salve,
|
||||
/datum/reagent/toxin
|
||||
)
|
||||
|
||||
var/list/emagged_reagents = list(
|
||||
"space_drugs",
|
||||
"plasma",
|
||||
"frostoil",
|
||||
"carpotoxin",
|
||||
"histamine",
|
||||
"morphine"
|
||||
/datum/reagent/drug/space_drugs,
|
||||
/datum/reagent/toxin/plasma,
|
||||
/datum/reagent/consumable/frostoil,
|
||||
/datum/reagent/toxin/carpotoxin,
|
||||
/datum/reagent/toxin/histamine,
|
||||
/datum/reagent/medicine/morphine
|
||||
)
|
||||
|
||||
var/list/saved_recipes = list()
|
||||
|
||||
/obj/machinery/chem_dispenser/Initialize()
|
||||
. = ..()
|
||||
dispensable_reagents = sortList(dispensable_reagents)
|
||||
for(var/list/L in list(dispensable_reagents, emagged_reagents, upgrade_reagents, upgrade_reagents2, upgrade_reagents3))
|
||||
L = sortList(L, /proc/cmp_reagents_asc)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/chem_dispenser/Destroy()
|
||||
@@ -235,7 +249,7 @@
|
||||
if("dispense")
|
||||
if(!is_operational() || QDELETED(cell))
|
||||
return
|
||||
var/reagent = params["reagent"]
|
||||
var/reagent = GLOB.name2reagent[params["reagent"]]
|
||||
if(beaker && dispensable_reagents.Find(reagent))
|
||||
var/datum/reagents/R = beaker.reagents
|
||||
var/free = R.maximum_volume - R.total_volume
|
||||
@@ -267,7 +281,7 @@
|
||||
var/res = get_macro_resolution()
|
||||
for(var/key in chemicals_to_dispense) // i suppose you could edit the list locally before passing it
|
||||
var/list/keysplit = splittext(key," ")
|
||||
var/r_id = keysplit[1]
|
||||
var/r_id = GLOB.name2reagent[translate_legacy_chem_id(keysplit[1])]
|
||||
if(beaker && dispensable_reagents.Find(r_id)) // but since we verify we have the reagent, it'll be fine
|
||||
var/datum/reagents/R = beaker.reagents
|
||||
var/free = R.maximum_volume - R.total_volume
|
||||
@@ -299,7 +313,8 @@
|
||||
var/resmismatch = FALSE
|
||||
for(var/reagents in first_process)
|
||||
var/list/reagent = splittext(reagents, "=")
|
||||
if(dispensable_reagents.Find(reagent[1]))
|
||||
var/reagent_id = GLOB.name2reagent[translate_legacy_chem_id(reagent[1])]
|
||||
if(dispensable_reagents.Find(reagent_id))
|
||||
if (!resmismatch && !check_macro_part(reagents, res))
|
||||
resmismatch = TRUE
|
||||
continue
|
||||
@@ -475,45 +490,45 @@
|
||||
nopower_state = null
|
||||
pass_flags = PASSTABLE
|
||||
dispensable_reagents = list(
|
||||
"water",
|
||||
"ice",
|
||||
"coffee",
|
||||
"cream",
|
||||
"tea",
|
||||
"icetea",
|
||||
"cola",
|
||||
"spacemountainwind",
|
||||
"dr_gibb",
|
||||
"space_up",
|
||||
"tonic",
|
||||
"sodawater",
|
||||
"lemon_lime",
|
||||
"pwr_game",
|
||||
"shamblers",
|
||||
"sugar",
|
||||
"orangejuice",
|
||||
"grenadine",
|
||||
"limejuice",
|
||||
"tomatojuice",
|
||||
"lemonjuice",
|
||||
"menthol"
|
||||
/datum/reagent/water,
|
||||
/datum/reagent/consumable/ice,
|
||||
/datum/reagent/consumable/coffee,
|
||||
/datum/reagent/consumable/cream,
|
||||
/datum/reagent/consumable/tea,
|
||||
/datum/reagent/consumable/icetea,
|
||||
/datum/reagent/consumable/space_cola,
|
||||
/datum/reagent/consumable/spacemountainwind,
|
||||
/datum/reagent/consumable/dr_gibb,
|
||||
/datum/reagent/consumable/space_up,
|
||||
/datum/reagent/consumable/tonic,
|
||||
/datum/reagent/consumable/sodawater,
|
||||
/datum/reagent/consumable/lemon_lime,
|
||||
/datum/reagent/consumable/pwr_game,
|
||||
/datum/reagent/consumable/shamblers,
|
||||
/datum/reagent/consumable/sugar,
|
||||
/datum/reagent/consumable/orangejuice,
|
||||
/datum/reagent/consumable/grenadine,
|
||||
/datum/reagent/consumable/limejuice,
|
||||
/datum/reagent/consumable/tomatojuice,
|
||||
/datum/reagent/consumable/lemonjuice,
|
||||
/datum/reagent/consumable/menthol
|
||||
)
|
||||
upgrade_reagents = list(
|
||||
"mushroomhallucinogen",
|
||||
"nothing",
|
||||
"cryoxadone"
|
||||
/datum/reagent/drug/mushroomhallucinogen,
|
||||
/datum/reagent/consumable/nothing,
|
||||
/datum/reagent/medicine/cryoxadone
|
||||
)
|
||||
upgrade_reagents2 = list(
|
||||
"banana",
|
||||
"berryjuice"
|
||||
/datum/reagent/consumable/banana,
|
||||
/datum/reagent/consumable/berryjuice
|
||||
)
|
||||
upgrade_reagents3 = null
|
||||
emagged_reagents = list(
|
||||
"thirteenloko",
|
||||
"changelingsting",
|
||||
"whiskeycola",
|
||||
"mindbreaker",
|
||||
"tirizene"
|
||||
/datum/reagent/consumable/ethanol/thirteenloko,
|
||||
/datum/reagent/consumable/ethanol/changelingsting,
|
||||
/datum/reagent/consumable/ethanol/whiskey_cola,
|
||||
/datum/reagent/toxin/mindbreaker,
|
||||
/datum/reagent/toxin/staminatoxin
|
||||
)
|
||||
|
||||
|
||||
@@ -542,39 +557,39 @@
|
||||
icon_state = "booze_dispenser"
|
||||
circuit = /obj/item/circuitboard/machine/chem_dispenser/drinks/beer
|
||||
dispensable_reagents = list(
|
||||
"beer",
|
||||
"kahlua",
|
||||
"whiskey",
|
||||
"wine",
|
||||
"vodka",
|
||||
"gin",
|
||||
"rum",
|
||||
"tequila",
|
||||
"vermouth",
|
||||
"cognac",
|
||||
"ale",
|
||||
"absinthe",
|
||||
"hcider",
|
||||
"creme_de_menthe",
|
||||
"creme_de_cacao",
|
||||
"triple_sec",
|
||||
"sake",
|
||||
"applejack"
|
||||
/datum/reagent/consumable/ethanol/beer,
|
||||
/datum/reagent/consumable/ethanol/kahlua,
|
||||
/datum/reagent/consumable/ethanol/whiskey,
|
||||
/datum/reagent/consumable/ethanol/wine,
|
||||
/datum/reagent/consumable/ethanol/vodka,
|
||||
/datum/reagent/consumable/ethanol/gin,
|
||||
/datum/reagent/consumable/ethanol/rum,
|
||||
/datum/reagent/consumable/ethanol/tequila,
|
||||
/datum/reagent/consumable/ethanol/vermouth,
|
||||
/datum/reagent/consumable/ethanol/cognac,
|
||||
/datum/reagent/consumable/ethanol/ale,
|
||||
/datum/reagent/consumable/ethanol/absinthe,
|
||||
/datum/reagent/consumable/ethanol/hcider,
|
||||
/datum/reagent/consumable/ethanol/creme_de_menthe,
|
||||
/datum/reagent/consumable/ethanol/creme_de_cacao,
|
||||
/datum/reagent/consumable/ethanol/triple_sec,
|
||||
/datum/reagent/consumable/ethanol/sake,
|
||||
/datum/reagent/consumable/ethanol/applejack
|
||||
)
|
||||
upgrade_reagents = list(
|
||||
"ethanol",
|
||||
"fernet"
|
||||
/datum/reagent/consumable/ethanol,
|
||||
/datum/reagent/consumable/ethanol/fernet
|
||||
)
|
||||
upgrade_reagents2 = null
|
||||
upgrade_reagents3 = null
|
||||
emagged_reagents = list(
|
||||
"iron",
|
||||
"alexander",
|
||||
"clownstears",
|
||||
"minttoxin",
|
||||
"atomicbomb",
|
||||
"aphro",
|
||||
"aphro+"
|
||||
/datum/reagent/iron,
|
||||
/datum/reagent/consumable/ethanol/alexander,
|
||||
/datum/reagent/consumable/clownstears,
|
||||
/datum/reagent/toxin/minttoxin,
|
||||
/datum/reagent/consumable/ethanol/atomicbomb,
|
||||
/datum/reagent/drug/aphrodisiac,
|
||||
/datum/reagent/drug/aphrodisiacplus
|
||||
)
|
||||
|
||||
/obj/machinery/chem_dispenser/drinks/beer/fullupgrade //fully ugpraded stock parts, emagged
|
||||
@@ -598,9 +613,9 @@
|
||||
/obj/machinery/chem_dispenser/mutagen
|
||||
name = "mutagen dispenser"
|
||||
desc = "Creates and dispenses mutagen."
|
||||
dispensable_reagents = list("mutagen")
|
||||
dispensable_reagents = list(/datum/reagent/toxin/mutagen)
|
||||
upgrade_reagents = null
|
||||
emagged_reagents = list("plasma")
|
||||
emagged_reagents = list(/datum/reagent/toxin/plasma)
|
||||
|
||||
|
||||
/obj/machinery/chem_dispenser/mutagensaltpeter
|
||||
@@ -609,19 +624,19 @@
|
||||
flags_1 = NODECONSTRUCT_1
|
||||
|
||||
dispensable_reagents = list(
|
||||
"mutagen",
|
||||
"saltpetre",
|
||||
"eznutriment",
|
||||
"left4zednutriment",
|
||||
"robustharvestnutriment",
|
||||
"water",
|
||||
"plantbgone",
|
||||
"weedkiller",
|
||||
"pestkiller",
|
||||
"cryoxadone",
|
||||
"ammonia",
|
||||
"ash",
|
||||
"diethylamine")
|
||||
/datum/reagent/toxin/mutagen,
|
||||
/datum/reagent/saltpetre,
|
||||
/datum/reagent/plantnutriment/eznutriment,
|
||||
/datum/reagent/plantnutriment/left4zednutriment,
|
||||
/datum/reagent/plantnutriment/robustharvestnutriment,
|
||||
/datum/reagent/water,
|
||||
/datum/reagent/toxin/plantbgone,
|
||||
/datum/reagent/toxin/plantbgone/weedkiller,
|
||||
/datum/reagent/toxin/pestkiller,
|
||||
/datum/reagent/medicine/cryoxadone,
|
||||
/datum/reagent/ammonia,
|
||||
/datum/reagent/ash,
|
||||
/datum/reagent/diethylamine)
|
||||
//same as above.
|
||||
upgrade_reagents = null
|
||||
upgrade_reagents2 = null
|
||||
@@ -667,46 +682,46 @@
|
||||
working_state = null
|
||||
nopower_state = null
|
||||
dispensable_reagents = list(
|
||||
"hydrogen",
|
||||
"lithium",
|
||||
"carbon",
|
||||
"nitrogen",
|
||||
"oxygen",
|
||||
"fluorine",
|
||||
"sodium",
|
||||
"aluminium",
|
||||
"silicon",
|
||||
"phosphorus",
|
||||
"sulfur",
|
||||
"chlorine",
|
||||
"potassium",
|
||||
"iron",
|
||||
"copper",
|
||||
"mercury",
|
||||
"radium",
|
||||
"water",
|
||||
"ethanol",
|
||||
"sugar",
|
||||
"sacid",
|
||||
"welding_fuel",
|
||||
"silver",
|
||||
"iodine",
|
||||
"bromine",
|
||||
"stable_plasma",
|
||||
"oil",
|
||||
"ammonia",
|
||||
"ash",
|
||||
"acetone",
|
||||
"phenol",
|
||||
"diethylamine",
|
||||
"mine_salve",
|
||||
"toxin",
|
||||
"space_drugs",
|
||||
"plasma",
|
||||
"frostoil",
|
||||
"uranium",
|
||||
"histamine",
|
||||
"morphine"
|
||||
/datum/reagent/hydrogen,
|
||||
/datum/reagent/lithium,
|
||||
/datum/reagent/carbon,
|
||||
/datum/reagent/nitrogen,
|
||||
/datum/reagent/oxygen,
|
||||
/datum/reagent/fluorine,
|
||||
/datum/reagent/sodium,
|
||||
/datum/reagent/aluminium,
|
||||
/datum/reagent/silicon,
|
||||
/datum/reagent/phosphorus,
|
||||
/datum/reagent/sulfur,
|
||||
/datum/reagent/chlorine,
|
||||
/datum/reagent/potassium,
|
||||
/datum/reagent/iron,
|
||||
/datum/reagent/copper,
|
||||
/datum/reagent/mercury,
|
||||
/datum/reagent/radium,
|
||||
/datum/reagent/water,
|
||||
/datum/reagent/consumable/ethanol,
|
||||
/datum/reagent/consumable/sugar,
|
||||
/datum/reagent/toxin/acid,
|
||||
/datum/reagent/fuel,
|
||||
/datum/reagent/silver,
|
||||
/datum/reagent/iodine,
|
||||
/datum/reagent/bromine,
|
||||
/datum/reagent/stable_plasma,
|
||||
/datum/reagent/oil,
|
||||
/datum/reagent/ammonia,
|
||||
/datum/reagent/ash,
|
||||
/datum/reagent/acetone,
|
||||
/datum/reagent/phenol,
|
||||
/datum/reagent/diethylamine,
|
||||
/datum/reagent/medicine/mine_salve,
|
||||
/datum/reagent/toxin,
|
||||
/datum/reagent/drug/space_drugs,
|
||||
/datum/reagent/toxin/plasma,
|
||||
/datum/reagent/consumable/frostoil,
|
||||
/datum/reagent/uranium,
|
||||
/datum/reagent/toxin/histamine,
|
||||
/datum/reagent/medicine/morphine
|
||||
)
|
||||
|
||||
/obj/machinery/chem_dispenser/abductor/Initialize()
|
||||
@@ -719,4 +734,4 @@
|
||||
component_parts += new /obj/item/stock_parts/manipulator/femto(null)
|
||||
component_parts += new /obj/item/stack/sheet/glass(null)
|
||||
component_parts += new /obj/item/stock_parts/cell/bluespace(null)
|
||||
RefreshParts()
|
||||
RefreshParts()
|
||||
|
||||
@@ -214,34 +214,34 @@
|
||||
|
||||
if("transferToBuffer")
|
||||
if(beaker)
|
||||
var/id = params["id"]
|
||||
var/reagent = GLOB.name2reagent[params["id"]]
|
||||
var/amount = text2num(params["amount"])
|
||||
if (amount > 0)
|
||||
end_fermi_reaction()
|
||||
beaker.reagents.trans_id_to(src, id, amount)
|
||||
beaker.reagents.trans_id_to(src, reagent, amount)
|
||||
. = TRUE
|
||||
else if (amount == -1) // -1 means custom amount
|
||||
useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null
|
||||
if (useramount > 0)
|
||||
end_fermi_reaction()
|
||||
beaker.reagents.trans_id_to(src, id, useramount)
|
||||
beaker.reagents.trans_id_to(src, reagent, useramount)
|
||||
. = TRUE
|
||||
|
||||
if("transferFromBuffer")
|
||||
var/id = params["id"]
|
||||
var/reagent = GLOB.name2reagent[params["id"]]
|
||||
var/amount = text2num(params["amount"])
|
||||
if (amount > 0)
|
||||
if(mode)
|
||||
reagents.trans_id_to(beaker, id, amount)
|
||||
reagents.trans_id_to(beaker, reagent, amount)
|
||||
. = TRUE
|
||||
else
|
||||
reagents.remove_reagent(id, amount)
|
||||
reagents.remove_reagent(reagent, amount)
|
||||
. = TRUE
|
||||
else if (amount == -1) // -1 means custom amount
|
||||
useramount = input("Enter the Amount you want to transfer:", name, useramount) as num|null
|
||||
if (useramount > 0)
|
||||
end_fermi_reaction()
|
||||
reagents.trans_id_to(beaker, id, useramount)
|
||||
reagents.trans_id_to(beaker, reagent, useramount)
|
||||
. = TRUE
|
||||
|
||||
if("toggleMode")
|
||||
@@ -423,7 +423,7 @@
|
||||
|
||||
//END CITADEL ADDITIONS
|
||||
if("analyzeBeak")
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]]
|
||||
var/datum/reagent/R = GLOB.name2reagent[params["id"]]
|
||||
if(R)
|
||||
var/state = "Unknown"
|
||||
if(initial(R.reagent_state) == 1)
|
||||
@@ -434,11 +434,11 @@
|
||||
state = "Gas"
|
||||
var/const/P = 3 //The number of seconds between life ticks
|
||||
var/T = initial(R.metabolization_rate) * (60 / P)
|
||||
var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id)
|
||||
var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.type)
|
||||
if(Rcr && Rcr.FermiChem)
|
||||
fermianalyze = TRUE
|
||||
var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2
|
||||
var/datum/reagent/targetReagent = beaker.reagents.has_reagent("[R.id]")
|
||||
var/datum/reagent/targetReagent = beaker.reagents.has_reagent(R.type)
|
||||
|
||||
if(!targetReagent)
|
||||
CRASH("Tried to find a reagent that doesn't exist in the chem_master!")
|
||||
@@ -450,7 +450,7 @@
|
||||
return
|
||||
|
||||
if("analyzeBuff")
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[params["id"]]
|
||||
var/datum/reagent/R = GLOB.name2reagent[params["id"]]
|
||||
if(R)
|
||||
var/state = "Unknown"
|
||||
if(initial(R.reagent_state) == 1)
|
||||
@@ -463,9 +463,9 @@
|
||||
var/T = initial(R.metabolization_rate) * (60 / P)
|
||||
if(istype(R, /datum/reagent/fermi))
|
||||
fermianalyze = TRUE
|
||||
var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id)
|
||||
var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.type)
|
||||
var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2
|
||||
var/datum/reagent/targetReagent = reagents.has_reagent("[R.id]")
|
||||
var/datum/reagent/targetReagent = reagents.has_reagent(R.type)
|
||||
|
||||
if(!targetReagent)
|
||||
CRASH("Tried to find a reagent that doesn't exist in the chem_master!")
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
flags_1 = NODECONSTRUCT_1
|
||||
use_power = NO_POWER_USE
|
||||
var/static/list/shortcuts = list(
|
||||
"meth" = "methamphetamine",
|
||||
"tricord" = "tricordrazine"
|
||||
"meth" = /datum/reagent/drug/methamphetamine,
|
||||
"tricord" = /datum/reagent/medicine/tricordrazine
|
||||
)
|
||||
|
||||
/obj/machinery/chem_dispenser/chem_synthesizer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
|
||||
@@ -31,13 +31,13 @@
|
||||
beaker = null
|
||||
. = TRUE
|
||||
if("input")
|
||||
var/input_reagent = replacetext(lowertext(input("Enter the name of any liquid", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name
|
||||
var/input_reagent = replacetext(lowertext(input("Enter the name of any reagent", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name
|
||||
if(shortcuts[input_reagent])
|
||||
input_reagent = shortcuts[input_reagent]
|
||||
else
|
||||
input_reagent = find_reagent(input_reagent)
|
||||
if(!input_reagent || !GLOB.chemical_reagents_list[input_reagent])
|
||||
say("OUT OF RANGE")
|
||||
if(!input_reagent)
|
||||
say("REAGENT NOT FOUND")
|
||||
return
|
||||
else
|
||||
if(!beaker)
|
||||
|
||||
@@ -144,9 +144,9 @@
|
||||
var/datum/reagent/blood/B = locate() in beaker.reagents.reagent_list
|
||||
if(B)
|
||||
data["has_blood"] = TRUE
|
||||
data["blood"] = list()
|
||||
data["blood"]["dna"] = B.data["blood_DNA"] || "none"
|
||||
data["blood"]["type"] = B.data["blood_type"] || "none"
|
||||
data[/datum/reagent/blood] = list()
|
||||
data[/datum/reagent/blood]["dna"] = B.data["blood_DNA"] || "none"
|
||||
data[/datum/reagent/blood]["type"] = B.data["blood_type"] || "none"
|
||||
data["viruses"] = get_viruses_data(B)
|
||||
data["resistances"] = get_resistance_data(B)
|
||||
if(SYMPTOM_DETAILS)
|
||||
@@ -192,7 +192,7 @@
|
||||
var/obj/item/reagent_containers/glass/bottle/B = new(drop_location())
|
||||
B.name = "[A.name] culture bottle"
|
||||
B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium."
|
||||
B.reagents.add_reagent("blood", 20, data)
|
||||
B.reagents.add_reagent(/datum/reagent/blood, 20, data)
|
||||
wait = TRUE
|
||||
update_icon()
|
||||
var/turf/source_turf = get_turf(src)
|
||||
@@ -204,7 +204,7 @@
|
||||
var/datum/disease/D = SSdisease.archive_diseases[id]
|
||||
var/obj/item/reagent_containers/glass/bottle/B = new(drop_location())
|
||||
B.name = "[D.name] vaccine bottle"
|
||||
B.reagents.add_reagent("vaccine", 15, list(id))
|
||||
B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id))
|
||||
wait = TRUE
|
||||
update_icon()
|
||||
addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 200)
|
||||
|
||||
@@ -299,18 +299,18 @@
|
||||
/obj/machinery/reagentgrinder/proc/mix_complete()
|
||||
if(beaker?.reagents.total_volume)
|
||||
//Recipe to make Butter
|
||||
var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount("milk") / MILK_TO_BUTTER_COEFF, 1)
|
||||
beaker.reagents.remove_reagent("milk", MILK_TO_BUTTER_COEFF * butter_amt)
|
||||
var/butter_amt = FLOOR(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/milk) / MILK_TO_BUTTER_COEFF, 1)
|
||||
beaker.reagents.remove_reagent(/datum/reagent/consumable/milk, MILK_TO_BUTTER_COEFF * butter_amt)
|
||||
for(var/i in 1 to butter_amt)
|
||||
new /obj/item/reagent_containers/food/snacks/butter(drop_location())
|
||||
//Recipe to make Mayonnaise
|
||||
if (beaker.reagents.has_reagent("eggyolk"))
|
||||
var/amount = beaker.reagents.get_reagent_amount("eggyolk")
|
||||
beaker.reagents.remove_reagent("eggyolk", amount)
|
||||
beaker.reagents.add_reagent("mayonnaise", amount)
|
||||
if (beaker.reagents.has_reagent(/datum/reagent/consumable/eggyolk))
|
||||
var/amount = beaker.reagents.get_reagent_amount(/datum/reagent/consumable/eggyolk)
|
||||
beaker.reagents.remove_reagent(/datum/reagent/consumable/eggyolk, amount)
|
||||
beaker.reagents.add_reagent(/datum/reagent/consumable/mayonnaise, amount)
|
||||
//Moonsugar for skooma
|
||||
if(beaker.reagents.has_reagent("sugar") && beaker.reagents.has_reagent("moonshine"))
|
||||
var/amount = min(beaker.reagents.get_reagent_amount("sugar"), beaker.reagents.get_reagent_amount("moonshine"))
|
||||
beaker.reagents.remove_reagent("sugar", amount)
|
||||
beaker.reagents.remove_reagent("moonshine", amount)
|
||||
beaker.reagents.add_reagent("moonsugar", amount*2)
|
||||
if(beaker.reagents.has_reagent(/datum/reagent/consumable/sugar) && beaker.reagents.has_reagent(/datum/reagent/consumable/ethanol/moonshine))
|
||||
var/amount = min(beaker.reagents.get_reagent_amount(/datum/reagent/consumable/sugar), beaker.reagents.get_reagent_amount(/datum/reagent/consumable/ethanol/moonshine))
|
||||
beaker.reagents.remove_reagent(/datum/reagent/consumable/sugar, amount)
|
||||
beaker.reagents.remove_reagent(/datum/reagent/consumable/ethanol/moonshine, amount)
|
||||
beaker.reagents.add_reagent(/datum/reagent/moonsugar, amount*2)
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
#define REM REAGENTS_EFFECT_MULTIPLIER
|
||||
|
||||
GLOBAL_LIST_INIT(name2reagent, build_name2reagent())
|
||||
|
||||
/proc/build_name2reagent()
|
||||
. = list()
|
||||
for (var/t in subtypesof(/datum/reagent))
|
||||
var/datum/reagent/R = t
|
||||
if (length(initial(R.name)))
|
||||
.[ckey(initial(R.name))] = t
|
||||
|
||||
//Various reagents
|
||||
//Toxin & acid reagents
|
||||
//Hydroponics stuff
|
||||
@@ -58,7 +67,7 @@
|
||||
var/modifier = CLAMP((1 - touch_protection), 0, 1)
|
||||
var/amount = round(reac_volume*modifier, 0.1)
|
||||
if(amount >= 0.5)
|
||||
M.reagents.add_reagent(id, amount)
|
||||
M.reagents.add_reagent(type, amount)
|
||||
return 1
|
||||
|
||||
/datum/reagent/proc/reaction_obj(obj/O, volume)
|
||||
@@ -70,7 +79,7 @@
|
||||
/datum/reagent/proc/on_mob_life(mob/living/carbon/M)
|
||||
current_cycle++
|
||||
if(holder)
|
||||
holder.remove_reagent(src.id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
|
||||
holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
|
||||
return
|
||||
|
||||
//called when a mob processes chems when dead.
|
||||
@@ -79,7 +88,7 @@
|
||||
return
|
||||
current_cycle++
|
||||
if(holder)
|
||||
holder.remove_reagent(src.id, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
|
||||
holder.remove_reagent(type, metabolization_rate * M.metabolism_efficiency) //By default it slowly disappears.
|
||||
return
|
||||
|
||||
// Called when this reagent is first added to a mob
|
||||
@@ -98,9 +107,9 @@
|
||||
return
|
||||
|
||||
if ((inverse_chem_val > purity) && (inverse_chem))//Turns all of a added reagent into the inverse chem
|
||||
M.reagents.remove_reagent(id, amount, FALSE)
|
||||
M.reagents.remove_reagent(type, amount, FALSE)
|
||||
M.reagents.add_reagent(inverse_chem, amount, FALSE, other_purity = 1-cached_purity)
|
||||
var/datum/reagent/R = M.reagents.has_reagent("[inverse_chem]")
|
||||
var/datum/reagent/R = M.reagents.has_reagent(inverse_chem)
|
||||
if(R.chemical_flags & REAGENT_SNEAKYNAME)
|
||||
R.name = name//Negative effects are hidden
|
||||
if(R.chemical_flags & REAGENT_INVISIBLE)
|
||||
@@ -110,7 +119,7 @@
|
||||
else if (impure_chem)
|
||||
var/impureVol = amount * (1 - purity) //turns impure ratio into impure chem
|
||||
if(!(chemical_flags & REAGENT_SPLITRETAINVOL))
|
||||
M.reagents.remove_reagent(id, (impureVol), FALSE)
|
||||
M.reagents.remove_reagent(type, (impureVol), FALSE)
|
||||
M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity)
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [id]")
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [impure_chem]")
|
||||
@@ -149,9 +158,9 @@
|
||||
return
|
||||
|
||||
if ((inverse_chem_val > purity) && (inverse_chem)) //INVERT
|
||||
M.reagents.remove_reagent(id, amount, FALSE)
|
||||
M.reagents.remove_reagent(type, amount, FALSE)
|
||||
M.reagents.add_reagent(inverse_chem, amount, FALSE, other_purity = 1-cached_purity)
|
||||
var/datum/reagent/R = M.reagents.has_reagent("[inverse_chem]")
|
||||
var/datum/reagent/R = M.reagents.has_reagent(inverse_chem)
|
||||
if(R.chemical_flags & REAGENT_SNEAKYNAME)
|
||||
R.name = name//Negative effects are hidden
|
||||
if(R.chemical_flags & REAGENT_INVISIBLE)
|
||||
@@ -161,7 +170,7 @@
|
||||
else if (impure_chem) //SPLIT
|
||||
var/impureVol = amount * (1 - purity)
|
||||
if(!(chemical_flags & REAGENT_SPLITRETAINVOL))
|
||||
M.reagents.remove_reagent(id, impureVol, FALSE)
|
||||
M.reagents.remove_reagent(type, impureVol, FALSE)
|
||||
M.reagents.add_reagent(impure_chem, impureVol, FALSE, other_purity = 1-cached_purity)
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [id]")
|
||||
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [impure_chem]")
|
||||
|
||||
@@ -662,7 +662,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
|
||||
/datum/reagent/consumable/ethanol/tequila_sunrise/on_mob_life(mob/living/carbon/M)
|
||||
if(QDELETED(light_holder))
|
||||
M.reagents.del_reagent("tequilasunrise") //If we lost our light object somehow, remove the reagent
|
||||
M.reagents.del_reagent(type) //If we lost our light object somehow, remove the reagent
|
||||
else if(light_holder.loc != M)
|
||||
light_holder.forceMove(M)
|
||||
return ..()
|
||||
@@ -1456,9 +1456,9 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_name = "Neurotoxin"
|
||||
glass_desc = "A drink that is guaranteed to knock you silly."
|
||||
//SplitChem = TRUE
|
||||
impure_chem = "neuroweak"
|
||||
impure_chem = /datum/reagent/consumable/ethanol/neuroweak
|
||||
inverse_chem_val = 0.5 //Clear conversion
|
||||
inverse_chem = "neuroweak"
|
||||
inverse_chem = /datum/reagent/consumable/ethanol/neuroweak
|
||||
value = 4
|
||||
|
||||
/datum/reagent/consumable/ethanol/neurotoxin/proc/pickt()
|
||||
@@ -1468,12 +1468,12 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
M.set_drugginess(50)
|
||||
M.dizziness +=2
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1*REM, 150)
|
||||
if(prob(20) && !holder.has_reagent("neuroweak"))
|
||||
if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak))
|
||||
M.adjustStaminaLoss(10)
|
||||
M.drop_all_held_items()
|
||||
to_chat(M, "<span class='notice'>You cant feel your hands!</span>")
|
||||
if(current_cycle > 5)
|
||||
if(prob(20) && !holder.has_reagent("neuroweak"))
|
||||
if(prob(20) && !holder.has_reagent(/datum/reagent/consumable/ethanol/neuroweak))
|
||||
var/t = pickt()
|
||||
ADD_TRAIT(M, t, type)
|
||||
M.adjustStaminaLoss(10)
|
||||
@@ -1504,12 +1504,12 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
value = 3
|
||||
|
||||
/datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M)
|
||||
if(holder.has_reagent("neurotoxin"))
|
||||
if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin))
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150)
|
||||
M.reagents.remove_reagent("neurotoxin", 1.5 * REAGENTS_METABOLISM, FALSE)
|
||||
if(holder.has_reagent("fentanyl"))
|
||||
M.reagents.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 1.5 * REAGENTS_METABOLISM, FALSE)
|
||||
else if(holder.has_reagent(/datum/reagent/toxin/fentanyl))
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -1*REM, 150)
|
||||
M.reagents.remove_reagent("fentanyl", 0.75 * REAGENTS_METABOLISM, FALSE)
|
||||
M.reagents.remove_reagent(/datum/reagent/toxin/fentanyl, 0.75 * REAGENTS_METABOLISM, FALSE)
|
||||
else
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, -0.5*REM, 150)
|
||||
M.dizziness +=2
|
||||
@@ -1862,7 +1862,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
/datum/reagent/consumable/ethanol/alexander/on_mob_life(mob/living/L)
|
||||
..()
|
||||
if(mighty_shield && !(mighty_shield in L.contents)) //If you had a shield and lose it, you lose the reagent as well. Otherwise this is just a normal drink.
|
||||
L.reagents.del_reagent("alexander")
|
||||
L.reagents.del_reagent(type)
|
||||
|
||||
/datum/reagent/consumable/ethanol/alexander/on_mob_end_metabolize(mob/living/L)
|
||||
if(mighty_shield)
|
||||
|
||||
@@ -195,8 +195,8 @@
|
||||
reac_volume = ..()
|
||||
M.adjust_drugginess(reac_volume)
|
||||
if(M.reagents)
|
||||
M.reagents.add_reagent("regenerative_materia", 0.2*reac_volume)
|
||||
M.reagents.add_reagent("spore", 0.2*reac_volume)
|
||||
M.reagents.add_reagent(/datum/reagent/blob/regenerative_materia, 0.2*reac_volume)
|
||||
M.reagents.add_reagent(/datum/reagent/toxin/spore, 0.2*reac_volume)
|
||||
M.apply_damage(0.7*reac_volume, TOX)
|
||||
|
||||
/datum/reagent/blob/regenerative_materia/on_mob_life(mob/living/carbon/C)
|
||||
@@ -339,9 +339,9 @@
|
||||
/datum/reagent/blob/cryogenic_poison/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O)
|
||||
reac_volume = ..()
|
||||
if(M.reagents)
|
||||
M.reagents.add_reagent("frostoil", 0.3*reac_volume)
|
||||
M.reagents.add_reagent("ice", 0.3*reac_volume)
|
||||
M.reagents.add_reagent("cryogenic_poison", 0.3*reac_volume)
|
||||
M.reagents.add_reagent(/datum/reagent/consumable/frostoil, 0.3*reac_volume)
|
||||
M.reagents.add_reagent(/datum/reagent/consumable/ice, 0.3*reac_volume)
|
||||
M.reagents.add_reagent(/datum/reagent/blob/cryogenic_poison, 0.3*reac_volume)
|
||||
M.apply_damage(0.2*reac_volume, BRUTE)
|
||||
|
||||
/datum/reagent/blob/cryogenic_poison/on_mob_life(mob/living/carbon/M)
|
||||
|
||||
@@ -227,8 +227,8 @@
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
M.heal_bodypart_damage(1,0, 0)
|
||||
. = 1
|
||||
if(holder.has_reagent("capsaicin"))
|
||||
holder.remove_reagent("capsaicin", 2)
|
||||
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
|
||||
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 2)
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/soymilk
|
||||
@@ -285,8 +285,8 @@
|
||||
M.AdjustSleeping(-40, FALSE)
|
||||
//310.15 is the normal bodytemp.
|
||||
M.adjust_bodytemperature(25 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL)
|
||||
if(holder.has_reagent("frostoil"))
|
||||
holder.remove_reagent("frostoil", 5)
|
||||
if(holder.has_reagent(/datum/reagent/consumable/frostoil))
|
||||
holder.remove_reagent(/datum/reagent/consumable/frostoil, 5)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
@@ -523,9 +523,9 @@
|
||||
glass_desc = "Stinging with flavour."
|
||||
|
||||
/datum/reagent/consumable/buzz_fuzz/on_mob_life(mob/living/carbon/M)
|
||||
M.reagents.add_reagent("sugar",1)
|
||||
M.reagents.add_reagent(/datum/reagent/consumable/sugar,1)
|
||||
if(prob(5))
|
||||
M.reagents.add_reagent("honey",1)
|
||||
M.reagents.add_reagent(/datum/reagent/consumable/honey,1)
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/buzz_fuzz/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
/datum/reagent/consumable/on_mob_life(mob/living/carbon/M)
|
||||
current_cycle++
|
||||
M.nutrition += nutriment_factor
|
||||
holder.remove_reagent(src.id, metabolization_rate)
|
||||
holder.remove_reagent(type, metabolization_rate)
|
||||
|
||||
/datum/reagent/consumable/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(method == INGEST)
|
||||
@@ -121,7 +121,7 @@
|
||||
O.loc.visible_message("<span class='warning'>[O] rapidly fries as it's splashed with hot oil! Somehow.</span>")
|
||||
var/obj/item/reagent_containers/food/snacks/deepfryholder/F = new(O.drop_location(), O)
|
||||
F.fry(volume)
|
||||
F.reagents.add_reagent("cooking_oil", reac_volume)
|
||||
F.reagents.add_reagent(/datum/reagent/consumable/cooking_oil, reac_volume)
|
||||
|
||||
/datum/reagent/consumable/cooking_oil/reaction_mob(mob/living/M, method = TOUCH, reac_volume, show_message = 1, touch_protection = 0)
|
||||
if(!istype(M))
|
||||
@@ -216,8 +216,8 @@
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
heating = 5 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(holder.has_reagent("cryostylane"))
|
||||
holder.remove_reagent("cryostylane", 5)
|
||||
if(holder.has_reagent(/datum/reagent/cryostylane))
|
||||
holder.remove_reagent(/datum/reagent/cryostylane, 5)
|
||||
if(isslime(M))
|
||||
heating = rand(5,20)
|
||||
if(15 to 25)
|
||||
@@ -249,8 +249,8 @@
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
cooling = -10 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(holder.has_reagent("capsaicin"))
|
||||
holder.remove_reagent("capsaicin", 5)
|
||||
if(holder.has_reagent(/datum/reagent/consumable/capsaicin))
|
||||
holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5)
|
||||
if(isslime(M))
|
||||
cooling = -rand(5,20)
|
||||
if(15 to 25)
|
||||
@@ -538,7 +538,7 @@
|
||||
var/obj/effect/decal/cleanable/flour/reagentdecal = new/obj/effect/decal/cleanable/flour(T)
|
||||
reagentdecal = locate() in T //Might have merged with flour already there.
|
||||
if(reagentdecal)
|
||||
reagentdecal.reagents.add_reagent("flour", reac_volume)
|
||||
reagentdecal.reagents.add_reagent(/datum/reagent/consumable/flour, reac_volume)
|
||||
|
||||
/datum/reagent/consumable/cherryjelly
|
||||
name = "Cherry Jelly"
|
||||
@@ -603,7 +603,7 @@
|
||||
taste_description = "sweet slime"
|
||||
|
||||
/datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/carbon/M)
|
||||
holder.add_reagent("sugar", 3)
|
||||
holder.add_reagent(/datum/reagent/consumable/sugar, 3)
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/honey
|
||||
@@ -617,7 +617,7 @@
|
||||
taste_description = "sweetness"
|
||||
|
||||
/datum/reagent/consumable/honey/on_mob_life(mob/living/carbon/M)
|
||||
M.reagents.add_reagent("sugar",3)
|
||||
M.reagents.add_reagent(/datum/reagent/consumable/sugar,3)
|
||||
if(prob(55))
|
||||
M.adjustBruteLoss(-1*REM, 0)
|
||||
M.adjustFireLoss(-1*REM, 0)
|
||||
@@ -767,7 +767,7 @@
|
||||
/* //We don't have ethereals here, so I'll just comment it out.
|
||||
/datum/reagent/consumable/liquidelectricity/reaction_mob(mob/living/M, method=TOUCH, reac_volume) //can't be on life because of the way blood works.
|
||||
if((method == INGEST || method == INJECT || method == PATCH) && iscarbon(M))
|
||||
|
||||
|
||||
var/mob/living/carbon/C = M
|
||||
var/obj/item/organ/stomach/ethereal/stomach = C.getorganslot(ORGAN_SLOT_STOMACH)
|
||||
if(istype(stomach))
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/datum/reagent/medicine/on_mob_life(mob/living/carbon/M)
|
||||
current_cycle++
|
||||
holder.remove_reagent(src.id, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism
|
||||
holder.remove_reagent(type, metabolization_rate / M.metabolism_efficiency) //medicine reagents stay longer if you have a better metabolism
|
||||
|
||||
/datum/reagent/medicine/leporazine
|
||||
name = "Leporazine"
|
||||
@@ -95,8 +95,8 @@
|
||||
M.AdjustStun(-20, 0)
|
||||
M.AdjustKnockdown(-20, 0)
|
||||
M.AdjustUnconscious(-20, 0)
|
||||
if(holder.has_reagent("mindbreaker"))
|
||||
holder.remove_reagent("mindbreaker", 5)
|
||||
if(holder.has_reagent(/datum/reagent/toxin/mindbreaker))
|
||||
holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5)
|
||||
M.hallucination = max(0, M.hallucination - 10)
|
||||
if(prob(30))
|
||||
M.adjustToxLoss(1, 0)
|
||||
@@ -112,10 +112,10 @@
|
||||
|
||||
/datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/carbon/M)
|
||||
M.drowsyness = max(M.drowsyness-5, 0)
|
||||
if(holder.has_reagent("mindbreaker"))
|
||||
holder.remove_reagent("mindbreaker", 5)
|
||||
if(holder.has_reagent("histamine"))
|
||||
holder.remove_reagent("histamine", 5)
|
||||
if(holder.has_reagent(/datum/reagent/toxin/mindbreaker))
|
||||
holder.remove_reagent(/datum/reagent/toxin/mindbreaker, 5)
|
||||
if(holder.has_reagent(/datum/reagent/toxin/histamine))
|
||||
holder.remove_reagent(/datum/reagent/toxin/histamine, 5)
|
||||
M.hallucination = max(0, M.hallucination - 10)
|
||||
if(prob(30))
|
||||
M.adjustToxLoss(1, 0)
|
||||
@@ -374,12 +374,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
/datum/reagent/medicine/salglu_solution/overdose_process(mob/living/M)
|
||||
if(prob(3))
|
||||
to_chat(M, "<span class = 'warning'>You feel salty.</span>")
|
||||
holder.add_reagent("sodiumchloride", 1)
|
||||
holder.remove_reagent("salglu_solution", 0.5)
|
||||
holder.add_reagent(/datum/reagent/consumable/sodiumchloride, 1)
|
||||
holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5)
|
||||
else if(prob(3))
|
||||
to_chat(M, "<span class = 'warning'>You feel sweet.</span>")
|
||||
holder.add_reagent("sugar", 1)
|
||||
holder.remove_reagent("salglu_solution", 0.5)
|
||||
holder.add_reagent(/datum/reagent/consumable/sugar, 1)
|
||||
holder.remove_reagent(/datum/reagent/medicine/salglu_solution, 0.5)
|
||||
if(prob(33))
|
||||
M.adjustBruteLoss(0.5*REM, 0)
|
||||
M.adjustFireLoss(0.5*REM, 0)
|
||||
@@ -473,9 +473,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
/datum/reagent/medicine/charcoal/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustToxLoss(-2*REM, 0)
|
||||
. = 1
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
for(var/A in M.reagents.reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,1)
|
||||
M.reagents.remove_reagent(R.type,1)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/omnizine
|
||||
@@ -516,9 +517,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
pH = 1.5
|
||||
|
||||
/datum/reagent/medicine/calomel/on_mob_life(mob/living/carbon/M)
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
for(var/A in M.reagents.reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,2.5)
|
||||
M.reagents.remove_reagent(R.type,2.5)
|
||||
if(M.health > 20)
|
||||
M.adjustToxLoss(2.5*REM, 0)
|
||||
. = 1
|
||||
@@ -565,9 +567,10 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
/datum/reagent/medicine/pen_acid/on_mob_life(mob/living/carbon/M)
|
||||
M.radiation -= max(M.radiation-RAD_MOB_SAFE, 0)/50
|
||||
M.adjustToxLoss(-2*REM, 0, healtoxinlover)
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
for(var/A in M.reagents.reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,2)
|
||||
M.reagents.remove_reagent(R.type,2)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
@@ -708,7 +711,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
if(prob(10))
|
||||
M.drowsyness += 1
|
||||
M.jitteriness -= 1
|
||||
M.reagents.remove_reagent("histamine",3)
|
||||
M.reagents.remove_reagent(/datum/reagent/toxin/histamine,3)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/morphine
|
||||
@@ -966,8 +969,8 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
|
||||
|
||||
/datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/C)
|
||||
if(holder.has_reagent("neurotoxin"))
|
||||
holder.remove_reagent("neurotoxin", 5)
|
||||
if(holder.has_reagent(/datum/reagent/consumable/ethanol/neurotoxin))
|
||||
holder.remove_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 5)
|
||||
if(prob(15))
|
||||
C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC)
|
||||
..()
|
||||
@@ -1058,7 +1061,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
/datum/reagent/medicine/insulin/on_mob_life(mob/living/carbon/M)
|
||||
if(M.AdjustSleeping(-20, FALSE))
|
||||
. = 1
|
||||
M.reagents.remove_reagent("sugar", 3)
|
||||
M.reagents.remove_reagent(/datum/reagent/consumable/sugar, 3)
|
||||
..()
|
||||
|
||||
//Trek Chems, used primarily by medibots. Only heals a specific damage type, but is very efficient.
|
||||
@@ -1132,7 +1135,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
/datum/reagent/medicine/antitoxin/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustToxLoss(-2*REM, 0)
|
||||
for(var/datum/reagent/toxin/R in M.reagents.reagent_list)
|
||||
M.reagents.remove_reagent(R.id,1)
|
||||
M.reagents.remove_reagent(R.type,1)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
@@ -1302,7 +1305,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
|
||||
/datum/reagent/medicine/haloperidol/on_mob_life(mob/living/carbon/M)
|
||||
for(var/datum/reagent/drug/R in M.reagents.reagent_list)
|
||||
M.reagents.remove_reagent(R.id,5)
|
||||
M.reagents.remove_reagent(R.type,5)
|
||||
M.drowsyness += 2
|
||||
if(M.jitteriness >= 3)
|
||||
M.jitteriness -= 3
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
if(data["blood_DNA"])
|
||||
B.blood_DNA[data["blood_DNA"]] = data["blood_type"]
|
||||
if(!B.reagents)
|
||||
B.reagents.add_reagent(id, reac_volume)
|
||||
B.reagents.add_reagent(type, reac_volume)
|
||||
B.update_icon()
|
||||
|
||||
/datum/reagent/blood/on_new(list/data)
|
||||
@@ -392,9 +392,9 @@
|
||||
remove_servant_of_ratvar(M)
|
||||
M.jitteriness = 0
|
||||
M.stuttering = 0
|
||||
holder.remove_reagent(id, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better??
|
||||
holder.del_reagent(type) // maybe this is a little too perfect and a max() cap on the statuses would be better??
|
||||
return
|
||||
holder.remove_reagent(id, 0.4) //fixed consumption to prevent balancing going out of whack
|
||||
holder.remove_reagent(type, 0.4) //fixed consumption to prevent balancing going out of whack
|
||||
|
||||
/datum/reagent/water/holywater/reaction_turf(turf/T, reac_volume)
|
||||
..()
|
||||
@@ -414,7 +414,7 @@
|
||||
|
||||
/datum/reagent/fuel/unholywater/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(method == TOUCH || method == VAPOR)
|
||||
M.reagents.add_reagent(id,reac_volume/4)
|
||||
M.reagents.add_reagent(type, reac_volume/4)
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -437,7 +437,7 @@
|
||||
M.adjustFireLoss(2, 0)
|
||||
M.adjustOxyLoss(2, 0)
|
||||
M.adjustBruteLoss(2, 0)
|
||||
holder.remove_reagent(id, 1)
|
||||
holder.remove_reagent(type, 1)
|
||||
return TRUE
|
||||
|
||||
/datum/reagent/hellwater //if someone has this in their system they've really pissed off an eldrich god
|
||||
@@ -452,7 +452,7 @@
|
||||
M.adjustToxLoss(1, 0)
|
||||
M.adjustFireLoss(1, 0) //Hence the other damages... ain't I a bastard?
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 150)
|
||||
holder.remove_reagent(id, 1)
|
||||
holder.remove_reagent(type, 1)
|
||||
pH = 0.1
|
||||
|
||||
/datum/reagent/fuel/holyoil //Its oil
|
||||
@@ -481,7 +481,7 @@
|
||||
M.adjustToxLoss(3, 0)
|
||||
M.adjustOxyLoss(2, 0)
|
||||
M.adjustStaminaLoss(10, 0)
|
||||
holder.remove_reagent(id, 1)
|
||||
holder.remove_reagent(type, 1)
|
||||
return TRUE
|
||||
|
||||
//We only get 30u to start with...
|
||||
@@ -815,7 +815,7 @@
|
||||
to_chat(H, "<span class='warning'>Your jelly shifts and morphs, turning you into another subspecies!</span>")
|
||||
var/species_type = pick(subtypesof(/datum/species/jelly))
|
||||
H.set_species(species_type)
|
||||
H.reagents.del_reagent(id)
|
||||
H.reagents.del_reagent(type)
|
||||
|
||||
switch(current_cycle)
|
||||
if(1 to 6)
|
||||
@@ -830,7 +830,7 @@
|
||||
if(20 to INFINITY)
|
||||
var/species_type = pick(subtypesof(/datum/species/jelly))
|
||||
H.set_species(species_type)
|
||||
H.reagents.del_reagent(id)
|
||||
H.reagents.del_reagent(type)
|
||||
to_chat(H, "<span class='warning'>You've become \a jellyperson!</span>")
|
||||
|
||||
/datum/reagent/mulligan
|
||||
@@ -1089,7 +1089,7 @@
|
||||
var/obj/effect/decal/cleanable/greenglow/GG = locate() in T.contents
|
||||
if(!GG)
|
||||
GG = new/obj/effect/decal/cleanable/greenglow(T)
|
||||
GG.reagents.add_reagent("radium", reac_volume)
|
||||
GG.reagents.add_reagent(/datum/reagent/radium, reac_volume)
|
||||
|
||||
/datum/reagent/space_cleaner/sterilizine
|
||||
name = "Sterilizine"
|
||||
@@ -1127,7 +1127,7 @@
|
||||
/datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(M.has_bane(BANE_IRON)) //If the target is weak to cold iron, then poison them.
|
||||
if(holder && holder.chem_temp < 100) // COLD iron.
|
||||
M.reagents.add_reagent("toxin", reac_volume)
|
||||
M.reagents.add_reagent(/datum/reagent/toxin, reac_volume)
|
||||
..()
|
||||
|
||||
/datum/reagent/iron/overdose_start(mob/living/M)
|
||||
@@ -1159,7 +1159,7 @@
|
||||
|
||||
/datum/reagent/silver/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(M.has_bane(BANE_SILVER))
|
||||
M.reagents.add_reagent("toxin", reac_volume)
|
||||
M.reagents.add_reagent(/datum/reagent/toxin, reac_volume)
|
||||
..()
|
||||
|
||||
/datum/reagent/uranium
|
||||
@@ -1181,7 +1181,7 @@
|
||||
var/obj/effect/decal/cleanable/greenglow/GG = locate() in T.contents
|
||||
if(!GG)
|
||||
GG = new/obj/effect/decal/cleanable/greenglow(T)
|
||||
GG.reagents.add_reagent("uranium", reac_volume)
|
||||
GG.reagents.add_reagent(/datum/reagent/uranium, reac_volume)
|
||||
|
||||
/datum/reagent/bluespace
|
||||
name = "Bluespace Dust"
|
||||
@@ -1527,7 +1527,7 @@
|
||||
/datum/reagent/stimulum/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustStaminaLoss(-2*REM, 0)
|
||||
current_cycle++
|
||||
holder.remove_reagent(id, 0.99) //Gives time for the next tick of life().
|
||||
holder.remove_reagent(type, 0.99) //Gives time for the next tick of life().
|
||||
. = TRUE //Update status effects.
|
||||
|
||||
/datum/reagent/nitryl
|
||||
|
||||
@@ -190,8 +190,8 @@
|
||||
|
||||
|
||||
/datum/reagent/cryostylane/on_mob_life(mob/living/carbon/M) //TODO: code freezing into an ice cube
|
||||
if(M.reagents.has_reagent("oxygen"))
|
||||
M.reagents.remove_reagent("oxygen", 0.5)
|
||||
if(M.reagents.has_reagent(/datum/reagent/oxygen))
|
||||
M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5)
|
||||
M.adjust_bodytemperature(-15)
|
||||
..()
|
||||
|
||||
@@ -209,8 +209,8 @@
|
||||
taste_description = "bitterness"
|
||||
|
||||
/datum/reagent/pyrosium/on_mob_life(mob/living/carbon/M)
|
||||
if(M.reagents.has_reagent("oxygen"))
|
||||
M.reagents.remove_reagent("oxygen", 0.5)
|
||||
if(M.reagents.has_reagent(/datum/reagent/oxygen))
|
||||
M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5)
|
||||
M.adjust_bodytemperature(15)
|
||||
..()
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user