mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 11:34:19 +01:00
Merge pull request #5074 from Fox-McCloud/adminbus-reagent
Tweaks Adminordrazine, Cleans up Reagents, Fixes body temperature adjustments, and makes a few tweaks
This commit is contained in:
@@ -49,7 +49,7 @@ var/const/INGEST = 2
|
||||
chemical_reactions_list[id] += D
|
||||
break // Don't bother adding ourselves to other reagent ids, it is redundant.
|
||||
|
||||
/datum/reagents/proc/remove_any(var/amount=1)
|
||||
/datum/reagents/proc/remove_any(amount=1)
|
||||
var/total_transfered = 0
|
||||
var/current_list_element = 1
|
||||
|
||||
@@ -91,7 +91,7 @@ var/const/INGEST = 2
|
||||
|
||||
return the_id
|
||||
|
||||
/datum/reagents/proc/trans_to(var/target, var/amount=1, var/multiplier=1, var/preserve_data=1)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred.
|
||||
/datum/reagents/proc/trans_to(target, amount=1, multiplier=1, preserve_data=1)//if preserve_data=0, the reagents data will be lost. Usefull if you use data for some strange stuff and don't want it to be transferred.
|
||||
if(!target)
|
||||
return
|
||||
if(src.total_volume <= 0)
|
||||
@@ -135,7 +135,7 @@ var/const/INGEST = 2
|
||||
src.handle_reactions()
|
||||
return amount
|
||||
|
||||
/datum/reagents/proc/copy_to(var/obj/target, var/amount=1, var/multiplier=1, var/preserve_data=1, var/safety = 0)
|
||||
/datum/reagents/proc/copy_to(obj/target, amount=1, multiplier=1, preserve_data=1, safety = 0)
|
||||
if(!target)
|
||||
return
|
||||
if(!target.reagents || src.total_volume<=0)
|
||||
@@ -156,7 +156,7 @@ var/const/INGEST = 2
|
||||
src.handle_reactions()
|
||||
return amount
|
||||
|
||||
/datum/reagents/proc/trans_id_to(var/obj/target, var/reagent, var/amount=1, var/preserve_data=1)//Not sure why this proc didn't exist before. It does now! /N
|
||||
/datum/reagents/proc/trans_id_to(obj/target, reagent, amount=1, preserve_data=1)//Not sure why this proc didn't exist before. It does now! /N
|
||||
if(!target)
|
||||
return
|
||||
if(!target.reagents || src.total_volume<=0 || !src.get_reagent_amount(reagent))
|
||||
@@ -214,12 +214,12 @@ var/const/INGEST = 2
|
||||
*/
|
||||
|
||||
|
||||
/datum/reagents/proc/conditional_update_move(var/atom/A, var/Running = 0)
|
||||
/datum/reagents/proc/conditional_update_move(atom/A, Running = 0)
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
R.on_move (A, Running)
|
||||
update_total()
|
||||
|
||||
/datum/reagents/proc/conditional_update(var/atom/A, )
|
||||
/datum/reagents/proc/conditional_update(atom/A, )
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
R.on_update (A)
|
||||
update_total()
|
||||
@@ -323,14 +323,14 @@ var/const/INGEST = 2
|
||||
update_total()
|
||||
return 0
|
||||
|
||||
/datum/reagents/proc/isolate_reagent(var/reagent)
|
||||
/datum/reagents/proc/isolate_reagent(reagent)
|
||||
for(var/A in reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if(R.id != reagent)
|
||||
del_reagent(R.id)
|
||||
update_total()
|
||||
|
||||
/datum/reagents/proc/del_reagent(var/reagent)
|
||||
/datum/reagents/proc/del_reagent(reagent)
|
||||
for(var/A in reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if(R.id == reagent)
|
||||
@@ -341,8 +341,6 @@ var/const/INGEST = 2
|
||||
qdel(A)
|
||||
update_total()
|
||||
my_atom.on_reagent_change()
|
||||
check_gofast(my_atom)
|
||||
check_goreallyfast(my_atom)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -363,7 +361,7 @@ var/const/INGEST = 2
|
||||
del_reagent(R.id)
|
||||
return 0
|
||||
|
||||
/datum/reagents/proc/reaction_check(var/mob/M, var/datum/reagent/R)
|
||||
/datum/reagents/proc/reaction_check(mob/M, datum/reagent/R)
|
||||
var/can_process = 0
|
||||
if(!istype(M, /mob/living)) //Non-living mobs can't metabolize reagents, so don't bother trying (runtime safety check)
|
||||
return can_process
|
||||
@@ -436,7 +434,7 @@ var/const/INGEST = 2
|
||||
var/amt = list_reagents[r_id]
|
||||
add_reagent(r_id, amt, data)
|
||||
|
||||
/datum/reagents/proc/add_reagent(var/reagent, var/amount, var/list/data=null, var/reagtemp = 300)
|
||||
/datum/reagents/proc/add_reagent(reagent, amount, list/data=null, reagtemp = 300)
|
||||
if(!isnum(amount)) return 1
|
||||
update_total()
|
||||
if(total_volume + amount > maximum_volume) amount = (maximum_volume - total_volume) //Doesnt fit in. Make it disappear. Shouldnt happen. Will happen.
|
||||
@@ -476,7 +474,7 @@ var/const/INGEST = 2
|
||||
|
||||
return 1
|
||||
|
||||
/datum/reagents/proc/remove_reagent(var/reagent, var/amount, var/safety)//Added a safety check for the trans_id_to
|
||||
/datum/reagents/proc/remove_reagent(reagent, amount, safety)//Added a safety check for the trans_id_to
|
||||
|
||||
if(!isnum(amount)) return 1
|
||||
|
||||
@@ -492,7 +490,7 @@ var/const/INGEST = 2
|
||||
|
||||
return 1
|
||||
|
||||
/datum/reagents/proc/has_reagent(var/reagent, var/amount = -1)
|
||||
/datum/reagents/proc/has_reagent(reagent, amount = -1)
|
||||
|
||||
for(var/A in reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
@@ -504,7 +502,7 @@ var/const/INGEST = 2
|
||||
|
||||
return 0
|
||||
|
||||
/datum/reagents/proc/get_reagent_amount(var/reagent)
|
||||
/datum/reagents/proc/get_reagent_amount(reagent)
|
||||
for(var/A in reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if(R.id == reagent)
|
||||
@@ -520,7 +518,7 @@ var/const/INGEST = 2
|
||||
|
||||
return res
|
||||
|
||||
/datum/reagents/proc/remove_all_type(var/reagent_type, var/amount, var/strict = 0, var/safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included.
|
||||
/datum/reagents/proc/remove_all_type(reagent_type, amount, strict = 0, safety = 1) // Removes all reagent of X type. @strict set to 1 determines whether the childs of the type are included.
|
||||
if(!isnum(amount)) return 1
|
||||
|
||||
var/has_removed_reagent = 0
|
||||
@@ -542,7 +540,7 @@ var/const/INGEST = 2
|
||||
return has_removed_reagent
|
||||
|
||||
// Admin logging.
|
||||
/datum/reagents/proc/get_reagent_ids(var/and_amount=0)
|
||||
/datum/reagents/proc/get_reagent_ids(and_amount=0)
|
||||
var/list/stuff = list()
|
||||
for(var/datum/reagent/A in reagent_list)
|
||||
if(and_amount)
|
||||
@@ -552,19 +550,19 @@ var/const/INGEST = 2
|
||||
return english_list(stuff)
|
||||
|
||||
//two helper functions to preserve data across reactions (needed for xenoarch)
|
||||
/datum/reagents/proc/get_data(var/reagent_id)
|
||||
/datum/reagents/proc/get_data(reagent_id)
|
||||
for(var/datum/reagent/D in reagent_list)
|
||||
if(D.id == reagent_id)
|
||||
// to_chat(world, "proffering a data-carrying reagent ([reagent_id])")
|
||||
return D.data
|
||||
|
||||
/datum/reagents/proc/set_data(var/reagent_id, var/new_data)
|
||||
/datum/reagents/proc/set_data(reagent_id, new_data)
|
||||
for(var/datum/reagent/D in reagent_list)
|
||||
if(D.id == reagent_id)
|
||||
// to_chat(world, "reagent data set ([reagent_id])")
|
||||
D.data = new_data
|
||||
|
||||
/datum/reagents/proc/copy_data(var/datum/reagent/current_reagent)
|
||||
/datum/reagents/proc/copy_data(datum/reagent/current_reagent)
|
||||
if(!current_reagent || !current_reagent.data) return null
|
||||
if(!istype(current_reagent.data, /list)) return current_reagent.data
|
||||
|
||||
@@ -588,11 +586,11 @@ var/const/INGEST = 2
|
||||
|
||||
// Convenience proc to create a reagents holder for an atom
|
||||
// Max vol is maximum volume of holder
|
||||
atom/proc/create_reagents(var/max_vol)
|
||||
atom/proc/create_reagents(max_vol)
|
||||
reagents = new/datum/reagents(max_vol)
|
||||
reagents.my_atom = src
|
||||
|
||||
/datum/reagents/proc/get_reagent_from_id(var/id)
|
||||
/datum/reagents/proc/get_reagent_from_id(id)
|
||||
var/datum/reagent/result = null
|
||||
for(var/datum/reagent/R in reagent_list)
|
||||
if(R.id == id)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
var/hackedcheck = 0
|
||||
var/list/dispensable_reagents = list("hydrogen", "lithium", "carbon", "nitrogen", "oxygen", "fluorine",
|
||||
"sodium", "aluminum", "silicon", "phosphorus", "sulfur", "chlorine", "potassium", "iron",
|
||||
"copper", "mercury", "plasma", "radium", "water", "ethanol", "sugar", "tungsten", "iodine", "bromine", "silver")
|
||||
"copper", "mercury", "plasma", "radium", "water", "ethanol", "sugar", "iodine", "bromine", "silver")
|
||||
var/list/hacked_reagents = list("toxin")
|
||||
var/hack_message = "You disable the safety safeguards, enabling the \"Mad Scientist\" mode."
|
||||
var/unhack_message = "You re-enable the safety safeguards, enabling the \"NT Standard\" mode."
|
||||
@@ -108,7 +108,7 @@
|
||||
* @return nothing
|
||||
*/
|
||||
|
||||
/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main",var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
/obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
|
||||
if(broken_requirements.len)
|
||||
to_chat(user, "<span class='warning'>[src] is broken. [broken_requirements[broken_requirements[1]]]</span>")
|
||||
return
|
||||
@@ -197,7 +197,7 @@
|
||||
add_fingerprint(usr)
|
||||
return 1 // update UIs attached to this object
|
||||
|
||||
/obj/machinery/chem_dispenser/attackby(var/obj/item/weapon/reagent_containers/B as obj, var/mob/user as mob, params)
|
||||
/obj/machinery/chem_dispenser/attackby(obj/item/weapon/reagent_containers/B, mob/user, params)
|
||||
if(isrobot(user))
|
||||
return
|
||||
|
||||
@@ -232,7 +232,7 @@
|
||||
overlays += icon_beaker
|
||||
return
|
||||
|
||||
/obj/machinery/chem_dispenser/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob, params)
|
||||
/obj/machinery/chem_dispenser/attackby(obj/item/weapon/B, mob/user, params)
|
||||
..()
|
||||
if(istype(B, /obj/item/device/multitool))
|
||||
if(hackedcheck == 0)
|
||||
@@ -247,13 +247,13 @@
|
||||
hackedcheck = 0
|
||||
return
|
||||
|
||||
/obj/machinery/chem_dispenser/attack_ai(mob/user as mob)
|
||||
/obj/machinery/chem_dispenser/attack_ai(mob/user)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/chem_dispenser/attack_ghost(mob/user as mob)
|
||||
/obj/machinery/chem_dispenser/attack_ghost(mob/user)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/chem_dispenser/attack_hand(mob/user as mob)
|
||||
/obj/machinery/chem_dispenser/attack_hand(mob/user)
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
amount = 5
|
||||
recharge_delay = 10
|
||||
dispensable_reagents = list()
|
||||
var/list/special_reagents = list(list("hydrogen", "oxygen", "silicon", "phosphorus", "sulfur", "carbon", "nitrogen", "tungsten", "water"),
|
||||
var/list/special_reagents = list(list("hydrogen", "oxygen", "silicon", "phosphorus", "sulfur", "carbon", "nitrogen", "water"),
|
||||
list("lithium", "sugar", "copper", "mercury", "sodium","iodine","bromine"),
|
||||
list("ethanol", "chlorine", "potassium", "aluminum","plasma", "radium", "fluorine", "iron", "silver"),
|
||||
list("oil", "ash", "acetone", "saltpetre", "ammonia", "diethylamine", "fuel"))
|
||||
@@ -343,7 +343,7 @@
|
||||
for(i=1, i<=M.rating, i++)
|
||||
dispensable_reagents = sortList(dispensable_reagents | special_reagents[i])
|
||||
|
||||
/obj/machinery/chem_dispenser/constructable/attackby(var/obj/item/I, var/mob/user, params)
|
||||
/obj/machinery/chem_dispenser/constructable/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/reagent_containers/glass))
|
||||
if(panel_open)
|
||||
to_chat(user, "<span class='notice'>Close the maintenance panel first.</span>")
|
||||
@@ -426,7 +426,7 @@
|
||||
spawn(rand(0, 15))
|
||||
stat |= NOPOWER
|
||||
|
||||
/obj/machinery/chem_master/attackby(var/obj/item/weapon/B as obj, var/mob/user as mob, params)
|
||||
/obj/machinery/chem_master/attackby(obj/item/weapon/B, mob/user, params)
|
||||
|
||||
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass))
|
||||
|
||||
@@ -692,31 +692,31 @@
|
||||
nanomanager.update_uis(src)
|
||||
return
|
||||
|
||||
/obj/machinery/chem_master/attack_ai(mob/user as mob)
|
||||
/obj/machinery/chem_master/attack_ai(mob/user)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/chem_master/attack_ghost(mob/user as mob)
|
||||
/obj/machinery/chem_master/attack_ghost(mob/user)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/chem_master/attack_hand(mob/user as mob)
|
||||
/obj/machinery/chem_master/attack_hand(mob/user)
|
||||
if(..())
|
||||
return 1
|
||||
ui_interact(user)
|
||||
return
|
||||
|
||||
/obj/machinery/chem_master/ui_interact(mob/user, ui_key="main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
|
||||
/obj/machinery/chem_master/ui_interact(mob/user, ui_key="main", datum/nanoui/ui = null, force_open = 1)
|
||||
|
||||
var/datum/asset/chem_master/assets = get_asset_datum(/datum/asset/chem_master)
|
||||
assets.send(user)
|
||||
|
||||
|
||||
var/data = list()
|
||||
|
||||
|
||||
data["condi"] = condi
|
||||
data["loaded_pill_bottle"] = (loaded_pill_bottle ? 1 : 0)
|
||||
if(loaded_pill_bottle)
|
||||
data["loaded_pill_bottle_contents_len"] = loaded_pill_bottle.contents.len
|
||||
data["loaded_pill_bottle_storage_slots"] = loaded_pill_bottle.storage_slots
|
||||
|
||||
|
||||
data["beaker"] = (beaker ? 1 : 0)
|
||||
if(beaker)
|
||||
var/list/beaker_reagents_list = list()
|
||||
@@ -727,17 +727,17 @@
|
||||
data["buffer_reagents"] = buffer_reagents_list
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
buffer_reagents_list[++buffer_reagents_list.len] = list("name" = R.name, "volume" = R.volume, "id" = R.id, "description" = R.description)
|
||||
|
||||
|
||||
data["pillsprite"] = pillsprite
|
||||
data["mode"] = mode
|
||||
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "chem_master.tmpl", src.name, 575, 400)
|
||||
ui.set_initial_data(data)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/chem_master/proc/isgoodnumber(var/num)
|
||||
/obj/machinery/chem_master/proc/isgoodnumber(num)
|
||||
if(isnum(num))
|
||||
if(num > 200)
|
||||
num = 200
|
||||
@@ -874,7 +874,7 @@
|
||||
icon_state = "juicer"+num2text(!isnull(beaker))
|
||||
return
|
||||
|
||||
/obj/machinery/reagentgrinder/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
|
||||
/obj/machinery/reagentgrinder/attackby(obj/item/O, mob/user, params)
|
||||
|
||||
if(istype(O,/obj/item/weapon/reagent_containers/glass) || \
|
||||
istype(O,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass) || \
|
||||
@@ -924,14 +924,14 @@
|
||||
src.updateUsrDialog()
|
||||
return 0
|
||||
|
||||
/obj/machinery/reagentgrinder/attack_ai(mob/user as mob)
|
||||
/obj/machinery/reagentgrinder/attack_ai(mob/user)
|
||||
return 0
|
||||
|
||||
/obj/machinery/reagentgrinder/attack_hand(mob/user as mob)
|
||||
/obj/machinery/reagentgrinder/attack_hand(mob/user)
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
|
||||
/obj/machinery/reagentgrinder/interact(mob/user as mob) // The microwave Menu
|
||||
/obj/machinery/reagentgrinder/interact(mob/user) // The microwave Menu
|
||||
var/is_chamber_empty = 0
|
||||
var/is_beaker_ready = 0
|
||||
var/processing_chamber = ""
|
||||
@@ -1014,38 +1014,38 @@
|
||||
holdingitems -= O
|
||||
holdingitems = list()
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/is_allowed(var/obj/item/weapon/reagent_containers/O)
|
||||
/obj/machinery/reagentgrinder/proc/is_allowed(obj/item/weapon/reagent_containers/O)
|
||||
for(var/i in blend_items)
|
||||
if(istype(O, i))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_by_id(var/obj/item/weapon/grown/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_by_id(obj/item/weapon/grown/O)
|
||||
for(var/i in blend_items)
|
||||
if(istype(O, i))
|
||||
return blend_items[i]
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(var/obj/item/weapon/reagent_containers/food/snacks/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_id(obj/item/weapon/reagent_containers/food/snacks/O)
|
||||
for(var/i in blend_items)
|
||||
if(istype(O, i))
|
||||
return blend_items[i]
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(var/obj/item/weapon/reagent_containers/food/snacks/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_id(obj/item/weapon/reagent_containers/food/snacks/O)
|
||||
for(var/i in juice_items)
|
||||
if(istype(O, i))
|
||||
return juice_items[i]
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_tag(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_snack_by_tag(obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||
for(var/i in blend_tags)
|
||||
if(O.seed.kitchen_tag == i)
|
||||
return blend_tags[i]
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_tag(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_allowed_juice_by_tag(obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||
for(var/i in juice_tags)
|
||||
if(O.seed.kitchen_tag == i)
|
||||
return juice_tags[i]
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(var/obj/item/weapon/grown/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_grownweapon_amount(obj/item/weapon/grown/O)
|
||||
if(!istype(O))
|
||||
return 5
|
||||
else if(O.potency == -1)
|
||||
@@ -1053,7 +1053,7 @@
|
||||
else
|
||||
return round(O.potency)
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/get_juice_amount(var/obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||
/obj/machinery/reagentgrinder/proc/get_juice_amount(obj/item/weapon/reagent_containers/food/snacks/grown/O)
|
||||
if(!istype(O))
|
||||
return 5
|
||||
else if(O.potency == -1)
|
||||
@@ -1061,7 +1061,7 @@
|
||||
else
|
||||
return round(5*sqrt(O.potency))
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/remove_object(var/obj/item/O)
|
||||
/obj/machinery/reagentgrinder/proc/remove_object(obj/item/O)
|
||||
holdingitems -= O
|
||||
qdel(O)
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
message = "The blob splashes you with burning oil"
|
||||
message_living = ", and you feel your skin char and melt"
|
||||
|
||||
/datum/reagent/blob/boiling_oil/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/blob/boiling_oil/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(round(volume/12))
|
||||
volume = ..()
|
||||
@@ -97,7 +97,7 @@
|
||||
color = "#61407E"
|
||||
message = "You feel a thrum as the blob strikes you, and everything flies at you"
|
||||
|
||||
/datum/reagent/blob/dark_matter/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/blob/dark_matter/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH)
|
||||
reagent_vortex(M, 0, volume)
|
||||
volume = ..()
|
||||
@@ -110,7 +110,7 @@
|
||||
color = "#808000"
|
||||
message = "The blob slams into you, and sends you flying"
|
||||
|
||||
/datum/reagent/blob/b_sorium/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/blob/b_sorium/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH)
|
||||
reagent_vortex(M, 1, volume)
|
||||
volume = ..()
|
||||
@@ -145,7 +145,7 @@
|
||||
if(!step_towards(X, pull))
|
||||
break
|
||||
|
||||
/datum/reagent/blob/proc/send_message(var/mob/living/M as mob)
|
||||
/datum/reagent/blob/proc/send_message(mob/living/M)
|
||||
var/totalmessage = message
|
||||
if(message_living && !issilicon(M))
|
||||
totalmessage += message_living
|
||||
|
||||
@@ -19,8 +19,7 @@
|
||||
description = "Microscopic construction robots."
|
||||
color = "#535E66" // rgb: 83, 94, 102
|
||||
|
||||
/datum/reagent/nanomachines/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/nanomachines/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 1.5)
|
||||
M.ForceContractDisease(new /datum/disease/transformation/robot(0))
|
||||
..()
|
||||
@@ -32,8 +31,7 @@
|
||||
description = "Microbes with an entirely alien cellular structure."
|
||||
color = "#535E66" // rgb: 83, 94, 102
|
||||
|
||||
/datum/reagent/xenomicrobes/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/xenomicrobes/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 1.5)
|
||||
M.ContractDisease(new /datum/disease/transformation/xeno(0))
|
||||
..()
|
||||
@@ -44,8 +42,7 @@
|
||||
description = "Active fungal spores."
|
||||
color = "#92D17D" // rgb: 146, 209, 125
|
||||
|
||||
/datum/reagent/fungalspores/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/fungalspores/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 2.5)
|
||||
M.ForceContractDisease(new /datum/disease/tuberculosis(0))
|
||||
..()
|
||||
@@ -57,8 +54,7 @@
|
||||
reagent_state = SOLID
|
||||
color = "#FA0000" // rgb: 250, 0, 0
|
||||
|
||||
/datum/reagent/jagged_crystals/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/jagged_crystals/on_mob_life(mob/living/carbon/M)
|
||||
M.ForceContractDisease(new /datum/disease/berserker(0))
|
||||
..()
|
||||
|
||||
@@ -69,8 +65,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#1E4600"
|
||||
|
||||
/datum/reagent/salmonella/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/salmonella/on_mob_life(mob/living/carbon/M)
|
||||
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
|
||||
..()
|
||||
|
||||
@@ -81,8 +76,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#FF0000"
|
||||
|
||||
/datum/reagent/gibbis/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/gibbis/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 2.5)
|
||||
M.ForceContractDisease(new /datum/disease/gbs/curable(0))
|
||||
..()
|
||||
@@ -94,8 +88,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#FFFFFF"
|
||||
|
||||
/datum/reagent/prions/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/prions/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 4.5)
|
||||
M.ForceContractDisease(new /datum/disease/kuru(0))
|
||||
..()
|
||||
@@ -107,8 +100,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#465046"
|
||||
|
||||
/datum/reagent/grave_dust/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/grave_dust/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 4.5)
|
||||
M.ForceContractDisease(new /datum/disease/vampire(0))
|
||||
..()
|
||||
@@ -120,8 +112,7 @@
|
||||
reagent_state = SOLID
|
||||
color = "#925D6C"
|
||||
|
||||
/datum/reagent/heartworms/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/heartworms/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 4.5)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -140,8 +131,7 @@
|
||||
var/client/blob_client = null
|
||||
var/blob_point_rate = 3
|
||||
|
||||
/datum/reagent/spore/on_mob_life(var/mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/spore/on_mob_life(mob/living/M)
|
||||
if(holder.has_reagent("atrazine",45))
|
||||
holder.del_reagent("spore") //apparently this never metabolizes and stays in forever unless you have 45 units of atrazine in you or some stupid thing like that.
|
||||
if(prob(1))
|
||||
|
||||
@@ -14,8 +14,7 @@
|
||||
mix_message = "The drink turns electric blue and starts quivering violently."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
/datum/reagent/ginsonic/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/ginsonic/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
if(prob(25))
|
||||
M.AdjustParalysis(-1)
|
||||
@@ -29,7 +28,6 @@
|
||||
else
|
||||
to_chat(M, "<span class='notice'>[sonic_message ]</span>")
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/applejack
|
||||
name = "Applejack"
|
||||
@@ -72,13 +70,12 @@
|
||||
color = "#DC0000"
|
||||
alcohol_perc = 1
|
||||
|
||||
/datum/reagent/ethanol/dragons_breath/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/ethanol/dragons_breath/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == INGEST && prob(20))
|
||||
if(M.on_fire)
|
||||
M.adjust_fire_stacks(3)
|
||||
|
||||
/datum/reagent/ethanol/dragons_breath/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/ethanol/dragons_breath/on_mob_life(mob/living/M)
|
||||
if(M.reagents.has_reagent("milk"))
|
||||
to_chat(M, "<span class='notice'>The milk stops the burning. Ahhh.</span>")
|
||||
M.reagents.del_reagent("milk")
|
||||
@@ -128,7 +125,7 @@
|
||||
mix_message = "The chemicals mix to create shiny, blue substance."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
/datum/reagent/ethanol/synthanol/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
/datum/reagent/ethanol/synthanol/on_mob_life(mob/living/M)
|
||||
if(!M.isSynthetic())
|
||||
holder.remove_reagent(id, 3.6) //gets removed from organics very fast
|
||||
if(prob(25))
|
||||
@@ -136,7 +133,7 @@
|
||||
M.fakevomit()
|
||||
..()
|
||||
|
||||
datum/reagent/ethanol/synthanol/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/ethanol/synthanol/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(M.isSynthetic())
|
||||
|
||||
@@ -13,8 +13,7 @@
|
||||
overdose_threshold = 35
|
||||
addiction_chance = 70
|
||||
|
||||
/datum/reagent/nicotine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/nicotine/on_mob_life(mob/living/M)
|
||||
var/smoke_message = pick("You feel relaxed.", "You feel calmed.", "You feel less stressed.", "You feel more placid.", "You feel more undivided.")
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>[smoke_message]</span>")
|
||||
@@ -24,9 +23,8 @@
|
||||
M.AdjustWeakened(-1)
|
||||
M.adjustStaminaLoss(-1*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/nicotine/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/nicotine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
@@ -75,8 +73,7 @@
|
||||
overdose_threshold = 20
|
||||
addiction_chance = 50
|
||||
|
||||
/datum/reagent/crank/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/crank/on_mob_life(mob/living/M)
|
||||
M.AdjustParalysis(-2)
|
||||
M.AdjustStunned(-2)
|
||||
M.AdjustWeakened(-2)
|
||||
@@ -95,9 +92,8 @@
|
||||
M.jitteriness += 30
|
||||
M.emote(pick("groan", "moan"))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/crank/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/crank/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
@@ -146,12 +142,11 @@
|
||||
mix_sound = 'sound/goonstation/effects/crystalshatter.ogg'
|
||||
min_temp = 390
|
||||
|
||||
/datum/chemical_reaction/crank/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/crank/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
for(var/turf/turf in range(1,T))
|
||||
new /obj/effect/hotspot(turf)
|
||||
explosion(T,0,0,2)
|
||||
return
|
||||
|
||||
/datum/reagent/krokodil
|
||||
name = "Krokodil"
|
||||
@@ -163,8 +158,7 @@
|
||||
addiction_chance = 50
|
||||
|
||||
|
||||
/datum/reagent/krokodil/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/krokodil/on_mob_life(mob/living/M)
|
||||
M.jitteriness -= 40
|
||||
if(prob(25))
|
||||
M.adjustBrainLoss(1)
|
||||
@@ -185,9 +179,8 @@
|
||||
to_chat(M, "<span class='warning'>Your skin feels all rough and dry.</span>")
|
||||
M.adjustBruteLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/krokodil/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/krokodil/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
@@ -242,8 +235,7 @@
|
||||
addiction_chance = 60
|
||||
metabolization_rate = 0.6
|
||||
|
||||
/datum/reagent/methamphetamine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/methamphetamine/on_mob_life(mob/living/M)
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch_s","blink_r","shiver"))
|
||||
if(current_cycle >= 25)
|
||||
@@ -258,9 +250,12 @@
|
||||
if(prob(50))
|
||||
M.adjustBrainLoss(1.0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/methamphetamine/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/methamphetamine/reagent_deleted(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOREALLYFAST
|
||||
..()
|
||||
|
||||
/datum/reagent/methamphetamine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
@@ -293,7 +288,7 @@
|
||||
result_amount = 4
|
||||
min_temp = 374
|
||||
|
||||
/datum/chemical_reaction/methamphetamine/on_reaction(var/datum/reagents/holder)
|
||||
/datum/chemical_reaction/methamphetamine/on_reaction(datum/reagents/holder)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
|
||||
for(var/mob/living/carbon/C in range(T, 1))
|
||||
@@ -328,8 +323,7 @@
|
||||
addiction_chance = 80
|
||||
metabolization_rate = 0.6
|
||||
|
||||
/datum/reagent/bath_salts/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/bath_salts/on_mob_life(mob/living/M)
|
||||
var/check = rand(0,100)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -361,7 +355,7 @@
|
||||
to_chat(M, "<span class='userdanger'>THEY'RE GONNA GET YOU!</span>")
|
||||
..()
|
||||
|
||||
/datum/reagent/bath_salts/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/bath_salts/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == INGEST)
|
||||
to_chat(M, "<span class = 'danger'><font face='[pick("Curlz MT", "Comic Sans MS")]' size='[rand(4,6)]'>You feel FUCKED UP!!!!!!</font></span>")
|
||||
M << 'sound/effects/singlebeat.ogg'
|
||||
@@ -372,7 +366,7 @@
|
||||
else
|
||||
to_chat(M, "<span class='notice'>You feel a bit more salty than usual.</span>")
|
||||
|
||||
/datum/reagent/bath_salts/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/bath_salts/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
@@ -434,7 +428,7 @@
|
||||
mix_message = "The mixture ferments into a filthy morass."
|
||||
mix_sound = 'sound/effects/blobattack.ogg'
|
||||
|
||||
/datum/chemical_reaction/jenkem/on_reaction(var/datum/reagents/holder)
|
||||
/datum/chemical_reaction/jenkem/on_reaction(datum/reagents/holder)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
|
||||
for(var/mob/living/carbon/C in range(T, 1))
|
||||
@@ -449,8 +443,7 @@
|
||||
color = "#644600"
|
||||
addiction_chance = 30
|
||||
|
||||
/datum/reagent/jenkem/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/jenkem/on_mob_life(mob/living/M)
|
||||
M.Dizzy(5)
|
||||
if(prob(10))
|
||||
M.emote(pick("twitch_s","drool","moan"))
|
||||
@@ -471,8 +464,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#60A584" // rgb: 96, 165, 132
|
||||
|
||||
/datum/reagent/aranesp/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/aranesp/on_mob_life(mob/living/M)
|
||||
M.adjustStaminaLoss(-40)
|
||||
if(prob(90))
|
||||
M.adjustToxLoss(1)
|
||||
@@ -487,7 +479,6 @@
|
||||
M.Stun(1)
|
||||
M.losebreath++
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/thc
|
||||
name = "Tetrahydrocannabinol"
|
||||
@@ -497,8 +488,7 @@
|
||||
color = "#0FBE0F"
|
||||
|
||||
|
||||
/datum/reagent/thc/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/thc/on_mob_life(mob/living/M)
|
||||
M.stuttering += rand(0,2)
|
||||
if(prob(5))
|
||||
M.emote(pick("laugh","giggle","smile"))
|
||||
@@ -510,7 +500,6 @@
|
||||
if(prob(10))
|
||||
M.drowsyness = max(M.drowsyness, 10)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/fliptonium
|
||||
name = "Fliptonium"
|
||||
@@ -531,15 +520,14 @@
|
||||
result_amount = 4
|
||||
mix_message = "The mixture swirls around excitedly!"
|
||||
|
||||
/datum/reagent/fliptonium/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/fliptonium/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == INGEST || method == TOUCH)
|
||||
M.SpinAnimation(speed = 12, loops = -1)
|
||||
..()
|
||||
|
||||
/datum/reagent/fliptonium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/fliptonium/on_mob_life(mob/living/M)
|
||||
if(current_cycle == 5)
|
||||
M.SpinAnimation(speed = 11, loops = -1)
|
||||
if(current_cycle == 10)
|
||||
@@ -564,12 +552,11 @@
|
||||
M.adjustStaminaLoss(-1.5)
|
||||
M.SetSleeping(0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/fliptonium/reagent_deleted(var/mob/living/M as mob)
|
||||
/datum/reagent/fliptonium/reagent_deleted(mob/living/M)
|
||||
M.SpinAnimation(speed = 12, loops = -1)
|
||||
|
||||
/datum/reagent/fliptonium/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/fliptonium/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
@@ -619,8 +606,7 @@
|
||||
result_amount = 2
|
||||
mix_message = "The mixture darkens and appears to partially vaporize into a chilling aerosol."
|
||||
|
||||
/datum/reagent/lube/ultra/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/lube/ultra/on_mob_life(mob/living/M)
|
||||
var/high_message = pick("You feel your servos whir!", "You feel like you need to go faster.", "You feel like you were just overclocked!")
|
||||
if(prob(1))
|
||||
if(prob(1))
|
||||
@@ -637,9 +623,12 @@
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch", "shiver"))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/lube/ultra/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/lube/ultra/reagent_deleted(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOREALLYFAST
|
||||
..()
|
||||
|
||||
/datum/reagent/lube/ultra/overdose_process(mob/living/M, severity)
|
||||
if(prob(20))
|
||||
M.emote("ping")
|
||||
if(prob(33))
|
||||
@@ -647,10 +636,10 @@
|
||||
var/obj/item/I = M.get_active_hand()
|
||||
if(I)
|
||||
M.drop_item()
|
||||
..()
|
||||
if(prob(50))
|
||||
M.adjustFireLoss(10)
|
||||
M.adjustBrainLoss(pick(0.5, 0.6, 0.7, 0.8, 0.9, 1))
|
||||
..()
|
||||
|
||||
//Surge: Krokodil
|
||||
/datum/reagent/surge
|
||||
@@ -665,8 +654,7 @@
|
||||
addiction_chance = 50
|
||||
|
||||
|
||||
/datum/reagent/surge/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/surge/on_mob_life(mob/living/M)
|
||||
M.druggy = max(M.druggy, 15)
|
||||
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
|
||||
if(prob(1))
|
||||
@@ -675,9 +663,8 @@
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>[high_message]</span>")
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/surge/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/surge/overdose_process(mob/living/M, severity)
|
||||
//Hit them with the same effects as an electrode!
|
||||
M.Stun(5)
|
||||
M.Weaken(5)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
color = "#63DE63"
|
||||
metabolization_rate = 0.4
|
||||
|
||||
datum/reagent/questionmark/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/questionmark/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == INGEST)
|
||||
@@ -15,23 +15,21 @@ datum/reagent/questionmark/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
to_chat(M, "<span class='danger'>Ugh! Eating that was a terrible idea!</span>")
|
||||
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
|
||||
|
||||
datum/reagent/egg
|
||||
/datum/reagent/egg
|
||||
name = "Egg"
|
||||
id = "egg"
|
||||
description = "A runny and viscous mixture of clear and yellow fluids."
|
||||
reagent_state = LIQUID
|
||||
color = "#F0C814"
|
||||
|
||||
datum/reagent/egg/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/egg/on_mob_life(mob/living/M)
|
||||
if(prob(8))
|
||||
M.emote("fart")
|
||||
if(prob(3))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,2))
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/triple_citrus
|
||||
/datum/reagent/triple_citrus
|
||||
name = "Triple Citrus"
|
||||
id = "triple_citrus"
|
||||
description = "A refreshing mixed drink of orange, lemon and lime juice."
|
||||
@@ -47,13 +45,13 @@ datum/reagent/triple_citrus
|
||||
mix_message = "The citrus juices begin to blend together."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
datum/reagent/triple_citrus/reaction_mob(var/mob/living/carbon/M as mob, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/triple_citrus/reaction_mob(mob/living/carbon/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living/carbon))
|
||||
return
|
||||
if(method == INGEST)
|
||||
M.adjustToxLoss(-rand(1,2))
|
||||
|
||||
datum/reagent/corn_starch
|
||||
/datum/reagent/corn_starch
|
||||
name = "Corn Starch"
|
||||
id = "corn_starch"
|
||||
description = "The powdered starch of maize, derived from the kernel's endosperm. Used as a thickener for gravies and puddings."
|
||||
@@ -69,18 +67,16 @@ datum/reagent/corn_starch
|
||||
min_temp = 374
|
||||
mix_message = "The mixture forms a viscous, clear fluid!"
|
||||
|
||||
datum/reagent/corn_syrup
|
||||
/datum/reagent/corn_syrup
|
||||
name = "Corn Syrup"
|
||||
id = "corn_syrup"
|
||||
description = "A sweet syrup derived from corn starch that has had its starches converted into maltose and other sugars."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC"
|
||||
|
||||
datum/reagent/corn_syrup/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/corn_syrup/on_mob_life(mob/living/M)
|
||||
M.reagents.add_reagent("sugar", 1.2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/vhfcs
|
||||
name = "vhfcs"
|
||||
@@ -91,18 +87,16 @@ datum/reagent/corn_syrup/on_mob_life(var/mob/living/M as mob)
|
||||
result_amount = 1
|
||||
mix_message = "The mixture emits a sickly-sweet smell."
|
||||
|
||||
datum/reagent/vhfcs
|
||||
/datum/reagent/vhfcs
|
||||
name = "Very-high-fructose corn syrup"
|
||||
id = "vhfcs"
|
||||
description = "An incredibly sweet syrup, created from corn syrup treated with enzymes to convert its sugars into fructose."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC"
|
||||
|
||||
datum/reagent/vhfcs/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/vhfcs/on_mob_life(mob/living/M)
|
||||
M.reagents.add_reagent("sugar", 2.4)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/cola
|
||||
name = "cola"
|
||||
@@ -120,14 +114,11 @@ datum/reagent/vhfcs/on_mob_life(var/mob/living/M as mob)
|
||||
reagent_state = LIQUID
|
||||
color = "#d3a308"
|
||||
|
||||
datum/reagent/honey/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M)
|
||||
M = holder.my_atom
|
||||
/datum/reagent/honey/on_mob_life(mob/living/M)
|
||||
M.reagents.add_reagent("sugar", 0.4)
|
||||
if(prob(20))
|
||||
M.heal_organ_damage(3,1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/chocolate
|
||||
name = "Chocolate"
|
||||
@@ -137,18 +128,15 @@ datum/reagent/honey/on_mob_life(var/mob/living/M as mob)
|
||||
nutriment_factor = 5 * REAGENTS_METABOLISM //same as pure cocoa powder, because it makes no sense that chocolate won't fill you up and make you fat
|
||||
color = "#2E2418"
|
||||
|
||||
/datum/reagent/chocolate/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/chocolate/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
M.reagents.add_reagent("sugar", 0.8)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/chocolate/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/chocolate/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/choc_pile(T)
|
||||
return
|
||||
|
||||
/datum/reagent/mugwort
|
||||
name = "Mugwort"
|
||||
@@ -157,8 +145,7 @@ datum/reagent/honey/on_mob_life(var/mob/living/M as mob)
|
||||
reagent_state = LIQUID
|
||||
color = "#21170E"
|
||||
|
||||
datum/reagent/mugwort/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/mugwort/on_mob_life(mob/living/M)
|
||||
if(istype(M, /mob/living/carbon/human) && M.mind)
|
||||
if(M.mind.special_role == "Wizard")
|
||||
M.adjustToxLoss(-1*REM)
|
||||
@@ -166,7 +153,6 @@ datum/reagent/mugwort/on_mob_life(var/mob/living/M as mob)
|
||||
M.adjustBruteLoss(-1*REM)
|
||||
M.adjustFireLoss(-1*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/porktonium
|
||||
name = "Porktonium"
|
||||
@@ -177,7 +163,7 @@ datum/reagent/mugwort/on_mob_life(var/mob/living/M as mob)
|
||||
metabolization_rate = 0.2
|
||||
overdose_threshold = 133
|
||||
|
||||
/datum/reagent/porktonium/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/porktonium/overdose_process(mob/living/M, severity)
|
||||
if(prob(15))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,3))
|
||||
if(prob(8))
|
||||
@@ -191,7 +177,7 @@ datum/reagent/mugwort/on_mob_life(var/mob/living/M as mob)
|
||||
reagent_state = LIQUID
|
||||
color = "#C87D28"
|
||||
|
||||
datum/reagent/fungus/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/fungus/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == INGEST)
|
||||
@@ -213,10 +199,9 @@ datum/reagent/fungus/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
color = "#B4B400"
|
||||
metabolization_rate = 0.2
|
||||
|
||||
/datum/reagent/chicken_soup/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/chicken_soup/on_mob_life(mob/living/M)
|
||||
M.nutrition += 2
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/msg
|
||||
name = "Monosodium glutamate"
|
||||
@@ -226,14 +211,14 @@ datum/reagent/fungus/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
color = "#F5F5F5"
|
||||
metabolization_rate = 0.2
|
||||
|
||||
datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/msg/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == INGEST)
|
||||
to_chat(M, "<span class='notice'>That tasted amazing!</span>")
|
||||
|
||||
|
||||
/datum/reagent/msg/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/msg/on_mob_life(mob/living/M)
|
||||
if(prob(5))
|
||||
if(prob(10))
|
||||
M.adjustToxLoss(rand(2.4))
|
||||
@@ -241,7 +226,6 @@ datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
to_chat(M, "<span class='warning'>A horrible migraine overpowers you.</span>")
|
||||
M.Stun(rand(2,5))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/cheese
|
||||
name = "Cheese"
|
||||
@@ -252,16 +236,15 @@ datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
metabolization_rate = 0 //heheheh
|
||||
|
||||
|
||||
/datum/reagent/cheese/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/cheese/on_mob_life(mob/living/M)
|
||||
if(prob(3))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,2))
|
||||
..()
|
||||
|
||||
datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/cheese/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/cheesewedge(T)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/cheese
|
||||
name = "cheese"
|
||||
@@ -271,7 +254,7 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
|
||||
result_amount = 1
|
||||
mix_message = "The mixture curdles up."
|
||||
|
||||
/datum/chemical_reaction/cheese/on_reaction(var/datum/reagents/holder)
|
||||
/datum/chemical_reaction/cheese/on_reaction(datum/reagents/holder)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='notice'>A faint cheesy smell drifts through the air...</span>")
|
||||
|
||||
@@ -283,7 +266,7 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
|
||||
color = "#B2B139"
|
||||
overdose_threshold = 50
|
||||
|
||||
/datum/reagent/fake_cheese/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/fake_cheese/overdose_process(mob/living/M, severity)
|
||||
if(prob(8))
|
||||
to_chat(M, "<span class='warning'>You feel something squirming in your stomach. Your thoughts turn to cheese and you begin to sweat.</span>")
|
||||
M.adjustToxLoss(rand(1,2))
|
||||
@@ -297,16 +280,15 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
|
||||
metabolization_rate = 0 //heheheh
|
||||
addiction_chance = 5
|
||||
|
||||
/datum/reagent/weird_cheese/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/weird_cheese/on_mob_life(mob/living/M)
|
||||
if(prob(5))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,3))
|
||||
..()
|
||||
|
||||
datum/reagent/weird_cheese/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/weird_cheese/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/weirdcheesewedge(T)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/weird_cheese
|
||||
name = "Weird cheese"
|
||||
@@ -317,23 +299,21 @@ datum/reagent/weird_cheese/reaction_turf(var/turf/T, var/volume)
|
||||
mix_message = "The disgusting mixture sloughs together horribly, emitting a foul stench."
|
||||
mix_sound = 'sound/goonstation/misc/gurggle.ogg'
|
||||
|
||||
/datum/chemical_reaction/weird_cheese/on_reaction(var/datum/reagents/holder)
|
||||
/datum/chemical_reaction/weird_cheese/on_reaction(datum/reagents/holder)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='warning'>A horrible smell assaults your nose! What in space is it?</span>")
|
||||
|
||||
datum/reagent/beans
|
||||
/datum/reagent/beans
|
||||
name = "Refried beans"
|
||||
id = "beans"
|
||||
description = "A dish made of mashed beans cooked with lard."
|
||||
reagent_state = LIQUID
|
||||
color = "#684435"
|
||||
|
||||
datum/reagent/beans/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/beans/on_mob_life(mob/living/M)
|
||||
if(prob(10))
|
||||
M.emote("fart")
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/bread
|
||||
name = "Bread"
|
||||
@@ -342,11 +322,10 @@ datum/reagent/beans/on_mob_life(var/mob/living/M as mob)
|
||||
reagent_state = SOLID
|
||||
color = "#9C5013"
|
||||
|
||||
datum/reagent/bread/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/bread/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/breadslice(T)
|
||||
return
|
||||
|
||||
/datum/reagent/vomit
|
||||
name = "Vomit"
|
||||
@@ -355,12 +334,11 @@ datum/reagent/bread/reaction_turf(var/turf/T, var/volume)
|
||||
reagent_state = LIQUID
|
||||
color = "#FFFF00"
|
||||
|
||||
datum/reagent/vomit/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/vomit/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
new /obj/effect/decal/cleanable/vomit(T)
|
||||
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
|
||||
return
|
||||
|
||||
/datum/reagent/greenvomit
|
||||
name = "Green vomit"
|
||||
@@ -369,12 +347,11 @@ datum/reagent/vomit/reaction_turf(var/turf/T, var/volume)
|
||||
reagent_state = LIQUID
|
||||
color = "#78FF74"
|
||||
|
||||
datum/reagent/greenvomit/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/greenvomit/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
new /obj/effect/decal/cleanable/vomit/green(T)
|
||||
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/ectoplasm
|
||||
@@ -385,25 +362,23 @@ datum/reagent/greenvomit/reaction_turf(var/turf/T, var/volume)
|
||||
color = "#8EAE7B"
|
||||
process_flags = ORGANIC | SYNTHETIC //Because apparently ghosts in the shell
|
||||
|
||||
datum/reagent/ectoplasm/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/ectoplasm/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == INGEST)
|
||||
var/spooky_eat = pick("Ugh, why did you eat that? Your mouth feels haunted. Haunted with bad flavors.", "Ugh, why did you eat that? It has the texture of ham aspic. From the 1950s. Left out in the sun.", "Ugh, why did you eat that? It tastes like a ghost fart.", "Ugh, why did you eat that? It tastes like flavor died.")
|
||||
to_chat(M, "<span class='warning'>[spooky_eat]</span>")
|
||||
|
||||
/datum/reagent/ectoplasm/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/ectoplasm/on_mob_life(mob/living/M)
|
||||
var/spooky_message = pick("You notice something moving out of the corner of your eye, but nothing is there...", "Your eyes twitch, you feel like something you can't see is here...", "You've got the heebie-jeebies.", "You feel uneasy.", "You shudder as if cold...", "You feel something gliding across your back...")
|
||||
if(prob(8))
|
||||
to_chat(M, "<span class='warning'>[spooky_message]</span>")
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/ectoplasm/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 10)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(T)
|
||||
return
|
||||
|
||||
/datum/reagent/soybeanoil
|
||||
name = "Space-soybean oil"
|
||||
@@ -412,13 +387,12 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
|
||||
reagent_state = LIQUID
|
||||
color = "#B1B0B0"
|
||||
|
||||
/datum/reagent/soybeanoil/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/soybeanoil/on_mob_life(mob/living/M)
|
||||
if(prob(10))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,3))
|
||||
if(prob(8))
|
||||
M.reagents.add_reagent("porktonium", 5)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/hydrogenated_soybeanoil
|
||||
name = "Partially hydrogenated space-soybean oil"
|
||||
@@ -429,7 +403,7 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
|
||||
metabolization_rate = 0.2
|
||||
overdose_threshold = 75
|
||||
|
||||
/datum/reagent/hydrogenated_soybeanoil/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/hydrogenated_soybeanoil/on_mob_life(mob/living/M)
|
||||
if(prob(15))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,3))
|
||||
if(prob(8))
|
||||
@@ -439,9 +413,8 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
|
||||
else
|
||||
metabolization_rate = 0.2
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/hydrogenated_soybeanoil/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/hydrogenated_soybeanoil/overdose_process(mob/living/M, severity)
|
||||
if(prob(33))
|
||||
to_chat(M, "<span class='warning'>You feel horribly weak.</span>")
|
||||
if(prob(10))
|
||||
@@ -469,12 +442,12 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
|
||||
reagent_state = LIQUID
|
||||
color = "#EBD7D7"
|
||||
|
||||
/datum/reagent/meatslurry/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/meatslurry/on_mob_life(mob/living/M)
|
||||
if(prob(4))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,3))
|
||||
..()
|
||||
|
||||
/datum/reagent/meatslurry/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/meatslurry/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 5 && prob(10))
|
||||
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
|
||||
@@ -519,7 +492,7 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
|
||||
reagent_state = SOLID
|
||||
color = "#AC7E67"
|
||||
|
||||
/datum/reagent/beff/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/beff/on_mob_life(mob/living/M)
|
||||
if(prob(5))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,3))
|
||||
if(prob(8))
|
||||
@@ -528,7 +501,6 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
|
||||
to_chat(M, "<span class='warning'>[pick("You feel ill.","Your stomach churns.","You feel queasy.","You feel sick.")]</span>")
|
||||
M.emote(pick("groan","moan"))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/beff
|
||||
name = "Beff"
|
||||
@@ -546,7 +518,7 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
|
||||
reagent_state = SOLID
|
||||
color = "#AC7E67"
|
||||
|
||||
datum/reagent/pepperoni/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/pepperoni/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -584,7 +556,7 @@ datum/reagent/pepperoni/reaction_mob(var/mob/living/M, var/method=TOUCH, var/vol
|
||||
reagent_state = LIQUID
|
||||
color = "#FFFAC8"
|
||||
|
||||
/datum/reagent/cholesterol/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/cholesterol/on_mob_life(mob/living/M)
|
||||
if(volume >= 25 && prob(volume*0.15))
|
||||
to_chat(M, "<span class='warning'>Your chest feels [pick("weird","uncomfortable","nasty","gross","odd","unusual","warm")]!</span>")
|
||||
M.adjustToxLoss(rand(1,2))
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
#define REM REAGENTS_EFFECT_MULTIPLIER
|
||||
|
||||
datum/reagent/silver_sulfadiazine
|
||||
/datum/reagent/silver_sulfadiazine
|
||||
name = "Silver Sulfadiazine"
|
||||
id = "silver_sulfadiazine"
|
||||
description = "This antibacterial compound is used to treat burn victims."
|
||||
@@ -12,7 +12,7 @@ datum/reagent/silver_sulfadiazine
|
||||
color = "#F0C814"
|
||||
metabolization_rate = 3
|
||||
|
||||
datum/reagent/silver_sulfadiazine/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume, var/show_message = 1)
|
||||
/datum/reagent/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
|
||||
if(iscarbon(M))
|
||||
if(method == TOUCH)
|
||||
M.adjustFireLoss(-volume)
|
||||
@@ -23,15 +23,12 @@ datum/reagent/silver_sulfadiazine/reaction_mob(var/mob/living/M as mob, var/meth
|
||||
if(show_message)
|
||||
to_chat(M, "<span class='warning'>You feel sick...</span>")
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/silver_sulfadiazine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/silver_sulfadiazine/on_mob_life(mob/living/M)
|
||||
M.adjustFireLoss(-2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/styptic_powder
|
||||
/datum/reagent/styptic_powder
|
||||
name = "Styptic Powder"
|
||||
id = "styptic_powder"
|
||||
description = "Styptic (aluminium sulfate) powder helps control bleeding and heal physical wounds."
|
||||
@@ -39,7 +36,7 @@ datum/reagent/styptic_powder
|
||||
color = "#C8A5DC"
|
||||
metabolization_rate = 3
|
||||
|
||||
datum/reagent/styptic_powder/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume, var/show_message = 1)
|
||||
/datum/reagent/styptic_powder/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
|
||||
if(iscarbon(M))
|
||||
if(method == TOUCH)
|
||||
M.adjustBruteLoss(-volume)
|
||||
@@ -51,13 +48,10 @@ datum/reagent/styptic_powder/reaction_mob(var/mob/living/M as mob, var/method=TO
|
||||
if(show_message)
|
||||
to_chat(M, "<span class='warning'>You feel gross!</span>")
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/styptic_powder/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/styptic_powder/on_mob_life(mob/living/M)
|
||||
M.adjustBruteLoss(-2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/salglu_solution
|
||||
name = "Saline-Glucose Solution"
|
||||
@@ -69,8 +63,6 @@ datum/reagent/styptic_powder/on_mob_life(var/mob/living/M as mob)
|
||||
metabolization_rate = 0.15
|
||||
|
||||
/datum/reagent/salglu_solution/on_mob_life(mob/living/M)
|
||||
if(!M)
|
||||
M = holder.my_atom
|
||||
if(prob(33))
|
||||
M.adjustBruteLoss(-2*REM)
|
||||
M.adjustFireLoss(-2*REM)
|
||||
@@ -80,15 +72,14 @@ datum/reagent/styptic_powder/on_mob_life(var/mob/living/M as mob)
|
||||
H.vessel.add_reagent("blood", 1)
|
||||
..()
|
||||
|
||||
datum/reagent/synthflesh
|
||||
/datum/reagent/synthflesh
|
||||
name = "Synthflesh"
|
||||
id = "synthflesh"
|
||||
description = "A resorbable microfibrillar collagen and protein mixture that can rapidly heal injuries when applied topically."
|
||||
reagent_state = LIQUID
|
||||
color = "#FFEBEB"
|
||||
|
||||
datum/reagent/synthflesh/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume,var/show_message = 1)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/synthflesh/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
|
||||
if(iscarbon(M))
|
||||
if(method == TOUCH)
|
||||
M.adjustBruteLoss(-1.5*volume)
|
||||
@@ -96,31 +87,27 @@ datum/reagent/synthflesh/reaction_mob(var/mob/living/M, var/method=TOUCH, var/vo
|
||||
if(show_message)
|
||||
to_chat(M, "<span class='notice'>The synthetic flesh integrates itself into your wounds, healing you.</span>")
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/synthflesh/reaction_turf(var/turf/T, var/volume) //let's make a mess!
|
||||
/datum/reagent/synthflesh/reaction_turf(turf/T, volume) //let's make a mess!
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
|
||||
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
|
||||
return
|
||||
|
||||
datum/reagent/charcoal
|
||||
/datum/reagent/charcoal
|
||||
name = "Charcoal"
|
||||
id = "charcoal"
|
||||
description = "Activated charcoal helps to absorb toxins."
|
||||
reagent_state = LIQUID
|
||||
color = "#000000"
|
||||
|
||||
datum/reagent/charcoal/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/charcoal/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(-1.5*REM)
|
||||
if(prob(50))
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/charcoal
|
||||
name = "Charcoal"
|
||||
@@ -165,7 +152,7 @@ datum/reagent/charcoal/on_mob_life(var/mob/living/M as mob)
|
||||
result_amount = 4
|
||||
mix_message = "The solution yields an astringent powder."
|
||||
|
||||
datum/reagent/omnizine
|
||||
/datum/reagent/omnizine
|
||||
name = "Omnizine"
|
||||
id = "omnizine"
|
||||
description = "Omnizine is a highly potent healing medication that can be used to treat a wide range of injuries."
|
||||
@@ -175,8 +162,7 @@ datum/reagent/omnizine
|
||||
overdose_threshold = 30
|
||||
addiction_chance = 5
|
||||
|
||||
/datum/reagent/omnizine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/omnizine/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(-1*REM)
|
||||
M.adjustOxyLoss(-1*REM)
|
||||
M.adjustBruteLoss(-2*REM)
|
||||
@@ -184,9 +170,8 @@ datum/reagent/omnizine
|
||||
if(prob(50))
|
||||
M.losebreath -= 1
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/omnizine/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/omnizine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1) //lesser
|
||||
M.stuttering += 1
|
||||
@@ -220,7 +205,7 @@ datum/reagent/omnizine
|
||||
M.Dizzy(5)
|
||||
M.Weaken(3)
|
||||
|
||||
datum/reagent/calomel
|
||||
/datum/reagent/calomel
|
||||
name = "Calomel"
|
||||
id = "calomel"
|
||||
description = "This potent purgative rids the body of impurities. It is highly toxic however and close supervision is required."
|
||||
@@ -228,8 +213,7 @@ datum/reagent/calomel
|
||||
color = "#22AB35"
|
||||
metabolization_rate = 0.8
|
||||
|
||||
datum/reagent/calomel/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/calomel/on_mob_life(mob/living/M)
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,5)
|
||||
@@ -238,7 +222,6 @@ datum/reagent/calomel/on_mob_life(var/mob/living/M as mob)
|
||||
if(prob(6))
|
||||
M.fakevomit()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/calomel
|
||||
name = "Calomel"
|
||||
@@ -249,19 +232,17 @@ datum/reagent/calomel/on_mob_life(var/mob/living/M as mob)
|
||||
min_temp = 374
|
||||
mix_message = "Stinging vapors rise from the solution."
|
||||
|
||||
datum/reagent/potass_iodide
|
||||
/datum/reagent/potass_iodide
|
||||
name = "Potassium Iodide"
|
||||
id = "potass_iodide"
|
||||
description = "Potassium Iodide is a medicinal drug used to counter the effects of radiation poisoning."
|
||||
reagent_state = LIQUID
|
||||
color = "#B4DCBE"
|
||||
|
||||
datum/reagent/potass_iodide/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/potass_iodide/on_mob_life(mob/living/M)
|
||||
if(prob(80))
|
||||
M.radiation = max(0, M.radiation-1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/potass_iodide
|
||||
name = "Potassium Iodide"
|
||||
@@ -271,15 +252,14 @@ datum/reagent/potass_iodide/on_mob_life(var/mob/living/M as mob)
|
||||
result_amount = 2
|
||||
mix_message = "The solution settles calmly and emits gentle fumes."
|
||||
|
||||
datum/reagent/pen_acid
|
||||
/datum/reagent/pen_acid
|
||||
name = "Pentetic Acid"
|
||||
id = "pen_acid"
|
||||
description = "Pentetic Acid is an aggressive chelation agent. May cause tissue damage. Use with caution."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC"
|
||||
|
||||
datum/reagent/pen_acid/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/pen_acid/on_mob_life(mob/living/M)
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,4)
|
||||
@@ -300,7 +280,7 @@ datum/reagent/pen_acid/on_mob_life(var/mob/living/M as mob)
|
||||
result_amount = 6
|
||||
mix_message = "The substance becomes very still, emitting a curious haze."
|
||||
|
||||
datum/reagent/sal_acid
|
||||
/datum/reagent/sal_acid
|
||||
name = "Salicylic Acid"
|
||||
id = "sal_acid"
|
||||
description = "This is a is a standard salicylate pain reliever and fever reducer."
|
||||
@@ -310,8 +290,7 @@ datum/reagent/sal_acid
|
||||
shock_reduction = 25
|
||||
overdose_threshold = 25
|
||||
|
||||
datum/reagent/sal_acid/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/sal_acid/on_mob_life(mob/living/M)
|
||||
if(prob(55))
|
||||
M.adjustBruteLoss(-2*REM)
|
||||
if(ishuman(M))
|
||||
@@ -319,7 +298,6 @@ datum/reagent/sal_acid/on_mob_life(var/mob/living/M as mob)
|
||||
if(H.traumatic_shock < 100)
|
||||
H.shock_stage = 0
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/sal_acid
|
||||
name = "Salicyclic Acid"
|
||||
@@ -330,7 +308,7 @@ datum/reagent/sal_acid/on_mob_life(var/mob/living/M as mob)
|
||||
mix_message = "The mixture crystallizes."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
datum/reagent/salbutamol
|
||||
/datum/reagent/salbutamol
|
||||
name = "Salbutamol"
|
||||
id = "salbutamol"
|
||||
description = "Salbutamol is a common bronchodilation medication for asthmatics. It may help with other breathing problems as well."
|
||||
@@ -338,12 +316,10 @@ datum/reagent/salbutamol
|
||||
color = "#00FFFF"
|
||||
metabolization_rate = 0.2
|
||||
|
||||
datum/reagent/salbutamol/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/salbutamol/on_mob_life(mob/living/M)
|
||||
M.adjustOxyLoss(-6*REM)
|
||||
M.losebreath = max(0, M.losebreath-4)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/salbutamol
|
||||
name = "Salbutamol"
|
||||
@@ -354,7 +330,7 @@ datum/reagent/salbutamol/on_mob_life(var/mob/living/M as mob)
|
||||
mix_message = "The solution bubbles freely, creating a head of bluish foam."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
datum/reagent/perfluorodecalin
|
||||
/datum/reagent/perfluorodecalin
|
||||
name = "Perfluorodecalin"
|
||||
id = "perfluorodecalin"
|
||||
description = "This experimental perfluoronated solvent has applications in liquid breathing and tissue oxygenation. Use with caution."
|
||||
@@ -363,8 +339,7 @@ datum/reagent/perfluorodecalin
|
||||
metabolization_rate = 0.2
|
||||
addiction_chance = 20
|
||||
|
||||
datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/perfluorodecalin/on_mob_life(mob/living/carbon/human/M)
|
||||
M.adjustOxyLoss(-25*REM)
|
||||
if(volume >= 4)
|
||||
M.losebreath = max(M.losebreath, 6)
|
||||
@@ -373,7 +348,6 @@ datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
|
||||
M.adjustBruteLoss(-1*REM)
|
||||
M.adjustFireLoss(-1*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/perfluorodecalin
|
||||
name = "Perfluorodecalin"
|
||||
@@ -395,8 +369,7 @@ datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
|
||||
overdose_threshold = 35
|
||||
addiction_chance = 25
|
||||
|
||||
/datum/reagent/ephedrine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/ephedrine/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
@@ -411,9 +384,8 @@ datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ephedrine/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/ephedrine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 1)
|
||||
@@ -442,7 +414,7 @@ datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
|
||||
result_amount = 4
|
||||
mix_message = "The solution fizzes and gives off toxic fumes."
|
||||
|
||||
datum/reagent/diphenhydramine
|
||||
/datum/reagent/diphenhydramine
|
||||
name = "Diphenhydramine"
|
||||
id = "diphenhydramine"
|
||||
description = "Anti-allergy medication. May cause drowsiness, do not operate heavy machinery while using this."
|
||||
@@ -450,8 +422,7 @@ datum/reagent/diphenhydramine
|
||||
color = "#5BCBE1"
|
||||
addiction_chance = 10
|
||||
|
||||
datum/reagent/diphenhydramine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/diphenhydramine/on_mob_life(mob/living/M)
|
||||
M.jitteriness = max(0, M.jitteriness-20)
|
||||
M.reagents.remove_reagent("histamine",3)
|
||||
M.reagents.remove_reagent("itching_powder",3)
|
||||
@@ -462,7 +433,6 @@ datum/reagent/diphenhydramine/on_mob_life(var/mob/living/M as mob)
|
||||
M.drowsyness += 1
|
||||
M.visible_message("<span class='notice'>[M] looks a bit dazed.</span>")
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/diphenhydramine
|
||||
name = "Diphenhydramine"
|
||||
@@ -473,7 +443,7 @@ datum/reagent/diphenhydramine/on_mob_life(var/mob/living/M as mob)
|
||||
mix_message = "The mixture fizzes gently."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
datum/reagent/morphine
|
||||
/datum/reagent/morphine
|
||||
name = "Morphine"
|
||||
id = "morphine"
|
||||
description = "A strong but highly addictive opiate painkiller with sedative side effects."
|
||||
@@ -483,8 +453,7 @@ datum/reagent/morphine
|
||||
addiction_chance = 50
|
||||
shock_reduction = 50
|
||||
|
||||
datum/reagent/morphine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/morphine/on_mob_life(mob/living/M)
|
||||
M.jitteriness = max(0, M.jitteriness-25)
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
@@ -500,10 +469,8 @@ datum/reagent/morphine/on_mob_life(var/mob/living/M as mob)
|
||||
if(H.traumatic_shock < 100)
|
||||
H.shock_stage = 0
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/oculine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/oculine/on_mob_life(mob/living/M)
|
||||
if(prob(80))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -521,7 +488,6 @@ datum/reagent/oculine/on_mob_life(var/mob/living/M as mob)
|
||||
if(prob(30))
|
||||
M.ear_deaf = 0
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/oculine
|
||||
name = "Oculine"
|
||||
@@ -531,7 +497,7 @@ datum/reagent/oculine/on_mob_life(var/mob/living/M as mob)
|
||||
result_amount = 3
|
||||
mix_message = "The mixture settles, becoming a milky white."
|
||||
|
||||
datum/reagent/oculine
|
||||
/datum/reagent/oculine
|
||||
name = "Oculine"
|
||||
id = "oculine"
|
||||
description = "Oculine is a saline eye medication with mydriatic and antibiotic effects."
|
||||
@@ -540,7 +506,7 @@ datum/reagent/oculine
|
||||
metabolization_rate = 0.4
|
||||
var/cycle_amount = 0
|
||||
|
||||
datum/reagent/atropine
|
||||
/datum/reagent/atropine
|
||||
name = "Atropine"
|
||||
id = "atropine"
|
||||
description = "Atropine is a potent cardiac resuscitant but it can causes confusion, dizzyness and hyperthermia."
|
||||
@@ -549,8 +515,7 @@ datum/reagent/atropine
|
||||
metabolization_rate = 0.2
|
||||
overdose_threshold = 25
|
||||
|
||||
datum/reagent/atropine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/atropine/on_mob_life(mob/living/M)
|
||||
M.dizziness += 1
|
||||
M.confused = max(M.confused, 5)
|
||||
if(prob(4))
|
||||
@@ -567,7 +532,6 @@ datum/reagent/atropine/on_mob_life(var/mob/living/M as mob)
|
||||
M.adjustToxLoss(1)
|
||||
M.reagents.remove_reagent("sarin", 20)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/atropine
|
||||
name = "Atropine"
|
||||
@@ -577,7 +541,7 @@ datum/reagent/atropine/on_mob_life(var/mob/living/M as mob)
|
||||
result_amount = 5
|
||||
mix_message = "A horrid smell like something died drifts from the mixture."
|
||||
|
||||
datum/reagent/epinephrine
|
||||
/datum/reagent/epinephrine
|
||||
name = "Epinephrine"
|
||||
id = "epinephrine"
|
||||
description = "Epinephrine is a potent neurotransmitter, used in medical emergencies to halt anaphylactic shock and prevent cardiac arrest."
|
||||
@@ -586,8 +550,7 @@ datum/reagent/epinephrine
|
||||
metabolization_rate = 0.2
|
||||
overdose_threshold = 20
|
||||
|
||||
datum/reagent/epinephrine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/epinephrine/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
if(prob(20))
|
||||
M.AdjustParalysis(-1)
|
||||
@@ -609,9 +572,8 @@ datum/reagent/epinephrine/on_mob_life(var/mob/living/M as mob)
|
||||
M.adjustBruteLoss(-1*REM)
|
||||
M.adjustFireLoss(-1*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/epinephrine/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/epinephrine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 1)
|
||||
@@ -641,7 +603,7 @@ datum/reagent/epinephrine/on_mob_life(var/mob/living/M as mob)
|
||||
mix_message = "Tiny white crystals precipitate out of the solution."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
datum/reagent/strange_reagent
|
||||
/datum/reagent/strange_reagent
|
||||
name = "Strange Reagent"
|
||||
id = "strange_reagent"
|
||||
description = "A glowing green fluid highly reminiscent of nuclear waste."
|
||||
@@ -649,7 +611,7 @@ datum/reagent/strange_reagent
|
||||
color = "#A0E85E"
|
||||
metabolization_rate = 0.2
|
||||
|
||||
datum/reagent/strange_reagent/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(isanimal(M))
|
||||
if(method == TOUCH)
|
||||
var/mob/living/simple_animal/SM = M
|
||||
@@ -680,15 +642,12 @@ datum/reagent/strange_reagent/reaction_mob(var/mob/living/M as mob, var/method=T
|
||||
M.stat = UNCONSCIOUS
|
||||
add_logs(M, M, "revived", object="strange reagent")
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/strange_reagent/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/strange_reagent/on_mob_life(mob/living/M)
|
||||
if(prob(10))
|
||||
M.adjustBruteLoss(2*REM)
|
||||
M.adjustToxLoss(2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/strange_reagent
|
||||
name = "Strange Reagent"
|
||||
@@ -698,7 +657,7 @@ datum/reagent/strange_reagent/on_mob_life(var/mob/living/M as mob)
|
||||
result_amount = 3
|
||||
mix_message = "The substance begins moving on its own somehow."
|
||||
|
||||
datum/reagent/life
|
||||
/datum/reagent/life
|
||||
name = "Life"
|
||||
id = "life"
|
||||
description = "Can create a life form, however it is not guaranteed to be friendly. May want to have Security on hot standby."
|
||||
@@ -714,13 +673,12 @@ datum/reagent/life
|
||||
result_amount = 3
|
||||
min_temp = 374
|
||||
|
||||
/datum/chemical_reaction/life/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume)
|
||||
chemical_mob_spawn(holder, 1, "Life")
|
||||
|
||||
/datum/reagent/mannitol/on_mob_life(mob/living/M as mob)
|
||||
/datum/reagent/mannitol/on_mob_life(mob/living/M)
|
||||
M.adjustBrainLoss(-3)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/mannitol
|
||||
name = "Mannitol"
|
||||
@@ -736,7 +694,7 @@ datum/reagent/life
|
||||
description = "Mannitol is a sugar alcohol that can help alleviate cranial swelling."
|
||||
color = "#D1D1F1"
|
||||
|
||||
/datum/reagent/mutadone/on_mob_life(var/mob/living/carbon/human/M as mob)
|
||||
/datum/reagent/mutadone/on_mob_life(mob/living/carbon/human/M)
|
||||
M.jitteriness = 0
|
||||
var/needs_update = M.mutations.len > 0 || M.disabilities > 0 || M.sdisabilities > 0
|
||||
|
||||
@@ -753,7 +711,6 @@ datum/reagent/life
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.update_mutations()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/mutadone
|
||||
name = "Mutadone"
|
||||
@@ -770,13 +727,13 @@ datum/reagent/life
|
||||
description = "Mutadone is an experimental bromide that can cure genetic abnomalities."
|
||||
color = "#5096C8"
|
||||
|
||||
datum/reagent/antihol
|
||||
/datum/reagent/antihol
|
||||
name = "Antihol"
|
||||
id = "antihol"
|
||||
description = "A medicine which quickly eliminates alcohol in the body."
|
||||
color = "#009CA8"
|
||||
|
||||
datum/reagent/antihol/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/antihol/on_mob_life(mob/living/M)
|
||||
M.slurring = 0
|
||||
M.AdjustDrunk(-4)
|
||||
M.reagents.remove_all_type(/datum/reagent/ethanol, 8, 0, 1)
|
||||
@@ -800,8 +757,7 @@ datum/reagent/antihol/on_mob_life(var/mob/living/M as mob)
|
||||
color = "#C8A5DC"
|
||||
metabolization_rate = 0.4
|
||||
|
||||
datum/reagent/stimulants/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/stimulants/on_mob_life(mob/living/M)
|
||||
if(volume > 5)
|
||||
M.adjustOxyLoss(-5*REM)
|
||||
M.adjustToxLoss(-5*REM)
|
||||
@@ -823,11 +779,9 @@ datum/reagent/stimulants/on_mob_life(var/mob/living/M as mob)
|
||||
M.Stun(3)
|
||||
..()
|
||||
|
||||
datum/reagent/stimulants/reagent_deleted(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/stimulants/reagent_deleted(mob/living/M)
|
||||
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent
|
||||
name = "Stimulative Agent"
|
||||
@@ -850,24 +804,26 @@ datum/reagent/stimulants/reagent_deleted(var/mob/living/M as mob)
|
||||
M.adjustStaminaLoss(-5*REM)
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent/reagent_deleted(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOFAST
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent/overdose_process(mob/living/M, severity)
|
||||
if(prob(33))
|
||||
M.adjustStaminaLoss(2.5*REM)
|
||||
M.adjustToxLoss(1*REM)
|
||||
M.losebreath++
|
||||
|
||||
datum/reagent/insulin
|
||||
/datum/reagent/insulin
|
||||
name = "Insulin"
|
||||
id = "insulin"
|
||||
description = "A hormone generated by the pancreas responsible for metabolizing carbohydrates and fat in the bloodstream."
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC"
|
||||
|
||||
datum/reagent/insulin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/insulin/on_mob_life(mob/living/M)
|
||||
M.reagents.remove_reagent("sugar", 5)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/simethicone
|
||||
@@ -884,7 +840,7 @@ datum/reagent/insulin/on_mob_life(var/mob/living/M as mob)
|
||||
result_amount = 4
|
||||
|
||||
|
||||
datum/reagent/teporone
|
||||
/datum/reagent/teporone
|
||||
name = "Teporone"
|
||||
id = "teporone"
|
||||
description = "This experimental plasma-based compound seems to regulate body temperature."
|
||||
@@ -893,14 +849,12 @@ datum/reagent/teporone
|
||||
addiction_chance = 20
|
||||
overdose_threshold = 50
|
||||
|
||||
datum/reagent/teporone/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/teporone/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature > 310)
|
||||
M.bodytemperature -= 10
|
||||
if(M.bodytemperature < 310)
|
||||
M.bodytemperature += 10
|
||||
M.bodytemperature = max(310, M.bodytemperature - (40 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
else if(M.bodytemperature < 311)
|
||||
M.bodytemperature = min(310, M.bodytemperature + (40 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/teporone
|
||||
name = "Teporone"
|
||||
@@ -911,15 +865,14 @@ datum/reagent/teporone/on_mob_life(var/mob/living/M as mob)
|
||||
mix_message = "The mixture turns an odd lavender color."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
datum/reagent/haloperidol
|
||||
/datum/reagent/haloperidol
|
||||
name = "Haloperidol"
|
||||
id = "haloperidol"
|
||||
description = "Haloperidol is a powerful antipsychotic and sedative. Will help control psychiatric problems, but may cause brain damage."
|
||||
reagent_state = LIQUID
|
||||
color = "#FFDCFF"
|
||||
|
||||
datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/haloperidol/on_mob_life(mob/living/M)
|
||||
M.reagents.remove_reagent("crank", 5)
|
||||
M.reagents.remove_reagent("methamphetamine", 5)
|
||||
M.reagents.remove_reagent("space_drugs", 5)
|
||||
@@ -940,7 +893,6 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
|
||||
if(prob(20))
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/haloperidol
|
||||
name = "Haloperidol"
|
||||
@@ -958,8 +910,7 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
|
||||
reagent_state = LIQUID
|
||||
color = "#96DEDE"
|
||||
|
||||
/datum/reagent/ether/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/ether/on_mob_life(mob/living/M)
|
||||
M.jitteriness = max(M.jitteriness-25,0)
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
@@ -971,7 +922,6 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
|
||||
M.Paralyse(15)
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/ether
|
||||
name = "Ether"
|
||||
@@ -1001,15 +951,15 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
|
||||
required_reagents = list("oil" = 1, "sterilizine" = 1)
|
||||
result_amount = 2
|
||||
|
||||
/datum/reagent/degreaser/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
if(!istype(T)) return
|
||||
/datum/reagent/degreaser/reaction_turf(turf/simulated/T, volume)
|
||||
if(!istype(T))
|
||||
return
|
||||
src = null
|
||||
if(volume >= 1)
|
||||
if(istype(T) && T.wet)
|
||||
T.MakeDry(TURF_WET_LUBE)
|
||||
|
||||
/datum/reagent/degreaser/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/degreaser/on_mob_life(mob/living/M)
|
||||
if(prob(50)) //Same effects as coffee, to help purge ill effects like paralysis
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
@@ -1023,7 +973,6 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
|
||||
else
|
||||
M.reagents.remove_reagent(R.id,1)
|
||||
..()
|
||||
return
|
||||
|
||||
//Liquid Solder: Mannitol
|
||||
/datum/reagent/liquid_solder
|
||||
@@ -1034,10 +983,9 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
|
||||
color = "#D7B395"
|
||||
process_flags = SYNTHETIC
|
||||
|
||||
/datum/reagent/liquid_solder/on_mob_life(mob/living/M as mob)
|
||||
/datum/reagent/liquid_solder/on_mob_life(mob/living/M)
|
||||
M.adjustBrainLoss(-3)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/liquid_solder
|
||||
name = "Liquid Solder"
|
||||
@@ -1049,19 +997,18 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
|
||||
mix_message = "The solution gently swirls with a metallic sheen."
|
||||
|
||||
|
||||
datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs
|
||||
/datum/reagent/medicine/syndicate_nanites //Used exclusively by Syndicate medical cyborgs
|
||||
name = "Restorative Nanites"
|
||||
id = "syndicate_nanites"
|
||||
description = "Miniature medical robots that swiftly restore bodily damage. May begin to attack their host's cells in high amounts."
|
||||
reagent_state = SOLID
|
||||
color = "#555555"
|
||||
|
||||
datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M)
|
||||
/datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M)
|
||||
M.adjustBruteLoss(-5*REM) //A ton of healing - this is a 50 telecrystal investment.
|
||||
M.adjustFireLoss(-5*REM)
|
||||
M.adjustOxyLoss(-15*REM)
|
||||
M.adjustToxLoss(-5*REM)
|
||||
M.adjustBrainLoss(-15*REM)
|
||||
M.adjustCloneLoss(-3*REM)
|
||||
..()
|
||||
return
|
||||
..()
|
||||
@@ -12,16 +12,18 @@
|
||||
var/chem_temp = 300
|
||||
var/list/datum/reagent/addiction_list = new/list()
|
||||
|
||||
/datum/reagents/proc/metabolize(var/mob/M)
|
||||
/datum/reagents/proc/metabolize(mob/living/M)
|
||||
if(M)
|
||||
if(!istype(M, /mob/living)) //Non-living mobs can't metabolize reagents, so don't bother trying (runtime safety check)
|
||||
return
|
||||
chem_temp = M.bodytemperature
|
||||
handle_reactions()
|
||||
for(var/A in reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if(!istype(R))
|
||||
continue
|
||||
if(!R.holder)
|
||||
continue
|
||||
if(!M)
|
||||
M = R.holder.my_atom
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
//Check if this mob's species is set and can process this type of reagent
|
||||
@@ -95,42 +97,28 @@
|
||||
R.on_tick()
|
||||
return
|
||||
|
||||
/datum/reagents/proc/check_gofast(var/mob/M)
|
||||
if(istype(M, /mob))
|
||||
if(M.reagents.has_reagent("unholywater")||M.reagents.has_reagent("nuka_cola")||M.reagents.has_reagent("stimulative_agent"))
|
||||
return 1
|
||||
else
|
||||
M.status_flags &= ~GOTTAGOFAST
|
||||
|
||||
/datum/reagents/proc/check_goreallyfast(var/mob/M)
|
||||
if(istype(M, /mob))
|
||||
if(M.reagents.has_reagent("methamphetamine"))
|
||||
return 1
|
||||
else
|
||||
M.status_flags &= ~GOTTAGOREALLYFAST
|
||||
|
||||
// Called every time reagent containers process.
|
||||
/datum/reagent/proc/on_tick(var/data)
|
||||
/datum/reagent/proc/on_tick(data)
|
||||
return
|
||||
|
||||
// Called when the reagent container is hit by an explosion
|
||||
/datum/reagent/proc/on_ex_act(var/severity)
|
||||
/datum/reagent/proc/on_ex_act(severity)
|
||||
return
|
||||
|
||||
// Called if the reagent has passed the overdose threshold and is set to be triggering overdose effects
|
||||
/datum/reagent/proc/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/proc/overdose_process(mob/living/M, severity)
|
||||
var/effect = rand(1, 100) - severity
|
||||
if(effect <= 8)
|
||||
M.adjustToxLoss(severity)
|
||||
return effect
|
||||
|
||||
/datum/reagent/proc/overdose_start(var/mob/living/M as mob)
|
||||
/datum/reagent/proc/overdose_start(mob/living/M)
|
||||
return
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage1(var/mob/living/M as mob)
|
||||
/datum/reagent/proc/addiction_act_stage1(mob/living/M)
|
||||
return
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage2(var/mob/living/M as mob)
|
||||
/datum/reagent/proc/addiction_act_stage2(mob/living/M)
|
||||
if(prob(8))
|
||||
M.emote("shiver")
|
||||
if(prob(8))
|
||||
@@ -138,7 +126,7 @@
|
||||
if(prob(4))
|
||||
to_chat(M, "<span class='notice'>You feel a dull headache.</span>")
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage3(var/mob/living/M as mob)
|
||||
/datum/reagent/proc/addiction_act_stage3(mob/living/M)
|
||||
if(prob(8))
|
||||
M.emote("twitch_s")
|
||||
if(prob(8))
|
||||
@@ -146,7 +134,7 @@
|
||||
if(prob(4))
|
||||
to_chat(M, "<span class='warning'>You begin craving [name]!</span>")
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage4(var/mob/living/M as mob)
|
||||
/datum/reagent/proc/addiction_act_stage4(mob/living/M)
|
||||
if(prob(8))
|
||||
M.emote("twitch")
|
||||
if(prob(4))
|
||||
@@ -154,7 +142,7 @@
|
||||
if(prob(4))
|
||||
to_chat(M, "<span class='warning'>You REALLY crave some [name]!</span>")
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage5(var/mob/living/M as mob)
|
||||
/datum/reagent/proc/addiction_act_stage5(mob/living/M)
|
||||
if(prob(8))
|
||||
M.emote("twitch")
|
||||
if(prob(6))
|
||||
|
||||
@@ -5,67 +5,64 @@
|
||||
|
||||
var/list/random_color_list = list("#00aedb","#a200ff","#f47835","#d41243","#d11141","#00b159","#00aedb","#f37735","#ffc425","#008744","#0057e7","#d62d20","#ffa700")
|
||||
|
||||
datum/reagent/oil
|
||||
/datum/reagent/oil
|
||||
name = "Oil"
|
||||
id = "oil"
|
||||
description = "A decent lubricant for machines. High in benzene, naptha and other hydrocarbons."
|
||||
reagent_state = LIQUID
|
||||
color = "#3C3C3C"
|
||||
|
||||
datum/reagent/iodine
|
||||
/datum/reagent/iodine
|
||||
name = "Iodine"
|
||||
id = "iodine"
|
||||
description = "A purple gaseous element."
|
||||
reagent_state = GAS
|
||||
color = "#493062"
|
||||
|
||||
datum/reagent/carpet
|
||||
/datum/reagent/carpet
|
||||
name = "Carpet"
|
||||
id = "carpet"
|
||||
description = "A covering of thick fabric used on floors. This type looks particularly gross."
|
||||
reagent_state = LIQUID
|
||||
color = "#701345"
|
||||
|
||||
/datum/reagent/carpet/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
/datum/reagent/carpet/reaction_turf(turf/simulated/T, volume)
|
||||
if(istype(T, /turf/simulated/floor/plating) || istype(T, /turf/simulated/floor/plasteel))
|
||||
var/turf/simulated/floor/F = T
|
||||
F.ChangeTurf(/turf/simulated/floor/carpet)
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/bromine
|
||||
/datum/reagent/bromine
|
||||
name = "Bromine"
|
||||
id = "bromine"
|
||||
description = "A red-brown liquid element."
|
||||
reagent_state = LIQUID
|
||||
color = "#4E3A3A"
|
||||
|
||||
datum/reagent/phenol
|
||||
/datum/reagent/phenol
|
||||
name = "Phenol"
|
||||
id = "phenol"
|
||||
description = "Also known as carbolic acid, this is a useful building block in organic chemistry."
|
||||
reagent_state = LIQUID
|
||||
color = "#525050"
|
||||
|
||||
datum/reagent/ash
|
||||
/datum/reagent/ash
|
||||
name = "Ash"
|
||||
id = "ash"
|
||||
description = "Ashes to ashes, dust to dust."
|
||||
reagent_state = LIQUID
|
||||
color = "#191919"
|
||||
|
||||
datum/reagent/acetone
|
||||
/datum/reagent/acetone
|
||||
name = "Acetone"
|
||||
id = "acetone"
|
||||
description = "Pure 100% nail polish remover, also works as an industrial solvent."
|
||||
reagent_state = LIQUID
|
||||
color = "#474747"
|
||||
|
||||
/datum/reagent/acetone/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/acetone/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/acetone
|
||||
name = "acetone"
|
||||
@@ -111,7 +108,7 @@ datum/reagent/acetone
|
||||
mix_sound = null
|
||||
no_message = 1
|
||||
|
||||
datum/reagent/colorful_reagent
|
||||
/datum/reagent/colorful_reagent
|
||||
name = "Colorful Reagent"
|
||||
id = "colorful_reagent"
|
||||
description = "It's pure liquid colors. That's a thing now."
|
||||
@@ -126,22 +123,20 @@ datum/reagent/colorful_reagent
|
||||
result_amount = 6
|
||||
mix_message = "The substance flashes multiple colors and emits the smell of a pocket protector."
|
||||
|
||||
datum/reagent/colorful_reagent/reaction_mob(var/mob/living/simple_animal/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/colorful_reagent/reaction_mob(mob/living/simple_animal/M, method=TOUCH, volume)
|
||||
if(M && istype(M))
|
||||
M.color = pick(random_color_list)
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/colorful_reagent/reaction_obj(var/obj/O, var/volume)
|
||||
/datum/reagent/colorful_reagent/reaction_obj(obj/O, volume)
|
||||
if(O)
|
||||
O.color = pick(random_color_list)
|
||||
..()
|
||||
return
|
||||
datum/reagent/colorful_reagent/reaction_turf(var/turf/T, var/volume)
|
||||
|
||||
/datum/reagent/colorful_reagent/reaction_turf(turf/T, volume)
|
||||
if(T)
|
||||
T.color = pick(random_color_list)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/corgium
|
||||
name = "corgium"
|
||||
@@ -151,19 +146,17 @@ datum/reagent/colorful_reagent/reaction_turf(var/turf/T, var/volume)
|
||||
result_amount = 3
|
||||
min_temp = 374
|
||||
|
||||
datum/reagent/corgium
|
||||
/datum/reagent/corgium
|
||||
name = "Corgium"
|
||||
id = "corgium"
|
||||
description = "Corgi in liquid form. Don't ask."
|
||||
reagent_state = LIQUID
|
||||
color = "#F9A635"
|
||||
|
||||
/datum/chemical_reaction/corgium/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/corgium/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /mob/living/simple_animal/pet/corgi(location)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/chemical_reaction/flaptonium
|
||||
name = "Flaptonium"
|
||||
@@ -174,14 +167,12 @@ datum/reagent/corgium
|
||||
min_temp = 374
|
||||
mix_message = "The substance turns an airy sky-blue and foams up into a new shape."
|
||||
|
||||
/datum/chemical_reaction/flaptonium/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/flaptonium/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /mob/living/simple_animal/parrot(location)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
datum/reagent/hair_dye
|
||||
/datum/reagent/hair_dye
|
||||
name = "Quantum Hair Dye"
|
||||
id = "hair_dye"
|
||||
description = "A rather tubular and gnarly way of coloring totally bodacious hair. Duuuudddeee."
|
||||
@@ -195,7 +186,7 @@ datum/reagent/hair_dye
|
||||
required_reagents = list("colorful_reagent" = 1, "hairgrownium" = 1)
|
||||
result_amount = 2
|
||||
|
||||
datum/reagent/hair_dye/reaction_mob(var/mob/living/M, var/volume)
|
||||
/datum/reagent/hair_dye/reaction_mob(mob/living/M, volume)
|
||||
if(M && ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
|
||||
@@ -208,9 +199,8 @@ datum/reagent/hair_dye/reaction_mob(var/mob/living/M, var/volume)
|
||||
H.update_hair()
|
||||
H.update_fhair()
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/hairgrownium
|
||||
/datum/reagent/hairgrownium
|
||||
name = "Hairgrownium"
|
||||
id = "hairgrownium"
|
||||
description = "A mysterious chemical purported to help grow hair. Often found on late-night TV infomercials."
|
||||
@@ -226,7 +216,7 @@ datum/reagent/hairgrownium
|
||||
result_amount = 3
|
||||
mix_message = "The liquid becomes slightly hairy."
|
||||
|
||||
datum/reagent/hairgrownium/reaction_mob(var/mob/living/M, var/volume)
|
||||
/datum/reagent/hairgrownium/reaction_mob(mob/living/M, volume)
|
||||
if(M && ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
|
||||
@@ -235,9 +225,8 @@ datum/reagent/hairgrownium/reaction_mob(var/mob/living/M, var/volume)
|
||||
H.update_hair()
|
||||
H.update_fhair()
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/super_hairgrownium
|
||||
/datum/reagent/super_hairgrownium
|
||||
name = "Super Hairgrownium"
|
||||
id = "super_hairgrownium"
|
||||
description = "A mysterious and powerful chemical purported to cause rapid hair growth."
|
||||
@@ -254,7 +243,7 @@ datum/reagent/super_hairgrownium
|
||||
result_amount = 3
|
||||
mix_message = "The liquid becomes amazingly furry and smells peculiar."
|
||||
|
||||
datum/reagent/super_hairgrownium/reaction_mob(var/mob/living/M, var/volume)
|
||||
/datum/reagent/super_hairgrownium/reaction_mob(mob/living/M, volume)
|
||||
if(M && ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
|
||||
@@ -278,9 +267,8 @@ datum/reagent/super_hairgrownium/reaction_mob(var/mob/living/M, var/volume)
|
||||
H.equip_to_slot(fakemoustache, slot_wear_mask)
|
||||
to_chat(H, "<span class='notice'>Hair bursts forth from your every follicle!")
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/fartonium
|
||||
/datum/reagent/fartonium
|
||||
name = "Fartonium"
|
||||
id = "fartonium"
|
||||
description = "Oh god it never ends, IT NEVER STOPS!"
|
||||
@@ -295,9 +283,7 @@ datum/reagent/fartonium
|
||||
result_amount = 2
|
||||
mix_message = "The substance makes a little 'toot' noise and starts to smell pretty bad."
|
||||
|
||||
datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
|
||||
/datum/reagent/fartonium/on_mob_life(mob/living/M)
|
||||
if(prob(66))
|
||||
M.emote("fart")
|
||||
|
||||
@@ -312,8 +298,6 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
|
||||
M.emote("scream")
|
||||
M.adjustBruteLoss(4)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/chemical_reaction/soapification
|
||||
name = "Soapification"
|
||||
@@ -327,7 +311,6 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/chemical_reaction/soapification/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /obj/item/weapon/soap/homemade(location)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/candlefication
|
||||
name = "Candlefication"
|
||||
@@ -340,8 +323,6 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/chemical_reaction/candlefication/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /obj/item/candle(location)
|
||||
return
|
||||
|
||||
|
||||
/datum/chemical_reaction/meatification
|
||||
name = "Meatification"
|
||||
@@ -353,7 +334,6 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/chemical_reaction/meatification/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/meatproduct(location)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/lye
|
||||
name = "lye"
|
||||
@@ -376,12 +356,10 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
|
||||
reagent_state = LIQUID
|
||||
color = "#FF83A5"
|
||||
|
||||
/datum/reagent/love/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/love/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
to_chat(M, "<span class='notice'>You feel loved!</span>")
|
||||
|
||||
/datum/reagent/love/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
|
||||
/datum/reagent/love/on_mob_life(mob/living/M)
|
||||
if(M.a_intent == I_HARM)
|
||||
M.a_intent = I_HELP
|
||||
|
||||
@@ -410,35 +388,35 @@ datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
|
||||
|
||||
///Alchemical Reagents
|
||||
|
||||
datum/reagent/eyenewt
|
||||
/datum/reagent/eyenewt
|
||||
name = "Eye of newt"
|
||||
id = "eyenewt"
|
||||
description = "A potent alchemic ingredient."
|
||||
reagent_state = LIQUID
|
||||
color = "#050519"
|
||||
|
||||
datum/reagent/toefrog
|
||||
/datum/reagent/toefrog
|
||||
name = "Toe of frog"
|
||||
id = "toefrog"
|
||||
description = "A potent alchemic ingredient."
|
||||
reagent_state = LIQUID
|
||||
color = "#092D09"
|
||||
|
||||
datum/reagent/woolbat
|
||||
/datum/reagent/woolbat
|
||||
name = "Wool of bat"
|
||||
id = "woolbat"
|
||||
description = "A potent alchemic ingredient."
|
||||
reagent_state = LIQUID
|
||||
color = "#080808"
|
||||
|
||||
datum/reagent/tonguedog
|
||||
/datum/reagent/tonguedog
|
||||
name = "Tongue of dog"
|
||||
id = "tonguedog"
|
||||
description = "A potent alchemic ingredient."
|
||||
reagent_state = LIQUID
|
||||
color = "#2D0909"
|
||||
|
||||
datum/reagent/triplepiss
|
||||
/datum/reagent/triplepiss
|
||||
name = "Triplepiss"
|
||||
id = "triplepiss"
|
||||
description = "Ewwwwwwwww."
|
||||
|
||||
@@ -36,20 +36,17 @@
|
||||
result_amount = 2
|
||||
min_temp = 424
|
||||
|
||||
/datum/reagent/clf3/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/clf3/on_mob_life(mob/living/M)
|
||||
M.adjust_fire_stacks(4)
|
||||
M.adjustFireLoss(0.35*M.fire_stacks)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/clf3/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/clf3/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
for(var/turf/turf in range(1,T))
|
||||
new /obj/effect/hotspot(turf)
|
||||
return
|
||||
|
||||
/datum/reagent/clf3/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
/datum/reagent/clf3/reaction_turf(turf/simulated/T, volume)
|
||||
if(istype(T, /turf/simulated/floor/plating))
|
||||
var/turf/simulated/floor/plating/F = T
|
||||
if(prob(1))
|
||||
@@ -66,14 +63,12 @@
|
||||
W.ChangeTurf(/turf/simulated/floor)
|
||||
if(istype(T, /turf/simulated/shuttle/))
|
||||
new /obj/effect/hotspot(T)
|
||||
return
|
||||
|
||||
/datum/reagent/clf3/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/clf3/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH && isliving(M))
|
||||
M.adjust_fire_stacks(5)
|
||||
M.IgniteMob()
|
||||
M.bodytemperature += 30
|
||||
return
|
||||
|
||||
/datum/reagent/sorium
|
||||
name = "Sorium"
|
||||
@@ -96,11 +91,11 @@
|
||||
required_reagents = list("sorium" = 1)
|
||||
min_temp = 474
|
||||
|
||||
/datum/chemical_reaction/sorium_vortex/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/sorium_vortex/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/turf/simulated/T = get_turf(holder.my_atom)
|
||||
goonchem_vortex(T, 1, 5, 6)
|
||||
|
||||
/datum/chemical_reaction/sorium/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/sorium/on_reaction(datum/reagents/holder, created_volume)
|
||||
if(holder.has_reagent("stabilizing_agent"))
|
||||
return
|
||||
holder.remove_reagent("sorium", created_volume)
|
||||
@@ -128,19 +123,18 @@
|
||||
required_reagents = list("liquid_dark_matter" = 1)
|
||||
min_temp = 474
|
||||
|
||||
/datum/chemical_reaction/ldm_vortex/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/ldm_vortex/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/turf/simulated/T = get_turf(holder.my_atom)
|
||||
goonchem_vortex(T, 0, 5, 6)
|
||||
return
|
||||
/datum/chemical_reaction/liquid_dark_matter/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
|
||||
/datum/chemical_reaction/liquid_dark_matter/on_reaction(datum/reagents/holder, created_volume)
|
||||
if(holder.has_reagent("stabilizing_agent"))
|
||||
return
|
||||
holder.remove_reagent("liquid_dark_matter", created_volume)
|
||||
var/turf/simulated/T = get_turf(holder.my_atom)
|
||||
goonchem_vortex(T, 0, 5, 6)
|
||||
return
|
||||
|
||||
/proc/goonchem_vortex(var/turf/simulated/T, var/setting_type, var/range, var/pull_times)
|
||||
/proc/goonchem_vortex(turf/simulated/T, setting_type, range, pull_times)
|
||||
for(var/atom/movable/X in orange(range, T))
|
||||
if(istype(X, /obj/effect))
|
||||
continue //stop pulling smoke and hotspots please
|
||||
@@ -182,21 +176,19 @@
|
||||
no_message = 1
|
||||
mix_sound = null
|
||||
|
||||
datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
/datum/reagent/blackpowder/reaction_turf(turf/T, volume) //oh shit
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
if(!locate(/obj/effect/decal/cleanable/dirt/blackpowder) in get_turf(T)) //let's not have hundreds of decals of black powder on the same turf
|
||||
new /obj/effect/decal/cleanable/dirt/blackpowder(T)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/blackpowder_explosion/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/blackpowder_explosion/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(2, 1, location)
|
||||
s.start()
|
||||
sleep(rand(20,30))
|
||||
blackpowder_detonate(holder, created_volume)
|
||||
return
|
||||
|
||||
/*
|
||||
/datum/reagent/blackpowder/on_ex_act()
|
||||
@@ -209,7 +201,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
holder.remove_reagent("blackpowder", volume)
|
||||
return */
|
||||
|
||||
/proc/blackpowder_detonate(var/datum/reagents/holder, var/created_volume)
|
||||
/proc/blackpowder_detonate(datum/reagents/holder, created_volume)
|
||||
var/turf/simulated/T = get_turf(holder.my_atom)
|
||||
var/ex_severe = round(created_volume / 100)
|
||||
var/ex_heavy = round(created_volume / 42)
|
||||
@@ -220,7 +212,6 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
if(istype(holder.my_atom, /obj/effect/decal/cleanable/dirt/blackpowder))
|
||||
spawn(0)
|
||||
qdel(holder.my_atom)
|
||||
return
|
||||
|
||||
/datum/reagent/flash_powder
|
||||
name = "Flash Powder"
|
||||
@@ -243,7 +234,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
required_reagents = list("flash_powder" = 1)
|
||||
min_temp = 374
|
||||
|
||||
/datum/chemical_reaction/flash_powder_flash/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(2, 1, location)
|
||||
@@ -256,7 +247,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
C.Stun(5)
|
||||
|
||||
|
||||
/datum/chemical_reaction/flash_powder/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/flash_powder/on_reaction(datum/reagents/holder, created_volume)
|
||||
if(holder.has_reagent("stabilizing_agent"))
|
||||
return
|
||||
var/location = get_turf(holder.my_atom)
|
||||
@@ -295,7 +286,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
mix_message = "The mixture quickly turns into a pall of smoke!"
|
||||
var/forbidden_reagents = list("sugar", "phosphorus", "potassium", "stimulants") //Do not transfer this stuff through smoke.
|
||||
|
||||
/datum/chemical_reaction/smoke/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/smoke/on_reaction(datum/reagents/holder, created_volume)
|
||||
for(var/f_reagent in forbidden_reagents)
|
||||
if(holder.has_reagent(f_reagent))
|
||||
holder.remove_reagent(f_reagent, holder.get_reagent_amount(f_reagent))
|
||||
@@ -316,7 +307,6 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
S.start(4)
|
||||
if(holder && holder.my_atom)
|
||||
holder.clear_reagents()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/smoke/smoke_powder
|
||||
name = "smoke_powder_smoke"
|
||||
@@ -350,7 +340,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
required_reagents = list("sonic_powder" = 1)
|
||||
min_temp = 374
|
||||
|
||||
/datum/chemical_reaction/sonic_powder_deafen/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/sonic_powder_deafen/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
playsound(location, 'sound/effects/bang.ogg', 25, 1)
|
||||
for(var/mob/living/M in hearers(5, location))
|
||||
@@ -377,7 +367,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
if(M.ear_damage >= 5)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
|
||||
|
||||
/datum/chemical_reaction/sonic_powder/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/sonic_powder/on_reaction(datum/reagents/holder, created_volume)
|
||||
if(holder.has_reagent("stabilizing_agent"))
|
||||
return
|
||||
var/location = get_turf(holder.my_atom)
|
||||
@@ -422,21 +412,18 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
required_reagents = list("phosphorus" = 1, "sacid" = 1, "plasma" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/chemical_reaction/phlogiston/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/phlogiston/on_reaction(datum/reagents/holder, created_volume)
|
||||
if(holder.has_reagent("stabilizing_agent"))
|
||||
return
|
||||
var/turf/simulated/T = get_turf(holder.my_atom)
|
||||
for(var/turf/simulated/turf in range(min(created_volume/10,4),T))
|
||||
new /obj/effect/hotspot(turf)
|
||||
return
|
||||
|
||||
/datum/reagent/phlogiston/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/phlogiston/on_mob_life(mob/living/M)
|
||||
M.adjust_fire_stacks(1)
|
||||
M.IgniteMob()
|
||||
M.adjustFireLoss(0.2*M.fire_stacks)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/napalm
|
||||
name = "Napalm"
|
||||
@@ -446,16 +433,13 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
color = "#FF9999"
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/napalm/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/napalm/on_mob_life(mob/living/M)
|
||||
M.adjust_fire_stacks(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/napalm/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/napalm/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH && isliving(M))
|
||||
M.adjust_fire_stacks(7)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/napalm
|
||||
name = "Napalm"
|
||||
@@ -464,7 +448,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit
|
||||
required_reagents = list("sugar" = 1, "fuel" = 1, "ethanol" = 1 )
|
||||
result_amount = 1
|
||||
|
||||
datum/reagent/cryostylane
|
||||
/datum/reagent/cryostylane
|
||||
name = "Cryostylane"
|
||||
id = "cryostylane"
|
||||
description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Cryostylane slowly cools all other reagents in the mob down to 0K."
|
||||
@@ -479,27 +463,25 @@ datum/reagent/cryostylane
|
||||
result_amount = 3
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
datum/reagent/cryostylane/on_mob_life(var/mob/living/M as mob) //TODO: code freezing into an ice cube
|
||||
/datum/reagent/cryostylane/on_mob_life(mob/living/M) //TODO: code freezing into an ice cube
|
||||
if(M.reagents.has_reagent("oxygen"))
|
||||
M.reagents.remove_reagent("oxygen", 1)
|
||||
M.bodytemperature -= 30
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/cryostylane/on_tick()
|
||||
/datum/reagent/cryostylane/on_tick()
|
||||
if(holder.has_reagent("oxygen"))
|
||||
holder.remove_reagent("oxygen", 1)
|
||||
holder.chem_temp -= 10
|
||||
holder.handle_reactions()
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/cryostylane/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
/datum/reagent/cryostylane/reaction_turf(turf/simulated/T, volume)
|
||||
if(volume >= 5)
|
||||
for(var/mob/living/carbon/slime/M in T)
|
||||
M.adjustToxLoss(rand(15,30))
|
||||
|
||||
datum/reagent/pyrosium
|
||||
/datum/reagent/pyrosium
|
||||
name = "Pyrosium"
|
||||
id = "pyrosium"
|
||||
description = "Comes into existence at 20K. As long as there is sufficient oxygen for it to react with, Pyrosium slowly cools all other reagents in the mob down to 0K."
|
||||
@@ -513,20 +495,18 @@ datum/reagent/pyrosium
|
||||
required_reagents = list("plasma" = 1, "radium" = 1, "phosphorus" = 1)
|
||||
result_amount = 3
|
||||
|
||||
datum/reagent/pyrosium/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/pyrosium/on_mob_life(mob/living/M)
|
||||
if(M.reagents.has_reagent("oxygen"))
|
||||
M.reagents.remove_reagent("oxygen", 1)
|
||||
M.bodytemperature += 30
|
||||
..()
|
||||
return
|
||||
|
||||
datum/reagent/pyrosium/on_tick()
|
||||
/datum/reagent/pyrosium/on_tick()
|
||||
if(holder.has_reagent("oxygen"))
|
||||
holder.remove_reagent("oxygen", 1)
|
||||
holder.chem_temp += 10
|
||||
holder.handle_reactions()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/azide
|
||||
name = "azide"
|
||||
@@ -537,12 +517,11 @@ datum/reagent/pyrosium/on_tick()
|
||||
mix_message = "The substance violently detonates!"
|
||||
mix_sound = 'sound/effects/bang.ogg'
|
||||
|
||||
/datum/chemical_reaction/azide/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/azide/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
explosion(location,0,1,4)
|
||||
return
|
||||
explosion(location, 0, 1, 4)
|
||||
|
||||
datum/reagent/firefighting_foam
|
||||
/datum/reagent/firefighting_foam
|
||||
name = "Firefighting foam"
|
||||
id = "firefighting_foam"
|
||||
description = "Carbon Tetrachloride is a foam used for fire suppression."
|
||||
@@ -559,7 +538,7 @@ datum/reagent/firefighting_foam
|
||||
mix_message = "The mixture bubbles gently."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
datum/reagent/firefighting_foam/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/firefighting_foam/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
|
||||
@@ -568,10 +547,10 @@ datum/reagent/firefighting_foam/reaction_mob(var/mob/living/M, var/method=TOUCH,
|
||||
M.adjust_fire_stacks(-(volume / 5)) // more effective than water
|
||||
if(M.fire_stacks <= 0)
|
||||
M.ExtinguishMob()
|
||||
return
|
||||
|
||||
datum/reagent/firefighting_foam/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
if(!istype(T)) return
|
||||
/datum/reagent/firefighting_foam/reaction_turf(turf/simulated/T, volume)
|
||||
if(!istype(T))
|
||||
return
|
||||
var/CT = cooling_temperature
|
||||
src = null
|
||||
if(!istype(T, /turf/space))
|
||||
@@ -583,9 +562,8 @@ datum/reagent/firefighting_foam/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
lowertemp.react()
|
||||
T.assume_air(lowertemp)
|
||||
qdel(hotspot)
|
||||
return
|
||||
|
||||
datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
|
||||
/datum/reagent/firefighting_foam/reaction_obj(obj/O, volume)
|
||||
src = null
|
||||
var/turf/T = get_turf(O)
|
||||
var/hotspot = (locate(/obj/effect/hotspot) in T)
|
||||
@@ -595,7 +573,6 @@ datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
|
||||
lowertemp.react()
|
||||
T.assume_air(lowertemp)
|
||||
qdel(hotspot)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/clf3_firefighting
|
||||
name = "clf3_firefighting"
|
||||
@@ -606,10 +583,9 @@ datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
|
||||
mix_message = "The substance violently detonates!"
|
||||
mix_sound = 'sound/effects/bang.ogg'
|
||||
|
||||
/datum/chemical_reaction/clf3_firefighting/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/clf3_firefighting/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
explosion(location,-1,0,2)
|
||||
return
|
||||
explosion(location, -1, 0, 2)
|
||||
|
||||
/datum/chemical_reaction/shock_explosion
|
||||
name = "shock_explosion"
|
||||
@@ -620,14 +596,13 @@ datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
|
||||
mix_message = "<span class='danger'>The reaction releases an electrical blast!</span>"
|
||||
mix_sound = 'sound/magic/lightningbolt.ogg'
|
||||
|
||||
/datum/chemical_reaction/shock_explosion/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/shock_explosion/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
for(var/mob/living/carbon/C in view(6, T))
|
||||
C.Beam(T,icon_state="lightning[rand(1,12)]",icon='icons/effects/effects.dmi',time=5) //What? Why are we beaming from the mob to the turf? Turf to mob generates really odd results.
|
||||
C.electrocute_act(3.5, "electrical blast")
|
||||
holder.del_reagent("teslium") //Clear all remaining Teslium and Uranium, but leave all other reagents untouched.
|
||||
holder.del_reagent("uranium")
|
||||
return
|
||||
|
||||
/datum/reagent/plasma_dust
|
||||
name = "Plasma Dust"
|
||||
|
||||
@@ -13,11 +13,9 @@
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/polonium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/polonium/on_mob_life(mob/living/M)
|
||||
M.apply_effect(8, IRRADIATE, negate_armor = 1)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/histamine
|
||||
@@ -29,7 +27,7 @@
|
||||
metabolization_rate = 0.2
|
||||
overdose_threshold = 40
|
||||
|
||||
/datum/reagent/histamine/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) //dumping histamine on someone is VERY mean.
|
||||
/datum/reagent/histamine/reaction_mob(mob/living/M, method=TOUCH, volume) //dumping histamine on someone is VERY mean.
|
||||
if(iscarbon(M))
|
||||
if(method == TOUCH)
|
||||
M.reagents.add_reagent("histamine",10)
|
||||
@@ -37,8 +35,7 @@
|
||||
to_chat(M, "<span class='danger'>You feel a burning sensation in your throat...</span>")
|
||||
M.emote("drool")
|
||||
|
||||
/datum/reagent/histamine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/histamine/on_mob_life(mob/living/M)
|
||||
if(prob(20))
|
||||
M.emote(pick("twitch", "grumble", "sneeze", "cough"))
|
||||
if(prob(10))
|
||||
@@ -53,9 +50,8 @@
|
||||
to_chat(M, "<span class='danger'>You're getting a rash!</span>")
|
||||
M.adjustBruteLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/histamine/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/histamine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
@@ -103,13 +99,11 @@
|
||||
color = "#DED6D0"
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/formaldehyde/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/formaldehyde/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1*REM)
|
||||
if(prob(10))
|
||||
M.reagents.add_reagent("histamine",rand(5,15))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/formaldehyde
|
||||
name = "formaldehyde"
|
||||
@@ -129,8 +123,7 @@
|
||||
metabolization_rate = 0.2
|
||||
overdose_threshold = 40
|
||||
|
||||
/datum/reagent/venom/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/venom/on_mob_life(mob/living/M)
|
||||
if(prob(25))
|
||||
M.reagents.add_reagent("histamine",rand(5,10))
|
||||
if(volume < 20)
|
||||
@@ -142,9 +135,8 @@
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBruteLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/venom/overdose_process(var/mob/living/M as mob)
|
||||
/datum/reagent/venom/overdose_process(mob/living/M)
|
||||
if(volume >= 40)
|
||||
if(prob(4))
|
||||
M.visible_message("<span class='danger'><B>[M]</B> starts convulsing violently!</span>", "You feel as if your body is tearing itself apart!")
|
||||
@@ -161,7 +153,7 @@
|
||||
color = "#60A584"
|
||||
metabolization_rate = 1
|
||||
|
||||
/datum/reagent/neurotoxin2/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/neurotoxin2/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 4)
|
||||
current_cycle++
|
||||
@@ -189,7 +181,6 @@
|
||||
M.emote("drool")
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/neurotoxin2
|
||||
name = "neurotoxin2"
|
||||
@@ -210,8 +201,7 @@
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/cyanide/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/cyanide/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1.5*REM)
|
||||
if(prob(5))
|
||||
M.emote("drool")
|
||||
@@ -224,7 +214,6 @@
|
||||
M.Stun(2)
|
||||
M.adjustToxLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/cyanide
|
||||
name = "Cyanide"
|
||||
@@ -236,7 +225,7 @@
|
||||
mix_message = "The mixture gives off a faint scent of almonds."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
/datum/chemical_reaction/cyanide/on_reaction(var/datum/reagents/holder)
|
||||
/datum/chemical_reaction/cyanide/on_reaction(datum/reagents/holder)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
|
||||
for(var/mob/living/carbon/C in range(T, 1))
|
||||
@@ -252,8 +241,7 @@
|
||||
metabolization_rate = 0.3
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/itching_powder/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/itching_powder/on_mob_life(mob/living/M)
|
||||
if(prob(25))
|
||||
M.emote(pick("twitch", "laugh", "sneeze", "cry"))
|
||||
if(prob(20))
|
||||
@@ -277,7 +265,6 @@
|
||||
M.visible_message("<span class='danger'>[M] falls to the floor, scratching themselves violently!</span>")
|
||||
M.emote("scream")
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/itching_powder
|
||||
name = "Itching Powder"
|
||||
@@ -288,12 +275,10 @@
|
||||
mix_message = "The mixture congeals and dries up, leaving behind an abrasive powder."
|
||||
mix_sound = 'sound/effects/blobattack.ogg'
|
||||
|
||||
/datum/reagent/facid/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/facid/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1*REM)
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/facid
|
||||
name = "Fluorosulfuric Acid"
|
||||
@@ -303,7 +288,7 @@
|
||||
color = "#4141D2"
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/facid/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/facid/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return //wooo more runtime fixin
|
||||
if(method == TOUCH || method == INGEST)
|
||||
@@ -347,7 +332,7 @@
|
||||
H.emote("scream")
|
||||
H.status_flags |= DISFIGURED
|
||||
|
||||
/datum/reagent/facid/reaction_obj(var/obj/O, var/volume)
|
||||
/datum/reagent/facid/reaction_obj(obj/O, volume)
|
||||
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)))
|
||||
if(!O.unacidable)
|
||||
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
|
||||
@@ -373,8 +358,7 @@
|
||||
color = "#7F10C0"
|
||||
metabolization_rate = 0.4
|
||||
|
||||
/datum/reagent/initropidril/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/initropidril/on_mob_life(mob/living/M)
|
||||
if(prob(33))
|
||||
M.adjustToxLoss(rand(5,25))
|
||||
if(prob(33))
|
||||
@@ -395,7 +379,6 @@
|
||||
if(!H.heart_attack)
|
||||
H.heart_attack = 1 // rip in pepperoni
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/initropidril
|
||||
name = "Initropidril"
|
||||
@@ -414,8 +397,7 @@
|
||||
color = "#AB1CCF"
|
||||
metabolization_rate = 0.4
|
||||
|
||||
/datum/reagent/concentrated_initro/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/concentrated_initro/on_mob_life(mob/living/M)
|
||||
if(volume >=5)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -430,8 +412,7 @@
|
||||
color = "#1E4664"
|
||||
metabolization_rate = 0.2
|
||||
|
||||
/datum/reagent/pancuronium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/pancuronium/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
if(prob(10))
|
||||
@@ -454,7 +435,6 @@
|
||||
to_chat(M, "<span class='danger'>You can't breathe!</span>")
|
||||
M.losebreath += 3
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/sodium_thiopental
|
||||
name = "Sodium Thiopental"
|
||||
@@ -464,8 +444,7 @@
|
||||
color = "#5F8BE1"
|
||||
metabolization_rate = 0.7
|
||||
|
||||
/datum/reagent/sodium_thiopental/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/sodium_thiopental/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1)
|
||||
M.emote("drool")
|
||||
@@ -482,7 +461,6 @@
|
||||
M.emote("drool")
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ketamine
|
||||
name = "Ketamine"
|
||||
@@ -493,8 +471,7 @@
|
||||
metabolization_rate = 0.8
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/ketamine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/ketamine/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
if(prob(25))
|
||||
@@ -509,7 +486,6 @@
|
||||
if(11 to INFINITY)
|
||||
M.Paralyse(25)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/sulfonal
|
||||
name = "Sulfonal"
|
||||
@@ -528,8 +504,7 @@
|
||||
mix_message = "The mixture gives off quite a stench."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
/datum/reagent/sulfonal/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/sulfonal/on_mob_life(mob/living/M)
|
||||
M.jitteriness = max(0, M.jitteriness-30)
|
||||
switch(current_cycle)
|
||||
if(1 to 10)
|
||||
@@ -546,7 +521,6 @@
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/amanitin
|
||||
name = "Amanitin"
|
||||
@@ -555,16 +529,9 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#D9D9D9"
|
||||
|
||||
/datum/reagent/amanitin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/amanitin/reagent_deleted(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/amanitin/reagent_deleted(mob/living/M)
|
||||
M.adjustToxLoss(current_cycle*rand(2,4))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/lipolicide
|
||||
name = "Lipolicide"
|
||||
@@ -581,8 +548,7 @@
|
||||
required_reagents = list("mercury" = 1, "diethylamine" = 1, "ephedrine" = 1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/reagent/lipolicide/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/lipolicide/on_mob_life(mob/living/M)
|
||||
if(!M.nutrition)
|
||||
switch(rand(1,3))
|
||||
if(1)
|
||||
@@ -596,7 +562,6 @@
|
||||
M.nutrition = max(0, M.nutrition-fat_to_burn)
|
||||
M.overeatduration = 0
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/coniine
|
||||
name = "Coniine"
|
||||
@@ -606,12 +571,10 @@
|
||||
color = "#C2D8CD"
|
||||
metabolization_rate = 0.05
|
||||
|
||||
/datum/reagent/coniine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/coniine/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(2)
|
||||
M.losebreath += 5
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/curare
|
||||
name = "Curare"
|
||||
@@ -622,8 +585,7 @@
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/curare/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/curare/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustOxyLoss(1)
|
||||
switch(current_cycle)
|
||||
@@ -646,7 +608,6 @@
|
||||
to_chat(M, "<span class='danger'>You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!</span>")
|
||||
M.losebreath++
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/sarin
|
||||
name = "Sarin"
|
||||
@@ -668,15 +629,14 @@
|
||||
min_temp = 374
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
/datum/chemical_reaction/sarin/on_reaction(var/datum/reagents/holder)
|
||||
/datum/chemical_reaction/sarin/on_reaction(datum/reagents/holder)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
|
||||
for(var/mob/living/carbon/C in range(T, 2))
|
||||
if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)))
|
||||
C.reagents.add_reagent("sarin",4)
|
||||
|
||||
/datum/reagent/sarin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/sarin/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
M.jitteriness += 20
|
||||
@@ -721,7 +681,6 @@
|
||||
M.adjustBrainLoss(1)
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/atrazine
|
||||
name = "Atrazine"
|
||||
@@ -730,14 +689,12 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#17002D"
|
||||
|
||||
/datum/reagent/atrazine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/atrazine/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
// Clear off wallrot fungi
|
||||
/datum/reagent/atrazine/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/atrazine/reaction_turf(turf/T, volume)
|
||||
if(istype(T, /turf/simulated/wall))
|
||||
var/turf/simulated/wall/W = T
|
||||
if(W.rotting)
|
||||
@@ -749,7 +706,7 @@
|
||||
for(var/mob/O in viewers(W, null))
|
||||
O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1)
|
||||
|
||||
/datum/reagent/atrazine/reaction_obj(var/obj/O, var/volume)
|
||||
/datum/reagent/atrazine/reaction_obj(obj/O, volume)
|
||||
if(istype(O,/obj/structure/alien/weeds/))
|
||||
var/obj/structure/alien/weeds/alien_weeds = O
|
||||
alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast
|
||||
@@ -760,7 +717,7 @@
|
||||
if(prob(50)) qdel(O) //Kills kudzu too.
|
||||
// Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics
|
||||
|
||||
/datum/reagent/atrazine/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/atrazine/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
src = null
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
@@ -772,12 +729,10 @@
|
||||
if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage
|
||||
H.adjustToxLoss(50)
|
||||
..()
|
||||
return
|
||||
else if(istype(M,/mob/living/simple_animal/diona)) //plantmen monkeys (diona) take EVEN MORE damage
|
||||
var/mob/living/simple_animal/diona/D = M
|
||||
D.adjustToxLoss(100)
|
||||
D.adjustHealth(100)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/atrazine
|
||||
name = "atrazine"
|
||||
@@ -802,8 +757,7 @@
|
||||
result_amount = 1
|
||||
mix_message = "The smell of death wafts up from the solution."
|
||||
|
||||
/datum/reagent/capulettium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/capulettium/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
M.eye_blurry += 10
|
||||
@@ -817,7 +771,6 @@
|
||||
if(61 to INFINITY)
|
||||
M.eye_blurry += 10
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/capulettium_plus
|
||||
name = "Capulettium Plus"
|
||||
@@ -834,11 +787,9 @@
|
||||
result_amount = 3
|
||||
mix_message = "The solution begins to slosh about violently by itself."
|
||||
|
||||
/datum/reagent/capulettium_plus/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/capulettium_plus/on_mob_life(mob/living/M)
|
||||
M.silent = max(M.silent, 2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxic_slurry
|
||||
name = "Toxic Slurry"
|
||||
@@ -847,8 +798,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#00C81E"
|
||||
|
||||
/datum/reagent/toxic_slurry/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/toxic_slurry/on_mob_life(mob/living/M)
|
||||
if(prob(10))
|
||||
M.adjustToxLoss(rand(2.4))
|
||||
if(prob(7))
|
||||
@@ -857,7 +807,6 @@
|
||||
if(prob(7))
|
||||
M.fakevomit(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/glowing_slurry
|
||||
name = "Glowing Slurry"
|
||||
@@ -866,7 +815,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#00FD00"
|
||||
|
||||
/datum/reagent/glowing_slurry/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //same as mutagen
|
||||
/datum/reagent/glowing_slurry/reaction_mob(mob/M, method=TOUCH, volume) //same as mutagen
|
||||
if(!..()) return
|
||||
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
|
||||
src = null
|
||||
@@ -874,10 +823,8 @@
|
||||
randmutb(M)
|
||||
domutcheck(M, null)
|
||||
M.UpdateAppearance()
|
||||
return
|
||||
|
||||
/datum/reagent/glowing_slurry/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/glowing_slurry/on_mob_life(mob/living/M)
|
||||
M.apply_effect(2, IRRADIATE, 0, negate_armor = 1)
|
||||
if(prob(15))
|
||||
randmutb(M)
|
||||
@@ -886,7 +833,6 @@
|
||||
domutcheck(M, null)
|
||||
M.UpdateAppearance()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ants
|
||||
name = "Ants"
|
||||
@@ -896,7 +842,7 @@
|
||||
color = "#993333"
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/ants/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) //NOT THE ANTS
|
||||
/datum/reagent/ants/reaction_mob(mob/living/M, method=TOUCH, volume) //NOT THE ANTS
|
||||
if(iscarbon(M))
|
||||
if(method == TOUCH || method==INGEST)
|
||||
to_chat(M, "<span class='warning'>OH SHIT ANTS!!!!</span>")
|
||||
@@ -904,11 +850,9 @@
|
||||
M.adjustBruteLoss(4)
|
||||
|
||||
|
||||
/datum/reagent/ants/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/ants/on_mob_life(mob/living/M)
|
||||
M.adjustBruteLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective.
|
||||
name = "Teslium"
|
||||
@@ -938,9 +882,8 @@
|
||||
min_temp = 400
|
||||
mix_sound = null
|
||||
|
||||
/datum/chemical_reaction/teslium/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/teslium/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
|
||||
s.set_up(6, 1, location)
|
||||
s.start()
|
||||
return
|
||||
s.start()
|
||||
@@ -19,5 +19,5 @@
|
||||
var/mix_sound = 'sound/effects/bubbles.ogg'
|
||||
var/no_message = 0
|
||||
|
||||
/datum/chemical_reaction/proc/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/proc/on_reaction(datum/reagents/holder, created_volume)
|
||||
return
|
||||
@@ -7,11 +7,10 @@
|
||||
required_catalysts = list("enzyme" = 5)
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/tofu/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/tofu/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/tofu(location)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/chocolate_bar
|
||||
name = "Chocolate Bar"
|
||||
@@ -20,11 +19,10 @@
|
||||
required_reagents = list("soymilk" = 2, "cocoa" = 2, "sugar" = 2)
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/chocolate_bar/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/chocolate_bar2
|
||||
name = "Chocolate Bar"
|
||||
@@ -33,11 +31,10 @@
|
||||
required_reagents = list("milk" = 2, "cocoa" = 2, "sugar" = 2)
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/chocolate_bar2/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/soysauce
|
||||
name = "Soy Sauce"
|
||||
@@ -54,10 +51,10 @@
|
||||
required_catalysts = list("enzyme" = 5)
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/cheesewheel/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
|
||||
return
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
|
||||
|
||||
/datum/chemical_reaction/syntiflesh
|
||||
name = "Syntiflesh"
|
||||
@@ -66,10 +63,10 @@
|
||||
required_reagents = list("blood" = 5, "cryoxadone" = 1)
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/syntiflesh/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
|
||||
return
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
|
||||
|
||||
/datum/chemical_reaction/hot_ramen
|
||||
name = "Hot Ramen"
|
||||
@@ -131,5 +128,4 @@
|
||||
/datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/dough(location)
|
||||
return
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/dough(location)
|
||||
@@ -7,12 +7,11 @@
|
||||
result_amount = 2
|
||||
mix_message = "The mixture explodes!"
|
||||
|
||||
/datum/chemical_reaction/explosion_potassium/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/explosion_potassium/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0)
|
||||
e.start()
|
||||
holder.clear_reagents()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/emp_pulse
|
||||
name = "EMP Pulse"
|
||||
@@ -21,13 +20,12 @@
|
||||
required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense
|
||||
result_amount = 2
|
||||
|
||||
/datum/chemical_reaction/emp_pulse/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/emp_pulse/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
// 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
|
||||
// 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
|
||||
empulse(location, round(created_volume / 24), round(created_volume / 14), 1)
|
||||
holder.clear_reagents()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/mutagen
|
||||
name = "Unstable mutagen"
|
||||
@@ -58,13 +56,11 @@
|
||||
required_reagents = list("glycerol" = 1, "facid" = 1, "sacid" = 1)
|
||||
result_amount = 2
|
||||
|
||||
/datum/chemical_reaction/nitroglycerin/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/nitroglycerin/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
e.set_up(round(created_volume/2, 1), holder.my_atom, 0, 0)
|
||||
e.start()
|
||||
|
||||
holder.clear_reagents()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/condensedcapsaicin
|
||||
name = "Condensed Capsaicin"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
required_reagents = list("fluorosurfactant" = 1, "water" = 1)
|
||||
result_amount = 2
|
||||
|
||||
/datum/chemical_reaction/foam/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
holder.my_atom.visible_message("<span class='warning'>The solution spews out foam!</span>")
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
required_reagents = list("aluminum" = 3, "fluorosurfactant" = 1, "sacid" = 1)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
|
||||
holder.my_atom.visible_message("<span class='warning'>The solution spews out a metalic foam!</span>")
|
||||
@@ -49,7 +49,7 @@
|
||||
required_reagents = list("iron" = 3, "fluorosurfactant" = 1, "sacid" = 1)
|
||||
result_amount = 5
|
||||
|
||||
/datum/chemical_reaction/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
/datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/location = get_turf(holder.my_atom)
|
||||
|
||||
holder.my_atom.visible_message("<span class='warning>The solution spews out a metalic foam!</span>")
|
||||
@@ -100,7 +100,7 @@
|
||||
required_reagents = list("facid" = 10, "plasticide" = 20)
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/plastication/on_reaction(var/datum/reagents/holder)
|
||||
/datum/chemical_reaction/plastication/on_reaction(datum/reagents/holder)
|
||||
var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/mineral/plastic
|
||||
M.amount = 10
|
||||
M.forceMove(get_turf(holder.my_atom))
|
||||
|
||||
@@ -18,8 +18,9 @@
|
||||
var/process_flags = ORGANIC
|
||||
var/admin_only = 0
|
||||
|
||||
/datum/reagent/proc/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //Some reagents transfer on touch, others don't; dependent on if they penetrate the skin or not.
|
||||
if(!istype(M, /mob/living)) return 0
|
||||
/datum/reagent/proc/reaction_mob(mob/M, method=TOUCH, volume) //Some reagents transfer on touch, others don't; dependent on if they penetrate the skin or not.
|
||||
if(!istype(M, /mob/living))
|
||||
return 0
|
||||
var/datum/reagent/self = src
|
||||
src = null
|
||||
|
||||
@@ -52,17 +53,17 @@
|
||||
AD.addiction_stage = 1
|
||||
return 1
|
||||
|
||||
/datum/reagent/proc/reaction_obj(var/obj/O, var/volume) //By default we transfer a small part of the reagent to the object
|
||||
/datum/reagent/proc/reaction_obj(obj/O, volume) //By default we transfer a small part of the reagent to the object
|
||||
src = null //if it can hold reagents. nope!
|
||||
//if(O.reagents)
|
||||
// O.reagents.add_reagent(id,volume/3)
|
||||
return
|
||||
|
||||
/datum/reagent/proc/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/proc/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
return
|
||||
|
||||
/datum/reagent/proc/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
/datum/reagent/proc/on_mob_life(mob/living/M)
|
||||
if(!istype(M))
|
||||
return
|
||||
if(holder)
|
||||
@@ -70,13 +71,13 @@
|
||||
current_cycle++
|
||||
|
||||
// Called when two reagents of the same are mixing.
|
||||
/datum/reagent/proc/on_merge(var/data)
|
||||
/datum/reagent/proc/on_merge(data)
|
||||
return
|
||||
|
||||
/datum/reagent/proc/on_move(var/mob/M)
|
||||
/datum/reagent/proc/on_move(mob/M)
|
||||
return
|
||||
|
||||
/datum/reagent/proc/on_update(var/atom/A)
|
||||
/datum/reagent/proc/on_update(atom/A)
|
||||
return
|
||||
|
||||
// Called after add_reagents creates a new reagent.
|
||||
|
||||
@@ -10,15 +10,14 @@
|
||||
var/dizzy_adj = 3
|
||||
var/alcohol_perc = 1 //percentage of ethanol in a beverage 0.0 - 1.0
|
||||
|
||||
/datum/reagent/ethanol/on_mob_life(var/mob/living/M as mob, var/alien)
|
||||
/datum/reagent/ethanol/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
M.AdjustDrunk(alcohol_perc)
|
||||
M.dizziness += dizzy_adj
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/ethanol/reaction_obj(var/obj/O, var/volume)
|
||||
/datum/reagent/ethanol/reaction_obj(obj/O, volume)
|
||||
if(istype(O,/obj/item/weapon/paper))
|
||||
var/obj/item/weapon/paper/paperaffected = O
|
||||
paperaffected.clearpaper()
|
||||
@@ -32,7 +31,7 @@
|
||||
to_chat(usr, "It wasn't enough...")
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with ethanol isn't quite as good as fuel.
|
||||
/datum/reagent/ethanol/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with ethanol isn't quite as good as fuel.
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
@@ -48,11 +47,6 @@
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
alcohol_perc = 0.2
|
||||
|
||||
/datum/reagent/ethanol/beer/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
M:jitteriness = max(M:jitteriness-3,0)
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/cider
|
||||
name = "Cider"
|
||||
id = "cider"
|
||||
@@ -93,11 +87,9 @@
|
||||
alcohol_perc = 0.7
|
||||
|
||||
//copy paste from LSD... shoot me
|
||||
/datum/reagent/ethanol/absinthe/on_mob_life(var/mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/ethanol/absinthe/on_mob_life(mob/living/M)
|
||||
M.hallucination += 5
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/absinthe/overdose_process(mob/living/M, severity)
|
||||
M.adjustToxLoss(1)
|
||||
@@ -110,10 +102,9 @@
|
||||
overdose_threshold = 30
|
||||
alcohol_perc = 0.4
|
||||
|
||||
/datum/reagent/ethanol/rum/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
/datum/reagent/ethanol/rum/on_mob_life(mob/living/M)
|
||||
M.dizziness +=5
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/ethanol/rum/overdose_process(mob/living/M, severity)
|
||||
M.adjustToxLoss(1)
|
||||
@@ -192,16 +183,14 @@
|
||||
color = "#102000" // rgb: 16, 32, 0
|
||||
alcohol_perc = 0.3
|
||||
|
||||
/datum/reagent/ethanol/thirteenloko/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
M:nutrition += nutriment_factor
|
||||
M:drowsyness = max(0,M:drowsyness-7)
|
||||
//if(!M:sleeping_willingly)
|
||||
// M:sleeping = max(0,M.sleeping-2)
|
||||
/datum/reagent/ethanol/thirteenloko/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
M.drowsyness = max(0, M.drowsyness-7)
|
||||
M.AdjustSleeping(-2)
|
||||
if(M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature-5)
|
||||
M.Jitter(1)
|
||||
return
|
||||
M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
M.Jitter(5)
|
||||
..()
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////cocktail entities//////////////////////////////////////////////
|
||||
@@ -350,6 +339,11 @@
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
alcohol_perc = 0.5
|
||||
|
||||
/datum/reagent/ethanol/toxins_special/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 330)
|
||||
M.bodytemperature = min(330, M.bodytemperature + (15 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
|
||||
..()
|
||||
|
||||
/datum/reagent/ethanol/beepsky_smash
|
||||
name = "Beepsky Smash"
|
||||
id = "beepskysmash"
|
||||
@@ -458,6 +452,11 @@
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
alcohol_perc = 0.2
|
||||
|
||||
/datum/reagent/ethanol/antifreeze/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 330)
|
||||
M.bodytemperature = min(330, M.bodytemperature + (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
|
||||
..()
|
||||
|
||||
/datum/reagent/ethanol/barefoot
|
||||
name = "Barefoot"
|
||||
id = "barefoot"
|
||||
@@ -526,11 +525,10 @@
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
alcohol_perc = 0.4
|
||||
|
||||
/datum/reagent/ethanol/sbiten/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
/datum/reagent/ethanol/sbiten/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 360)
|
||||
M.bodytemperature = min(360, M.bodytemperature+50) //310 is the normal bodytemp. 310.055
|
||||
return
|
||||
M.bodytemperature = min(360, M.bodytemperature + (50 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
|
||||
..()
|
||||
|
||||
/datum/reagent/ethanol/devilskiss
|
||||
name = "Devils Kiss"
|
||||
@@ -564,11 +562,10 @@
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
alcohol_perc = 0.2
|
||||
|
||||
/datum/reagent/ethanol/iced_beer/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/ethanol/iced_beer/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature > 270)
|
||||
M.bodytemperature = max(270, M.bodytemperature - (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
|
||||
..()
|
||||
if(M.bodytemperature < 270)
|
||||
M.bodytemperature = min(270, M.bodytemperature-40) //310 is the normal bodytemp. 310.055
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/grog
|
||||
name = "Grog"
|
||||
@@ -624,17 +621,16 @@
|
||||
description = "A strong neurotoxin that puts the subject into a death-like state."
|
||||
reagent_state = LIQUID
|
||||
color = "#2E2E61" // rgb: 46, 46, 97
|
||||
dizzy_adj = 6
|
||||
alcohol_perc = 0.7
|
||||
|
||||
/datum/reagent/ethanol/neurotoxin/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/ethanol/neurotoxin/on_mob_life(mob/living/M)
|
||||
M.weakened = max(M.weakened, 3)
|
||||
dizzy_adj = 6
|
||||
if(current_cycle >=55)
|
||||
M.druggy = max(M.druggy, 55)
|
||||
if(current_cycle >=200)
|
||||
M.adjustToxLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/changelingsting
|
||||
name = "Changeling Sting"
|
||||
@@ -644,10 +640,9 @@
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
alcohol_perc = 0.7
|
||||
|
||||
/datum/reagent/ethanol/changelingsting/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
/datum/reagent/ethanol/changelingsting/on_mob_life(mob/living/M)
|
||||
M.dizziness +=5
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/ethanol/irishcarbomb
|
||||
name = "Irish Car Bomb"
|
||||
@@ -657,10 +652,9 @@
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
alcohol_perc = 0.3
|
||||
|
||||
/datum/reagent/ethanol/irishcarbomb/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
/datum/reagent/ethanol/irishcarbomb/on_mob_life(mob/living/M)
|
||||
M.dizziness +=5
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/ethanol/syndicatebomb
|
||||
name = "Syndicate Bomb"
|
||||
@@ -686,15 +680,12 @@
|
||||
color = "#2E6671" // rgb: 46, 102, 113
|
||||
alcohol_perc = 0.5
|
||||
|
||||
/datum/reagent/ethanol/driestmartini/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/ethanol/driestmartini/on_mob_life(mob/living/M)
|
||||
M.dizziness +=10
|
||||
if(current_cycle >= 55 && current_cycle <115)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
if(current_cycle >= 55 && current_cycle < 115)
|
||||
M.stuttering += 10
|
||||
..()
|
||||
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/kahlua
|
||||
name = "Kahlua"
|
||||
id = "kahlua"
|
||||
@@ -702,10 +693,9 @@
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
alcohol_perc = 0.2
|
||||
|
||||
/datum/reagent/ethanol/kahlua/on_mob_life(var/mob/living/M as mob)
|
||||
M.dizziness = max(0,M.dizziness-5)
|
||||
M.drowsyness = max(0,M.drowsyness-3)
|
||||
M.sleeping = max(0,M.sleeping-2)
|
||||
/datum/reagent/ethanol/kahlua/on_mob_life(mob/living/M)
|
||||
M.dizziness = max(0, M.dizziness-5)
|
||||
M.drowsyness = max(0, M.drowsyness-3)
|
||||
M.AdjustSleeping(-2)
|
||||
M.Jitter(5)
|
||||
..()
|
||||
return
|
||||
..()
|
||||
@@ -4,10 +4,10 @@
|
||||
description = "Both delicious AND rich in Vitamin C, what more do you need?"
|
||||
color = "#E78108" // rgb: 231, 129, 8
|
||||
|
||||
/datum/reagent/drink/orangejuicde/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/orangejuicde/on_mob_life(mob/living/M)
|
||||
if(M.getOxyLoss() && prob(30))
|
||||
M.adjustOxyLoss(-1*REM)
|
||||
..()
|
||||
if(M.getOxyLoss() && prob(30)) M.adjustOxyLoss(-1*REM)
|
||||
return
|
||||
|
||||
/datum/reagent/drink/tomatojuice
|
||||
name = "Tomato Juice"
|
||||
@@ -15,10 +15,10 @@
|
||||
description = "Tomatoes made into juice. What a waste of big, juicy tomatoes, huh?"
|
||||
color = "#731008" // rgb: 115, 16, 8
|
||||
|
||||
/datum/reagent/drink/tomatojuice/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/tomatojuice/on_mob_life(mob/living/M)
|
||||
if(M.getFireLoss() && prob(20))
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
if(M.getFireLoss() && prob(20)) M.adjustFireLoss(-1)
|
||||
return
|
||||
|
||||
/datum/reagent/drink/limejuice
|
||||
name = "Lime Juice"
|
||||
@@ -26,11 +26,10 @@
|
||||
description = "The sweet-sour juice of limes."
|
||||
color = "#365E30" // rgb: 54, 94, 48
|
||||
|
||||
/datum/reagent/drink/limejuice/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/limejuice/on_mob_life(mob/living/M)
|
||||
if(M.getToxLoss() && prob(20))
|
||||
M.adjustToxLoss(-1)
|
||||
..()
|
||||
if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1)
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/drink/carrotjuice
|
||||
name = "Carrot juice"
|
||||
@@ -38,19 +37,16 @@
|
||||
description = "It is just like a carrot but without crunching."
|
||||
color = "#973800" // rgb: 151, 56, 0
|
||||
|
||||
/datum/reagent/drink/carrotjuicde/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
/datum/reagent/drink/carrotjuicde/on_mob_life(mob/living/M)
|
||||
M.eye_blurry = max(M.eye_blurry-1 , 0)
|
||||
M.eye_blind = max(M.eye_blind-1 , 0)
|
||||
if(!data) data = 1
|
||||
switch(data)
|
||||
switch(current_cycle)
|
||||
if(1 to 20)
|
||||
//nothing
|
||||
if(21 to INFINITY)
|
||||
if(prob(data-10))
|
||||
if(prob(current_cycle-10))
|
||||
M.disabilities &= ~NEARSIGHTED
|
||||
data++
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/drink/doctor_delight
|
||||
name = "The Doctor's Delight"
|
||||
@@ -59,11 +55,10 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#FF8CFF" // rgb: 255, 140, 255
|
||||
|
||||
/datum/reagent/drink/doctors_delight/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.getToxLoss() && prob(20)) M.adjustToxLoss(-1)
|
||||
/datum/reagent/drink/doctors_delight/on_mob_life(mob/living/M)
|
||||
if(M.getToxLoss() && prob(20))
|
||||
M.adjustToxLoss(-1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/drink/berryjuice
|
||||
name = "Berry Juice"
|
||||
@@ -77,10 +72,9 @@
|
||||
description = "A tasty juice blended from various kinds of very deadly and toxic berries."
|
||||
color = "#863353" // rgb: 134, 51, 83
|
||||
|
||||
/datum/reagent/drink/poisonberryjuice/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
/datum/reagent/drink/poisonberryjuice/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/drink/watermelonjuice
|
||||
name = "Watermelon Juice"
|
||||
@@ -106,15 +100,11 @@
|
||||
description = "The raw essence of a banana."
|
||||
color = "#863333" // rgb: 175, 175, 0
|
||||
|
||||
/datum/reagent/drink/banana/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/banana/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
if(istype(M, /mob/living/carbon/human) && M.job in list("Clown"))
|
||||
if(!M) M = holder.my_atom
|
||||
if((istype(M, /mob/living/carbon/human) && M.job in list("Clown") ) || issmall(M))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/drink/nothing
|
||||
@@ -122,15 +112,11 @@
|
||||
id = "nothing"
|
||||
description = "Absolutely nothing."
|
||||
|
||||
/datum/reagent/drink/nothing/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/nothing/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
if(istype(M, /mob/living/carbon/human) && M.job in list("Mime"))
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/drink/potato_juice
|
||||
@@ -146,12 +132,12 @@
|
||||
description = "An opaque white liquid produced by the mammary glands of mammals."
|
||||
color = "#DFDFDF" // rgb: 223, 223, 223
|
||||
|
||||
/datum/reagent/drink/milk/on_mob_life(var/mob/living/M as mob)
|
||||
if(M.getBruteLoss() && prob(20)) M.adjustBruteLoss(-1)
|
||||
/datum/reagent/drink/milk/on_mob_life(mob/living/M)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
M.adjustBruteLoss(-1)
|
||||
if(holder.has_reagent("capsaicin"))
|
||||
holder.remove_reagent("capsaicin", 2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/drink/milk/soymilk
|
||||
name = "Soy Milk"
|
||||
@@ -177,7 +163,7 @@
|
||||
description = "Made with love! And coco beans."
|
||||
nutriment_factor = 2 * FOOD_METABOLISM
|
||||
color = "#403010" // rgb: 64, 48, 16
|
||||
adj_temp = 5
|
||||
adj_temp_hot = 5
|
||||
|
||||
/datum/reagent/drink/coffee
|
||||
name = "Coffee"
|
||||
@@ -187,11 +173,11 @@
|
||||
adj_dizzy = -5
|
||||
adj_drowsy = -3
|
||||
adj_sleepy = -2
|
||||
adj_temp = 25
|
||||
adj_temp_hot = 25
|
||||
overdose_threshold = 45
|
||||
addiction_chance = 1 // It's true.
|
||||
|
||||
/datum/reagent/drink/coffee/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/coffee/on_mob_life(mob/living/M)
|
||||
if(holder.has_reagent("frostoil"))
|
||||
holder.remove_reagent("frostoil", 5)
|
||||
if(prob(50))
|
||||
@@ -199,9 +185,8 @@
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/drink/coffee/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/drink/coffee/overdose_process(mob/living/M, severity)
|
||||
if(volume > 45)
|
||||
M.Jitter(5)
|
||||
|
||||
@@ -210,7 +195,8 @@
|
||||
id = "icecoffee"
|
||||
description = "Coffee and ice, refreshing and cool."
|
||||
color = "#102838" // rgb: 16, 40, 56
|
||||
adj_temp = -5
|
||||
adj_temp_hot = 0
|
||||
adj_temp_cool = 5
|
||||
|
||||
/datum/reagent/drink/coffee/soy_latte
|
||||
name = "Soy Latte"
|
||||
@@ -218,13 +204,13 @@
|
||||
description = "A nice and tasty beverage while you are reading your hippie books."
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
adj_sleepy = 0
|
||||
adj_temp = 5
|
||||
adj_temp_hot = 5
|
||||
|
||||
/datum/reagent/drink/coffee/soy_latte/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/coffee/soy_latte/on_mob_life(mob/living/M)
|
||||
..()
|
||||
M.sleeping = 0
|
||||
if(M.getBruteLoss() && prob(20)) M.adjustBruteLoss(-1)
|
||||
return
|
||||
M.SetSleeping(0)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
M.adjustBruteLoss(-1)
|
||||
|
||||
/datum/reagent/drink/coffee/cafe_latte
|
||||
name = "Cafe Latte"
|
||||
@@ -232,14 +218,13 @@
|
||||
description = "A nice, strong and tasty beverage while you are reading."
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
adj_sleepy = 0
|
||||
adj_temp = 5
|
||||
adj_temp_hot = 5
|
||||
|
||||
/datum/reagent/drink/coffee/cafe_latte/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/coffee/cafe_latte/on_mob_life(mob/living/M)
|
||||
..()
|
||||
M.sleeping = 0
|
||||
M.SetSleeping(0)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
M.adjustBruteLoss(-1)
|
||||
return
|
||||
|
||||
/datum/reagent/drink/coffee/cafe_latte/cafe_mocha
|
||||
name = "Cafe Mocha"
|
||||
@@ -255,20 +240,20 @@
|
||||
adj_dizzy = -2
|
||||
adj_drowsy = -1
|
||||
adj_sleepy = -3
|
||||
adj_temp = 20
|
||||
adj_temp_hot = 20
|
||||
|
||||
/datum/reagent/drink/tea/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
/datum/reagent/drink/tea/on_mob_life(mob/living/M)
|
||||
if(M.getToxLoss() && prob(20))
|
||||
M.adjustToxLoss(-1)
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/drink/tea/icetea
|
||||
name = "Iced Tea"
|
||||
id = "icetea"
|
||||
description = "No relation to a certain rap artist/ actor."
|
||||
color = "#104038" // rgb: 16, 64, 56
|
||||
adj_temp = -5
|
||||
adj_temp_hot = 0
|
||||
adj_temp_cool = 5
|
||||
|
||||
/datum/reagent/drink/bananahonk
|
||||
name = "Banana Mama"
|
||||
@@ -277,15 +262,11 @@
|
||||
nutriment_factor = 1 * FOOD_METABOLISM
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
/datum/reagent/drink/bananahonk/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/bananahonk/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
if(istype(M, /mob/living/carbon/human) && M.job in list("Clown"))
|
||||
if(!M) M = holder.my_atom
|
||||
if((istype(M, /mob/living/carbon/human) && M.job in list("Clown") ) || issmall(M))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
..()
|
||||
|
||||
/datum/reagent/drink/silencer
|
||||
@@ -295,13 +276,9 @@
|
||||
nutriment_factor = 1 * FOOD_METABOLISM
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
|
||||
/datum/reagent/drink/silencer/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/silencer/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
if(istype(M, /mob/living/carbon/human) && M.job in list("Mime"))
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
..()
|
||||
@@ -8,16 +8,21 @@
|
||||
var/adj_dizzy = 0
|
||||
var/adj_drowsy = 0
|
||||
var/adj_sleepy = 0
|
||||
var/adj_temp = 0
|
||||
var/adj_temp_hot = 0
|
||||
var/adj_temp_cool = 0
|
||||
|
||||
/datum/reagent/drink/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/drink/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
if(adj_dizzy) M.dizziness = max(0,M.dizziness + adj_dizzy)
|
||||
if(adj_drowsy) M.drowsyness = max(0,M.drowsyness + adj_drowsy)
|
||||
if(adj_sleepy) M.sleeping = max(0,M.sleeping + adj_sleepy)
|
||||
if(adj_temp)
|
||||
if(adj_dizzy)
|
||||
M.dizziness = max(0, M.dizziness + adj_dizzy)
|
||||
if(adj_drowsy)
|
||||
M.drowsyness = max(0, M.drowsyness + adj_drowsy)
|
||||
if(adj_sleepy)
|
||||
M.AdjustSleeping(adj_sleepy)
|
||||
if(adj_temp_hot)
|
||||
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature + (25 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
..()
|
||||
return
|
||||
M.bodytemperature = min(310, M.bodytemperature + (adj_temp_hot * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
if(adj_temp_cool)
|
||||
if(M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = max(310, M.bodytemperature - (adj_temp_cool * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
..()
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/reagent/drink/cold
|
||||
name = "Cold drink"
|
||||
adj_temp = -5
|
||||
adj_temp_cool = 5
|
||||
|
||||
/datum/reagent/drink/cold/tonic
|
||||
name = "Tonic Water"
|
||||
@@ -25,6 +25,11 @@
|
||||
description = "Frozen water, your dentist wouldn't like you chewing this."
|
||||
reagent_state = SOLID
|
||||
color = "#619494" // rgb: 97, 148, 148
|
||||
adj_temp_cool = 0
|
||||
|
||||
/datum/reagent/drink/cold/ice/on_mob_life(mob/living/M)
|
||||
M.bodytemperature = max(M.bodytemperature - 5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0)
|
||||
..()
|
||||
|
||||
/datum/reagent/drink/cold/space_cola
|
||||
name = "Cola"
|
||||
@@ -32,7 +37,7 @@
|
||||
description = "A refreshing beverage."
|
||||
reagent_state = LIQUID
|
||||
color = "#100800" // rgb: 16, 8, 0
|
||||
adj_drowsy = -3
|
||||
adj_drowsy = -5
|
||||
|
||||
/datum/reagent/drink/cold/nuka_cola
|
||||
name = "Nuka Cola"
|
||||
@@ -41,14 +46,17 @@
|
||||
color = "#100800" // rgb: 16, 8, 0
|
||||
adj_sleepy = -2
|
||||
|
||||
/datum/reagent/drink/cold/nuka_cola/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/drink/cold/nuka_cola/on_mob_life(mob/living/M)
|
||||
M.Jitter(20)
|
||||
M.druggy = max(M.druggy, 30)
|
||||
M.dizziness +=5
|
||||
M.drowsyness = 0
|
||||
M.status_flags |= GOTTAGOFAST
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/drink/cold/nuka_cola/reagent_deleted(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOFAST
|
||||
..()
|
||||
|
||||
/datum/reagent/drink/cold/spacemountainwind
|
||||
name = "Space Mountain Wind"
|
||||
@@ -70,14 +78,14 @@
|
||||
id = "space_up"
|
||||
description = "Tastes like a hull breach in your mouth."
|
||||
color = "#202800" // rgb: 32, 40, 0
|
||||
adj_temp = -8
|
||||
adj_temp_cool = 8
|
||||
|
||||
/datum/reagent/drink/cold/lemon_lime
|
||||
name = "Lemon Lime"
|
||||
description = "A tangy substance made of 0.5% natural citrus!"
|
||||
id = "lemon_lime"
|
||||
color = "#878F00" // rgb: 135, 40, 0
|
||||
adj_temp = -8
|
||||
adj_temp_cool = 8
|
||||
|
||||
/datum/reagent/drink/cold/lemonade
|
||||
name = "Lemonade"
|
||||
@@ -96,37 +104,14 @@
|
||||
description = "It's not what it sounds like..."
|
||||
id = "brownstar"
|
||||
color = "#9F3400" // rgb: 159, 052, 000
|
||||
adj_temp = - 2
|
||||
adj_temp_cool = 2
|
||||
|
||||
/datum/reagent/drink/cold/milkshake
|
||||
name = "Milkshake"
|
||||
description = "Glorious brainfreezing mixture."
|
||||
id = "milkshake"
|
||||
color = "#AEE5E4" // rgb" 174, 229, 228
|
||||
adj_temp = -9
|
||||
|
||||
/datum/reagent/drink/cold/milkshake/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 1
|
||||
switch(data)
|
||||
if(1 to 15)
|
||||
M.bodytemperature -= 5 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(holder.has_reagent("capsaicin"))
|
||||
holder.remove_reagent("capsaicin", 5)
|
||||
if(istype(M, /mob/living/carbon/slime))
|
||||
M.bodytemperature -= rand(5,20)
|
||||
if(15 to 25)
|
||||
M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(istype(M, /mob/living/carbon/slime))
|
||||
M.bodytemperature -= rand(10,20)
|
||||
if(25 to INFINITY)
|
||||
M.bodytemperature -= 15 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(prob(1)) M.emote("shiver")
|
||||
if(istype(M, /mob/living/carbon/slime))
|
||||
M.bodytemperature -= rand(15,20)
|
||||
data++
|
||||
..()
|
||||
return
|
||||
adj_temp_cool = 9
|
||||
|
||||
/datum/reagent/drink/cold/rewriter
|
||||
name = "Rewriter"
|
||||
@@ -134,7 +119,6 @@
|
||||
id = "rewriter"
|
||||
color = "#485000" // rgb:72, 080, 0
|
||||
|
||||
/datum/reagent/drink/cold/rewriter/on_mob_life(var/mob/living/M as mob)
|
||||
..()
|
||||
/datum/reagent/drink/cold/rewriter/on_mob_life(mob/living/M)
|
||||
M.Jitter(5)
|
||||
return
|
||||
..()
|
||||
@@ -5,13 +5,9 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
process_flags = ORGANIC | SYNTHETIC //Adminbuse knows no bounds!
|
||||
admin_only=1
|
||||
admin_only = 1
|
||||
|
||||
/datum/reagent/adminordrazine/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom ///This can even heal dead people.
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,5)
|
||||
/datum/reagent/adminordrazine/on_mob_life(mob/living/carbon/M)
|
||||
M.setCloneLoss(0)
|
||||
M.setOxyLoss(0)
|
||||
M.radiation = 0
|
||||
@@ -20,15 +16,18 @@
|
||||
M.adjustToxLoss(-5)
|
||||
M.hallucination = 0
|
||||
M.setBrainLoss(0)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/name in H.internal_organs)
|
||||
var/obj/item/organ/internal/I = H.get_int_organ(name)
|
||||
I.damage = max(0, I.damage-5)
|
||||
for(var/obj/item/organ/external/E in H.organs)
|
||||
if(E.mend_fracture())
|
||||
E.perma_injury = 0
|
||||
M.disabilities = 0
|
||||
M.sdisabilities = 0
|
||||
M.eye_blurry = 0
|
||||
M.eye_blind = 0
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
if(istype(E))
|
||||
E.damage = max(E.damage-5 , 0)
|
||||
M.SetWeakened(0)
|
||||
M.SetStunned(0)
|
||||
M.SetParalysis(0)
|
||||
@@ -38,12 +37,15 @@
|
||||
M.stuttering = 0
|
||||
M.slurring = 0
|
||||
M.confused = 0
|
||||
M.sleeping = 0
|
||||
M.SetSleeping(0)
|
||||
M.jitteriness = 0
|
||||
if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs
|
||||
var/mob/living/carbon/C = M
|
||||
for(var/datum/disease/D in C.viruses)
|
||||
D.cure(0)
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
if(D.severity == NONTHREAT)
|
||||
continue
|
||||
D.spread_text = "Remissive"
|
||||
D.stage--
|
||||
if(D.stage < 1)
|
||||
D.cure()
|
||||
..()
|
||||
|
||||
/datum/reagent/adminordrazine/nanites
|
||||
|
||||
@@ -6,12 +6,11 @@
|
||||
color = "#202040" // rgb: 20, 20, 40
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/serotrotium/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/serotrotium/on_mob_life(mob/living/M)
|
||||
if(ishuman(M))
|
||||
if(prob(7))
|
||||
M.emote(pick("twitch","drool","moan","gasp"))
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/lithium
|
||||
@@ -21,14 +20,12 @@
|
||||
reagent_state = SOLID
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
/datum/reagent/lithium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/lithium/on_mob_life(mob/living/M)
|
||||
if(isturf(M.loc) && !istype(M.loc, /turf/space))
|
||||
if(M.canmove && !M.restrained())
|
||||
step(M, pick(cardinal))
|
||||
if(prob(5)) M.emote(pick("twitch","drool","moan"))
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/hippies_delight
|
||||
@@ -39,11 +36,9 @@
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
metabolization_rate = 0.2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/hippies_delight/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/hippies_delight/on_mob_life(mob/living/M)
|
||||
M.druggy = max(M.druggy, 50)
|
||||
if(!data) data = 1
|
||||
switch(data)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
M.Dizzy(10)
|
||||
@@ -60,10 +55,7 @@
|
||||
M.Dizzy(40)
|
||||
M.druggy = max(M.druggy, 60)
|
||||
if(prob(30)) M.emote(pick("twitch","giggle"))
|
||||
data++
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/lsd
|
||||
name = "Lysergic acid diethylamide"
|
||||
@@ -72,13 +64,10 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#0000D8"
|
||||
|
||||
/datum/reagent/lsd/on_mob_life(var/mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/lsd/on_mob_life(mob/living/M)
|
||||
M.druggy = max(M.druggy, 15)
|
||||
M.hallucination += 10
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/space_drugs
|
||||
name = "Space drugs"
|
||||
@@ -89,12 +78,10 @@
|
||||
metabolization_rate = 0.2
|
||||
addiction_chance = 65
|
||||
|
||||
/datum/reagent/space_drugs/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/space_drugs/on_mob_life(mob/living/M)
|
||||
M.druggy = max(M.druggy, 15)
|
||||
if(isturf(M.loc) && !istype(M.loc, /turf/space))
|
||||
if(M.canmove && !M.restrained())
|
||||
step(M, pick(cardinal))
|
||||
if(prob(7)) M.emote(pick("twitch","drool","moan","giggle"))
|
||||
..()
|
||||
return
|
||||
..()
|
||||
@@ -5,7 +5,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#060606"
|
||||
|
||||
/datum/reagent/fuel/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite!
|
||||
/datum/reagent/fuel/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with welding fuel to make them easy to ignite!
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
@@ -18,6 +18,7 @@
|
||||
id = "unholywater"
|
||||
description = "Something that shouldn't exist on this plane of existance."
|
||||
process_flags = ORGANIC | SYNTHETIC //ethereal means everything processes it.
|
||||
metabolization_rate = 1
|
||||
|
||||
/datum/reagent/fuel/unholywater/on_mob_life(mob/living/M)
|
||||
M.adjustBrainLoss(3)
|
||||
@@ -32,7 +33,11 @@
|
||||
M.adjustFireLoss(2)
|
||||
M.adjustOxyLoss(2)
|
||||
M.adjustBruteLoss(2)
|
||||
holder.remove_reagent(src.id, 1)
|
||||
..()
|
||||
|
||||
/datum/reagent/fuel/unholywater/reagent_deleted(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOFAST
|
||||
..()
|
||||
|
||||
/datum/reagent/plasma
|
||||
name = "Plasma"
|
||||
@@ -41,8 +46,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#7A2B94"
|
||||
|
||||
/datum/reagent/plasma/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/plasma/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1*REM)
|
||||
if(holder.has_reagent("epinephrine"))
|
||||
holder.remove_reagent("epinephrine", 2)
|
||||
@@ -50,15 +54,13 @@
|
||||
var/mob/living/carbon/C = M
|
||||
C.adjustPlasma(10)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/plasma/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with plasma is stronger than fuel!
|
||||
/datum/reagent/plasma/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with plasma is stronger than fuel!
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
M.adjust_fire_stacks(volume / 5)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/thermite
|
||||
@@ -69,14 +71,13 @@
|
||||
color = "#673910" // rgb: 103, 57, 16
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/thermite/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/thermite/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
if(istype(T, /turf/simulated/wall))
|
||||
T:thermite = 1
|
||||
T.overlays.Cut()
|
||||
T.overlays = image('icons/effects/effects.dmi',icon_state = "thermite")
|
||||
return
|
||||
|
||||
/datum/reagent/glycerol
|
||||
name = "Glycerol"
|
||||
|
||||
@@ -8,14 +8,13 @@
|
||||
reagent_state = SOLID
|
||||
nutriment_factor = 12 * REAGENTS_METABOLISM
|
||||
color = "#664330" // rgb: 102, 67, 48
|
||||
var/diet_flags = DIET_OMNI | DIET_HERB | DIET_CARN
|
||||
|
||||
/datum/reagent/nutriment/on_mob_life(mob/living/M)
|
||||
if(!M)
|
||||
M = holder.my_atom
|
||||
if(!(M.mind in ticker.mode.vampires))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.can_eat()) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
|
||||
if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
|
||||
H.nutrition += nutriment_factor // For hunger and fatness
|
||||
if(prob(50))
|
||||
M.adjustBruteLoss(-1)
|
||||
@@ -24,54 +23,44 @@
|
||||
else
|
||||
if(!(H.species.flags & NO_BLOOD))
|
||||
H.vessel.add_reagent("blood", 0.4)
|
||||
if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals
|
||||
if(prob(50))
|
||||
M.heal_organ_damage(1,0)
|
||||
..()
|
||||
|
||||
/datum/reagent/protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores
|
||||
/datum/reagent/nutriment/protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores
|
||||
name = "Protein"
|
||||
id = "protein"
|
||||
description = "Various essential proteins and fats commonly found in animal flesh and blood."
|
||||
reagent_state = SOLID
|
||||
nutriment_factor = 15 * REAGENTS_METABOLISM
|
||||
color = "#664330" // rgb: 102, 67, 48
|
||||
diet_flags = DIET_CARN | DIET_OMNI
|
||||
|
||||
/datum/reagent/protein/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!(M.mind in ticker.mode.vampires))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.can_eat(DIET_CARN | DIET_OMNI)) //Make sure that it is not a herbivore
|
||||
H.nutrition += nutriment_factor // For hunger and fatness
|
||||
if(prob(50)) M.adjustBruteLoss(-1)
|
||||
if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals
|
||||
if(prob(50)) M.heal_organ_damage(1,0)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores
|
||||
/datum/reagent/nutriment/plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores
|
||||
name = "Plant-matter"
|
||||
id = "plantmatter"
|
||||
description = "Vitamin-rich fibers and natural sugars commonly found in fresh produce."
|
||||
reagent_state = SOLID
|
||||
nutriment_factor = 15 * REAGENTS_METABOLISM
|
||||
diet_flags = DIET_HERB | DIET_OMNI
|
||||
|
||||
|
||||
/datum/reagent/vitamin
|
||||
name = "Vitamin"
|
||||
id = "vitamin"
|
||||
description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form."
|
||||
reagent_state = SOLID
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#664330" // rgb: 102, 67, 48
|
||||
|
||||
/datum/reagent/plantmatter/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!(M.mind in ticker.mode.vampires))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.can_eat(DIET_HERB | DIET_OMNI)) //Make sure that it is not a carnivore
|
||||
H.nutrition += nutriment_factor // For hunger and fatness
|
||||
if(prob(50)) M.adjustBruteLoss(-1)
|
||||
if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals
|
||||
if(prob(50)) M.heal_organ_damage(1,0)
|
||||
/datum/reagent/vitamin/on_mob_life(mob/living/M) //everyone needs vitamins, so this works on everyone, regardless of diet or if they're a vampire.
|
||||
M.nutrition += nutriment_factor
|
||||
if(prob(50))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.species.exotic_blood)
|
||||
H.vessel.add_reagent(H.species.exotic_blood, 0.5)
|
||||
else
|
||||
if(!(H.species.flags & NO_BLOOD))
|
||||
H.vessel.add_reagent("blood", 0.5)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/soysauce
|
||||
name = "Soysauce"
|
||||
@@ -97,10 +86,8 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#B31008" // rgb: 179, 16, 8
|
||||
|
||||
/datum/reagent/capsaicin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 1
|
||||
switch(data)
|
||||
/datum/reagent/capsaicin/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
M.bodytemperature += 5 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(holder.has_reagent("frostoil"))
|
||||
@@ -119,9 +106,7 @@
|
||||
M.bodytemperature += 20 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(istype(M, /mob/living/carbon/slime))
|
||||
M.bodytemperature += rand(20,25)
|
||||
data++
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/frostoil
|
||||
name = "Frost Oil"
|
||||
@@ -131,10 +116,8 @@
|
||||
color = "#8BA6E9" // rgb: 139, 166, 233
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/frostoil/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!data) data = 1
|
||||
switch(data)
|
||||
/datum/reagent/frostoil/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
M.bodytemperature -= 10 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(holder.has_reagent("capsaicin"))
|
||||
@@ -157,11 +140,9 @@
|
||||
M.emote("shiver")
|
||||
if(istype(M, /mob/living/carbon/slime))
|
||||
M.bodytemperature -= rand(20,25)
|
||||
data++
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/frostoil/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
/datum/reagent/frostoil/reaction_turf(turf/simulated/T, volume)
|
||||
if(volume >= 5)
|
||||
for(var/mob/living/carbon/slime/M in T)
|
||||
M.adjustToxLoss(rand(15,30))
|
||||
@@ -175,12 +156,10 @@
|
||||
color = "#B1B0B0"
|
||||
overdose_threshold = 100
|
||||
|
||||
/datum/reagent/sodiumchloride/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/sodiumchloride/overdose_process(mob/living/M, severity)
|
||||
if(prob(70))
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/blackpepper
|
||||
name = "Black Pepper"
|
||||
@@ -197,10 +176,9 @@
|
||||
nutriment_factor = 5 * REAGENTS_METABOLISM
|
||||
color = "#302000" // rgb: 48, 32, 0
|
||||
|
||||
/datum/reagent/cocoa/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/cocoa/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/hot_coco
|
||||
name = "Hot Chocolate"
|
||||
@@ -210,12 +188,11 @@
|
||||
nutriment_factor = 2 * REAGENTS_METABOLISM
|
||||
color = "#403010" // rgb: 64, 48, 16
|
||||
|
||||
/datum/reagent/hot_coco/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/hot_coco/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/psilocybin
|
||||
@@ -224,11 +201,9 @@
|
||||
description = "A strong psycotropic derived from certain species of mushroom."
|
||||
color = "#E700E7" // rgb: 231, 0, 231
|
||||
|
||||
/datum/reagent/psilocybin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/psilocybin/on_mob_life(mob/living/M)
|
||||
M.druggy = max(M.druggy, 30)
|
||||
if(!data) data = 1
|
||||
switch(data)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
M.Dizzy(5)
|
||||
@@ -245,9 +220,7 @@
|
||||
M.Dizzy(20)
|
||||
M.druggy = max(M.druggy, 40)
|
||||
if(prob(30)) M.emote(pick("twitch","giggle"))
|
||||
data++
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/sprinkles
|
||||
@@ -257,15 +230,11 @@
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#FF00FF" // rgb: 255, 0, 255
|
||||
|
||||
/datum/reagent/sprinkles/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/sprinkles/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
if(istype(M, /mob/living/carbon/human) && M.job in list("Security Officer", "Head of Security", "Detective", "Warden"))
|
||||
if(!M) M = holder.my_atom
|
||||
if(istype(M, /mob/living/carbon/human) && M.job in list("Security Officer", "Security Pod Pilot", "Detective", "Warden", "Head of Security", "Brig Physician", "Internal Affairs Agent", "Magistrate"))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
..()
|
||||
|
||||
|
||||
@@ -277,12 +246,11 @@
|
||||
nutriment_factor = 20 * REAGENTS_METABOLISM
|
||||
color = "#302000" // rgb: 48, 32, 0
|
||||
|
||||
/datum/reagent/cornoil/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/cornoil/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/cornoil/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
/datum/reagent/cornoil/reaction_turf(turf/simulated/T, volume)
|
||||
if(!istype(T)) return
|
||||
src = null
|
||||
if(volume >= 3)
|
||||
@@ -312,10 +280,9 @@
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#302000" // rgb: 48, 32, 0
|
||||
|
||||
/datum/reagent/dry_ramen/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/dry_ramen/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/hot_ramen
|
||||
@@ -326,12 +293,11 @@
|
||||
nutriment_factor = 5 * REAGENTS_METABOLISM
|
||||
color = "#302000" // rgb: 48, 32, 0
|
||||
|
||||
/datum/reagent/hot_ramen/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/hot_ramen/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature + (10 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/hell_ramen
|
||||
@@ -342,11 +308,10 @@
|
||||
nutriment_factor = 5 * REAGENTS_METABOLISM
|
||||
color = "#302000" // rgb: 48, 32, 0
|
||||
|
||||
/datum/reagent/hell_ramen/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/hell_ramen/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/flour
|
||||
@@ -357,12 +322,11 @@
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#FFFFFF" // rgb: 0, 0, 0
|
||||
|
||||
/datum/reagent/flour/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/flour/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/flour/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/flour/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(!istype(T, /turf/space))
|
||||
new /obj/effect/decal/cleanable/flour(T)
|
||||
@@ -376,10 +340,9 @@
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#FFFFFF" // rgb: 0, 0, 0
|
||||
|
||||
/datum/reagent/rice/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/rice/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/cherryjelly
|
||||
@@ -390,11 +353,9 @@
|
||||
nutriment_factor = 1 * REAGENTS_METABOLISM
|
||||
color = "#801E28" // rgb: 128, 30, 40
|
||||
|
||||
/datum/reagent/cherryjelly/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/cherryjelly/on_mob_life(mob/living/M)
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/toxin/coffeepowder
|
||||
name = "Coffee Grounds"
|
||||
@@ -416,7 +377,6 @@
|
||||
id = "fertilizer"
|
||||
description = "A chemical mix good for growing plants with."
|
||||
reagent_state = LIQUID
|
||||
// toxpwr = 0.2 //It's not THAT poisonous.
|
||||
color = "#664330" // rgb: 102, 67, 48
|
||||
|
||||
/datum/reagent/toxin/fertilizer/eznutrient
|
||||
@@ -440,7 +400,7 @@
|
||||
color = "#FFFFFF" // rgb: 255, 255, 255
|
||||
overdose_threshold = 200 // Hyperglycaemic shock
|
||||
|
||||
/datum/reagent/sugar/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/sugar/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
if(current_cycle >= 90)
|
||||
M.jitteriness += 2
|
||||
@@ -451,14 +411,13 @@
|
||||
if(prob(4))
|
||||
M.reagents.add_reagent("epinephrine", 1.2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/sugar/overdose_start(var/mob/living/M as mob)
|
||||
/datum/reagent/sugar/overdose_start(mob/living/M)
|
||||
to_chat(M, "<span class='danger'>You pass out from hyperglycemic shock!</span>")
|
||||
M.emote("collapse")
|
||||
..()
|
||||
|
||||
/datum/reagent/sugar/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/sugar/overdose_process(mob/living/M, severity)
|
||||
M.Paralyse(3 * severity)
|
||||
M.Weaken(4 * severity)
|
||||
if(prob(8))
|
||||
|
||||
@@ -7,14 +7,12 @@
|
||||
metabolization_rate = 0.3 // Lasts 1.5 minutes for 15 units
|
||||
shock_reduction = 200
|
||||
|
||||
/datum/reagent/hydrocodone/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/hydrocodone/on_mob_life(mob/living/M)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.traumatic_shock < 100)
|
||||
H.shock_stage = 0
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/sterilizine
|
||||
name = "Sterilizine"
|
||||
@@ -24,14 +22,14 @@
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
|
||||
//makes you squeaky clean
|
||||
/datum/reagent/sterilizine/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/sterilizine/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH)
|
||||
M.germ_level -= min(volume*20, M.germ_level)
|
||||
|
||||
/datum/reagent/sterilizine/reaction_obj(var/obj/O, var/volume)
|
||||
/datum/reagent/sterilizine/reaction_obj(obj/O, volume)
|
||||
O.germ_level -= min(volume*20, O.germ_level)
|
||||
|
||||
/datum/reagent/sterilizine/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/sterilizine/reaction_turf(turf/T, volume)
|
||||
T.germ_level -= min(volume*20, T.germ_level)
|
||||
|
||||
/datum/reagent/synaptizine
|
||||
@@ -42,8 +40,7 @@
|
||||
color = "#FA46FA"
|
||||
overdose_threshold = 40
|
||||
|
||||
/datum/reagent/synaptizine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/synaptizine/on_mob_life(mob/living/M)
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
@@ -52,9 +49,8 @@
|
||||
if(prob(50))
|
||||
M.adjustBrainLoss(-1.0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/synaptizine/overdose_process(var/mob/living/M as mob, severity)
|
||||
/datum/reagent/synaptizine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
if(severity == 1)
|
||||
if(effect <= 1)
|
||||
@@ -82,8 +78,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
|
||||
/datum/reagent/mitocholide/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/mitocholide/on_mob_life(mob/living/M)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
|
||||
@@ -93,9 +88,8 @@
|
||||
if(I.damage > 0)
|
||||
I.damage = max(I.damage-0.4, 0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/mitocholide/reaction_obj(var/obj/O, var/volume)
|
||||
/datum/reagent/mitocholide/reaction_obj(obj/O, volume)
|
||||
if(istype(O, /obj/item/organ))
|
||||
var/obj/item/organ/Org = O
|
||||
Org.rejuvenate()
|
||||
@@ -107,8 +101,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#0000C8" // rgb: 200, 165, 220
|
||||
|
||||
/datum/reagent/cryoxadone/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/cryoxadone/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 265)
|
||||
M.adjustCloneLoss(-4)
|
||||
M.adjustOxyLoss(-10)
|
||||
@@ -117,7 +110,6 @@
|
||||
M.adjustFireLoss(-12)
|
||||
M.status_flags &= ~DISFIGURED
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/rezadone
|
||||
name = "Rezadone"
|
||||
@@ -134,7 +126,6 @@
|
||||
M.adjustFireLoss(-1)
|
||||
M.status_flags &= ~DISFIGURED
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/rezadone/overdose_process(mob/living/M, severity)
|
||||
M.adjustToxLoss(1)
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
reagent_state = SOLID
|
||||
color = "#1C1300" // rgb: 30, 20, 0
|
||||
|
||||
/datum/reagent/carbon/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/carbon/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
// Only add one dirt per turf. Was causing people to crash.
|
||||
if(!istype(T, /turf/space) && !(locate(/obj/effect/decal/cleanable/dirt) in T))
|
||||
@@ -152,8 +152,6 @@
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
|
||||
/datum/reagent/iron/on_mob_life(mob/living/M)
|
||||
if(!M)
|
||||
M = holder.my_atom
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!H.species.exotic_blood && !(H.species.flags & NO_BLOOD))
|
||||
|
||||
@@ -5,12 +5,9 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
|
||||
/datum/reagent/toxin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/toxin/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/spider_venom
|
||||
name = "Spider venom"
|
||||
@@ -19,12 +16,9 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
|
||||
/datum/reagent/spider_venom/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/spider_venom/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
|
||||
/datum/reagent/plasticide
|
||||
name = "Plasticide"
|
||||
@@ -33,11 +27,9 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
|
||||
/datum/reagent/plasticide/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/plasticide/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/minttoxin
|
||||
@@ -47,13 +39,10 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
|
||||
/datum/reagent/minttoxin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/minttoxin/on_mob_life(mob/living/M)
|
||||
if(FAT in M.mutations)
|
||||
M.gib()
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/slimejelly
|
||||
name = "Slime Jelly"
|
||||
@@ -62,14 +51,13 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#801E28" // rgb: 128, 30, 40
|
||||
|
||||
/datum/reagent/slimejelly/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/slimejelly/on_mob_life(mob/living/M)
|
||||
if(prob(10))
|
||||
to_chat(M, "\red Your insides are burning!")
|
||||
M.adjustToxLoss(rand(20,60)*REM)
|
||||
else if(prob(40))
|
||||
M.adjustBruteLoss(-5*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/slimetoxin
|
||||
name = "Mutation Toxin"
|
||||
@@ -78,8 +66,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#13BC5E" // rgb: 19, 188, 94
|
||||
|
||||
/datum/reagent/slimetoxin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/slimetoxin/on_mob_life(mob/living/M)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/human = M
|
||||
if(human.species.name != "Shadow")
|
||||
@@ -89,7 +76,6 @@
|
||||
to_chat(M, "Aside from your new traits, you are mentally unchanged and retain your prior obligations.")
|
||||
human.set_species("Shadow")
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/aslimetoxin
|
||||
name = "Advanced Mutation Toxin"
|
||||
@@ -98,7 +84,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#13BC5E" // rgb: 19, 188, 94
|
||||
|
||||
/datum/reagent/aslimetoxin/reaction_mob(mob/M, method=TOUCH, reac_volume)
|
||||
/datum/reagent/aslimetoxin/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(method != TOUCH)
|
||||
M.ForceContractDisease(new /datum/disease/transformation/slime(0))
|
||||
|
||||
@@ -112,13 +98,10 @@
|
||||
metabolization_rate = 0.2
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/mercury/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/mercury/on_mob_life(mob/living/M)
|
||||
if(prob(70))
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/chlorine
|
||||
name = "Chlorine"
|
||||
@@ -129,11 +112,9 @@
|
||||
penetrates_skin = 1
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/chlorine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/chlorine/on_mob_life(mob/living/M)
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/fluorine
|
||||
name = "Fluorine"
|
||||
@@ -144,13 +125,10 @@
|
||||
penetrates_skin = 1
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/fluorine/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/fluorine/on_mob_life(mob/living/M)
|
||||
M.adjustFireLoss(1)
|
||||
M.adjustToxLoss(1*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/radium
|
||||
name = "Radium"
|
||||
@@ -161,13 +139,12 @@
|
||||
metabolization_rate = 0.4
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/radium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/radium/on_mob_life(mob/living/M)
|
||||
if(M.radiation < 80)
|
||||
M.apply_effect(4, IRRADIATE, negate_armor = 1)
|
||||
..()
|
||||
|
||||
/datum/reagent/radium/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/radium/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 3)
|
||||
if(!istype(T, /turf/space))
|
||||
@@ -183,7 +160,7 @@
|
||||
color = "#04DF27"
|
||||
metabolization_rate = 0.3
|
||||
|
||||
/datum/reagent/mutagen/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/mutagen/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(!..()) return
|
||||
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
|
||||
src = null
|
||||
@@ -191,16 +168,13 @@
|
||||
randmutb(M)
|
||||
domutcheck(M, null)
|
||||
M.UpdateAppearance()
|
||||
return
|
||||
|
||||
/datum/reagent/mutagen/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/mutagen/on_mob_life(mob/living/M)
|
||||
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(2*REM, IRRADIATE, negate_armor = 1)
|
||||
if(prob(4))
|
||||
randmutb(M)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/uranium
|
||||
@@ -210,13 +184,11 @@
|
||||
reagent_state = SOLID
|
||||
color = "#B8B8C0" // rgb: 184, 184, 192
|
||||
|
||||
/datum/reagent/uranium/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/uranium/on_mob_life(mob/living/M)
|
||||
M.apply_effect(2, IRRADIATE, negate_armor = 1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/uranium/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/uranium/reaction_turf(turf/T, volume)
|
||||
src = null
|
||||
if(volume >= 3)
|
||||
if(!istype(T, /turf/space))
|
||||
@@ -231,13 +203,9 @@
|
||||
color = "#52685D"
|
||||
metabolization_rate = 0.2
|
||||
|
||||
/datum/reagent/lexorin/on_mob_life(var/mob/living/M as mob)
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/lexorin/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/sacid
|
||||
@@ -248,13 +216,11 @@
|
||||
color = "#00D72B"
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/sacid/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/sacid/on_mob_life(mob/living/M)
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/sacid/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/sacid/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
@@ -307,7 +273,7 @@
|
||||
else
|
||||
M.take_organ_damage(0,20)
|
||||
|
||||
/datum/reagent/sacid/reaction_obj(var/obj/O, var/volume)
|
||||
/datum/reagent/sacid/reaction_obj(obj/O, volume)
|
||||
if((istype(O,/obj/item) || istype(O,/obj/effect/glowshroom)) && prob(40))
|
||||
if(!O.unacidable)
|
||||
var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc)
|
||||
@@ -322,14 +288,15 @@
|
||||
id = "hell_water"
|
||||
description = "YOUR FLESH! IT BURNS!"
|
||||
process_flags = ORGANIC | SYNTHETIC //Admin-bus has no brakes! KILL THEM ALL.
|
||||
metabolization_rate = 1
|
||||
|
||||
/datum/reagent/hellwater/on_mob_life(var/mob/living/M as mob)
|
||||
M.fire_stacks = min(5,M.fire_stacks + 3)
|
||||
/datum/reagent/hellwater/on_mob_life(mob/living/M)
|
||||
M.fire_stacks = min(5, M.fire_stacks + 3)
|
||||
M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustFireLoss(1) //Hence the other damages... ain't I a bastard?
|
||||
M.adjustBrainLoss(5)
|
||||
holder.remove_reagent(src.id, 1)
|
||||
..()
|
||||
|
||||
|
||||
/datum/reagent/carpotoxin
|
||||
@@ -339,12 +306,9 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#003333" // rgb: 0, 51, 51
|
||||
|
||||
/datum/reagent/carpotoxin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/carpotoxin/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/staminatoxin
|
||||
name = "Tirizene"
|
||||
@@ -354,7 +318,7 @@
|
||||
color = "#6E2828"
|
||||
data = 13
|
||||
|
||||
/datum/reagent/staminatoxin/on_mob_life(var/mob/living/M)
|
||||
/datum/reagent/staminatoxin/on_mob_life(mob/living/M)
|
||||
M.adjustStaminaLoss(REM * data)
|
||||
data = max(data - 1, 3)
|
||||
..()
|
||||
@@ -366,13 +330,11 @@
|
||||
description = "A toxic spore cloud which blocks vision when ingested."
|
||||
color = "#9ACD32"
|
||||
|
||||
/datum/reagent/spores/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/spores/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
M.damageoverlaytemp = 60
|
||||
M.eye_blurry = max(M.eye_blurry, 3)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/beer2 //disguised as normal beer for use by emagged brobots
|
||||
name = "Beer"
|
||||
@@ -381,18 +343,14 @@
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
metabolization_rate = 1.5 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/beer2/on_mob_life(var/mob/living/M as mob)
|
||||
if(!data)
|
||||
data = 1
|
||||
switch(data)
|
||||
/datum/reagent/beer2/on_mob_life(mob/living/M)
|
||||
switch(current_cycle)
|
||||
if(1 to 50)
|
||||
M.sleeping += 1
|
||||
M.AdjustSleeping(1)
|
||||
if(51 to INFINITY)
|
||||
M.sleeping += 1
|
||||
M.adjustToxLoss((data - 50)*REM)
|
||||
data++
|
||||
M.AdjustSleeping(1)
|
||||
M.adjustToxLoss((current_cycle - 50)*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/datum/reagent/condensedcapsaicin
|
||||
@@ -402,7 +360,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#B31008" // rgb: 179, 16, 8
|
||||
|
||||
/datum/reagent/condensedcapsaicin/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/condensedcapsaicin/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == TOUCH)
|
||||
@@ -459,9 +417,7 @@
|
||||
victim.Weaken(5)
|
||||
victim.drop_item()
|
||||
|
||||
/datum/reagent/condensedcapsaicin/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/condensedcapsaicin/on_mob_life(mob/living/M)
|
||||
if(prob(5))
|
||||
M.visible_message("<span class='warning'>[M] [pick("dry heaves!","coughs!","splutters!")]</span>")
|
||||
..()
|
||||
return
|
||||
..()
|
||||
@@ -16,7 +16,7 @@
|
||||
var/cooling_temperature = 2
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/water/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/water/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
|
||||
@@ -27,8 +27,9 @@
|
||||
M.ExtinguishMob()
|
||||
return
|
||||
|
||||
/datum/reagent/water/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
if(!istype(T)) return
|
||||
/datum/reagent/water/reaction_turf(turf/simulated/T, volume)
|
||||
if(!istype(T))
|
||||
return
|
||||
src = null
|
||||
if(volume >= 3)
|
||||
T.MakeSlippery()
|
||||
@@ -43,9 +44,8 @@
|
||||
lowertemp.react()
|
||||
T.assume_air(lowertemp)
|
||||
qdel(hotspot)
|
||||
return
|
||||
|
||||
/datum/reagent/water/reaction_obj(var/obj/O, var/volume)
|
||||
/datum/reagent/water/reaction_obj(obj/O, volume)
|
||||
src = null
|
||||
var/turf/T = get_turf(O)
|
||||
var/hotspot = (locate(/obj/effect/hotspot) in T)
|
||||
@@ -73,7 +73,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#1BB1AB"
|
||||
|
||||
/datum/reagent/lube/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
/datum/reagent/lube/reaction_turf(turf/simulated/T, volume)
|
||||
if(!istype(T)) return
|
||||
src = null
|
||||
if(volume >= 1)
|
||||
@@ -87,7 +87,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#61C2C2"
|
||||
|
||||
/datum/reagent/space_cleaner/reaction_obj(var/obj/O, var/volume)
|
||||
/datum/reagent/space_cleaner/reaction_obj(obj/O, volume)
|
||||
if(O && !istype(O, /atom/movable/lighting_overlay))
|
||||
O.color = initial(O.color)
|
||||
if(istype(O,/obj/effect/decal/cleanable))
|
||||
@@ -96,7 +96,7 @@
|
||||
if(O)
|
||||
O.clean_blood()
|
||||
|
||||
/datum/reagent/space_cleaner/reaction_turf(var/turf/T, var/volume)
|
||||
/datum/reagent/space_cleaner/reaction_turf(turf/T, volume)
|
||||
if(volume >= 1)
|
||||
if(T)
|
||||
T.color = initial(T.color)
|
||||
@@ -110,7 +110,7 @@
|
||||
var/turf/simulated/S = T
|
||||
S.dirt = 0
|
||||
|
||||
/datum/reagent/space_cleaner/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/space_cleaner/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(istype(M,/mob/living/carbon/human))
|
||||
@@ -151,7 +151,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#C80000" // rgb: 200, 0, 0
|
||||
|
||||
/datum/reagent/blood/reaction_mob(mob/M, method=TOUCH, reac_volume)
|
||||
/datum/reagent/blood/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(data && data["viruses"])
|
||||
for(var/datum/disease/D in data["viruses"])
|
||||
|
||||
@@ -194,15 +194,15 @@
|
||||
color = mix_data["blood_colour"]
|
||||
return 1
|
||||
|
||||
/datum/reagent/blood/on_update(var/atom/A)
|
||||
/datum/reagent/blood/on_update(atom/A)
|
||||
if(data["blood_colour"])
|
||||
color = data["blood_colour"]
|
||||
return ..()
|
||||
|
||||
/datum/reagent/blood/reaction_turf(turf/simulated/T, reac_volume)//splash the blood all over the place
|
||||
/datum/reagent/blood/reaction_turf(turf/simulated/T, volume)//splash the blood all over the place
|
||||
if(!istype(T))
|
||||
return
|
||||
if(reac_volume < 3)
|
||||
if(volume < 3)
|
||||
return
|
||||
if(!data["donor"] || istype(data["donor"], /mob/living/carbon/human))
|
||||
var/obj/effect/decal/cleanable/blood/blood_prop = locate() in T //find some blood here
|
||||
@@ -232,7 +232,7 @@
|
||||
id = "vaccine"
|
||||
color = "#C81040" // rgb: 200, 16, 64
|
||||
|
||||
/datum/reagent/vaccine/reaction_mob(mob/M, method=TOUCH, reac_volume)
|
||||
/datum/reagent/vaccine/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(islist(data) && (method == INGEST))
|
||||
for(var/datum/disease/D in M.viruses)
|
||||
if(D.GetDiseaseID() in data)
|
||||
@@ -250,21 +250,19 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#757547"
|
||||
|
||||
/datum/reagent/fishwater/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/fishwater/reaction_mob(mob/M, method=TOUCH, volume)
|
||||
if(!istype(M, /mob/living))
|
||||
return
|
||||
if(method == INGEST)
|
||||
to_chat(M, "Oh god, why did you drink that?")
|
||||
|
||||
/datum/reagent/fishwater/on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
/datum/reagent/fishwater/on_mob_life(mob/living/M)
|
||||
if(prob(30)) // Nasty, you drank this stuff? 30% chance of the fakevomit (non-stunning version)
|
||||
if(prob(50)) // 50/50 chance of green vomit vs normal vomit
|
||||
M.fakevomit(1)
|
||||
else
|
||||
M.fakevomit(0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/fishwater/toiletwater
|
||||
name = "Toilet Water"
|
||||
@@ -273,7 +271,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#757547"
|
||||
|
||||
/datum/reagent/fishwater/toiletwater/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //For shennanigans
|
||||
/datum/reagent/fishwater/toiletwater/reaction_mob(mob/M, method=TOUCH, volume) //For shennanigans
|
||||
return
|
||||
|
||||
/datum/reagent/holywater
|
||||
@@ -284,18 +282,14 @@
|
||||
color = "#0064C8" // rgb: 0, 100, 200
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/holywater/on_mob_life(var/mob/living/M as mob)
|
||||
if(!data) data = 1
|
||||
data++
|
||||
/datum/reagent/holywater/on_mob_life(mob/living/M)
|
||||
M.jitteriness = max(M.jitteriness-5,0)
|
||||
if(data >= 30) // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
if(current_cycle >= 30) // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec
|
||||
M.stuttering += 4
|
||||
M.Dizzy(5)
|
||||
if(iscultist(M) && prob(5))
|
||||
M.say(pick("Av'te Nar'sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","Egkau'haom'nai en Chaous","Ho Diak'nos tou Ap'iron","R'ge Na'sie","Diabo us Vo'iscum","Si gn'um Co'nu"))
|
||||
if(data >= 75 && prob(33)) // 30 units, 150 seconds
|
||||
if(!M.confused) M.confused = 1
|
||||
if(current_cycle >= 75 && prob(33)) // 30 units, 150 seconds
|
||||
M.confused += 3
|
||||
if(isvampirethrall(M))
|
||||
ticker.mode.remove_vampire_mind(M.mind)
|
||||
@@ -312,7 +306,7 @@
|
||||
M.confused = 0
|
||||
return
|
||||
if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full) && prob(80))
|
||||
switch(data)
|
||||
switch(current_cycle)
|
||||
if(1 to 4)
|
||||
to_chat(M, "<span class = 'warning'>Something sizzles in your veins!</span>")
|
||||
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
|
||||
@@ -331,7 +325,7 @@
|
||||
..()
|
||||
|
||||
|
||||
/datum/reagent/holywater/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
/datum/reagent/holywater/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
// Vampires have their powers weakened by holy water applied to the skin.
|
||||
if(ishuman(M) && M.mind && M.mind.vampire && !M.mind.vampire.get_ability(/datum/vampire_passive/full))
|
||||
var/mob/living/carbon/human/H=M
|
||||
@@ -347,7 +341,7 @@
|
||||
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
|
||||
|
||||
|
||||
/datum/reagent/holywater/reaction_turf(var/turf/simulated/T, var/volume)
|
||||
/datum/reagent/holywater/reaction_turf(turf/simulated/T, volume)
|
||||
..()
|
||||
if(!istype(T)) return
|
||||
if(volume>=10)
|
||||
@@ -363,7 +357,7 @@
|
||||
description = "You don't even want to think about what's in here."
|
||||
reagent_state = LIQUID
|
||||
|
||||
/datum/reagent/liquidgibs/reaction_turf(var/turf/T, var/volume) //yes i took it from synthflesh...
|
||||
/datum/reagent/liquidgibs/reaction_turf(turf/T, volume) //yes i took it from synthflesh...
|
||||
src = null
|
||||
if(volume >= 5)
|
||||
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
|
||||
@@ -386,11 +380,11 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#A70FFF"
|
||||
|
||||
/datum/reagent/drying_agent/reaction_turf(turf/simulated/T, reac_volume)
|
||||
/datum/reagent/drying_agent/reaction_turf(turf/simulated/T, volume)
|
||||
if(istype(T) && T.wet)
|
||||
T.MakeDry(TURF_WET_WATER)
|
||||
|
||||
/datum/reagent/drying_agent/reaction_obj(obj/O, reac_volume)
|
||||
/datum/reagent/drying_agent/reaction_obj(obj/O, volume)
|
||||
if(istype(O, /obj/item/clothing/shoes/galoshes))
|
||||
var/t_loc = get_turf(O)
|
||||
qdel(O)
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
reagents.handle_reactions()
|
||||
..()
|
||||
|
||||
/obj/item/weapon/reagent_containers/attack_self(mob/user as mob)
|
||||
/obj/item/weapon/reagent_containers/attack_self(mob/user)
|
||||
return
|
||||
|
||||
// this prevented pills, food, and other things from being picked up by bags.
|
||||
@@ -69,7 +69,7 @@
|
||||
/obj/item/weapon/reagent_containers/afterattack(obj/target, mob/user , flag)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/proc/reagentlist(var/obj/item/weapon/reagent_containers/snack) //Attack logs for regents in pills
|
||||
/obj/item/weapon/reagent_containers/proc/reagentlist(obj/item/weapon/reagent_containers/snack) //Attack logs for regents in pills
|
||||
var/data
|
||||
if(snack && snack.reagents && snack.reagents.reagent_list && snack.reagents.reagent_list.len) //find a reagent list if there is and check if it has entries
|
||||
for(var/datum/reagent/R in snack.reagents.reagent_list) //no reagents will be left behind
|
||||
|
||||
@@ -7,22 +7,25 @@
|
||||
|
||||
var/blood_type = null
|
||||
|
||||
New()
|
||||
..()
|
||||
if(blood_type != null)
|
||||
name = "BloodPack [blood_type]"
|
||||
reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
|
||||
update_icon()
|
||||
|
||||
on_reagent_change()
|
||||
/obj/item/weapon/reagent_containers/blood/New()
|
||||
..()
|
||||
if(blood_type != null)
|
||||
name = "BloodPack [blood_type]"
|
||||
reagents.add_reagent("blood", 200, list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=blood_type,"resistances"=null,"trace_chem"=null))
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/on_reagent_change()
|
||||
update_icon()
|
||||
var/percent = round((reagents.total_volume / volume) * 100)
|
||||
switch(percent)
|
||||
if(0 to 9) icon_state = "empty"
|
||||
if(10 to 50) icon_state = "half"
|
||||
if(51 to INFINITY) icon_state = "full"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/update_icon()
|
||||
var/percent = round((reagents.total_volume / volume) * 100)
|
||||
switch(percent)
|
||||
if(0 to 9)
|
||||
icon_state = "empty"
|
||||
if(10 to 50)
|
||||
icon_state = "half"
|
||||
if(51 to INFINITY)
|
||||
icon_state = "full"
|
||||
|
||||
/obj/item/weapon/reagent_containers/blood/random/New()
|
||||
blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-")
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
return 1
|
||||
|
||||
// Use this to add more chemicals for the borghypo to produce.
|
||||
/obj/item/weapon/reagent_containers/borghypo/proc/add_reagent(var/reagent)
|
||||
/obj/item/weapon/reagent_containers/borghypo/proc/add_reagent(reagent)
|
||||
reagent_ids |= reagent
|
||||
var/datum/reagents/RG = new(30)
|
||||
RG.my_atom = src
|
||||
@@ -69,7 +69,7 @@
|
||||
var/datum/reagents/R = reagent_list[reagent_list.len]
|
||||
R.add_reagent(reagent, 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack(mob/living/M as mob, mob/user as mob)
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack(mob/living/M, mob/user)
|
||||
var/datum/reagents/R = reagent_list[mode]
|
||||
if(!R.total_volume)
|
||||
to_chat(user, "<span class='warning'>The injector is empty.</span>")
|
||||
@@ -94,7 +94,7 @@
|
||||
to_chat(user, "<span class='notice'>[trans] units injected. [R.total_volume] units remaining.</span>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user as mob)
|
||||
/obj/item/weapon/reagent_containers/borghypo/attack_self(mob/user)
|
||||
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0) //Change the mode
|
||||
mode++
|
||||
if(mode > reagent_list.len)
|
||||
|
||||
@@ -11,111 +11,110 @@
|
||||
volume = 5
|
||||
var/filled = 0
|
||||
|
||||
afterattack(obj/target, mob/user , flag)
|
||||
if(!target.reagents) return
|
||||
|
||||
if(filled)
|
||||
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
to_chat(user, "\red [target] is full.")
|
||||
return
|
||||
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/clothing/mask/cigarette)) //You can inject humans and food but you cant remove the shit.
|
||||
to_chat(user, "\red You cannot directly fill this object.")
|
||||
return
|
||||
|
||||
var/trans = 0
|
||||
|
||||
if(ismob(target))
|
||||
if(istype(target , /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/victim = target
|
||||
|
||||
var/obj/item/safe_thing = null
|
||||
if( victim.wear_mask )
|
||||
if( victim.wear_mask.flags & MASKCOVERSEYES )
|
||||
safe_thing = victim.wear_mask
|
||||
if( victim.head )
|
||||
if( victim.head.flags & MASKCOVERSEYES )
|
||||
safe_thing = victim.head
|
||||
if(victim.glasses)
|
||||
if( !safe_thing )
|
||||
safe_thing = victim.glasses
|
||||
|
||||
if(safe_thing)
|
||||
if(!safe_thing.reagents)
|
||||
safe_thing.create_reagents(100)
|
||||
trans = src.reagents.trans_to(safe_thing, amount_per_transfer_from_this)
|
||||
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red <B>[] tries to squirt something into []'s eyes, but fails!</B>", user, target), 1)
|
||||
spawn(5)
|
||||
src.reagents.reaction(safe_thing, TOUCH)
|
||||
|
||||
|
||||
|
||||
to_chat(user, "\blue You transfer [trans] units of the solution.")
|
||||
if(src.reagents.total_volume<=0)
|
||||
filled = 0
|
||||
icon_state = "[initial(icon_state)]"
|
||||
return
|
||||
|
||||
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red <B>[] squirts something into []'s eyes!</B>", user, target), 1)
|
||||
src.reagents.reaction(target, TOUCH)
|
||||
|
||||
var/mob/living/M = target
|
||||
|
||||
var/list/injected = list()
|
||||
for(var/datum/reagent/R in src.reagents.reagent_list)
|
||||
injected += R.name
|
||||
var/contained = english_list(injected)
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been squirted with [src.name] by [key_name(user)]. Reagents: [contained]</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to squirt [key_name(M)]. Reagents: [contained]</font>")
|
||||
if(M.ckey)
|
||||
msg_admin_attack("[key_name_admin(user)] squirted [key_name_admin(M)] with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)])")
|
||||
if(!iscarbon(user))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = user
|
||||
|
||||
// /vg/: Logging transfers of bad things
|
||||
if(isobj(target))
|
||||
if(target.reagents_to_log.len)
|
||||
var/list/badshit=list()
|
||||
for(var/bad_reagent in target.reagents_to_log)
|
||||
if(reagents.has_reagent(bad_reagent))
|
||||
badshit += reagents_to_log[bad_reagent]
|
||||
if(badshit.len)
|
||||
var/hl = "<span class='danger'>([english_list(badshit)])</span>"
|
||||
message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
|
||||
log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
|
||||
|
||||
trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
to_chat(user, "\blue You transfer [trans] units of the solution.")
|
||||
if(src.reagents.total_volume<=0)
|
||||
filled = 0
|
||||
icon_state = "[initial(icon_state)]"
|
||||
|
||||
else
|
||||
|
||||
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
|
||||
to_chat(user, "\red You cannot directly remove reagents from [target].")
|
||||
return
|
||||
|
||||
if(!target.reagents.total_volume)
|
||||
to_chat(user, "\red [target] is empty.")
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
||||
|
||||
to_chat(user, "\blue You fill the [src] with [trans] units of the solution.")
|
||||
|
||||
filled = 1
|
||||
icon_state = "[initial(icon_state)][filled]"
|
||||
|
||||
/obj/item/weapon/reagent_containers/dropper/afterattack(obj/target, mob/user , flag)
|
||||
if(!target.reagents)
|
||||
return
|
||||
|
||||
if(filled)
|
||||
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
to_chat(user, "\red [target] is full.")
|
||||
return
|
||||
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/clothing/mask/cigarette)) //You can inject humans and food but you cant remove the shit.
|
||||
to_chat(user, "\red You cannot directly fill this object.")
|
||||
return
|
||||
|
||||
var/trans = 0
|
||||
|
||||
if(ismob(target))
|
||||
if(istype(target , /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/victim = target
|
||||
|
||||
var/obj/item/safe_thing = null
|
||||
if( victim.wear_mask )
|
||||
if( victim.wear_mask.flags & MASKCOVERSEYES )
|
||||
safe_thing = victim.wear_mask
|
||||
if( victim.head )
|
||||
if( victim.head.flags & MASKCOVERSEYES )
|
||||
safe_thing = victim.head
|
||||
if(victim.glasses)
|
||||
if( !safe_thing )
|
||||
safe_thing = victim.glasses
|
||||
|
||||
if(safe_thing)
|
||||
if(!safe_thing.reagents)
|
||||
safe_thing.create_reagents(100)
|
||||
trans = src.reagents.trans_to(safe_thing, amount_per_transfer_from_this)
|
||||
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red <B>[] tries to squirt something into []'s eyes, but fails!</B>", user, target), 1)
|
||||
spawn(5)
|
||||
src.reagents.reaction(safe_thing, TOUCH)
|
||||
|
||||
|
||||
|
||||
to_chat(user, "\blue You transfer [trans] units of the solution.")
|
||||
if(src.reagents.total_volume<=0)
|
||||
filled = 0
|
||||
icon_state = "[initial(icon_state)]"
|
||||
return
|
||||
|
||||
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red <B>[] squirts something into []'s eyes!</B>", user, target), 1)
|
||||
src.reagents.reaction(target, TOUCH)
|
||||
|
||||
var/mob/living/M = target
|
||||
|
||||
var/list/injected = list()
|
||||
for(var/datum/reagent/R in src.reagents.reagent_list)
|
||||
injected += R.name
|
||||
var/contained = english_list(injected)
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been squirted with [src.name] by [key_name(user)]. Reagents: [contained]</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to squirt [key_name(M)]. Reagents: [contained]</font>")
|
||||
if(M.ckey)
|
||||
msg_admin_attack("[key_name_admin(user)] squirted [key_name_admin(M)] with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)])")
|
||||
if(!iscarbon(user))
|
||||
M.LAssailant = null
|
||||
else
|
||||
M.LAssailant = user
|
||||
|
||||
// /vg/: Logging transfers of bad things
|
||||
if(isobj(target))
|
||||
if(target.reagents_to_log.len)
|
||||
var/list/badshit=list()
|
||||
for(var/bad_reagent in target.reagents_to_log)
|
||||
if(reagents.has_reagent(bad_reagent))
|
||||
badshit += reagents_to_log[bad_reagent]
|
||||
if(badshit.len)
|
||||
var/hl = "<span class='danger'>([english_list(badshit)])</span>"
|
||||
message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
|
||||
log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
|
||||
|
||||
trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
to_chat(user, "\blue You transfer [trans] units of the solution.")
|
||||
if(src.reagents.total_volume<=0)
|
||||
filled = 0
|
||||
icon_state = "[initial(icon_state)]"
|
||||
|
||||
else
|
||||
|
||||
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
|
||||
to_chat(user, "\red You cannot directly remove reagents from [target].")
|
||||
return
|
||||
|
||||
if(!target.reagents.total_volume)
|
||||
to_chat(user, "\red [target] is empty.")
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
|
||||
|
||||
to_chat(user, "\blue You fill the [src] with [trans] units of the solution.")
|
||||
|
||||
filled = 1
|
||||
icon_state = "[initial(icon_state)][filled]"
|
||||
|
||||
/obj/item/weapon/reagent_containers/dropper/cyborg
|
||||
name = "Industrial Dropper"
|
||||
desc = "A larger dropper. Transfers 10 units."
|
||||
|
||||
@@ -12,80 +12,81 @@
|
||||
|
||||
var/label_text = ""
|
||||
|
||||
New()
|
||||
..()
|
||||
src.pixel_x = rand(-10.0, 10) //Randomizes postion
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
base_name = name
|
||||
/obj/item/weapon/reagent_containers/drugs/New()
|
||||
..()
|
||||
src.pixel_x = rand(-10.0, 10) //Randomizes postion
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
base_name = name
|
||||
|
||||
afterattack(obj/target, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
/obj/item/weapon/reagent_containers/drugs/afterattack(obj/target, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
|
||||
if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
|
||||
|
||||
if(!target.reagents.total_volume && target.reagents)
|
||||
to_chat(user, "\red [target] is empty.")
|
||||
return
|
||||
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
to_chat(user, "\red [src] is full.")
|
||||
return
|
||||
|
||||
for(var/datum/reagent/A in target.reagents.reagent_list)
|
||||
if(A.reagent_state != 1)
|
||||
to_chat(user, "\red You can only put powders in [src].")
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
|
||||
to_chat(user, "\blue You fill [src] with [trans] units of the contents of [target].")
|
||||
|
||||
else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
|
||||
if(!reagents.total_volume)
|
||||
to_chat(user, "\red [src] is empty.")
|
||||
return
|
||||
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
to_chat(user, "\red [target] is full.")
|
||||
return
|
||||
|
||||
// /vg/: Logging transfers of bad things
|
||||
if(target.reagents_to_log.len)
|
||||
var/list/badshit=list()
|
||||
for(var/bad_reagent in target.reagents_to_log)
|
||||
if(reagents.has_reagent(bad_reagent))
|
||||
badshit += reagents_to_log[bad_reagent]
|
||||
if(badshit.len)
|
||||
var/hl = "<span class='danger'>([english_list(badshit)])</span>"
|
||||
message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
|
||||
log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
|
||||
|
||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
to_chat(user, "\blue You transfer [trans] units of the solution to [target].")
|
||||
|
||||
//Safety for dumping stuff into a ninja suit. It handles everything through attackby() and this is unnecessary.
|
||||
|
||||
/*else if(istype(target, /obj/machinery/bunsen_burner))
|
||||
if(!target.reagents.total_volume && target.reagents)
|
||||
to_chat(user, "\red [target] is empty.")
|
||||
return
|
||||
|
||||
else if(istype(target, /obj/machinery/radiocarbon_spectrometer))
|
||||
return*/
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
to_chat(user, "\red [src] is full.")
|
||||
return
|
||||
|
||||
for(var/datum/reagent/A in target.reagents.reagent_list)
|
||||
if(A.reagent_state != 1)
|
||||
to_chat(user, "\red You can only put powders in [src].")
|
||||
return
|
||||
|
||||
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
|
||||
to_chat(user, "\blue You fill [src] with [trans] units of the contents of [target].")
|
||||
|
||||
else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
|
||||
if(!reagents.total_volume)
|
||||
to_chat(user, "\red [src] is empty.")
|
||||
return
|
||||
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
to_chat(user, "\red [target] is full.")
|
||||
return
|
||||
|
||||
// /vg/: Logging transfers of bad things
|
||||
if(target.reagents_to_log.len)
|
||||
var/list/badshit=list()
|
||||
for(var/bad_reagent in target.reagents_to_log)
|
||||
if(reagents.has_reagent(bad_reagent))
|
||||
badshit += reagents_to_log[bad_reagent]
|
||||
if(badshit.len)
|
||||
var/hl = "<span class='danger'>([english_list(badshit)])</span>"
|
||||
message_admins("[key_name_admin(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].[hl]")
|
||||
log_game("[key_name(user)] added [reagents.get_reagent_ids(1)] to \a [target] with [src].")
|
||||
|
||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
to_chat(user, "\blue You transfer [trans] units of the solution to [target].")
|
||||
|
||||
//Safety for dumping stuff into a ninja suit. It handles everything through attackby() and this is unnecessary.
|
||||
|
||||
/*else if(istype(target, /obj/machinery/bunsen_burner))
|
||||
return
|
||||
|
||||
else if(istype(target, /obj/machinery/radiocarbon_spectrometer))
|
||||
return*/
|
||||
|
||||
|
||||
attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
|
||||
var/tmp_label = sanitize(input(user, "Enter a label for [src.name]","Label",src.label_text))
|
||||
if(length(tmp_label) > 10)
|
||||
to_chat(user, "\red The label can be at most 10 characters long.")
|
||||
else
|
||||
to_chat(user, "\blue You set the label to \"[tmp_label]\".")
|
||||
src.label_text = tmp_label
|
||||
src.update_name_label()
|
||||
|
||||
proc/update_name_label()
|
||||
if(src.label_text == "")
|
||||
src.name = src.base_name
|
||||
/obj/item/weapon/reagent_containers/drugs/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/device/flashlight/pen))
|
||||
var/tmp_label = sanitize(input(user, "Enter a label for [src.name]","Label",src.label_text))
|
||||
if(length(tmp_label) > 10)
|
||||
to_chat(user, "\red The label can be at most 10 characters long.")
|
||||
else
|
||||
src.name = "[src.base_name] ([src.label_text])"
|
||||
to_chat(user, "\blue You set the label to \"[tmp_label]\".")
|
||||
src.label_text = tmp_label
|
||||
src.update_name_label()
|
||||
|
||||
/obj/item/weapon/reagent_containers/drugs/proc/update_name_label()
|
||||
if(src.label_text == "")
|
||||
src.name = src.base_name
|
||||
else
|
||||
src.name = "[src.base_name] ([src.label_text])"
|
||||
|
||||
/obj/item/weapon/reagent_containers/drugs/baggie
|
||||
name = "baggie"
|
||||
@@ -94,39 +95,42 @@
|
||||
icon_state = "baggie"
|
||||
item_state = "beaker"
|
||||
|
||||
on_reagent_change()
|
||||
update_icon()
|
||||
|
||||
pickup(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
dropped(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
attack_hand()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/drugs/on_reagent_change()
|
||||
update_icon()
|
||||
overlays.Cut()
|
||||
|
||||
if(reagents.total_volume)
|
||||
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]2")
|
||||
/obj/item/weapon/reagent_containers/drugs/pickup(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
switch(reagents.total_volume)
|
||||
if(0 to 2) filling.icon_state = "[icon_state]2"
|
||||
if(3 to 4) filling.icon_state = "[icon_state]4"
|
||||
if(5 to 6) filling.icon_state = "[icon_state]6"
|
||||
if(7 to 8) filling.icon_state = "[icon_state]8"
|
||||
if(9 to 10) filling.icon_state = "[icon_state]10"
|
||||
/obj/item/weapon/reagent_containers/drugs/dropped(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/drugs/attack_hand()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/drugs/update_icon()
|
||||
overlays.Cut()
|
||||
|
||||
if(reagents.total_volume)
|
||||
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]2")
|
||||
|
||||
switch(reagents.total_volume)
|
||||
if(0 to 2)
|
||||
filling.icon_state = "[icon_state]2"
|
||||
if(3 to 4)
|
||||
filling.icon_state = "[icon_state]4"
|
||||
if(5 to 6)
|
||||
filling.icon_state = "[icon_state]6"
|
||||
if(7 to 8)
|
||||
filling.icon_state = "[icon_state]8"
|
||||
if(9 to 10)
|
||||
filling.icon_state = "[icon_state]10"
|
||||
|
||||
|
||||
filling.icon += mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
filling.icon += mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
|
||||
/obj/item/weapon/reagent_containers/drugs/baggie/meth
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("methamphetamine", 10)
|
||||
list_reagents = list("methamphetamine" = 10)
|
||||
@@ -13,6 +13,6 @@
|
||||
var/instant_application = 0 //if we want to bypass the forcedfeed delay
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/New()
|
||||
..()
|
||||
src.pixel_x = rand(-10.0, 10) //Randomizes postion
|
||||
src.pixel_y = rand(-10.0, 10)
|
||||
..()
|
||||
pixel_x = rand(-10, 10) //Randomizes postion
|
||||
pixel_y = rand(-10, 10)
|
||||
@@ -12,190 +12,158 @@
|
||||
flags = OPENCONTAINER
|
||||
volume = 30
|
||||
|
||||
New()
|
||||
..()
|
||||
if(!icon_state)
|
||||
icon_state = "bottle[rand(1,20)]"
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/New()
|
||||
..()
|
||||
if(!icon_state)
|
||||
icon_state = "bottle[rand(1,20)]"
|
||||
|
||||
|
||||
//Copypasta from /obj/item/weapon/reagent_containers/glass/beaker
|
||||
on_reagent_change()
|
||||
update_icon()
|
||||
|
||||
pickup(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
dropped(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
attack_hand()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/on_reagent_change()
|
||||
update_icon()
|
||||
overlays.Cut()
|
||||
|
||||
if(reagents.total_volume)
|
||||
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10")
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/pickup(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
var/percent = round((reagents.total_volume / volume) * 100)
|
||||
switch(percent)
|
||||
if(0 to 24) filling.icon_state = "[icon_state]10"
|
||||
if(25 to 49) filling.icon_state = "[icon_state]25"
|
||||
if(50 to 74) filling.icon_state = "[icon_state]50"
|
||||
if(75 to 90) filling.icon_state = "[icon_state]75"
|
||||
if(91 to INFINITY) filling.icon_state = "[icon_state]100"
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/dropped(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
filling.icon += mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/attack_hand()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
if(!is_open_container())
|
||||
var/image/lid = image(icon, src, "lid_bottle")
|
||||
overlays += lid
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/update_icon()
|
||||
overlays.Cut()
|
||||
|
||||
if(reagents.total_volume)
|
||||
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]10")
|
||||
|
||||
var/percent = round((reagents.total_volume / volume) * 100)
|
||||
switch(percent)
|
||||
if(0 to 24)
|
||||
filling.icon_state = "[icon_state]10"
|
||||
if(25 to 49)
|
||||
filling.icon_state = "[icon_state]25"
|
||||
if(50 to 74)
|
||||
filling.icon_state = "[icon_state]50"
|
||||
if(75 to 90)
|
||||
filling.icon_state = "[icon_state]75"
|
||||
if(91 to INFINITY)
|
||||
filling.icon_state = "[icon_state]100"
|
||||
|
||||
filling.icon += mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
|
||||
if(!is_open_container())
|
||||
var/image/lid = image(icon, src, "lid_bottle")
|
||||
overlays += lid
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/toxin
|
||||
name = "toxin bottle"
|
||||
desc = "A small bottle of toxins. Do not drink, it is poisonous."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle12"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("toxin", 30)
|
||||
list_reagents = list("toxin" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/cyanide
|
||||
name = "cyanide bottle"
|
||||
desc = "A small bottle of cyanide. Bitter almonds?"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle12"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("cyanide", 30)
|
||||
list_reagents = list("cyanide" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/mutagen
|
||||
name = "unstable mutagen bottle"
|
||||
desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle20"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("mutagen", 30)
|
||||
list_reagents = list("mutagen" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ammonia
|
||||
name = "ammonia bottle"
|
||||
desc = "A small bottle."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle20"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("ammonia", 30)
|
||||
list_reagents = list("ammonia" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/diethylamine
|
||||
name = "diethylamine bottle"
|
||||
desc = "A small bottle."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("diethylamine", 30)
|
||||
list_reagents = list("diethylamine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/facid
|
||||
name = "Fluorosulfuric Acid Bottle"
|
||||
desc = "A small bottle. Contains a small amount of Fluorosulfuric Acid"
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("facid", 30)
|
||||
list_reagents = list("facid" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/adminordrazine
|
||||
name = "Adminordrazine Bottle"
|
||||
desc = "A small bottle. Contains the liquid essence of the gods."
|
||||
icon = 'icons/obj/drinks.dmi'
|
||||
icon_state = "holyflask"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("adminordrazine", 30)
|
||||
list_reagents = list("adminordrazine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/capsaicin
|
||||
name = "Capsaicin Bottle"
|
||||
desc = "A small bottle. Contains hot sauce."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle3"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("capsaicin", 30)
|
||||
list_reagents = list("capsaicin" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/frostoil
|
||||
name = "Frost Oil Bottle"
|
||||
desc = "A small bottle. Contains cold sauce."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("frostoil", 30)
|
||||
list_reagents = list("frostoil" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/morphine
|
||||
name = "Morphine Bottle"
|
||||
desc = "A small bottle. Contains morphine."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("morphine", 30)
|
||||
list_reagents = list("morphine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/ether
|
||||
name = "Ether Bottle"
|
||||
desc = "A small bottle. Contains ether."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("ether", 30)
|
||||
list_reagents = list("ether" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/charcoal
|
||||
name = "Charcoal Bottle"
|
||||
desc = "A small bottle. Contains charcoal."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("charcoal", 30)
|
||||
list_reagents = list("charcoal" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/epinephrine
|
||||
name = "Epinephrine Bottle"
|
||||
desc = "A small bottle. Contains epinephrine."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("epinephrine", 30)
|
||||
list_reagents = list("epinephrine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/pancuronium
|
||||
name = "Pancuronium Bottle"
|
||||
desc = "A small bottle of pancuronium."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle14"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("pancuronium", 30)
|
||||
list_reagents = list("pancuronium" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/sulfonal
|
||||
name = "Sulfonal Bottle"
|
||||
desc = "A small bottle of Sulfonal."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle19"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("sulfonal", 30)
|
||||
list_reagents = list("sulfonal" = 30)
|
||||
|
||||
//Reagent bottles
|
||||
|
||||
@@ -209,86 +177,64 @@
|
||||
name = "Oil Bottle"
|
||||
desc = "A reagent bottle. Contains oil."
|
||||
icon_state = "rbottle1"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("oil", 50)
|
||||
list_reagents = list("oil" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/phenol
|
||||
name = "Phenol Bottle"
|
||||
desc = "A reagent bottle. Contains phenol."
|
||||
icon_state = "rbottle2"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("phenol", 50)
|
||||
list_reagents = list("phenol" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/acetone
|
||||
name = "Acetone Bottle"
|
||||
desc = "A reagent bottle. Contains acetone."
|
||||
icon_state = "rbottle3"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("acetone", 50)
|
||||
list_reagents = list("acetone" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/ammonia
|
||||
name = "Ammonia Bottle"
|
||||
desc = "A reagent bottle. Contains ammonia."
|
||||
icon_state = "rbottle4"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("ammonia", 50)
|
||||
list_reagents = list("ammonia" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/diethylamine
|
||||
name = "Diethylamine Bottle"
|
||||
desc = "A reagent bottle. Contains diethylamine."
|
||||
icon_state = "rbottle5"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("diethylamine", 50)
|
||||
list_reagents = list("diethylamine" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/acid
|
||||
name = "Acid Bottle"
|
||||
desc = "A reagent bottle. Contains sulfuric acid."
|
||||
icon_state = "rbottle6"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("sacid", 50)
|
||||
list_reagents = list("sacid" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/formaldehyde
|
||||
name = "Formaldehyde Bottle"
|
||||
desc = "A reagent bottle. Contains formaldehyde."
|
||||
icon_state = "rbottle"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("formaldehyde", 50)
|
||||
list_reagents = list("formaldehyde" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine
|
||||
name = "Morphine Bottle"
|
||||
desc = "A reagent bottle. Contains morphine."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("morphine", 50)
|
||||
list_reagents = list("morphine" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin
|
||||
name = "Insulin Bottle"
|
||||
desc = "A reagent bottle. Contains insulin."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("insulin", 50)
|
||||
list_reagents = list("insulin" = 50)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/hairgrownium
|
||||
name = "Hair Grow Gel"
|
||||
desc = "A bottle full of a stimulative hair growth formula"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("hairgrownium", 50)
|
||||
list_reagents = list("hairgrownium" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/reagent/hair_dye
|
||||
name = "Quantum Hair Dye Bottle"
|
||||
desc = "A bottle of the ever-changing quantum hair dye."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("hair_dye", 50)
|
||||
list_reagents = list("hair_dye" = 50)
|
||||
|
||||
////////////////////Traitor Poison Bottle//////////////////////////////
|
||||
|
||||
@@ -297,9 +243,9 @@
|
||||
possible_transfer_amounts = list(5,10,15,25,30,40)
|
||||
volume = 40
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent(pick_list("chemistry_tools.json", "traitor_poison_bottle"), 40)
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/traitor/New()
|
||||
..()
|
||||
reagents.add_reagent(pick_list("chemistry_tools.json", "traitor_poison_bottle"), 40)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/plasma
|
||||
name = "plasma dust bottle"
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(5,10,15,25,30,50,100)
|
||||
flags = OPENCONTAINER
|
||||
volume = 60
|
||||
var/reagent = ""
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/epinephrine
|
||||
name = "internal epinephrine bottle"
|
||||
desc = "A small bottle. Contains epinephrine - used to stabilize patients."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle16"
|
||||
reagent = "epinephrine"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/epinephrine/New()
|
||||
..()
|
||||
reagents.add_reagent("epinephrine", 60)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/charcoal
|
||||
name = "internal charcoal bottle"
|
||||
desc = "A small bottle of charcoal. Counters poisons and repairs damage."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "bottle17"
|
||||
reagent = "charcoal"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bottle/robot/charcoal/New()
|
||||
..()
|
||||
reagents.add_reagent("charcoal", 60)
|
||||
return
|
||||
@@ -268,7 +268,7 @@
|
||||
if(assembly)
|
||||
assembly.Crossed(AM)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/on_found(mob/finder as mob) //for mousetraps
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/on_found(mob/finder) //for mousetraps
|
||||
if(assembly)
|
||||
assembly.on_found(finder)
|
||||
|
||||
@@ -319,20 +319,14 @@
|
||||
possible_transfer_amounts = list(5,10,15,25,30,50,100,300)
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone/New()
|
||||
..()
|
||||
reagents.add_reagent("cryoxadone", 30)
|
||||
update_icon()
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone
|
||||
list_reagents = list("cryoxadone" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/sulphuric/New()
|
||||
..()
|
||||
reagents.add_reagent("sacid", 50)
|
||||
update_icon()
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/sulphuric
|
||||
list_reagents = list("sacid" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/slime/New()
|
||||
..()
|
||||
reagents.add_reagent("slimejelly", 50)
|
||||
update_icon()
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/slime
|
||||
list_reagents = list("slimejelly" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bucket
|
||||
desc = "It's a bucket."
|
||||
@@ -347,7 +341,7 @@
|
||||
volume = 120
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/bucket/attackby(var/obj/D, mob/user as mob, params)
|
||||
/obj/item/weapon/reagent_containers/glass/bucket/attackby(obj/D, mob/user, params)
|
||||
if(isprox(D))
|
||||
to_chat(user, "You add [D] to [src].")
|
||||
qdel(D)
|
||||
@@ -365,52 +359,4 @@
|
||||
volume = 15
|
||||
amount_per_transfer_from_this = 5
|
||||
possible_transfer_amounts = list(1,5,15)
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/*
|
||||
/obj/item/weapon/reagent_containers/glass/blender_jug
|
||||
name = "Blender Jug"
|
||||
desc = "A blender jug, part of a blender."
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "blender_jug_e"
|
||||
volume = 100
|
||||
|
||||
on_reagent_change()
|
||||
switch(src.reagents.total_volume)
|
||||
if(0)
|
||||
icon_state = "blender_jug_e"
|
||||
if(1 to 75)
|
||||
icon_state = "blender_jug_h"
|
||||
if(76 to 100)
|
||||
icon_state = "blender_jug_f"
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/canister //not used apparantly
|
||||
desc = "It's a canister. Mainly used for transporting fuel."
|
||||
name = "canister"
|
||||
icon = 'icons/obj/tank.dmi'
|
||||
icon_state = "canister"
|
||||
item_state = "canister"
|
||||
materials = list(MAT_METAL=300)
|
||||
w_class = 4
|
||||
|
||||
amount_per_transfer_from_this = 20
|
||||
possible_transfer_amounts = list(10,20,30,60)
|
||||
volume = 120
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/dispenser
|
||||
name = "reagent glass"
|
||||
desc = "A reagent glass."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "beaker0"
|
||||
amount_per_transfer_from_this = 10
|
||||
flags = OPENCONTAINER
|
||||
|
||||
/obj/item/weapon/reagent_containers/glass/dispenser/surfactant
|
||||
name = "reagent glass (surfactant)"
|
||||
icon_state = "liquid"
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("fluorosurfactant", 20)
|
||||
|
||||
*/
|
||||
flags = OPENCONTAINER
|
||||
@@ -43,11 +43,8 @@
|
||||
var/trans = reagents.trans_to(M, amount_per_transfer_from_this)
|
||||
to_chat(user, "\blue [trans] units injected. [reagents.total_volume] units remaining in [src].")
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/CMO/New()
|
||||
..()
|
||||
reagents.add_reagent("omnizine", 30)
|
||||
/obj/item/weapon/reagent_containers/hypospray/CMO
|
||||
list_reagents = list("omnizine" = 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/combat
|
||||
name = "combat stimulant injector"
|
||||
@@ -55,21 +52,14 @@
|
||||
amount_per_transfer_from_this = 10
|
||||
possible_transfer_amounts = list(10)
|
||||
icon_state = "combat_hypo"
|
||||
volume = 60
|
||||
volume = 75
|
||||
ignore_flags = 1 // So they can heal their comrades.
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/combat/New()
|
||||
..()
|
||||
reagents.add_reagent("synaptizine", 30)
|
||||
list_reagents = list("epinephrine" = 30, "omnizine" = 30, "teporone" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/combat/nanites
|
||||
name = "combat stimulant injector"
|
||||
desc = "A modified air-needle autoinjector filled with expensive regeneration nanites."
|
||||
desc = "A modified air-needle autoinjector for use in combat situations. Prefilled with expensive medical nanites for rapid healing."
|
||||
volume = 100
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/combat/nanites/New()
|
||||
..()
|
||||
reagents.add_reagent("nanites", 70)
|
||||
list_reagents = list("nanites" = 100)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector
|
||||
name = "emergency autoinjector"
|
||||
@@ -81,56 +71,41 @@
|
||||
volume = 10
|
||||
ignore_flags = 1 //so you can medipen through hardsuits
|
||||
flags = null
|
||||
list_reagents = list("epinephrine" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/New()
|
||||
..()
|
||||
reagents.add_reagent("epinephrine", 10)
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M as mob, mob/user as mob)
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/attack(mob/M, mob/user)
|
||||
if(!reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>[src] is empty!</span>")
|
||||
return
|
||||
..()
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon()
|
||||
if(reagents.total_volume > 0)
|
||||
icon_state = "[initial(icon_state)]1"
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]0"
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine(mob/user)
|
||||
..(user)
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine()
|
||||
..()
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
to_chat(user, "\blue It is currently loaded.")
|
||||
to_chat(usr, "<span class='notice'>It is currently loaded.</span>")
|
||||
else
|
||||
to_chat(user, "\blue It is spent.")
|
||||
to_chat(usr, "<span class='notice'>It is spent.</span>")
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/teporone //basilisks
|
||||
name = "teporone autoinjector"
|
||||
desc = "A rapid way to regulate your body's temperature in the event of a hardsuit malfunction at the cost of some shortness of breath."
|
||||
desc = "A rapid way to regulate your body's temperature in the event of a hardsuit malfunction."
|
||||
icon_state = "lepopen"
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/teporone/New()
|
||||
..()
|
||||
reagents.remove_reagent("epinephrine", 10)
|
||||
reagents.add_reagent("teporone", 9)
|
||||
reagents.add_reagent("lexorin", 1)
|
||||
update_icon()
|
||||
return
|
||||
list_reagents = list("teporone" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack //goliath kiting
|
||||
name = "stimpack autoinjector"
|
||||
desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor at the cost of some shortness of breath."
|
||||
desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor."
|
||||
icon_state = "stimpen"
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimpack/New()
|
||||
..()
|
||||
reagents.remove_reagent("epinephrine", 10)
|
||||
reagents.add_reagent("methamphetamine", 9)
|
||||
reagents.add_reagent("lexorin", 1)
|
||||
update_icon()
|
||||
return
|
||||
volume = 20
|
||||
amount_per_transfer_from_this = 20
|
||||
list_reagents = list("methamphetamine" = 10, "coffee" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimulants
|
||||
name = "Stimulants autoinjector"
|
||||
@@ -139,10 +114,4 @@
|
||||
amount_per_transfer_from_this = 50
|
||||
possible_transfer_amounts = list(50)
|
||||
volume = 50
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/stimulants/New()
|
||||
..()
|
||||
reagents.remove_reagent("epinephrine", 10)
|
||||
reagents.add_reagent("stimulants", 50)
|
||||
update_icon()
|
||||
return
|
||||
list_reagents = list("stimulants" = 50)
|
||||
@@ -11,14 +11,15 @@
|
||||
volume = 50
|
||||
consume_sound = null
|
||||
|
||||
New()
|
||||
..()
|
||||
if(!icon_state)
|
||||
icon_state = "pill[rand(1,20)]"
|
||||
/obj/item/weapon/reagent_containers/food/pill/New()
|
||||
..()
|
||||
if(!icon_state)
|
||||
icon_state = "pill[rand(1,20)]"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/attack_self(mob/user as mob)
|
||||
/obj/item/weapon/reagent_containers/food/pill/attack_self(mob/user)
|
||||
return
|
||||
/obj/item/weapon/reagent_containers/food/pill/attack(var/mob/living/carbon/M, mob/user as mob, def_zone)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/attack(mob/living/carbon/M, mob/user, def_zone)
|
||||
if(!istype(M))
|
||||
return 0
|
||||
bitesize = reagents.total_volume
|
||||
@@ -29,7 +30,8 @@
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/afterattack(obj/target, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
if(target.is_open_container() != 0 && target.reagents)
|
||||
if(!target.reagents.total_volume)
|
||||
@@ -65,89 +67,64 @@
|
||||
name = "Toxins pill"
|
||||
desc = "Highly toxic."
|
||||
icon_state = "pill5"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("toxin", 50)
|
||||
list_reagents = list("toxin" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/initropidril
|
||||
name = "initropidril pill"
|
||||
desc = "Don't swallow this."
|
||||
icon_state = "pill5"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("initropidril", 50)
|
||||
list_reagents = list("initropidril" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/adminordrazine
|
||||
name = "Adminordrazine pill"
|
||||
desc = "It's magic. We don't have to explain it."
|
||||
icon_state = "pill16"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("adminordrazine", 50)
|
||||
list_reagents = list("adminordrazine" = 50)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/methamphetamine
|
||||
name = "Methamphetamine pill"
|
||||
desc = "Helps improve the ability to concentrate."
|
||||
icon_state = "pill8"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("methamphetamine", 5)
|
||||
list_reagents = list("methamphetamine" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/haloperidol
|
||||
name = "Haloperidol pill"
|
||||
desc = "Haloperidol is an anti-psychotic use to treat psychiatric problems."
|
||||
icon_state = "pill8"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("haloperidol", 15)
|
||||
list_reagents = list("haloperidol" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/paroxetine
|
||||
name = "Paroxetine pill"
|
||||
desc = "Heavy anti-depressant."
|
||||
icon_state = "pill8"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("paroxetine", 15)
|
||||
|
||||
list_reagents = list("paroxetine" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/happy
|
||||
name = "Happy pill"
|
||||
desc = "Happy happy joy joy!"
|
||||
icon_state = "pill18"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("space_drugs", 15)
|
||||
reagents.add_reagent("sugar", 15)
|
||||
list_reagents = list("space_drugs" = 15, "sugar" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/zoom
|
||||
name = "Zoom pill"
|
||||
desc = "Zoooom!"
|
||||
icon_state = "pill18"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("synaptizine", 5)
|
||||
reagents.add_reagent("methamphetamine", 5)
|
||||
list_reagents = list("synaptizine" = 5, "methamphetamine" = 5)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/charcoal
|
||||
name = "Charcoal pill"
|
||||
desc = "Neutralizes many common toxins."
|
||||
icon_state = "pill17"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("charcoal", 25)
|
||||
list_reagents = list("charcoal" = 25)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/salicylic
|
||||
name = "Salicylic Acid pill"
|
||||
desc = "Commonly used to treat moderate pain and fevers."
|
||||
icon_state = "pill4"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("sal_acid", 20)
|
||||
list_reagents = list("sal_acid" = 20)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/pill/salbutamol
|
||||
name = "Salbutamol pill"
|
||||
desc = "Used to treat respiratory distress."
|
||||
icon_state = "pill8"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("salbutamol", 20)
|
||||
list_reagents = list("salbutamol" = 20)
|
||||
@@ -17,7 +17,7 @@
|
||||
possible_transfer_amounts = null
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/afterattack(atom/A as mob|obj, mob/user as mob)
|
||||
/obj/item/weapon/reagent_containers/spray/afterattack(atom/A, mob/user)
|
||||
if(istype(A, /obj/item/weapon/storage) || istype(A, /obj/structure/table) || istype(A, /obj/structure/rack) || istype(A, /obj/structure/closet) \
|
||||
|| istype(A, /obj/item/weapon/reagent_containers) || istype(A, /obj/structure/sink) || istype(A, /obj/structure/janitorialcart) || istype(A, /obj/machinery/portable_atmospherics/hydroponics))
|
||||
return
|
||||
@@ -103,20 +103,13 @@
|
||||
/obj/item/weapon/reagent_containers/spray/cleaner
|
||||
name = "space cleaner"
|
||||
desc = "BLAM!-brand non-foaming space cleaner!"
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/cleaner/New()
|
||||
..()
|
||||
reagents.add_reagent("cleaner", 250)
|
||||
list_reagents = list("cleaner" = 250)
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/cleaner/drone
|
||||
name = "space cleaner"
|
||||
desc = "BLAM!-brand non-foaming space cleaner!"
|
||||
volume = 50
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/cleaner/New()
|
||||
..()
|
||||
reagents.add_reagent("cleaner", src.volume)
|
||||
list_reagents = list("cleaner" = 50)
|
||||
|
||||
//pepperspray
|
||||
/obj/item/weapon/reagent_containers/spray/pepper
|
||||
@@ -128,11 +121,7 @@
|
||||
volume = 40
|
||||
spray_maxrange = 4
|
||||
amount_per_transfer_from_this = 5
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/pepper/New()
|
||||
..()
|
||||
reagents.add_reagent("condensedcapsaicin", 40)
|
||||
list_reagents = list("condensedcapsaicin" = 40)
|
||||
|
||||
//water flower
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower
|
||||
@@ -143,12 +132,9 @@
|
||||
item_state = "sunflower"
|
||||
amount_per_transfer_from_this = 1
|
||||
volume = 10
|
||||
list_reagents = list("water" = 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower/New()
|
||||
..()
|
||||
reagents.add_reagent("water", 10)
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower/attack_self(var/mob/user) //Don't allow changing how much the flower sprays
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays
|
||||
return
|
||||
|
||||
//chemsprayer
|
||||
@@ -218,14 +204,10 @@
|
||||
icon_state = "plantbgone"
|
||||
item_state = "plantbgone"
|
||||
volume = 100
|
||||
list_reagents = list("atrazine" = 100)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/plantbgone/New()
|
||||
..()
|
||||
reagents.add_reagent("atrazine", 100)
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/spray/plantbgone/afterattack(atom/A as mob|obj, mob/user as mob, proximity)
|
||||
/obj/item/weapon/reagent_containers/spray/plantbgone/afterattack(atom/A, mob/user, proximity)
|
||||
if(!proximity) return
|
||||
|
||||
if(istype(A, /obj/machinery/portable_atmospherics/hydroponics)) // We are targeting hydrotray
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
var/mode = SYRINGE_DRAW
|
||||
var/projectile_type = /obj/item/projectile/bullet/dart/syringe
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/New()
|
||||
..()
|
||||
if(list_reagents) //syringe starts in inject mode if its already got something inside
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/on_reagent_change()
|
||||
update_icon()
|
||||
|
||||
@@ -30,8 +36,7 @@
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/attack_self(mob/user as mob)
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/attack_self(mob/user)
|
||||
switch(mode)
|
||||
if(SYRINGE_DRAW)
|
||||
mode = SYRINGE_INJECT
|
||||
@@ -45,10 +50,10 @@
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/attack(mob/living/M as mob, mob/living/user as mob, def_zone)
|
||||
/obj/item/weapon/reagent_containers/syringe/attack(mob/living/M, mob/living/user, def_zone)
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/attackby(obj/item/I as obj, mob/user as mob, params)
|
||||
/obj/item/weapon/reagent_containers/syringe/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I,/obj/item/weapon/storage/bag))
|
||||
..()
|
||||
return
|
||||
@@ -66,13 +71,6 @@
|
||||
to_chat(user, "\red This syringe is broken!")
|
||||
return
|
||||
|
||||
/* if(user.a_intent == I_HARM && ismob(target))
|
||||
if((CLUMSY in user.mutations) && prob(50))
|
||||
target = user
|
||||
syringestab(target, user)
|
||||
return */
|
||||
|
||||
|
||||
switch(mode)
|
||||
if(SYRINGE_DRAW)
|
||||
|
||||
@@ -286,60 +284,6 @@
|
||||
filling.icon += mix_color_from_reagents(reagents.reagent_list)
|
||||
overlays += filling
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/proc/syringestab(mob/living/carbon/target as mob, mob/living/carbon/user as mob)
|
||||
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
target.attack_log += "\[[time_stamp()]\]<font color='orange'> Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
if(target.ckey)
|
||||
msg_admin_attack("[key_name_admin(user)] attacked [key_name_admin(target)] with [src.name] (INTENT: [uppertext(user.a_intent)])")
|
||||
if(!iscarbon(user))
|
||||
target.LAssailant = null
|
||||
else
|
||||
target.LAssailant = user
|
||||
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
|
||||
var/target_zone = ran_zone(check_zone(user.zone_sel.selecting, target))
|
||||
var/obj/item/organ/external/affecting = target:get_organ(target_zone)
|
||||
|
||||
if(!affecting || (affecting.status & ORGAN_DESTROYED) || affecting.is_stump())
|
||||
to_chat(user, "<span class='danger'>They are missing that limb!</span>")
|
||||
return
|
||||
var/hit_area = affecting.name
|
||||
|
||||
var/mob/living/carbon/human/H = target
|
||||
if((user != target) && H.check_shields(7, "the [src.name]"))
|
||||
return
|
||||
|
||||
if(target != user && target.getarmor(target_zone, "melee") > 5 && prob(50))
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red <B>[user] tries to stab [target] in \the [hit_area] with [src.name], but the attack is deflected by armor!</B>"), 1)
|
||||
user.unEquip(src)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red <B>[user] stabs [target] in \the [hit_area] with [src.name]!</B>"), 1)
|
||||
|
||||
if(affecting.take_damage(3))
|
||||
target:UpdateDamageIcon()
|
||||
|
||||
else
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red <B>[user] stabs [target] with [src.name]!</B>"), 1)
|
||||
target.take_organ_damage(3)// 7 is the same as crowbar punch
|
||||
|
||||
src.reagents.reaction(target, INGEST)
|
||||
var/syringestab_amount_transferred = rand(0, (reagents.total_volume - 5)) //nerfed by popular demand
|
||||
src.reagents.trans_to(target, syringestab_amount_transferred)
|
||||
src.desc += " It is broken."
|
||||
src.mode = SYRINGE_BROKEN
|
||||
src.add_blood(target)
|
||||
src.add_fingerprint(usr)
|
||||
src.update_icon()
|
||||
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe
|
||||
name = "Lethal Injection Syringe"
|
||||
desc = "A syringe used for lethal injections."
|
||||
@@ -351,104 +295,101 @@
|
||||
volume = 50
|
||||
var/mode = SYRINGE_DRAW
|
||||
|
||||
on_reagent_change()
|
||||
update_icon()
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/on_reagent_change()
|
||||
update_icon()
|
||||
|
||||
pickup(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/pickup(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
dropped(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/dropped(mob/user)
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
attack_self(mob/user as mob)
|
||||
mode = !mode
|
||||
update_icon()
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/attack_self(mob/user)
|
||||
mode = !mode
|
||||
update_icon()
|
||||
|
||||
attack_hand()
|
||||
..()
|
||||
update_icon()
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/attack_hand()
|
||||
..()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/attackby(obj/item/I, mob/user)
|
||||
return
|
||||
|
||||
attackby(obj/item/I as obj, mob/user as mob)
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/afterattack(obj/target, mob/user , flag)
|
||||
if(!target.reagents)
|
||||
return
|
||||
|
||||
afterattack(obj/target, mob/user , flag)
|
||||
if(!target.reagents) return
|
||||
switch(mode)
|
||||
if(SYRINGE_DRAW)
|
||||
|
||||
switch(mode)
|
||||
if(SYRINGE_DRAW)
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
to_chat(user, "\red The syringe is full.")
|
||||
return
|
||||
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
to_chat(user, "\red The syringe is full.")
|
||||
if(ismob(target))
|
||||
if(istype(target, /mob/living/carbon))//I Do not want it to suck 50 units out of people
|
||||
to_chat(usr, "This needle isn't designed for drawing blood.")
|
||||
return
|
||||
else //if not mob
|
||||
if(!target.reagents.total_volume)
|
||||
to_chat(user, "\red [target] is empty.")
|
||||
return
|
||||
|
||||
if(ismob(target))
|
||||
if(istype(target, /mob/living/carbon))//I Do not want it to suck 50 units out of people
|
||||
to_chat(usr, "This needle isn't designed for drawing blood.")
|
||||
return
|
||||
else //if not mob
|
||||
if(!target.reagents.total_volume)
|
||||
to_chat(user, "\red [target] is empty.")
|
||||
return
|
||||
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
|
||||
to_chat(user, "\red You cannot directly remove reagents from this object.")
|
||||
return
|
||||
|
||||
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers))
|
||||
to_chat(user, "\red You cannot directly remove reagents from this object.")
|
||||
return
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares?
|
||||
|
||||
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares?
|
||||
to_chat(user, "\blue You fill the syringe with [trans] units of the solution.")
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
mode=!mode
|
||||
update_icon()
|
||||
|
||||
to_chat(user, "\blue You fill the syringe with [trans] units of the solution.")
|
||||
if(reagents.total_volume >= reagents.maximum_volume)
|
||||
mode=!mode
|
||||
if(SYRINGE_INJECT)
|
||||
if(!reagents.total_volume)
|
||||
to_chat(user, "\red The Syringe is empty.")
|
||||
return
|
||||
if(istype(target, /obj/item/weapon/implantcase/chem))
|
||||
return
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food))
|
||||
to_chat(user, "\red You cannot directly fill this object.")
|
||||
return
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
to_chat(user, "\red [target] is full.")
|
||||
return
|
||||
|
||||
if(ismob(target) && target != user)
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red <B>[] is trying to inject [] with a giant syringe!</B>", user, target), 1)
|
||||
if(!do_mob(user, target, 300)) return
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red [] injects [] with a giant syringe!", user, target), 1)
|
||||
src.reagents.reaction(target, INGEST)
|
||||
if(ismob(target) && target == user)
|
||||
src.reagents.reaction(target, INGEST)
|
||||
spawn(5)
|
||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
to_chat(user, "\blue You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units.")
|
||||
if(reagents.total_volume >= reagents.maximum_volume && mode==SYRINGE_INJECT)
|
||||
mode = SYRINGE_DRAW
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/update_icon()
|
||||
var/rounded_vol = round(reagents.total_volume,50)
|
||||
if(ismob(loc))
|
||||
var/mode_t
|
||||
switch(mode)
|
||||
if(SYRINGE_DRAW)
|
||||
mode_t = "d"
|
||||
if(SYRINGE_INJECT)
|
||||
if(!reagents.total_volume)
|
||||
to_chat(user, "\red The Syringe is empty.")
|
||||
return
|
||||
if(istype(target, /obj/item/weapon/implantcase/chem))
|
||||
return
|
||||
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food))
|
||||
to_chat(user, "\red You cannot directly fill this object.")
|
||||
return
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
to_chat(user, "\red [target] is full.")
|
||||
return
|
||||
|
||||
if(ismob(target) && target != user)
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red <B>[] is trying to inject [] with a giant syringe!</B>", user, target), 1)
|
||||
if(!do_mob(user, target, 300)) return
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red [] injects [] with a giant syringe!", user, target), 1)
|
||||
src.reagents.reaction(target, INGEST)
|
||||
if(ismob(target) && target == user)
|
||||
src.reagents.reaction(target, INGEST)
|
||||
spawn(5)
|
||||
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
to_chat(user, "\blue You inject [trans] units of the solution. The syringe now contains [src.reagents.total_volume] units.")
|
||||
if(reagents.total_volume >= reagents.maximum_volume && mode==SYRINGE_INJECT)
|
||||
mode = SYRINGE_DRAW
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
update_icon()
|
||||
var/rounded_vol = round(reagents.total_volume,50)
|
||||
if(ismob(loc))
|
||||
var/mode_t
|
||||
switch(mode)
|
||||
if(SYRINGE_DRAW)
|
||||
mode_t = "d"
|
||||
if(SYRINGE_INJECT)
|
||||
mode_t = "i"
|
||||
icon_state = "[mode_t][rounded_vol]"
|
||||
else
|
||||
icon_state = "[rounded_vol]"
|
||||
item_state = "syringe_[rounded_vol]"
|
||||
mode_t = "i"
|
||||
icon_state = "[mode_t][rounded_vol]"
|
||||
else
|
||||
icon_state = "[rounded_vol]"
|
||||
item_state = "syringe_[rounded_vol]"
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -459,85 +400,27 @@
|
||||
/obj/item/weapon/reagent_containers/syringe/antiviral
|
||||
name = "Syringe (spaceacillin)"
|
||||
desc = "Contains antiviral agents."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("spaceacillin", 15)
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
list_reagents = list("spaceacillin" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/ld50_syringe/lethal
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("cyanide", 10)
|
||||
reagents.add_reagent("neurotoxin2", 40)
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
|
||||
|
||||
//Robot syringes
|
||||
//Not special in any way, code wise. They don't have added variables or procs.
|
||||
/obj/item/weapon/reagent_containers/syringe/robot/charcoal
|
||||
name = "Syringe (charcoal)"
|
||||
desc = "Contains charcoal."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("charcoal", 15)
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/robot/epinephrine
|
||||
name = "Syringe (Epinephrine)"
|
||||
desc = "Contains epinephrine - used to stabilize patients."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("epinephrine", 15)
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/robot/mixed
|
||||
name = "Syringe (mixed)"
|
||||
desc = "Contains epinephrine & charcoal."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("epinephrine", 7)
|
||||
reagents.add_reagent("charcoal", 8)
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
list_reagents = list("cyanide" = 10, "neurotoxin2" = 40)
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/charcoal
|
||||
name = "Syringe (charcoal)"
|
||||
desc = "Contains charcoal - used to treat toxins and damage from toxins."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("charcoal", 15)
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
list_reagents = list("charcoal" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/epinephrine
|
||||
name = "Syringe (Epinephrine)"
|
||||
desc = "Contains epinephrine - used to stabilize patients."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("epinephrine", 15)
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
list_reagents = list("epinephrine" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/insulin
|
||||
name = "Syringe (insulin)"
|
||||
desc = "Contains insulin - used to treat diabetes."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("insulin", 15)
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
list_reagents = list("insulin" = 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/syringe/bioterror
|
||||
name = "bioterror syringe"
|
||||
desc = "Contains several paralyzing reagents."
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("neurotoxin", 5)
|
||||
reagents.add_reagent("capulettium_plus", 5)
|
||||
reagents.add_reagent("sodium_thiopental", 5)
|
||||
mode = SYRINGE_INJECT
|
||||
update_icon()
|
||||
list_reagents = list("neurotoxin" = 5, "capulettium_plus" = 5, "sodium_thiopental" = 5)
|
||||
@@ -12,7 +12,7 @@
|
||||
var/amount_per_transfer_from_this = 10
|
||||
var/possible_transfer_amounts = list(10,25,50,100)
|
||||
|
||||
/obj/structure/reagent_dispensers/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
/obj/structure/reagent_dispensers/attackby(obj/item/weapon/W, mob/user, params)
|
||||
return
|
||||
|
||||
/obj/structure/reagent_dispensers/New()
|
||||
@@ -139,7 +139,7 @@
|
||||
rig = null
|
||||
overlays = new/list()
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/weapon/W, mob/user, params)
|
||||
if(istype(W,/obj/item/device/assembly_holder) && accepts_rig)
|
||||
if(rig)
|
||||
to_chat(user, "\red There is another device in the way.")
|
||||
|
||||
Reference in New Issue
Block a user