mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-20 18:47:20 +01:00
First big chunk of the refactor
mid-refactor of `take_overall_damage` Fully refactors the (?:take|heal)_(?:overall|organ)_damage procs Allows the dead to examine Removes the `blinded` var Refactor cyborg components so vision loss is instant Robot life/death updates instantly Adds instant updates for damage overlays and HUD icons for humans Final reconciliation with the species refactor Adds a stat debugging system and debugging logs Also fixes instant death on species change "Debugging logs" are used for stuff an admin wouldn't care about but someone debugging would I used it to fix people dying instantly when changing species due to temporary deletion of the brain Fox's requests Adds a more careful updating system to our reagents system
This commit is contained in:
@@ -196,6 +196,9 @@ var/const/INGEST = 2
|
||||
if(M)
|
||||
chem_temp = M.bodytemperature
|
||||
handle_reactions()
|
||||
|
||||
// a bitfield filled in by each reagent's `on_mob_life` to find out which states to update
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
for(var/A in reagent_list)
|
||||
var/datum/reagent/R = A
|
||||
if(!istype(R)) // How are non-reagents ending up in the reagents_list?
|
||||
@@ -233,14 +236,18 @@ var/const/INGEST = 2
|
||||
continue
|
||||
//If you got this far, that means we can process whatever reagent this iteration is for. Handle things normally from here.
|
||||
if(M && R)
|
||||
R.on_mob_life(M)
|
||||
update_flags |= R.on_mob_life(M)
|
||||
if(R.volume >= R.overdose_threshold && !R.overdosed && R.overdose_threshold > 0)
|
||||
R.overdosed = TRUE
|
||||
R.overdose_start(M)
|
||||
if(R.volume < R.overdose_threshold && R.overdosed)
|
||||
R.overdosed = FALSE
|
||||
if(R.overdosed)
|
||||
R.overdose_process(M, R.volume >= R.overdose_threshold*2 ? 2 : 1)
|
||||
var/list/overdose_results = R.overdose_process(M, R.volume >= R.overdose_threshold*2 ? 2 : 1)
|
||||
if(overdose_results) // to protect against poorly-coded overdose procs
|
||||
update_flags |= overdose_results[REAGENT_OVERDOSE_FLAGS]
|
||||
else
|
||||
log_runtime(EXCEPTION("Reagent '[R.name]' does not return an overdose info list!"))
|
||||
|
||||
for(var/A in addiction_list)
|
||||
var/datum/reagent/R = A
|
||||
@@ -250,18 +257,36 @@ var/const/INGEST = 2
|
||||
R.addiction_stage++
|
||||
switch(R.addiction_stage)
|
||||
if(1)
|
||||
R.addiction_act_stage1(M)
|
||||
update_flags |= R.addiction_act_stage1(M)
|
||||
if(2)
|
||||
R.addiction_act_stage2(M)
|
||||
update_flags |= R.addiction_act_stage2(M)
|
||||
if(3)
|
||||
R.addiction_act_stage3(M)
|
||||
update_flags |= R.addiction_act_stage3(M)
|
||||
if(4)
|
||||
R.addiction_act_stage4(M)
|
||||
update_flags |= R.addiction_act_stage4(M)
|
||||
if(5)
|
||||
R.addiction_act_stage5(M)
|
||||
update_flags |= R.addiction_act_stage5(M)
|
||||
if(prob(20) && (world.timeofday > (R.last_addiction_dose + ADDICTION_TIME))) //Each addiction lasts 8 minutes before it can end
|
||||
to_chat(M, "<span class='notice'>You no longer feel reliant on [R.name]!</span>")
|
||||
addiction_list.Remove(R)
|
||||
if(update_flags & STATUS_UPDATE_HEALTH)
|
||||
M.updatehealth("reagent metabolism")
|
||||
else if(update_flags & STATUS_UPDATE_STAT)
|
||||
// update_stat is called in updatehealth
|
||||
M.update_stat("reagent metabolism")
|
||||
if(update_flags & STATUS_UPDATE_CANMOVE)
|
||||
M.update_canmove()
|
||||
if(update_flags & STATUS_UPDATE_STAMINA)
|
||||
M.handle_hud_icons_health()
|
||||
M.update_stamina()
|
||||
if(update_flags & STATUS_UPDATE_BLIND)
|
||||
M.update_blind_effects()
|
||||
if(update_flags & STATUS_UPDATE_BLURRY)
|
||||
M.update_blurry_effects()
|
||||
if(update_flags & STATUS_UPDATE_NEARSIGHTED)
|
||||
M.update_nearsighted_effects()
|
||||
if(update_flags & STATUS_UPDATE_DRUGGY)
|
||||
M.update_druggy_effects()
|
||||
update_total()
|
||||
|
||||
/datum/reagents/proc/death_metabolize(mob/living/M)
|
||||
@@ -716,4 +741,4 @@ atom/proc/create_reagents(max_vol)
|
||||
QDEL_LIST(reagent_list)
|
||||
reagent_list = null
|
||||
if(my_atom && my_atom.reagents == src)
|
||||
my_atom.reagents = null
|
||||
my_atom.reagents = null
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
/datum/reagent/proc/on_mob_life(mob/living/M)
|
||||
current_cycle++
|
||||
holder.remove_reagent(id, metabolization_rate * M.metabolism_efficiency * M.digestion_ratio) //By default it slowly disappears.
|
||||
return STATUS_UPDATE_NONE
|
||||
|
||||
/datum/reagent/proc/on_mob_death(mob/living/M) //use this to have chems have a "death-triggered" effect
|
||||
return
|
||||
@@ -102,15 +103,16 @@
|
||||
// Called if the reagent has passed the overdose threshold and is set to be triggering overdose effects
|
||||
/datum/reagent/proc/overdose_process(mob/living/M, severity)
|
||||
var/effect = rand(1, 100) - severity
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(effect <= 8)
|
||||
M.adjustToxLoss(severity)
|
||||
return effect
|
||||
update_flags |= (M.adjustToxLoss(severity, FALSE) ? STATUS_UPDATE_HEALTH : STATUS_UPDATE_NONE)
|
||||
return list(effect, update_flags)
|
||||
|
||||
/datum/reagent/proc/overdose_start(mob/living/M)
|
||||
return
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage1(mob/living/M)
|
||||
return
|
||||
return STATUS_UPDATE_NONE
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage2(mob/living/M)
|
||||
if(prob(8))
|
||||
@@ -119,6 +121,7 @@
|
||||
M.emote("sneeze")
|
||||
if(prob(4))
|
||||
to_chat(M, "<span class='notice'>You feel a dull headache.</span>")
|
||||
return STATUS_UPDATE_NONE
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage3(mob/living/M)
|
||||
if(prob(8))
|
||||
@@ -127,6 +130,7 @@
|
||||
M.emote("shiver")
|
||||
if(prob(4))
|
||||
to_chat(M, "<span class='warning'>You begin craving [name]!</span>")
|
||||
return STATUS_UPDATE_NONE
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage4(mob/living/M)
|
||||
if(prob(8))
|
||||
@@ -135,16 +139,19 @@
|
||||
to_chat(M, "<span class='warning'>You have the strong urge for some [name]!</span>")
|
||||
if(prob(4))
|
||||
to_chat(M, "<span class='warning'>You REALLY crave some [name]!</span>")
|
||||
return STATUS_UPDATE_NONE
|
||||
|
||||
/datum/reagent/proc/addiction_act_stage5(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(8))
|
||||
M.emote("twitch")
|
||||
if(prob(6))
|
||||
to_chat(M, "<span class='warning'>Your stomach lurches painfully!</span>")
|
||||
M.visible_message("<span class='warning'>[M] gags and retches!</span>")
|
||||
M.Stun(rand(2,4))
|
||||
M.Weaken(rand(2,4))
|
||||
update_flags |= M.Stun(rand(2,4), FALSE)
|
||||
update_flags |= M.Weaken(rand(2,4), FALSE)
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='warning'>You feel like you can't live without [name]!</span>")
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='warning'>You would DIE for some [name] right now!</span>")
|
||||
return update_flags
|
||||
|
||||
@@ -9,42 +9,42 @@
|
||||
taste_message = "admin abuse"
|
||||
|
||||
/datum/reagent/medicine/adminordrazine/on_mob_life(mob/living/carbon/M)
|
||||
M.setCloneLoss(0)
|
||||
M.setOxyLoss(0)
|
||||
M.setCloneLoss(0, FALSE)
|
||||
M.setOxyLoss(0, FALSE)
|
||||
M.radiation = 0
|
||||
M.adjustBruteLoss(-5)
|
||||
M.adjustFireLoss(-5)
|
||||
M.adjustToxLoss(-5)
|
||||
M.setBrainLoss(0)
|
||||
M.adjustBruteLoss(-5, FALSE)
|
||||
M.adjustFireLoss(-5, FALSE)
|
||||
M.adjustToxLoss(-5, FALSE)
|
||||
M.setBrainLoss(0, FALSE)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
for(var/thing in H.internal_organs)
|
||||
var/obj/item/organ/internal/I = thing
|
||||
I.receive_damage(-5)
|
||||
I.receive_damage(-5, FALSE)
|
||||
for(var/obj/item/organ/external/E in H.bodyparts)
|
||||
if(E.mend_fracture())
|
||||
E.perma_injury = 0
|
||||
M.SetEyeBlind(0)
|
||||
M.CureNearsighted()
|
||||
M.CureBlind()
|
||||
M.SetEyeBlind(0, FALSE)
|
||||
M.CureNearsighted(FALSE)
|
||||
M.CureBlind(FALSE)
|
||||
M.CureMute()
|
||||
M.CureDeaf()
|
||||
M.CureEpilepsy()
|
||||
M.CureTourettes()
|
||||
M.CureCoughing()
|
||||
M.CureNervous()
|
||||
M.SetEyeBlurry(0)
|
||||
M.SetWeakened(0)
|
||||
M.SetStunned(0)
|
||||
M.SetParalysis(0)
|
||||
M.SetSilence(0)
|
||||
M.SetEyeBlurry(0, FALSE)
|
||||
M.SetWeakened(0, FALSE)
|
||||
M.SetStunned(0, FALSE)
|
||||
M.SetParalysis(0, FALSE)
|
||||
M.SetSilence(0, FALSE)
|
||||
M.SetHallucinate(0)
|
||||
M.SetDizzy(0)
|
||||
M.SetDrowsy(0)
|
||||
M.SetStuttering(0)
|
||||
M.SetSlur(0)
|
||||
M.SetConfused(0)
|
||||
M.SetSleeping(0)
|
||||
M.SetSleeping(0, FALSE)
|
||||
M.SetJitter(0)
|
||||
for(var/thing in M.viruses)
|
||||
var/datum/disease/D = thing
|
||||
@@ -52,6 +52,7 @@
|
||||
continue
|
||||
D.cure(0)
|
||||
..()
|
||||
return STATUS_UPDATE_ALL
|
||||
|
||||
/datum/reagent/medicine/adminordrazine/nanites
|
||||
name = "Nanites"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
/datum/reagent/consumable/ethanol/on_mob_life(mob/living/M)
|
||||
M.AdjustDrunk(alcohol_perc)
|
||||
M.AdjustDizzy(dizzy_adj)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/reaction_obj(obj/O, volume)
|
||||
if(istype(O,/obj/item/paper))
|
||||
@@ -103,10 +103,12 @@
|
||||
//copy paste from LSD... shoot me
|
||||
/datum/reagent/consumable/ethanol/absinthe/on_mob_life(mob/living/M)
|
||||
M.AdjustHallucinate(5)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/absinthe/overdose_process(mob/living/M, severity)
|
||||
M.adjustToxLoss(1)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/consumable/ethanol/rum
|
||||
name = "Rum"
|
||||
@@ -121,7 +123,9 @@
|
||||
drink_desc = "Now you want to Pray for a pirate suit, don't you?"
|
||||
|
||||
/datum/reagent/consumable/ethanol/rum/overdose_process(mob/living/M, severity)
|
||||
M.adjustToxLoss(1)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/consumable/ethanol/mojito
|
||||
name = "Mojito"
|
||||
@@ -237,12 +241,13 @@
|
||||
taste_message = "party"
|
||||
|
||||
/datum/reagent/consumable/ethanol/thirteenloko/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustDrowsy(-7)
|
||||
M.AdjustSleeping(-2)
|
||||
update_flags |= M.AdjustSleeping(-2, FALSE)
|
||||
if(M.bodytemperature > 310)
|
||||
M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
M.Jitter(5)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////cocktail entities//////////////////////////////////////////////
|
||||
@@ -475,7 +480,7 @@
|
||||
/datum/reagent/consumable/ethanol/toxins_special/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 330)
|
||||
M.bodytemperature = min(330, M.bodytemperature + (15 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/beepsky_smash
|
||||
name = "Beepsky Smash"
|
||||
@@ -491,8 +496,9 @@
|
||||
taste_message = "THE LAW"
|
||||
|
||||
/datum/reagent/consumable/ethanol/beepsky_smash/on_mob_life(mob/living/M)
|
||||
M.Stun(1)
|
||||
..()
|
||||
var/update_flag = STATUS_UPDATE_NONE
|
||||
update_flag |= M.Stun(1, FALSE)
|
||||
return ..() | update_flag
|
||||
|
||||
/datum/reagent/consumable/ethanol/irish_cream
|
||||
name = "Irish Cream"
|
||||
@@ -640,7 +646,7 @@
|
||||
/datum/reagent/consumable/ethanol/antifreeze/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 330)
|
||||
M.bodytemperature = min(330, M.bodytemperature + (20 * TEMPERATURE_DAMAGE_COEFFICIENT)) //310 is the normal bodytemp. 310.055
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/barefoot
|
||||
name = "Barefoot"
|
||||
@@ -888,13 +894,14 @@
|
||||
taste_message = "brain damageeeEEeee"
|
||||
|
||||
/datum/reagent/consumable/ethanol/neurotoxin/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(current_cycle >= 13)
|
||||
M.Weaken(3)
|
||||
update_flags |= M.Weaken(3, FALSE)
|
||||
if(current_cycle >= 55)
|
||||
M.Druggy(55)
|
||||
update_flags |= M.Druggy(55, FALSE)
|
||||
if(current_cycle >= 200)
|
||||
M.adjustToxLoss(2)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/ethanol/hippies_delight
|
||||
name = "Hippie's Delight"
|
||||
@@ -908,25 +915,29 @@
|
||||
drink_desc = "A drink enjoyed by people during the 1960's."
|
||||
|
||||
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/M)
|
||||
M.Druggy(50)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.Druggy(50, FALSE)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
M.Stuttering(1)
|
||||
M.Dizzy(10)
|
||||
if(prob(10)) M.emote(pick("twitch","giggle"))
|
||||
if(prob(10))
|
||||
M.emote(pick("twitch","giggle"))
|
||||
if(5 to 10)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
M.Stuttering(1)
|
||||
M.Jitter(20)
|
||||
M.Dizzy(20)
|
||||
M.Druggy(45)
|
||||
if(prob(20)) M.emote(pick("twitch","giggle"))
|
||||
update_flags |= M.Druggy(45, FALSE)
|
||||
if(prob(20))
|
||||
M.emote(pick("twitch","giggle"))
|
||||
if(10 to INFINITY)
|
||||
if(!M.stuttering) M.stuttering = 1
|
||||
M.Stuttering(1)
|
||||
M.Jitter(40)
|
||||
M.Dizzy(40)
|
||||
M.Druggy(60)
|
||||
if(prob(30)) M.emote(pick("twitch","giggle"))
|
||||
..()
|
||||
update_flags |= M.Druggy(60, FALSE)
|
||||
if(prob(30))
|
||||
M.emote(pick("twitch","giggle"))
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/ethanol/changelingsting
|
||||
name = "Changeling Sting"
|
||||
@@ -993,8 +1004,8 @@
|
||||
|
||||
/datum/reagent/consumable/ethanol/driestmartini/on_mob_life(mob/living/M)
|
||||
if(current_cycle >= 55 && current_cycle < 115)
|
||||
M.stuttering += 10
|
||||
..()
|
||||
M.AdjustStuttering(10)
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/ethanol/kahlua
|
||||
name = "Kahlua"
|
||||
@@ -1008,11 +1019,12 @@
|
||||
taste_message = "sweet alcohol"
|
||||
|
||||
/datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustDizzy(-5)
|
||||
M.AdjustDrowsy(-3)
|
||||
M.AdjustSleeping(-2)
|
||||
update_flags |= (M.AdjustSleeping(-2) ? STATUS_UPDATE_STAT : STATUS_UPDATE_NONE)
|
||||
M.Jitter(5)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/ginsonic
|
||||
name = "Gin and sonic"
|
||||
@@ -1026,11 +1038,12 @@
|
||||
taste_message = "SPEED"
|
||||
|
||||
/datum/reagent/ginsonic/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustDrowsy(-5)
|
||||
if(prob(25))
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
update_flags |= M.AdjustParalysis(-1, FALSE)
|
||||
update_flags |= M.AdjustStunned(-1, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-1, FALSE)
|
||||
if(prob(8))
|
||||
M.reagents.add_reagent("methamphetamine",1.2)
|
||||
var/sonic_message = pick("Gotta go fast!", "Time to speed, keed!", "I feel a need for speed!", "Let's juice.", "Juice time.", "Way Past Cool!")
|
||||
@@ -1038,7 +1051,7 @@
|
||||
M.say("[sonic_message]")
|
||||
else
|
||||
to_chat(M, "<span class='notice'>[sonic_message ]</span>")
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/ethanol/applejack
|
||||
name = "Applejack"
|
||||
@@ -1101,6 +1114,7 @@
|
||||
M.adjust_fire_stacks(3)
|
||||
|
||||
/datum/reagent/consumable/ethanol/dragons_breath/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(M.reagents.has_reagent("milk"))
|
||||
to_chat(M, "<span class='notice'>The milk stops the burning. Ahhh.</span>")
|
||||
M.reagents.del_reagent("milk")
|
||||
@@ -1111,7 +1125,7 @@
|
||||
if(prob(50))
|
||||
to_chat(M, "<span class='danger'>Your throat burns terribly!</span>")
|
||||
M.emote(pick("scream","cry","choke","gasp"))
|
||||
M.Stun(1)
|
||||
update_flags |= M.Stun(1, FALSE)
|
||||
if(prob(8))
|
||||
to_chat(M, "<span class='danger'>Why!? WHY!?</span>")
|
||||
if(prob(8))
|
||||
@@ -1125,7 +1139,7 @@
|
||||
M.visible_message("<span class='danger'>[M] is consumed in flames!</span>")
|
||||
M.dust()
|
||||
return
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
// ROBOT ALCOHOL PAST THIS POINT
|
||||
// WOOO!
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
if(iscarbon(M))
|
||||
if(!M.get_int_organ(/obj/item/organ/internal/body_egg))
|
||||
new/obj/item/organ/internal/body_egg/spider_eggs(M) //Yes, even Xenos can fall victim to the plague that is spider infestation.
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/reagent/nanomachines
|
||||
@@ -24,7 +24,7 @@
|
||||
/datum/reagent/nanomachines/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 1.5)
|
||||
M.ForceContractDisease(new /datum/disease/transformation/robot(0))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/reagent/xenomicrobes
|
||||
@@ -37,7 +37,7 @@
|
||||
/datum/reagent/xenomicrobes/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 1.5)
|
||||
M.ContractDisease(new /datum/disease/transformation/xeno(0))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/fungalspores
|
||||
name = "Tubercle bacillus Cosmosis microbes"
|
||||
@@ -49,7 +49,7 @@
|
||||
/datum/reagent/fungalspores/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 2.5)
|
||||
M.ForceContractDisease(new /datum/disease/tuberculosis(0))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/jagged_crystals
|
||||
name = "Jagged Crystals"
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
/datum/reagent/jagged_crystals/on_mob_life(mob/living/carbon/M)
|
||||
M.ForceContractDisease(new /datum/disease/berserker(0))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/salmonella
|
||||
name = "Salmonella"
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
/datum/reagent/salmonella/on_mob_life(mob/living/carbon/M)
|
||||
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/gibbis
|
||||
name = "Gibbis"
|
||||
@@ -86,7 +86,7 @@
|
||||
/datum/reagent/gibbis/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 2.5)
|
||||
M.ForceContractDisease(new /datum/disease/gbs/curable(0))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/prions
|
||||
name = "Prions"
|
||||
@@ -99,7 +99,7 @@
|
||||
/datum/reagent/prions/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 4.5)
|
||||
M.ForceContractDisease(new /datum/disease/kuru(0))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/grave_dust
|
||||
name = "Grave Dust"
|
||||
@@ -112,7 +112,7 @@
|
||||
/datum/reagent/grave_dust/on_mob_life(mob/living/carbon/M)
|
||||
if(volume > 4.5)
|
||||
M.ForceContractDisease(new /datum/disease/vampire(0))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/heartworms
|
||||
name = "Space heartworms"
|
||||
@@ -130,7 +130,7 @@
|
||||
if(ate_heart)
|
||||
ate_heart.remove(H)
|
||||
qdel(ate_heart)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/concentrated_initro
|
||||
name = "Concentrated Initropidril"
|
||||
@@ -146,7 +146,7 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!H.undergoing_cardiac_arrest())
|
||||
H.set_heartattack(TRUE) // rip in pepperoni
|
||||
..()
|
||||
return ..()
|
||||
|
||||
//virus foods
|
||||
|
||||
|
||||
@@ -11,16 +11,17 @@
|
||||
var/adj_temp_cool = 0
|
||||
|
||||
/datum/reagent/consumable/drink/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(adj_dizzy)
|
||||
M.AdjustDizzy(adj_dizzy)
|
||||
if(adj_drowsy)
|
||||
M.AdjustDrowsy(adj_drowsy)
|
||||
if(adj_sleepy)
|
||||
M.AdjustSleeping(adj_sleepy)
|
||||
update_flags |= M.AdjustSleeping(adj_sleepy, FALSE)
|
||||
if(adj_temp_hot)
|
||||
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature + (adj_temp_hot * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
if(adj_temp_cool)
|
||||
if(M.bodytemperature > 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = max(310, M.bodytemperature - (adj_temp_cool * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
@@ -65,12 +65,13 @@
|
||||
taste_message = "cola"
|
||||
|
||||
/datum/reagent/consumable/drink/cold/nuka_cola/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.Jitter(20)
|
||||
M.Druggy(30)
|
||||
update_flags |= M.Druggy(30, FALSE)
|
||||
M.AdjustDizzy(5)
|
||||
M.SetDrowsy(0)
|
||||
M.status_flags |= GOTTAGOFAST
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/cold/nuka_cola/on_mob_delete(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOFAST
|
||||
@@ -172,4 +173,4 @@
|
||||
|
||||
/datum/reagent/consumable/drink/cold/rewriter/on_mob_life(mob/living/M)
|
||||
M.Jitter(5)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
@@ -9,9 +9,10 @@
|
||||
taste_message = "orange juice"
|
||||
|
||||
/datum/reagent/consumable/drink/orangejuicde/on_mob_life(mob/living/M)
|
||||
if(M.getOxyLoss() && prob(30))
|
||||
M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(30))
|
||||
update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/tomatojuice
|
||||
name = "Tomato Juice"
|
||||
@@ -34,9 +35,10 @@
|
||||
taste_message = "pineapple juice"
|
||||
|
||||
/datum/reagent/consumable/drink/tomatojuice/on_mob_life(mob/living/M)
|
||||
if(M.getFireLoss() && prob(20))
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(20))
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/limejuice
|
||||
name = "Lime Juice"
|
||||
@@ -49,9 +51,10 @@
|
||||
taste_message = "lime juice"
|
||||
|
||||
/datum/reagent/consumable/drink/limejuice/on_mob_life(mob/living/M)
|
||||
if(M.getToxLoss() && prob(20))
|
||||
M.adjustToxLoss(-1)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(20))
|
||||
update_flags |= M.adjustToxLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/carrotjuice
|
||||
name = "Carrot juice"
|
||||
@@ -63,16 +66,17 @@
|
||||
drink_desc = "It is just like a carrot but without crunching."
|
||||
taste_message = "carrot juice"
|
||||
|
||||
/datum/reagent/consumable/drink/carrotjuicde/on_mob_life(mob/living/M)
|
||||
M.AdjustEyeBlurry(-1)
|
||||
M.AdjustEyeBlind(-1)
|
||||
/datum/reagent/consumable/drink/carrotjuice/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.AdjustEyeBlurry(-1, FALSE)
|
||||
update_flags |= M.AdjustEyeBlind(-1, FALSE)
|
||||
switch(current_cycle)
|
||||
if(1 to 20)
|
||||
//nothing
|
||||
if(21 to INFINITY)
|
||||
if(prob(current_cycle-10))
|
||||
M.disabilities &= ~NEARSIGHTED
|
||||
..()
|
||||
update_flags |= M.CureNearsighted(FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/doctor_delight
|
||||
name = "The Doctor's Delight"
|
||||
@@ -86,9 +90,10 @@
|
||||
taste_message = "healthy dietary choices"
|
||||
|
||||
/datum/reagent/consumable/drink/doctors_delight/on_mob_life(mob/living/M)
|
||||
if(M.getToxLoss() && prob(20))
|
||||
M.adjustToxLoss(-1)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(20))
|
||||
update_flags |= M.adjustToxLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/triple_citrus
|
||||
name = "Triple Citrus"
|
||||
@@ -126,8 +131,9 @@
|
||||
taste_message = "berry juice"
|
||||
|
||||
/datum/reagent/consumable/drink/poisonberryjuice/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/applejuice
|
||||
name = "Apple Juice"
|
||||
@@ -171,10 +177,11 @@
|
||||
taste_message = "banana juice"
|
||||
|
||||
/datum/reagent/consumable/drink/banana/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if((ishuman(M) && M.job in list("Clown") ) || issmall(M))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/nothing
|
||||
name = "Nothing"
|
||||
@@ -186,10 +193,11 @@
|
||||
taste_message = "nothing... how?"
|
||||
|
||||
/datum/reagent/consumable/drink/nothing/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(ishuman(M) && M.job in list("Mime"))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/potato_juice
|
||||
name = "Potato Juice"
|
||||
@@ -213,11 +221,12 @@
|
||||
taste_message = "milk"
|
||||
|
||||
/datum/reagent/consumable/drink/milk/on_mob_life(mob/living/M)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
M.adjustBruteLoss(-1)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(20))
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
if(holder.has_reagent("capsaicin"))
|
||||
holder.remove_reagent("capsaicin", 2)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/milk/soymilk
|
||||
name = "Soy Milk"
|
||||
@@ -275,13 +284,14 @@
|
||||
taste_message = "coffee"
|
||||
|
||||
/datum/reagent/consumable/drink/coffee/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(holder.has_reagent("frostoil"))
|
||||
holder.remove_reagent("frostoil", 5)
|
||||
if(prob(50))
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
..()
|
||||
update_flags |= M.AdjustParalysis(-1, FALSE)
|
||||
update_flags |= M.AdjustStunned(-1, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/coffee/overdose_process(mob/living/M, severity)
|
||||
if(volume > 45)
|
||||
@@ -311,10 +321,11 @@
|
||||
drink_desc = "A nice and refrshing beverage while you are reading."
|
||||
|
||||
/datum/reagent/consumable/drink/coffee/soy_latte/on_mob_life(mob/living/M)
|
||||
..()
|
||||
M.SetSleeping(0)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
M.adjustBruteLoss(-1)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.SetSleeping(0, FALSE)
|
||||
if(prob(20))
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/coffee/cafe_latte
|
||||
name = "Cafe Latte"
|
||||
@@ -328,10 +339,11 @@
|
||||
drink_desc = "A nice, strong and refreshing beverage while you are reading."
|
||||
|
||||
/datum/reagent/consumable/drink/coffee/cafe_latte/on_mob_life(mob/living/M)
|
||||
..()
|
||||
M.SetSleeping(0)
|
||||
if(M.getBruteLoss() && prob(20))
|
||||
M.adjustBruteLoss(-1)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.SetSleeping(0, FALSE)
|
||||
if(prob(20))
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/coffee/cafe_latte/cafe_mocha
|
||||
name = "Cafe Mocha"
|
||||
@@ -357,9 +369,10 @@
|
||||
taste_message = "tea"
|
||||
|
||||
/datum/reagent/consumable/drink/tea/on_mob_life(mob/living/M)
|
||||
if(M.getToxLoss() && prob(20))
|
||||
M.adjustToxLoss(-1)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(20))
|
||||
update_flags |= M.adjustToxLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/tea/icetea
|
||||
name = "Iced Tea"
|
||||
@@ -383,10 +396,11 @@
|
||||
taste_message = "honks"
|
||||
|
||||
/datum/reagent/consumable/drink/bananahonk/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if((ishuman(M) && M.job in list("Clown") ) || issmall(M))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/silencer
|
||||
name = "Silencer"
|
||||
@@ -399,10 +413,11 @@
|
||||
taste_message = "mphhhh"
|
||||
|
||||
/datum/reagent/consumable/drink/silencer/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(ishuman(M) && M.job in list("Mime"))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/chocolatepudding
|
||||
name = "Chocolate Pudding"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
if(ishuman(M))
|
||||
if(prob(7))
|
||||
M.emote(pick("twitch","drool","moan","gasp"))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/reagent/lithium
|
||||
@@ -24,8 +24,9 @@
|
||||
if(isturf(M.loc) && !istype(M.loc, /turf/space))
|
||||
if(M.canmove && !M.restrained())
|
||||
step(M, pick(cardinal))
|
||||
if(prob(5)) M.emote(pick("twitch","drool","moan"))
|
||||
..()
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch","drool","moan"))
|
||||
return ..()
|
||||
|
||||
/datum/reagent/lsd
|
||||
name = "Lysergic acid diethylamide"
|
||||
@@ -35,9 +36,10 @@
|
||||
color = "#0000D8"
|
||||
|
||||
/datum/reagent/lsd/on_mob_life(mob/living/M)
|
||||
M.Druggy(15)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.Druggy(15, FALSE)
|
||||
M.AdjustHallucinate(10)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/space_drugs
|
||||
name = "Space drugs"
|
||||
@@ -50,12 +52,14 @@
|
||||
heart_rate_decrease = 1
|
||||
|
||||
/datum/reagent/space_drugs/on_mob_life(mob/living/M)
|
||||
M.Druggy(15)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.Druggy(15, FALSE)
|
||||
if(isturf(M.loc) && !istype(M.loc, /turf/space))
|
||||
if(M.canmove && !M.restrained())
|
||||
step(M, pick(cardinal))
|
||||
if(prob(7)) M.emote(pick("twitch","drool","moan","giggle"))
|
||||
..()
|
||||
if(prob(7))
|
||||
M.emote(pick("twitch","drool","moan","giggle"))
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/psilocybin
|
||||
name = "Psilocybin"
|
||||
@@ -64,25 +68,29 @@
|
||||
color = "#E700E7" // rgb: 231, 0, 231
|
||||
|
||||
/datum/reagent/psilocybin/on_mob_life(mob/living/M)
|
||||
M.Druggy(30)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.Druggy(30, FALSE)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
M.Stuttering(1)
|
||||
M.Dizzy(5)
|
||||
if(prob(10)) M.emote(pick("twitch","giggle"))
|
||||
if(prob(10))
|
||||
M.emote(pick("twitch","giggle"))
|
||||
if(5 to 10)
|
||||
M.Stuttering(1)
|
||||
M.Jitter(10)
|
||||
M.Dizzy(10)
|
||||
M.Druggy(35)
|
||||
if(prob(20)) M.emote(pick("twitch","giggle"))
|
||||
update_flags |= M.Druggy(35, FALSE)
|
||||
if(prob(20))
|
||||
M.emote(pick("twitch","giggle"))
|
||||
if(10 to INFINITY)
|
||||
M.Stuttering(1)
|
||||
M.Jitter(20)
|
||||
M.Dizzy(20)
|
||||
M.Druggy(40)
|
||||
if(prob(30)) M.emote(pick("twitch","giggle"))
|
||||
..()
|
||||
update_flags |= M.Druggy(40, FALSE)
|
||||
if(prob(30))
|
||||
M.emote(pick("twitch","giggle"))
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/nicotine
|
||||
name = "Nicotine"
|
||||
@@ -95,55 +103,59 @@
|
||||
heart_rate_increase = 1
|
||||
|
||||
/datum/reagent/nicotine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
var/smoke_message = pick("You feel relaxed.", "You feel calmed.", "You feel less stressed.", "You feel more placid.", "You feel more undivided.")
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>[smoke_message]</span>")
|
||||
if(prob(50))
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.AdjustParalysis(-1, FALSE)
|
||||
update_flags |= M.AdjustStunned(-1, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-1, FALSE)
|
||||
update_flags |= M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/nicotine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] looks nervous!</span>")
|
||||
M.AdjustConfused(15)
|
||||
M.adjustToxLoss(2)
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
M.Jitter(10)
|
||||
M.emote("twitch_s")
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='warning'>[M] is all sweaty!</span>")
|
||||
M.bodytemperature += rand(15,30)
|
||||
M.adjustToxLoss(3)
|
||||
update_flags |= M.adjustToxLoss(3, FALSE)
|
||||
else if(effect <= 7)
|
||||
M.adjustToxLoss(4)
|
||||
update_flags |= M.adjustToxLoss(4, FALSE)
|
||||
M.emote("twitch")
|
||||
M.Jitter(10)
|
||||
else if(severity == 2)
|
||||
if(effect <= 2)
|
||||
M.emote("gasp")
|
||||
to_chat(M, "<span class='warning'>You can't breathe!</span>")
|
||||
M.adjustOxyLoss(15)
|
||||
M.adjustToxLoss(3)
|
||||
M.Stun(1)
|
||||
update_flags |= M.adjustOxyLoss(15, FALSE)
|
||||
update_flags |= M.adjustToxLoss(3, FALSE)
|
||||
update_flags |= M.Stun(1, FALSE)
|
||||
else if(effect <= 4)
|
||||
to_chat(M, "<span class='warning'>You feel terrible!</span>")
|
||||
M.emote("drool")
|
||||
M.Jitter(10)
|
||||
M.adjustToxLoss(5)
|
||||
M.Weaken(1)
|
||||
update_flags |= M.adjustToxLoss(5, FALSE)
|
||||
update_flags |= M.Weaken(1, FALSE)
|
||||
M.AdjustConfused(33)
|
||||
else if(effect <= 7)
|
||||
M.emote("collapse")
|
||||
to_chat(M, "<span class='warning'>Your heart is pounding!</span>")
|
||||
M << 'sound/effects/singlebeat.ogg'
|
||||
M.Paralyse(5)
|
||||
update_flags |= M.Paralyse(5, FALSE)
|
||||
M.Jitter(30)
|
||||
M.adjustToxLoss(6)
|
||||
M.adjustOxyLoss(20)
|
||||
update_flags |= M.adjustToxLoss(6, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(20, FALSE)
|
||||
return list(effect, update_flags)
|
||||
|
||||
/datum/reagent/crank
|
||||
name = "Crank"
|
||||
@@ -155,9 +167,10 @@
|
||||
addiction_chance = 50
|
||||
|
||||
/datum/reagent/crank/on_mob_life(mob/living/M)
|
||||
M.AdjustParalysis(-2)
|
||||
M.AdjustStunned(-2)
|
||||
M.AdjustWeakened(-2)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.AdjustParalysis(-2, FALSE)
|
||||
update_flags |= M.AdjustStunned(-2, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-2, FALSE)
|
||||
if(prob(15))
|
||||
M.emote(pick("twitch", "twitch_s", "grumble", "laugh"))
|
||||
if(prob(8))
|
||||
@@ -169,13 +182,15 @@
|
||||
M.bodytemperature += rand(1,10)
|
||||
if(prob(4))
|
||||
to_chat(M, "<span class='notice'>You feel kinda awful!</span>")
|
||||
M.adjustToxLoss(1)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
M.AdjustJitter(30)
|
||||
M.emote(pick("groan", "moan"))
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/crank/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] looks confused!</span>")
|
||||
@@ -185,9 +200,9 @@
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='warning'>[M] is all sweaty!</span>")
|
||||
M.bodytemperature += rand(5,30)
|
||||
M.adjustBrainLoss(1)
|
||||
M.adjustToxLoss(1)
|
||||
M.Stun(2)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
update_flags |= M.Stun(2, FALSE)
|
||||
else if(effect <= 7)
|
||||
M.Jitter(30)
|
||||
M.emote("grumble")
|
||||
@@ -195,14 +210,14 @@
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] is sweating like a pig!</span>")
|
||||
M.bodytemperature += rand(20,100)
|
||||
M.adjustToxLoss(5)
|
||||
M.Stun(3)
|
||||
update_flags |= M.adjustToxLoss(5, FALSE)
|
||||
update_flags |= M.Stun(3, FALSE)
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='warning'>[M] starts tweaking the hell out!</span>")
|
||||
M.Jitter(100)
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBrainLoss(8)
|
||||
M.Weaken(3)
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(8, FALSE)
|
||||
update_flags |= M.Weaken(3, FALSE)
|
||||
M.AdjustConfused(25)
|
||||
M.emote("scream")
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
@@ -210,8 +225,9 @@
|
||||
M.emote("scream")
|
||||
M.visible_message("<span class='warning'>[M] nervously scratches at [M.p_their()] skin!</span>")
|
||||
M.Jitter(10)
|
||||
M.adjustBruteLoss(5)
|
||||
update_flags |= M.adjustBruteLoss(5, FALSE)
|
||||
M.emote("twitch_s")
|
||||
return list(effect, update_flags)
|
||||
|
||||
/datum/reagent/krokodil
|
||||
name = "Krokodil"
|
||||
@@ -224,9 +240,10 @@
|
||||
|
||||
|
||||
/datum/reagent/krokodil/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustJitter(-40)
|
||||
if(prob(25))
|
||||
M.adjustBrainLoss(1)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
if(prob(15))
|
||||
M.emote(pick("smile", "grin", "yawn", "laugh", "drool"))
|
||||
if(prob(10))
|
||||
@@ -236,49 +253,52 @@
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>You feel too chill!</span>")
|
||||
M.emote(pick("yawn", "drool"))
|
||||
M.Stun(1)
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustBrainLoss(1)
|
||||
update_flags |= M.Stun(1, FALSE)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
M.bodytemperature -= 20
|
||||
if(prob(2))
|
||||
to_chat(M, "<span class='warning'>Your skin feels all rough and dry.</span>")
|
||||
M.adjustBruteLoss(2)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(2, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/krokodil/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] looks dazed!</span>")
|
||||
M.Stun(3)
|
||||
update_flags |= M.Stun(3, FALSE)
|
||||
M.emote("drool")
|
||||
else if(effect <= 4)
|
||||
M.emote("shiver")
|
||||
M.bodytemperature -= 40
|
||||
else if(effect <= 7)
|
||||
to_chat(M, "<span class='warning'>Your skin is cracking and bleeding!</span>")
|
||||
M.adjustBruteLoss(5)
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBrainLoss(1)
|
||||
update_flags |= M.adjustBruteLoss(5, FALSE)
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
M.emote("cry")
|
||||
else if(severity == 2)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M]</b> sways and falls over!</span>")
|
||||
M.adjustToxLoss(3)
|
||||
M.adjustBrainLoss(3)
|
||||
M.Weaken(8)
|
||||
update_flags |= M.adjustToxLoss(3, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(3, FALSE)
|
||||
update_flags |= M.Weaken(8, FALSE)
|
||||
M.emote("faint")
|
||||
else if(effect <= 4)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.visible_message("<span class='warning'>[M]'s skin is rotting away!</span>")
|
||||
H.adjustBruteLoss(25)
|
||||
update_flags |= H.adjustBruteLoss(25, FALSE)
|
||||
H.emote("scream")
|
||||
H.ChangeToHusk()
|
||||
H.emote("faint")
|
||||
else if(effect <= 7)
|
||||
M.emote("shiver")
|
||||
M.bodytemperature -= 70
|
||||
return list(effect, update_flags)
|
||||
|
||||
/datum/reagent/methamphetamine
|
||||
name = "Methamphetamine"
|
||||
@@ -292,32 +312,35 @@
|
||||
heart_rate_increase = 1
|
||||
|
||||
/datum/reagent/methamphetamine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch_s","blink_r","shiver"))
|
||||
if(current_cycle >= 25)
|
||||
M.AdjustJitter(5)
|
||||
M.AdjustDrowsy(-10)
|
||||
M.AdjustParalysis(-2.5)
|
||||
M.AdjustStunned(-2.5)
|
||||
M.AdjustWeakened(-2.5)
|
||||
M.adjustStaminaLoss(-2)
|
||||
M.SetSleeping(0)
|
||||
update_flags |= M.AdjustParalysis(-2.5, FALSE)
|
||||
update_flags |= M.AdjustStunned(-2.5, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-2.5, FALSE)
|
||||
update_flags |= M.adjustStaminaLoss(-2, FALSE)
|
||||
update_flags |= M.SetSleeping(0, FALSE)
|
||||
M.status_flags |= GOTTAGOFAST_METH
|
||||
if(prob(50))
|
||||
M.adjustBrainLoss(1.0)
|
||||
..()
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/methamphetamine/on_mob_delete(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOFAST_METH
|
||||
..()
|
||||
|
||||
/datum/reagent/methamphetamine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] can't seem to control [M.p_their()] legs!</span>")
|
||||
M.AdjustConfused(20)
|
||||
M.Weaken(4)
|
||||
update_flags |= M.Weaken(4, FALSE)
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='warning'>[M]'s hands flip out and flail everywhere!</span>")
|
||||
M.drop_l_hand()
|
||||
@@ -332,9 +355,10 @@
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='warning'>[M] falls to the floor and flails uncontrollably!</span>")
|
||||
M.Jitter(10)
|
||||
M.Weaken(10)
|
||||
update_flags |= M.Weaken(10, FALSE)
|
||||
else if(effect <= 7)
|
||||
M.emote("laugh")
|
||||
return list(effect, update_flags)
|
||||
|
||||
/datum/reagent/bath_salts
|
||||
name = "Bath Salts"
|
||||
@@ -348,6 +372,7 @@
|
||||
|
||||
/datum/reagent/bath_salts/on_mob_life(mob/living/M)
|
||||
var/check = rand(0,100)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head_organ = H.get_organ("head")
|
||||
@@ -358,25 +383,25 @@
|
||||
H.update_fhair()
|
||||
H.visible_message("<span class='warning'>[H] has a wild look in [H.p_their()] eyes!</span>")
|
||||
if(check < 60)
|
||||
M.SetParalysis(0)
|
||||
M.SetStunned(0)
|
||||
M.SetWeakened(0)
|
||||
update_flags |= M.SetParalysis(0, FALSE)
|
||||
update_flags |= M.SetStunned(0, FALSE)
|
||||
update_flags |= M.SetWeakened(0, FALSE)
|
||||
if(check < 30)
|
||||
M.emote(pick("twitch", "twitch_s", "scream", "drool", "grumble", "mumble"))
|
||||
M.Druggy(15)
|
||||
update_flags |= M.Druggy(15, FALSE)
|
||||
if(check < 20)
|
||||
M.AdjustConfused(10)
|
||||
if(check < 8)
|
||||
M.reagents.add_reagent(pick("methamphetamine", "crank", "neurotoxin"), rand(1,5))
|
||||
M.visible_message("<span class='warning'>[M] scratches at something under [M.p_their()] skin!</span>")
|
||||
M.adjustBruteLoss(5)
|
||||
update_flags |= M.adjustBruteLoss(5, FALSE)
|
||||
else if(check < 16)
|
||||
M.AdjustHallucinate(30)
|
||||
else if(check < 24)
|
||||
to_chat(M, "<span class='userdanger'>They're coming for you!</span>")
|
||||
else if(check < 28)
|
||||
to_chat(M, "<span class='userdanger'>THEY'RE GONNA GET YOU!</span>")
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/bath_salts/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == INGEST)
|
||||
@@ -390,7 +415,9 @@
|
||||
to_chat(M, "<span class='notice'>You feel a bit more salty than usual.</span>")
|
||||
|
||||
/datum/reagent/bath_salts/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='danger'>[M] flails around like a lunatic!</span>")
|
||||
@@ -401,10 +428,10 @@
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='danger'>[M]'s eyes dilate!</span>")
|
||||
M.emote("twitch_s")
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBrainLoss(1)
|
||||
M.Stun(3)
|
||||
M.EyeBlurry(7)
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
update_flags |= M.Stun(3, FALSE)
|
||||
update_flags |= M.EyeBlurry(7, FALSE)
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
else if(effect <= 7)
|
||||
M.emote("faint")
|
||||
@@ -412,25 +439,26 @@
|
||||
else if(severity == 2)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='danger'>[M]'s eyes dilate!</span>")
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBrainLoss(1)
|
||||
M.Stun(3)
|
||||
M.EyeBlurry(7)
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
update_flags |= M.Stun(3, FALSE)
|
||||
update_flags |= M.EyeBlurry(7, FALSE)
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='danger'>[M] convulses violently and falls to the floor!</span>")
|
||||
M.Jitter(50)
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBrainLoss(1)
|
||||
M.Weaken(8)
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
update_flags |= M.Weaken(8, FALSE)
|
||||
M.emote("gasp")
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
else if(effect <= 7)
|
||||
M.emote("scream")
|
||||
M.visible_message("<span class='danger'>[M] tears at [M.p_their()] own skin!</span>")
|
||||
M.adjustBruteLoss(5)
|
||||
update_flags |= M.adjustBruteLoss(5, FALSE)
|
||||
M.reagents.add_reagent("jagged_crystals", 5)
|
||||
M.emote("twitch")
|
||||
return list(effect, update_flags)
|
||||
|
||||
/datum/reagent/jenkem
|
||||
name = "Jenkem"
|
||||
@@ -442,11 +470,12 @@
|
||||
taste_message = "puke... or worse"
|
||||
|
||||
/datum/reagent/jenkem/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.Dizzy(5)
|
||||
if(prob(10))
|
||||
M.emote(pick("twitch_s","drool","moan"))
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/aranesp
|
||||
name = "Aranesp"
|
||||
@@ -456,9 +485,10 @@
|
||||
color = "#60A584" // rgb: 96, 165, 132
|
||||
|
||||
/datum/reagent/aranesp/on_mob_life(mob/living/M)
|
||||
M.adjustStaminaLoss(-40)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustStaminaLoss(-40, FALSE)
|
||||
if(prob(90))
|
||||
M.adjustToxLoss(1)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch", "shake", "tremble","quiver", "twitch_s"))
|
||||
var/high_message = pick("really buff", "on top of the world","like you're made of steel", "energized", "invigorated", "full of energy")
|
||||
@@ -466,10 +496,10 @@
|
||||
to_chat(M, "<span class='notice'>[high_message]!</span>")
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='danger'>You cannot breathe!</span>")
|
||||
M.adjustOxyLoss(15)
|
||||
M.Stun(1)
|
||||
M.AdjustLoseBreath(1)
|
||||
..()
|
||||
update_flags |= M.adjustOxyLoss(15, FALSE)
|
||||
update_flags |= M.Stun(1, FALSE)
|
||||
M.AdjustLoseBreath(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/thc
|
||||
name = "Tetrahydrocannabinol"
|
||||
@@ -489,7 +519,7 @@
|
||||
if(volume >= 50 && prob(25))
|
||||
if(prob(10))
|
||||
M.Drowsy(10)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/fliptonium
|
||||
name = "Fliptonium"
|
||||
@@ -504,6 +534,7 @@
|
||||
taste_message = "flips"
|
||||
|
||||
/datum/reagent/fliptonium/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(current_cycle == 5)
|
||||
M.SpinAnimation(speed = 11, loops = -1)
|
||||
if(current_cycle == 10)
|
||||
@@ -522,12 +553,12 @@
|
||||
M.SpinAnimation(speed = 4, loops = -1)
|
||||
|
||||
M.AdjustDrowsy(-6)
|
||||
M.AdjustParalysis(-1.5)
|
||||
M.AdjustStunned(-1.5)
|
||||
M.AdjustWeakened(-1.5)
|
||||
M.adjustStaminaLoss(-1.5)
|
||||
M.SetSleeping(0)
|
||||
..()
|
||||
update_flags |= M.AdjustParalysis(-1.5, FALSE)
|
||||
update_flags |= M.AdjustStunned(-1.5, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-1.5, FALSE)
|
||||
update_flags |= M.adjustStaminaLoss(-1.5, FALSE)
|
||||
update_flags |= M.SetSleeping(0, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/fliptonium/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == INGEST || method == TOUCH)
|
||||
@@ -538,12 +569,14 @@
|
||||
M.SpinAnimation(speed = 12, loops = -1)
|
||||
|
||||
/datum/reagent/fliptonium/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] can't seem to control [M.p_their()] legs!</span>")
|
||||
M.AdjustConfused(33)
|
||||
M.Weaken(2)
|
||||
update_flags |= M.Weaken(2, FALSE)
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='warning'>[M]'s hands flip out and flail everywhere!</span>")
|
||||
M.drop_l_hand()
|
||||
@@ -558,9 +591,10 @@
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='warning'>[M] falls to the floor and flails uncontrollably!</span>")
|
||||
M.Jitter(5)
|
||||
M.Weaken(5)
|
||||
update_flags |= M.Weaken(5, FALSE)
|
||||
else if(effect <= 7)
|
||||
M.emote("laugh")
|
||||
return list(effect, update_flags)
|
||||
|
||||
//////////////////////////////
|
||||
// Synth-Drugs //
|
||||
@@ -580,28 +614,32 @@
|
||||
taste_message = "wiper fluid"
|
||||
|
||||
/datum/reagent/lube/ultra/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
var/high_message = pick("You feel your servos whir!", "You feel like you need to go faster.", "You feel like you were just overclocked!")
|
||||
if(prob(1))
|
||||
if(prob(1))
|
||||
high_message = "0100011101001111010101000101010001000001010001110100111101000110010000010101001101010100!"
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>[high_message]</span>")
|
||||
M.AdjustParalysis(-2)
|
||||
M.AdjustStunned(-2)
|
||||
M.AdjustWeakened(-2)
|
||||
M.adjustStaminaLoss(-2)
|
||||
update_flags |= M.AdjustParalysis(-2, FALSE)
|
||||
update_flags |= M.AdjustStunned(-2, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-2, FALSE)
|
||||
update_flags |= M.adjustStaminaLoss(-2, FALSE)
|
||||
M.status_flags |= GOTTAGOFAST_METH
|
||||
M.Jitter(3)
|
||||
M.adjustBrainLoss(0.5)
|
||||
update_flags |= M.adjustBrainLoss(0.5, FALSE)
|
||||
if(prob(5))
|
||||
M.emote(pick("twitch", "shiver"))
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/lube/ultra/on_mob_delete(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOFAST_METH
|
||||
..()
|
||||
|
||||
/datum/reagent/lube/ultra/overdose_process(mob/living/M, severity)
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(prob(20))
|
||||
M.emote("ping")
|
||||
if(prob(33))
|
||||
@@ -610,9 +648,9 @@
|
||||
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))
|
||||
..()
|
||||
update_flags |= M.adjustFireLoss(10, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(pick(0.5, 0.6, 0.7, 0.8, 0.9, 1), FALSE)
|
||||
return list(effect, update_flags)
|
||||
|
||||
//Surge: Krokodil
|
||||
/datum/reagent/surge
|
||||
@@ -629,19 +667,21 @@
|
||||
|
||||
|
||||
/datum/reagent/surge/on_mob_life(mob/living/M)
|
||||
M.Druggy(15)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.Druggy(15)
|
||||
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
|
||||
if(prob(1))
|
||||
if(prob(1))
|
||||
high_message = "01010100010100100100000101001110010100110100001101000101010011100100010001000101010011100100001101000101."
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='notice'>[high_message]</span>")
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/surge/overdose_process(mob/living/M, severity)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
//Hit them with the same effects as an electrode!
|
||||
M.Stun(5)
|
||||
M.Weaken(5)
|
||||
update_flags |= M.Stun(5, FALSE)
|
||||
update_flags |= M.Weaken(5, FALSE)
|
||||
M.Jitter(20)
|
||||
M.apply_effect(STUTTER, 5)
|
||||
if(prob(10))
|
||||
@@ -654,5 +694,6 @@
|
||||
B.pixel_x = rand(-20, 0)
|
||||
B.pixel_y = rand(-20, 0)
|
||||
B.icon = I
|
||||
M.adjustFireLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustBruteLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustFireLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(rand(1,5)*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return list(0, update_flags)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
|
||||
H.nutrition += nutriment_factor // For hunger and fatness
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/nutriment // Pure nutriment, universally digestable and thus slightly less effective
|
||||
name = "Nutriment"
|
||||
@@ -25,16 +25,17 @@
|
||||
color = "#664330" // rgb: 102, 67, 48
|
||||
|
||||
/datum/reagent/consumable/nutriment/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(!(M.mind in ticker.mode.vampires))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.can_eat(diet_flags)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients
|
||||
if(prob(50))
|
||||
M.adjustBruteLoss(-1)
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
if(!(NO_BLOOD in H.dna.species.species_traits))//do not restore blood on things with no blood by nature.
|
||||
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
|
||||
H.blood_volume += 0.4
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/nutriment/protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores
|
||||
name = "Protein"
|
||||
@@ -59,9 +60,10 @@
|
||||
taste_message = null
|
||||
|
||||
/datum/reagent/consumable/vitamin/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(50))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
if(M.satiety < 600)
|
||||
M.satiety += 30
|
||||
if(ishuman(M))
|
||||
@@ -69,7 +71,7 @@
|
||||
if(!(NO_BLOOD in H.dna.species.species_traits))//do not restore blood on things with no blood by nature.
|
||||
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
|
||||
H.blood_volume += 0.5
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/sugar
|
||||
name = "Sugar"
|
||||
@@ -82,16 +84,17 @@
|
||||
taste_message = "sweetness"
|
||||
|
||||
/datum/reagent/consumable/sugar/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustDrowsy(-5)
|
||||
if(current_cycle >= 90)
|
||||
M.AdjustJitter(2)
|
||||
if(prob(50))
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
update_flags |= M.AdjustParalysis(-1, FALSE)
|
||||
update_flags |= M.AdjustStunned(-1, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-1, FALSE)
|
||||
if(prob(4))
|
||||
M.reagents.add_reagent("epinephrine", 1.2)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/sugar/overdose_start(mob/living/M)
|
||||
to_chat(M, "<span class='danger'>You pass out from hyperglycemic shock!</span>")
|
||||
@@ -99,10 +102,12 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/consumable/sugar/overdose_process(mob/living/M, severity)
|
||||
M.Paralyse(3 * severity)
|
||||
M.Weaken(4 * severity)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.Paralyse(3 * severity, FALSE)
|
||||
update_flags |= M.Weaken(4 * severity, FALSE)
|
||||
if(prob(8))
|
||||
M.adjustToxLoss(severity)
|
||||
update_flags |= M.adjustToxLoss(severity, FALSE)
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/consumable/soysauce
|
||||
name = "Soysauce"
|
||||
@@ -150,7 +155,7 @@
|
||||
M.bodytemperature += 20 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
if(isslime(M))
|
||||
M.bodytemperature += rand(20,25)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/condensedcapsaicin
|
||||
name = "Condensed Capsaicin"
|
||||
@@ -163,7 +168,7 @@
|
||||
/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/M)
|
||||
if(prob(5))
|
||||
M.visible_message("<span class='warning'>[M] [pick("dry heaves!","coughs!","splutters!")]</span>")
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/condensedcapsaicin/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH)
|
||||
@@ -253,7 +258,7 @@
|
||||
M.emote("shiver")
|
||||
if(isslime(M))
|
||||
M.bodytemperature -= rand(20,25)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/frostoil/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5)
|
||||
@@ -270,9 +275,10 @@
|
||||
taste_message = "salt"
|
||||
|
||||
/datum/reagent/consumable/sodiumchloride/overdose_process(mob/living/M, severity)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(70))
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/blackpepper
|
||||
name = "Black Pepper"
|
||||
@@ -311,7 +317,7 @@
|
||||
/datum/reagent/consumable/hot_coco/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature + (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/sprinkles
|
||||
name = "Sprinkles"
|
||||
@@ -321,10 +327,11 @@
|
||||
taste_message = "sweetness"
|
||||
|
||||
/datum/reagent/consumable/sprinkles/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(ishuman(M) && M.job in list("Security Officer", "Security Pod Pilot", "Detective", "Warden", "Head of Security", "Brig Physician", "Internal Affairs Agent", "Magistrate"))
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/cornoil
|
||||
name = "Corn Oil"
|
||||
@@ -376,7 +383,7 @@
|
||||
/datum/reagent/consumable/hot_ramen/on_mob_life(mob/living/M)
|
||||
if(M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
|
||||
M.bodytemperature = min(310, M.bodytemperature + (10 * TEMPERATURE_DAMAGE_COEFFICIENT))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/hell_ramen
|
||||
name = "Hell Ramen"
|
||||
@@ -389,7 +396,7 @@
|
||||
|
||||
/datum/reagent/consumable/hell_ramen/on_mob_life(mob/living/M)
|
||||
M.bodytemperature += 10 * TEMPERATURE_DAMAGE_COEFFICIENT
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/flour
|
||||
name = "flour"
|
||||
@@ -461,7 +468,7 @@
|
||||
|
||||
/datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/M)
|
||||
M.reagents.add_reagent("sugar", 1.2)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/vhfcs
|
||||
name = "Very-high-fructose corn syrup"
|
||||
@@ -473,7 +480,7 @@
|
||||
|
||||
/datum/reagent/consumable/vhfcs/on_mob_life(mob/living/M)
|
||||
M.reagents.add_reagent("sugar", 2.4)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/honey
|
||||
name = "Honey"
|
||||
@@ -485,11 +492,12 @@
|
||||
taste_message = "sweetness"
|
||||
|
||||
/datum/reagent/consumable/honey/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.reagents.add_reagent("sugar", 3)
|
||||
if(prob(20))
|
||||
M.adjustBruteLoss(-3)
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(-3, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/onion
|
||||
name = "Concentrated Onion Juice"
|
||||
@@ -524,7 +532,7 @@
|
||||
|
||||
/datum/reagent/consumable/chocolate/on_mob_life(mob/living/M)
|
||||
M.reagents.add_reagent("sugar", 0.8)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/chocolate/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
@@ -539,13 +547,14 @@
|
||||
taste_message = "tea"
|
||||
|
||||
/datum/reagent/consumable/mugwort/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(ishuman(M) && M.mind)
|
||||
if(M.mind.special_role == SPECIAL_ROLE_WIZARD)
|
||||
M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/porktonium
|
||||
name = "Porktonium"
|
||||
@@ -563,6 +572,7 @@
|
||||
if(prob(8))
|
||||
M.reagents.add_reagent("radium", 15)
|
||||
M.reagents.add_reagent("cyanide", 10)
|
||||
return list(0, STATUS_UPDATE_NONE)
|
||||
|
||||
/datum/reagent/consumable/chicken_soup
|
||||
name = "Chicken soup"
|
||||
@@ -585,7 +595,7 @@
|
||||
/datum/reagent/consumable/cheese/on_mob_life(mob/living/M)
|
||||
if(prob(3))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,2))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/cheese/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
@@ -601,9 +611,11 @@
|
||||
taste_message = "cheese?"
|
||||
|
||||
/datum/reagent/consumable/fake_cheese/overdose_process(mob/living/M, severity)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
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))
|
||||
update_flags |= M.adjustToxLoss(rand(1,2), FALSE)
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/consumable/weird_cheese
|
||||
name = "Weird cheese"
|
||||
@@ -617,7 +629,7 @@
|
||||
/datum/reagent/consumable/weird_cheese/on_mob_life(mob/living/M)
|
||||
if(prob(5))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,3))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/weird_cheese/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
@@ -634,7 +646,7 @@
|
||||
/datum/reagent/consumable/beans/on_mob_life(mob/living/M)
|
||||
if(prob(10))
|
||||
M.emote("fart")
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/bread
|
||||
name = "Bread"
|
||||
@@ -657,7 +669,7 @@
|
||||
M.reagents.add_reagent("cholesterol", rand(1,3))
|
||||
if(prob(8))
|
||||
M.reagents.add_reagent("porktonium", 5)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/hydrogenated_soybeanoil
|
||||
name = "Partially hydrogenated space-soybean oil"
|
||||
@@ -678,19 +690,21 @@
|
||||
metabolization_rate = 0.4
|
||||
else
|
||||
metabolization_rate = 0.2
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/hydrogenated_soybeanoil/overdose_process(mob/living/M, severity)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(33))
|
||||
to_chat(M, "<span class='warning'>You feel horribly weak.</span>")
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='warning'>You cannot breathe!</span>")
|
||||
M.adjustOxyLoss(5)
|
||||
update_flags |= M.adjustOxyLoss(5, FALSE)
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='warning'>You feel a sharp pain in your chest!</span>")
|
||||
M.adjustOxyLoss(25)
|
||||
M.Stun(5)
|
||||
M.Paralyse(10)
|
||||
update_flags |= M.adjustOxyLoss(25, FALSE)
|
||||
update_flags |= M.Stun(5, FALSE)
|
||||
update_flags |= M.Paralyse(10, FALSE)
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/consumable/meatslurry
|
||||
name = "Meat Slurry"
|
||||
@@ -703,7 +717,7 @@
|
||||
/datum/reagent/consumable/meatslurry/on_mob_life(mob/living/M)
|
||||
if(prob(4))
|
||||
M.reagents.add_reagent("cholesterol", rand(1,3))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/meatslurry/reaction_turf(turf/T, volume)
|
||||
if(prob(10) && volume >= 5 && !isspaceturf(T))
|
||||
@@ -742,7 +756,7 @@
|
||||
else if(prob(6))
|
||||
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/reagent/consumable/pepperoni
|
||||
name = "Pepperoni"
|
||||
@@ -786,8 +800,9 @@
|
||||
|
||||
/datum/reagent/questionmark/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == INGEST)
|
||||
M.Stun(2)
|
||||
M.Weaken(2)
|
||||
M.Stun(2, FALSE)
|
||||
M.Weaken(2, FALSE)
|
||||
M.update_canmove()
|
||||
to_chat(M, "<span class='danger'>Ugh! Eating that was a terrible idea!</span>")
|
||||
M.ForceContractDisease(new /datum/disease/food_poisoning(0))
|
||||
|
||||
@@ -801,13 +816,14 @@
|
||||
taste_message = "excellent cuisine"
|
||||
|
||||
/datum/reagent/msg/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(5))
|
||||
if(prob(10))
|
||||
M.adjustToxLoss(rand(2.4))
|
||||
update_flags |= M.adjustToxLoss(rand(2.4), FALSE)
|
||||
if(prob(7))
|
||||
to_chat(M, "<span class='warning'>A horrible migraine overpowers you.</span>")
|
||||
M.Stun(rand(2,5))
|
||||
..()
|
||||
update_flags |= M.Stun(rand(2,5), FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/cholesterol
|
||||
name = "cholesterol"
|
||||
@@ -818,22 +834,23 @@
|
||||
taste_message = "heart attack"
|
||||
|
||||
/datum/reagent/cholesterol/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
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))
|
||||
update_flags |= M.adjustToxLoss(rand(1,2), FALSE)
|
||||
else if(volume >= 45 && prob(volume*0.08))
|
||||
to_chat(M, "<span class='warning'>Your chest [pick("hurts","stings","aches","burns")]!</span>")
|
||||
M.adjustToxLoss(rand(2,4))
|
||||
M.Stun(1)
|
||||
update_flags |= M.adjustToxLoss(rand(2,4), FALSE)
|
||||
update_flags |= M.Stun(1, FALSE)
|
||||
else if(volume >= 150 && prob(volume*0.01))
|
||||
to_chat(M, "<span class='warning'>Your chest is burning with pain!</span>")
|
||||
M.Stun(1)
|
||||
M.Weaken(1)
|
||||
update_flags |= M.Stun(1, FALSE)
|
||||
update_flags |= M.Weaken(1, FALSE)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!H.undergoing_cardiac_arrest())
|
||||
H.set_heartattack(TRUE)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/fungus
|
||||
name = "Space fungus"
|
||||
@@ -868,7 +885,7 @@
|
||||
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_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == INGEST)
|
||||
@@ -879,12 +896,12 @@
|
||||
if(volume >= 10 && !isspaceturf(T))
|
||||
new /obj/item/reagent_containers/food/snacks/ectoplasm(T)
|
||||
|
||||
///Vomit///
|
||||
|
||||
/datum/reagent/consumable/bread/reaction_turf(turf/T, volume)
|
||||
if(volume >= 5 && !isspaceturf(T))
|
||||
new /obj/item/reagent_containers/food/snacks/breadslice(T)
|
||||
|
||||
///Vomit///
|
||||
|
||||
/datum/reagent/vomit
|
||||
name = "Vomit"
|
||||
id = "vomit"
|
||||
@@ -921,15 +938,16 @@
|
||||
taste_message = "mold"
|
||||
|
||||
/datum/reagent/consumable/entpoly/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(current_cycle >= 10)
|
||||
M.Paralyse(2)
|
||||
update_flags |= M.Paralyse(2, FALSE)
|
||||
if(prob(20))
|
||||
M.LoseBreath(4)
|
||||
M.adjustBrainLoss(2 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(3 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustStaminaLoss(10 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.EyeBlurry(5)
|
||||
..()
|
||||
update_flags |= M.LoseBreath(4, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(2 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustToxLoss(3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustStaminaLoss(10 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.EyeBlurry(5, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/tinlux
|
||||
name = "Tinea Luxor"
|
||||
@@ -943,7 +961,7 @@
|
||||
if(!light_activated)
|
||||
M.set_light(2)
|
||||
light_activated = 1
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/consumable/tinlux/on_mob_delete(mob/living/M)
|
||||
M.set_light(0)
|
||||
@@ -957,7 +975,8 @@
|
||||
taste_message = "sweetness"
|
||||
|
||||
/datum/reagent/consumable/vitfro/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(80))
|
||||
M.adjustBruteLoss(-1 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-1 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.traumatic_shock < 100)
|
||||
H.shock_stage = 0
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/medicine/sterilizine
|
||||
name = "Sterilizine"
|
||||
@@ -49,17 +49,20 @@
|
||||
overdose_threshold = 40
|
||||
|
||||
/datum/reagent/medicine/synaptizine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustDrowsy(-5)
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
M.SetSleeping(0)
|
||||
update_flags |= M.AdjustParalysis(-1, FALSE)
|
||||
update_flags |= M.AdjustStunned(-1, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-1, FALSE)
|
||||
update_flags |= M.SetSleeping(0, FALSE)
|
||||
if(prob(50))
|
||||
M.adjustBrainLoss(-1.0)
|
||||
..()
|
||||
update_flags |= M.adjustBrainLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/synaptizine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1)
|
||||
if(effect <= 1)
|
||||
M.visible_message("<span class='warning'>[M] suddenly and violently vomits!</span>")
|
||||
@@ -67,7 +70,7 @@
|
||||
else if(effect <= 3)
|
||||
M.emote(pick("groan","moan"))
|
||||
if(effect <= 8)
|
||||
M.adjustToxLoss(1)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
else if(severity == 2)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] suddenly and violently vomits!</span>")
|
||||
@@ -75,9 +78,10 @@
|
||||
else if(effect <= 5)
|
||||
M.visible_message("<span class='warning'>[M] staggers and drools, [M.p_their()] eyes bloodshot!</span>")
|
||||
M.Dizzy(8)
|
||||
M.Weaken(4)
|
||||
update_flags |= M.Weaken(4, FALSE)
|
||||
if(effect <= 15)
|
||||
M.adjustToxLoss(1)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return list(effect, update_flags)
|
||||
|
||||
/datum/reagent/medicine/mitocholide
|
||||
name = "Mitocholide"
|
||||
@@ -93,7 +97,7 @@
|
||||
//Mitocholide is hard enough to get, it's probably fair to make this all internal organs
|
||||
for(var/obj/item/organ/internal/I in H.internal_organs)
|
||||
I.heal_internal_damage(0.4)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/medicine/mitocholide/reaction_obj(obj/O, volume)
|
||||
if(istype(O, /obj/item/organ))
|
||||
@@ -110,18 +114,19 @@
|
||||
heart_rate_decrease = 1
|
||||
|
||||
/datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(M.bodytemperature < 265)
|
||||
M.adjustCloneLoss(-4)
|
||||
M.adjustOxyLoss(-10)
|
||||
M.adjustToxLoss(-3)
|
||||
M.adjustBruteLoss(-12)
|
||||
M.adjustFireLoss(-12)
|
||||
update_flags |= M.adjustCloneLoss(-4, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(-10, FALSE)
|
||||
update_flags |= M.adjustToxLoss(-3, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-12, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-12, FALSE)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head = H.get_organ("head")
|
||||
if(head)
|
||||
head.disfigured = FALSE
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/rezadone
|
||||
name = "Rezadone"
|
||||
@@ -132,21 +137,24 @@
|
||||
overdose_threshold = 30
|
||||
|
||||
/datum/reagent/medicine/rezadone/on_mob_life(mob/living/M)
|
||||
M.setCloneLoss(0) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that.
|
||||
M.adjustCloneLoss(-1) //What? We just set cloneloss to 0. Why? Simple; this is so external organs properly unmutate.
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.setCloneLoss(0, FALSE) //Rezadone is almost never used in favor of cryoxadone. Hopefully this will change that.
|
||||
update_flags |= M.adjustCloneLoss(-1, FALSE) //What? We just set cloneloss to 0. Why? Simple; this is so external organs properly unmutate. // why don't you fix the code instead
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/head/head = H.get_organ("head")
|
||||
if(head)
|
||||
head.disfigured = FALSE
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/rezadone/overdose_process(mob/living/M, severity)
|
||||
M.adjustToxLoss(1)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
M.Dizzy(5)
|
||||
M.Jitter(5)
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/medicine/spaceacillin
|
||||
name = "Spaceacillin"
|
||||
@@ -165,8 +173,9 @@
|
||||
metabolization_rate = 3
|
||||
|
||||
/datum/reagent/medicine/silver_sulfadiazine/on_mob_life(mob/living/M)
|
||||
M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/silver_sulfadiazine/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
|
||||
if(iscarbon(M))
|
||||
@@ -189,8 +198,9 @@
|
||||
metabolization_rate = 3
|
||||
|
||||
/datum/reagent/medicine/styptic_powder/on_mob_life(mob/living/M)
|
||||
M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/styptic_powder/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1)
|
||||
if(iscarbon(M))
|
||||
@@ -216,15 +226,16 @@
|
||||
taste_message = "salt"
|
||||
|
||||
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(33))
|
||||
M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(ishuman(M) && prob(33))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!(NO_BLOOD in H.dna.species.species_traits))//do not restore blood on things with no blood by nature.
|
||||
if(H.blood_volume < BLOOD_VOLUME_NORMAL)
|
||||
H.blood_volume += 1
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/synthflesh
|
||||
name = "Synthflesh"
|
||||
@@ -255,12 +266,13 @@
|
||||
color = "#000000"
|
||||
|
||||
/datum/reagent/medicine/charcoal/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(-1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(prob(50))
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,1)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/omnizine
|
||||
name = "Omnizine"
|
||||
@@ -273,30 +285,33 @@
|
||||
addiction_chance = 5
|
||||
|
||||
/datum/reagent/medicine/omnizine/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(prob(50))
|
||||
M.AdjustLoseBreath(-1)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/omnizine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1) //lesser
|
||||
M.stuttering += 1
|
||||
M.AdjustStuttering(1)
|
||||
if(effect <= 1)
|
||||
M.visible_message("<span class='warning'>[M] suddenly cluches [M.p_their()] gut!</span>")
|
||||
M.emote("scream")
|
||||
M.Stun(4)
|
||||
M.Weaken(4)
|
||||
update_flags |= M.Stun(4, FALSE)
|
||||
update_flags |= M.Weaken(4, FALSE)
|
||||
else if(effect <= 3)
|
||||
M.visible_message("<span class='warning'>[M] completely spaces out for a moment.</span>")
|
||||
M.AdjustConfused(15)
|
||||
else if(effect <= 5)
|
||||
M.visible_message("<span class='warning'>[M] stumbles and staggers.</span>")
|
||||
M.Dizzy(5)
|
||||
M.Weaken(3)
|
||||
update_flags |= M.Weaken(3, FALSE)
|
||||
else if(effect <= 7)
|
||||
M.visible_message("<span class='warning'>[M] shakes uncontrollably.</span>")
|
||||
M.Jitter(30)
|
||||
@@ -304,16 +319,17 @@
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] suddenly cluches [M.p_their()] gut!</span>")
|
||||
M.emote("scream")
|
||||
M.Stun(7)
|
||||
M.Weaken(7)
|
||||
update_flags |= M.Stun(7, FALSE)
|
||||
update_flags |= M.Weaken(7, FALSE)
|
||||
else if(effect <= 5)
|
||||
M.visible_message("<span class='warning'>[M] jerks bolt upright, then collapses!</span>")
|
||||
M.Paralyse(5)
|
||||
M.Weaken(4)
|
||||
update_flags |= M.Paralyse(5, FALSE)
|
||||
update_flags |= M.Weaken(4, FALSE)
|
||||
else if(effect <= 8)
|
||||
M.visible_message("<span class='warning'>[M] stumbles and staggers.</span>")
|
||||
M.Dizzy(5)
|
||||
M.Weaken(3)
|
||||
update_flags |= M.Weaken(3, FALSE)
|
||||
return list(effect, update_flags)
|
||||
|
||||
/datum/reagent/medicine/calomel
|
||||
name = "Calomel"
|
||||
@@ -324,14 +340,15 @@
|
||||
metabolization_rate = 0.8
|
||||
|
||||
/datum/reagent/medicine/calomel/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,5)
|
||||
if(M.health > 20)
|
||||
M.adjustToxLoss(5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustToxLoss(5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(prob(6))
|
||||
M.fakevomit()
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/potass_iodide
|
||||
name = "Potassium Iodide"
|
||||
@@ -343,7 +360,7 @@
|
||||
/datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/M)
|
||||
if(prob(80))
|
||||
M.radiation = max(0, M.radiation-1)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/medicine/pen_acid
|
||||
name = "Pentetic Acid"
|
||||
@@ -353,16 +370,17 @@
|
||||
color = "#C8A5DC"
|
||||
|
||||
/datum/reagent/medicine/pen_acid/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
M.reagents.remove_reagent(R.id,4)
|
||||
M.radiation = max(0, M.radiation-7)
|
||||
if(prob(75))
|
||||
M.adjustToxLoss(-4*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustToxLoss(-4*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(prob(33))
|
||||
M.adjustBruteLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/sal_acid
|
||||
name = "Salicylic Acid"
|
||||
@@ -375,13 +393,14 @@
|
||||
overdose_threshold = 25
|
||||
|
||||
/datum/reagent/medicine/sal_acid/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(55))
|
||||
M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(H.traumatic_shock < 100)
|
||||
H.shock_stage = 0
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/salbutamol
|
||||
name = "Salbutamol"
|
||||
@@ -392,9 +411,10 @@
|
||||
metabolization_rate = 0.2
|
||||
|
||||
/datum/reagent/medicine/salbutamol/on_mob_life(mob/living/M)
|
||||
M.adjustOxyLoss(-6*REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustOxyLoss(-6*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
M.AdjustLoseBreath(-4)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/perfluorodecalin
|
||||
name = "Perfluorodecalin"
|
||||
@@ -406,14 +426,15 @@
|
||||
addiction_chance = 20
|
||||
|
||||
/datum/reagent/medicine/perfluorodecalin/on_mob_life(mob/living/carbon/human/M)
|
||||
M.adjustOxyLoss(-25*REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustOxyLoss(-25*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(volume >= 4)
|
||||
M.LoseBreath(6)
|
||||
M.Silence(6)
|
||||
if(prob(33))
|
||||
M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/ephedrine
|
||||
name = "Ephedrine"
|
||||
@@ -426,22 +447,25 @@
|
||||
addiction_chance = 25
|
||||
|
||||
/datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustDrowsy(-5)
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.AdjustParalysis(-1, FALSE)
|
||||
update_flags |= M.AdjustStunned(-1, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-1, FALSE)
|
||||
update_flags |= M.adjustStaminaLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
M.AdjustLoseBreath(-1, bound_lower = 5)
|
||||
if(M.oxyloss > 75)
|
||||
M.adjustOxyLoss(-1)
|
||||
update_flags |= M.adjustOxyLoss(-1, FALSE)
|
||||
if(M.health < 0 || M.health > 0 && prob(33))
|
||||
M.adjustToxLoss(-1)
|
||||
M.adjustBruteLoss(-1)
|
||||
M.adjustFireLoss(-1)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(-1, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/ephedrine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1)
|
||||
if(effect <= 1)
|
||||
M.visible_message("<span class='warning'>[M] suddenly and violently vomits!</span>")
|
||||
@@ -457,9 +481,10 @@
|
||||
else if(effect <= 5)
|
||||
M.visible_message("<span class='warning'>[M.name] staggers and drools, [M.p_their()] eyes bloodshot!</span>")
|
||||
M.Dizzy(2)
|
||||
M.Weaken(3)
|
||||
update_flags |= M.Weaken(3, FALSE)
|
||||
if(effect <= 15)
|
||||
M.emote("collapse")
|
||||
return list(effect, update_flags)
|
||||
|
||||
/datum/reagent/medicine/diphenhydramine
|
||||
name = "Diphenhydramine"
|
||||
@@ -476,10 +501,10 @@
|
||||
if(prob(7))
|
||||
M.emote("yawn")
|
||||
if(prob(3))
|
||||
M.Stun(2)
|
||||
|
||||
M.AdjustDrowsy(1)
|
||||
M.visible_message("<span class='notice'>[M] looks a bit dazed.</span>")
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/medicine/morphine
|
||||
name = "Morphine"
|
||||
@@ -516,19 +541,20 @@
|
||||
color = "#C8A5DC"
|
||||
|
||||
/datum/reagent/medicine/oculine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(80))
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
if(istype(E))
|
||||
E.heal_internal_damage(1)
|
||||
M.AdjustEyeBlurry(-1)
|
||||
M.AdjustEarDamage(-1)
|
||||
update_flags |= M.AdjustEyeBlurry(-1, FALSE)
|
||||
update_flags |= M.AdjustEarDamage(-1, FALSE)
|
||||
if(prob(50))
|
||||
M.CureNearsighted()
|
||||
update_flags |= M.CureNearsighted(FALSE)
|
||||
if(prob(30))
|
||||
M.CureBlind()
|
||||
M.SetEyeBlind(0)
|
||||
update_flags |= M.CureBlind(FALSE)
|
||||
update_flags |= M.SetEyeBlind(0, FALSE)
|
||||
if(M.ear_damage <= 25)
|
||||
if(prob(30))
|
||||
M.SetEarDeaf(0)
|
||||
@@ -544,21 +570,22 @@
|
||||
overdose_threshold = 25
|
||||
|
||||
/datum/reagent/medicine/atropine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustDizzy(1)
|
||||
M.Confused(5)
|
||||
if(prob(4))
|
||||
M.emote("collapse")
|
||||
M.AdjustLoseBreath(-5, bound_lower = 5)
|
||||
if(M.oxyloss > 65)
|
||||
M.adjustOxyLoss(-10*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustOxyLoss(-10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(M.health < -25)
|
||||
M.adjustToxLoss(-1)
|
||||
M.adjustBruteLoss(-3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustToxLoss(-1, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
else if(M.health > -60)
|
||||
M.adjustToxLoss(1)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
M.reagents.remove_reagent("sarin", 20)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/epinephrine
|
||||
name = "Epinephrine"
|
||||
@@ -570,29 +597,32 @@
|
||||
overdose_threshold = 20
|
||||
|
||||
/datum/reagent/medicine/epinephrine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustDrowsy(-5)
|
||||
if(prob(20))
|
||||
M.AdjustParalysis(-1)
|
||||
update_flags |= M.AdjustParalysis(-1, FALSE)
|
||||
if(prob(20))
|
||||
M.AdjustStunned(-1)
|
||||
update_flags |= M.AdjustStunned(-1, FALSE)
|
||||
if(prob(20))
|
||||
M.AdjustWeakened(-1)
|
||||
update_flags |= M.AdjustWeakened(-1, FALSE)
|
||||
if(prob(5))
|
||||
M.SetSleeping(0)
|
||||
update_flags |= M.SetSleeping(0, FALSE)
|
||||
if(prob(5))
|
||||
M.adjustBrainLoss(-1)
|
||||
update_flags |= M.adjustBrainLoss(-1, FALSE)
|
||||
holder.remove_reagent("histamine", 15)
|
||||
M.AdjustLoseBreath(-1, bound_lower = 3)
|
||||
if(M.oxyloss > 35)
|
||||
M.adjustOxyLoss(-10*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustOxyLoss(-10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(M.health < -10 && M.health > -65)
|
||||
M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/epinephrine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1)
|
||||
if(effect <= 1)
|
||||
M.visible_message("<span class='warning'>[M] suddenly and violently vomits!</span>")
|
||||
@@ -608,7 +638,7 @@
|
||||
else if(effect <= 5)
|
||||
M.visible_message("<span class='warning'>[M] staggers and drools, [M.p_their()] eyes bloodshot!</span>")
|
||||
M.Dizzy(2)
|
||||
M.Weaken(3)
|
||||
update_flags |= M.Weaken(3, FALSE)
|
||||
if(effect <= 15)
|
||||
M.emote("collapse")
|
||||
|
||||
@@ -621,10 +651,11 @@
|
||||
metabolization_rate = 0.2
|
||||
|
||||
/datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(10))
|
||||
M.adjustBruteLoss(2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/strange_reagent/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(volume < 1)
|
||||
@@ -685,8 +716,9 @@
|
||||
color = "#D1D1F1"
|
||||
|
||||
/datum/reagent/medicine/mannitol/on_mob_life(mob/living/M)
|
||||
M.adjustBrainLoss(-3)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustBrainLoss(-3, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/mutadone
|
||||
name = "Mutadone"
|
||||
@@ -722,12 +754,13 @@
|
||||
color = "#009CA8"
|
||||
|
||||
/datum/reagent/medicine/antihol/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.SetSlur(0)
|
||||
M.AdjustDrunk(-4)
|
||||
M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 8, 0, 1)
|
||||
if(M.toxloss <= 25)
|
||||
M.adjustToxLoss(-2.0)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(-2.0, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/stimulants
|
||||
name = "Stimulants"
|
||||
@@ -737,26 +770,28 @@
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/medicine/stimulants/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(volume > 5)
|
||||
M.adjustOxyLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustBruteLoss(-10*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-10*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.setStaminaLoss(0)
|
||||
update_flags |= M.adjustOxyLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustToxLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-10*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.setStaminaLoss(0, FALSE)
|
||||
M.SetSlowed(0)
|
||||
M.AdjustDizzy(-10)
|
||||
M.AdjustDrowsy(-10)
|
||||
M.SetConfused(0)
|
||||
M.SetSleeping(0)
|
||||
update_flags |= M.SetSleeping(0, FALSE)
|
||||
var/status = CANSTUN | CANWEAKEN | CANPARALYSE
|
||||
M.status_flags &= ~status
|
||||
else
|
||||
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBruteLoss(1)
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(1, FALSE)
|
||||
if(prob(10))
|
||||
M.Stun(3)
|
||||
..()
|
||||
update_flags |= M.Stun(3, FALSE)
|
||||
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/stimulants/on_mob_delete(mob/living/M)
|
||||
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
|
||||
@@ -772,27 +807,30 @@
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.status_flags |= GOTTAGOFAST
|
||||
if(M.health < 50 && M.health > 0)
|
||||
M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.AdjustParalysis(-3)
|
||||
M.AdjustStunned(-3)
|
||||
M.AdjustWeakened(-3)
|
||||
M.adjustStaminaLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.AdjustParalysis(-3, FALSE)
|
||||
update_flags |= M.AdjustStunned(-3, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-3, FALSE)
|
||||
update_flags |= M.adjustStaminaLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent/on_mob_delete(mob/living/M)
|
||||
M.status_flags &= ~GOTTAGOFAST
|
||||
..()
|
||||
|
||||
/datum/reagent/medicine/stimulative_agent/overdose_process(mob/living/M, severity)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(33))
|
||||
M.adjustStaminaLoss(2.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustStaminaLoss(2.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
M.AdjustLoseBreath(1)
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/medicine/insulin
|
||||
name = "Insulin"
|
||||
@@ -835,6 +873,7 @@
|
||||
color = "#FFDCFF"
|
||||
|
||||
/datum/reagent/medicine/haloperidol/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.reagents.remove_reagent("crank", 5)
|
||||
M.reagents.remove_reagent("methamphetamine", 5)
|
||||
M.reagents.remove_reagent("space_drugs", 5)
|
||||
@@ -845,7 +884,7 @@
|
||||
M.reagents.remove_reagent("bath_salts", 5)
|
||||
M.reagents.remove_reagent("lsd", 5)
|
||||
M.reagents.remove_reagent("thc", 5)
|
||||
M.AdjustDruggy(-5)
|
||||
update_flags |= M.AdjustDruggy(-5, FALSE)
|
||||
M.AdjustHallucinate(-5)
|
||||
M.AdjustJitter(-5)
|
||||
if(prob(50))
|
||||
@@ -853,8 +892,8 @@
|
||||
if(prob(10))
|
||||
M.emote("drool")
|
||||
if(prob(20))
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/ether
|
||||
name = "Ether"
|
||||
@@ -886,13 +925,14 @@
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M)
|
||||
M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER) //A ton of healing - this is a 50 telecrystal investment.
|
||||
M.adjustFireLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustOxyLoss(-15*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustBrainLoss(-15*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustCloneLoss(-3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE) //A ton of healing - this is a 50 telecrystal investment.
|
||||
update_flags |= M.adjustFireLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(-15*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustToxLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(-15*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustCloneLoss(-3*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/omnizine_diluted
|
||||
name = "Diluted Omnizine"
|
||||
@@ -904,17 +944,20 @@
|
||||
metabolization_rate = 0.1
|
||||
|
||||
/datum/reagent/medicine/omnizine_diluted/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustOxyLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/omnizine_diluted/overdose_process(mob/living/M, severity)
|
||||
M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustOxyLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustBruteLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return list(0, update_flags)
|
||||
|
||||
//virus-specific symptom reagents
|
||||
|
||||
@@ -925,6 +968,7 @@
|
||||
color = "#EC536D" // rgb: 236, 83, 109
|
||||
|
||||
/datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustDrowsy(-5)
|
||||
if(holder.has_reagent("lsd"))
|
||||
holder.remove_reagent("lsd", 5)
|
||||
@@ -932,8 +976,8 @@
|
||||
holder.remove_reagent("histamine", 5)
|
||||
M.AdjustHallucinate(-10)
|
||||
if(prob(30))
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
//////////////////////////////
|
||||
// Synth-Meds //
|
||||
@@ -949,10 +993,11 @@
|
||||
process_flags = SYNTHETIC
|
||||
|
||||
/datum/reagent/medicine/degreaser/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(50)) //Same effects as coffee, to help purge ill effects like paralysis
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-1)
|
||||
M.AdjustWeakened(-1)
|
||||
update_flags |= M.AdjustParalysis(-1, FALSE)
|
||||
update_flags |= M.AdjustStunned(-1, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-1, FALSE)
|
||||
M.AdjustConfused(-5)
|
||||
for(var/datum/reagent/R in M.reagents.reagent_list)
|
||||
if(R != src)
|
||||
@@ -961,7 +1006,7 @@
|
||||
M.reagents.remove_reagent(R.id, 5)
|
||||
else
|
||||
M.reagents.remove_reagent(R.id,1)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/degreaser/reaction_turf(turf/simulated/T, volume)
|
||||
if(volume >= 1 && istype(T))
|
||||
@@ -978,8 +1023,9 @@
|
||||
process_flags = SYNTHETIC
|
||||
|
||||
/datum/reagent/medicine/liquid_solder/on_mob_life(mob/living/M)
|
||||
M.adjustBrainLoss(-3)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustBrainLoss(-3, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
|
||||
|
||||
@@ -993,11 +1039,14 @@
|
||||
overdose_threshold = 30
|
||||
|
||||
/datum/reagent/medicine/bicaridine/on_mob_life(mob/living/M)
|
||||
M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustBruteLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/bicaridine/overdose_process(mob/living/M)
|
||||
M.adjustBruteLoss(4*REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustBruteLoss(4*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/medicine/kelotane
|
||||
name = "Kelotane"
|
||||
@@ -1008,11 +1057,14 @@
|
||||
overdose_threshold = 30
|
||||
|
||||
/datum/reagent/medicine/kelotane/on_mob_life(mob/living/M)
|
||||
M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustFireLoss(-2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/kelotane/overdose_process(mob/living/M)
|
||||
M.adjustFireLoss(4*REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustFireLoss(4*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
|
||||
/datum/reagent/medicine/earthsblood //Created by ambrosia gaia plants
|
||||
@@ -1023,20 +1075,23 @@
|
||||
overdose_threshold = 25
|
||||
|
||||
/datum/reagent/medicine/earthsblood/on_mob_life(mob/living/M)
|
||||
M.adjustBruteLoss(-3 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(-3 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustOxyLoss(-15 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(-3 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustBrainLoss(2 * REAGENTS_EFFECT_MULTIPLIER) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that!
|
||||
M.adjustCloneLoss(-1 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustStaminaLoss(-30 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustBruteLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(-15 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustToxLoss(-3 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(2 * REAGENTS_EFFECT_MULTIPLIER, FALSE) //This does, after all, come from ambrosia, and the most powerful ambrosia in existence, at that!
|
||||
update_flags |= M.adjustCloneLoss(-1 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustStaminaLoss(-30 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
M.SetJitter(min(max(0, M.jitteriness + 3), 30))
|
||||
M.SetDruggy(min(max(0, M.druggy + 10), 15)) //See above
|
||||
..()
|
||||
update_flags |= M.SetDruggy(min(max(0, M.druggy + 10), 15), FALSE) //See above
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/medicine/earthsblood/overdose_process(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.SetHallucinate(min(max(0, M.hallucination + 10), 50))
|
||||
M.adjustToxLoss(5 * REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustToxLoss(5 * REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/medicine/corazone
|
||||
name = "Corazone"
|
||||
@@ -1055,6 +1110,7 @@
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/medicine/nanocalcium/on_mob_life(mob/living/carbon/human/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
switch(current_cycle)
|
||||
if(1 to 19)
|
||||
M.AdjustJitter(4)
|
||||
@@ -1063,15 +1119,15 @@
|
||||
if(20 to 43)
|
||||
//If they have stimulants or stimulant drugs then just apply toxin damage instead.
|
||||
if(M.reagents.has_reagent("methamphetamine") || M.reagents.has_reagent("crank") || M.reagents.has_reagent("bath_salts") || M.reagents.has_reagent("stimulative_agent") || M.reagents.has_reagent("stimulants"))
|
||||
M.adjustToxLoss(10)
|
||||
update_flags |= M.adjustToxLoss(10, FALSE)
|
||||
else //apply debilitating effects
|
||||
if(prob(75))
|
||||
M.AdjustConfused(5)
|
||||
else
|
||||
M.AdjustWeakened(5)
|
||||
update_flags |= M.AdjustWeakened(5, FALSE)
|
||||
if(44)
|
||||
to_chat(M, "<span class='warning'>Your body goes rigid, you cannot move at all!</span>")
|
||||
M.AdjustWeakened(15)
|
||||
update_flags |= M.AdjustWeakened(15, FALSE)
|
||||
if(45 to INFINITY) // Start fixing bones | If they have stimulants or stimulant drugs in their system then the nanites won't work.
|
||||
if(M.reagents.has_reagent("methamphetamine") || M.reagents.has_reagent("crank") || M.reagents.has_reagent("bath_salts") || M.reagents.has_reagent("stimulative_agent") || M.reagents.has_reagent("stimulants"))
|
||||
return ..()
|
||||
@@ -1082,4 +1138,4 @@
|
||||
to_chat(M, "<span class='notice'>You feel a burning sensation in your [E.name] as it straightens involuntarily!</span>")
|
||||
E.rejuvenate() //Repair it completely.
|
||||
break
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
@@ -250,8 +250,9 @@
|
||||
taste_message = null
|
||||
|
||||
/datum/reagent/acetone/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1.5, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/saltpetre
|
||||
name = "Saltpetre"
|
||||
@@ -362,20 +363,21 @@
|
||||
taste_message = "mexican cuisine"
|
||||
|
||||
/datum/reagent/fartonium/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(66))
|
||||
M.emote("fart")
|
||||
|
||||
if(holder.has_reagent("simethicone"))
|
||||
if(prob(25))
|
||||
to_chat(M, "<span class='danger'>[pick("Oh god, something doesn't feel right!", "IT HURTS!", "FUCK!", "Something is seriously wrong!", "THE PAIN!", "You feel like you're gonna die!")]</span>")
|
||||
M.adjustBruteLoss(1)
|
||||
update_flags |= M.adjustBruteLoss(1, FALSE)
|
||||
if(prob(10))
|
||||
M.custom_emote(1,"strains, but nothing happens.")
|
||||
M.adjustBruteLoss(2)
|
||||
update_flags |= M.adjustBruteLoss(2, FALSE)
|
||||
if(prob(5))
|
||||
M.emote("scream")
|
||||
M.adjustBruteLoss(4)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(4, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/hugs
|
||||
name = "Pure hugs"
|
||||
@@ -412,7 +414,7 @@
|
||||
M.visible_message("<span class='notice'>[M] gives [C] a [pick("hug","warm embrace")].</span>")
|
||||
playsound(get_turf(M), 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
break
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/love/on_mob_delete(mob/living/M)
|
||||
M.can_change_intents = 1
|
||||
@@ -432,7 +434,7 @@
|
||||
/datum/reagent/royal_bee_jelly/on_mob_life(mob/living/M)
|
||||
if(prob(2))
|
||||
M.say(pick("Bzzz...","BZZ BZZ","Bzzzzzzzzzzz..."))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/growthserum
|
||||
name = "Growth serum"
|
||||
@@ -459,7 +461,7 @@
|
||||
H.resize = newsize/current_size
|
||||
current_size = newsize
|
||||
H.update_transform()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/growthserum/on_mob_delete(mob/living/M)
|
||||
M.resize = 1/current_size
|
||||
@@ -493,9 +495,10 @@
|
||||
taste_message = "puke"
|
||||
|
||||
/datum/reagent/plantnutriment/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(tox_prob))
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/plantnutriment/eznutriment
|
||||
name = "E-Z-Nutrient"
|
||||
|
||||
@@ -43,23 +43,24 @@
|
||||
taste_message = "a permaban"
|
||||
|
||||
/datum/reagent/consumable/drink/berry_banned/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(10))
|
||||
var/heal_type = rand(0, 5) //still prefer the string version
|
||||
switch(heal_type)
|
||||
if(0)
|
||||
M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustBruteLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(1)
|
||||
M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustFireLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(2)
|
||||
M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustToxLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(3)
|
||||
M.adjustOxyLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustOxyLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(4)
|
||||
M.adjustCloneLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustCloneLoss(-0.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(5)
|
||||
M.adjustBrainLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustBrainLoss(-1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
to_chat(M, "<span class='notice'>You feel slightly rejuvinated!</span>")
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
//Berry Banned 2: This one is tasty and toxic. Deals toxin damage and MAYBE plays the "BWOINK!" sound if it kills someone?
|
||||
/datum/reagent/consumable/drink/berry_banned2
|
||||
@@ -71,11 +72,12 @@
|
||||
taste_message = "a permaban"
|
||||
|
||||
/datum/reagent/consumable/drink/berry_banned2/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(50))
|
||||
M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER) //double strength of poison berry juice alone, because it's concentrated (this is equal to the damage of normal toxin, less often)
|
||||
update_flags |= M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE) //double strength of poison berry juice alone, because it's concentrated (this is equal to the damage of normal toxin, less often)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='notice'>You feel slightly rejuvinated!</span>") //meta this!
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/consumable/drink/berry_banned2/on_mob_death(mob/living/M)
|
||||
M << sound('sound/effects/adminhelp.ogg',0,1,0,25)
|
||||
@@ -103,7 +105,7 @@
|
||||
"THIS DOOR WAS SHOCKED WHEN I GOT HERE",
|
||||
"ANIMALS ARE NOT CREW")
|
||||
M.say(pick(tider_talk))
|
||||
..()
|
||||
return ..()
|
||||
|
||||
//Grape Granade: causes the drinker to sometimes burp, has a low chance to cause a goonchem vortex that pushes things within a very small radius (1-2 tiles) away from the drinker
|
||||
/datum/reagent/consumable/drink/grape_granade
|
||||
@@ -122,7 +124,7 @@
|
||||
to_chat(M, "<span class='notice'>You feel ready to burst! Oh wait, just a burp...</span>")
|
||||
else if(prob(25))
|
||||
M.emote("burp")
|
||||
..()
|
||||
return ..()
|
||||
|
||||
//Meteor Malt: Sometimes causes screen shakes for the drinker like a meteor impact, low chance to add 1-5 units of a random mineral reagent to the drinker's blood (iron, copper, silver, gold, uranium, carbon, etc)
|
||||
/datum/reagent/consumable/drink/meteor_malt
|
||||
@@ -141,4 +143,4 @@
|
||||
var/amount = rand(1, 5)
|
||||
var/mineral = pick("copper", "iron", "gold", "carbon", "silver", "aluminum", "silicon", "sodiumchloride", "plasma")
|
||||
M.reagents.add_reagent(mineral, amount)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
@@ -24,13 +24,14 @@
|
||||
taste_message = "corporate assets going to waste"
|
||||
|
||||
/datum/reagent/plasma/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(holder.has_reagent("epinephrine"))
|
||||
holder.remove_reagent("epinephrine", 2)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
C.adjustPlasma(10)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/plasma/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with plasma is stronger than fuel!
|
||||
if(method == TOUCH)
|
||||
@@ -80,10 +81,11 @@
|
||||
taste_message = null
|
||||
|
||||
/datum/reagent/clf3/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.adjust_fire_stacks(2)
|
||||
var/burndmg = max(0.3*M.fire_stacks, 0.3)
|
||||
M.adjustFireLoss(burndmg)
|
||||
..()
|
||||
update_flags |= M.adjustFireLoss(burndmg, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/clf3/reaction_turf(turf/simulated/T, volume)
|
||||
if(prob(1) && istype(T, /turf/simulated/floor/plating))
|
||||
@@ -167,10 +169,11 @@
|
||||
process_flags = ORGANIC | SYNTHETIC
|
||||
|
||||
/datum/reagent/phlogiston/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.adjust_fire_stacks(1)
|
||||
var/burndmg = max(0.3*M.fire_stacks, 0.3)
|
||||
M.adjustFireLoss(burndmg)
|
||||
..()
|
||||
update_flags |= M.adjustFireLoss(burndmg, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/phlogiston/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
M.adjust_fire_stacks(1)
|
||||
@@ -187,7 +190,7 @@
|
||||
|
||||
/datum/reagent/napalm/on_mob_life(mob/living/M)
|
||||
M.adjust_fire_stacks(1)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/napalm/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH)
|
||||
@@ -204,7 +207,7 @@
|
||||
if(M.reagents.has_reagent("oxygen"))
|
||||
M.reagents.remove_reagent("oxygen", 1)
|
||||
M.bodytemperature -= 30
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/cryostylane/on_tick()
|
||||
if(holder.has_reagent("oxygen"))
|
||||
@@ -229,7 +232,7 @@
|
||||
if(M.reagents.has_reagent("oxygen"))
|
||||
M.reagents.remove_reagent("oxygen", 1)
|
||||
M.bodytemperature += 30
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/pyrosium/on_tick()
|
||||
if(holder.has_reagent("oxygen"))
|
||||
@@ -276,11 +279,12 @@
|
||||
taste_message = "corporate assets going to waste"
|
||||
|
||||
/datum/reagent/plasma_dust/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(3)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(3, FALSE)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
C.adjustPlasma(20)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/plasma_dust/reaction_mob(mob/living/M, method=TOUCH, volume)//Splashing people with plasma dust is stronger than fuel!
|
||||
if(method == TOUCH)
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
|
||||
/datum/reagent/toxin/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(2)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/spider_venom
|
||||
name = "Spider venom"
|
||||
@@ -17,8 +18,9 @@
|
||||
color = "#CF3600" // rgb: 207, 54, 0
|
||||
|
||||
/datum/reagent/spider_venom/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1.5)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1.5, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/minttoxin
|
||||
name = "Mint Toxin"
|
||||
@@ -31,7 +33,7 @@
|
||||
/datum/reagent/minttoxin/on_mob_life(mob/living/M)
|
||||
if(FAT in M.mutations)
|
||||
M.gib()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/slimejelly
|
||||
name = "Slime Jelly"
|
||||
@@ -42,12 +44,13 @@
|
||||
taste_message = "slimes"
|
||||
|
||||
/datum/reagent/slimejelly/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>Your insides are burning!</span>")
|
||||
M.adjustToxLoss(rand(20,60)*REAGENTS_EFFECT_MULTIPLIER)
|
||||
update_flags |= M.adjustToxLoss(rand(20,60)*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
else if(prob(40))
|
||||
M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(-5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/slimetoxin
|
||||
name = "Mutation Toxin"
|
||||
@@ -67,7 +70,7 @@
|
||||
to_chat(M, "<span class='danger'>Your body reacts violently to light.</span> <span class='notice'>However, it naturally heals in darkness.</span>")
|
||||
to_chat(M, "<span class='danger'>Aside from your new traits, you are mentally unchanged and retain your prior obligations.</span>")
|
||||
human.set_species(/datum/species/shadow)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/aslimetoxin
|
||||
name = "Advanced Mutation Toxin"
|
||||
@@ -93,9 +96,10 @@
|
||||
taste_message = "metal"
|
||||
|
||||
/datum/reagent/mercury/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(70))
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/chlorine
|
||||
name = "Chlorine"
|
||||
@@ -108,8 +112,9 @@
|
||||
taste_message = "fire"
|
||||
|
||||
/datum/reagent/chlorine/on_mob_life(mob/living/M)
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustFireLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/fluorine
|
||||
name = "Fluorine"
|
||||
@@ -122,9 +127,10 @@
|
||||
taste_message = "spicy freshness"
|
||||
|
||||
/datum/reagent/fluorine/on_mob_life(mob/living/M)
|
||||
M.adjustFireLoss(1)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustFireLoss(1, FALSE)
|
||||
update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/radium
|
||||
name = "Radium"
|
||||
@@ -137,7 +143,7 @@
|
||||
/datum/reagent/radium/on_mob_life(mob/living/M)
|
||||
if(M.radiation < 80)
|
||||
M.apply_effect(4, IRRADIATE, negate_armor = 1)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/radium/reaction_turf(turf/T, volume)
|
||||
if(volume >= 3 && !isspaceturf(T))
|
||||
@@ -167,7 +173,7 @@
|
||||
M.apply_effect(2*REAGENTS_EFFECT_MULTIPLIER, IRRADIATE, negate_armor = 1)
|
||||
if(prob(4))
|
||||
randmutb(M)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/reagent/uranium
|
||||
@@ -180,7 +186,7 @@
|
||||
|
||||
/datum/reagent/uranium/on_mob_life(mob/living/M)
|
||||
M.apply_effect(2, IRRADIATE, negate_armor = 1)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/uranium/reaction_turf(turf/T, volume)
|
||||
if(volume >= 3 && !isspaceturf(T))
|
||||
@@ -196,8 +202,9 @@
|
||||
metabolization_rate = 0.2
|
||||
|
||||
/datum/reagent/lexorin/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
|
||||
/datum/reagent/sacid
|
||||
@@ -210,8 +217,9 @@
|
||||
taste_message = "<span class='userdanger'>ACID</span>"
|
||||
|
||||
/datum/reagent/sacid/on_mob_life(mob/living/M)
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustFireLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/sacid/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH)
|
||||
@@ -282,8 +290,9 @@
|
||||
color = "#003333" // rgb: 0, 51, 51
|
||||
|
||||
/datum/reagent/carpotoxin/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/staminatoxin
|
||||
name = "Tirizene"
|
||||
@@ -294,9 +303,10 @@
|
||||
data = 13
|
||||
|
||||
/datum/reagent/staminatoxin/on_mob_life(mob/living/M)
|
||||
M.adjustStaminaLoss(REAGENTS_EFFECT_MULTIPLIER * data)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustStaminaLoss(REAGENTS_EFFECT_MULTIPLIER * data, FALSE)
|
||||
data = max(data - 1, 3)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
|
||||
/datum/reagent/spore
|
||||
@@ -306,10 +316,11 @@
|
||||
color = "#9ACD32"
|
||||
|
||||
/datum/reagent/spores/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
M.damageoverlaytemp = 60
|
||||
M.EyeBlurry(3)
|
||||
..()
|
||||
update_flags |= M.EyeBlurry(3)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/beer2 //disguised as normal beer for use by emagged service borgs
|
||||
name = "Beer"
|
||||
@@ -323,13 +334,14 @@
|
||||
taste_message = "beer"
|
||||
|
||||
/datum/reagent/beer2/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
switch(current_cycle)
|
||||
if(1 to 50)
|
||||
M.Sleeping(2)
|
||||
update_flags |= M.Sleeping(2, FALSE)
|
||||
if(51 to INFINITY)
|
||||
M.Sleeping(2)
|
||||
M.adjustToxLoss((current_cycle - 50)*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
update_flags |= M.Sleeping(2, FALSE)
|
||||
update_flags |= M.adjustToxLoss((current_cycle - 50)*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/polonium
|
||||
name = "Polonium"
|
||||
@@ -344,7 +356,7 @@
|
||||
|
||||
/datum/reagent/polonium/on_mob_life(mob/living/M)
|
||||
M.apply_effect(8, IRRADIATE, negate_armor = 1)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/histamine
|
||||
name = "Histamine"
|
||||
@@ -365,60 +377,64 @@
|
||||
M.emote("drool")
|
||||
|
||||
/datum/reagent/histamine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(20))
|
||||
M.emote(pick("twitch", "grumble", "sneeze", "cough"))
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='notice'>Your eyes itch.</span>")
|
||||
M.emote(pick("blink", "sneeze"))
|
||||
M.AdjustEyeBlurry(3)
|
||||
update_flags |= M.AdjustEyeBlurry(3, FALSE)
|
||||
if(prob(10))
|
||||
M.visible_message("<span class='danger'>[M] scratches at an itch.</span>")
|
||||
M.adjustBruteLoss(1)
|
||||
update_flags |= M.adjustBruteLoss(1, FALSE)
|
||||
M.emote("grumble")
|
||||
if(prob(5))
|
||||
to_chat(M, "<span class='danger'>You're getting a rash!</span>")
|
||||
M.adjustBruteLoss(2)
|
||||
..()
|
||||
update_flags |= M.adjustBruteLoss(2, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/histamine/overdose_process(mob/living/M, severity)
|
||||
var/effect = ..()
|
||||
var/list/overdose_info = ..()
|
||||
var/effect = overdose_info[REAGENT_OVERDOSE_EFFECT]
|
||||
var/update_flags = overdose_info[REAGENT_OVERDOSE_FLAGS]
|
||||
if(severity == 1)
|
||||
if(effect <= 2)
|
||||
to_chat(M, "<span class='warning'>You feel mucus running down the back of your throat.</span>")
|
||||
M.adjustToxLoss(1)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
M.Jitter(4)
|
||||
M.emote(pick("sneeze", "cough"))
|
||||
else if(effect <= 4)
|
||||
M.stuttering += rand(0,5)
|
||||
M.AdjustStuttering(rand(0,5))
|
||||
if(prob(25))
|
||||
M.emote(pick("choke","gasp"))
|
||||
M.adjustOxyLoss(5)
|
||||
update_flags |= M.adjustOxyLoss(5, FALSE)
|
||||
else if(effect <= 7)
|
||||
to_chat(M, "<span class='warning'>Your chest hurts!</span>")
|
||||
M.emote(pick("cough","gasp"))
|
||||
M.adjustOxyLoss(3)
|
||||
update_flags |= M.adjustOxyLoss(3, FALSE)
|
||||
else if(severity == 2)
|
||||
if(effect <= 2)
|
||||
M.visible_message("<span class='warning'>[M] breaks out in hives!</span>")
|
||||
M.adjustBruteLoss(6)
|
||||
update_flags |= M.adjustBruteLoss(6, FALSE)
|
||||
else if(effect <= 4)
|
||||
M.visible_message("<span class='warning'>[M] has a horrible coughing fit!</span>")
|
||||
M.Jitter(10)
|
||||
M.stuttering += rand(0,5)
|
||||
M.AdjustStuttering(rand(0,5))
|
||||
M.emote("cough")
|
||||
if(prob(40))
|
||||
M.emote(pick("choke","gasp"))
|
||||
M.adjustOxyLoss(6)
|
||||
M.Weaken(8)
|
||||
update_flags |= M.adjustOxyLoss(6, FALSE)
|
||||
update_flags |= M.Weaken(8, FALSE)
|
||||
else if(effect <= 7)
|
||||
to_chat(M, "<span class='warning'>Your heartbeat is pounding inside your head!</span>")
|
||||
M << 'sound/effects/singlebeat.ogg'
|
||||
M.emote("collapse")
|
||||
M.adjustOxyLoss(8)
|
||||
M.adjustToxLoss(3)
|
||||
M.Weaken(3)
|
||||
update_flags |= M.adjustOxyLoss(8, FALSE)
|
||||
update_flags |= M.adjustToxLoss(3, FALSE)
|
||||
update_flags |= M.Weaken(3, FALSE)
|
||||
M.emote(pick("choke", "gasp"))
|
||||
to_chat(M, "<span class='warning'>You feel like you're dying!</span>")
|
||||
return list(effect, update_flags)
|
||||
|
||||
/datum/reagent/formaldehyde
|
||||
name = "Formaldehyde"
|
||||
@@ -429,10 +445,11 @@
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/formaldehyde/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(prob(10))
|
||||
M.reagents.add_reagent("histamine",rand(5,15))
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/venom
|
||||
name = "Venom"
|
||||
@@ -445,26 +462,29 @@
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/venom/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(25))
|
||||
M.reagents.add_reagent("histamine",rand(5,10))
|
||||
if(volume < 20)
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustBruteLoss(1)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(1, FALSE)
|
||||
else if(volume < 40)
|
||||
if(prob(8))
|
||||
M.fakevomit()
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustBruteLoss(2)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(2, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/venom/overdose_process(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
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!")
|
||||
M.Weaken(15)
|
||||
update_flags |= M.Weaken(15, FALSE)
|
||||
M.AdjustJitter(1000)
|
||||
spawn(rand(20, 100))
|
||||
M.gib()
|
||||
return list(0, update_flags)
|
||||
|
||||
/datum/reagent/neurotoxin2
|
||||
name = "Neurotoxin"
|
||||
@@ -475,6 +495,7 @@
|
||||
metabolization_rate = 1
|
||||
|
||||
/datum/reagent/neurotoxin2/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
switch(current_cycle)
|
||||
if(1 to 4)
|
||||
current_cycle++
|
||||
@@ -489,19 +510,19 @@
|
||||
if(13)
|
||||
M.emote("faint")
|
||||
if(14 to INFINITY)
|
||||
M.Paralyse(10)
|
||||
update_flags |= M.Paralyse(10, FALSE)
|
||||
M.Drowsy(20)
|
||||
|
||||
M.AdjustJitter(-30)
|
||||
if(M.getBrainLoss() <= 80)
|
||||
M.adjustBrainLoss(1)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
else
|
||||
if(prob(10))
|
||||
M.adjustBrainLoss(1)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
if(prob(10))
|
||||
M.emote("drool")
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/cyanide
|
||||
name = "Cyanide"
|
||||
@@ -514,7 +535,8 @@
|
||||
taste_message = "almonds"
|
||||
|
||||
/datum/reagent/cyanide/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
if(prob(5))
|
||||
M.emote("drool")
|
||||
if(prob(10))
|
||||
@@ -523,9 +545,9 @@
|
||||
M.emote("gasp")
|
||||
if(prob(8))
|
||||
to_chat(M, "<span class='danger'>You feel horrendously weak!</span>")
|
||||
M.Stun(2)
|
||||
M.adjustToxLoss(2)
|
||||
..()
|
||||
update_flags |= M.Stun(2, FALSE)
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/itching_powder
|
||||
name = "Itching Powder"
|
||||
@@ -537,6 +559,7 @@
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/itching_powder/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_STAT
|
||||
if(prob(25))
|
||||
M.emote(pick("twitch", "laugh", "sneeze", "cry"))
|
||||
if(prob(20))
|
||||
@@ -544,22 +567,22 @@
|
||||
M.emote(pick("laugh", "giggle"))
|
||||
if(prob(15))
|
||||
M.visible_message("<span class='danger'>[M] scratches at an itch.</span>")
|
||||
M.adjustBruteLoss(1)
|
||||
M.Stun(rand(0,1))
|
||||
update_flags |= M.adjustBruteLoss(1, FALSE)
|
||||
update_flags |= M.Stun(rand(0,1), FALSE)
|
||||
M.emote("grumble")
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>So itchy!</span>")
|
||||
M.adjustBruteLoss(2)
|
||||
update_flags |= M.adjustBruteLoss(2, FALSE)
|
||||
if(prob(6))
|
||||
M.reagents.add_reagent("histamine", rand(1,3))
|
||||
if(prob(2))
|
||||
to_chat(M, "<span class='danger'>AHHHHHH!</span>")
|
||||
M.adjustBruteLoss(5)
|
||||
M.Weaken(5)
|
||||
update_flags |= M.adjustBruteLoss(5, FALSE)
|
||||
update_flags |= M.Weaken(5, FALSE)
|
||||
M.AdjustJitter(6)
|
||||
M.visible_message("<span class='danger'>[M] falls to the floor, scratching [M.p_them()]self violently!</span>")
|
||||
M.emote("scream")
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/facid
|
||||
name = "Fluorosulfuric Acid"
|
||||
@@ -571,9 +594,10 @@
|
||||
taste_message = "<span class='userdanger'>ACID</span>"
|
||||
|
||||
/datum/reagent/facid/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, FALSE)
|
||||
update_flags |= M.adjustFireLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/facid/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(method == TOUCH || method == INGEST)
|
||||
@@ -635,26 +659,27 @@
|
||||
taste_message = null
|
||||
|
||||
/datum/reagent/initropidril/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(33))
|
||||
M.adjustToxLoss(rand(5,25))
|
||||
update_flags |= M.adjustToxLoss(rand(5,25), FALSE)
|
||||
if(prob(33))
|
||||
to_chat(M, "<span class='danger'>You feel horribly weak.</span>")
|
||||
M.Stun(2)
|
||||
update_flags |= M.Stun(2, FALSE)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>You cannot breathe!</span>")
|
||||
M.adjustOxyLoss(10)
|
||||
update_flags |= M.adjustOxyLoss(10, FALSE)
|
||||
M.AdjustLoseBreath(1)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>Your chest is burning with pain!</span>")
|
||||
M.adjustOxyLoss(10)
|
||||
update_flags |= M.adjustOxyLoss(10, FALSE)
|
||||
M.AdjustLoseBreath(1)
|
||||
M.Stun(3)
|
||||
M.Weaken(2)
|
||||
update_flags |= M.Stun(3, FALSE)
|
||||
update_flags |= M.Weaken(2, FALSE)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
if(!H.undergoing_cardiac_arrest())
|
||||
H.set_heartattack(TRUE) // rip in pepperoni
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/pancuronium
|
||||
name = "Pancuronium"
|
||||
@@ -666,6 +691,7 @@
|
||||
taste_message = null
|
||||
|
||||
/datum/reagent/pancuronium/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
if(prob(10))
|
||||
@@ -673,12 +699,12 @@
|
||||
if(6 to 10)
|
||||
if(prob(8))
|
||||
to_chat(M, "<span class='danger'>You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].</span>")
|
||||
M.Stun(1)
|
||||
update_flags |= M.Stun(1, FALSE)
|
||||
else if(prob(8))
|
||||
M.emote(pick("drool", "tremble"))
|
||||
if(11 to INFINITY)
|
||||
M.Stun(20)
|
||||
M.Weaken(20)
|
||||
update_flags |= M.Stun(20, FALSE)
|
||||
update_flags |= M.Weaken(20, FALSE)
|
||||
if(prob(10))
|
||||
M.emote(pick("drool", "tremble", "gasp"))
|
||||
M.AdjustLoseBreath(1)
|
||||
@@ -687,7 +713,7 @@
|
||||
if(prob(7))
|
||||
to_chat(M, "<span class='danger'>You can't breathe!</span>")
|
||||
M.AdjustLoseBreath(3)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/sodium_thiopental
|
||||
name = "Sodium Thiopental"
|
||||
@@ -700,6 +726,7 @@
|
||||
taste_message = null
|
||||
|
||||
/datum/reagent/sodium_thiopental/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
switch(current_cycle)
|
||||
if(1)
|
||||
M.emote("drool")
|
||||
@@ -708,14 +735,14 @@
|
||||
M.Drowsy(20)
|
||||
if(5)
|
||||
M.emote("faint")
|
||||
M.Weaken(5)
|
||||
update_flags |= M.Weaken(5, FALSE)
|
||||
if(6 to INFINITY)
|
||||
M.Paralyse(20)
|
||||
update_flags |= M.Paralyse(20, FALSE)
|
||||
M.AdjustJitter(-50)
|
||||
if(prob(10))
|
||||
M.emote("drool")
|
||||
M.adjustBrainLoss(1)
|
||||
..()
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/ketamine
|
||||
name = "Ketamine"
|
||||
@@ -729,20 +756,21 @@
|
||||
taste_message = null
|
||||
|
||||
/datum/reagent/ketamine/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
if(prob(25))
|
||||
M.emote("yawn")
|
||||
if(6 to 9)
|
||||
M.AdjustEyeBlurry(5)
|
||||
update_flags |= M.AdjustEyeBlurry(5, FALSE)
|
||||
if(prob(35))
|
||||
M.emote("yawn")
|
||||
if(10)
|
||||
M.emote("faint")
|
||||
M.Weaken(5)
|
||||
update_flags |= M.Weaken(5, FALSE)
|
||||
if(11 to INFINITY)
|
||||
M.Paralyse(25)
|
||||
..()
|
||||
update_flags |= M.Paralyse(25, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/sulfonal
|
||||
name = "Sulfonal"
|
||||
@@ -753,6 +781,7 @@
|
||||
metabolization_rate = 0.1
|
||||
|
||||
/datum/reagent/sulfonal/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustJitter(-30)
|
||||
switch(current_cycle)
|
||||
if(1 to 10)
|
||||
@@ -765,10 +794,10 @@
|
||||
if(22 to INFINITY)
|
||||
if(prob(20))
|
||||
M.emote("faint")
|
||||
M.Paralyse(5)
|
||||
update_flags |= M.Paralyse(5, FALSE)
|
||||
M.Drowsy(20)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/amanitin
|
||||
name = "Amanitin"
|
||||
@@ -792,19 +821,20 @@
|
||||
taste_message = "battery acid"
|
||||
|
||||
/datum/reagent/lipolicide/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(!M.nutrition)
|
||||
switch(rand(1,3))
|
||||
if(1)
|
||||
to_chat(M, "<span class='warning'>You feel hungry...</span>")
|
||||
if(2)
|
||||
M.adjustToxLoss(1)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
to_chat(M, "<span class='warning'>Your stomach grumbles painfully!</span>")
|
||||
else
|
||||
if(prob(60))
|
||||
var/fat_to_burn = max(round(M.nutrition/100,1), 5)
|
||||
M.nutrition = max(0, M.nutrition-fat_to_burn)
|
||||
M.overeatduration = 0
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/coniine
|
||||
name = "Coniine"
|
||||
@@ -816,9 +846,10 @@
|
||||
can_synth = FALSE
|
||||
|
||||
/datum/reagent/coniine/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(2)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(2, FALSE)
|
||||
M.AdjustLoseBreath(5)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/curare
|
||||
name = "Curare"
|
||||
@@ -830,28 +861,29 @@
|
||||
penetrates_skin = TRUE
|
||||
|
||||
/datum/reagent/curare/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustOxyLoss(1)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(1, FALSE)
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
if(prob(20))
|
||||
M.emote(pick("drool", "pale", "gasp"))
|
||||
if(6 to 10)
|
||||
M.AdjustEyeBlurry(5)
|
||||
update_flags |= M.AdjustEyeBlurry(5, FALSE)
|
||||
if(prob(8))
|
||||
to_chat(M, "<span class='danger'>You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].</span>")
|
||||
M.Stun(1)
|
||||
update_flags |= M.Stun(1, FALSE)
|
||||
else if(prob(8))
|
||||
M.emote(pick("drool","pale", "gasp"))
|
||||
M.emote(pick("drool", "pale", "gasp"))
|
||||
if(11 to INFINITY)
|
||||
M.Stun(30)
|
||||
update_flags |= M.Stun(30, FALSE)
|
||||
M.Drowsy(20)
|
||||
if(prob(20))
|
||||
M.emote(pick("drool", "faint", "pale", "gasp", "collapse"))
|
||||
else if(prob(8))
|
||||
to_chat(M, "<span class='danger'>You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!</span>")
|
||||
M.AdjustLoseBreath(1)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/heparin //Based on a real-life anticoagulant.
|
||||
name = "Heparin"
|
||||
@@ -862,11 +894,12 @@
|
||||
metabolization_rate = 0.2 * REAGENTS_METABOLISM
|
||||
|
||||
/datum/reagent/heparin/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
H.bleed_rate = min(H.bleed_rate + 2, 8)
|
||||
H.adjustBruteLoss(1)
|
||||
..()
|
||||
update_flags |= H.adjustBruteLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/sarin
|
||||
name = "Sarin"
|
||||
@@ -880,6 +913,7 @@
|
||||
taste_message = null
|
||||
|
||||
/datum/reagent/sarin/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
switch(current_cycle)
|
||||
if(1 to 15)
|
||||
M.AdjustJitter(20)
|
||||
@@ -888,23 +922,23 @@
|
||||
if(16 to 30)
|
||||
if(prob(25))
|
||||
M.emote(pick("twitch","twitch","drool","quiver","tremble"))
|
||||
M.AdjustEyeBlurry(5)
|
||||
update_flags |= M.AdjustEyeBlurry(5, FALSE)
|
||||
M.Stuttering(5)
|
||||
if(prob(10))
|
||||
M.Confused(15)
|
||||
if(prob(15))
|
||||
M.Stun(1)
|
||||
update_flags |= M.Stun(1, FALSE)
|
||||
M.emote("scream")
|
||||
if(30 to 60)
|
||||
M.AdjustEyeBlurry(5)
|
||||
update_flags |= M.AdjustEyeBlurry(5, FALSE)
|
||||
M.Stuttering(5)
|
||||
if(prob(10))
|
||||
M.Stun(1)
|
||||
update_flags |= M.Stun(1, FALSE)
|
||||
M.emote(pick("twitch","twitch","drool","shake","tremble"))
|
||||
if(prob(5))
|
||||
M.emote("collapse")
|
||||
if(prob(5))
|
||||
M.Weaken(3)
|
||||
update_flags |= M.Weaken(3, FALSE)
|
||||
M.visible_message("<span class='warning'>[M] has a seizure!</span>")
|
||||
M.SetJitter(1000)
|
||||
if(prob(5))
|
||||
@@ -915,15 +949,15 @@
|
||||
if(prob(15))
|
||||
M.emote(pick("gasp", "choke", "cough","twitch", "shake", "tremble","quiver","drool", "twitch","collapse"))
|
||||
M.LoseBreath(5)
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustBrainLoss(1)
|
||||
M.Weaken(4)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
update_flags |= M.Weaken(4, FALSE)
|
||||
if(prob(8))
|
||||
M.fakevomit()
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustBrainLoss(1)
|
||||
M.adjustFireLoss(1)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
update_flags |= M.adjustBrainLoss(1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/glyphosate
|
||||
name = "Glyphosate"
|
||||
@@ -934,8 +968,9 @@
|
||||
var/lethality = 0 //Glyphosate is non-toxic to people
|
||||
|
||||
/datum/reagent/glyphosate/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(lethality)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(lethality, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/glyphosate/reaction_turf(turf/simulated/wall/W, volume) // Clear off wallrot fungi
|
||||
if(istype(W) && W.rotting)
|
||||
@@ -985,8 +1020,9 @@
|
||||
color = "#4B004B" // rgb: 75, 0, 75
|
||||
|
||||
/datum/reagent/pestkiller/on_mob_life(mob/living/M)
|
||||
M.adjustToxLoss(1)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/pestkiller/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
if(iscarbon(M))
|
||||
@@ -1008,19 +1044,20 @@
|
||||
taste_message = "sweetness"
|
||||
|
||||
/datum/reagent/capulettium/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
switch(current_cycle)
|
||||
if(1 to 5)
|
||||
M.AdjustEyeBlurry(10)
|
||||
update_flags |= M.AdjustEyeBlurry(10, FALSE)
|
||||
if(6 to 10)
|
||||
M.Drowsy(10)
|
||||
if(11)
|
||||
M.Paralyse(10)
|
||||
update_flags |= M.Paralyse(10, FALSE)
|
||||
M.visible_message("<B>[M]</B> seizes up and falls limp, [M.p_their()] eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary.
|
||||
if(12 to 60)
|
||||
M.Paralyse(10)
|
||||
update_flags |= M.Paralyse(10, FALSE)
|
||||
if(61 to INFINITY)
|
||||
M.AdjustEyeBlurry(10)
|
||||
..()
|
||||
update_flags |= M.AdjustEyeBlurry(10, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/capulettium_plus
|
||||
name = "Capulettium Plus"
|
||||
@@ -1033,7 +1070,7 @@
|
||||
|
||||
/datum/reagent/capulettium_plus/on_mob_life(mob/living/M)
|
||||
M.Silence(2)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/toxic_slurry
|
||||
name = "Toxic Slurry"
|
||||
@@ -1043,14 +1080,15 @@
|
||||
color = "#00C81E"
|
||||
|
||||
/datum/reagent/toxic_slurry/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(prob(10))
|
||||
M.adjustToxLoss(rand(2.4))
|
||||
update_flags |= M.adjustToxLoss(rand(2.4), FALSE)
|
||||
if(prob(7))
|
||||
to_chat(M, "<span class='danger'>A horrible migraine overpowers you.</span>")
|
||||
M.Stun(rand(2,5))
|
||||
update_flags |= M.Stun(rand(2,5), FALSE)
|
||||
if(prob(7))
|
||||
M.fakevomit(1)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/glowing_slurry
|
||||
name = "Glowing Slurry"
|
||||
@@ -1079,7 +1117,7 @@
|
||||
randmutg(M)
|
||||
domutcheck(M, null)
|
||||
M.UpdateAppearance()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/ants
|
||||
name = "Ants"
|
||||
@@ -1091,8 +1129,9 @@
|
||||
taste_message = "<span class='warning'>ANTS OH GOD</span>"
|
||||
|
||||
/datum/reagent/ants/on_mob_life(mob/living/M)
|
||||
M.adjustBruteLoss(2)
|
||||
..()
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
update_flags |= M.adjustBruteLoss(2, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/ants/reaction_mob(mob/living/M, method=TOUCH, volume) //NOT THE ANTS
|
||||
if(iscarbon(M))
|
||||
@@ -1118,4 +1157,4 @@
|
||||
shock_timer = 0
|
||||
M.electrocute_act(rand(5,20), "Teslium in their body", 1, 1) //Override because it's caused from INSIDE of you
|
||||
playsound(M, "sparks", 50, 1)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
@@ -316,7 +316,7 @@
|
||||
M.fakevomit(1)
|
||||
else
|
||||
M.fakevomit(0)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/datum/reagent/fishwater/toiletwater
|
||||
name = "Toilet Water"
|
||||
@@ -342,6 +342,7 @@
|
||||
taste_message = null
|
||||
|
||||
/datum/reagent/holywater/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.AdjustJitter(-5)
|
||||
if(current_cycle >= 30) // 12 units, 60 seconds @ metabolism 0.4 units & tick rate 2.0 sec
|
||||
M.AdjustStuttering(4, bound_lower = 0, bound_upper = 20)
|
||||
@@ -370,7 +371,7 @@
|
||||
if(M.mind.vampire.bloodusable)
|
||||
M.Stuttering(1)
|
||||
M.Jitter(30)
|
||||
M.adjustStaminaLoss(5)
|
||||
update_flags |= M.adjustStaminaLoss(5, FALSE)
|
||||
if(prob(20))
|
||||
M.emote("scream")
|
||||
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
|
||||
@@ -388,7 +389,7 @@
|
||||
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
|
||||
if(5 to 12)
|
||||
to_chat(M, "<span class = 'danger'>You feel an intense burning inside of you!</span>")
|
||||
M.adjustFireLoss(1)
|
||||
update_flags |= M.adjustFireLoss(1, FALSE)
|
||||
M.Stuttering(1)
|
||||
M.Jitter(20)
|
||||
if(prob(20))
|
||||
@@ -400,13 +401,13 @@
|
||||
O.show_message(text("<span class = 'danger'>[] suddenly bursts into flames!</span>", M), 1)
|
||||
M.fire_stacks = min(5,M.fire_stacks + 3)
|
||||
M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire
|
||||
M.adjustFireLoss(3) //Hence the other damages... ain't I a bastard?
|
||||
update_flags |= M.adjustFireLoss(3, FALSE) //Hence the other damages... ain't I a bastard?
|
||||
M.Stuttering(1)
|
||||
M.Jitter(30)
|
||||
if(prob(40))
|
||||
M.emote("scream")
|
||||
M.mind.vampire.nullified = max(5, M.mind.vampire.nullified + 2)
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
|
||||
/datum/reagent/holywater/reaction_mob(mob/living/M, method=TOUCH, volume)
|
||||
@@ -442,23 +443,24 @@
|
||||
taste_message = null
|
||||
|
||||
/datum/reagent/fuel/unholywater/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
if(iscultist(M))
|
||||
M.AdjustDrowsy(-5)
|
||||
M.AdjustParalysis(-1)
|
||||
M.AdjustStunned(-2)
|
||||
M.AdjustWeakened(-2)
|
||||
M.adjustToxLoss(-2)
|
||||
M.adjustFireLoss(-2)
|
||||
M.adjustOxyLoss(-2)
|
||||
M.adjustBruteLoss(-2)
|
||||
update_flags |= M.AdjustParalysis(-1, FALSE)
|
||||
update_flags |= M.AdjustStunned(-2, FALSE)
|
||||
update_flags |= M.AdjustWeakened(-2, FALSE)
|
||||
update_flags |= M.adjustToxLoss(-2, FALSE)
|
||||
update_flags |= M.adjustFireLoss(-2, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(-2, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(-2, FALSE)
|
||||
else
|
||||
M.adjustBrainLoss(3)
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustFireLoss(2)
|
||||
M.adjustOxyLoss(2)
|
||||
M.adjustBruteLoss(2)
|
||||
update_flags |= M.adjustBrainLoss(3, FALSE)
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(2, FALSE)
|
||||
update_flags |= M.adjustOxyLoss(2, FALSE)
|
||||
update_flags |= M.adjustBruteLoss(2, FALSE)
|
||||
M.AdjustCultSlur(10)//CUASE WHY THE HELL NOT
|
||||
..()
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/hellwater
|
||||
name = "Hell Water"
|
||||
@@ -470,12 +472,13 @@
|
||||
taste_message = "admin abuse"
|
||||
|
||||
/datum/reagent/hellwater/on_mob_life(mob/living/M)
|
||||
var/update_flags = STATUS_UPDATE_NONE
|
||||
M.fire_stacks = min(5, M.fire_stacks + 3)
|
||||
M.IgniteMob() //Only problem with igniting people is currently the commonly availible fire suits make you immune to being on fire
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustFireLoss(1) //Hence the other damages... ain't I a bastard?
|
||||
M.adjustBrainLoss(5)
|
||||
..()
|
||||
update_flags |= M.adjustToxLoss(1, FALSE)
|
||||
update_flags |= M.adjustFireLoss(1, FALSE) //Hence the other damages... ain't I a bastard?
|
||||
update_flags |= M.adjustBrainLoss(5, FALSE)
|
||||
return ..() | update_flags
|
||||
|
||||
/datum/reagent/liquidgibs
|
||||
name = "Liquid gibs"
|
||||
|
||||
Reference in New Issue
Block a user