Merge branch 'master' into glassware
This commit is contained in:
@@ -88,20 +88,21 @@
|
||||
return ..()
|
||||
|
||||
/obj/machinery/chem_dispenser/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if(panel_open)
|
||||
to_chat(user, "<span class='notice'>[src]'s maintenance hatch is open!</span>")
|
||||
. += "<span class='notice'>[src]'s maintenance hatch is open!</span>"
|
||||
if(in_range(user, src) || isobserver(user))
|
||||
to_chat(user, "<span class='notice'>The status display reads: <br>Recharging <b>[recharge_amount]</b> power units per interval.<br>Power efficiency increased by <b>[(powerefficiency*1000)-100]%</b>.<span>")
|
||||
. += "<span class='notice'>The status display reads: <br>Recharging <b>[recharge_amount]</b> power units per interval.<br>Power efficiency increased by <b>[(powerefficiency*1000)-100]%</b>.<span>"
|
||||
switch(macrotier)
|
||||
if(1)
|
||||
to_chat(user, "<span class='notice'>Macro granularity at <b>5u</b>.<span>")
|
||||
. += "<span class='notice'>Macro granularity at <b>5u</b>.<span>"
|
||||
if(2)
|
||||
to_chat(user, "<span class='notice'>Macro granularity at <b>3u</b>.<span>")
|
||||
. += "<span class='notice'>Macro granularity at <b>3u</b>.<span>"
|
||||
if(3)
|
||||
to_chat(user, "<span class='notice'>Macro granularity at <b>2u</b>.<span>")
|
||||
. += "<span class='notice'>Macro granularity at <b>2u</b>.<span>"
|
||||
if(4)
|
||||
to_chat(user, "<span class='notice'>Macro granularity at <b>1u</b>.<span>")
|
||||
. += "<span class='notice'>Macro granularity at <b>1u</b>.<span>"
|
||||
|
||||
/obj/machinery/chem_dispenser/process()
|
||||
if (recharge_counter >= 4)
|
||||
if(!is_operational())
|
||||
@@ -382,9 +383,10 @@
|
||||
|
||||
/obj/machinery/chem_dispenser/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker)
|
||||
if(beaker)
|
||||
beaker.forceMove(drop_location())
|
||||
var/obj/item/reagent_containers/B = beaker
|
||||
B.forceMove(drop_location())
|
||||
if(user && Adjacent(user) && !issiliconoradminghost(user))
|
||||
user.put_in_hands(beaker)
|
||||
user.put_in_hands(B)
|
||||
if(new_beaker)
|
||||
beaker = new_beaker
|
||||
else
|
||||
@@ -396,7 +398,6 @@
|
||||
cell = null
|
||||
if(beaker)
|
||||
beaker.forceMove(drop_location())
|
||||
beaker = null
|
||||
return ..()
|
||||
|
||||
/obj/machinery/chem_dispenser/proc/get_macro_resolution()
|
||||
|
||||
@@ -191,27 +191,27 @@
|
||||
/obj/machinery/reagentgrinder/examine(mob/user)
|
||||
. = ..()
|
||||
if(!in_range(user, src) && !issilicon(user) && !isobserver(user))
|
||||
to_chat(user, "<span class='warning'>You're too far away to examine [src]'s contents and display!</span>")
|
||||
. += "<span class='warning'>You're too far away to examine [src]'s contents and display!</span>"
|
||||
return
|
||||
|
||||
if(operating)
|
||||
to_chat(user, "<span class='warning'>\The [src] is operating.</span>")
|
||||
. += "<span class='warning'>\The [src] is operating.</span>"
|
||||
return
|
||||
|
||||
if(beaker || length(holdingitems))
|
||||
to_chat(user, "<span class='notice'>\The [src] contains:</span>")
|
||||
. += "<span class='notice'>\The [src] contains:</span>"
|
||||
if(beaker)
|
||||
to_chat(user, "<span class='notice'>- \A [beaker].</span>")
|
||||
. += "<span class='notice'>- \A [beaker].</span>"
|
||||
for(var/i in holdingitems)
|
||||
var/obj/item/O = i
|
||||
to_chat(user, "<span class='notice'>- \A [O.name].</span>")
|
||||
. += "<span class='notice'>- \A [O.name].</span>"
|
||||
|
||||
if(!(stat & (NOPOWER|BROKEN)))
|
||||
to_chat(user, "<span class='notice'>The status display reads:</span>")
|
||||
to_chat(user, "<span class='notice'>- Grinding reagents at <b>[speed*100]%</b>.<span>")
|
||||
. += "<span class='notice'>The status display reads:</span>"
|
||||
. += "<span class='notice'>- Grinding reagents at <b>[speed*100]%</b>.<span>"
|
||||
if(beaker)
|
||||
for(var/datum/reagent/R in beaker.reagents.reagent_list)
|
||||
to_chat(user, "<span class='notice'>- [R.volume] units of [R.name].</span>")
|
||||
. += "<span class='notice'>- [R.volume] units of [R.name].</span>"
|
||||
|
||||
/obj/machinery/reagentgrinder/proc/eject(mob/user)
|
||||
for(var/i in holdingitems)
|
||||
|
||||
@@ -1830,6 +1830,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
value = 2
|
||||
|
||||
/datum/reagent/consumable/ethanol/peppermint_patty/on_mob_life(mob/living/carbon/M)
|
||||
M.apply_status_effect(/datum/status_effect/throat_soothed)
|
||||
M.adjust_bodytemperature(5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL)
|
||||
..()
|
||||
|
||||
|
||||
@@ -217,6 +217,7 @@
|
||||
glass_icon_state = "glass_white"
|
||||
glass_name = "glass of milk"
|
||||
glass_desc = "White and nutritious goodness!"
|
||||
pH = 6.5
|
||||
|
||||
/datum/reagent/consumable/milk/on_mob_life(mob/living/carbon/M)
|
||||
if(HAS_TRAIT(M, TRAIT_CALCIUM_HEALER))
|
||||
@@ -406,10 +407,6 @@
|
||||
glass_name = "glass of Nuka Cola"
|
||||
glass_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland."
|
||||
|
||||
/datum/reagent/consumable/nuka_cola/on_mob_metabolize(mob/living/L)
|
||||
..()
|
||||
L.add_movespeed_modifier(id, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
|
||||
|
||||
/datum/reagent/consumable/nuka_cola/on_mob_end_metabolize(mob/living/L)
|
||||
L.remove_movespeed_modifier(id)
|
||||
..()
|
||||
@@ -786,6 +783,10 @@
|
||||
glass_name = "glass of menthol"
|
||||
glass_desc = "Tastes naturally minty, and imparts a very mild numbing sensation."
|
||||
|
||||
/datum/reagent/consumable/menthol/on_mob_life(mob/living/L)
|
||||
L.apply_status_effect(/datum/status_effect/throat_soothed)
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/grenadine
|
||||
name = "Grenadine"
|
||||
id = "grenadine"
|
||||
|
||||
@@ -756,6 +756,30 @@
|
||||
taste_description = "mournful honking"
|
||||
pH = 9.2
|
||||
|
||||
/datum/reagent/consumable/liquidelectricity
|
||||
name = "Liquid Electricity"
|
||||
id = "liquidelectricity"
|
||||
description = "The blood of Ethereals, and the stuff that keeps them going. Great for them, horrid for anyone else."
|
||||
nutriment_factor = 5 * REAGENTS_METABOLISM
|
||||
color = "#97ee63"
|
||||
taste_description = "pure electricity"
|
||||
|
||||
/* //We don't have ethereals here, so I'll just comment it out.
|
||||
/datum/reagent/consumable/liquidelectricity/reaction_mob(mob/living/M, method=TOUCH, reac_volume) //can't be on life because of the way blood works.
|
||||
if((method == INGEST || method == INJECT || method == PATCH) && iscarbon(M))
|
||||
|
||||
var/mob/living/carbon/C = M
|
||||
var/obj/item/organ/stomach/ethereal/stomach = C.getorganslot(ORGAN_SLOT_STOMACH)
|
||||
if(istype(stomach))
|
||||
stomach.adjust_charge(reac_volume * REM)
|
||||
*/
|
||||
|
||||
/datum/reagent/consumable/liquidelectricity/on_mob_life(mob/living/carbon/M)
|
||||
if(prob(25)) // && !isethereal(M))
|
||||
M.electrocute_act(rand(10,15), "Liquid Electricity in their body", 1) //lmao at the newbs who eat energy bars
|
||||
playsound(M, "sparks", 50, TRUE)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/astrotame
|
||||
name = "Astrotame"
|
||||
id = "astrotame"
|
||||
|
||||
@@ -881,40 +881,49 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
/datum/reagent/medicine/strange_reagent
|
||||
name = "Strange Reagent"
|
||||
id = "strange_reagent"
|
||||
description = "A miracle drug capable of bringing the dead back to life. Only functions if the target has less than 100 brute and burn damage (independent of one another), and causes slight damage to the living."
|
||||
description = "A miracle drug capable of bringing the dead back to life. Only functions when applied by patch or spray, if the target has less than 100 brute and burn damage (independent of one another) and hasn't been husked. Causes slight damage to the living."
|
||||
reagent_state = LIQUID
|
||||
color = "#A0E85E"
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
taste_description = "magnets"
|
||||
pH = 0
|
||||
|
||||
/datum/reagent/medicine/strange_reagent/reaction_mob(mob/living/carbon/human/M, method=TOUCH, reac_volume)
|
||||
/datum/reagent/medicine/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(M.stat == DEAD)
|
||||
if(M.getBruteLoss() >= 100 || M.getFireLoss() >= 100)
|
||||
M.visible_message("<span class='warning'>[M]'s body convulses a bit, and then falls still once more.</span>")
|
||||
if(M.suiciding || M.hellbound) //they are never coming back
|
||||
M.visible_message("<span class='warning'>[M]'s body does not react...</span>")
|
||||
return
|
||||
M.visible_message("<span class='warning'>[M]'s body convulses a bit.</span>")
|
||||
if(!M.suiciding && !(HAS_TRAIT(M, TRAIT_NOCLONE)) && !M.hellbound)
|
||||
if(!M)
|
||||
return
|
||||
if(M.notify_ghost_cloning(source = M))
|
||||
spawn (100) //so the ghost has time to re-enter
|
||||
return
|
||||
if(M.getBruteLoss() >= 100 || M.getFireLoss() >= 100 || HAS_TRAIT(M, TRAIT_HUSK)) //body is too damaged to be revived
|
||||
M.visible_message("<span class='warning'>[M]'s body convulses a bit, and then falls still once more.</span>")
|
||||
M.do_jitter_animation(10)
|
||||
return
|
||||
else
|
||||
M.visible_message("<span class='warning'>[M]'s body starts convulsing!</span>")
|
||||
M.notify_ghost_cloning(source = M)
|
||||
M.do_jitter_animation(10)
|
||||
addtimer(CALLBACK(M, /mob/living/carbon.proc/do_jitter_animation, 10), 40) //jitter immediately, then again after 4 and 8 seconds
|
||||
addtimer(CALLBACK(M, /mob/living/carbon.proc/do_jitter_animation, 10), 80)
|
||||
|
||||
spawn(100) //so the ghost has time to re-enter
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(!(C.dna && C.dna.species && (NOBLOOD in C.dna.species.species_traits)))
|
||||
C.blood_volume = max(C.blood_volume, BLOOD_VOLUME_NORMAL*C.blood_ratio) //so you don't instantly re-die from a lack of blood
|
||||
for(var/organ in C.internal_organs)
|
||||
var/obj/item/organ/O = organ
|
||||
if(O.damage > O.maxHealth/2)
|
||||
O.setOrganDamage(O.maxHealth/2) //so you don't instantly die from organ damage when being revived
|
||||
|
||||
else
|
||||
M.adjustOxyLoss(-20, 0)
|
||||
M.adjustToxLoss(-20, 0)
|
||||
var/mob/living/carbon/H = M
|
||||
for(var/organ in H.internal_organs)
|
||||
var/obj/item/organ/O = organ
|
||||
O.setOrganDamage(0)
|
||||
M.updatehealth()
|
||||
|
||||
if(M.revive())
|
||||
M.grab_ghost()
|
||||
M.emote("gasp")
|
||||
log_combat(M, M, "revived", src)
|
||||
..()
|
||||
|
||||
|
||||
/datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustBruteLoss(0.5*REM, 0)
|
||||
M.adjustFireLoss(0.5*REM, 0)
|
||||
@@ -940,6 +949,21 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
description = "Reacts with neural tissue, helping reform damaged connections. Can cure minor traumas."
|
||||
color = "#EEFF8F"
|
||||
|
||||
/datum/reagent/medicine/neurine/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(!(method == INJECT))
|
||||
return
|
||||
var/obj/item/organ/brain/B = M.getorganslot(ORGAN_SLOT_BRAIN)
|
||||
if(!B || (!(B.organ_flags & ORGAN_FAILING)))
|
||||
return
|
||||
B.applyOrganDamage(-20)
|
||||
if(prob(80))
|
||||
B.gain_trauma_type(BRAIN_TRAUMA_MILD)
|
||||
else if(prob(50))
|
||||
B.gain_trauma_type(BRAIN_TRAUMA_SEVERE)
|
||||
else
|
||||
B.gain_trauma_type(BRAIN_TRAUMA_SPECIAL)
|
||||
|
||||
|
||||
/datum/reagent/medicine/neurine/on_mob_life(mob/living/carbon/C)
|
||||
if(holder.has_reagent("neurotoxin"))
|
||||
holder.remove_reagent("neurotoxin", 5)
|
||||
@@ -1464,3 +1488,50 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
M.adjustToxLoss(1, 0)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/medicine/silibinin
|
||||
name = "Silibinin"
|
||||
id = "silibinin"
|
||||
description = "A thistle derrived hepatoprotective flavolignan mixture that help reverse damage to the liver."
|
||||
reagent_state = SOLID
|
||||
color = "#FFFFD0"
|
||||
metabolization_rate = 1.5 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/medicine/silibinin/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_LIVER, -2)//Add a chance to cure liver trauma once implemented.
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/medicine/polypyr //This is intended to be an ingredient in advanced chems.
|
||||
name = "Polypyrylium Oligomers"
|
||||
id = "polypyr"
|
||||
description = "A<>purple mixture of short polyelectrolyte chains not easily synthesized in the laboratory. It is valued as an intermediate in the synthesis of the cutting edge pharmaceuticals."
|
||||
reagent_state = SOLID
|
||||
color = "#9423FF"
|
||||
metabolization_rate = 0.25 * REAGENTS_METABOLISM
|
||||
overdose_threshold = 50
|
||||
taste_description = "numbing bitterness"
|
||||
|
||||
/datum/reagent/medicine/polypyr/on_mob_life(mob/living/carbon/M) //I w<>nted a collection of small positive effects, this is as hard to obtain as coniine after all.
|
||||
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, -0.25)
|
||||
M.adjustBruteLoss(-0.35, 0)
|
||||
if(prob(50))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.bleed_rate = max(H.bleed_rate - 1, 0)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/medicine/polypyr/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
|
||||
if(method == TOUCH || method == VAPOR)
|
||||
if(M && ishuman(M) && reac_volume >= 0.5)
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.hair_color = "92f"
|
||||
H.facial_hair_color = "92f"
|
||||
H.update_hair()
|
||||
|
||||
/datum/reagent/medicine/polypyr/overdose_process(mob/living/M)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
|
||||
@@ -515,6 +515,7 @@
|
||||
///Stronger kind of lube. Applies TURF_WET_SUPERLUBE.
|
||||
/datum/reagent/lube/superlube
|
||||
name = "Super Duper Lube"
|
||||
id = "superlube"
|
||||
description = "This \[REDACTED\] has been outlawed after the incident on \[DATA EXPUNGED\]."
|
||||
lube_kind = TURF_WET_SUPERLUBE
|
||||
|
||||
|
||||
@@ -967,3 +967,23 @@
|
||||
else
|
||||
M.gain_trauma_type(BRAIN_TRAUMA_SPECIAL)
|
||||
..()
|
||||
|
||||
/datum/reagent/toxin/bungotoxin
|
||||
name = "Bungotoxin"
|
||||
id = "bungotoxin"
|
||||
description = "A horrible cardiotoxin that protects the humble bungo pit."
|
||||
//silent_toxin = TRUE //I guess we don't really have the entire tox system ported.
|
||||
color = "#EBFF8E"
|
||||
metabolization_rate = 0.5 * REAGENTS_METABOLISM
|
||||
toxpwr = 0
|
||||
taste_description = "tannin"
|
||||
|
||||
/datum/reagent/toxin/bungotoxin/on_mob_life(mob/living/carbon/M)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_HEART, 3)
|
||||
M.confused = M.dizziness //add a tertiary effect here if this is isn't an effective poison.
|
||||
if(current_cycle >= 12 && prob(8))
|
||||
var/tox_message = pick("You feel your heart spasm in your chest.", "You feel faint.","You feel you need to catch your breath.","You feel a prickle of pain in your chest.")
|
||||
to_chat(M, "<span class='notice'>[tox_message]</span>")
|
||||
. = 1
|
||||
..()
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
id = "synthtissue"
|
||||
results = list("synthtissue" = 5)
|
||||
required_reagents = list("synthflesh" = 1)
|
||||
required_catalysts = list("nutriment" = 0.1)
|
||||
required_catalysts = list("sugar" = 0.1)
|
||||
//FermiChem vars:
|
||||
OptimalTempMin = 305 // Lower area of bell curve for determining heat based rate reactions
|
||||
OptimalTempMax = 315 // Upper end for above
|
||||
@@ -86,13 +86,13 @@
|
||||
CurveSharppH = 2.5 // How sharp the pH exponential curve is (to the power of value)
|
||||
ThermicConstant = 0.01 // Temperature change per 1u produced
|
||||
HIonRelease = 0.015 // pH change per 1u reaction (inverse for some reason)
|
||||
RateUpLim = 0.05 // Optimal/max rate possible if all conditions are perfect
|
||||
RateUpLim = 0.1 // Optimal/max rate possible if all conditions are perfect
|
||||
FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics
|
||||
PurityMin = 0
|
||||
|
||||
/datum/chemical_reaction/synthtissue/FermiCreate(datum/reagents/holder, added_volume, added_purity)
|
||||
var/datum/reagent/synthtissue/St = holder.has_reagent("synthtissue")
|
||||
var/datum/reagent/N = holder.has_reagent("nutriment")
|
||||
var/datum/reagent/N = holder.has_reagent("sugar")
|
||||
if(!St)
|
||||
return
|
||||
if(holder.chem_temp > 320)
|
||||
|
||||
@@ -99,7 +99,6 @@
|
||||
|
||||
/datum/chemical_reaction/reagent_explosion/blackpowder_explosion/on_reaction(datum/reagents/holder, created_volume)
|
||||
var/turf/T = get_turf(holder.my_atom)
|
||||
sleep(rand(50,100))
|
||||
..(holder, created_volume, T)
|
||||
|
||||
/datum/chemical_reaction/thermite
|
||||
|
||||
@@ -173,7 +173,7 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related
|
||||
|
||||
/obj/item/paper/secretrecipe/examine(mob/user) //Extra secret
|
||||
if(isobserver(user))
|
||||
return
|
||||
return list()
|
||||
. = ..()
|
||||
|
||||
/obj/item/paper/secretrecipe/Initialize()
|
||||
|
||||
@@ -124,9 +124,8 @@ Borg Hypospray
|
||||
return
|
||||
|
||||
/obj/item/reagent_containers/borghypo/examine(mob/user)
|
||||
usr = user
|
||||
..()
|
||||
DescribeContents() //Because using the standardized reagents datum was just too cool for whatever fuckwit wrote this
|
||||
. = ..()
|
||||
. += DescribeContents() //Because using the standardized reagents datum was just too cool for whatever fuckwit wrote this
|
||||
|
||||
/obj/item/reagent_containers/borghypo/proc/DescribeContents()
|
||||
var/empty = 1
|
||||
@@ -134,11 +133,11 @@ Borg Hypospray
|
||||
for(var/datum/reagents/RS in reagent_list)
|
||||
var/datum/reagent/R = locate() in RS.reagent_list
|
||||
if(R)
|
||||
to_chat(usr, "<span class='notice'>It currently has [R.volume] unit\s of [R.name] stored.</span>")
|
||||
. += "<span class='notice'>It currently has [R.volume] unit\s of [R.name] stored.</span>"
|
||||
empty = 0
|
||||
|
||||
if(empty)
|
||||
to_chat(usr, "<span class='warning'>It is currently empty! Allow some time for the internal syntheszier to produce more.</span>")
|
||||
. += "<span class='warning'>It is currently empty! Allow some time for the internal syntheszier to produce more.</span>"
|
||||
|
||||
/obj/item/reagent_containers/borghypo/hacked
|
||||
icon_state = "borghypo_s"
|
||||
|
||||
@@ -77,6 +77,11 @@
|
||||
desc = "A small bottle of charcoal, which removes toxins and other chemicals from the bloodstream."
|
||||
list_reagents = list("charcoal" = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/cryoxadone
|
||||
name = "cryoxadone bottle"
|
||||
desc = "A small bottle of cryoxadone, heals most types of damage when used in extremely cold enviornments."
|
||||
list_reagents = list("cryoxadone" = 30)
|
||||
|
||||
/obj/item/reagent_containers/glass/bottle/mutagen
|
||||
name = "unstable mutagen bottle"
|
||||
desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact."
|
||||
|
||||
@@ -121,11 +121,11 @@
|
||||
icon_state = "[initial(icon_state)]0"
|
||||
|
||||
/obj/item/reagent_containers/hypospray/medipen/examine()
|
||||
..()
|
||||
. = ..()
|
||||
if(reagents && reagents.reagent_list.len)
|
||||
to_chat(usr, "<span class='notice'>It is currently loaded.</span>")
|
||||
. += "<span class='notice'>It is currently loaded.</span>"
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>It is spent.</span>")
|
||||
. += "<span class='notice'>It is spent.</span>"
|
||||
|
||||
/obj/item/reagent_containers/hypospray/medipen/stimulants
|
||||
name = "illegal stimpack medipen"
|
||||
@@ -296,10 +296,10 @@
|
||||
/obj/item/hypospray/mkii/examine(mob/user)
|
||||
. = ..()
|
||||
if(vial)
|
||||
to_chat(user, "[vial] has [vial.reagents.total_volume]u remaining.")
|
||||
. += "[vial] has [vial.reagents.total_volume]u remaining."
|
||||
else
|
||||
to_chat(user, "It has no vial loaded in.")
|
||||
to_chat(user, "[src] is set to [mode ? "Inject" : "Spray"] contents on application.")
|
||||
. += "It has no vial loaded in."
|
||||
. += "[src] is set to [mode ? "Inject" : "Spray"] contents on application."
|
||||
|
||||
/obj/item/hypospray/mkii/proc/unload_hypo(obj/item/I, mob/user)
|
||||
if((istype(I, /obj/item/reagent_containers/glass/bottle/vial)))
|
||||
|
||||
@@ -100,3 +100,8 @@
|
||||
name = "sterilizer spray"
|
||||
desc = "Spray bottle loaded with non-toxic sterilizer. Useful in preparation for surgery."
|
||||
list_reagents = list("sterilizine" = 60)
|
||||
|
||||
/obj/item/reagent_containers/medspray/synthtissue
|
||||
name = "Synthtissue young culture spray"
|
||||
desc = "Spray bottle loaded with synthtissue. Useful in synthtissue grafting surgeries."
|
||||
list_reagents = list("synthtissue" = 60)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "rag"
|
||||
item_flags = NOBLUDGEON
|
||||
reagent_flags = OPENCONTAINER
|
||||
reagent_flags = REFILLABLE | DRAINABLE
|
||||
amount_per_transfer_from_this = 5
|
||||
possible_transfer_amounts = list()
|
||||
volume = 5
|
||||
@@ -23,7 +23,7 @@
|
||||
/obj/item/reagent_containers/rag/examine(mob/user)
|
||||
. = ..()
|
||||
if(reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>Alt-Click to squeeze the liquids out of it.</span>")
|
||||
. += "<span class='notice'>It's soaked. Alt-Click to squeeze it dry, and perhaps gather the liquids into another held open container.</span>"
|
||||
|
||||
/obj/item/reagent_containers/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity)
|
||||
. = ..()
|
||||
@@ -85,15 +85,26 @@
|
||||
/obj/item/reagent_containers/rag/AltClick(mob/user)
|
||||
. = ..()
|
||||
if(reagents.total_volume && user.canUseTopic(src, BE_CLOSE))
|
||||
to_chat(user, "<span class='notice'>You start squeezing the liquids out of \the [src]...</span>")
|
||||
to_chat(user, "<span class='notice'>You start squeezing \the [src] dry...</span>")
|
||||
if(do_after(user, action_speed, TRUE, src))
|
||||
to_chat(user, "<span class='notice'>You squeeze \the [src] dry.</span>")
|
||||
var/atom/react_loc = get_turf(src)
|
||||
if(ismob(react_loc))
|
||||
react_loc = react_loc.loc
|
||||
if(react_loc)
|
||||
reagents.reaction(react_loc, TOUCH)
|
||||
reagents.clear_reagents()
|
||||
var/msg = "You squeeze \the [src]"
|
||||
var/obj/item/target
|
||||
if(Adjacent(user)) //Allows the user to drain the reagents into a beaker if adjacent (no telepathy).
|
||||
for(var/obj/item/I in user.held_items)
|
||||
if(I == src)
|
||||
continue
|
||||
if(I.is_open_container() && !I.reagents.holder_full())
|
||||
target = I
|
||||
break
|
||||
if(!target)
|
||||
msg += " dry"
|
||||
reagents.reaction(get_turf(src), TOUCH)
|
||||
reagents.clear_reagents()
|
||||
else
|
||||
msg += "'s liquids into \the [target]"
|
||||
reagents.trans_to(target, reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>[msg].</span>")
|
||||
|
||||
|
||||
/obj/item/reagent_containers/rag/towel
|
||||
name = "towel"
|
||||
|
||||
11
code/modules/reagents/reagent_containers/sleeper_buffer.dm
Normal file
11
code/modules/reagents/reagent_containers/sleeper_buffer.dm
Normal file
@@ -0,0 +1,11 @@
|
||||
//Created if a sleeper is deconstructed, to contain the reagents within it.
|
||||
/obj/item/reagent_containers/sleeper_buffer
|
||||
name = "Sleeper buffer container"
|
||||
desc = "A closed container for insertion in the Medical Sleepers."
|
||||
icon_state = "sleeper_buffer"
|
||||
volume = 500
|
||||
reagent_flags = NO_REACT
|
||||
spillable = TRUE
|
||||
resistance_flags = ACID_PROOF
|
||||
amount_per_transfer_from_this = 0
|
||||
possible_transfer_amounts = list(0)
|
||||
@@ -230,7 +230,7 @@
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "clownflower"
|
||||
volume = 30
|
||||
list_reagents = list(/datum/reagent/lube/superlube = 30)
|
||||
list_reagents = list("superlube" = 30)
|
||||
|
||||
/obj/item/reagent_containers/spray/waterflower/cyborg
|
||||
reagent_flags = NONE
|
||||
|
||||
@@ -71,13 +71,13 @@
|
||||
var/paper_cups = 25 //Paper cups left from the cooler
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/examine(mob/user)
|
||||
..()
|
||||
. = ..()
|
||||
if (paper_cups > 1)
|
||||
to_chat(user, "There are [paper_cups] paper cups left.")
|
||||
. += "There are [paper_cups] paper cups left."
|
||||
else if (paper_cups == 1)
|
||||
to_chat(user, "There is one paper cup left.")
|
||||
. += "There is one paper cup left."
|
||||
else
|
||||
to_chat(user, "There are no paper cups left.")
|
||||
. += "There are no paper cups left."
|
||||
|
||||
/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/living/user)
|
||||
. = ..()
|
||||
|
||||
Reference in New Issue
Block a user