Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into abductor-update
This commit is contained in:
@@ -843,7 +843,7 @@
|
||||
return FALSE
|
||||
|
||||
if (D.id == "water" && !no_react && !istype(my_atom, /obj/item/reagent_containers/food)) //Do like an otter, add acid to water, but also don't blow up botany.
|
||||
if (pH <= 2)
|
||||
if (pH < 2)
|
||||
SSblackbox.record_feedback("tally", "fermi_chem", 1, "water-acid explosions")
|
||||
var/datum/effect_system/smoke_spread/chem/s = new
|
||||
var/turf/T = get_turf(my_atom)
|
||||
|
||||
@@ -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)
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
@@ -1509,5 +1533,5 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
|
||||
/datum/reagent/medicine/polypyr/overdose_process(mob/living/M)
|
||||
M.adjustOrganLoss(ORGAN_SLOT_LUNGS, 0.5)
|
||||
..()
|
||||
. = 1
|
||||
. = 1
|
||||
|
||||
|
||||
@@ -1654,7 +1654,7 @@
|
||||
description = "Cheap and extremely common type of plant nutriment."
|
||||
color = "#376400" // RBG: 50, 100, 0
|
||||
tox_prob = 10
|
||||
pH = 2
|
||||
pH = 2.5
|
||||
|
||||
/datum/reagent/plantnutriment/left4zednutriment
|
||||
name = "Left 4 Zed"
|
||||
@@ -1662,7 +1662,7 @@
|
||||
description = "Unstable nutriment that makes plants mutate more often than usual."
|
||||
color = "#1A1E4D" // RBG: 26, 30, 77
|
||||
tox_prob = 25
|
||||
pH = 1.5
|
||||
pH = 3.5
|
||||
|
||||
/datum/reagent/plantnutriment/robustharvestnutriment
|
||||
name = "Robust Harvest"
|
||||
@@ -1670,7 +1670,7 @@
|
||||
description = "Very potent nutriment that prevents plants from mutating."
|
||||
color = "#9D9D00" // RBG: 157, 157, 0
|
||||
tox_prob = 15
|
||||
pH = 1
|
||||
pH = 2.5
|
||||
|
||||
// GOON OTHERS
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
toxpwr = 0
|
||||
taste_description = "slime"
|
||||
taste_mult = 0.9
|
||||
pH = 2
|
||||
pH = 2.3
|
||||
|
||||
/datum/reagent/toxin/mutagen/reaction_mob(mob/living/carbon/M, method=TOUCH, reac_volume)
|
||||
if(!..())
|
||||
@@ -220,7 +220,7 @@
|
||||
color = "#49002E" // rgb: 73, 0, 46
|
||||
toxpwr = 1
|
||||
taste_mult = 1
|
||||
pH = 2
|
||||
pH = 2.7
|
||||
|
||||
/datum/reagent/toxin/plantbgone/reaction_obj(obj/O, reac_volume)
|
||||
if(istype(O, /obj/structure/alien/weeds))
|
||||
@@ -986,4 +986,3 @@
|
||||
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
|
||||
|
||||
@@ -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."
|
||||
|
||||
@@ -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)
|
||||
. += "<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"
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user