mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-27 22:17:32 +01:00
Buffs the Virus Outbreak event (#23285)
* Spring cleaning * The great virus reclassification * Add severity comment to Fake GBS * Fix Jungle Fever being uncurable * Fix Shock causing fainting slightly too often * Makes Brainrot kill more reliably (yes, it already did) * Make Wizarditis replace clothes a bit less eagerly, cleanup * Buff Wizarditis effects' probabilities * Add a bit of variety to Wizarditis flavor messages * Clean up, nerf, and add some variety to Lycancoughy * Refactor Spanish Inquisition Flu * Refactor and slightly rebalance ICE9 Cold * Fix DROPDEL items not GCing properly sometimes * Lightly overhaul Pierrot's Throat * Remove unnecessary `null` declaration assignment * Deduplicate Critical disease properties * Spring cleaning 2: Electric Boogaloo * whoops * Fixes DROPDEL items not GCing properly someothertimes * Make Wizarditis clothes DROPDEL too * Lewcc review * Deduplicate Pierrot's Throat symptoms * Spread out Cold9 and Spanish Flu's damage * Clean up Adv. Kingstons * Fix Adv. Kingstons *healing* brute damage
This commit is contained in:
@@ -59,7 +59,7 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease))
|
||||
|
||||
//Other
|
||||
var/list/viable_mobtypes = list() //typepaths of viable mobs
|
||||
var/mob/living/carbon/affected_mob = null
|
||||
var/mob/living/carbon/affected_mob
|
||||
var/list/cures = list() //list of cures if the disease has the CURABLE flag, these are reagent ids
|
||||
var/infectivity = 65
|
||||
var/cure_chance = 8
|
||||
@@ -67,7 +67,7 @@ GLOBAL_LIST_INIT(diseases, subtypesof(/datum/disease))
|
||||
var/bypasses_immunity = FALSE //Does it skip species virus immunity check? Some things may diseases and not viruses
|
||||
var/virus_heal_resistant = FALSE // Some things aren't technically viruses/traditional diseases and should be immune to edge case cure methods, like healing viruses.
|
||||
var/permeability_mod = 1
|
||||
var/severity = NONTHREAT
|
||||
var/severity = NONTHREAT
|
||||
var/list/required_organs = list()
|
||||
var/needs_all_cures = TRUE
|
||||
var/list/strain_data = list() //dna_spread special bullshit
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
agent = "Excess Lepidopticides"
|
||||
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/human/monkey)
|
||||
desc = "If left untreated subject will regurgitate butterflies."
|
||||
severity = MEDIUM
|
||||
severity = MINOR
|
||||
|
||||
/datum/disease/anxiety/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
switch(stage)
|
||||
if(2) //also changes say, see say.dm
|
||||
if(2)
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='notice'>You feel anxious.</span>")
|
||||
if(3)
|
||||
|
||||
@@ -7,9 +7,8 @@
|
||||
cure_text = "Surgery"
|
||||
agent = "Shitty Appendix"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
permeability_mod = 1
|
||||
desc = "If left untreated the subject will become very weak, and may vomit often."
|
||||
severity = "Dangerous!"
|
||||
severity = MINOR
|
||||
disease_flags = CAN_CARRY|CAN_RESIST
|
||||
visibility_flags = HIDDEN_PANDEMIC
|
||||
required_organs = list(/obj/item/organ/internal/appendix)
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
agent = "Apidae Infection"
|
||||
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/human/monkey)
|
||||
desc = "If left untreated subject will regurgitate bees."
|
||||
severity = DANGEROUS
|
||||
severity = BIOHAZARD
|
||||
|
||||
/datum/disease/beesease/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
switch(stage)
|
||||
if(2) //also changes say, see say.dm // no it doesn't, that's horrifyingly snowflakey
|
||||
if(2)
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, "<span class='notice'>You taste honey in your mouth.</span>")
|
||||
if(3)
|
||||
@@ -35,6 +35,4 @@
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up a swarm of bees!</span>", \
|
||||
"<span class='userdanger'>You cough up a swarm of bees!</span>")
|
||||
new /mob/living/simple_animal/hostile/poison/bees(affected_mob.loc)
|
||||
//if(5)
|
||||
//Plus if you die, you explode into bees
|
||||
return
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
cure_chance = 10
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
desc = "Swearing, shouting, attacking nearby crew members uncontrollably."
|
||||
severity = DANGEROUS
|
||||
severity = BIOHAZARD
|
||||
disease_flags = CURABLE
|
||||
|
||||
/datum/disease/berserker/stage_act()
|
||||
|
||||
@@ -7,12 +7,12 @@
|
||||
cures = list("mannitol")
|
||||
agent = "Cryptococcus Cosmosis"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
cure_chance = 15//higher chance to cure, since two reagents are required
|
||||
cure_chance = 15
|
||||
desc = "This disease destroys the braincells, causing brain fever, brain necrosis and general intoxication."
|
||||
required_organs = list(/obj/item/organ/internal/brain)
|
||||
severity = DANGEROUS
|
||||
severity = HARMFUL
|
||||
|
||||
/datum/disease/brainrot/stage_act() //Removed toxloss because damaging diseases are pretty horrible. Last round it killed the entire station because the cure didn't work -- Urist -ACTUALLY Removed rather than commented out, I don't see it returning - RR
|
||||
/datum/disease/brainrot/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
switch(stage)
|
||||
@@ -30,7 +30,7 @@
|
||||
affected_mob.emote("stare")
|
||||
if(prob(2))
|
||||
affected_mob.emote("drool")
|
||||
if(prob(10) && affected_mob.getBrainLoss()<=98)//shouldn't brainpain you to death now
|
||||
if(prob(10) && affected_mob.getBrainLoss() < 100)
|
||||
affected_mob.adjustBrainLoss(2)
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, "<span class='danger'>Your try to remember something important...but can't.</span>")
|
||||
@@ -40,7 +40,7 @@
|
||||
affected_mob.emote("stare")
|
||||
if(prob(2))
|
||||
affected_mob.emote("drool")
|
||||
if(prob(15) && affected_mob.getBrainLoss()<=98) //shouldn't brainpain you to death now
|
||||
if(prob(15) && affected_mob.getBrainLoss() < 100)
|
||||
affected_mob.adjustBrainLoss(3)
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, "<span class='danger'>Strange buzzing fills your head, removing all thoughts.</span>")
|
||||
|
||||
@@ -4,38 +4,27 @@
|
||||
max_stages = 3
|
||||
spread_text = "On contact"
|
||||
spread_flags = CONTACT_GENERAL
|
||||
cure_text = "Common Cold Anti-bodies & Spaceacillin"
|
||||
cure_text = "Spaceacillin"
|
||||
cures = list("spaceacillin")
|
||||
agent = "ICE9-rhinovirus"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
desc = "If left untreated the subject will slow, as if partly frozen."
|
||||
severity = MEDIUM
|
||||
severity = HARMFUL
|
||||
|
||||
/datum/disease/cold9/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
switch(stage)
|
||||
if(2)
|
||||
affected_mob.bodytemperature -= 10
|
||||
if(prob(1) && prob(10))
|
||||
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
|
||||
cure()
|
||||
return
|
||||
if(prob(1))
|
||||
affected_mob.emote("sneeze")
|
||||
if(prob(1))
|
||||
affected_mob.emote("cough")
|
||||
if(prob(1))
|
||||
to_chat(affected_mob, "<span class='danger'>Your throat feels sore.</span>")
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel stiff.</span>")
|
||||
if(3)
|
||||
affected_mob.bodytemperature -= 20
|
||||
if(prob(1))
|
||||
affected_mob.emote("sneeze")
|
||||
if(prob(1))
|
||||
affected_mob.emote("cough")
|
||||
if(prob(1))
|
||||
to_chat(affected_mob, "<span class='danger'>Your throat feels sore.</span>")
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel stiff.</span>")
|
||||
if(stage < 2)
|
||||
return
|
||||
|
||||
var/stage_factor = stage - 1
|
||||
affected_mob.bodytemperature -= 7.5 * stage_factor // Enough to consistently frostburn certain species alive at stage 3
|
||||
if(prob(2 * stage_factor))
|
||||
affected_mob.emote("sneeze")
|
||||
if(prob(2 * stage_factor))
|
||||
affected_mob.emote("cough")
|
||||
if(prob(3 * stage_factor))
|
||||
to_chat(affected_mob, "<span class='danger'>Your throat feels sore.</span>")
|
||||
if(prob(5 * stage_factor))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel stiff.</span>")
|
||||
affected_mob.adjustFireLoss(1)
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
/datum/disease/critical
|
||||
form = "Medical Emergency"
|
||||
max_stages = 3
|
||||
spread_flags = SPECIAL
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
severity = MINOR
|
||||
disease_flags = CURABLE
|
||||
bypasses_immunity = TRUE
|
||||
virus_heal_resistant = TRUE
|
||||
|
||||
/datum/disease/critical/stage_act() //overriden to ensure unique behavior
|
||||
stage = min(stage, max_stages)
|
||||
@@ -20,19 +28,11 @@
|
||||
|
||||
/datum/disease/critical/shock
|
||||
name = "Shock"
|
||||
form = "Medical Emergency"
|
||||
spread_text = "The patient is in shock"
|
||||
max_stages = 3
|
||||
spread_flags = SPECIAL
|
||||
spread_text = "The patient is in shock."
|
||||
cure_text = "Saline-Glucose Solution"
|
||||
cures = list("salglu_solution", "syndicate_nanites", "stimulative_agent")
|
||||
cure_chance = 10
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
stage_prob = 6
|
||||
severity = DANGEROUS
|
||||
disease_flags = CURABLE
|
||||
bypasses_immunity = TRUE
|
||||
virus_heal_resistant = TRUE
|
||||
|
||||
/datum/disease/critical/shock/stage_act()
|
||||
if(..())
|
||||
@@ -60,7 +60,7 @@
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel absolutely terrible!</span>")
|
||||
if(prob(5))
|
||||
affected_mob.emote("faint", "faint", "groan") // this is bugged, but out of scope, someone fix it :)
|
||||
affected_mob.emote(pick(2; "faint", 1; "groan"))
|
||||
if(3)
|
||||
if(prob(1) && prob(10))
|
||||
to_chat(affected_mob, "<span class='notice'>You feel better.</span>")
|
||||
@@ -71,7 +71,7 @@
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel horrible!</span>")
|
||||
if(prob(5))
|
||||
affected_mob.emote(pick("faint", "faint", "groan"))
|
||||
affected_mob.emote(pick(2; "faint", 1; "groan"))
|
||||
if(prob(7))
|
||||
to_chat(affected_mob, "<span class='danger'>You can't breathe!</span>")
|
||||
affected_mob.AdjustLoseBreath(2 SECONDS)
|
||||
@@ -81,21 +81,13 @@
|
||||
|
||||
/datum/disease/critical/heart_failure
|
||||
name = "Cardiac Failure"
|
||||
form = "Medical Emergency"
|
||||
spread_text = "The patient is having a cardiac emergency"
|
||||
max_stages = 3
|
||||
spread_flags = SPECIAL
|
||||
spread_text = "The patient is having a cardiac emergency."
|
||||
cure_text = "Atropine, Epinephrine, or Heparin"
|
||||
cures = list("atropine", "epinephrine", "heparin", "syndicate_nanites", "stimulative_agent")
|
||||
cure_chance = 10
|
||||
needs_all_cures = FALSE
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
stage_prob = 5
|
||||
severity = DANGEROUS
|
||||
disease_flags = CURABLE
|
||||
severity = HARMFUL
|
||||
required_organs = list(/obj/item/organ/internal/heart)
|
||||
bypasses_immunity = TRUE
|
||||
virus_heal_resistant = TRUE
|
||||
|
||||
/datum/disease/critical/heart_failure/stage_act()
|
||||
if(..())
|
||||
@@ -125,7 +117,7 @@
|
||||
to_chat(affected_mob, "<span class='danger'>Your heart stops beating!</span>")
|
||||
affected_mob.AdjustLoseBreath(6 SECONDS)
|
||||
if(prob(5))
|
||||
affected_mob.emote(pick("faint", "faint", "groan"))
|
||||
affected_mob.emote(pick(2; "faint", 1; "groan"))
|
||||
if(3)
|
||||
affected_mob.adjustOxyLoss(1)
|
||||
if(prob(8))
|
||||
@@ -136,17 +128,9 @@
|
||||
|
||||
/datum/disease/critical/hypoglycemia
|
||||
name = "Hypoglycemia"
|
||||
form = "Medical Emergency"
|
||||
max_stages = 3
|
||||
spread_flags = SPECIAL
|
||||
spread_text = "The patient has low blood sugar."
|
||||
cure_text = "Eating or administration of vitamins or nutrients"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
stage_prob = 1
|
||||
severity = DANGEROUS
|
||||
disease_flags = CURABLE
|
||||
bypasses_immunity = TRUE
|
||||
virus_heal_resistant = TRUE
|
||||
|
||||
/datum/disease/critical/hypoglycemia/has_cure()
|
||||
if(ishuman(affected_mob))
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
agent = "Gravitokinetic Bipotential SADS-"
|
||||
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/human/monkey)
|
||||
desc = "If left untreated death will occur."
|
||||
severity = BIOHAZARD
|
||||
severity = BIOHAZARD // Mimicking real GBS
|
||||
|
||||
/datum/disease/fake_gbs/stage_act()
|
||||
if(!..())
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/human/monkey)
|
||||
permeability_mod = 0.75
|
||||
desc = "If left untreated the subject will feel quite unwell."
|
||||
severity = MEDIUM
|
||||
severity = MINOR
|
||||
|
||||
/datum/disease/flu/stage_act()
|
||||
if(!..())
|
||||
|
||||
@@ -1,37 +1,28 @@
|
||||
/datum/disease/fluspanish
|
||||
name = "Spanish inquisition Flu"
|
||||
name = "Spanish Inquisition Flu"
|
||||
max_stages = 3
|
||||
spread_text = "Airborne"
|
||||
cure_text = "Spaceacillin & Anti-bodies to the common flu"
|
||||
cure_text = "Spaceacillin"
|
||||
cures = list("spaceacillin")
|
||||
cure_chance = 10
|
||||
agent = "1nqu1s1t10n flu virion"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
permeability_mod = 0.75
|
||||
desc = "If left untreated the subject will burn to death for being a heretic."
|
||||
severity = DANGEROUS
|
||||
severity = HARMFUL
|
||||
|
||||
/datum/disease/fluspanish/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
switch(stage)
|
||||
if(2)
|
||||
affected_mob.bodytemperature += 10
|
||||
if(prob(5))
|
||||
affected_mob.emote("sneeze")
|
||||
if(prob(5))
|
||||
affected_mob.emote("cough")
|
||||
if(prob(1))
|
||||
to_chat(affected_mob, "<span class='danger'>You're burning in your own skin!</span>")
|
||||
affected_mob.take_organ_damage(0,5)
|
||||
if(stage < 2)
|
||||
return
|
||||
|
||||
if(3)
|
||||
affected_mob.bodytemperature += 20
|
||||
if(prob(5))
|
||||
affected_mob.emote("sneeze")
|
||||
if(prob(5))
|
||||
affected_mob.emote("cough")
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='danger'>You're burning in your own skin!</span>")
|
||||
affected_mob.take_organ_damage(0,5)
|
||||
return
|
||||
var/stage_factor = stage - 1
|
||||
affected_mob.bodytemperature += 10 * stage_factor // Enough to consistently cook certain species alive at stage 3
|
||||
if(prob(3 * stage_factor))
|
||||
affected_mob.emote("sneeze")
|
||||
if(prob(3 * stage_factor))
|
||||
affected_mob.emote("cough")
|
||||
if(prob(2.5 * stage_factor))
|
||||
to_chat(affected_mob, "<span class='danger'>You're burning in your own skin!</span>")
|
||||
affected_mob.adjustFireLoss(5)
|
||||
|
||||
@@ -5,11 +5,9 @@
|
||||
spread_flags = CONTACT_GENERAL
|
||||
cure_text = "Diphenhydramine & Sulfur"
|
||||
cures = list("diphenhydramine","sulfur")
|
||||
cure_chance = 15//higher chance to cure, since two reagents are required
|
||||
cure_chance = 15 // Higher chance to cure, since two reagents are required
|
||||
agent = "Gravitokinetic Bipotential SADS+"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
disease_flags = CAN_CARRY|CAN_RESIST|CURABLE
|
||||
permeability_mod = 1
|
||||
severity = BIOHAZARD
|
||||
|
||||
/datum/disease/gbs/stage_act()
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
permeability_mod = 0.75
|
||||
desc = "If left untreated the subject will turn into a feline. In felines it has... OTHER... effects."
|
||||
severity = DANGEROUS
|
||||
severity = BIOHAZARD
|
||||
|
||||
/datum/disease/kingstons/stage_act()
|
||||
if(!..())
|
||||
@@ -46,8 +46,8 @@
|
||||
var/mob/living/carbon/human/catface = affected_mob
|
||||
catface.set_species(/datum/species/tajaran, retain_damage = TRUE, keep_missing_bodyparts = TRUE)
|
||||
|
||||
|
||||
/datum/disease/kingstons_advanced //this used to be directly a subtype of kingstons, which sounds nice, but it ment that it would *turn you into a tarjaran always and have normal kingstons stage act* Don't make virusus subtypes unless the base virus does nothing.
|
||||
// Not a subtype of regular Kingstons as it would inherit its `stage_act()`
|
||||
/datum/disease/kingstons_advanced
|
||||
name = "Advanced Kingstons Syndrome"
|
||||
medical_name = "Advanced Kingstons Syndrome"
|
||||
max_stages = 4
|
||||
@@ -75,27 +75,35 @@
|
||||
/datum/disease/kingstons_advanced/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/twisted = affected_mob
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(prob(10))
|
||||
to_chat(twisted, "<span class='notice'>You feel awkward.</span>")
|
||||
if(2)
|
||||
if(prob(10))
|
||||
to_chat(twisted, "<span class='danger'>You itch.</span>")
|
||||
if(3)
|
||||
if(prob(10))
|
||||
to_chat(twisted, "<span class='danger'>Your skin starts to flake!</span>")
|
||||
if(!ishuman(affected_mob))
|
||||
return
|
||||
|
||||
if(4)
|
||||
if(prob(5))
|
||||
if(!istype(twisted.dna.species, chosentype))
|
||||
twisted.visible_message("<span class='danger'>[twisted]'s skin splits and form contorts!</span>", \
|
||||
"<span class='userdanger'>Your body mutates into a [initial(chosentype.name)]!</span>")
|
||||
twisted.set_species(chosentype, retain_damage = TRUE, keep_missing_bodyparts = TRUE)
|
||||
else
|
||||
twisted.visible_message("<span class='danger'>[twisted] scratches at their skin!</span>", \
|
||||
"<span class='userdanger'>You scratch your skin to try not to itch!</span>")
|
||||
twisted.adjustBruteLoss(-5)
|
||||
twisted.adjustStaminaLoss(5)
|
||||
var/mob/living/carbon/human/twisted = affected_mob
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(prob(10))
|
||||
to_chat(twisted, "<span class='notice'>You feel awkward.</span>")
|
||||
if(2)
|
||||
if(prob(10))
|
||||
to_chat(twisted, "<span class='danger'>You itch.</span>")
|
||||
if(3)
|
||||
if(prob(10))
|
||||
to_chat(twisted, "<span class='danger'>Your skin starts to flake!</span>")
|
||||
if(4)
|
||||
if(!prob(5))
|
||||
return
|
||||
|
||||
if(!istype(twisted.dna.species, chosentype))
|
||||
twisted.visible_message(
|
||||
"<span class='danger'>[twisted]'s skin splits and form contorts!</span>",
|
||||
"<span class='userdanger'>Your body mutates into a [initial(chosentype.name)]!</span>"
|
||||
)
|
||||
twisted.set_species(chosentype, retain_damage = TRUE, keep_missing_bodyparts = TRUE)
|
||||
return
|
||||
|
||||
twisted.visible_message(
|
||||
"<span class='danger'>[twisted] scratches at their skin!</span>",
|
||||
"<span class='userdanger'>You scratch your skin to try not to itch!</span>"
|
||||
)
|
||||
twisted.adjustBruteLoss(5)
|
||||
twisted.adjustStaminaLoss(5)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
desc = "Uncontrollable laughing."
|
||||
severity = BIOHAZARD
|
||||
disease_flags = CAN_CARRY
|
||||
bypasses_immunity = TRUE //Kuru is a prion disorder, not a virus
|
||||
bypasses_immunity = TRUE // Kuru is a prion disorder, not a virus
|
||||
virus_heal_resistant = TRUE
|
||||
|
||||
/datum/disease/kuru/stage_act()
|
||||
|
||||
@@ -9,47 +9,64 @@
|
||||
agent = "Excess Snuggles"
|
||||
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/human/monkey)
|
||||
desc = "If left untreated subject will regurgitate... puppies."
|
||||
severity = MEDIUM
|
||||
var/barklimit = 0
|
||||
severity = HARMFUL
|
||||
var/barklimit = 10
|
||||
var/list/puppy_types = list(/mob/living/simple_animal/pet/dog/corgi/puppy, /mob/living/simple_animal/pet/dog/pug, /mob/living/simple_animal/pet/dog/fox)
|
||||
var/list/plush_types = list(/obj/item/toy/plushie/orange_fox, /obj/item/toy/plushie/corgi, /obj/item/toy/plushie/robo_corgi, /obj/item/toy/plushie/pink_fox)
|
||||
|
||||
/datum/disease/lycan/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
switch(stage)
|
||||
if(2) //also changes say, see say.dm
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='notice'>You itch.</span>")
|
||||
affected_mob.emote("cough")
|
||||
if(3)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='notice'>You hear faint barking.</span>")
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='notice'>You crave meat.</span>")
|
||||
affected_mob.emote("cough")
|
||||
if(prob(2))
|
||||
to_chat(affected_mob, "<span class='danger'>Your stomach growls!</span>")
|
||||
if(4)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>Your stomach barks?!</span>")
|
||||
if(prob(5))
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] howls!</span>", \
|
||||
"<span class='userdanger'>You howl!</span>")
|
||||
affected_mob.AdjustConfused(rand(12 SECONDS, 16 SECONDS))
|
||||
if(prob(3) && barklimit <= 10)
|
||||
var/list/puppytype = list(/mob/living/simple_animal/pet/dog/corgi/puppy, /mob/living/simple_animal/pet/dog/pug, /mob/living/simple_animal/pet/dog/fox)
|
||||
var/mob/living/puppypicked = pick(puppytype)
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up [initial(puppypicked.name)]!</span>", \
|
||||
"<span class='userdanger'>You cough up [initial(puppypicked.name)]?!</span>")
|
||||
new puppypicked(affected_mob.loc)
|
||||
new puppypicked(affected_mob.loc)
|
||||
barklimit ++
|
||||
if(prob(1))
|
||||
var/list/plushtype = list(/obj/item/toy/plushie/orange_fox, /obj/item/toy/plushie/corgi, /obj/item/toy/plushie/robo_corgi, /obj/item/toy/plushie/pink_fox)
|
||||
var/obj/item/toy/plushie/coughfox = pick(plushtype)
|
||||
new coughfox(affected_mob.loc)
|
||||
affected_mob.visible_message("<span class='danger'>[affected_mob] coughs up a [initial(coughfox.name)]!</span>", \
|
||||
"<span class='userdanger'>You cough [initial(coughfox.name)] up ?!</span>")
|
||||
|
||||
affected_mob.emote("cough")
|
||||
affected_mob.adjustBruteLoss(5)
|
||||
return
|
||||
var/mob/living/carbon/human/H = affected_mob
|
||||
|
||||
switch(stage)
|
||||
if(2)
|
||||
if(prob(2))
|
||||
H.emote("cough")
|
||||
if(prob(3))
|
||||
to_chat(H, "<span class='notice'>You itch.</span>")
|
||||
H.adjustBruteLoss(rand(4, 6))
|
||||
if(3)
|
||||
var/obj/item/organ/external/stomach = H.bodyparts_by_name[pick("chest", "groin")]
|
||||
|
||||
if(prob(3))
|
||||
H.emote("cough")
|
||||
stomach.receive_damage(rand(0, 5))
|
||||
if(prob(3))
|
||||
to_chat(H, "<span class='notice'>You hear faint barking.</span>")
|
||||
stomach.receive_damage(rand(4, 6))
|
||||
if(prob(2))
|
||||
to_chat(H, "<span class='notice'>You crave meat.</span>")
|
||||
if(prob(3))
|
||||
to_chat(H, "<span class='danger'>Your stomach growls!</span>")
|
||||
stomach.receive_damage(rand(5, 10))
|
||||
if(4)
|
||||
var/obj/item/organ/external/stomach = H.bodyparts_by_name[pick("chest", "groin")]
|
||||
|
||||
if(prob(5))
|
||||
H.emote("cough")
|
||||
stomach.receive_damage(rand(0, 5))
|
||||
if(prob(5))
|
||||
to_chat(H, "<span class='danger'>Your stomach barks?!</span>")
|
||||
stomach.receive_damage(rand(5, 10))
|
||||
if(prob(5))
|
||||
H.visible_message(
|
||||
"<span class='danger'>[H] howls!</span>",
|
||||
"<span class='userdanger'>You howl!</span>"
|
||||
)
|
||||
H.AdjustConfused(rand(12 SECONDS, 16 SECONDS))
|
||||
stomach.receive_damage(rand(0, 5))
|
||||
if(prob(5))
|
||||
if(!barklimit)
|
||||
to_chat(H, "<span class='danger'>Your stomach growls!</span>")
|
||||
stomach.receive_damage(rand(5, 10))
|
||||
else
|
||||
var/atom/hairball = pick(prob(50) ? puppy_types : plush_types)
|
||||
H.visible_message(
|
||||
"<span class='danger'>[H] coughs up \a [initial(hairball.name)]!</span>",
|
||||
"<span class='userdanger'>You cough up \a [initial(hairball.name)]?!</span>"
|
||||
)
|
||||
new hairball(H.loc)
|
||||
barklimit--
|
||||
stomach.receive_damage(rand(10, 15))
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
cures = list("iron")
|
||||
agent = "Fukkos Miracos"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
disease_flags = CAN_CARRY|CAN_RESIST|CURABLE
|
||||
permeability_mod = 0.75
|
||||
desc = "This disease disrupts the magnetic field of your body, making it act as if a powerful magnet. Injections of iron help stabilize the field."
|
||||
severity = MEDIUM
|
||||
severity = MINOR
|
||||
|
||||
/datum/disease/magnitis/stage_act()
|
||||
if(!..())
|
||||
|
||||
@@ -5,62 +5,53 @@
|
||||
cure_text = "Banana products, especially banana bread."
|
||||
cures = list("banana")
|
||||
cure_chance = 75
|
||||
agent = "H0NI<42 Virus"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
permeability_mod = 0.75
|
||||
desc = "If left untreated the subject will probably drive others to insanity."
|
||||
severity = MEDIUM
|
||||
|
||||
/datum/disease/pierrot_throat/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel a little silly.</span>")
|
||||
if(2)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>You start seeing rainbows.</span>")
|
||||
if(3)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>Your thoughts are interrupted by a loud <b>HONK!</b></span>")
|
||||
if(4)
|
||||
if(prob(5))
|
||||
affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) )
|
||||
|
||||
|
||||
/datum/disease/pierrot_throat/advanced
|
||||
name = "Advanced Pierrot's Throat"
|
||||
spread_text = "Airborne"
|
||||
cure_text = "Banana products, especially banana bread."
|
||||
cures = list("banana")
|
||||
cure_chance = 75
|
||||
agent = "H0NI<42.B4n4 Virus"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
permeability_mod = 0.75
|
||||
desc = "If left untreated the subject will probably drive others to insanity and go insane themselves."
|
||||
severity = DANGEROUS
|
||||
severity = MINOR
|
||||
|
||||
/datum/disease/pierrot_throat/advanced/stage_act()
|
||||
/datum/disease/pierrot_throat/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
switch(stage)
|
||||
if(1)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel very silly.</span>")
|
||||
if(prob(5))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel like making a joke.</span>")
|
||||
if(2)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>You don't just start seeing rainbows... YOU ARE RAINBOWS!</span>")
|
||||
if(3)
|
||||
if(prob(10))
|
||||
to_chat(affected_mob, "<span class='danger'>Your thoughts are interrupted by a loud <b>HONK!</b></span>")
|
||||
SEND_SOUND(affected_mob, sound('sound/items/airhorn.ogg'))
|
||||
if(4)
|
||||
if(prob(5))
|
||||
affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) )
|
||||
if(stage < 2)
|
||||
return
|
||||
|
||||
if(!istype(affected_mob.wear_mask, /obj/item/clothing/mask/gas/clown_hat/nodrop))
|
||||
affected_mob.unEquip(affected_mob.wear_mask, TRUE)
|
||||
affected_mob.equip_to_slot(new /obj/item/clothing/mask/gas/clown_hat/nodrop(src), SLOT_HUD_WEAR_MASK)
|
||||
var/mob/living/carbon/human/H = affected_mob
|
||||
|
||||
var/static/list/message_chances = list(null, 4, 2, 1)
|
||||
if(prob(message_chances[stage]))
|
||||
to_chat(H, "<span class='danger'>You feel [pick("a little silly", "like making a joke", "in the mood for giggling", "like the world is a little more vibrant")].</span>")
|
||||
if(prob(message_chances[stage]))
|
||||
to_chat(H, "<span class='danger'>You see [pick("rainbows", "puppies", "banana pies")] for a moment.</span>")
|
||||
|
||||
if(stage < 3)
|
||||
return
|
||||
|
||||
var/static/list/honk_chances = list(null, null, 4, 0.66)
|
||||
if(prob(honk_chances[stage]))
|
||||
to_chat(H, "<span class='danger'>Your thoughts are interrupted by a loud <b>HONK!</b></span>")
|
||||
SEND_SOUND(H, sound(pick(18; 'sound/items/bikehorn.ogg', 1; 'sound/items/airhorn.ogg', 1; 'sound/items/airhorn2.ogg'))) // 10% chance total for an airhorn
|
||||
|
||||
if(stage < 4)
|
||||
return
|
||||
|
||||
if(prob(5))
|
||||
H.say(pick(list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...")))
|
||||
|
||||
// Semi-permanent clown mask while in last stage of infection
|
||||
if(locate(/obj/item/clothing/mask/gas/clown_hat) in H)
|
||||
return
|
||||
if(!H.has_organ_for_slot(SLOT_HUD_WEAR_MASK) || !H.canUnEquip(H.get_item_by_slot(SLOT_HUD_WEAR_MASK)))
|
||||
return
|
||||
|
||||
var/saved_internals = H.internal
|
||||
|
||||
H.unEquip(H.get_item_by_slot(SLOT_HUD_WEAR_MASK))
|
||||
var/obj/item/clothing/mask/gas/clown_hat/peak_comedy = new
|
||||
peak_comedy.flags |= DROPDEL
|
||||
H.equip_to_slot_or_del(peak_comedy, SLOT_HUD_WEAR_MASK)
|
||||
|
||||
if(saved_internals) // Let's not stealthily suffocate Vox/Plasmamen, this isn't a murder virus
|
||||
H.internal = saved_internals
|
||||
H.update_action_buttons_icon()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
agent = ""
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
desc = "A DNA-altering retrovirus that scrambles the structural and unique enzymes of a host constantly."
|
||||
severity = DANGEROUS
|
||||
severity = BIOHAZARD
|
||||
permeability_mod = 0.4
|
||||
stage_prob = 2
|
||||
var/SE
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
cures = list("plasma")
|
||||
agent = "Unknown"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
permeability_mod = 1
|
||||
severity = BIOHAZARD
|
||||
|
||||
/datum/disease/rhumba_beat/stage_act()
|
||||
|
||||
@@ -6,9 +6,8 @@
|
||||
cure_text = "A coder's love (theoretical)."
|
||||
agent = "Shenanigans"
|
||||
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/alien)
|
||||
severity = HARMFUL
|
||||
severity = BIOHAZARD
|
||||
stage_prob = 10
|
||||
visibility_flags = HIDDEN_SCANNER|HIDDEN_PANDEMIC
|
||||
disease_flags = CURABLE
|
||||
var/list/stage1 = list("You feel unremarkable.")
|
||||
var/list/stage2 = list("You feel boring.")
|
||||
@@ -81,15 +80,10 @@
|
||||
cure_text = "Bananas"
|
||||
cures = list("banana")
|
||||
spread_text = "Monkey Bites"
|
||||
spread_flags = SPECIAL
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
permeability_mod = 1
|
||||
cure_chance = 1
|
||||
disease_flags = CAN_CARRY|CAN_RESIST
|
||||
desc = "Monkeys with this disease will bite humans, causing humans to mutate into a monkey."
|
||||
severity = BIOHAZARD
|
||||
stage_prob = 4
|
||||
visibility_flags = 0
|
||||
agent = "Kongey Vibrion M-909"
|
||||
new_form = /mob/living/carbon/human/monkey
|
||||
|
||||
@@ -127,8 +121,6 @@
|
||||
cure_chance = 5
|
||||
agent = "R2D2 Nanomachines"
|
||||
desc = "This disease, actually acute nanomachine infection, converts the victim into a cyborg."
|
||||
severity = DANGEROUS
|
||||
visibility_flags = 0
|
||||
stage1 = null
|
||||
stage2 = list("Your joints feel stiff.", "<span class='danger'>Beep...boop..</span>")
|
||||
stage3 = list("<span class='danger'>Your joints feel very stiff.</span>", "Your skin feels loose.", "<span class='danger'>You can feel something move...inside.</span>")
|
||||
@@ -160,8 +152,6 @@
|
||||
cure_chance = 5
|
||||
agent = "Rip-LEY Alien Microbes"
|
||||
desc = "This disease changes the victim into a xenomorph."
|
||||
severity = BIOHAZARD
|
||||
visibility_flags = 0
|
||||
stage1 = null
|
||||
stage2 = list("Your throat feels scratchy.", "<span class='danger'>Kill...</span>")
|
||||
stage3 = list("<span class='danger'>Your throat feels very scratchy.</span>", "Your skin feels tight.", "<span class='danger'>You can feel something move...inside.</span>")
|
||||
@@ -189,8 +179,6 @@
|
||||
cure_chance = 80
|
||||
agent = "Advanced Mutation Toxin"
|
||||
desc = "This highly concentrated extract converts anything into more of itself."
|
||||
severity = BIOHAZARD
|
||||
visibility_flags = 0
|
||||
stage1 = list("You don't feel very well.")
|
||||
stage2 = list("Your skin feels a little slimy.")
|
||||
stage3 = list("<span class='danger'>Your appendages are melting away.</span>", "<span class='danger'>Your limbs begin to lose their shape.</span>")
|
||||
@@ -218,7 +206,6 @@
|
||||
cures = list("adminordrazine")
|
||||
agent = "Fell Doge Majicks"
|
||||
desc = "This disease transforms the victim into a corgi."
|
||||
visibility_flags = 0
|
||||
stage1 = list("BARK.")
|
||||
stage2 = list("You feel the need to wear silly hats.")
|
||||
stage3 = list("<span class='danger'>Must... eat... chocolate....</span>", "<span class='danger'>YAP</span>")
|
||||
@@ -243,8 +230,6 @@
|
||||
agent = "Gluttony's Blessing"
|
||||
desc = "A 'gift' from somewhere terrible."
|
||||
stage_prob = 20
|
||||
severity = BIOHAZARD
|
||||
visibility_flags = 0
|
||||
stage1 = list("Your stomach rumbles.")
|
||||
stage2 = list("Your skin feels saggy.")
|
||||
stage3 = list("<span class='danger'>Your appendages are melting away.</span>", "<span class='danger'>Your limbs begin to lose their shape.</span>")
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
name = "Fungal tuberculosis"
|
||||
max_stages = 5
|
||||
spread_text = "Airborne"
|
||||
cure_text = "Spaceacillin & salbutamol"
|
||||
cure_text = "Spaceacillin & Salbutamol"
|
||||
cures = list("spaceacillin", "salbutamol")
|
||||
agent = "Fungal Tubercle bacillus Cosmosis"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
cure_chance = 5//like hell are you getting out of hell
|
||||
cure_chance = 5 // Like hell are you getting out of hell
|
||||
desc = "A rare highly transmittable virulent virus. Few samples exist, rumoured to be carefully grown and cultured by clandestine bio-weapon specialists. Causes fever, blood vomiting, lung damage, weight loss, and fatigue."
|
||||
required_organs = list(/obj/item/organ/internal/lungs)
|
||||
severity = DANGEROUS
|
||||
bypasses_immunity = TRUE //Fungal and bacterial in nature; also infects the lungs
|
||||
severity = HARMFUL
|
||||
bypasses_immunity = TRUE // Fungal and bacterial in nature; also infects the lungs
|
||||
|
||||
/datum/disease/tuberculosis/stage_act() //it begins
|
||||
/datum/disease/tuberculosis/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
switch(stage)
|
||||
|
||||
@@ -8,84 +8,82 @@
|
||||
cure_chance = 100
|
||||
agent = "Rincewindus Vulgaris"
|
||||
viable_mobtypes = list(/mob/living/carbon/human)
|
||||
disease_flags = CAN_CARRY|CAN_RESIST|CURABLE
|
||||
permeability_mod = 0.75
|
||||
severity = HARMFUL
|
||||
required_organs = list(/obj/item/organ/external/head)
|
||||
severity = MINOR
|
||||
/// A mapping of `num2text(SLOT_HUD_XYZ)` -> item path
|
||||
var/list/magic_fashion = new
|
||||
|
||||
/*
|
||||
BIRUZ BENNAR
|
||||
SCYAR NILA - teleport
|
||||
NEC CANTIO - dis techno
|
||||
EI NATH - shocking grasp
|
||||
AULIE OXIN FIERA - knock
|
||||
TARCOL MINTI ZHERI - forcewall
|
||||
STI KALY - blind
|
||||
*/
|
||||
|
||||
/datum/disease/wizarditis/New()
|
||||
. = ..()
|
||||
|
||||
var/list/magic_fashion_slot_IDs = list(
|
||||
SLOT_HUD_RIGHT_HAND,
|
||||
SLOT_HUD_LEFT_HAND,
|
||||
SLOT_HUD_HEAD,
|
||||
SLOT_HUD_OUTER_SUIT,
|
||||
SLOT_HUD_SHOES
|
||||
)
|
||||
var/list/magic_fashion_items = list(
|
||||
/obj/item/staff,
|
||||
/obj/item/staff,
|
||||
/obj/item/clothing/head/wizard,
|
||||
/obj/item/clothing/suit/wizrobe,
|
||||
/obj/item/clothing/shoes/sandal
|
||||
)
|
||||
for(var/i in 1 to length(magic_fashion_slot_IDs))
|
||||
var/slot = num2text(magic_fashion_slot_IDs[i])
|
||||
var/item = magic_fashion_items[i]
|
||||
magic_fashion[slot] = item
|
||||
|
||||
/datum/disease/wizarditis/stage_act()
|
||||
if(!..())
|
||||
return FALSE
|
||||
|
||||
switch(stage)
|
||||
if(2)
|
||||
if(prob(0.5))
|
||||
affected_mob.say(pick("You shall not pass!", "Expeliarmus!", "By Merlins beard!", "Feel the power of the Dark Side!"))
|
||||
if(prob(0.5))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "an urge to summon familiar")].</span>")
|
||||
|
||||
|
||||
if(3)
|
||||
if(prob(0.5))
|
||||
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!", "STI KALY!", "TARCOL MINTI ZHERI!"))
|
||||
if(prob(0.5))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar")].</span>")
|
||||
|
||||
if(2, 3)
|
||||
if(prob(2)) // Low prob. since everyone else will also be spouting this
|
||||
affected_mob.say(pick("You shall not pass!", "Expeliarmus!", "By Merlin's beard!", "Feel the power of the Dark Side!", "A wizard is never late!", "50 points for Security!", "NEC CANTIO!", "STI KALY!", "AULIE OXIN FIERA!", "GAR YOK!", "DIRI CEL!"))
|
||||
if(prob(8)) // Double the stage advancement prob. so each player has a chance to catch a couple
|
||||
to_chat(affected_mob, "<span class='danger'>You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "that this location gives you a +1 to INT", "an urge to summon familiar")].</span>")
|
||||
if(4)
|
||||
|
||||
if(prob(1))
|
||||
affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!","STI KALY!","EI NATH!"))
|
||||
return
|
||||
if(prob(0.5))
|
||||
to_chat(affected_mob, "<span class='danger'>You feel [pick("the tidal wave of raw power building inside","that this location gives you a +2 to INT and +1 to WIS","an urge to teleport")].</span>")
|
||||
spawn_wizard_clothes(50)
|
||||
if(prob(0.01))
|
||||
affected_mob.say(pick("FORTI GY AMA!", "GITTAH WEIGH!", "TOKI WO TOMARE!", "TARCOL MINTI ZHERI!", "ONI SOMA!", "EI NATH!", "BIRUZ BENNAR!", "NWOLC EGNEVER!"))
|
||||
if(prob(3)) // Last stage, so we'll have plenty of time to show these off even with a lower prob.
|
||||
to_chat(affected_mob, "<span class='danger'>You feel [pick("the tidal wave of raw power building inside", "that this location gives you a +2 to INT and +1 to WIS", "an urge to teleport", "the magic bubbling in your veins", "an urge to summon familiar")].</span>")
|
||||
if(prob(3)) // About 1 minute per item on average
|
||||
spawn_wizard_clothes()
|
||||
if(prob(0.033)) // Assuming 50 infected, someone should teleport every ~2 minutes on average
|
||||
teleport()
|
||||
return
|
||||
|
||||
/datum/disease/wizarditis/proc/spawn_wizard_clothes()
|
||||
var/mob/living/carbon/human/H = affected_mob
|
||||
|
||||
// Which slots can we replace?
|
||||
var/list/eligible_slot_IDs = new
|
||||
for(var/slot in magic_fashion)
|
||||
var/slot_ID = text2num(slot) // Convert back to numeric defines
|
||||
|
||||
/datum/disease/wizarditis/proc/spawn_wizard_clothes(chance = 0)
|
||||
if(ishuman(affected_mob))
|
||||
var/mob/living/carbon/human/H = affected_mob
|
||||
if(prob(chance) && !isplasmaman(H))
|
||||
if(!istype(H.head, /obj/item/clothing/head/wizard))
|
||||
if(!H.unEquip(H.head))
|
||||
qdel(H.head)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(H), SLOT_HUD_HEAD)
|
||||
return
|
||||
if(prob(chance))
|
||||
if(!istype(H.wear_suit, /obj/item/clothing/suit/wizrobe))
|
||||
if(!H.unEquip(H.wear_suit))
|
||||
qdel(H.wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(H), SLOT_HUD_OUTER_SUIT)
|
||||
return
|
||||
if(prob(chance))
|
||||
if(!istype(H.shoes, /obj/item/clothing/shoes/sandal))
|
||||
if(!H.unEquip(H.shoes))
|
||||
qdel(H.shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H), SLOT_HUD_SHOES)
|
||||
return
|
||||
else
|
||||
var/mob/living/carbon/H = affected_mob
|
||||
if(prob(chance))
|
||||
if(!istype(H.r_hand, /obj/item/staff))
|
||||
H.drop_r_hand()
|
||||
H.put_in_r_hand( new /obj/item/staff(H) )
|
||||
return
|
||||
return
|
||||
if((locate(magic_fashion[slot]) in H) || !H.has_organ_for_slot(slot_ID) || !H.canUnEquip(H.get_item_by_slot(slot_ID)))
|
||||
continue
|
||||
|
||||
switch(slot_ID) // Extra filtering for specific slots
|
||||
if(SLOT_HUD_HEAD)
|
||||
if(isplasmaman(H))
|
||||
continue // We want them to spread the magical joy, not burn to death in agony
|
||||
|
||||
eligible_slot_IDs.Add(slot_ID)
|
||||
if(!length(eligible_slot_IDs))
|
||||
return
|
||||
|
||||
// Pick the magical winner and apply
|
||||
var/chosen_slot_ID = pick(eligible_slot_IDs)
|
||||
var/chosen_fashion = magic_fashion[num2text(chosen_slot_ID)]
|
||||
|
||||
H.unEquip(H.get_item_by_slot(chosen_slot_ID))
|
||||
var/obj/item/magic_attire = new chosen_fashion
|
||||
magic_attire.flags |= DROPDEL
|
||||
H.equip_to_slot_or_del(magic_attire, chosen_slot_ID)
|
||||
|
||||
/datum/disease/wizarditis/proc/teleport()
|
||||
if(!is_teleport_allowed(affected_mob.z))
|
||||
@@ -118,4 +116,3 @@ STI KALY - blind
|
||||
|
||||
affected_mob.say("SCYAR NILA [uppertext(chosen_area.name)]!")
|
||||
affected_mob.forceMove(pick(teleport_turfs))
|
||||
|
||||
|
||||
@@ -433,14 +433,14 @@
|
||||
if(!usr.unEquip(I, silent = TRUE))
|
||||
return FALSE
|
||||
usr.update_icons() //update our overlays
|
||||
if(QDELING(I))
|
||||
return FALSE
|
||||
if(silent)
|
||||
prevent_warning = TRUE
|
||||
I.forceMove(src)
|
||||
if(QDELING(I))
|
||||
return FALSE
|
||||
I.on_enter_storage(src)
|
||||
if(QDELING(I))
|
||||
return FALSE
|
||||
|
||||
for(var/_M in mobs_viewing)
|
||||
var/mob/M = _M
|
||||
|
||||
@@ -4,8 +4,7 @@ GLOBAL_LIST_EMPTY(current_pending_diseases)
|
||||
var/datum/disease/chosen_disease
|
||||
|
||||
var/list/disease_blacklist = list(/datum/disease/advance, /datum/disease/appendicitis, /datum/disease/kuru, /datum/disease/critical, /datum/disease/rhumba_beat, /datum/disease/fake_gbs,
|
||||
/datum/disease/gbs, /datum/disease/transformation, /datum/disease/food_poisoning, /datum/disease/advance/cold, /datum/disease/advance/flu, /datum/disease/advance/heal,
|
||||
/datum/disease/advance/hullucigen, /datum/disease/advance/sensory_restoration, /datum/disease/advance/voice_change, /datum/disease/berserker)
|
||||
/datum/disease/gbs, /datum/disease/transformation, /datum/disease/food_poisoning, /datum/disease/berserker)
|
||||
var/static/list/transmissable_symptoms = list()
|
||||
var/static/list/diseases_minor = list()
|
||||
var/static/list/diseases_moderate_major = list()
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
return 0
|
||||
|
||||
/mob/proc/put_in_hand_check(obj/item/W, skip_blocked_hands_check)
|
||||
if(!istype(W))
|
||||
if(!istype(W) || QDELETED(W))
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
|
||||
Reference in New Issue
Block a user