mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-21 19:17:50 +01:00
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into TasteOfVictory
This commit is contained in:
@@ -133,6 +133,39 @@
|
||||
if(loaded_pill_bottle)
|
||||
loaded_pill_bottle.forceMove(loc)
|
||||
loaded_pill_bottle = null
|
||||
else if(href_list["change_pillbottle"])
|
||||
if(loaded_pill_bottle)
|
||||
var/list/wrappers = list("Default wrapper", "Red wrapper", "Green wrapper", "Pale green wrapper", "Blue wrapper", "Light blue wrapper", "Teal wrapper", "Yellow wrapper", "Orange wrapper", "Pink wrapper", "Brown wrapper")
|
||||
var/chosen = input(usr, "Select a pillbottle wrapper", "Pillbottle wrapper", wrappers[1]) as null|anything in wrappers
|
||||
if(!chosen)
|
||||
return
|
||||
var/color
|
||||
switch(chosen)
|
||||
if("Default wrapper")
|
||||
loaded_pill_bottle.cut_overlays()
|
||||
return
|
||||
if("Red wrapper")
|
||||
color = COLOR_RED
|
||||
if("Green wrapper")
|
||||
color = COLOR_GREEN
|
||||
if("Pink wrapper")
|
||||
color = COLOR_PINK
|
||||
if("Teal wrapper")
|
||||
color = COLOR_TEAL
|
||||
if("Blue wrapper")
|
||||
color = COLOR_BLUE
|
||||
if("Brown wrapper")
|
||||
color = COLOR_MAROON
|
||||
if("Light blue wrapper")
|
||||
color = COLOR_CYAN_BLUE
|
||||
if("Yellow wrapper")
|
||||
color = COLOR_YELLOW
|
||||
if("Pale green wrapper")
|
||||
color = COLOR_PALE_BTL_GREEN
|
||||
if("Orange wrapper")
|
||||
color = COLOR_ORANGE
|
||||
loaded_pill_bottle.wrapper_color = color;
|
||||
loaded_pill_bottle.apply_wrap();
|
||||
else if(href_list["close"])
|
||||
usr << browse(null, "window=chem_master")
|
||||
onclose(usr, "chem_master")
|
||||
@@ -185,7 +218,7 @@
|
||||
dat += "<A href='?src=[UID()];main=1'>(Back)</A>"
|
||||
else
|
||||
dat += "<TITLE>Condimaster 3000</TITLE>Condiment infos:<BR><BR>Name:<BR>[href_list["name"]]<BR><BR>Description:<BR>[href_list["desc"]]<BR><BR><BR><A href='?src=[UID()];main=1'>(Back)</A>"
|
||||
usr << browse(dat, "window=chem_master;size=575x400")
|
||||
usr << browse(dat, "window=chem_master;size=575x500")
|
||||
return
|
||||
|
||||
else if(href_list["add"])
|
||||
@@ -249,7 +282,7 @@
|
||||
var/amount_per_pill = reagents.total_volume / count
|
||||
if(amount_per_pill > 100)
|
||||
amount_per_pill = 100
|
||||
var/name = input(usr,"Name:","Name your pill!","[reagents.get_master_reagent_name()] ([amount_per_pill]u)") as text|null
|
||||
var/name = clean_input("Name:","Name your pill!","[reagents.get_master_reagent_name()] ([amount_per_pill]u)")
|
||||
if(!name)
|
||||
return
|
||||
name = reject_bad_text(name)
|
||||
@@ -270,7 +303,7 @@
|
||||
P.forceMove(loaded_pill_bottle)
|
||||
updateUsrDialog()
|
||||
else
|
||||
var/name = input(usr, "Name:", "Name your bag!", reagents.get_master_reagent_name()) as text|null
|
||||
var/name = clean_input("Name:", "Name your bag!", reagents.get_master_reagent_name())
|
||||
if(!name)
|
||||
return
|
||||
name = reject_bad_text(name)
|
||||
@@ -295,7 +328,7 @@
|
||||
var/amount_per_patch = reagents.total_volume/count
|
||||
if(amount_per_patch > 40)
|
||||
amount_per_patch = 40
|
||||
var/name = input(usr, "Name:", "Name your patch!", "[reagents.get_master_reagent_name()] ([amount_per_patch]u)") as text|null
|
||||
var/name = clean_input("Name:", "Name your patch!", "[reagents.get_master_reagent_name()] ([amount_per_patch]u)")
|
||||
if(!name)
|
||||
return
|
||||
name = reject_bad_text(name)
|
||||
@@ -317,7 +350,7 @@
|
||||
|
||||
else if(href_list["createbottle"])
|
||||
if(!condi)
|
||||
var/name = input(usr, "Name:", "Name your bottle!", reagents.get_master_reagent_name()) as text|null
|
||||
var/name = clean_input("Name:", "Name your bottle!", reagents.get_master_reagent_name())
|
||||
if(!name)
|
||||
return
|
||||
name = reject_bad_text(name)
|
||||
@@ -388,7 +421,7 @@
|
||||
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "chem_master.tmpl", name, 575, 400)
|
||||
ui = new(user, src, ui_key, "chem_master.tmpl", name, 575, 500)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/chem_master/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state)
|
||||
|
||||
@@ -135,12 +135,11 @@
|
||||
return
|
||||
else if(href_list["empty_beaker"])
|
||||
beaker.reagents.clear_reagents()
|
||||
eject_beaker()
|
||||
updateUsrDialog()
|
||||
return
|
||||
else if(href_list["eject"])
|
||||
beaker:loc = loc
|
||||
beaker = null
|
||||
icon_state = "mixer0"
|
||||
eject_beaker()
|
||||
updateUsrDialog()
|
||||
return
|
||||
else if(href_list["clear"])
|
||||
@@ -173,6 +172,11 @@
|
||||
|
||||
add_fingerprint(usr)
|
||||
|
||||
/obj/machinery/computer/pandemic/proc/eject_beaker()
|
||||
beaker.forceMove(loc)
|
||||
beaker = null
|
||||
icon_state = "mixer0"
|
||||
|
||||
//Prints a nice virus release form. Props to Urbanliner for the layout
|
||||
/obj/machinery/computer/pandemic/proc/print_form(var/datum/disease/advance/D, mob/living/user)
|
||||
D = archive_diseases[D.GetDiseaseID()]
|
||||
@@ -308,7 +312,7 @@
|
||||
dat += "nothing<BR>"
|
||||
else
|
||||
dat += "nothing<BR>"
|
||||
dat += "<BR><A href='?src=[UID()];eject=1'>Eject beaker</A>[((R.total_volume&&R.reagent_list.len) ? "-- <A href='?src=[UID()];empty_beaker=1'>Empty beaker</A>":"")]<BR>"
|
||||
dat += "<BR><A href='?src=[UID()];eject=1'>Eject beaker</A>[((R.total_volume&&R.reagent_list.len) ? "-- <A href='?src=[UID()];empty_beaker=1'>Empty and eject beaker</A>":"")]<BR>"
|
||||
dat += "<A href='?src=[user.UID()];mach_close=pandemic'>Close</A>"
|
||||
|
||||
var/datum/browser/popup = new(user, "pandemic", name, 575, 400)
|
||||
|
||||
@@ -9,8 +9,9 @@
|
||||
active_power_usage = 100
|
||||
pass_flags = PASSTABLE
|
||||
var/operating = 0
|
||||
var/obj/item/reagent_containers/beaker = null
|
||||
var/limit = 10
|
||||
var/obj/item/reagent_containers/beaker = new /obj/item/reagent_containers/glass/beaker/large
|
||||
var/limit = null
|
||||
var/efficiency = null
|
||||
|
||||
//IMPORTANT NOTE! A negative number is a multiplier, a positive number is a flat amount to add. 0 means equal to the amount of the original reagent
|
||||
var/list/blend_items = list (
|
||||
@@ -88,10 +89,28 @@
|
||||
|
||||
var/list/holdingitems = list()
|
||||
|
||||
/obj/machinery/reagentgrinder/empty
|
||||
icon_state = "juicer0"
|
||||
beaker = null
|
||||
|
||||
/obj/machinery/reagentgrinder/New()
|
||||
..()
|
||||
beaker = new /obj/item/reagent_containers/glass/beaker/large(src)
|
||||
return
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/circuitboard/reagentgrinder(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin(null)
|
||||
RefreshParts()
|
||||
|
||||
/obj/machinery/reagentgrinder/RefreshParts()
|
||||
var/H
|
||||
var/T
|
||||
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
|
||||
H += M.rating
|
||||
for(var/obj/item/stock_parts/manipulator/M in component_parts)
|
||||
T += M.rating
|
||||
limit = 10*H
|
||||
efficiency = 0.8+T*0.1
|
||||
|
||||
/obj/machinery/reagentgrinder/Destroy()
|
||||
QDEL_NULL(beaker)
|
||||
@@ -112,16 +131,29 @@
|
||||
if(default_unfasten_wrench(user, I))
|
||||
return
|
||||
|
||||
if(exchange_parts(user, I))
|
||||
return
|
||||
|
||||
if(anchored && !beaker)
|
||||
if(default_deconstruction_screwdriver(user, "juicer_open", "juicer0", I))
|
||||
return
|
||||
|
||||
if(panel_open && istype(I, /obj/item/crowbar))
|
||||
default_deconstruction_crowbar(I)
|
||||
return
|
||||
|
||||
if (istype(I, /obj/item/reagent_containers) && (I.container_type & OPENCONTAINER) )
|
||||
if (!beaker)
|
||||
if(beaker)
|
||||
to_chat(user, "<span class='warning'>There's already a container inside.</span>")
|
||||
else if(panel_open)
|
||||
to_chat(user, "<span class='warning'>Close the maintenance panel first.</span>")
|
||||
else
|
||||
if(!user.drop_item())
|
||||
return 1
|
||||
beaker = I
|
||||
beaker.loc = src
|
||||
update_icon()
|
||||
src.updateUsrDialog()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>There's already a container inside.</span>")
|
||||
return 1 //no afterattack
|
||||
|
||||
if(is_type_in_list(I, dried_items))
|
||||
@@ -331,7 +363,7 @@
|
||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
var/amount = get_juice_amount(O)
|
||||
|
||||
beaker.reagents.add_reagent(r_id, min(amount, space))
|
||||
beaker.reagents.add_reagent(r_id, min(amount*efficiency, space))
|
||||
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
@@ -371,17 +403,17 @@
|
||||
if(amount <= 0)
|
||||
if(amount == 0)
|
||||
if (O.reagents != null && O.reagents.has_reagent("nutriment"))
|
||||
beaker.reagents.add_reagent(r_id, min(O.reagents.get_reagent_amount("nutriment"), space))
|
||||
beaker.reagents.add_reagent(r_id, min(O.reagents.get_reagent_amount("nutriment")*efficiency, space))
|
||||
O.reagents.remove_reagent("nutriment", min(O.reagents.get_reagent_amount("nutriment"), space))
|
||||
if (O.reagents != null && O.reagents.has_reagent("plantmatter"))
|
||||
beaker.reagents.add_reagent(r_id, min(O.reagents.get_reagent_amount("plantmatter"), space))
|
||||
beaker.reagents.add_reagent(r_id, min(O.reagents.get_reagent_amount("plantmatter")*efficiency, space))
|
||||
O.reagents.remove_reagent("plantmatter", min(O.reagents.get_reagent_amount("plantmatter"), space))
|
||||
else
|
||||
if (O.reagents != null && O.reagents.has_reagent("nutriment"))
|
||||
beaker.reagents.add_reagent(r_id, min(round(O.reagents.get_reagent_amount("nutriment")*abs(amount)), space))
|
||||
beaker.reagents.add_reagent(r_id, min(round(O.reagents.get_reagent_amount("nutriment")*abs(amount)*efficiency), space))
|
||||
O.reagents.remove_reagent("nutriment", min(O.reagents.get_reagent_amount("nutriment"), space))
|
||||
if (O.reagents != null && O.reagents.has_reagent("plantmatter"))
|
||||
beaker.reagents.add_reagent(r_id, min(round(O.reagents.get_reagent_amount("plantmatter")*abs(amount)), space))
|
||||
beaker.reagents.add_reagent(r_id, min(round(O.reagents.get_reagent_amount("plantmatter")*abs(amount)*efficiency), space))
|
||||
O.reagents.remove_reagent("plantmatter", min(O.reagents.get_reagent_amount("plantmatter"), space))
|
||||
|
||||
|
||||
@@ -403,7 +435,7 @@
|
||||
for (var/r_id in allowed)
|
||||
var/space = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
var/amount = allowed[r_id]
|
||||
beaker.reagents.add_reagent(r_id,min(amount, space))
|
||||
beaker.reagents.add_reagent(r_id,min(amount*efficiency, space))
|
||||
if (space < amount)
|
||||
break
|
||||
if (i == round(O.amount, 1))
|
||||
@@ -419,9 +451,9 @@
|
||||
var/amount = allowed[r_id]
|
||||
if (amount == 0)
|
||||
if (O.reagents != null && O.reagents.has_reagent(r_id))
|
||||
beaker.reagents.add_reagent(r_id,min(O.reagents.get_reagent_amount(r_id), space))
|
||||
beaker.reagents.add_reagent(r_id,min(O.reagents.get_reagent_amount(r_id)*efficiency, space))
|
||||
else
|
||||
beaker.reagents.add_reagent(r_id,min(amount, space))
|
||||
beaker.reagents.add_reagent(r_id,min(amount*efficiency, space))
|
||||
|
||||
if (beaker.reagents.total_volume >= beaker.reagents.maximum_volume)
|
||||
break
|
||||
@@ -436,7 +468,7 @@
|
||||
var/amount = O.reagents.total_volume
|
||||
O.reagents.trans_to(beaker, min(amount, space))
|
||||
if (O.Uses > 0)
|
||||
beaker.reagents.add_reagent("slimejelly",min(20, space))
|
||||
beaker.reagents.add_reagent("slimejelly",min(20*efficiency, space))
|
||||
remove_object(O)
|
||||
|
||||
//Everything else - Transfers reagents from it into beaker
|
||||
|
||||
@@ -115,6 +115,24 @@
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/consumable/ethanol/hooch
|
||||
name = "Hooch"
|
||||
id = "hooch"
|
||||
description = "Either someone's failure at cocktail making or attempt in alcohol production. In any case, do you really want to drink that?"
|
||||
color = "#664300" // rgb: 102, 67, 0
|
||||
dizzy_adj = 7
|
||||
alcohol_perc = 1
|
||||
drink_icon = "glass_brown2"
|
||||
drink_name = "Hooch"
|
||||
drink_desc = "You've really hit rock bottom now... your liver packed its bags and left last night."
|
||||
taste_description = "pure resignation"
|
||||
|
||||
/datum/reagent/consumable/ethanol/hooch/on_mob_life(mob/living/carbon/M)
|
||||
if(M.mind && M.mind.assigned_role == "Assistant")
|
||||
M.heal_organ_damage(1, 1)
|
||||
. = 1
|
||||
return ..() || .
|
||||
|
||||
/datum/reagent/consumable/ethanol/rum
|
||||
name = "Rum"
|
||||
id = "rum"
|
||||
@@ -1361,3 +1379,15 @@
|
||||
taste_description = flavor
|
||||
if(holder.my_atom)
|
||||
holder.my_atom.on_reagent_change()
|
||||
|
||||
/datum/reagent/consumable/ethanol/bacchus_blessing //An EXTREMELY powerful drink. Smashed in seconds, dead in minutes.
|
||||
name = "Bacchus' Blessing"
|
||||
id = "bacchus_blessing"
|
||||
description = "Unidentifiable mixture. Unmeasurably high alcohol content."
|
||||
color = rgb(51, 19, 3) //Sickly brown
|
||||
dizzy_adj = 21
|
||||
alcohol_perc = 3 //I warned you
|
||||
drink_icon = "glass_brown2"
|
||||
drink_name = "Bacchus' Blessing"
|
||||
drink_desc = "You didn't think it was possible for a liquid to be so utterly revolting. Are you sure about this...?"
|
||||
taste_description = "a wall of bricks"
|
||||
|
||||
@@ -290,6 +290,11 @@
|
||||
addiction_chance = 5
|
||||
taste_description = "health"
|
||||
|
||||
/datum/reagent/medicine/omnizine/godblood
|
||||
name = "Godblood"
|
||||
description = "Slowly heals all damage types. Has a rather high overdose threshold. Glows with mysterious power."
|
||||
overdose_threshold = 150
|
||||
|
||||
/datum/reagent/medicine/omnizine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
@@ -1144,24 +1149,19 @@
|
||||
id = "lavaland_extract"
|
||||
description = "An extract of lavaland atmospheric and mineral elements. Heals the user in small doses, but is extremely toxic otherwise."
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
metabolization_rate = 0.7 //VERY strong chemical
|
||||
overdose_threshold = 3 //To prevent people stacking massive amounts of a very strong healing reagent
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/medicine/lavaland_extract/on_mob_life(mob/living/carbon/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(-3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(-3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-6*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-6*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/lavaland_extract/overdose_process(mob/living/M) // This WILL be brutal
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustConfused(5)
|
||||
update_flags |= M.adjustBruteLoss(10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustToxLoss(10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.Stun(7, FALSE)
|
||||
update_flags |= M.Weaken(7, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustToxLoss(3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
@@ -460,6 +460,7 @@
|
||||
C.AdjustDizzy(volume)
|
||||
C.AddComponent(/datum/component/jestosterone, mind_type)
|
||||
C.AddComponent(/datum/component/squeak, null, null, null, null, null, TRUE)
|
||||
C.AddComponent(/datum/component/waddling)
|
||||
|
||||
/datum/reagent/jestosterone/on_mob_life(mob/living/carbon/M)
|
||||
if(!istype(M))
|
||||
@@ -496,8 +497,10 @@
|
||||
..()
|
||||
GET_COMPONENT_FROM(remove_fun, /datum/component/jestosterone, M)
|
||||
GET_COMPONENT_FROM(squeaking, /datum/component/squeak, M)
|
||||
GET_COMPONENT_FROM(waddling, /datum/component/waddling, M)
|
||||
remove_fun.Destroy()
|
||||
squeaking.Destroy()
|
||||
waddling.Destroy()
|
||||
|
||||
/datum/reagent/royal_bee_jelly
|
||||
name = "royal bee jelly"
|
||||
|
||||
@@ -1179,3 +1179,14 @@
|
||||
M.electrocute_act(rand(5, 20), "Teslium in their body", 1, TRUE) //Override because it's caused from INSIDE of you
|
||||
playsound(M, "sparks", 50, 1)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/gluttonytoxin
|
||||
name = "Gluttony's Blessing"
|
||||
id = "gluttonytoxin"
|
||||
description = "An advanced corruptive toxin produced by something terrible."
|
||||
reagent_state = LIQUID
|
||||
color = "#5EFF3B" //RGB: 94, 255, 59
|
||||
taste_description = "decay"
|
||||
|
||||
/datum/reagent/gluttonytoxin/reaction_mob(mob/living/L, method=TOUCH, reac_volume)
|
||||
L.ForceContractDisease(new /datum/disease/transformation/morph())
|
||||
|
||||
@@ -851,4 +851,20 @@
|
||||
required_reagents = list("rum" = 5, "cream" = 5, "egg" = 5)
|
||||
result_amount = 15
|
||||
mix_message = "The eggs nog together. Pretend that \"nog\" is a verb."
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
|
||||
|
||||
/datum/chemical_reaction/hooch
|
||||
name = "Hooch"
|
||||
id = "hooch"
|
||||
result = "hooch"
|
||||
required_reagents = list("ethanol" = 2, "fuel" = 1)
|
||||
result_amount = 3
|
||||
required_catalysts = list("enzyme" = 1)
|
||||
|
||||
/datum/chemical_reaction/bacchus_blessing
|
||||
name = "Bacchus' Blessing"
|
||||
id = "bacchus_blessing"
|
||||
result = "bacchus_blessing"
|
||||
required_reagents = list("hooch" = 1, "absinthe" = 1, "manlydorf" = 1, "syndicatebomb" = 1)
|
||||
result_amount = 4
|
||||
mix_message = "<span class='warning'>The mixture turns to a sickening froth.</span>"
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
reagents.reaction(M, TOUCH)
|
||||
reagents.clear_reagents()
|
||||
else
|
||||
else
|
||||
if(M != user)
|
||||
M.visible_message("<span class='danger'>[user] attempts to feed something to [M].</span>", \
|
||||
"<span class='userdanger'>[user] attempts to feed something to you.</span>")
|
||||
@@ -247,9 +247,9 @@
|
||||
if(assembly)
|
||||
assembly.HasProximity(AM)
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/Crossed(atom/movable/AM)
|
||||
/obj/item/reagent_containers/glass/beaker/Crossed(atom/movable/AM, oldloc)
|
||||
if(assembly)
|
||||
assembly.Crossed(AM)
|
||||
assembly.Crossed(AM, oldloc)
|
||||
|
||||
/obj/item/reagent_containers/glass/beaker/on_found(mob/finder) //for mousetraps
|
||||
if(assembly)
|
||||
@@ -348,6 +348,13 @@
|
||||
slot_flags = SLOT_HEAD
|
||||
container_type = OPENCONTAINER
|
||||
|
||||
/obj/item/reagent_containers/glass/bucket/wooden
|
||||
name = "wooden bucket"
|
||||
icon_state = "woodbucket"
|
||||
item_state = "woodbucket"
|
||||
materials = null
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/reagent_containers/glass/bucket/equipped(mob/user, slot)
|
||||
..()
|
||||
if(slot == slot_head && reagents.total_volume)
|
||||
|
||||
@@ -155,9 +155,9 @@
|
||||
name = "survival medipen"
|
||||
desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. <br><span class='boldwarning'>WARNING: Do not inject more than one pen in quick succession.</span>"
|
||||
icon_state = "stimpen"
|
||||
volume = 22
|
||||
amount_per_transfer_from_this = 22
|
||||
list_reagents = list("salbutamol" = 10, "epinephrine" = 5, "lavaland_extract" = 2, "salglu_solution" = 5) //Short burst of healing, followed by minor healing from the saline
|
||||
volume = 42
|
||||
amount_per_transfer_from_this = 42
|
||||
list_reagents = list("salbutamol" = 10, "teporone" = 15, "epinephrine" = 10, "lavaland_extract" = 2, "weak_omnizine" = 5) //Short burst of healing, followed by minor healing from the saline
|
||||
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/nanocalcium
|
||||
name = "nanocalcium autoinjector"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
righthand_file = 'icons/goonstation/mob/inhands/items_righthand.dmi'
|
||||
icon_state = "ivbag"
|
||||
volume = 200
|
||||
possible_transfer_amounts = list(1,5,10)
|
||||
possible_transfer_amounts = list(1,5,10,15,20,25,30,50) // Everything above 10 is NOT usable on a person and is instead used for transfering to other containers
|
||||
amount_per_transfer_from_this = 1
|
||||
container_type = OPENCONTAINER
|
||||
var/label_text
|
||||
@@ -53,6 +53,11 @@
|
||||
end_processing()
|
||||
return
|
||||
|
||||
if(amount_per_transfer_from_this > 10) // Prevents people from switching to illegal transfer values while the IV is already in someone, i.e. anything over 10
|
||||
visible_message("<span class='danger'>The IV bag's needle pops out of [injection_target]'s arm. The transfer amount is too high!</span>")
|
||||
end_processing()
|
||||
return
|
||||
|
||||
if(get_dist(get_turf(src), get_turf(injection_target)) > 1)
|
||||
to_chat(injection_target, "<span class='userdanger'>The [src]'s' needle is ripped out of you!</span>")
|
||||
injection_target.apply_damage(3, BRUTE, pick("r_arm", "l_arm"))
|
||||
@@ -98,6 +103,9 @@
|
||||
else // Inserting the needle
|
||||
if(!L.can_inject(user, 1))
|
||||
return
|
||||
if(amount_per_transfer_from_this > 10) // We only want to be able to transfer 1, 5, or 10 units to people. Higher numbers are for transfering to other containers
|
||||
to_chat(user, "<span class='warning'>The IV bag can only be used on someone with a transfer amount of 1, 5 or 10.</span>")
|
||||
return
|
||||
if(L != user)
|
||||
L.visible_message("<span class='danger'>[user] is trying to insert [src]'s needle into [L]'s arm!</span>", \
|
||||
"<span class='userdanger'>[user] is trying to insert [src]'s needle into [L]'s arm!</span>")
|
||||
@@ -107,6 +115,22 @@
|
||||
"<span class='userdanger'>[user] inserts [src]'s needle into [L]'s arm!</span>")
|
||||
begin_processing(L)
|
||||
|
||||
else if(target.is_refillable() && is_drainable()) // Transferring from IV bag to other containers
|
||||
if(!reagents.total_volume)
|
||||
to_chat(user, "<span class='warning'>[src] is empty.</span>")
|
||||
return
|
||||
|
||||
if(target.reagents.total_volume >= target.reagents.maximum_volume)
|
||||
to_chat(user, "<span class='warning'>[target] is full.</span>")
|
||||
return
|
||||
|
||||
var/trans = reagents.trans_to(target, amount_per_transfer_from_this)
|
||||
to_chat(user, "<span class='notice'>You transfer [trans] units of the solution to [target].</span>")
|
||||
|
||||
else if(istype(target, /obj/item/reagent_containers/glass) && !target.is_open_container())
|
||||
to_chat(user, "<span class='warning'>You cannot fill [target] while it is sealed.</span>")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/reagent_containers/iv_bag/update_icon()
|
||||
overlays.Cut()
|
||||
|
||||
@@ -289,12 +289,6 @@
|
||||
icon_state = "[rounded_vol]"
|
||||
item_state = "syringe_[rounded_vol]"
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/// Syringes. END
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/obj/item/reagent_containers/syringe/antiviral
|
||||
name = "Syringe (spaceacillin)"
|
||||
desc = "Contains antiviral agents."
|
||||
@@ -327,3 +321,10 @@
|
||||
name = "bioterror syringe"
|
||||
desc = "Contains several paralyzing reagents."
|
||||
list_reagents = list("neurotoxin" = 5, "capulettium_plus" = 5, "sodium_thiopental" = 5)
|
||||
|
||||
/obj/item/reagent_containers/syringe/gluttony
|
||||
name = "Gluttony's Blessing"
|
||||
desc = "A syringe recovered from a dread place. It probably isn't wise to use."
|
||||
amount_per_transfer_from_this = 1
|
||||
volume = 1
|
||||
list_reagents = list("gluttonytoxin" = 1)
|
||||
@@ -187,9 +187,9 @@
|
||||
if(rig)
|
||||
rig.HasProximity(AM)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/Crossed(atom/movable/AM)
|
||||
/obj/structure/reagent_dispensers/fueltank/Crossed(atom/movable/AM, oldloc)
|
||||
if(rig)
|
||||
rig.Crossed(AM)
|
||||
rig.Crossed(AM, oldloc)
|
||||
|
||||
/obj/structure/reagent_dispensers/fueltank/hear_talk(mob/living/M, list/message_pieces)
|
||||
if(rig)
|
||||
@@ -220,6 +220,7 @@
|
||||
icon_state = "water_cooler"
|
||||
anchored = 1
|
||||
tank_volume = 500
|
||||
reagent_id = "water"
|
||||
var/paper_cups = 25 //Paper cups left from the cooler
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/examine(mob/user)
|
||||
|
||||
Reference in New Issue
Block a user