mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 19:17:50 +01:00
clean up
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)
|
||||
@@ -363,7 +363,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 +436,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 +476,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 +492,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 +504,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 +520,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 +542,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 +552,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 +588,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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,7 +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)
|
||||
/datum/reagent/nanomachines/on_mob_life(mob/living/carbon/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(volume > 1.5)
|
||||
M.ForceContractDisease(new /datum/disease/transformation/robot(0))
|
||||
@@ -32,7 +32,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)
|
||||
/datum/reagent/xenomicrobes/on_mob_life(mob/living/carbon/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(volume > 1.5)
|
||||
M.ContractDisease(new /datum/disease/transformation/xeno(0))
|
||||
@@ -44,7 +44,7 @@
|
||||
description = "Active fungal spores."
|
||||
color = "#92D17D" // rgb: 146, 209, 125
|
||||
|
||||
/datum/reagent/fungalspores/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
/datum/reagent/fungalspores/on_mob_life(mob/living/carbon/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(volume > 2.5)
|
||||
M.ForceContractDisease(new /datum/disease/tuberculosis(0))
|
||||
@@ -57,7 +57,7 @@
|
||||
reagent_state = SOLID
|
||||
color = "#FA0000" // rgb: 250, 0, 0
|
||||
|
||||
/datum/reagent/jagged_crystals/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
/datum/reagent/jagged_crystals/on_mob_life(mob/living/carbon/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.ForceContractDisease(new /datum/disease/berserker(0))
|
||||
..()
|
||||
@@ -69,7 +69,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#1E4600"
|
||||
|
||||
/datum/reagent/salmonella/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
/datum/reagent/salmonella/on_mob_life(mob/living/carbon/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
|
||||
..()
|
||||
@@ -81,7 +81,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#FF0000"
|
||||
|
||||
/datum/reagent/gibbis/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
/datum/reagent/gibbis/on_mob_life(mob/living/carbon/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(volume > 2.5)
|
||||
M.ForceContractDisease(new /datum/disease/gbs/curable(0))
|
||||
@@ -94,7 +94,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#FFFFFF"
|
||||
|
||||
/datum/reagent/prions/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
/datum/reagent/prions/on_mob_life(mob/living/carbon/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(volume > 4.5)
|
||||
M.ForceContractDisease(new /datum/disease/kuru(0))
|
||||
@@ -107,7 +107,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#465046"
|
||||
|
||||
/datum/reagent/grave_dust/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
/datum/reagent/grave_dust/on_mob_life(mob/living/carbon/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(volume > 4.5)
|
||||
M.ForceContractDisease(new /datum/disease/vampire(0))
|
||||
@@ -120,7 +120,7 @@
|
||||
reagent_state = SOLID
|
||||
color = "#925D6C"
|
||||
|
||||
/datum/reagent/heartworms/on_mob_life(var/mob/living/carbon/M as mob)
|
||||
/datum/reagent/heartworms/on_mob_life(mob/living/carbon/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(volume > 4.5)
|
||||
if(ishuman(M))
|
||||
@@ -140,7 +140,7 @@
|
||||
var/client/blob_client = null
|
||||
var/blob_point_rate = 3
|
||||
|
||||
/datum/reagent/spore/on_mob_life(var/mob/living/M)
|
||||
/datum/reagent/spore/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
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.
|
||||
|
||||
@@ -14,7 +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)
|
||||
/datum/reagent/ginsonic/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
if(prob(25))
|
||||
@@ -29,7 +29,6 @@
|
||||
else
|
||||
to_chat(M, "<span class='notice'>[sonic_message ]</span>")
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ethanol/applejack
|
||||
name = "Applejack"
|
||||
@@ -72,12 +71,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)
|
||||
/datum/reagent/ethanol/dragons_breath/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.reagents.has_reagent("milk"))
|
||||
to_chat(M, "<span class='notice'>The milk stops the burning. Ahhh.</span>")
|
||||
@@ -128,7 +127,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, alien)
|
||||
if(!M.isSynthetic())
|
||||
holder.remove_reagent(id, 3.6) //gets removed from organics very fast
|
||||
if(prob(25))
|
||||
@@ -136,7 +135,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,7 +13,7 @@
|
||||
overdose_threshold = 35
|
||||
addiction_chance = 70
|
||||
|
||||
/datum/reagent/nicotine/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/nicotine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
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))
|
||||
@@ -24,9 +24,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,7 +74,7 @@
|
||||
overdose_threshold = 20
|
||||
addiction_chance = 50
|
||||
|
||||
/datum/reagent/crank/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/crank/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.AdjustParalysis(-2)
|
||||
M.AdjustStunned(-2)
|
||||
@@ -95,9 +94,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 +144,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,7 +160,7 @@
|
||||
addiction_chance = 50
|
||||
|
||||
|
||||
/datum/reagent/krokodil/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/krokodil/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.jitteriness -= 40
|
||||
if(prob(25))
|
||||
@@ -185,9 +182,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,7 +238,7 @@
|
||||
addiction_chance = 60
|
||||
metabolization_rate = 0.6
|
||||
|
||||
/datum/reagent/methamphetamine/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/methamphetamine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch_s","blink_r","shiver"))
|
||||
@@ -258,9 +254,8 @@
|
||||
if(prob(50))
|
||||
M.adjustBrainLoss(1.0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/methamphetamine/overdose_process(var/mob/living/M as mob, severity)
|
||||
/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,7 +323,7 @@
|
||||
addiction_chance = 80
|
||||
metabolization_rate = 0.6
|
||||
|
||||
/datum/reagent/bath_salts/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/bath_salts/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
var/check = rand(0,100)
|
||||
if(ishuman(M))
|
||||
@@ -361,7 +356,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 +367,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 +429,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,7 +444,7 @@
|
||||
color = "#644600"
|
||||
addiction_chance = 30
|
||||
|
||||
/datum/reagent/jenkem/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/jenkem/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.Dizzy(5)
|
||||
if(prob(10))
|
||||
@@ -471,7 +466,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#60A584" // rgb: 96, 165, 132
|
||||
|
||||
/datum/reagent/aranesp/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/aranesp/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustStaminaLoss(-40)
|
||||
if(prob(90))
|
||||
@@ -487,7 +482,6 @@
|
||||
M.Stun(1)
|
||||
M.losebreath++
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/thc
|
||||
name = "Tetrahydrocannabinol"
|
||||
@@ -497,7 +491,7 @@
|
||||
color = "#0FBE0F"
|
||||
|
||||
|
||||
/datum/reagent/thc/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/thc/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.stuttering += rand(0,2)
|
||||
if(prob(5))
|
||||
@@ -510,7 +504,6 @@
|
||||
if(prob(10))
|
||||
M.drowsyness = max(M.drowsyness, 10)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/fliptonium
|
||||
name = "Fliptonium"
|
||||
@@ -531,14 +524,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)
|
||||
/datum/reagent/fliptonium/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(current_cycle == 5)
|
||||
M.SpinAnimation(speed = 11, loops = -1)
|
||||
@@ -564,12 +557,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,7 +611,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)
|
||||
/datum/reagent/lube/ultra/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
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))
|
||||
@@ -637,9 +629,8 @@
|
||||
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/overdose_process(mob/living/M, severity)
|
||||
if(prob(20))
|
||||
M.emote("ping")
|
||||
if(prob(33))
|
||||
@@ -647,10 +638,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,7 +656,7 @@
|
||||
addiction_chance = 50
|
||||
|
||||
|
||||
/datum/reagent/surge/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/surge/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.druggy = max(M.druggy, 15)
|
||||
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
|
||||
@@ -675,9 +666,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,22 @@ 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)
|
||||
/datum/reagent/egg/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
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 +46,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 +68,17 @@ 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)
|
||||
/datum/reagent/corn_syrup/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.reagents.add_reagent("sugar", 1.2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/vhfcs
|
||||
name = "vhfcs"
|
||||
@@ -91,18 +89,17 @@ 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)
|
||||
/datum/reagent/vhfcs/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.reagents.add_reagent("sugar", 2.4)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/cola
|
||||
name = "cola"
|
||||
@@ -120,14 +117,13 @@ 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)
|
||||
/datum/reagent/honey/on_mob_life(mob/living/M)
|
||||
if(!M)
|
||||
M = holder.my_atom
|
||||
M.reagents.add_reagent("sugar", 0.4)
|
||||
if(prob(20))
|
||||
M.heal_organ_damage(3,1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/chocolate
|
||||
name = "Chocolate"
|
||||
@@ -137,18 +133,16 @@ 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)
|
||||
/datum/reagent/chocolate/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
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,7 +151,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)
|
||||
/datum/reagent/mugwort/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(istype(M, /mob/living/carbon/human) && M.mind)
|
||||
if(M.mind.special_role == "Wizard")
|
||||
@@ -166,7 +160,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 +170,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 +184,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 +206,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 +218,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 +233,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 +243,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 +261,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 +273,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 +287,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 +306,22 @@ 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)
|
||||
/datum/reagent/beans/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(10))
|
||||
M.emote("fart")
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/bread
|
||||
name = "Bread"
|
||||
@@ -342,11 +330,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 +342,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 +355,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 +370,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 +395,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 +411,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 +421,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 +450,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 +500,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 +509,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 +526,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 +564,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,13 @@ 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)
|
||||
/datum/reagent/silver_sulfadiazine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
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 +37,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 +49,11 @@ 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)
|
||||
/datum/reagent/styptic_powder/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustBruteLoss(-2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/salglu_solution
|
||||
name = "Saline-Glucose Solution"
|
||||
@@ -80,14 +76,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)
|
||||
/datum/reagent/synthflesh/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
|
||||
if(!M) M = holder.my_atom
|
||||
if(iscarbon(M))
|
||||
if(method == TOUCH)
|
||||
@@ -96,23 +92,21 @@ 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)
|
||||
/datum/reagent/charcoal/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(-1.5*REM)
|
||||
if(prob(50))
|
||||
@@ -120,7 +114,6 @@ datum/reagent/charcoal/on_mob_life(var/mob/living/M as mob)
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/charcoal
|
||||
name = "Charcoal"
|
||||
@@ -165,7 +158,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,7 +168,7 @@ datum/reagent/omnizine
|
||||
overdose_threshold = 30
|
||||
addiction_chance = 5
|
||||
|
||||
/datum/reagent/omnizine/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/omnizine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(-1*REM)
|
||||
M.adjustOxyLoss(-1*REM)
|
||||
@@ -184,9 +177,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 +212,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,7 +220,7 @@ datum/reagent/calomel
|
||||
color = "#22AB35"
|
||||
metabolization_rate = 0.8
|
||||
|
||||
datum/reagent/calomel/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/calomel/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
@@ -238,7 +230,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 +240,18 @@ 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)
|
||||
/datum/reagent/potass_iodide/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(80))
|
||||
M.radiation = max(0, M.radiation-1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/potass_iodide
|
||||
name = "Potassium Iodide"
|
||||
@@ -271,14 +261,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)
|
||||
/datum/reagent/pen_acid/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
@@ -300,7 +290,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,7 +300,7 @@ datum/reagent/sal_acid
|
||||
shock_reduction = 25
|
||||
overdose_threshold = 25
|
||||
|
||||
datum/reagent/sal_acid/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/sal_acid/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(55))
|
||||
M.adjustBruteLoss(-2*REM)
|
||||
@@ -319,7 +309,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 +319,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 +327,11 @@ datum/reagent/salbutamol
|
||||
color = "#00FFFF"
|
||||
metabolization_rate = 0.2
|
||||
|
||||
datum/reagent/salbutamol/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/salbutamol/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustOxyLoss(-6*REM)
|
||||
M.losebreath = max(0, M.losebreath-4)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/salbutamol
|
||||
name = "Salbutamol"
|
||||
@@ -354,7 +342,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,7 +351,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)
|
||||
/datum/reagent/perfluorodecalin/on_mob_life(mob/living/carbon/human/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustOxyLoss(-25*REM)
|
||||
if(volume >= 4)
|
||||
@@ -373,7 +361,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,7 +382,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)
|
||||
/datum/reagent/ephedrine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
M.AdjustParalysis(-1)
|
||||
@@ -411,9 +398,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 +428,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,7 +436,7 @@ datum/reagent/diphenhydramine
|
||||
color = "#5BCBE1"
|
||||
addiction_chance = 10
|
||||
|
||||
datum/reagent/diphenhydramine/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/diphenhydramine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.jitteriness = max(0, M.jitteriness-20)
|
||||
M.reagents.remove_reagent("histamine",3)
|
||||
@@ -462,7 +448,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 +458,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,7 +468,7 @@ datum/reagent/morphine
|
||||
addiction_chance = 50
|
||||
shock_reduction = 50
|
||||
|
||||
datum/reagent/morphine/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/morphine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.jitteriness = max(0, M.jitteriness-25)
|
||||
switch(current_cycle)
|
||||
@@ -500,9 +485,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)
|
||||
/datum/reagent/oculine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(80))
|
||||
if(ishuman(M))
|
||||
@@ -521,7 +505,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 +514,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 +523,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,7 +532,7 @@ datum/reagent/atropine
|
||||
metabolization_rate = 0.2
|
||||
overdose_threshold = 25
|
||||
|
||||
datum/reagent/atropine/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/atropine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.dizziness += 1
|
||||
M.confused = max(M.confused, 5)
|
||||
@@ -567,7 +550,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 +559,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,7 +568,7 @@ datum/reagent/epinephrine
|
||||
metabolization_rate = 0.2
|
||||
overdose_threshold = 20
|
||||
|
||||
datum/reagent/epinephrine/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/epinephrine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.drowsyness = max(0, M.drowsyness-5)
|
||||
if(prob(20))
|
||||
@@ -609,9 +591,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 +622,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 +630,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 +661,13 @@ 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)
|
||||
/datum/reagent/strange_reagent/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(10))
|
||||
M.adjustBruteLoss(2*REM)
|
||||
M.adjustToxLoss(2*REM)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/strange_reagent
|
||||
name = "Strange Reagent"
|
||||
@@ -698,7 +677,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 +693,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 +714,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 +731,6 @@ datum/reagent/life
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.update_mutations()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/mutadone
|
||||
name = "Mutadone"
|
||||
@@ -770,13 +747,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,7 +777,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)
|
||||
/datum/reagent/stimulants/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(volume > 5)
|
||||
M.adjustOxyLoss(-5*REM)
|
||||
@@ -823,11 +800,10 @@ 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)
|
||||
/datum/reagent/stimulants/reagent_deleted(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent
|
||||
name = "Stimulative Agent"
|
||||
@@ -856,18 +832,17 @@ datum/reagent/stimulants/reagent_deleted(var/mob/living/M as mob)
|
||||
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)
|
||||
/datum/reagent/insulin/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.reagents.remove_reagent("sugar", 5)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/simethicone
|
||||
@@ -884,7 +859,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,7 +868,7 @@ datum/reagent/teporone
|
||||
addiction_chance = 20
|
||||
overdose_threshold = 50
|
||||
|
||||
datum/reagent/teporone/on_mob_life(mob/living/M)
|
||||
/datum/reagent/teporone/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature - (40 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
@@ -910,14 +885,14 @@ datum/reagent/teporone/on_mob_life(mob/living/M)
|
||||
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)
|
||||
/datum/reagent/haloperidol/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.reagents.remove_reagent("crank", 5)
|
||||
M.reagents.remove_reagent("methamphetamine", 5)
|
||||
@@ -939,7 +914,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"
|
||||
@@ -957,7 +931,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)
|
||||
/datum/reagent/ether/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.jitteriness = max(M.jitteriness-25,0)
|
||||
switch(current_cycle)
|
||||
@@ -970,7 +944,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"
|
||||
@@ -1000,14 +973,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)
|
||||
/datum/reagent/degreaser/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(50)) //Same effects as coffee, to help purge ill effects like paralysis
|
||||
M.AdjustParalysis(-1)
|
||||
@@ -1022,7 +996,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
|
||||
@@ -1033,10 +1006,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"
|
||||
@@ -1048,19 +1020,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,7 +12,7 @@
|
||||
var/chem_temp = 300
|
||||
var/list/datum/reagent/addiction_list = new/list()
|
||||
|
||||
/datum/reagents/proc/metabolize(var/mob/M)
|
||||
/datum/reagents/proc/metabolize(mob/M)
|
||||
if(M)
|
||||
if(!istype(M, /mob/living)) //Non-living mobs can't metabolize reagents, so don't bother trying (runtime safety check)
|
||||
return
|
||||
@@ -95,14 +95,14 @@
|
||||
R.on_tick()
|
||||
return
|
||||
|
||||
/datum/reagents/proc/check_gofast(var/mob/M)
|
||||
/datum/reagents/proc/check_gofast(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)
|
||||
/datum/reagents/proc/check_goreallyfast(mob/M)
|
||||
if(istype(M, /mob))
|
||||
if(M.reagents.has_reagent("methamphetamine"))
|
||||
return 1
|
||||
@@ -110,27 +110,27 @@
|
||||
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 +138,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 +146,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 +154,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,65 @@
|
||||
|
||||
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)
|
||||
/datum/reagent/acetone/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/acetone
|
||||
name = "acetone"
|
||||
@@ -111,7 +109,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 +124,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 +147,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 +168,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 +187,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 +200,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 +217,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 +226,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 +244,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 +268,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,7 +284,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)
|
||||
/datum/reagent/fartonium/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
|
||||
if(prob(66))
|
||||
@@ -312,8 +301,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 +314,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 +326,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 +337,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,10 +359,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)
|
||||
/datum/reagent/love/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
|
||||
if(M.a_intent == I_HARM)
|
||||
@@ -410,35 +393,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,18 @@
|
||||
result_amount = 2
|
||||
min_temp = 424
|
||||
|
||||
/datum/reagent/clf3/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/clf3/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
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 +64,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 +92,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 +124,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 +177,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 +202,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 +213,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 +235,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 +248,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 +287,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 +308,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 +341,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 +368,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 +413,19 @@ 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)
|
||||
/datum/reagent/phlogiston/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjust_fire_stacks(1)
|
||||
M.IgniteMob()
|
||||
M.adjustFireLoss(0.2*M.fire_stacks)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/napalm
|
||||
name = "Napalm"
|
||||
@@ -446,16 +435,14 @@ 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)
|
||||
/datum/reagent/napalm/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
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 +451,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 +466,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 +498,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 +520,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 +541,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 +550,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 +565,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 +576,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 +586,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 +599,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,10 @@
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/polonium/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/polonium/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(8, IRRADIATE, negate_armor = 1)
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/reagent/histamine
|
||||
@@ -29,7 +28,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,7 +36,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)
|
||||
/datum/reagent/histamine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(20))
|
||||
M.emote(pick("twitch", "grumble", "sneeze", "cough"))
|
||||
@@ -53,9 +52,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 +101,12 @@
|
||||
color = "#DED6D0"
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/formaldehyde/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/formaldehyde/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1*REM)
|
||||
if(prob(10))
|
||||
M.reagents.add_reagent("histamine",rand(5,15))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/formaldehyde
|
||||
name = "formaldehyde"
|
||||
@@ -129,7 +126,7 @@
|
||||
metabolization_rate = 0.2
|
||||
overdose_threshold = 40
|
||||
|
||||
/datum/reagent/venom/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/venom/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(25))
|
||||
M.reagents.add_reagent("histamine",rand(5,10))
|
||||
@@ -142,9 +139,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 +157,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 +185,6 @@
|
||||
M.emote("drool")
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/neurotoxin2
|
||||
name = "neurotoxin2"
|
||||
@@ -210,7 +205,7 @@
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/cyanide/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/cyanide/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1.5*REM)
|
||||
if(prob(5))
|
||||
@@ -224,7 +219,6 @@
|
||||
M.Stun(2)
|
||||
M.adjustToxLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/cyanide
|
||||
name = "Cyanide"
|
||||
@@ -236,7 +230,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,7 +246,7 @@
|
||||
metabolization_rate = 0.3
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/itching_powder/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/itching_powder/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(25))
|
||||
M.emote(pick("twitch", "laugh", "sneeze", "cry"))
|
||||
@@ -277,7 +271,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 +281,11 @@
|
||||
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)
|
||||
/datum/reagent/facid/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1*REM)
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/facid
|
||||
name = "Fluorosulfuric Acid"
|
||||
@@ -303,7 +295,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 +339,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,7 +365,7 @@
|
||||
color = "#7F10C0"
|
||||
metabolization_rate = 0.4
|
||||
|
||||
/datum/reagent/initropidril/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/initropidril/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(33))
|
||||
M.adjustToxLoss(rand(5,25))
|
||||
@@ -395,7 +387,6 @@
|
||||
if(!H.heart_attack)
|
||||
H.heart_attack = 1 // rip in pepperoni
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/initropidril
|
||||
name = "Initropidril"
|
||||
@@ -414,7 +405,7 @@
|
||||
color = "#AB1CCF"
|
||||
metabolization_rate = 0.4
|
||||
|
||||
/datum/reagent/concentrated_initro/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/concentrated_initro/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(volume >=5)
|
||||
if(ishuman(M))
|
||||
@@ -430,7 +421,7 @@
|
||||
color = "#1E4664"
|
||||
metabolization_rate = 0.2
|
||||
|
||||
/datum/reagent/pancuronium/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/pancuronium/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
@@ -454,7 +445,6 @@
|
||||
to_chat(M, "<span class='danger'>You can't breathe!</span>")
|
||||
M.losebreath += 3
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/sodium_thiopental
|
||||
name = "Sodium Thiopental"
|
||||
@@ -464,7 +454,7 @@
|
||||
color = "#5F8BE1"
|
||||
metabolization_rate = 0.7
|
||||
|
||||
/datum/reagent/sodium_thiopental/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/sodium_thiopental/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
switch(current_cycle)
|
||||
if(1)
|
||||
@@ -482,7 +472,6 @@
|
||||
M.emote("drool")
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ketamine
|
||||
name = "Ketamine"
|
||||
@@ -493,7 +482,7 @@
|
||||
metabolization_rate = 0.8
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/ketamine/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/ketamine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
@@ -509,7 +498,6 @@
|
||||
if(11 to INFINITY)
|
||||
M.Paralyse(25)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/sulfonal
|
||||
name = "Sulfonal"
|
||||
@@ -528,7 +516,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)
|
||||
/datum/reagent/sulfonal/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.jitteriness = max(0, M.jitteriness-30)
|
||||
switch(current_cycle)
|
||||
@@ -546,7 +534,6 @@
|
||||
M.drowsyness = max(M.drowsyness, 20)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/amanitin
|
||||
name = "Amanitin"
|
||||
@@ -555,16 +542,10 @@
|
||||
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)
|
||||
/datum/reagent/amanitin/reagent_deleted(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(current_cycle*rand(2,4))
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/lipolicide
|
||||
name = "Lipolicide"
|
||||
@@ -581,7 +562,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)
|
||||
/datum/reagent/lipolicide/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!M.nutrition)
|
||||
switch(rand(1,3))
|
||||
@@ -596,7 +577,6 @@
|
||||
M.nutrition = max(0, M.nutrition-fat_to_burn)
|
||||
M.overeatduration = 0
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/coniine
|
||||
name = "Coniine"
|
||||
@@ -606,12 +586,11 @@
|
||||
color = "#C2D8CD"
|
||||
metabolization_rate = 0.05
|
||||
|
||||
/datum/reagent/coniine/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/coniine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(2)
|
||||
M.losebreath += 5
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/curare
|
||||
name = "Curare"
|
||||
@@ -622,7 +601,7 @@
|
||||
metabolization_rate = 0.1
|
||||
penetrates_skin = 1
|
||||
|
||||
/datum/reagent/curare/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/curare/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustOxyLoss(1)
|
||||
@@ -646,7 +625,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,14 +646,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)
|
||||
/datum/reagent/sarin/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
@@ -721,7 +699,6 @@
|
||||
M.adjustBrainLoss(1)
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/atrazine
|
||||
name = "Atrazine"
|
||||
@@ -730,14 +707,13 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#17002D"
|
||||
|
||||
/datum/reagent/atrazine/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/atrazine/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
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 +725,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 +736,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 +748,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,7 +776,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)
|
||||
/datum/reagent/capulettium/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
@@ -817,7 +791,6 @@
|
||||
if(61 to INFINITY)
|
||||
M.eye_blurry += 10
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/capulettium_plus
|
||||
name = "Capulettium Plus"
|
||||
@@ -834,11 +807,10 @@
|
||||
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)
|
||||
/datum/reagent/capulettium_plus/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.silent = max(M.silent, 2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/toxic_slurry
|
||||
name = "Toxic Slurry"
|
||||
@@ -847,7 +819,7 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#00C81E"
|
||||
|
||||
/datum/reagent/toxic_slurry/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/toxic_slurry/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(10))
|
||||
M.adjustToxLoss(rand(2.4))
|
||||
@@ -857,7 +829,6 @@
|
||||
if(prob(7))
|
||||
M.fakevomit(1)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/glowing_slurry
|
||||
name = "Glowing Slurry"
|
||||
@@ -866,7 +837,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,9 +845,8 @@
|
||||
randmutb(M)
|
||||
domutcheck(M, null)
|
||||
M.UpdateAppearance()
|
||||
return
|
||||
|
||||
/datum/reagent/glowing_slurry/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/glowing_slurry/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(2, IRRADIATE, 0, negate_armor = 1)
|
||||
if(prob(15))
|
||||
@@ -886,7 +856,6 @@
|
||||
domutcheck(M, null)
|
||||
M.UpdateAppearance()
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/ants
|
||||
name = "Ants"
|
||||
@@ -896,7 +865,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 +873,10 @@
|
||||
M.adjustBruteLoss(4)
|
||||
|
||||
|
||||
/datum/reagent/ants/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/ants/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustBruteLoss(2)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective.
|
||||
name = "Teslium"
|
||||
@@ -938,9 +906,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))
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
var/admin_only = 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
|
||||
if(!istype(M, /mob/living))
|
||||
return 0
|
||||
var/datum/reagent/self = src
|
||||
src = null
|
||||
|
||||
|
||||
@@ -622,11 +622,11 @@
|
||||
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(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)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
nutriment_factor = 15 * REAGENTS_METABOLISM
|
||||
color = "#664330" // rgb: 102, 67, 48
|
||||
|
||||
/datum/reagent/protein/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/protein/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
if(!(M.mind in ticker.mode.vampires))
|
||||
if(ishuman(M))
|
||||
@@ -176,7 +176,6 @@
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
|
||||
|
||||
/datum/reagent/blackpepper
|
||||
name = "Black Pepper"
|
||||
id = "blackpepper"
|
||||
@@ -375,7 +374,6 @@
|
||||
M.nutrition += nutriment_factor
|
||||
..()
|
||||
|
||||
|
||||
/datum/reagent/toxin/coffeepowder
|
||||
name = "Coffee Grounds"
|
||||
id = "coffeepowder"
|
||||
@@ -396,7 +394,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
|
||||
|
||||
@@ -89,7 +89,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))
|
||||
|
||||
|
||||
@@ -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,13 +250,13 @@
|
||||
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)
|
||||
/datum/reagent/fishwater/on_mob_life(mob/living/M)
|
||||
if(!M) M = holder.my_atom
|
||||
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
|
||||
@@ -264,7 +264,6 @@
|
||||
else
|
||||
M.fakevomit(0)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/reagent/fishwater/toiletwater
|
||||
name = "Toilet Water"
|
||||
@@ -273,7 +272,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,7 +283,7 @@
|
||||
color = "#0064C8" // rgb: 0, 100, 200
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/holywater/on_mob_life(var/mob/living/M as mob)
|
||||
/datum/reagent/holywater/on_mob_life(mob/living/M)
|
||||
if(!data) data = 1
|
||||
data++
|
||||
M.jitteriness = max(M.jitteriness-5,0)
|
||||
@@ -331,7 +330,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 +346,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 +362,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 +385,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,45 @@
|
||||
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)
|
||||
|
||||
/obj/item/weapon/reagent_containers/drugs/New()
|
||||
..()
|
||||
reagents.add_reagent("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("diethylamine" = 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" = 50)
|
||||
|
||||
//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